diff -urdN ../Tekkotsu_2.2.2/Behaviors/BehaviorBase.cc ./Behaviors/BehaviorBase.cc
--- ../Tekkotsu_2.2.2/Behaviors/BehaviorBase.cc	Thu Nov 11 15:34:59 2004
+++ ./Behaviors/BehaviorBase.cc	Tue Jan  4 14:51:37 2005
@@ -67,3 +67,14 @@
 	}
 }
 
+/*! @file
+ * @brief Implements BehaviorBase from which all Behaviors should inherit
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
diff -urdN ../Tekkotsu_2.2.2/Behaviors/BehaviorBase.h ./Behaviors/BehaviorBase.h
--- ../Tekkotsu_2.2.2/Behaviors/BehaviorBase.h	Mon Nov 15 17:46:19 2004
+++ ./Behaviors/BehaviorBase.h	Tue Jan  4 14:51:37 2005
@@ -109,14 +109,14 @@
 };
 
 /*! @file
- * @brief Defines BehaviorBase from which all Behaviors should inherit
+ * @brief Describes BehaviorBase from which all Behaviors should inherit
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/CVS/Entries ./Behaviors/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,14 @@
+/BehaviorBase.cc/1.6/Tue Jan  4 19:51:37 2005//Ttekkotsu-2_3
+/BehaviorBase.h/1.18/Tue Jan  4 19:51:37 2005//Ttekkotsu-2_3
+/Controller.cc/1.41/Wed Jan  5 20:28:34 2005//Ttekkotsu-2_3
+/Controller.h/1.32/Wed Jan  5 20:28:35 2005//Ttekkotsu-2_3
+/README/1.1/Sat Mar  1 20:53:25 2003//Ttekkotsu-2_3
+/StateNode.cc/1.22/Mon Jan 24 22:12:13 2005//Ttekkotsu-2_3
+/StateNode.h/1.17/Mon Jan 24 22:12:13 2005//Ttekkotsu-2_3
+/Transition.cc/1.13/Fri Dec 17 05:51:32 2004//Ttekkotsu-2_3
+/Transition.h/1.9/Mon Nov 15 22:46:19 2004//Ttekkotsu-2_3
+D/Controls////
+D/Demos////
+D/Mon////
+D/Nodes////
+D/Transitions////
diff -urdN ../Tekkotsu_2.2.2/Behaviors/CVS/Repository ./Behaviors/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/CVS/Repository	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors
diff -urdN ../Tekkotsu_2.2.2/Behaviors/CVS/Root ./Behaviors/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/CVS/Root	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/CVS/Tag ./Behaviors/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/CVS/Tag	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controller.cc ./Behaviors/Controller.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controller.cc	Sat Oct 16 21:16:10 2004
+++ ./Behaviors/Controller.cc	Wed Jan  5 15:28:34 2005
@@ -347,6 +347,19 @@
 			setNext(cmdstack.top()->doNextItem());
 		} else if(args[0]=="!prev") {
 			setNext(cmdstack.top()->doPrevItem());
+		} else if(args[0]=="!dump_stack") {
+			theOneController->gui_comm->printf("stack_dump\n%d\n",cmdstack.size());
+			//this is rather ugly - can't iterate a stack, have to unstack and restack it.  Oh well.
+			std::stack< ControlBase* > tmpstack;
+			while(!cmdstack.empty()) {
+				tmpstack.push(cmdstack.top());
+				cmdstack.pop();
+			}
+			while(!tmpstack.empty()) {
+				theOneController->gui_comm->printf("%s\n",tmpstack.top()->getName().c_str());
+				cmdstack.push(tmpstack.top());
+				tmpstack.pop();
+			}
 		} else if(args[0]=="!msg") {
 			if(offsets.size()>1)
 				erouter->postEvent(new TextMsgEvent(s.substr(offsets[1])));
@@ -452,8 +465,8 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controller.h ./Behaviors/Controller.h
--- ../Tekkotsu_2.2.2/Behaviors/Controller.h	Wed Nov 10 20:45:31 2004
+++ ./Behaviors/Controller.h	Wed Jan  5 15:28:35 2005
@@ -23,6 +23,7 @@
  *	- '<tt>!prev</tt>' - calls ControlBase::doPrevItem() of the current control
  *	- '<tt>!select</tt>' - calls ControlBase::doSelect() of the current control
  *	- '<tt>!cancel</tt>' - calls ControlBase::doCancel() of the current control
+ *	- '<tt>!dump_stack</tt>' - requests a dump of the current stack of submenus (useful if the GUI (re)connects and thus current robot state is unknown)
  *	- '<tt>!msg </tt><i>text</i>' - sends <i>text</i> out as a TextMsgEvent; also note that any text entered on the console port while a GUI is also connected will also be sent as a TextMsgEvent, without needing the !input.
  *  - '<tt>!root </tt><i>text</i>' - calls ControlBase::takeInput(<i>text</i>) on the root control
  *  - '<tt>!hello</tt>' - responds with '<tt>hello\\n</tt><i>count</i>\\n' where <i>count</i> is the number of times '<tt>!hello</tt>' has been sent.  Good for detecting first connection after boot vs. a reconnect.
@@ -58,6 +59,11 @@
  *  - '<tt>close</tt>\n
  *    <i>text:instancename</i>' - calls <tt>close()</tt> on an object previously created by a <tt>load</tt> message.
  *    The Java object is expected to contain a function <tt>void close()</tt>.
+ *  - '<tt>stack_dump</tt>\n
+ *    <i>int:depth</i>\n
+ *    <i>text:item-title</i><sub>1</sub>\n
+ *    ...\n
+ *    <i>text:item-title</i><sub>depth</sub>' - a listing of the current stack, first item is root, last item is current control
  *  - '<tt>goodbye</tt>' - Indicates the connection is about to be closed purposefully, to differentiate from an accidental cut off.
  *  
  *  bool types are expected to be numerical values, 0 for false,
@@ -211,10 +217,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/BatteryCheckControl.h ./Behaviors/Controls/BatteryCheckControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/BatteryCheckControl.h	Thu Oct  7 15:07:04 2004
+++ ./Behaviors/Controls/BatteryCheckControl.h	Tue Jan 25 15:06:39 2005
@@ -78,9 +78,9 @@
 	void report() {
 		sout->printf("BATTERY REPORT:\n");
 		sout->printf("\tPower Remain:\t%d%%\n",(int)(state->sensors[PowerRemainOffset]*100));
-		sout->printf("\tCapacity:\t%d\n",state->sensors[PowerCapacityOffset]);
+		sout->printf("\tCapacity:\t%g\n",state->sensors[PowerCapacityOffset]);
 		sout->printf("\tVoltage:\t%g\n",state->sensors[PowerVoltageOffset]);
-		sout->printf("\tCurrent:\t%d\n",state->sensors[PowerCurrentOffset]);
+		sout->printf("\tCurrent:\t%g\n",state->sensors[PowerCurrentOffset]);
 		sout->printf("\tTemperature:\t%g\n",state->sensors[PowerThermoOffset]);
 		sout->printf("\tFlags:\t");
 		if(state->powerFlags[PowerSourceID::BatteryConnectSID])
@@ -111,10 +111,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorActivatorControl.h ./Behaviors/Controls/BehaviorActivatorControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorActivatorControl.h	Thu Sep 25 11:26:10 2003
+++ ./Behaviors/Controls/BehaviorActivatorControl.h	Thu Sep 25 11:26:10 2003
@@ -62,7 +62,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorReportControl.h ./Behaviors/Controls/BehaviorReportControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorReportControl.h	Tue Nov 16 14:25:24 2004
+++ ./Behaviors/Controls/BehaviorReportControl.h	Tue Jan 25 15:06:39 2005
@@ -38,13 +38,13 @@
 
 		sout->printf("** Currently Instantiated Behavior Report **\n");
 		sout->printf("%d active, %d inactive, %d total\n\n",active.size(),inactive.size(),reg.size());
-		sout->printf("Active Behaviors:\n",active.size());
+		sout->printf("Active Behaviors (%d):\n",active.size());
 		sout->printf(format,"Class Name","Instance Name");
 		sout->printf(format,"------------","---------------");
 		for(behlist_t::const_iterator it=active.begin(); it!=active.end(); it++)
 			sout->printf(format,(*it)->getClassName().c_str(),(*it)->getName().c_str());
 		sout->printf("\n");
-		sout->printf("Inactive Behaviors:\n",inactive.size());
+		sout->printf("Inactive Behaviors (%d):\n",inactive.size());
 		sout->printf(format,"Class Name","Instance Name");
 		sout->printf(format,"------------","---------------");
 		for(behlist_t::const_iterator it=inactive.begin(); it!=inactive.end(); it++)
@@ -58,10 +58,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorSwitchActivatorControl.h ./Behaviors/Controls/BehaviorSwitchActivatorControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorSwitchActivatorControl.h	Thu Sep 25 11:26:10 2003
+++ ./Behaviors/Controls/BehaviorSwitchActivatorControl.h	Thu Sep 25 11:26:10 2003
@@ -54,7 +54,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorSwitchControl.h ./Behaviors/Controls/BehaviorSwitchControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/BehaviorSwitchControl.h	Thu Nov 11 19:05:03 2004
+++ ./Behaviors/Controls/BehaviorSwitchControl.h	Thu Nov 11 19:05:03 2004
@@ -265,7 +265,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Entries ./Behaviors/Controls/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Controls/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,46 @@
+/BatteryCheckControl.h/1.10/Tue Jan 25 20:06:39 2005//Ttekkotsu-2_3
+/BehaviorActivatorControl.h/1.8/Thu Sep 25 15:26:10 2003//Ttekkotsu-2_3
+/BehaviorReportControl.h/1.4/Tue Jan 25 20:06:39 2005//Ttekkotsu-2_3
+/BehaviorSwitchActivatorControl.h/1.3/Thu Sep 25 15:26:10 2003//Ttekkotsu-2_3
+/BehaviorSwitchControl.h/1.14/Fri Nov 12 00:05:03 2004//Ttekkotsu-2_3
+/ControlBase.cc/1.9/Thu Nov  4 03:01:31 2004//Ttekkotsu-2_3
+/ControlBase.h/1.22/Thu Nov  4 03:01:31 2004//Ttekkotsu-2_3
+/DumpFileControl.h/1.2/Thu Sep 25 15:26:10 2003//Ttekkotsu-2_3
+/EventLogger.cc/1.16/Wed Dec 22 23:53:34 2004//Ttekkotsu-2_3
+/EventLogger.h/1.6/Thu Oct  7 22:15:20 2004//Ttekkotsu-2_3
+/FileBrowserControl.cc/1.9/Wed Jan 14 20:43:43 2004//Ttekkotsu-2_3
+/FileBrowserControl.h/1.10/Wed Jan 14 20:43:44 2004//Ttekkotsu-2_3
+/FileInputControl.h/1.2/Tue Mar 23 00:55:01 2004//Ttekkotsu-2_3
+/FreeMemReportControl.cc/1.4/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/FreeMemReportControl.h/1.8/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/HelpControl.cc/1.9/Wed Jan  5 20:35:41 2005//Ttekkotsu-2_3
+/HelpControl.h/1.5/Mon Jan 19 22:03:58 2004//Ttekkotsu-2_3
+/LoadCalibration.h/1.3/Thu Feb 26 01:02:25 2004//Ttekkotsu-2_3
+/LoadPostureControl.h/1.14/Fri Jan  7 19:34:22 2005//Ttekkotsu-2_3
+/LoadWalkControl.h/1.8/Sat Jan 10 20:10:27 2004//Ttekkotsu-2_3
+/MCValueEditControl.h/1.3/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/NetworkStatusControl.h/1.1/Wed Jan 12 22:37:26 2005//Ttekkotsu-2_3
+/NullControl.h/1.2/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/PlaySoundControl.h/1.6/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/PostureEditor.cc/1.14/Tue Jan 11 18:40:00 2005//Ttekkotsu-2_3
+/PostureEditor.h/1.6/Thu Dec  2 18:48:56 2004//Ttekkotsu-2_3
+/ProfilerCheckControl.h/1.6/Thu Nov 11 20:34:59 2004//Ttekkotsu-2_3
+/RebootControl.cc/1.3/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/RebootControl.h/1.2/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/RunSequenceControl.h/1.15/Fri Jan  7 19:34:51 2005//Ttekkotsu-2_3
+/SavePostureControl.h/1.11/Fri Jan  7 23:16:58 2005//Ttekkotsu-2_3
+/SaveWalkControl.h/1.9/Thu Dec  2 21:29:45 2004//Ttekkotsu-2_3
+/SensorObserverControl.cc/1.4/Tue Jan 11 23:49:04 2005//Ttekkotsu-2_3
+/SensorObserverControl.h/1.3/Tue Jan 11 23:49:04 2005//Ttekkotsu-2_3
+/ShutdownControl.cc/1.3/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/ShutdownControl.h/1.3/Thu Sep 25 15:26:11 2003//Ttekkotsu-2_3
+/StringInputControl.cc/1.5/Mon Jul 28 05:54:32 2003//Ttekkotsu-2_3
+/StringInputControl.h/1.5/Tue Mar 23 00:55:01 2004//Ttekkotsu-2_3
+/ToggleControl.h/1.4/Tue Mar 23 00:55:01 2004//Ttekkotsu-2_3
+/ValueEditControl.h/1.14/Thu Dec 16 04:50:48 2004//Ttekkotsu-2_3
+/ValueSetControl.h/1.3/Sun Jan 18 10:16:56 2004//Ttekkotsu-2_3
+/WalkCalibration.cc/1.9/Thu Nov  4 03:01:32 2004//Ttekkotsu-2_3
+/WalkCalibration.h/1.6/Thu Oct  7 19:07:04 2004//Ttekkotsu-2_3
+/WaypointWalkControl.cc/1.13/Thu Dec  2 21:29:45 2004//Ttekkotsu-2_3
+/WaypointWalkControl.h/1.4/Tue Jul 27 14:33:28 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Repository ./Behaviors/Controls/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Controls/CVS/Repository	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors/Controls
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Root ./Behaviors/Controls/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Controls/CVS/Root	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Tag ./Behaviors/Controls/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/Controls/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Controls/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ControlBase.cc ./Behaviors/Controls/ControlBase.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ControlBase.cc	Wed Nov  3 22:01:31 2004
+++ ./Behaviors/Controls/ControlBase.cc	Wed Nov  3 22:01:31 2004
@@ -411,7 +411,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ControlBase.h ./Behaviors/Controls/ControlBase.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ControlBase.h	Wed Nov  3 22:01:31 2004
+++ ./Behaviors/Controls/ControlBase.h	Wed Nov  3 22:01:31 2004
@@ -167,7 +167,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/DumpFileControl.h ./Behaviors/Controls/DumpFileControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/DumpFileControl.h	Thu Sep 25 11:26:10 2003
+++ ./Behaviors/Controls/DumpFileControl.h	Thu Sep 25 11:26:10 2003
@@ -40,7 +40,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/EventLogger.cc ./Behaviors/Controls/EventLogger.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/EventLogger.cc	Wed Dec 22 18:53:34 2004
+++ ./Behaviors/Controls/EventLogger.cc	Wed Dec 22 18:53:34 2004
@@ -109,7 +109,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/EventLogger.h ./Behaviors/Controls/EventLogger.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/EventLogger.h	Thu Oct  7 18:15:20 2004
+++ ./Behaviors/Controls/EventLogger.h	Thu Oct  7 18:15:20 2004
@@ -45,7 +45,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/FileBrowserControl.cc ./Behaviors/Controls/FileBrowserControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/FileBrowserControl.cc	Wed Jan 14 15:43:43 2004
+++ ./Behaviors/Controls/FileBrowserControl.cc	Wed Jan 14 15:43:43 2004
@@ -158,7 +158,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/FileBrowserControl.h ./Behaviors/Controls/FileBrowserControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/FileBrowserControl.h	Wed Jan 14 15:43:44 2004
+++ ./Behaviors/Controls/FileBrowserControl.h	Wed Jan 14 15:43:44 2004
@@ -72,7 +72,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/FileInputControl.h ./Behaviors/Controls/FileInputControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/FileInputControl.h	Mon Mar 22 19:55:01 2004
+++ ./Behaviors/Controls/FileInputControl.h	Mon Mar 22 19:55:01 2004
@@ -48,7 +48,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/FreeMemReportControl.cc ./Behaviors/Controls/FreeMemReportControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/FreeMemReportControl.cc	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/FreeMemReportControl.cc	Thu Sep 25 11:26:11 2003
@@ -63,7 +63,7 @@
  * @author ejt (object), alokl (core function)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/FreeMemReportControl.h ./Behaviors/Controls/FreeMemReportControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/FreeMemReportControl.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Controls/FreeMemReportControl.h	Wed Nov 10 20:45:35 2004
@@ -66,7 +66,7 @@
  * @author ejt (object), alokl (core function)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/HelpControl.cc ./Behaviors/Controls/HelpControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/HelpControl.cc	Wed Nov 17 19:04:16 2004
+++ ./Behaviors/Controls/HelpControl.cc	Wed Jan  5 15:35:41 2005
@@ -15,9 +15,12 @@
 	sout->printf("%s%s",fmt,"'!prev' - calls doPrevItem() of the current control\n");
 	sout->printf("%s%s",fmt,"'!select' - calls doSelect() of the current control\n");
 	sout->printf("%s%s",fmt,"'!cancel' - calls doCancel() of the current control\n");
+	sout->printf("%s%s",fmt,"'!dump_stack' - requests a dump of the current stack of submenus (useful if the GUI (re)connects and thus current robot state is unknown)\n");
 	sout->printf("%s%s",fmt,"'!msg text' - broadcasts text as a TextMsgEvent\n");
+	sout->printf("%s%s",fmt,"'!root text' - - calls ControlBase::takeInput(text) on the root control\n");
 	sout->printf("%s%s",fmt,"'!hilight [n1 [n2 [...]]]' - hilights zero, one, or more items in the menu\n");
 	sout->printf("%s%s",fmt,"'!input text' - calls takeInput(text) on the currently hilighted control(s)\n");
+	sout->printf("%s%s",fmt,"'!set section.key=value' - will be sent to Config::setValue(section,key,value)\n");
 	sout->printf("%s%s",fmt,"any text not beginning with ! - sent to takeInput() of the current control\n");
 	report(root,"",maxDepth);
 	return NullControl::activate(disp_id,gui);
@@ -104,9 +107,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/HelpControl.h ./Behaviors/Controls/HelpControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/HelpControl.h	Mon Jan 19 17:03:58 2004
+++ ./Behaviors/Controls/HelpControl.h	Mon Jan 19 17:03:58 2004
@@ -45,7 +45,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/LoadCalibration.h ./Behaviors/Controls/LoadCalibration.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/LoadCalibration.h	Wed Feb 25 20:02:25 2004
+++ ./Behaviors/Controls/LoadCalibration.h	Wed Feb 25 20:02:25 2004
@@ -86,7 +86,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/LoadPostureControl.h ./Behaviors/Controls/LoadPostureControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/LoadPostureControl.h	Sat Oct 16 21:16:10 2004
+++ ./Behaviors/Controls/LoadPostureControl.h	Fri Jan  7 14:34:22 2005
@@ -7,6 +7,8 @@
 #include "Motion/MMAccessor.h"
 #include "Motion/EmergencyStopMC.h"
 #include "Events/EventRouter.h"
+#include "Motion/LedMC.h"
+#include "SoundPlay/SoundManager.h"
 #include <string>
 
 //! Upon activation, loads a position from a file name read from cin (stored in ms/data/motion...)
@@ -15,55 +17,67 @@
  public:
 	//! Constructor
 	LoadPostureControl(const std::string& n, MotionManager::MC_ID estop_id)
-		: FileBrowserControl(n,"Loads a posture from user-selected file",config->motion.root), estopid(estop_id), file()
+		: FileBrowserControl(n,"Loads a posture from user-selected file",config->motion.root),
+			estopid(estop_id), ledid(MotionManager::invalid_MC_ID), file()
 	{
 		setFilter("*.pos");
 	}
-	//! Destructor
-	virtual ~LoadPostureControl() {}
 	
-	//! this is to help reduce the twitch at the end (estop tries to go back to its position when this is removed)
-	virtual void processEvent(const EventBase& event) {
-		// it still twitches some because there's a bit of lag before we get the
-		// event, and estop is already trying to move it back
-		erouter->removeListener(this,event);
-		MMAccessor<EmergencyStopMC> estop(estopid);
-		// why don't we just tell estop to load the file in the first place?
-		// estop senses forces on the joints - the force of snapping the joint
-		// into position will cause it to reset and not make it into position
-		estop->LoadFile(file.c_str());
-		estop->setActive(true);
+	virtual ~LoadPostureControl() {
+		erouter->removeListener(this);
+		motman->removeMotion(ledid);
 	}
-	
-	virtual void deactivate() {
+
+	//! only called when e-stop has been turned off and we're waiting to load a file
+	virtual void processEvent(const EventBase& /*event*/) {
 		erouter->removeListener(this);
+		runFile();
+		motman->removeMotion(ledid);
+		ledid=MotionManager::invalid_MC_ID;
 	}
 
 protected:
+	//! loads the motion sequence and runs it
+	void runFile() {
+		//TimeET timer;
+		SharedObject< PostureMC > s(file);
+		//cout << "Load Time: " << timer.Age() << endl;
+		s->defaultMaxSpeed(.25); //no need to rush this, run at quarter of max speed
+		motman->addPrunableMotion(s);
+	}
+
 	//!does the actual loading of the MotionSequence
 	virtual ControlBase* selectedFile(const std::string& f) {
 		file=f;
-		SharedObject<PostureMC> post;
-		post->LoadFile(file.c_str());
-		MMAccessor<EmergencyStopMC>(estopid)->setActive(false);
-		MotionManager::MC_ID id=motman->addPrunableMotion(post,MotionManager::kEmergencyPriority+1);
-		erouter->addListener(this,EventBase::motmanEGID,id,EventBase::deactivateETID);
+		if(!MMAccessor<EmergencyStopMC>(estopid)->getStopped()) {
+			runFile();
+		} else {
+			//we have to wait for the estop to be turned off
+			sndman->PlayFile("donkey.wav");
+			SharedObject<LedMC> led;
+			led->cset(FaceLEDMask,0);
+			led->cycle(BotLLEDMask,1000,3,0,0);
+			led->cycle(BotRLEDMask,1000,3,0,500);
+			ledid=motman->addPersistentMotion(led);
+			erouter->addListener(this,EventBase::estopEGID,estopid,EventBase::deactivateETID);
+		}
 		return this;
 	}
 
-	MotionManager::MC_ID estopid; //!< MC_ID of the e-stop
+	MotionManager::MC_ID estopid; //!< MC_ID of the emergency stop (so we can tell if it's active and wait until it's turned off)
+	MotionManager::MC_ID ledid; //!< MC_ID of the led we use to signal there's a MotionSequence lined up
 	std::string file;             //!< last posture file loaded
 };
 
 /*! @file
- * @brief Defines LoadPostureControl, which when activated, loads a position from a file name read from cin (stored in ms/data/motion...)
+ * @brief Defines LoadPostureControl, which presents a file selection submenu, and then loads the specified posture.
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/LoadWalkControl.h ./Behaviors/Controls/LoadWalkControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/LoadWalkControl.h	Sat Jan 10 15:10:27 2004
+++ ./Behaviors/Controls/LoadWalkControl.h	Sat Jan 10 15:10:27 2004
@@ -56,7 +56,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/MCValueEditControl.h ./Behaviors/Controls/MCValueEditControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/MCValueEditControl.h	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/MCValueEditControl.h	Thu Sep 25 11:26:11 2003
@@ -29,7 +29,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/NetworkStatusControl.h ./Behaviors/Controls/NetworkStatusControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/NetworkStatusControl.h	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Controls/NetworkStatusControl.h	Wed Jan 12 17:37:26 2005
@@ -0,0 +1,82 @@
+//-*-c++-*-
+#ifndef INCLUDED_NetworkStatusControl_h_
+#define INCLUDED_NetworkStatusControl_h_
+
+#include "ControlBase.h"
+#include "Motion/MMAccessor.h"
+#include "Motion/LedMC.h"
+#include "NullControl.h"
+#include "Events/EventRouter.h"
+#include "Wireless/Wireless.h"
+#include <ERA201D1.h>
+
+//! will display current network status such as wireless signal strength
+class NetworkStatusControl : public ControlBase, public EventListener {
+public:
+	//! constructor
+	NetworkStatusControl() : ControlBase("Network Status","Displays current network status such as wireless signal strength"), EventListener() {}
+	
+	//! constructor, pass custom name
+	NetworkStatusControl(const std::string& nm) : ControlBase(nm,"Displays current network status such as wireless signal strength"), EventListener() {}
+	
+	//! stops listening for power events and sets display to invalid
+	virtual void pause() {
+		erouter->removeListener(this);
+		ControlBase::pause();
+	}
+	//! calls report()
+	virtual void refresh() {
+		erouter->addTimer(this,0,1000,true);
+		EtherDriverGetWLANStatisticsMsg msg;
+		EtherStatus status = ERA201D1_GetWLANStatistics(&msg);
+		clearSlots();
+		const unsigned int TMP_SIZE=255;
+		char tmp[TMP_SIZE];
+		if (status == ETHER_OK) {
+			snprintf(tmp,TMP_SIZE,"link: %d",msg.statistics.link);
+			pushSlot(new NullControl(tmp));
+			snprintf(tmp,TMP_SIZE,"signal: %d",msg.statistics.signal);
+			pushSlot(new NullControl(tmp));
+			snprintf(tmp,TMP_SIZE,"noise: %d",msg.statistics.noise);
+			pushSlot(new NullControl(tmp));
+			snprintf(tmp,TMP_SIZE,"invalidIDCount: %d",msg.statistics.invalidIDCount);
+			pushSlot(new NullControl(tmp));
+			snprintf(tmp,TMP_SIZE,"invalidEncCount: %d",msg.statistics.invalidEncCount);
+			pushSlot(new NullControl(tmp));
+			snprintf(tmp,TMP_SIZE,"invalidMiscCount: %d",msg.statistics.invalidMiscCount);
+			pushSlot(new NullControl(tmp));
+			MMAccessor<LedMC> leds_acc(display_id);
+			leds_acc->displayPercent(msg.statistics.signal/100.0,LedEngine::major,LedEngine::major);
+		} else {
+			snprintf(tmp,TMP_SIZE,"ERA201D1_GetWLANSettings() FAILED %d", status);
+			pushSlot(new NullControl("Error Accessing wireless statistics",tmp));
+			serr->printf("%s",tmp);
+		}
+
+		ControlBase::refresh();
+	}
+	//! stops listening for power events and sets display to invalid
+	virtual void deactivate() {
+		erouter->removeListener(this);
+		ControlBase::deactivate();
+	}
+	virtual void processEvent(const EventBase& /*event*/) {
+		refresh();
+	}
+	
+};
+
+/*! @file
+ * @brief Defines NetworkStatusControl, which will display current network status such as wireless signal strength
+ * @author Sony OPEN-R Sample Code
+ * @author klibby and lkirtane (original port)
+ * @author ejt (UI repackaging)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/NullControl.h ./Behaviors/Controls/NullControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/NullControl.h	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/NullControl.h	Thu Sep 25 11:26:11 2003
@@ -32,7 +32,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/PlaySoundControl.h ./Behaviors/Controls/PlaySoundControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/PlaySoundControl.h	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/PlaySoundControl.h	Thu Sep 25 11:26:11 2003
@@ -32,7 +32,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/PostureEditor.cc ./Behaviors/Controls/PostureEditor.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/PostureEditor.cc	Tue Dec 21 16:49:50 2004
+++ ./Behaviors/Controls/PostureEditor.cc	Tue Jan 11 13:40:00 2005
@@ -45,6 +45,7 @@
 	//cout << "activate" << endl;
 	// start off with current pose
 	pose.takeSnapshot();
+	pose.setWeights(1);
 	// clear the LEDs though
 	for(unsigned int i=LEDOffset; i<LEDOffset+NumLEDs; i++)
 		pose.setOutputCmd(i,0);
@@ -86,6 +87,7 @@
 
 void
 PostureEditor::pause() {
+	//cout << "pause" << endl;
 	refresh(); //one last time, in case this pause is due to un-estop putting Controller into low-profile mode
 	pauseCalled=true;
 	erouter->removeListener(this,EventBase::timerEGID);
@@ -116,7 +118,9 @@
 		}
 	} else if(e.getGeneratorID()==EventBase::timerEGID) {
 		//doing a manual copy instead of just takeSnapshot() so we don't disturb the LED settings
-		for(unsigned int i=PIDJointOffset; i<PIDJointOffset+NumPIDJoints; i++)
+		for(unsigned int i=0; i<LEDOffset; i++)
+			pose(i).value=state->outputs[i];
+		for(unsigned int i=LEDOffset+NumLEDs; i<NumOutputs; i++)
 			pose(i).value=state->outputs[i];
 		refresh();
 	} else {
@@ -131,13 +135,21 @@
 
 void
 PostureEditor::updatePose(unsigned int delay) {
+	//cout << "updatePose" << endl;
 	bool paused=isEStopped();
 	MMAccessor<SmallMotionSequenceMC> reach_acc(reachID);
+	PostureEngine curpose;
+	reach_acc->getPose(curpose);
 	reach_acc->clear();
+	//we want to keep the current pose to avoid any twitching
+	reach_acc->setTime(1);
+	for(unsigned int i=0; i<NumOutputs; i++) //only set weighted joints
+		if(curpose(i).weight!=0)
+			reach_acc->setOutputCmd(i,curpose(i));
+	//now move to desired posture
 	reach_acc->setTime(delay);
 	reach_acc->setPose(pose);
-	reach_acc->advanceTime(100);
-	reach_acc->setPose(pose);
+	//run now or later?
 	if(paused)
 		reach_acc->pause();
 	else
@@ -150,8 +162,8 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/PostureEditor.h ./Behaviors/Controls/PostureEditor.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/PostureEditor.h	Thu Dec  2 13:48:56 2004
+++ ./Behaviors/Controls/PostureEditor.h	Thu Dec  2 13:48:56 2004
@@ -50,7 +50,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ProfilerCheckControl.h ./Behaviors/Controls/ProfilerCheckControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ProfilerCheckControl.h	Thu Nov 11 15:34:59 2004
+++ ./Behaviors/Controls/ProfilerCheckControl.h	Thu Nov 11 15:34:59 2004
@@ -24,7 +24,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/RebootControl.cc ./Behaviors/Controls/RebootControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/RebootControl.cc	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/RebootControl.cc	Thu Sep 25 11:26:11 2003
@@ -12,7 +12,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/RebootControl.h ./Behaviors/Controls/RebootControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/RebootControl.h	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/RebootControl.h	Thu Sep 25 11:26:11 2003
@@ -23,7 +23,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/RunSequenceControl.h ./Behaviors/Controls/RunSequenceControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/RunSequenceControl.h	Mon Oct 18 13:01:38 2004
+++ ./Behaviors/Controls/RunSequenceControl.h	Fri Jan  7 14:34:51 2005
@@ -28,25 +28,31 @@
 public:
 	//! Constructor, sets filter to *.mot
 	RunSequenceControl(const std::string& n, MotionManager::MC_ID estop_id)
-		: FileBrowserControl(n,"Runs a motion sequence from a user-specified file",config->motion.root), estopid(estop_id), ledid(MotionManager::invalid_MC_ID), waitingFile()
+		: FileBrowserControl(n,"Runs a motion sequence from a user-specified file",config->motion.root),
+			estopid(estop_id), ledid(MotionManager::invalid_MC_ID), waitingFile()
 	{
 		setFilter("*.mot");
 	}
 
-	//! this is to help reduce the twitch at the end (estop tries to go back to its position when this is removed)
-	virtual void processEvent(const EventBase& event) {
-		erouter->removeListener(this,event);
-		runFile();
+	virtual ~RunSequenceControl() {
+		erouter->removeListener(this);
 		motman->removeMotion(ledid);
 	}
 
+	//! only called when e-stop has been turned off and we're waiting to load a file
+	virtual void processEvent(const EventBase& /*event*/) {
+		erouter->removeListener(this);
+		runFile();
+		motman->removeMotion(ledid);
+	}
+	
 protected:
 	//! loads the motion sequence and runs it
 	void runFile() {
 		//TimeET timer;
-		SharedObject< MotionSequenceMC<SequenceSize> > s(waitingFile.c_str());
+		SharedObject< MotionSequenceMC<SequenceSize> > s(waitingFile);
 		//cout << "Load Time: " << timer.Age() << endl;
-		motman->addPrunableMotion(s,MotionManager::kEmergencyPriority+1);
+		motman->addPrunableMotion(s);
 		waitingFile="";
 	}
 
@@ -59,6 +65,7 @@
 			//we have to wait for the estop to be turned off
 			sndman->PlayFile("donkey.wav");
 			SharedObject<LedMC> led;
+			led->cset(FaceLEDMask,0);
 			led->cycle(BotLLEDMask,1000,3,0,0);
 			led->cycle(BotRLEDMask,1000,3,0,500);
 			ledid=motman->addPersistentMotion(led);
@@ -67,7 +74,7 @@
 		return this;
 	}
 
-	MotionManager::MC_ID estopid; //!< MC_ID of the emergency stop (so we can reset it to the end frame)
+	MotionManager::MC_ID estopid; //!< MC_ID of the emergency stop (so we can tell if it's active and wait until it's turned off)
 	MotionManager::MC_ID ledid; //!< MC_ID of the led we use to signal there's a MotionSequence lined up
 	std::string waitingFile; //!< filename of the motion sequence waiting to load
 };
@@ -77,10 +84,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/SavePostureControl.h ./Behaviors/Controls/SavePostureControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/SavePostureControl.h	Thu Dec  2 16:29:45 2004
+++ ./Behaviors/Controls/SavePostureControl.h	Fri Jan  7 18:16:58 2005
@@ -21,6 +21,7 @@
 			filename=config->motion.makePath(msg);
 			PostureEngine post;
 			post.takeSnapshot();
+			post.setWeights(1);
 			post.SaveFile(filename.c_str());
 		}
 		return StringInputControl::takeInput(msg);
@@ -32,10 +33,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/SaveWalkControl.h ./Behaviors/Controls/SaveWalkControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/SaveWalkControl.h	Thu Dec  2 16:29:45 2004
+++ ./Behaviors/Controls/SaveWalkControl.h	Thu Dec  2 16:29:45 2004
@@ -49,7 +49,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/SensorObserverControl.cc ./Behaviors/Controls/SensorObserverControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/SensorObserverControl.cc	Wed Nov  3 22:01:32 2004
+++ ./Behaviors/Controls/SensorObserverControl.cc	Tue Jan 11 18:49:04 2005
@@ -10,12 +10,12 @@
 #include "SoundPlay/SoundManager.h"
 
 SensorObserverControl::SensorObserverControl()
-	: ControlBase("Sensor Observer","Allows you to see/log the sensor data"), logfilePath(), logfile(), helpCtl(NULL), sensorCtl(NULL), buttonCtl(NULL), outputCtl(NULL), dutyCtl(NULL), consoleCtl(NULL), fileCtl(NULL), numListeners(0)
+	: ControlBase("Sensor Observer","Allows you to see/log the sensor data"), logfilePath(), logfile(), helpCtl(NULL), sensorCtl(NULL), buttonCtl(NULL), outputCtl(NULL), dutyCtl(NULL), consoleCtl(NULL), fileCtl(NULL), rtCtl(NULL), rtFreqCtl(NULL), numListeners(0)
 {
-	const unsigned int TMP_LEN=64;
-	char tmp[TMP_LEN];
 	pushSlot(consoleCtl=new ToggleControl("Console Output","If selected, outputs events to the console"));
 	pushSlot(fileCtl=new StringInputControl("[ ] File Output","Please enter the filename to log to (in /ms/...)"));
+	pushSlot(rtCtl=new RTViewControl(this));
+	pushSlot(rtFreqCtl=new StringInputControl("Real-time Update Period","Please enter the time between refreshes, in milliseconds; '0' to require manual refresh"));
 	pushSlot(helpCtl=new ControlBase("Help"));
 	pushSlot(NULL);
 	helpCtl->pushSlot(new NullControl("The indexes listed here"));
@@ -25,15 +25,11 @@
 	helpCtl->pushSlot(new NullControl("robot which you are "));
 	helpCtl->pushSlot(new NullControl("currently using."));
 	pushSlot(sensorCtl=new ControlBase("Sensors:","Toggles logging of various sensors"));
-	for(unsigned int i=0; i<NumSensors; i++) {
-		snprintf(tmp,TMP_LEN,"%d",i);
-		sensorCtl->pushSlot(new ToggleControl(tmp,"Turns logging of this sensor on/off"));
-	}
+	for(unsigned int i=0; i<NumSensors; i++)
+		sensorCtl->pushSlot(new ToggleControl(sensorNames[i],"Turns logging of this sensor on/off"));
 	pushSlot(buttonCtl=new ControlBase("Buttons:","Toggles logging of various buttons"));
-	for(unsigned int i=0; i<NumButtons; i++) {
-		snprintf(tmp,TMP_LEN,"%d",i);
-		buttonCtl->pushSlot(new ToggleControl(tmp,"Turns logging of this button on/off"));
-	}
+	for(unsigned int i=0; i<NumButtons; i++)
+		buttonCtl->pushSlot(new ToggleControl(buttonNames[i],"Turns logging of this button on/off"));
 	pushSlot(outputCtl=new ControlBase("Outputs:","Toggles logging of various outputs' positions"));
 	for(unsigned int i=0; i<NumOutputs; i++)
 		outputCtl->pushSlot(new ToggleControl(outputNames[i],"Turns logging of this output's values on/off"));
@@ -69,7 +65,7 @@
 	sndman->PlayFile(config->controller.select_snd);
 	if(wasListening!=(numListeners>0)) {
 		if(numListeners>0)
-			erouter->addListener(this,EventBase::sensorEGID,0);
+			erouter->addListener(this,EventBase::sensorEGID,SensorSourceID::UpdatedSID);
 		else
 			erouter->removeListener(this);
 	}
@@ -79,34 +75,45 @@
 }
 
 void SensorObserverControl::refresh() {
+	//check for change in log file
 	checkLogFile();
+	//check for change in real-time refresh period
+	if(rtFreqCtl->getLastInput().size()>0) {
+		unsigned int fr=atoi(rtFreqCtl->getLastInput().c_str());
+		rtFreqCtl->clearLastInput();
+		if(fr!=0 && rtCtl!=NULL)
+			rtCtl->setPeriod(fr<100?100:fr); //limit to minimum period of 100ms
+	}
 	ControlBase::refresh();
 }
 
-//!sends all events received to stdout and/or logfile
-void SensorObserverControl::processEvent(const EventBase& /*event*/) {
-	std::ostringstream logdata;
-	for(unsigned int i=0; i<NumSensors; i++)
-		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(sensorCtl->getSlots()[i]))
-			if(tgl->getStatus())
-				logdata << state->lastSensorUpdateTime << "\tSENSOR:\t" << i << '\t' << state->sensors[i] << '\n';
-	for(unsigned int i=0; i<NumButtons; i++)
-		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(buttonCtl->getSlots()[i]))
-			if(tgl->getStatus())
-				logdata << state->lastSensorUpdateTime << "\tBUTTON:\t" << i << '\t' << state->buttons[i] << '\n';
-	for(unsigned int i=0; i<NumOutputs; i++)
-		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(outputCtl->getSlots()[i]))
-			if(tgl->getStatus())
-				logdata << state->lastSensorUpdateTime << "\tOUTPUT:\t" << i << '\t' << state->outputs[i] << '\n';
-	for(unsigned int i=0; i<NumPIDJoints; i++)
-		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(dutyCtl->getSlots()[i]))
-			if(tgl->getStatus())
-				logdata << state->lastSensorUpdateTime << "\tDUTY:\t" << i << '\t' << state->pidduties[i] << '\n';
-	if(consoleCtl->getStatus())
-		sout->printf("%s",logdata.str().c_str());
-	checkLogFile();
-	if(logfile)
-		logfile << logdata.str() << std::flush;
+void SensorObserverControl::processEvent(const EventBase& event) {
+	if(event.getGeneratorID()==EventBase::sensorEGID) {
+		std::ostringstream logdata;
+		for(unsigned int i=0; i<NumSensors; i++)
+			if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(sensorCtl->getSlots()[i]))
+				if(tgl->getStatus())
+					logdata << state->lastSensorUpdateTime << "\tSENSOR:\t" << i << '\t' << state->sensors[i] << '\n';
+		for(unsigned int i=0; i<NumButtons; i++)
+			if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(buttonCtl->getSlots()[i]))
+				if(tgl->getStatus())
+					logdata << state->lastSensorUpdateTime << "\tBUTTON:\t" << i << '\t' << state->buttons[i] << '\n';
+		for(unsigned int i=0; i<NumOutputs; i++)
+			if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(outputCtl->getSlots()[i]))
+				if(tgl->getStatus())
+					logdata << state->lastSensorUpdateTime << "\tOUTPUT:\t" << i << '\t' << state->outputs[i] << '\n';
+		for(unsigned int i=0; i<NumPIDJoints; i++)
+			if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(dutyCtl->getSlots()[i]))
+				if(tgl->getStatus())
+					logdata << state->lastSensorUpdateTime << "\tDUTY:\t" << i << '\t' << state->pidduties[i] << '\n';
+		if(consoleCtl->getStatus())
+			sout->printf("%s",logdata.str().c_str());
+		checkLogFile();
+		if(logfile)
+			logfile << logdata.str() << std::flush;
+	} else {
+		serr->printf("WARNING: Unexpected event: %s\n",event.getName().c_str());
+	}
 }
 
 void SensorObserverControl::checkLogFile() {
@@ -128,13 +135,82 @@
 	}
 }
 
+void SensorObserverControl::updateRT() {
+	const unsigned int FTOS_LEN=50;
+	char ftos[FTOS_LEN];
+	rtCtl->clearSlots();
+	bool first=true;
+	for(unsigned int i=0; i<NumSensors; i++)
+		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(sensorCtl->getSlots()[i]))
+			if(tgl->getStatus()) {
+				if(first)
+					rtCtl->pushSlot(new NullControl("SENSORS:"));
+				first=false;
+				snprintf(ftos,FTOS_LEN,"%s: %g",sensorNames[i],state->sensors[i]);
+				rtCtl->pushSlot(new NullControl(ftos));
+			}
+	first=true;
+	for(unsigned int i=0; i<NumButtons; i++)
+		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(buttonCtl->getSlots()[i]))
+			if(tgl->getStatus()) {
+				if(first)
+					rtCtl->pushSlot(new NullControl("BUTTONS:"));
+				first=false;
+				snprintf(ftos,FTOS_LEN,"%s: %g",buttonNames[i],state->buttons[i]);
+				rtCtl->pushSlot(new NullControl(ftos));
+			}
+	first=true;
+	for(unsigned int i=0; i<NumOutputs; i++)
+		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(outputCtl->getSlots()[i]))
+			if(tgl->getStatus()) {
+				if(first)
+					rtCtl->pushSlot(new NullControl("OUTPUTS:"));
+				first=false;
+				snprintf(ftos,FTOS_LEN,"%s: %g",outputNames[i],state->outputs[i]);
+				rtCtl->pushSlot(new NullControl(ftos));
+			}
+	first=true;
+	for(unsigned int i=0; i<NumPIDJoints; i++)
+		if(ToggleControl * tgl=dynamic_cast<ToggleControl*>(dutyCtl->getSlots()[i]))
+			if(tgl->getStatus()) {
+				if(first)
+					rtCtl->pushSlot(new NullControl("DUTIES:"));
+				first=false;
+				snprintf(ftos,FTOS_LEN,"%s: %g",outputNames[i],state->pidduties[i]);
+				rtCtl->pushSlot(new NullControl(ftos));
+			}
+	if(rtCtl->slotsSize()==0)
+		rtCtl->pushSlot(new NullControl("No sensors selected","You need to select which sensors to view"));
+}
+
+void SensorObserverControl::RTViewControl::refresh() {
+	if(parent!=NULL)
+		parent->updateRT();
+	if(period!=0)
+		erouter->addTimer(this,0,period);
+	ControlBase::refresh();
+}
+void SensorObserverControl::RTViewControl::pause() {
+	erouter->removeListener(this);
+	ControlBase::pause();
+}
+void SensorObserverControl::RTViewControl::deactivate() {
+	erouter->removeListener(this);
+	ControlBase::deactivate();
+}
+/*! The change doesn't get picked up until next call to refresh() */
+void SensorObserverControl::RTViewControl::setPeriod(unsigned int x) {
+	period=x;
+}
+
+
 /*! @file
  * @brief Describes SensorObserverControl, which allows logging of sensor information to the console or file
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/SensorObserverControl.h ./Behaviors/Controls/SensorObserverControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/SensorObserverControl.h	Sun Jan 18 05:16:56 2004
+++ ./Behaviors/Controls/SensorObserverControl.h	Tue Jan 11 18:49:04 2005
@@ -25,6 +25,27 @@
 protected:
 	//!checks to see if logfilePath differs from the StringInputControl's value and switches it if it is
 	void checkLogFile();
+
+	//!update the real-time sub-control view (#rtCtl)
+	void updateRT();
+
+	//! The real time view for SensorObserverControl is split into a separate class for more straightfoward handling of refreshes
+	friend class RTViewControl : public ControlBase, public EventListener {
+	public:
+		//constructor, pass pointer to SensorObserverControl which contains it
+		RTViewControl(SensorObserverControl* p) : ControlBase("Real-time View"), EventListener(), parent(p), period(500) {}
+		virtual void processEvent(const EventBase& /*event*/) { refresh(); }
+		virtual void refresh();
+		virtual void pause();
+		virtual void deactivate();
+		virtual void setPeriod(unsigned int x); //!< sets #period
+	protected:
+		SensorObserverControl* parent; //!< a back pointer to SensorObserverControl which contains it so updateRT can be triggered
+		unsigned int period; //!< the time to wait between automatic refreshes
+	private:
+		RTViewControl(const RTViewControl& ); //!< don't call
+		RTViewControl& operator=(const RTViewControl& ); //!< don't call
+	};
 	
 	//!address of the logfile, if any (empty string is no logfile)
 	std::string logfilePath;
@@ -39,6 +60,8 @@
 	ControlBase * dutyCtl; //!< control of duty selectors
 	ToggleControl * consoleCtl; //!< turn logging to the console on and off
 	StringInputControl * fileCtl; //!< turn logging to a file on and off
+	RTViewControl * rtCtl; //!< a submenu containing real-time view of current values
+	StringInputControl * rtFreqCtl; //!< the frequency at which rtCtl should be updated
 
 	unsigned int numListeners; //!< count of active console or file control so we know if we're actually logging
 
@@ -53,10 +76,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ShutdownControl.cc ./Behaviors/Controls/ShutdownControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ShutdownControl.cc	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/ShutdownControl.cc	Thu Sep 25 11:26:11 2003
@@ -12,7 +12,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ShutdownControl.h ./Behaviors/Controls/ShutdownControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ShutdownControl.h	Thu Sep 25 11:26:11 2003
+++ ./Behaviors/Controls/ShutdownControl.h	Thu Sep 25 11:26:11 2003
@@ -23,7 +23,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/StringInputControl.cc ./Behaviors/Controls/StringInputControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/StringInputControl.cc	Mon Jul 28 01:54:32 2003
+++ ./Behaviors/Controls/StringInputControl.cc	Mon Jul 28 01:54:32 2003
@@ -42,7 +42,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/StringInputControl.h ./Behaviors/Controls/StringInputControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/StringInputControl.h	Mon Mar 22 19:55:01 2004
+++ ./Behaviors/Controls/StringInputControl.h	Mon Mar 22 19:55:01 2004
@@ -44,7 +44,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ToggleControl.h ./Behaviors/Controls/ToggleControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ToggleControl.h	Mon Mar 22 19:55:01 2004
+++ ./Behaviors/Controls/ToggleControl.h	Mon Mar 22 19:55:01 2004
@@ -141,7 +141,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ValueEditControl.h ./Behaviors/Controls/ValueEditControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ValueEditControl.h	Wed Dec 15 23:50:48 2004
+++ ./Behaviors/Controls/ValueEditControl.h	Wed Dec 15 23:50:48 2004
@@ -167,7 +167,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/ValueSetControl.h ./Behaviors/Controls/ValueSetControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/ValueSetControl.h	Sun Jan 18 05:16:56 2004
+++ ./Behaviors/Controls/ValueSetControl.h	Sun Jan 18 05:16:56 2004
@@ -50,7 +50,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/WalkCalibration.cc ./Behaviors/Controls/WalkCalibration.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/WalkCalibration.cc	Wed Nov  3 22:01:32 2004
+++ ./Behaviors/Controls/WalkCalibration.cc	Wed Nov  3 22:01:32 2004
@@ -913,7 +913,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/WalkCalibration.h ./Behaviors/Controls/WalkCalibration.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/WalkCalibration.h	Thu Oct  7 15:07:04 2004
+++ ./Behaviors/Controls/WalkCalibration.h	Thu Oct  7 15:07:04 2004
@@ -124,7 +124,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/WaypointWalkControl.cc ./Behaviors/Controls/WaypointWalkControl.cc
--- ../Tekkotsu_2.2.2/Behaviors/Controls/WaypointWalkControl.cc	Thu Dec  2 16:29:45 2004
+++ ./Behaviors/Controls/WaypointWalkControl.cc	Thu Dec  2 16:29:45 2004
@@ -247,7 +247,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Controls/WaypointWalkControl.h ./Behaviors/Controls/WaypointWalkControl.h
--- ../Tekkotsu_2.2.2/Behaviors/Controls/WaypointWalkControl.h	Tue Jul 27 10:33:28 2004
+++ ./Behaviors/Controls/WaypointWalkControl.h	Tue Jul 27 10:33:28 2004
@@ -75,7 +75,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ASCIIVisionBehavior.cc ./Behaviors/Demos/ASCIIVisionBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ASCIIVisionBehavior.cc	Fri Dec  3 19:10:24 2004
+++ ./Behaviors/Demos/ASCIIVisionBehavior.cc	Tue Jan  4 14:51:41 2005
@@ -33,3 +33,13 @@
 	sout->printf("\n\n%s",charimg);
 }
 
+/*! @file
+ * @brief Implements ASCIIVisionBehavior, which streams low-resolution ASCII-art of the camera image to sout
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ASCIIVisionBehavior.h ./Behaviors/Demos/ASCIIVisionBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ASCIIVisionBehavior.h	Wed Dec 22 20:47:06 2004
+++ ./Behaviors/Demos/ASCIIVisionBehavior.h	Tue Jan  4 14:51:41 2005
@@ -38,14 +38,14 @@
 };
 
 /*! @file
- * @brief Defines ASCIIVisionBehavior, which streams low-resolution ASCII-art of the camera image to sout
+ * @brief Describes ASCIIVisionBehavior, which streams low-resolution ASCII-art of the camera image to sout
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/AlanBehavior.h ./Behaviors/Demos/AlanBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/AlanBehavior.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Demos/AlanBehavior.h	Wed Nov 10 20:45:35 2004
@@ -115,7 +115,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/AutoGetupBehavior.h ./Behaviors/Demos/AutoGetupBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/AutoGetupBehavior.h	Tue Dec 21 15:29:07 2004
+++ ./Behaviors/Demos/AutoGetupBehavior.h	Tue Dec 21 15:29:07 2004
@@ -74,7 +74,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/BanditMachine.h ./Behaviors/Demos/BanditMachine.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/BanditMachine.h	Tue Dec 21 16:49:50 2004
+++ ./Behaviors/Demos/BanditMachine.h	Tue Dec 21 16:49:50 2004
@@ -214,7 +214,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/BatteryMonitorBehavior.h ./Behaviors/Demos/BatteryMonitorBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/BatteryMonitorBehavior.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Demos/BatteryMonitorBehavior.h	Wed Nov 10 20:45:35 2004
@@ -156,7 +156,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Entries ./Behaviors/Demos/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,43 @@
+/ASCIIVisionBehavior.cc/1.3/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/ASCIIVisionBehavior.h/1.6/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/AlanBehavior.h/1.12/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/AutoGetupBehavior.h/1.14/Tue Dec 21 20:29:07 2004//Ttekkotsu-2_3
+/BanditMachine.h/1.24/Tue Dec 21 21:49:50 2004//Ttekkotsu-2_3
+/BatteryMonitorBehavior.h/1.20/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/CameraBehavior.cc/1.8/Tue Jan 25 23:50:55 2005//Ttekkotsu-2_3
+/CameraBehavior.h/1.8/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/ChaseBallBehavior.cc/1.11/Sun Oct 17 01:16:10 2004//Ttekkotsu-2_3
+/ChaseBallBehavior.h/1.5/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/CrashTestBehavior.h/1.3/Thu Nov 11 01:45:35 2004//Ttekkotsu-2_3
+/DriveMeBehavior.cc/1.10/Tue Dec 21 21:49:50 2004//Ttekkotsu-2_3
+/DriveMeBehavior.h/1.7/Tue Dec 21 20:29:07 2004//Ttekkotsu-2_3
+/ExploreMachine.cc/1.1/Sat Dec  4 00:10:38 2004//Ttekkotsu-2_3
+/ExploreMachine.h/1.23/Mon Jan 24 22:23:46 2005//Ttekkotsu-2_3
+/FlashIPAddrBehavior.cc/1.2/Sat Jan 29 00:56:58 2005//Ttekkotsu-2_3
+/FlashIPAddrBehavior.h/1.2/Thu Jan 27 05:39:42 2005//Ttekkotsu-2_3
+/FollowHeadBehavior.cc/1.9/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/FollowHeadBehavior.h/1.5/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/FreezeTestBehavior.h/1.2/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/GroundPlaneBehavior.h/1.8/Thu Dec 23 01:47:06 2004//Ttekkotsu-2_3
+/HeadLevelBehavior.h/1.10/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/HelloWorldBehavior.h/1.5/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/KinematicSampleBehavior.h/1.9/Thu Dec 23 01:47:06 2004//Ttekkotsu-2_3
+/KinematicSampleBehavior2.h/1.12/Thu Dec 23 01:47:06 2004//Ttekkotsu-2_3
+/LookForSoundBehavior.h/1.8/Thu Dec 23 01:47:06 2004//Ttekkotsu-2_3
+/MCRepeater.h/1.5/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/MotionStressTestBehavior.h/1.7/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/PaceTargetsMachine.cc/1.16/Fri Jan 21 22:50:33 2005//Ttekkotsu-2_3
+/PaceTargetsMachine.h/1.9/Mon Jan 24 22:23:46 2005//Ttekkotsu-2_3
+/RelaxBehavior.h/1.6/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/SimpleChaseBallBehavior.h/1.10/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/SoundTestBehavior.h/1.11/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/StareAtBallBehavior.cc/1.9/Sun Oct 17 01:16:10 2004//Ttekkotsu-2_3
+/StareAtBallBehavior.h/1.6/Fri Nov 12 00:05:03 2004//Ttekkotsu-2_3
+/StareAtPawBehavior.h/1.7/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/StareAtPawBehavior2.h/1.18/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/ToggleHeadLightBehavior.h/1.4/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/WallTestBehavior.cc/1.10/Tue Dec 21 23:51:15 2004//Ttekkotsu-2_3
+/WallTestBehavior.h/1.4/Tue Nov 16 00:11:46 2004//Ttekkotsu-2_3
+/WorldStateVelDaemon.h/1.4/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/karmedbandit.h/1.3/Thu Sep 18 22:40:27 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Repository ./Behaviors/Demos/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors/Demos
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Root ./Behaviors/Demos/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Tag ./Behaviors/Demos/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CameraBehavior.cc ./Behaviors/Demos/CameraBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CameraBehavior.cc	Sat Oct 16 21:16:10 2004
+++ ./Behaviors/Demos/CameraBehavior.cc	Tue Jan 25 18:50:55 2005
@@ -175,7 +175,7 @@
 		std::string fullpath=path+ent->d_name;
 		int err=stat(fullpath.c_str(),&s);
 		if(err!=0) {
-			serr->printf("File disappeared: %s\n");
+			serr->printf("File disappeared: %s\n",fullpath.c_str());
 			return;
 		}
 		if((s.st_mode&S_IFDIR)==0 && strncasecmp(ent->d_name,"IMG",3)==0) {
@@ -196,9 +196,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CameraBehavior.h ./Behaviors/Demos/CameraBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CameraBehavior.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Demos/CameraBehavior.h	Wed Nov 10 20:45:35 2004
@@ -61,7 +61,7 @@
  * @author ejt (rewrite for new vision system)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ChaseBallBehavior.cc ./Behaviors/Demos/ChaseBallBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ChaseBallBehavior.cc	Sat Oct 16 21:16:10 2004
+++ ./Behaviors/Demos/ChaseBallBehavior.cc	Sat Oct 16 21:16:10 2004
@@ -64,7 +64,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ChaseBallBehavior.h ./Behaviors/Demos/ChaseBallBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ChaseBallBehavior.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Demos/ChaseBallBehavior.h	Wed Nov 10 20:45:35 2004
@@ -37,7 +37,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/CrashTestBehavior.h ./Behaviors/Demos/CrashTestBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/CrashTestBehavior.h	Wed Nov 10 20:45:35 2004
+++ ./Behaviors/Demos/CrashTestBehavior.h	Wed Nov 10 20:45:35 2004
@@ -37,7 +37,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/DriveMeBehavior.cc ./Behaviors/Demos/DriveMeBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/DriveMeBehavior.cc	Tue Dec 21 16:49:50 2004
+++ ./Behaviors/Demos/DriveMeBehavior.cc	Tue Dec 21 16:49:50 2004
@@ -109,7 +109,7 @@
  * @author tss (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/DriveMeBehavior.h ./Behaviors/Demos/DriveMeBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/DriveMeBehavior.h	Tue Dec 21 15:29:07 2004
+++ ./Behaviors/Demos/DriveMeBehavior.h	Tue Dec 21 15:29:07 2004
@@ -39,7 +39,7 @@
  * @author tss (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ExploreMachine.cc ./Behaviors/Demos/ExploreMachine.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ExploreMachine.cc	Fri Dec  3 19:10:38 2004
+++ ./Behaviors/Demos/ExploreMachine.cc	Fri Dec  3 19:10:38 2004
@@ -72,7 +72,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ExploreMachine.h ./Behaviors/Demos/ExploreMachine.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ExploreMachine.h	Fri Dec  3 19:10:38 2004
+++ ./Behaviors/Demos/ExploreMachine.h	Mon Jan 24 17:23:46 2005
@@ -18,6 +18,12 @@
 		: StateNode("ExploreMachine",nm), start(NULL), turn(NULL), walkid(MotionManager::invalid_MC_ID)
 	{}
 
+	//!destructor, check if we need to call our teardown
+	~ExploreMachine() {
+		if(issetup)
+			teardown();
+	}
+
 	virtual void setup();
 	virtual void DoStart();
 	virtual void DoStop();
@@ -41,10 +47,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/FlashIPAddrBehavior.cc ./Behaviors/Demos/FlashIPAddrBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/FlashIPAddrBehavior.cc	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/FlashIPAddrBehavior.cc	Fri Jan 28 19:56:58 2005
@@ -0,0 +1,187 @@
+#include "FlashIPAddrBehavior.h"
+
+#include "Events/EventRouter.h"
+#include "Motion/MMAccessor.h"
+#include "Motion/LedEngine.h"
+#include "Shared/WorldState.h"
+#include "Shared/Config.h"
+#include "SoundPlay/SoundManager.h"
+#include "Wireless/Wireless.h"
+
+void FlashIPAddrBehavior::DoStart() {
+	BehaviorBase::DoStart(); // do this first
+	if(config->behaviors.flash_on_start) {
+		setupSequence();
+		loadSounds();
+		ms_id = motman->addPrunableMotion(ms,MotionManager::kEmergencyPriority+1);
+		erouter->addListener(this,EventBase::motmanEGID,ms_id,EventBase::deactivateETID);
+	}
+	erouter->addListener(this,EventBase::buttonEGID,button1);
+	erouter->addListener(this,EventBase::buttonEGID,button2);
+}
+
+void FlashIPAddrBehavior::DoStop() {
+	erouter->removeListener(this);
+	motman->removeMotion(ms_id);
+	ms_id=MotionManager::invalid_MC_ID;
+	releaseSounds();
+	BehaviorBase::DoStop(); // do this last
+}
+
+void FlashIPAddrBehavior::processEvent(const EventBase& e) {
+	if(e.getGeneratorID()==EventBase::timerEGID) {
+
+		if(e.getSourceID()==ACTIVATE_TIMER) {
+			//buttons have been held down long enough, time to run display
+			if(ms_id!=MotionManager::invalid_MC_ID) {
+				//there's already one running, have to check it out to clear it
+				MMAccessor<MSMC_t> ms_acc(ms_id);
+				setupSequence();
+			} else
+				setupSequence();
+			loadSounds();
+			ms_id = motman->addPrunableMotion(ms);
+			erouter->addListener(this,EventBase::motmanEGID,ms_id,EventBase::deactivateETID);
+				
+		} else { //its time to play a digit sound file
+			//the source id was set to correspond to an element of the sounds vector
+			if(e.getSourceID()>=sounds.size())
+				serr->printf("ERROR: %s received invalid timer event %s\n",getName().c_str(),e.getName().c_str());
+			else {
+				sndman->PlayFile(sounds[e.getSourceID()]);
+				if(e.getSourceID()==sounds.size()-1)
+					releaseSounds();
+			}
+				
+		}
+
+	} else if(e.getGeneratorID()==EventBase::buttonEGID) {
+		//if it's an activate, start a timer to expire in a few seconds
+		//if it's a deactivate, cancel that timer
+		if(e.getTypeID()==EventBase::activateETID) {
+			if(state->buttons[button1] && state->buttons[button2])
+				erouter->addTimer(this,ACTIVATE_TIMER,2000,false);
+		} else if(e.getTypeID()==EventBase::deactivateETID)
+			erouter->removeTimer(this,ACTIVATE_TIMER);
+
+	} else if(e.getGeneratorID()==EventBase::motmanEGID) {
+		// display has completed, mark it as such
+		if(e.getSourceID()!=ms_id)
+			serr->printf("WARNING: %s received event %s, doesn't match ms_id (%d)\n",getName().c_str(),e.getName().c_str(),ms_id);
+		ms_id=MotionManager::invalid_MC_ID;
+		erouter->removeListener(this,EventBase::motmanEGID);
+			
+	}
+}
+
+void FlashIPAddrBehavior::loadSounds() {
+	for(unsigned int i=0; i<sounds.size(); i++)
+		sndman->LoadFile(sounds[i]);
+}
+
+void FlashIPAddrBehavior::releaseSounds() {
+	for(unsigned int i=0; i<sounds.size(); i++)
+		sndman->ReleaseFile(sounds[i]);
+	sounds.clear();
+}
+
+void FlashIPAddrBehavior::setupSequence() {
+	const unsigned int DISP_TIME=600;
+	const unsigned int GROUP_TIME=500;
+	const unsigned int DOT_TIME=400;
+	const unsigned int FADE_TIME=1;
+	const unsigned int BLANK_TIME=100-FADE_TIME*2;
+	erouter->removeTimer(this);
+	ms->clear();
+	releaseSounds();
+	unsigned int a=wireless->getIPAddress();
+	unsigned int n=config->behaviors.flash_bytes;
+	if(n>4)
+		n=4;
+	LedEngine disp;
+	for(unsigned int i=n-1; i!=-1U; i--) {
+		unsigned int byte=(a>>(i*8))&0xFF;
+		unsigned int digits=1;
+		if(byte>=10)
+			digits++;
+		if(byte>=100)
+			digits++;
+		//cout << "byte " << i << " is " << byte << " -- " << digits << " digits" << endl;
+		//cout << "Setting LEDs: ";
+		for(unsigned int d=0; d<digits; d++) {
+			unsigned int digit=byte;
+			for(unsigned int j=d;j<digits-1;j++)
+				digit/=10;
+			digit-=(digit/10)*10;
+			disp.displayNumber(digit,LedEngine::onedigit);
+			std::string soundfile="numbers/";
+			soundfile+=(digit+'0');
+			soundfile+=".wav";
+			erouter->addTimer(this,sounds.size(),ms->getTime()+delay,false);
+			sounds.push_back(soundfile);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j)) {
+					//if(disp.getValue(static_cast<LEDOffset_t>(LEDOffset+j)))
+					//cout << j << ' ';
+					ms->setOutputCmd(LEDOffset+j,disp.getValue(static_cast<LEDOffset_t>(LEDOffset+j)));
+				}
+			ms->advanceTime(DISP_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,disp.getValue(static_cast<LEDOffset_t>(LEDOffset+j)));
+			ms->advanceTime(FADE_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,0);
+			ms->advanceTime(BLANK_TIME);
+			if(d==digits-1)
+				ms->advanceTime(GROUP_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,0);
+			ms->advanceTime(FADE_TIME);
+		}
+		//cout << endl;
+		if(i!=0) {
+			LEDBitMask_t dot=1<<TopBrLEDOffset; //default in case we don't recognize model
+			if(state->robotDesign&WorldState::ERS210Mask) {
+				dot=LedEngine::ERS210numMasks[10];
+			} else if(state->robotDesign&WorldState::ERS220Mask) {
+				dot=LedEngine::ERS220numMasks[10];
+			} else if(state->robotDesign&WorldState::ERS7Mask) {
+				dot=LedEngine::ERS7numMasks[10];
+			}
+			erouter->addTimer(this,sounds.size(),ms->getTime()+delay,false);
+			sounds.push_back("numbers/dot.wav");
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,(dot>>j)&1);
+			ms->advanceTime(DOT_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,(dot>>j)&1);
+			ms->advanceTime(FADE_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,0);
+			ms->advanceTime(BLANK_TIME);
+			for(unsigned int j=0; j<NumLEDs; j++)
+				if(FaceLEDMask&(1<<j))
+					ms->setOutputCmd(LEDOffset+j,0);
+			ms->advanceTime(FADE_TIME);
+		}
+	}
+	ms->play();
+}
+
+
+/*! @file
+ * @brief Implements FlashIPAddrBehavior, which displays IP address by flashing a series of numbers on the LED face panel
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/FlashIPAddrBehavior.h ./Behaviors/Demos/FlashIPAddrBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/FlashIPAddrBehavior.h	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Demos/FlashIPAddrBehavior.h	Thu Jan 27 00:39:42 2005
@@ -0,0 +1,67 @@
+//-*-c++-*-
+#ifndef INCLUDED_FlashIPAddrBehavior_h_
+#define INCLUDED_FlashIPAddrBehavior_h_
+
+#include "Behaviors/BehaviorBase.h"
+#include "Motion/MotionManager.h"
+#include "Motion/MotionSequenceMC.h"
+
+//! Displays IP address by flashing a series of numbers on the LED face panel
+/*! Will only run the display on DoStart() if the flash_on_start
+ *  config variable is set.  Otherwise you will need to hold down the
+ *  buttons specified by #button1 and #button2 to trigger the display.
+ *  Note that if the e-stop is active it will intercept the button
+ *  events, so turn off e-stop first. */
+class FlashIPAddrBehavior : public BehaviorBase {
+public:
+	//! constructor
+	FlashIPAddrBehavior()
+		: BehaviorBase("FlashIPAddrBehavior"), sounds(), ms(), ms_id(MotionManager::invalid_MC_ID)
+	{}
+
+	virtual void DoStart(); //!< if the Config::behavior_config::flash_on_start flag is set, will setup and run
+	virtual void DoStop();  //!< halts any display which may be in progress
+
+	//! Receives button events, timers, and motman manager pruning notifications
+	virtual void processEvent(const EventBase& e);
+
+	static std::string getClassDescription() {
+		std::string pre="Displays IP address by flashing a series of numbers on the LED face panel; Hold down ";
+		pre+=buttonNames[button1];
+		pre+=" and ";
+		pre+=buttonNames[button2];
+		pre+=" to trigger any time while running";
+		return pre;
+	}
+	virtual std::string getDescription() const { return getClassDescription(); }
+	
+protected:
+	typedef XLargeMotionSequenceMC MSMC_t;
+
+	void loadSounds();    //!< loads the numeric sounds into memory
+	void releaseSounds(); //!< releases the numeric sounds
+	void setupSequence(); //!< construct the motion sequence for flashing leds, request timers to play corresponding sound file
+
+	static const unsigned int button1=ChinButOffset; //!< one of two buttons which must be pressed together to trigger the report without using the Controller
+	static const unsigned int button2=HeadFrButOffset; //!< one of two buttons which must be pressed together to trigger the report without using the Controller
+	
+	static const unsigned int ACTIVATE_TIMER=-1U; //!< timer id to specify both trigger buttons have been down long enough
+	std::vector<std::string> sounds; //!< sound to play, corresponding to timers to coincide with corresponding digit on the LEDs (could be done with chained sounds, but this is cooler)
+	static const unsigned int delay=64; //!< time (in milliseconds) to expect #ms to be delayed before it actually starts
+	
+	SharedObject<MSMC_t> ms; //!< motion sequence used to control the LEDs
+	MotionManager::MC_ID ms_id; //!< id number of #ms
+};
+
+/*! @file
+ * @brief Describes FlashIPAddrBehavior, which displays IP address by flashing a series of numbers on the LED face panel
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/FollowHeadBehavior.h ./Behaviors/Demos/FollowHeadBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/FollowHeadBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/FollowHeadBehavior.h	Wed Nov 10 20:45:36 2004
@@ -54,7 +54,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/FreezeTestBehavior.h ./Behaviors/Demos/FreezeTestBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/FreezeTestBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/FreezeTestBehavior.h	Wed Nov 10 20:45:36 2004
@@ -42,7 +42,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/GroundPlaneBehavior.h ./Behaviors/Demos/GroundPlaneBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/GroundPlaneBehavior.h	Wed Dec 22 20:47:06 2004
+++ ./Behaviors/Demos/GroundPlaneBehavior.h	Wed Dec 22 20:47:06 2004
@@ -85,7 +85,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/HeadLevelBehavior.h ./Behaviors/Demos/HeadLevelBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/HeadLevelBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/HeadLevelBehavior.h	Wed Nov 10 20:45:36 2004
@@ -85,7 +85,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/HelloWorldBehavior.h ./Behaviors/Demos/HelloWorldBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/HelloWorldBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/HelloWorldBehavior.h	Wed Nov 10 20:45:36 2004
@@ -50,7 +50,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/KinematicSampleBehavior.h ./Behaviors/Demos/KinematicSampleBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/KinematicSampleBehavior.h	Wed Dec 22 20:47:06 2004
+++ ./Behaviors/Demos/KinematicSampleBehavior.h	Wed Dec 22 20:47:06 2004
@@ -113,7 +113,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/KinematicSampleBehavior2.h ./Behaviors/Demos/KinematicSampleBehavior2.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/KinematicSampleBehavior2.h	Wed Dec 22 20:47:06 2004
+++ ./Behaviors/Demos/KinematicSampleBehavior2.h	Wed Dec 22 20:47:06 2004
@@ -163,7 +163,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/LookForSoundBehavior.h ./Behaviors/Demos/LookForSoundBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/LookForSoundBehavior.h	Wed Dec 22 20:47:06 2004
+++ ./Behaviors/Demos/LookForSoundBehavior.h	Wed Dec 22 20:47:06 2004
@@ -74,7 +74,7 @@
  * @author Paris Smaragdis (paris AT media mit edu) (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/MCRepeater.h ./Behaviors/Demos/MCRepeater.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/MCRepeater.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/MCRepeater.h	Wed Nov 10 20:45:36 2004
@@ -46,7 +46,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/MotionStressTestBehavior.h ./Behaviors/Demos/MotionStressTestBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/MotionStressTestBehavior.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Demos/MotionStressTestBehavior.h	Wed Dec 22 20:47:07 2004
@@ -87,7 +87,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/PaceTargetsMachine.cc ./Behaviors/Demos/PaceTargetsMachine.cc
--- ../Tekkotsu_2.2.2/Behaviors/Demos/PaceTargetsMachine.cc	Tue Dec 21 15:29:07 2004
+++ ./Behaviors/Demos/PaceTargetsMachine.cc	Fri Jan 21 17:50:33 2005
@@ -6,7 +6,7 @@
 #include "Behaviors/Transitions/TimeOutTrans.h"
 #include "Behaviors/Transitions/VisualTargetTrans.h"
 #include "Behaviors/Nodes/OutputNode.h"
-#include "Behaviors/Nodes/PlayMotionSequenceNode.h"
+#include "Behaviors/Nodes/MotionSequenceNode.h"
 #include "Behaviors/Nodes/GroupNode.h"
 #include "SoundPlay/SoundManager.h"
 
@@ -22,7 +22,7 @@
 	{
 		ExploreMachine * explore = new ExploreMachine(explGrp->getName()+"::Explore");
 		explGrp->addNode(explore);
-		SmallPlayMotionSequenceNode * panhead = new SmallPlayMotionSequenceNode(explGrp->getName()+"::PanHead","/ms/data/motion/pan_head.mot",true);
+		SmallMotionSequenceNode * panhead = new SmallMotionSequenceNode(explGrp->getName()+"::PanHead","/ms/data/motion/pan_head.mot",true);
 		explGrp->addNode(panhead);
 	}
 
@@ -77,9 +77,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/PaceTargetsMachine.h ./Behaviors/Demos/PaceTargetsMachine.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/PaceTargetsMachine.h	Thu Nov 11 16:32:14 2004
+++ ./Behaviors/Demos/PaceTargetsMachine.h	Mon Jan 24 17:23:46 2005
@@ -11,6 +11,12 @@
 	//!constructor
 	PaceTargetsMachine() : StateNode("PaceTargetsMachine","PaceTargetsMachine"), start(NULL) {}
 
+	//!destructor, check if we need to call our teardown
+	~PaceTargetsMachine() {
+		if(issetup)
+			teardown();
+	}
+
 	virtual void setup();
 	virtual void DoStart();
 
@@ -29,10 +35,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/RelaxBehavior.h ./Behaviors/Demos/RelaxBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/RelaxBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/RelaxBehavior.h	Wed Nov 10 20:45:36 2004
@@ -50,7 +50,7 @@
  * @author ejt (Modifications)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/SimpleChaseBallBehavior.h ./Behaviors/Demos/SimpleChaseBallBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/SimpleChaseBallBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/SimpleChaseBallBehavior.h	Wed Nov 10 20:45:36 2004
@@ -58,7 +58,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/SoundTestBehavior.h ./Behaviors/Demos/SoundTestBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/SoundTestBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/SoundTestBehavior.h	Wed Nov 10 20:45:36 2004
@@ -121,7 +121,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtBallBehavior.h ./Behaviors/Demos/StareAtBallBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtBallBehavior.h	Thu Nov 11 19:05:03 2004
+++ ./Behaviors/Demos/StareAtBallBehavior.h	Thu Nov 11 19:05:03 2004
@@ -36,7 +36,7 @@
  * @author tss (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtPawBehavior.h ./Behaviors/Demos/StareAtPawBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtPawBehavior.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Demos/StareAtPawBehavior.h	Wed Dec 22 20:47:07 2004
@@ -93,7 +93,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtPawBehavior2.h ./Behaviors/Demos/StareAtPawBehavior2.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/StareAtPawBehavior2.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Demos/StareAtPawBehavior2.h	Wed Dec 22 20:47:07 2004
@@ -90,7 +90,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/ToggleHeadLightBehavior.h ./Behaviors/Demos/ToggleHeadLightBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/ToggleHeadLightBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/ToggleHeadLightBehavior.h	Wed Nov 10 20:45:36 2004
@@ -39,7 +39,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/WallTestBehavior.h ./Behaviors/Demos/WallTestBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/WallTestBehavior.h	Mon Nov 15 19:11:46 2004
+++ ./Behaviors/Demos/WallTestBehavior.h	Mon Nov 15 19:11:46 2004
@@ -46,7 +46,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/WorldStateVelDaemon.h ./Behaviors/Demos/WorldStateVelDaemon.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/WorldStateVelDaemon.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Demos/WorldStateVelDaemon.h	Wed Nov 10 20:45:36 2004
@@ -85,7 +85,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Demos/karmedbandit.h ./Behaviors/Demos/karmedbandit.h
--- ../Tekkotsu_2.2.2/Behaviors/Demos/karmedbandit.h	Thu Sep 18 18:40:27 2003
+++ ./Behaviors/Demos/karmedbandit.h	Thu Sep 18 18:40:27 2003
@@ -132,7 +132,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/Aibo3DControllerBehavior.h ./Behaviors/Mon/Aibo3DControllerBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/Aibo3DControllerBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/Aibo3DControllerBehavior.h	Wed Nov 10 20:45:36 2004
@@ -131,7 +131,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Entries ./Behaviors/Mon/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Mon/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,23 @@
+/Aibo3DControllerBehavior.h/1.6/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/EStopControllerBehavior.cc/1.4/Thu Oct  7 19:07:04 2004//Ttekkotsu-2_3
+/EStopControllerBehavior.h/1.5/Fri Dec 10 23:18:10 2004//Ttekkotsu-2_3
+/HeadPointControllerBehavior.cc/1.7/Sun Oct 17 01:16:10 2004//Ttekkotsu-2_3
+/HeadPointControllerBehavior.h/1.4/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/MicrophoneServer.cc/1.1/Fri Nov 12 22:07:39 2004//Ttekkotsu-2_3
+/MicrophoneServer.h/1.1/Fri Nov 12 22:07:39 2004//Ttekkotsu-2_3
+/RawCamBehavior.cc/1.15/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/RawCamBehavior.h/1.10/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/SegCamBehavior.cc/1.11/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/SegCamBehavior.h/1.7/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/SpeakerServer.cc/1.1/Fri Nov 12 22:07:39 2004//Ttekkotsu-2_3
+/SpeakerServer.h/1.1/Fri Nov 12 22:07:39 2004//Ttekkotsu-2_3
+/SpiderMachineBehavior.cc/1.3/Fri Dec 17 20:18:54 2004//Ttekkotsu-2_3
+/SpiderMachineBehavior.h/1.7/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/ViewWMVarsBehavior.h/1.3/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/WMMonitorBehavior.cc/1.3/Fri Apr 16 20:17:22 2004//Ttekkotsu-2_3
+/WMMonitorBehavior.h/1.9/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/WalkControllerBehavior.cc/1.7/Thu Nov  4 03:01:32 2004//Ttekkotsu-2_3
+/WalkControllerBehavior.h/1.4/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/WorldStateSerializerBehavior.cc/1.4/Thu Nov 11 01:45:36 2004//Ttekkotsu-2_3
+/WorldStateSerializerBehavior.h/1.5/Wed Jan 26 19:35:26 2005//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Repository ./Behaviors/Mon/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Mon/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors/Mon
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Root ./Behaviors/Mon/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Mon/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Tag ./Behaviors/Mon/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/Mon/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Mon/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/EStopControllerBehavior.cc ./Behaviors/Mon/EStopControllerBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/EStopControllerBehavior.cc	Thu Oct  7 15:07:04 2004
+++ ./Behaviors/Mon/EStopControllerBehavior.cc	Thu Oct  7 15:07:04 2004
@@ -72,7 +72,7 @@
  * @author tss (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/EStopControllerBehavior.h ./Behaviors/Mon/EStopControllerBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/EStopControllerBehavior.h	Fri Dec 10 18:18:10 2004
+++ ./Behaviors/Mon/EStopControllerBehavior.h	Fri Dec 10 18:18:10 2004
@@ -66,7 +66,7 @@
  * @author tss (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/HeadPointControllerBehavior.cc ./Behaviors/Mon/HeadPointControllerBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/HeadPointControllerBehavior.cc	Sat Oct 16 21:16:10 2004
+++ ./Behaviors/Mon/HeadPointControllerBehavior.cc	Sat Oct 16 21:16:10 2004
@@ -124,7 +124,7 @@
  * @author tss (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/HeadPointControllerBehavior.h ./Behaviors/Mon/HeadPointControllerBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/HeadPointControllerBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/HeadPointControllerBehavior.h	Wed Nov 10 20:45:36 2004
@@ -82,7 +82,7 @@
  * @author tss (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/RawCamBehavior.cc ./Behaviors/Mon/RawCamBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/RawCamBehavior.cc	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/RawCamBehavior.cc	Wed Nov 10 20:45:36 2004
@@ -293,7 +293,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/RawCamBehavior.h ./Behaviors/Mon/RawCamBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/RawCamBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/RawCamBehavior.h	Wed Nov 10 20:45:36 2004
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/SegCamBehavior.cc ./Behaviors/Mon/SegCamBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/SegCamBehavior.cc	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/SegCamBehavior.cc	Wed Nov 10 20:45:36 2004
@@ -171,7 +171,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/SegCamBehavior.h ./Behaviors/Mon/SegCamBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/SegCamBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/SegCamBehavior.h	Wed Nov 10 20:45:36 2004
@@ -84,7 +84,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/SpiderMachineBehavior.cc ./Behaviors/Mon/SpiderMachineBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/SpiderMachineBehavior.cc	Fri Dec 17 15:18:54 2004
+++ ./Behaviors/Mon/SpiderMachineBehavior.cc	Fri Dec 17 15:18:54 2004
@@ -232,7 +232,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/SpiderMachineBehavior.h ./Behaviors/Mon/SpiderMachineBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/SpiderMachineBehavior.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Mon/SpiderMachineBehavior.h	Wed Dec 22 20:47:07 2004
@@ -127,7 +127,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/ViewWMVarsBehavior.h ./Behaviors/Mon/ViewWMVarsBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/ViewWMVarsBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/ViewWMVarsBehavior.h	Wed Nov 10 20:45:36 2004
@@ -38,7 +38,7 @@
  * @author ejt (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WMMonitorBehavior.cc ./Behaviors/Mon/WMMonitorBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WMMonitorBehavior.cc	Fri Apr 16 16:17:22 2004
+++ ./Behaviors/Mon/WMMonitorBehavior.cc	Fri Apr 16 16:17:22 2004
@@ -146,7 +146,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WMMonitorBehavior.h ./Behaviors/Mon/WMMonitorBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WMMonitorBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/WMMonitorBehavior.h	Wed Nov 10 20:45:36 2004
@@ -136,7 +136,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WalkControllerBehavior.cc ./Behaviors/Mon/WalkControllerBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WalkControllerBehavior.cc	Wed Nov  3 22:01:32 2004
+++ ./Behaviors/Mon/WalkControllerBehavior.cc	Wed Nov  3 22:01:32 2004
@@ -158,7 +158,7 @@
  * @author PA Gov. School for the Sciences 2003 Team Project - Haoqian Chen, Yantian Martin, Jon Stahlman (modifications)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WalkControllerBehavior.h ./Behaviors/Mon/WalkControllerBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WalkControllerBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/WalkControllerBehavior.h	Wed Nov 10 20:45:36 2004
@@ -103,7 +103,7 @@
  * @author PA Gov. School for the Sciences 2003 Team Project - Haoqian Chen, Yantian Martin, Jon Stahlman (modifications)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WorldStateSerializerBehavior.cc ./Behaviors/Mon/WorldStateSerializerBehavior.cc
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WorldStateSerializerBehavior.cc	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/WorldStateSerializerBehavior.cc	Wed Nov 10 20:45:36 2004
@@ -53,7 +53,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Mon/WorldStateSerializerBehavior.h ./Behaviors/Mon/WorldStateSerializerBehavior.h
--- ../Tekkotsu_2.2.2/Behaviors/Mon/WorldStateSerializerBehavior.h	Wed Nov 10 20:45:36 2004
+++ ./Behaviors/Mon/WorldStateSerializerBehavior.h	Wed Jan 26 14:35:26 2005
@@ -10,7 +10,22 @@
 //! Copies WorldState into a buffer for transmission over the network
 /*! To determine the communication protocol, just look in the
  *  processEvent() function - it's pretty straightforward binary copy
- *  of values */
+ *  of values.
+ *
+ *  Protocol:
+ *  - <@c unsigned @c int: timestamp>
+ *  - <@c unsigned @c int: ::NumPIDJoints>
+ *  - for each <i>i</i> of ::NumPIDJoints:
+ *    - <@c float: position of joint <i>i</i>>
+ *  - <@c unsigned @c int: ::NumSensors>
+ *  - for each <i>i</i> of ::NumSensors:
+ *    - <@c float: value of sensor <i>i</i>>
+ *  - <@c unsigned @c int: ::NumButtons>
+ *  - for each <i>i</i> of ::NumButtons:
+ *    - <@c float: value of button <i>i</i>>
+ *  - for each <i>i</i> of ::NumPIDJoints:
+ *    - <@c float: duty cycle of joint <i>i</i>>
+ * */
 class WorldStateSerializerBehavior : public BehaviorBase {
 public:
   WorldStateSerializerBehavior(); //!< constructor
@@ -55,10 +70,10 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Entries ./Behaviors/Nodes/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Nodes/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,12 @@
+/GroupNode.h/1.6/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/HeadPointerNode.h/1.7/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/LedNode.h/1.5/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/MotionSequenceNode.h/1.3/Thu Jan 27 20:08:15 2005//Ttekkotsu-2_3
+/OutputNode.h/1.7/Sat Dec  4 00:10:42 2004//Ttekkotsu-2_3
+/PlayMotionSequenceNode.h/1.13/Fri Jan 21 22:50:37 2005//Ttekkotsu-2_3
+/SoundNode.h/1.10/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/TailWagNode.h/1.2/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/WalkNode.h/1.8/Mon Jan 24 22:23:50 2005//Ttekkotsu-2_3
+/WalkToTargetNode.cc/1.1/Sun Dec  5 04:47:53 2004//Ttekkotsu-2_3
+/WalkToTargetNode.h/1.4/Wed Dec  8 19:05:50 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Repository ./Behaviors/Nodes/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Nodes/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors/Nodes
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Root ./Behaviors/Nodes/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Nodes/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Tag ./Behaviors/Nodes/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Nodes/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/GroupNode.h ./Behaviors/Nodes/GroupNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/GroupNode.h	Fri Dec  3 19:10:42 2004
+++ ./Behaviors/Nodes/GroupNode.h	Mon Jan 24 17:23:50 2005
@@ -9,19 +9,19 @@
 /*! When a transition occurs into the group node, it will activate all
  *	of its subnodes.
  *
- *  Note that this doesn't occur if there's a transition to one of the
- *  sub nodes...  only when the main group node itself transitions.
- *
- *  The group node doesn't deactivate its subnodes together however.
- *  In essence, this is a fork - one transition can activate several
- *  states, which are then separate branches of execution.  (Although
- *  only one is actually being executed at a time)
- *
- *  Another (probably better) way to do this is with a
+ *  @note  Another (probably better) way to do this is with a
  *  multi-destination transition - after the initialization of the
  *  transition (usually specifying the first transition) you can call
  *  the Transition::addDestination() function to add addition
  *  destinations, replicating the functionality of this class.
+ *
+ *  The group node doesn't deactivate its subnodes together.  In
+ *  essence, this is a fork - one transition targeting the GroupNode
+ *  can activate several states, which are then separate branches of
+ *  execution.  (Although of course only one is actually being
+ *  executed at a time, as per the cooperative multi-tasking of
+ *  behaviors.)
+ *
  */
 class GroupNode : public StateNode {
 public:
@@ -48,10 +48,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/HeadPointerNode.h ./Behaviors/Nodes/HeadPointerNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/HeadPointerNode.h	Fri Dec  3 19:10:42 2004
+++ ./Behaviors/Nodes/HeadPointerNode.h	Mon Jan 24 17:23:50 2005
@@ -34,7 +34,7 @@
 
   //! receive motmanEGID status event and throw stateMachineEGID status event
   virtual void processEvent(const EventBase&) {
-		erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
+		postCompletionEvent();
   }
 
   //! reveal the MotionCommand
@@ -56,10 +56,10 @@
  * @author dst (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/LedNode.h ./Behaviors/Nodes/LedNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/LedNode.h	Tue Nov 16 20:31:06 2004
+++ ./Behaviors/Nodes/LedNode.h	Mon Jan 24 17:23:50 2005
@@ -34,7 +34,7 @@
 
   //! receive motmanEGID status event and throw stateMachineEGID status event
   virtual void processEvent(const EventBase&) {
-		erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
+		postCompletionEvent();
   }
 
   //! reveal the MotionCommand
@@ -55,11 +55,11 @@
  * @brief Defines LedNode, a simple StateNode that runs a LedMC motion command and throws a status event upon completion
  * @author dst (Creator)
  *
- * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/MotionSequenceNode.h ./Behaviors/Nodes/MotionSequenceNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/MotionSequenceNode.h	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Nodes/MotionSequenceNode.h	Thu Jan 27 15:08:15 2005
@@ -0,0 +1,141 @@
+//-*-c++-*-
+#ifndef INCLUDED_MotionSequenceNode_h_
+#define INCLUDED_MotionSequenceNode_h_
+
+#include "Behaviors/StateNode.h"
+#include "Motion/MotionManager.h"
+#include "Motion/MotionSequenceMC.h"
+#include "Motion/MMAccessor.h"
+
+//! A StateNode for playing a MotionSequence (and looping it if desired)
+/*! Eventually, i'd like to just build the looping functionality into
+ *  MotionSequence, but in the mean time we have this. */
+template<unsigned int SIZE>
+class MotionSequenceNode : public StateNode {
+public:
+	//!constructor
+	MotionSequenceNode()
+		: StateNode("MotionSequenceNode","MotionSequenceNode"), msid(MotionManager::invalid_MC_ID), msidIsMine(false), looping(false), filename()
+	{}
+
+	//!constructor
+	MotionSequenceNode(const std::string& nm, const std::string& file, bool loop=false)
+		: StateNode("MotionSequenceNode",nm), msid(MotionManager::invalid_MC_ID), msidIsMine(false), looping(false), filename(file)
+	{
+		setLooping(loop);
+	}
+
+	//!destructor, check if we need to call our teardown
+	~MotionSequenceNode() {
+		if(issetup)
+			teardown();
+	}
+
+	virtual void DoStart() {
+		//std::cout << "MotionSequenceNode::DoStart(); " << std::endl;
+		updateMS(filename);
+		erouter->addListener(this, EventBase::motmanEGID);//, msid, EventBase::deactivateETID);
+		StateNode::DoStart();
+	}
+
+	virtual void DoStop() {
+		//std::cout << "MotionSequenceNode::DoStop(); " << std::endl;
+		erouter->removeListener(this);
+		motman->removeMotion(msid);
+		msid=MotionManager::invalid_MC_ID;
+		StateNode::DoStop();
+	}
+
+	virtual void teardown() {
+		if(msidIsMine) {
+			motman->removeMotion(msid);
+			msid=MotionManager::invalid_MC_ID;
+		}
+		StateNode::teardown();
+	}
+
+	/* not ready yet
+	// ! use this to force the MotionSequenceNode to use a shared MS - set to MotionManager::invalid_MC_ID to reset to internally generated MS
+	virtual void setMSid(MotionManager::MC_ID id) {
+	if(msidIsMine) {
+	motman->removeMotion(msid);
+	msid=MotionManager::invalid_MC_ID;
+	}
+	msid=id;
+	msidIsMine=(id==MotionManager::invalid_MC_ID);
+	}
+	*/
+
+	//! sets the file to play
+	virtual void setFile(const std::string& file) {
+		if(isActive())
+			updateMS(file);
+		else
+			filename=file;
+	}
+
+	//! turns looping on or off
+	virtual void setLooping(bool loop) { looping=loop; }
+
+	virtual void processEvent(const EventBase& e) {
+		ASSERTRET(e.getGeneratorID()==EventBase::motmanEGID,"Unknown event");
+		if(e==EventBase(EventBase::motmanEGID,msid,EventBase::deactivateETID)) {
+			msid=MotionManager::invalid_MC_ID;
+			if(looping) {
+				updateMS(filename);
+			}
+			postCompletionEvent(looping);
+		}
+	}
+
+	//! returns true if currently looping
+	virtual bool getLooping() { return looping; }
+
+	//! use this to access the MS that the MotionSequenceNode is using
+	virtual MotionManager::MC_ID getMSid() { return msid; }
+
+	//! use this to access the MS that the MotionSequenceNode is using
+	virtual MMAccessor<MotionSequenceMC<SIZE> > getMSAccessor() { return MMAccessor<MotionSequenceMC<SIZE> >(msid); }
+
+	//! returns true if #msid was created (and will be destroyed) by this MotionSequenceNode - false if assigned by setMsid()
+	virtual bool ownsMSid() { return msidIsMine; }
+
+protected:
+	//! resets the motion command and starts it playing
+	void updateMS(const std::string& file) {
+		if(msid==MotionManager::invalid_MC_ID) {
+			msid=motman->addPrunableMotion(SharedObject<MotionSequenceMC<SIZE> >(file.c_str()));
+			msidIsMine=true;
+		} else {
+			MMAccessor<MotionSequenceMC<SIZE> > ms(msid);
+			ms->clear();
+			ms->LoadFile(file.c_str());
+			ms->setTime(1);
+		}
+		filename=file;
+	}
+
+	MotionManager::MC_ID msid; //!< id of the motion command
+	bool msidIsMine; //!< true if this class created the current motion command (and therefore should delete it when done)
+	bool looping; //!< true if we should loop
+	std::string filename; //!< filename of current motion sequence
+};
+
+typedef MotionSequenceNode<TinyMotionSequenceMC::CAPACITY> TinyMotionSequenceNode; //!< streamlined access to the standard template sizes
+typedef MotionSequenceNode<SmallMotionSequenceMC::CAPACITY> SmallMotionSequenceNode; //!< streamlined access to the standard template sizes
+typedef MotionSequenceNode<MediumMotionSequenceMC::CAPACITY> MediumMotionSequenceNode; //!< streamlined access to the standard template sizes
+typedef MotionSequenceNode<LargeMotionSequenceMC::CAPACITY> LargeMotionSequenceNode; //!< streamlined access to the standard template sizes
+typedef MotionSequenceNode<XLargeMotionSequenceMC::CAPACITY> XLargeMotionSequenceNode; //!< streamlined access to the standard template sizes
+
+/*! @file
+ * @brief Describes MotionSequenceNode, a StateNode for playing a MotionSequence (and looping it if desired)
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/OutputNode.h ./Behaviors/Nodes/OutputNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/OutputNode.h	Fri Dec  3 19:10:42 2004
+++ ./Behaviors/Nodes/OutputNode.h	Fri Dec  3 19:10:42 2004
@@ -43,7 +43,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/PlayMotionSequenceNode.h ./Behaviors/Nodes/PlayMotionSequenceNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/PlayMotionSequenceNode.h	Tue Dec 21 16:49:50 2004
+++ ./Behaviors/Nodes/PlayMotionSequenceNode.h	Fri Jan 21 17:50:37 2005
@@ -2,134 +2,26 @@
 #ifndef INCLUDED_PlayMotionSequenceNode_h_
 #define INCLUDED_PlayMotionSequenceNode_h_
 
-#include "Behaviors/StateNode.h"
-#include "Motion/MotionManager.h"
-#include "Motion/MotionSequenceMC.h"
-
-//! A StateNode for playing a MotionSequence (and looping it if desired)
-/*! Eventually, i'd like to just build the looping functionality into
- *  MotionSequence, but in the mean time we have this. */
-template<unsigned int SIZE>
-class PlayMotionSequenceNode : public StateNode {
-public:
-	//!constructor
-	PlayMotionSequenceNode()
-		: StateNode("PlayMotionSequenceNode","PlayMotionSequenceNode"), msid(MotionManager::invalid_MC_ID), msidIsMine(false), looping(false), filename()
-	{}
-
-	//!constructor
-	PlayMotionSequenceNode(const std::string& nm, const std::string& file, bool loop=false)
-		: StateNode("PlayMotionSequenceNode",nm), msid(MotionManager::invalid_MC_ID), msidIsMine(false), looping(false), filename(file)
-	{
-		setLooping(loop);
-	}
-
-	virtual void setup() {}
-
-	virtual void DoStart() {
-		//std::cout << "PlayMotionSequenceNode::DoStart(); " << std::endl;
-		updateMS(filename);
-		erouter->addListener(this, EventBase::motmanEGID);//, msid, EventBase::deactivateETID);
-		StateNode::DoStart();
-	}
-
-	virtual void DoStop() {
-		//std::cout << "PlayMotionSequenceNode::DoStop(); " << std::endl;
-		erouter->removeListener(this);
-		motman->removeMotion(msid);
-		msid=MotionManager::invalid_MC_ID;
-		StateNode::DoStop();
-	}
-
-	virtual void teardown() {
-		if(msidIsMine) {
-			motman->removeMotion(msid);
-			msid=MotionManager::invalid_MC_ID;
-		}
-	}
-
-	/* not ready yet
-	// ! use this to force the PlayMotionSequenceNode to use a shared MS - set to MotionManager::invalid_MC_ID to reset to internally generated MS
-	virtual void setMSid(MotionManager::MC_ID id) {
-	if(msidIsMine) {
-	motman->removeMotion(msid);
-	msid=MotionManager::invalid_MC_ID;
-	}
-	msid=id;
-	msidIsMine=(id==MotionManager::invalid_MC_ID);
-	}
-	*/
-
-	//! sets the file to play
-	virtual void setFile(const std::string& file) {
-		if(isActive())
-			updateMS(file);
-		else
-			filename=file;
-	}
-
-	//! turns looping on or off
-	virtual void setLooping(bool loop) { looping=loop; }
-
-	virtual void processEvent(const EventBase& e) {
-		ASSERTRET(e.getGeneratorID()==EventBase::motmanEGID,"Unknown event");
-		if(e==EventBase(EventBase::motmanEGID,msid,EventBase::deactivateETID)) {
-			msid=MotionManager::invalid_MC_ID;
-			if(looping) {
-				updateMS(filename);
-			}
-			erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
-		}
-	}
-
-	//! returns true if currently looping
-	virtual bool getLooping() { return looping; }
-
-	//! use this to access the MS that the PlayMotionSequenceNode is using
-	virtual MotionManager::MC_ID getMSid() { return msid; }
-
-	//! use this to access the MS that the PlayMotionSequenceNode is using
-	virtual MMAccessor<MotionSequenceMC<SIZE> > getMSAccessor() { return MMAccessor<MotionSequenceMC<SIZE> >(msid); }
-
-	//! returns true if #msid was created (and will be destroyed) by this PlayMotionSequenceNode - false if assigned by setMsid()
-	virtual bool ownsMSid() { return msidIsMine; }
-
-protected:
-	//! resets the motion command and starts it playing
-	void updateMS(const std::string& file) {
-		if(msid==MotionManager::invalid_MC_ID) {
-			msid=motman->addPrunableMotion(SharedObject<MotionSequenceMC<SIZE> >(file.c_str()));
-			msidIsMine=true;
-		} else {
-			MMAccessor<MotionSequenceMC<SIZE> > ms(msid);
-			ms->clear();
-			ms->LoadFile(file.c_str());
-			ms->setTime(1);
-		}
-		filename=file;
-	}
+#warning PlayMotionSequenceNode has been deprecated, please use MotionSequenceNode instead.
 
-	MotionManager::MC_ID msid; //!< id of the motion command
-	bool msidIsMine; //!< true if this class created the current motion command (and therefore should delete it when done)
-	bool looping; //!< true if we should loop
-	std::string filename; //!< filename of current motion sequence
-};
+#include "MotionSequenceNode.h"
+typedef TinyMotionSequenceNode TinyPlayMotionSequenceNode; //!< @deprecated, use MotionSequenceNode directly
+typedef SmallMotionSequenceNode SmallPlayMotionSequenceNode; //!< @deprecated, use MotionSequenceNode directly
+typedef MediumMotionSequenceNode MediumPlayMotionSequenceNode; //!< @deprecated, use MotionSequenceNode directly
+typedef LargeMotionSequenceNode LargePlayMotionSequenceNode; //!< @deprecated, use MotionSequenceNode directly
+typedef XLargeMotionSequenceNode XLargePlayMotionSequenceNode; //!< @deprecated, use MotionSequenceNode directly
 
-typedef PlayMotionSequenceNode<TinyMotionSequenceMC::CAPACITY> TinyPlayMotionSequenceNode; //!< streamlined access to the standard template sizes
-typedef PlayMotionSequenceNode<SmallMotionSequenceMC::CAPACITY> SmallPlayMotionSequenceNode; //!< streamlined access to the standard template sizes
-typedef PlayMotionSequenceNode<MediumMotionSequenceMC::CAPACITY> MediumPlayMotionSequenceNode; //!< streamlined access to the standard template sizes
-typedef PlayMotionSequenceNode<LargeMotionSequenceMC::CAPACITY> LargePlayMotionSequenceNode; //!< streamlined access to the standard template sizes
-typedef PlayMotionSequenceNode<XLargeMotionSequenceMC::CAPACITY> XLargePlayMotionSequenceNode; //!< streamlined access to the standard template sizes
 
 /*! @file
- * @brief Describes PlayMotionSequenceNode, a StateNode for playing a MotionSequence (and looping it if desired)
+ * @brief Deprecated version of MotionSequenceNode
+ * @deprecated use MotionSequenceNode
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/SoundNode.h ./Behaviors/Nodes/SoundNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/SoundNode.h	Fri Dec  3 19:10:42 2004
+++ ./Behaviors/Nodes/SoundNode.h	Mon Jan 24 17:23:50 2005
@@ -49,7 +49,7 @@
   //! receive audioEGID status event and throw stateMachineEGID status event
   virtual void processEvent(const EventBase&) {
 		curplay_id = SoundManager::invalid_Play_ID;
-		erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
+		postCompletionEvent();
   }
 
   //! interrupts playing of the current sound
@@ -81,10 +81,10 @@
  * @author dst (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/TailWagNode.h ./Behaviors/Nodes/TailWagNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/TailWagNode.h	Mon Nov 15 17:22:36 2004
+++ ./Behaviors/Nodes/TailWagNode.h	Mon Jan 24 17:23:50 2005
@@ -34,7 +34,7 @@
 
   //! receive motmanEGID status event and throw stateMachineEGID status event - this doesn't ever actually happen for a TailWagMC, but just for completeness...
   virtual void processEvent(const EventBase&) {
-		erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
+		postCompletionEvent();
   }
 
   //! reveal the MotionCommand itself, use getMC_ID() instead if this node isActive().
@@ -51,10 +51,10 @@
  * @author dst, ejt (Creators)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkNode.h ./Behaviors/Nodes/WalkNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkNode.h	Fri Dec  3 19:10:42 2004
+++ ./Behaviors/Nodes/WalkNode.h	Mon Jan 24 17:23:50 2005
@@ -25,6 +25,12 @@
 		: StateNode("WalkNode",name), walkid(MotionManager::invalid_MC_ID), walkidIsMine(true), x(xvel), y(yvel), a(avel)
 	{}
 
+	//!destructor, check if we need to call our teardown
+	~WalkNode() {
+		if(issetup)
+			teardown();
+	}
+
 	//! sets the velocity of the walk
 	void setVelocity(float xvel, float yvel, float avel) {
 		x=xvel;
@@ -67,6 +73,7 @@
 			motman->removeMotion(walkid);
 			walkid=MotionManager::invalid_MC_ID;
 		}
+		StateNode::teardown();
 	}
 
 	//! use this to force the WalkNode to use a shared WalkMC - set to MotionManager::invalid_MC_ID to reset to internally generated walk
@@ -111,10 +118,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkToTargetNode.cc ./Behaviors/Nodes/WalkToTargetNode.cc
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkToTargetNode.cc	Sat Dec  4 23:47:53 2004
+++ ./Behaviors/Nodes/WalkToTargetNode.cc	Sat Dec  4 23:47:53 2004
@@ -74,7 +74,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkToTargetNode.h ./Behaviors/Nodes/WalkToTargetNode.h
--- ../Tekkotsu_2.2.2/Behaviors/Nodes/WalkToTargetNode.h	Wed Dec  8 14:05:50 2004
+++ ./Behaviors/Nodes/WalkToTargetNode.h	Wed Dec  8 14:05:50 2004
@@ -54,7 +54,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/StateNode.cc ./Behaviors/StateNode.cc
--- ../Tekkotsu_2.2.2/Behaviors/StateNode.cc	Fri Dec 17 00:50:56 2004
+++ ./Behaviors/StateNode.cc	Mon Jan 24 17:12:13 2005
@@ -3,15 +3,20 @@
 #include "Wireless/Wireless.h"
 
 /*! @deprecated, behavior constructors should take a name argument (which by default should be the name of the type of the class) */
-StateNode::StateNode() : BehaviorBase("StateNode"), parent(NULL), transitions(), issetup(false), retain(true), nodes() {}
+StateNode::StateNode() : BehaviorBase("StateNode"), parent(NULL), transitions(), issetup(false), retain(true), startedTime(0), nodes() {}
 
 StateNode::~StateNode() {
 	ASSERT(!isActive(), "Destructing while active?")
 	for(std::vector<Transition*>::iterator it=transitions.begin(); it!=transitions.end(); it++)
 		(*it)->RemoveReference();
 	if(issetup) {
-		for(std::vector<StateNode*>::iterator it=nodes.begin(); it!=nodes.end(); it++)
-			(*it)->RemoveReference();
+		teardown();
+		if(issetup) {
+			serr->printf("WARNING %s doesn't seem to call StateNode::teardown() in its\n"
+									 "        implementation of the function: issetup=%d, nodes.size()=%d\n"
+									 "        Attempting to recover...\n",getClassName().c_str(),issetup,nodes.size());
+			StateNode::teardown();
+		}
 	}
 }
 
@@ -32,7 +37,7 @@
 
 void StateNode::DoStart() {
   if ( parent == NULL && transitions.size() > 0 )
-    serr->printf("Warning! StateNode '%s' has transitions but no parent; you probably forgot to call addNode().\n",getName().c_str());
+    serr->printf("WARNING StateNode '%s' has transitions but no parent; you probably forgot to call addNode().\n",getName().c_str());
   BehaviorBase::DoStart();
   if(!issetup) {
     setup();
@@ -40,9 +45,7 @@
   }
   for(std::vector<Transition*>::iterator it=transitions.begin(); it!=transitions.end(); it++)
     if ( !(*it)->isActive()  ) (*it)->DoStart();
-  erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::activateETID,0,getName(),1);
-  if(parent!=NULL)
-    parent->transitionTo(this);
+  postStartEvent();
 }
 
 void StateNode::DoStop() {
@@ -53,23 +56,37 @@
 	for(std::vector<StateNode*>::iterator it=nodes.begin(); it!=nodes.end(); it++)
 		if((*it)->isActive())
 			(*it)->DoStop();
-	if(!retain) {
+	if(!retain && issetup) {
 		teardown();
-		issetup=false;
-		for(std::vector<StateNode*>::iterator it=nodes.begin(); it!=nodes.end(); it++)
-			(*it)->RemoveReference();
-		nodes.clear();
+		if(issetup) {
+			serr->printf("WARNING %s doesn't seem to call StateNode::teardown() in its\n"
+									 "        implementation of the function: issetup=%d, nodes.size()=%d\n"
+									 "        Attempting to recover...\n",getClassName().c_str(),issetup,nodes.size());
+			StateNode::teardown();
+		}
 	}
-	erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::deactivateETID,0,getName(),0);
+	postStopEvent();
 	BehaviorBase::DoStop();
 }
 
-void StateNode::transitionTo(StateNode*) {
-	// may want to throw a status event here
+void StateNode::teardown() {
+	for(std::vector<StateNode*>::iterator it=nodes.begin(); it!=nodes.end(); it++)
+		(*it)->RemoveReference();
+	nodes.clear();
+	issetup=false;
+	/*std::cout << "Teardown!!!!!!!!" << std::endl;*/
 }
 
-void StateNode::transitionFrom(StateNode*) {
-	// may want to throw a status event here
+void StateNode::postStartEvent() {
+	erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::activateETID,0,getName(),1);
+}
+
+void StateNode::postCompletionEvent(float magnitude/*=0*/) {
+	erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,get_time()-startedTime,getName(),magnitude);
+}
+
+void StateNode::postStopEvent() {
+	erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::deactivateETID,get_time()-startedTime,getName(),0);
 }
 
 /*! @file 
@@ -77,9 +94,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Behaviors/StateNode.h ./Behaviors/StateNode.h
--- ../Tekkotsu_2.2.2/Behaviors/StateNode.h	Fri Dec 17 00:50:56 2004
+++ ./Behaviors/StateNode.h	Mon Jan 24 17:12:13 2005
@@ -15,7 +15,7 @@
 	StateNode() __attribute__((deprecated));
 
 	//!constructor, pass a name to use
-	StateNode(const std::string& name) : BehaviorBase("StateNode",name), parent(NULL), transitions(), issetup(false), retain(true), nodes() {}
+	StateNode(const std::string& name) : BehaviorBase("StateNode",name), parent(NULL), transitions(), issetup(false), retain(true), startedTime(0), nodes() {}
 
 	//!destructor, removes references to its outgoing transitions (be careful of incoming ones - they're still around!), and calls RemoveReference() on subnodes
 	virtual ~StateNode();
@@ -44,27 +44,39 @@
 	//!Transitions should call this when you are entering the state, so it can enable its transitions
 	virtual void DoStart();
 
-	//!This is called by DoStart() when you should setup the network of subnodes
+	//!This is called by DoStart() when you should setup the network of subnodes (if any)
 	virtual void setup() {issetup=true;}
 
 	//!Transitions should call this when you are leaving the state, so it can disable its transitions
 	virtual void DoStop();
 	
 	//!This is called by DoStop() when you should destruct subnodes
-	virtual void teardown() { issetup=false; /*std::cout << "Teardown!!!!!!!!" << std::endl;*/ }
+	/*!Default implementation will take care of the subnodes and their
+	 * transitions, you only need to worry about any *other* memory
+	 * which may have been allocated.  If none, you may not need
+	 * implement this function at all. */
+	virtual void teardown();
 
 	//!returns #parent
 	virtual StateNode* getParent() const { return parent; }
 
 protected:
 	//!constructor, pass the class name and instance name to use 
-	StateNode(const std::string& classname, const std::string& name) : BehaviorBase(classname,name), parent(NULL), transitions(), issetup(false), retain(true), nodes() {}
+	StateNode(const std::string& classname, const std::string& name) : BehaviorBase(classname,name), parent(NULL), transitions(), issetup(false), retain(true), startedTime(0), nodes() {}
 
-	//!called by a subnode when it is being DoStart()'ed
-	virtual void transitionTo(StateNode* n);
+	//!will throw an activation event through stateMachineEGID, used when DoStart() is called
+	virtual void postStartEvent();
 
-	//!called by a subnode when it is being DoStop()'ed
-	virtual void transitionFrom(StateNode* n);
+	//!will throw a status event through stateMachineEGID to signal "completion" of the node
+	/*! "completion" is defined by your subclass - will mean different things to different
+	 *  nodes depending on the actions they are performing.  So call this yourself if there
+	 *  is a natural ending point for your state.
+	 * @param magnitude the value to use for EventBase::magnitude -- generally is 1 for status events, but since this is to signal completion, 0 (the default) may be more appropriate; if your node is doing something repetitive however, 1 (or the loop count) may be better */
+	virtual void postCompletionEvent(float magnitude=0);
+
+	//!will throw an deactivation event through stateMachineEGID, used when DoStop() is called
+	/* @param duration the value to use for EventBase::duration -- nice but not generally used */
+	virtual void postStopEvent();
 
 	//Node Stuff:
 	//! pointer to the machine that contains this node
@@ -77,6 +89,8 @@
 	bool issetup;
 	//! this is set to true if the network should be retained between activations.  Otherwise it's dereferenced upon DoStop(). (or at least RemoveReference() is called on subnodes)
 	bool retain;
+	//! the timestamp of last call to DoStart()
+	unsigned int startedTime;
 	//! vector of StateNodes, just so they can be dereferenced again on DoStop() (unless retained) or ~StateNode()
 	std::vector<StateNode*> nodes;
 
@@ -90,10 +104,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transition.cc ./Behaviors/Transition.cc
--- ../Tekkotsu_2.2.2/Behaviors/Transition.cc	Fri Dec 17 00:51:32 2004
+++ ./Behaviors/Transition.cc	Fri Dec 17 00:51:32 2004
@@ -63,7 +63,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transition.h ./Behaviors/Transition.h
--- ../Tekkotsu_2.2.2/Behaviors/Transition.h	Mon Nov 15 17:46:19 2004
+++ ./Behaviors/Transition.h	Mon Nov 15 17:46:19 2004
@@ -95,7 +95,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Entries ./Behaviors/Transitions/CVS/Entries
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Transitions/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,12 @@
+/CompareTrans.h/1.9/Mon Nov 15 22:46:19 2004//Ttekkotsu-2_3
+/CompletionTrans.h/1.9/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/EventTrans.h/1.6/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/LostTargetTrans.h/1.4/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/NullTrans.h/1.8/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/RandomTrans.cc/1.2/Sun Nov 28 05:58:38 2004//Ttekkotsu-2_3
+/RandomTrans.h/1.3/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/SmoothCompareTrans.h/1.11/Tue Dec 14 03:24:57 2004//Ttekkotsu-2_3
+/TimeOutTrans.h/1.15/Sat Dec  4 00:11:19 2004//Ttekkotsu-2_3
+/VisualTargetCloseTrans.h/1.14/Mon Nov 15 22:46:19 2004//Ttekkotsu-2_3
+/VisualTargetTrans.h/1.13/Mon Nov 15 22:46:19 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Repository ./Behaviors/Transitions/CVS/Repository
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Transitions/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Behaviors/Transitions
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Root ./Behaviors/Transitions/CVS/Root
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Transitions/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Tag ./Behaviors/Transitions/CVS/Tag
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Behaviors/Transitions/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CompareTrans.h ./Behaviors/Transitions/CompareTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CompareTrans.h	Mon Nov 15 17:46:19 2004
+++ ./Behaviors/Transitions/CompareTrans.h	Mon Nov 15 17:46:19 2004
@@ -95,7 +95,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/CompletionTrans.h ./Behaviors/Transitions/CompletionTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/CompletionTrans.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Transitions/CompletionTrans.h	Wed Dec 22 20:47:07 2004
@@ -72,7 +72,7 @@
  * @author dst (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/EventTrans.h ./Behaviors/Transitions/EventTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/EventTrans.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Transitions/EventTrans.h	Wed Dec 22 20:47:07 2004
@@ -68,7 +68,7 @@
  * @author dst (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/LostTargetTrans.h ./Behaviors/Transitions/LostTargetTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/LostTargetTrans.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Transitions/LostTargetTrans.h	Tue Jan  4 14:51:41 2005
@@ -6,9 +6,7 @@
 #include "Events/VisionObjectEvent.h"
 
 
-//! Causes a transition if the target has not been seen @e minframe times within
-//! @e delay milliseconds.
-
+//! Causes a transition if the target has not been seen @e minframe times within @e delay milliseconds.
 class LostTargetTrans : public TimeOutTrans {
  public:
 
@@ -64,3 +62,14 @@
 };
 
 #endif
+
+/*! @file
+ * @brief Defines LostTargetTrans, which causes a transition if the target has not been seen @e minframe times within @e delay milliseconds.
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/NullTrans.h ./Behaviors/Transitions/NullTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/NullTrans.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Transitions/NullTrans.h	Wed Dec 22 20:47:07 2004
@@ -40,7 +40,7 @@
  * @author dst (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/RandomTrans.h ./Behaviors/Transitions/RandomTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/RandomTrans.h	Wed Dec 22 20:47:07 2004
+++ ./Behaviors/Transitions/RandomTrans.h	Tue Jan  4 14:51:41 2005
@@ -21,10 +21,12 @@
   //! constructor
   RandomTrans(const std::string& name, StateNode* destination, float weight=1);
 
-  //! Add a destination node with an optional weight.
+  //! Add a destination node with weight==1 (see addDestination(StateNode* dest, float weight) to specify a different weight)
   virtual void RandomTrans::addDestination(StateNode* destination) {
-    addDestination(destination,1); }
+    addDestination(destination,1);
+	}
 
+  //! Add a destination node with an specified weight (other version of addDestination() assumes weight==1)
   void addDestination(StateNode* destination, float weight);
 
   //! Firing this type of transition activates one destination node at random, 
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/SmoothCompareTrans.h ./Behaviors/Transitions/SmoothCompareTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/SmoothCompareTrans.h	Mon Dec 13 22:24:57 2004
+++ ./Behaviors/Transitions/SmoothCompareTrans.h	Mon Dec 13 22:24:57 2004
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/TimeOutTrans.h ./Behaviors/Transitions/TimeOutTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/TimeOutTrans.h	Fri Dec  3 19:11:19 2004
+++ ./Behaviors/Transitions/TimeOutTrans.h	Fri Dec  3 19:11:19 2004
@@ -86,7 +86,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/VisualTargetCloseTrans.h ./Behaviors/Transitions/VisualTargetCloseTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/VisualTargetCloseTrans.h	Mon Nov 15 17:46:19 2004
+++ ./Behaviors/Transitions/VisualTargetCloseTrans.h	Mon Nov 15 17:46:19 2004
@@ -54,7 +54,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Behaviors/Transitions/VisualTargetTrans.h ./Behaviors/Transitions/VisualTargetTrans.h
--- ../Tekkotsu_2.2.2/Behaviors/Transitions/VisualTargetTrans.h	Mon Nov 15 17:46:19 2004
+++ ./Behaviors/Transitions/VisualTargetTrans.h	Mon Nov 15 17:46:19 2004
@@ -62,7 +62,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/CVS/Entries ./CVS/Entries
--- ../Tekkotsu_2.2.2/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,18 @@
+/INSTALL/1.1/Sat Aug 23 23:25:37 2003//Ttekkotsu-2_3
+/Makefile/1.30/Tue Dec 21 23:53:12 2004//Ttekkotsu-2_3
+/README/1.7/Thu Apr  1 00:16:51 2004//Ttekkotsu-2_3
+/entry.h/1.2/Sat Jul 17 03:38:01 2004//Ttekkotsu-2_3
+/license.txt/1.1/Thu Apr  1 00:16:51 2004//Ttekkotsu-2_3
+D/Behaviors////
+D/Events////
+D/MMCombo////
+D/Motion////
+D/RemoteProcess////
+D/Shared////
+D/SoundPlay////
+D/TinyFTPD////
+D/Vision////
+D/Wireless////
+D/docs////
+D/project////
+D/tools////
diff -urdN ../Tekkotsu_2.2.2/CVS/Repository ./CVS/Repository
--- ../Tekkotsu_2.2.2/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./CVS/Repository	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+Tekkotsu
diff -urdN ../Tekkotsu_2.2.2/CVS/Root ./CVS/Root
--- ../Tekkotsu_2.2.2/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./CVS/Root	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/CVS/Tag ./CVS/Tag
--- ../Tekkotsu_2.2.2/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./CVS/Tag	Fri Jan 28 20:12:53 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Events/CVS/Entries ./Events/CVS/Entries
--- ../Tekkotsu_2.2.2/Events/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Events/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,20 @@
+/DataEvent.h/1.2/Sun Jan 18 10:16:57 2004//Ttekkotsu-2_3
+/EventBase.cc/1.24/Wed Dec 22 23:54:07 2004//Ttekkotsu-2_3
+/EventBase.h/1.31/Wed Dec 22 23:12:59 2004//Ttekkotsu-2_3
+/EventGeneratorBase.cc/1.3/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/EventGeneratorBase.h/1.8/Mon Dec 20 21:47:59 2004//Ttekkotsu-2_3
+/EventListener.h/1.2/Thu Sep 25 15:27:10 2003//Ttekkotsu-2_3
+/EventRouter.cc/1.16/Sat Jan 29 00:01:57 2005//Ttekkotsu-2_3
+/EventRouter.h/1.18/Thu Jan 27 20:15:32 2005//Ttekkotsu-2_3
+/EventTranslator.cc/1.8/Sat Jan 29 00:02:55 2005//Ttekkotsu-2_3
+/EventTranslator.h/1.5/Thu Sep 16 18:35:12 2004//Ttekkotsu-2_3
+/EventTrapper.h/1.2/Thu Sep 25 15:27:10 2003//Ttekkotsu-2_3
+/FilterBankEvent.h/1.9/Wed Dec 22 23:12:59 2004//Ttekkotsu-2_3
+/LocomotionEvent.cc/1.1/Wed Sep  1 21:30:57 2004//Ttekkotsu-2_3
+/LocomotionEvent.h/1.6/Wed Sep  1 21:30:57 2004//Ttekkotsu-2_3
+/SegmentedColorFilterBankEvent.h/1.2/Sun Jan 18 10:16:57 2004//Ttekkotsu-2_3
+/TextMsgEvent.cc/1.1/Wed Sep  1 21:30:57 2004//Ttekkotsu-2_3
+/TextMsgEvent.h/1.10/Wed Sep  1 21:30:57 2004//Ttekkotsu-2_3
+/VisionObjectEvent.cc/1.5/Wed Jan 12 21:48:17 2005//Ttekkotsu-2_3
+/VisionObjectEvent.h/1.5/Wed Jan 12 21:48:17 2005//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Events/CVS/Repository ./Events/CVS/Repository
--- ../Tekkotsu_2.2.2/Events/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Events/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Events
diff -urdN ../Tekkotsu_2.2.2/Events/CVS/Root ./Events/CVS/Root
--- ../Tekkotsu_2.2.2/Events/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Events/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Events/CVS/Tag ./Events/CVS/Tag
--- ../Tekkotsu_2.2.2/Events/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Events/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Events/DataEvent.h ./Events/DataEvent.h
--- ../Tekkotsu_2.2.2/Events/DataEvent.h	Sun Jan 18 05:16:57 2004
+++ ./Events/DataEvent.h	Sun Jan 18 05:16:57 2004
@@ -32,7 +32,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventBase.cc ./Events/EventBase.cc
--- ../Tekkotsu_2.2.2/Events/EventBase.cc	Wed Dec 22 18:54:07 2004
+++ ./Events/EventBase.cc	Wed Dec 22 18:54:07 2004
@@ -180,7 +180,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventBase.h ./Events/EventBase.h
--- ../Tekkotsu_2.2.2/Events/EventBase.h	Wed Dec 22 18:12:59 2004
+++ ./Events/EventBase.h	Wed Dec 22 18:12:59 2004
@@ -178,7 +178,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventGeneratorBase.cc ./Events/EventGeneratorBase.cc
--- ../Tekkotsu_2.2.2/Events/EventGeneratorBase.cc	Tue Nov  9 15:01:49 2004
+++ ./Events/EventGeneratorBase.cc	Tue Nov  9 15:01:49 2004
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventGeneratorBase.h ./Events/EventGeneratorBase.h
--- ../Tekkotsu_2.2.2/Events/EventGeneratorBase.h	Mon Dec 20 16:47:59 2004
+++ ./Events/EventGeneratorBase.h	Mon Dec 20 16:47:59 2004
@@ -87,7 +87,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventListener.h ./Events/EventListener.h
--- ../Tekkotsu_2.2.2/Events/EventListener.h	Thu Sep 25 11:27:10 2003
+++ ./Events/EventListener.h	Thu Sep 25 11:27:10 2003
@@ -20,7 +20,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventRouter.cc ./Events/EventRouter.cc
--- ../Tekkotsu_2.2.2/Events/EventRouter.cc	Wed Dec 22 18:12:59 2004
+++ ./Events/EventRouter.cc	Fri Jan 28 19:01:57 2005
@@ -96,6 +96,9 @@
 }
 
 void EventRouter::addListener(EventListener* el, EventBase::EventGeneratorID_t egid) {
+	if(egid==EventBase::timerEGID)
+		printf("WARNING: The use of addListener with timerEGID is deprecated,\n"
+								 "         please see http://bugs.tekkotsu.org/show_bug.cgi?id=89\n");
 	bool hadListener=hasListeners(egid);
 	listeners.addMapping(el,egid); 
 	if(!hadListener)
@@ -104,6 +107,9 @@
 		postEvent(new EventBase(EventBase::erouterEGID,egid,EventBase::statusETID,0,EventBase::EventGeneratorNames[egid],1));
 }
 void EventRouter::addListener(EventListener* el, EventBase::EventGeneratorID_t egid, unsigned int sid) {
+	if(egid==EventBase::timerEGID)
+		printf("WARNING: The use of addListener with timerEGID is deprecated,\n"
+								 "         please see http://bugs.tekkotsu.org/show_bug.cgi?id=89\n");
 	bool hadListener=hasListeners(egid);
 	for(unsigned int et=0; et<EventBase::numETIDs; et++)
 		listeners.addMapping(el,egid,sid,(EventBase::EventTypeID_t)et);
@@ -113,6 +119,9 @@
 		postEvent(new EventBase(EventBase::erouterEGID,egid,EventBase::statusETID,0,EventBase::EventGeneratorNames[egid],1));
 }
 void EventRouter::addListener(EventListener* el, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid) {
+	if(egid==EventBase::timerEGID)
+		printf("WARNING: The use of addListener with timerEGID is deprecated,\n"
+								 "         please see http://bugs.tekkotsu.org/show_bug.cgi?id=89\n");
 	bool hadListener=hasListeners(egid);
 	listeners.addMapping(el,egid,sid,etid);
 	if(!hadListener)
@@ -121,9 +130,11 @@
 		postEvent(new EventBase(EventBase::erouterEGID,egid,EventBase::statusETID,0,EventBase::EventGeneratorNames[egid],1));
 }
 void EventRouter::addListener(EventListener* el, const EventBase& e) {
-	if(e.getGeneratorID()==EventBase::timerEGID)
+	if(e.getGeneratorID()==EventBase::timerEGID) {
+		printf("WARNING: The use of addListener with timerEGID is deprecated,\n"
+								 "         please see http://bugs.tekkotsu.org/show_bug.cgi?id=89\n");
 		addTimer(el,e.getSourceID(),e.getDuration());
-	else {
+	} else {
 		bool hadListener=hasListeners(e.getGeneratorID());
 		listeners.addMapping(el,e.getGeneratorID(),e.getSourceID(),e.getTypeID());
 		if(!hadListener)
@@ -504,8 +515,13 @@
 }
 
 bool EventRouter::EventMapper::verifyMapping(void * listener, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid) {
-	// first get all the filtered subscribers (tricky!)
-	std::vector<void*>* elv=NULL;
+	// first check the 'all events' subscribers
+	std::vector<void*>* elv=&allevents[egid];
+	for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+		if(*elit==listener)
+			return true;
+	
+	// then check all the filtered subscribers (tricky!)
 	SIDtoListenerVectorMap_t* sidtovm=filteredevents[egid][etid];
 	if(sidtovm!=NULL) { // if there's a map (at least one EL is filtering on this EGID and ETID)
 		SIDtoListenerVectorMap_t::iterator mapit=sidtovm->find(sid); // find listening for this source id
@@ -516,26 +532,110 @@
 					return true;
 		}
 	}
-	// now get the 'all events' subscribers
-	elv=&allevents[egid];
+
+	// if we haven't found it, doesn't exist:
+	return false;
+}
+
+bool EventRouter::EventMapper::verifyMappingAll(void* listener, EventBase::EventGeneratorID_t egid) {
+	std::vector<void*>* elv=&allevents[egid];
 	for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
 		if(*elit==listener)
 			return true;
+	// if not in the all listeners, can't be listening for *every* source id
+	return false;
+}
 
-	// if we haven't found it, doesn't exist:
+bool EventRouter::EventMapper::verifyMappingAny(void* listener, EventBase::EventGeneratorID_t egid) {
+	// first check the 'all events' subscribers
+	std::vector<void*>* elv=&allevents[egid];
+	for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+		if(*elit==listener)
+			return true;
+	
+	// then check all the filtered subscribers (tricky!)
+	for(unsigned int et=0; et<EventBase::numETIDs; et++) {
+		SIDtoListenerVectorMap_t* sidtovm=filteredevents[egid][et];
+		if(sidtovm!=NULL) { // if there's a map (at least one EL is filtering on this EGID and ETID)
+			SIDtoListenerVectorMap_t::iterator mapit=sidtovm->begin(); // for each of the source ids
+			for(;mapit!=sidtovm->end();mapit++) {
+				elv=&(*mapit).second; // now go through them all
+				for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+					if(*elit==listener)
+						return true;
+			}
+		}
+	}
+
+	// if we haven't found any, none exist:
 	return false;
 }
 
+bool EventRouter::EventMapper::verifyMappingAll(void* listener, EventBase::EventGeneratorID_t egid, unsigned int sid) {
+	// first check the 'all events' subscribers
+	std::vector<void*>* elv=&allevents[egid];
+	for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+		if(*elit==listener)
+			return true;
+	
+	// then check all the filtered subscribers (tricky!)
+	// must be found in ALL etids
+	for(unsigned int et=0; et<EventBase::numETIDs; et++) {
+		SIDtoListenerVectorMap_t* sidtovm=filteredevents[egid][et];
+		if(sidtovm==NULL)
+			return false;
+		// there's a map (at least one EL is filtering on this EGID and ETID)
+		SIDtoListenerVectorMap_t::iterator mapit=sidtovm->find(sid); // find listening for this source id
+		if(mapit==sidtovm->end())
+			return false;
+		// there's at least one is filtering on this sourceID as well
+		elv=&(*mapit).second; // now go through them all
+		std::vector<void*>::iterator elit=elv->begin();
+		while(elit!=elv->end() && *elit!=listener)
+			elit++;
+		if(elit==elv->end())
+			return false;
+		//if we didn't return false, we found a match... continue checking other ETIDs
+	}
+
+	// we only got here if we *did* find listener in each of the ETIDs
+	return true;
+}
+
+bool EventRouter::EventMapper::verifyMappingAny(void* listener, EventBase::EventGeneratorID_t egid, unsigned int sid) {
+	// first check the 'all events' subscribers
+	std::vector<void*>* elv=&allevents[egid];
+	for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+		if(*elit==listener)
+			return true;
+	
+	// then check all the filtered subscribers (tricky!)
+	for(unsigned int et=0; et<EventBase::numETIDs; et++) {
+		SIDtoListenerVectorMap_t* sidtovm=filteredevents[egid][et];
+		if(sidtovm!=NULL) { // if there's a map (at least one EL is filtering on this EGID and ETID)
+			SIDtoListenerVectorMap_t::iterator mapit=sidtovm->find(sid); // find listening for this source id
+			if(mapit!=sidtovm->end()) { // if there's at least one is filtering on this sourceID as well
+				elv=&(*mapit).second; // now go through them all
+				for(std::vector<void*>::iterator elit=elv->begin(); elit!=elv->end(); elit++)
+					if(*elit==listener)
+						return true;
+			}
+		}
+	}
+
+	// if we haven't found it, doesn't exist:
+	return false;
+}
 
 /*! @file
  * @brief Implements EventRouter class, for distribution and trapping of events to listeners
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 
diff -urdN ../Tekkotsu_2.2.2/Events/EventRouter.h ./Events/EventRouter.h
--- ../Tekkotsu_2.2.2/Events/EventRouter.h	Wed Dec 22 18:54:41 2004
+++ ./Events/EventRouter.h	Thu Jan 27 15:15:32 2005
@@ -86,10 +86,31 @@
 	void processEvent(const EventBase& e); //!< forces unbuffered - sends event *now*.  Will clear the buffer first if needed to ensure proper event ordering
 	//@}
 
-	//!@name Listener Detection
-	/*!@brief <b>counts both listeners and trappers</b>, so stuff can tell if it even needs to bother generating an event...*/
-	/* ... if a tree falls in a forest, and there's no one around to see it, does it make a sound?\n
-		 ... if Vision sees a ball in an image, and there's no listeners, does it make an event? ;) */
+	//!@name Listener/Trapper Recall
+	//! returns true if the specified listener/trapper would receive any events that match the specified criteria
+	bool isListeningAny(EventListener* el, EventBase::EventGeneratorID_t egid) { return listeners.verifyMappingAny(el,egid); }
+	bool isListeningAny(EventListener* el, EventBase::EventGeneratorID_t egid, unsigned int sid) { return listeners.verifyMappingAny(el,egid,sid); }
+	bool isListeningAll(EventListener* el, EventBase::EventGeneratorID_t egid) { return listeners.verifyMappingAll(el,egid); }
+	bool isListeningAll(EventListener* el, EventBase::EventGeneratorID_t egid, unsigned int sid) { return listeners.verifyMappingAll(el,egid,sid); }
+	bool isListening(EventListener* el, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid) { return listeners.verifyMapping(el,egid,sid,etid); }
+	bool isListening(EventListener* el, const EventBase& e) { return listeners.verifyMapping(el,e.getGeneratorID(),e.getSourceID(),e.getTypeID()); }
+	bool isTrappingAny(EventTrapper* el, EventBase::EventGeneratorID_t egid) { return trappers.verifyMappingAny(el,egid); }
+	bool isTrappingAny(EventTrapper* el, EventBase::EventGeneratorID_t egid, unsigned int sid) { return trappers.verifyMappingAny(el,egid,sid); }
+	bool isTrappingAll(EventTrapper* el, EventBase::EventGeneratorID_t egid) { return trappers.verifyMappingAll(el,egid); }
+	bool isTrappingAll(EventTrapper* el, EventBase::EventGeneratorID_t egid, unsigned int sid) { return trappers.verifyMappingAll(el,egid,sid); }
+	bool isTrapping(EventTrapper* el, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid) { return trappers.verifyMapping(el,egid,sid,etid); }
+	bool isTrapping(EventTrapper* el, const EventBase& e) { return trappers.verifyMapping(el,e.getGeneratorID(),e.getSourceID(),e.getTypeID()); }
+	//@}
+	
+	//!@name Listener/Trapper Detection
+	/*!@brief <b>counts both listeners and trappers</b>, so generators can tell if it even needs to bother generating an event...*/
+	/* Generators can also subscribe to the EventBase::erouterEGID event stream if
+	 * they wish to be notified when they gain or lose listeners (particularly the
+	 * first or last).\n
+	 * ... if a tree falls in a forest, and there's no one around to see it, does
+	 * it make a sound?\n
+	 * ... if Vision sees a ball in an image, and there's no listeners, does it
+	 * make an event? ;) */
 	bool hasListeners(EventBase::EventGeneratorID_t egid) { return (egid==EventBase::timerEGID) ? timers.size()>0 : trappers.hasMapping(egid) || listeners.hasMapping(egid); }
 	bool hasListeners(EventBase::EventGeneratorID_t egid, unsigned int sid) { return (egid==EventBase::timerEGID) ? timers.size()>0 : trappers.hasMapping(egid,sid) || listeners.hasMapping(egid,sid); }
 	bool hasListeners(EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid) { return (egid==EventBase::timerEGID) ? timers.size()>0 : trappers.hasMapping(egid,sid,etid) || listeners.hasMapping(egid,sid,etid); }
@@ -271,6 +292,20 @@
 		 *  was in the queue originally. */
 		bool verifyMapping(void * listener, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid);
 
+		//! Needed to complete EventRouter::isListening suite
+		/*! Only checks #allevents */
+		bool verifyMappingAll(void * listener, EventBase::EventGeneratorID_t egid);
+		//! Needed to complete EventRouter::isListening suite
+		/*! Checks both #allevents and #filtered events */
+		bool verifyMappingAny(void * listener, EventBase::EventGeneratorID_t egid);
+
+		//! Needed to complete EventRouter::isListening suite
+		/*! Checks both #allevents and #filteredevents, must be found in all */
+		bool verifyMappingAll(void * listener, EventBase::EventGeneratorID_t egid, unsigned int sid);
+		//! Needed to complete EventRouter::isListening suite
+		/*! Checks both #allevents and #filteredevents, can be found in either */
+		bool verifyMappingAny(void * listener, EventBase::EventGeneratorID_t egid, unsigned int sid);
+
 	protected:
 		//! a mapping from source IDs (unsigned ints), each to a vector of pointers to listeners
 		/*! main use in filteredevents @see filteredevents */
@@ -299,10 +334,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Events/EventTranslator.cc ./Events/EventTranslator.cc
--- ../Tekkotsu_2.2.2/Events/EventTranslator.cc	Thu Oct 14 19:02:35 2004
+++ ./Events/EventTranslator.cc	Fri Jan 28 19:02:55 2005
@@ -23,7 +23,7 @@
 	} else if(dynamic_cast<const TextMsgEvent*>(&event)!=NULL) {
 		type=TextMsgEvent_ID;
 	} else {
-		ASSERT(dynamic_cast<const EventBase*>(&event)!=NULL,"stupid OS");
+		ASSERT(dynamic_cast<const EventBase*>(&event)!=NULL,"stupid OS/compiler/linker/whatever");
 		type=EventBase_ID;
 	}
 	void* buf=q->reserve(sizeof(TypeID_t)+len);
@@ -52,32 +52,42 @@
 	TypeID_t type=*reinterpret_cast<const TypeID_t*>(entry);
 	const char* buf=reinterpret_cast<const char*>(entry)+sizeof(TypeID_t);
 	size-=sizeof(TypeID_t);
+	EventBase * evt=NULL;
 	switch(type) {
 	case LocomotionEvent_ID: {
-		LocomotionEvent * loco=new LocomotionEvent;
-		unsigned int err=loco->LoadBuffer(buf,size);
-		ASSERT(err!=0,"bad load");
-		erouter->postEvent(loco);
+		evt=new LocomotionEvent;
 	} break;
 	case VisionObjectEvent_ID: {
-		VisionObjectEvent * vision=new VisionObjectEvent;
-		unsigned int err=vision->LoadBuffer(buf,size);
-		ASSERT(err!=0,"bad load");
-		erouter->postEvent(vision);
+		evt=new VisionObjectEvent;
 	} break;
 	case TextMsgEvent_ID: {
-		TextMsgEvent * text=new TextMsgEvent;
-		unsigned int err=text->LoadBuffer(buf,size);
-		ASSERT(err!=0,"bad load");
-		erouter->postEvent(text);
+		evt=new TextMsgEvent;
 	} break;
 	case EventBase_ID: {
-		EventBase * event=new EventBase;
-		unsigned int err=event->LoadBuffer(buf,size);
-		ASSERT(err!=0,"bad load");
-		erouter->postEvent(event);
+		evt=new EventBase;
 	} break;
+	//no default case because we want
+	//a compiler warning if we miss one
 	}
+	ASSERTRET(evt!=NULL,"Unrecognized entry type");
+	unsigned int err=evt->LoadBuffer(buf,size);
+	if(err==0) {
+		std::cout<<"ERROR: type="<<type<< " len="<<size<<std::endl;
+		for(unsigned int i=0; i<size; i++) {
+			printf("%hx",buf[i]);
+			if(i%10==0)
+				printf("\n");
+			else if(i%4==0)
+				printf(" ");
+		}
+		std::cout << "This is a rare bug we are trying to track down.\n"
+			"Please email a brief message containing the above\n"
+			"hex dump to info@tekkotsu.org.  Thank you!" << std::endl;
+	}
+	ASSERTRET(err!=0,"bad load");
+	ASSERTRET(evt->getGeneratorID()<EventBase::numEGIDs && evt->getTypeID()<EventBase::numETIDs,
+						"invalid EGID "<<evt->getGeneratorID()<<" or ETID "<<evt->getTypeID());
+	erouter->postEvent(evt);
 }
 
 
@@ -86,9 +96,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Events/EventTranslator.h ./Events/EventTranslator.h
--- ../Tekkotsu_2.2.2/Events/EventTranslator.h	Thu Sep 16 14:35:12 2004
+++ ./Events/EventTranslator.h	Thu Sep 16 14:35:12 2004
@@ -62,7 +62,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/EventTrapper.h ./Events/EventTrapper.h
--- ../Tekkotsu_2.2.2/Events/EventTrapper.h	Thu Sep 25 11:27:10 2003
+++ ./Events/EventTrapper.h	Thu Sep 25 11:27:10 2003
@@ -26,7 +26,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/FilterBankEvent.h ./Events/FilterBankEvent.h
--- ../Tekkotsu_2.2.2/Events/FilterBankEvent.h	Wed Dec 22 18:12:59 2004
+++ ./Events/FilterBankEvent.h	Wed Dec 22 18:12:59 2004
@@ -58,7 +58,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/LocomotionEvent.cc ./Events/LocomotionEvent.cc
--- ../Tekkotsu_2.2.2/Events/LocomotionEvent.cc	Wed Sep  1 17:30:57 2004
+++ ./Events/LocomotionEvent.cc	Wed Sep  1 17:30:57 2004
@@ -60,7 +60,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/LocomotionEvent.h ./Events/LocomotionEvent.h
--- ../Tekkotsu_2.2.2/Events/LocomotionEvent.h	Wed Sep  1 17:30:57 2004
+++ ./Events/LocomotionEvent.h	Wed Sep  1 17:30:57 2004
@@ -45,7 +45,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/SegmentedColorFilterBankEvent.h ./Events/SegmentedColorFilterBankEvent.h
--- ../Tekkotsu_2.2.2/Events/SegmentedColorFilterBankEvent.h	Sun Jan 18 05:16:57 2004
+++ ./Events/SegmentedColorFilterBankEvent.h	Sun Jan 18 05:16:57 2004
@@ -69,7 +69,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/TextMsgEvent.cc ./Events/TextMsgEvent.cc
--- ../Tekkotsu_2.2.2/Events/TextMsgEvent.cc	Wed Sep  1 17:30:57 2004
+++ ./Events/TextMsgEvent.cc	Wed Sep  1 17:30:57 2004
@@ -54,7 +54,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/TextMsgEvent.h ./Events/TextMsgEvent.h
--- ../Tekkotsu_2.2.2/Events/TextMsgEvent.h	Wed Sep  1 17:30:57 2004
+++ ./Events/TextMsgEvent.h	Wed Sep  1 17:30:57 2004
@@ -35,7 +35,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Events/VisionObjectEvent.cc ./Events/VisionObjectEvent.cc
--- ../Tekkotsu_2.2.2/Events/VisionObjectEvent.cc	Wed Sep  1 17:30:57 2004
+++ ./Events/VisionObjectEvent.cc	Wed Jan 12 16:48:17 2005
@@ -1,12 +1,14 @@
 #include "VisionObjectEvent.h"
 #include <sstream>
 
+// Changed 'getDescription' to show BB and area info in EventLogger. Change functions to add new parameters (BB and area) to buffer
+
 std::string
 VisionObjectEvent::getDescription(bool showTypeSpecific/*=true*/, unsigned int verbosity/*=0*/) const {
 	if(!showTypeSpecific)
 		return EventBase::getDescription(showTypeSpecific,verbosity);
 	std::ostringstream logdata;
-	logdata << EventBase::getDescription(showTypeSpecific,verbosity) << '\t' << _cenX << '\t' << _cenY;
+	logdata << EventBase::getDescription(showTypeSpecific,verbosity) << '\t' << _x1 <<  '\t' <<_x2 <<'\t' <<_y1 <<'\t' <<_y2 ;
 	return logdata.str();
 }
 
@@ -14,10 +16,10 @@
 VisionObjectEvent::getBinSize() const {
 	unsigned int used=EventBase::getBinSize();
 	used+=creatorSize("EventBase::VisionObjectEvent");
-	used+=sizeof(_cenX);
-	used+=sizeof(_cenY);
-	//used+=sizeof(_distance);
-	//used+=sizeof(_property);
+	used+=sizeof(_x1);
+	used+=sizeof(_x2);
+	used+=sizeof(_y1);
+	used+=sizeof(_y2);
 	return used;
 }
 
@@ -29,14 +31,14 @@
 	len-=used; buf+=used;
 	if(0==(used=checkCreator("EventBase::VisionObjectEvent",buf,len,true))) return 0;
 	len-=used; buf+=used;
-	if(0==(used=decode(_cenX,buf,len))) return 0;
-	len-=used; buf+=used;
-	if(0==(used=decode(_cenY,buf,len))) return 0;
-	len-=used; buf+=used;
-	//if(0==(used=decode(_distance,buf,len))) return 0;
-	//len-=used; buf+=used;
-	//if(0==(used=decode(_property,buf,len))) return 0;
-	//len-=used; buf+=used;
+	if(0==(used=decode(_x1,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=decode(_x2,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=decode(_y1,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=decode(_y2,buf,len))) return 0;
+	len-=used; buf+=used;	
 	return origlen-len;	
 }
 
@@ -48,14 +50,25 @@
 	len-=used; buf+=used;
 	if(0==(used=saveCreator("EventBase::VisionObjectEvent",buf,len))) return 0;
 	len-=used; buf+=used;
-	if(0==(used=encode(_cenX,buf,len))) return 0;
-	len-=used; buf+=used;
-	if(0==(used=encode(_cenY,buf,len))) return 0;
-	len-=used; buf+=used;
-	//if(0==(used=encode(_distance,buf,len))) return 0;
-	//len-=used; buf+=used;
-	//if(0==(used=encode(_property,buf,len))) return 0;
-	//len-=used; buf+=used;
+	if(0==(used=encode(_x1,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=encode(_x2,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=encode(_y1,buf,len))) return 0;
+	len-=used; buf+=used;	
+	if(0==(used=encode(_y2,buf,len))) return 0;
+	len-=used; buf+=used;	
 	return origlen-len;
 }
 
+/*! @file
+ * @brief Implements VisionObjectEvent, which provides information about objects recognized in the camera image
+ * @author alokl (Creator)
+ * @author Ignacio Herrero Reder <nhr at dte uma es> (VisionObjectInfo Boundary Box - bug 74)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
diff -urdN ../Tekkotsu_2.2.2/Events/VisionObjectEvent.h ./Events/VisionObjectEvent.h
--- ../Tekkotsu_2.2.2/Events/VisionObjectEvent.h	Wed Sep  1 17:30:57 2004
+++ ./Events/VisionObjectEvent.h	Wed Jan 12 16:48:17 2005
@@ -6,27 +6,57 @@
 
 //! Extends EventBase to also include location in the visual field and distance (though distance is not implimented yet)
 class VisionObjectEvent : public EventBase {
- public:
+public:
 	//! Constructor
-  VisionObjectEvent() : EventBase(EventBase::visObjEGID,(unsigned int)-1,EventBase::statusETID,0),_cenX(0),_cenY(0)/*,_distance(),_property(-1)*/ {}
+  VisionObjectEvent()
+		: EventBase(EventBase::visObjEGID,(unsigned int)-1,EventBase::statusETID,0),_x1(0),_x2(0),_y1(0),_y2(0),
+			_clipLeft(false), _clipRight(false), _clipTop(false), _clipBottom(false)
+	{}
+	
 	//! Constructor, pass a type id and source id
-  VisionObjectEvent(EventTypeID_t tid, unsigned int sid) : EventBase(EventBase::visObjEGID,sid,tid,0),_cenX(0),_cenY(0)/*_distance(),_property(-1)*/ {}
-	//! Constructor, pass the type id, source id, center X and center Y
-  VisionObjectEvent(EventTypeID_t tid, unsigned int sid, float cenX, float cenY) : EventBase(EventBase::visObjEGID,sid,tid,0),_cenX(cenX),_cenY(cenY)/*,_distance(),_property(-1)*/ {}
+  VisionObjectEvent(EventTypeID_t tid, unsigned int sid)
+		: EventBase(EventBase::visObjEGID,sid,tid,0),_x1(0),_x2(0),_y1(0),_y2(0),
+			_clipLeft(false), _clipRight(false), _clipTop(false), _clipBottom(false)
+	{}
+		
+	//! Constructor, pass the type id, source id, left, right, top, bottom, x range, and y range
+  VisionObjectEvent(EventTypeID_t tid, unsigned int sid, float x1, float x2, float y1, float y2, float rx, float ry)
+		: EventBase(EventBase::visObjEGID,sid,tid,0),_x1(x1),_x2(x2),_y1(y1),_y2(y2),
+			_clipLeft(_x1<=-rx), _clipRight(_x2>=rx), _clipTop(_y1<=-ry), _clipBottom(_y2>=ry)
+	{}
+	
 	//! destructor
 	virtual ~VisionObjectEvent() {}
   
-  float getCenterX() const { return _cenX;} //!< returns the x coordinate
-  VisionObjectEvent& setCenterX(float cenX) { _cenX=cenX; return *this;} //!< sets the x coordinate
+	//!@name Attribute Accessors
+  float getLeft() const { return _x1;} //!< returns the initial x coordinate of the Bounding Box
+  VisionObjectEvent& setLeft(float x1) { _x1=x1; return *this;} //!< sets the initial x coordinate of the Bounding Box
   
-  float getCenterY() const { return _cenY;} //!< returns the y coordinate
-  VisionObjectEvent& setCenterY(float cenY) { _cenY=cenY; return *this;} //!< sets the y coordinate
-
-  //float getDistance() const { return _distance;} //!< returns the distance (not implemented)
-  //VisionObjectEvent& setDistance(float dist) { _distance=dist; return *this;} //!< sets the distance
+  float getRight() const { return _x2;} //!< returns the final x coordinate of the Bounding Box
+  VisionObjectEvent& setRight(float x2) { _x2=x2; return *this;} //!< sets the final x coordinate of the Bounding Box
+  
+	float getTop() const { return _y1;} //!< returns the initial y coordinate of the Bounding Box
+  VisionObjectEvent& setTop(float y1) { _y1=y1; return *this;} //!< sets the initial y coordinate of the Bounding Box
+  
+  float getBottom() const { return _y2;} //!< returns the final y coordinate of the Bounding Box
+  VisionObjectEvent& setBottom(float y2) { _y2=y2; return *this;} //!< sets the final y coordinate of the Bounding Box
+	//@}
+ 
+	//!@name Calculated Attributes
+  float getCenterX() const { return (_x1+_x2)/2; } //!< returns the center along x
+  float getCenterY() const { return (_y1+_y2)/2; } //!< returns the center along y
+	float getWidth() const { return _x2-_x1; } //!< return width along x
+	float getHeight() const { return _x2-_x1; } //!< return height along y
+  float getArea() const { return (_x2-_x1)*(_y2-_y1); } //!< returns the final x coordinate of the Bounding Box
+	//@}
 
-  //int getProperty() const { return _property;} //!< returns the property (for future use)
-  //VisionObjectEvent& setProperty(int property) { _property=property; return *this;} //!< sets the property
+  //!@name Object out of bounds Detection Functions
+  bool isClippedLeft() const { return _clipLeft; } //!< returns #_clipLeft
+  bool isClippedRight() const { return _clipRight; }  //!< returns #_clipRight
+  bool isClippedTop() const { return _clipTop; } //!< returns #_clipTop
+  bool isClippedBottom() const {return _clipBottom; } //!< returns #_clipBottom
+	void setClipping(bool left, bool right, bool top, bool bottom) { _clipLeft=left; _clipRight=right; _clipTop=top; _clipBottom=bottom; } //!< sets clipping boundaries
+	//@}
       
 	virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
 	
@@ -34,22 +64,27 @@
 	virtual unsigned int LoadBuffer(const char buf[], unsigned int len);
 	virtual unsigned int SaveBuffer(char buf[], unsigned int len) const;
 
- protected:
-	float _cenX; //!< a value representing location in visual field - from -1 if on the left edge to 1 if it's on the right edge
-	float _cenY; //!< a value representing location in visual field - from -1 if on the bottom edge to 1 if it's on the top edge
-	//float _distance; //!< distance from snout to object in millimeters. (not implemented)
-  //int _property; //!< some property, depending on the SID (for future use)
+protected:
+	float _x1;  //!< a value representing location in visual field - from -1 if on the left edge to 1 if it's on the right edge
+	float _x2;  //!< a value representing location in visual field - from -1 if on the bottom edge to 1 if it's on the top edge
+	float _y1;  //!< top boundary, in approximate range (+/- 160/208) for ERS-7; actual values vary depending on aspect ratio to keep square coordinates
+	float _y2;  //!< top boundary, in approximate range (+/- 160/208) for ERS-7; actual values vary depending on aspect ratio to keep square coordinates
+	bool _clipLeft;   //!< flag to indicate left boundary is on or beyond the camera image's boundary
+	bool _clipRight;  //!< flag to indicate right boundary is on or beyond the camera image's boundary
+	bool _clipTop;    //!< flag to indicate top boundary is on or beyond the camera image's boundary
+	bool _clipBottom; //!< flag to indicate bottom boundary is on or beyond the camera image's boundary
 };
 
 /*! @file
- * @brief Provides information about objects recognized in the camera image
+ * @brief Describes VisionObjectEvent, which provides information about objects recognized in the camera image
  * @author alokl (Creator)
+ * @author Ignacio Herrero Reder <nhr at dte uma es> (VisionObjectInfo Boundary Box - bug 74)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/MMCombo/CVS/Entries ./MMCombo/CVS/Entries
--- ../Tekkotsu_2.2.2/MMCombo/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./MMCombo/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,5 @@
+/MMCombo.cc/1.62/Tue Jan 11 23:10:44 2005//Ttekkotsu-2_3
+/MMCombo.h/1.26/Tue Sep 28 23:07:04 2004//Ttekkotsu-2_3
+/MMCombo.ocf/1.2/Fri Nov  1 19:21:29 2002//Ttekkotsu-2_3
+/stub.cfg/1.7/Tue Sep 28 23:07:04 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/MMCombo/CVS/Repository ./MMCombo/CVS/Repository
--- ../Tekkotsu_2.2.2/MMCombo/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./MMCombo/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/MMCombo
diff -urdN ../Tekkotsu_2.2.2/MMCombo/CVS/Root ./MMCombo/CVS/Root
--- ../Tekkotsu_2.2.2/MMCombo/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./MMCombo/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/MMCombo/CVS/Tag ./MMCombo/CVS/Tag
--- ../Tekkotsu_2.2.2/MMCombo/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./MMCombo/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/MMCombo/MMCombo.cc ./MMCombo/MMCombo.cc
--- ../Tekkotsu_2.2.2/MMCombo/MMCombo.cc	Wed Nov 17 19:04:25 2004
+++ ./MMCombo/MMCombo.cc	Tue Jan 11 18:10:44 2005
@@ -310,7 +310,11 @@
 		EventTranslator::Queue_t * etransq=reinterpret_cast<EventTranslator::Queue_t*>(eventTranslatorQueueMemRgn->Base());
 		etrans.setQueue(etransq);
 		MotionCommand::setQueue(etransq);
-		erouter->addTrapper(&etrans);
+		//MotionCommands enqueue directly, so there shouldn't be any riff-raff to catch
+		//but just in case, subscribe to everything except erouterEGID
+		for(unsigned int i=0; i<EventBase::numEGIDs; i++)
+			if(i!=EventBase::erouterEGID)
+				erouter->addTrapper(&etrans,static_cast<EventBase::EventGeneratorID_t>(i));
 	}
   observer[obsReceiveEventTranslatorQueue]->AssertReady();
 	cout << "done" << endl;
@@ -769,10 +773,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 
diff -urdN ../Tekkotsu_2.2.2/MMCombo/MMCombo.h ./MMCombo/MMCombo.h
--- ../Tekkotsu_2.2.2/MMCombo/MMCombo.h	Tue Sep 28 19:07:04 2004
+++ ./MMCombo/MMCombo.h	Tue Sep 28 19:07:04 2004
@@ -141,7 +141,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Makefile ./Makefile
--- ../Tekkotsu_2.2.2/Makefile	Tue Dec 21 18:53:12 2004
+++ ./Makefile	Tue Dec 21 18:53:12 2004
@@ -1,5 +1,5 @@
 ############### FRAMEWORK MAKEFILE ################
-############# $Name: HEAD $ ###############
+############# $Name: HEAD $ ###############
 ############### $Revision: 1.1 $ #################
 ########## $Date: 2005/01/30 17:44:13 $ ###########
 
diff -urdN ../Tekkotsu_2.2.2/Motion/CVS/Entries ./Motion/CVS/Entries
--- ../Tekkotsu_2.2.2/Motion/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Motion/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,43 @@
+/DynamicMotionSequence.h/1.5/Tue Dec 21 22:39:01 2004//Ttekkotsu-2_3
+/EmergencyStopMC.cc/1.24/Fri Jan  7 23:16:58 2005//Ttekkotsu-2_3
+/EmergencyStopMC.h/1.12/Fri Jan  7 19:36:38 2005//Ttekkotsu-2_3
+/Geometry.h/1.3/Thu Sep 25 15:27:22 2003//Ttekkotsu-2_3
+/HeadPointerMC.cc/1.19/Tue Jan 25 20:06:42 2005//Ttekkotsu-2_3
+/HeadPointerMC.h/1.20/Fri Jan  7 21:13:31 2005//Ttekkotsu-2_3
+/Kinematics.cc/1.23/Tue Dec 21 23:51:18 2004//Ttekkotsu-2_3
+/Kinematics.h/1.31/Fri Jan 14 21:20:05 2005//Ttekkotsu-2_3
+/LedEngine.cc/1.15/Sun Sep 12 04:22:37 2004//Ttekkotsu-2_3
+/LedEngine.h/1.19/Thu Jan 20 23:18:25 2005//Ttekkotsu-2_3
+/LedMC.h/1.8/Fri Dec 17 05:52:36 2004//Ttekkotsu-2_3
+/MCList.make/1.1.1.1/Mon Sep 30 18:19:49 2002//Ttekkotsu-2_3
+/MMAccessor.h/1.9/Wed Feb 18 21:13:02 2004//Ttekkotsu-2_3
+/MotionCommand.cc/1.3/Thu Sep 25 15:27:23 2003//Ttekkotsu-2_3
+/MotionCommand.h/1.17/Mon Feb  9 22:45:28 2004//Ttekkotsu-2_3
+/MotionManager.cc/1.40/Fri Jan  7 19:23:45 2005//Ttekkotsu-2_3
+/MotionManager.h/1.23/Mon Oct 18 23:10:26 2004//Ttekkotsu-2_3
+/MotionManagerMsg.h/1.4/Tue Sep  2 20:58:49 2003//Ttekkotsu-2_3
+/MotionSequenceEngine.cc/1.6/Tue Jan 11 18:39:36 2005//Ttekkotsu-2_3
+/MotionSequenceEngine.h/1.9/Tue Jan 11 18:39:36 2005//Ttekkotsu-2_3
+/MotionSequenceMC.h/1.27/Tue Jan 11 18:38:52 2005//Ttekkotsu-2_3
+/OldHeadPointerMC.cc/1.1/Thu Oct 14 20:23:50 2004//Ttekkotsu-2_3
+/OldHeadPointerMC.h/1.1/Thu Oct 14 20:23:50 2004//Ttekkotsu-2_3
+/OldKinematics.cc/1.1/Thu Aug  5 20:29:04 2004//Ttekkotsu-2_3
+/OldKinematics.h/1.1/Thu Aug  5 20:29:04 2004//Ttekkotsu-2_3
+/OutputCmd.cc/1.2/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/OutputCmd.h/1.3/Sun Sep  7 22:14:01 2003//Ttekkotsu-2_3
+/OutputPID.h/1.5/Sat Dec 13 05:01:40 2003//Ttekkotsu-2_3
+/PIDMC.h/1.12/Tue Dec 21 00:42:21 2004//Ttekkotsu-2_3
+/Path.h/1.5/Thu Sep 25 15:27:23 2003//Ttekkotsu-2_3
+/PostureEngine.cc/1.24/Fri Jan  7 19:36:38 2005//Ttekkotsu-2_3
+/PostureEngine.h/1.16/Fri Jan  7 19:36:38 2005//Ttekkotsu-2_3
+/PostureMC.cc/1.2/Fri Jan  7 21:12:35 2005//Ttekkotsu-2_3
+/PostureMC.h/1.12/Fri Jan  7 21:13:10 2005//Ttekkotsu-2_3
+/RemoteControllerMC.h/1.5/Tue Dec 21 00:42:21 2004//Ttekkotsu-2_3
+/Spline.h/1.5/Thu Sep 25 15:27:23 2003//Ttekkotsu-2_3
+/TailWagMC.h/1.7/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/WalkMC.cc/1.30/Mon Dec 20 21:26:24 2004//Ttekkotsu-2_3
+/WalkMC.h/1.29/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/WaypointEngine.h/1.4/Tue Jul 27 14:33:59 2004//Ttekkotsu-2_3
+/WaypointWalkMC.h/1.3/Tue Jul 27 14:33:59 2004//Ttekkotsu-2_3
+/gvector.h/1.5/Thu Sep 25 15:27:23 2003//Ttekkotsu-2_3
+D/roboop////
diff -urdN ../Tekkotsu_2.2.2/Motion/CVS/Repository ./Motion/CVS/Repository
--- ../Tekkotsu_2.2.2/Motion/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Motion/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Motion
diff -urdN ../Tekkotsu_2.2.2/Motion/CVS/Root ./Motion/CVS/Root
--- ../Tekkotsu_2.2.2/Motion/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Motion/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Motion/CVS/Tag ./Motion/CVS/Tag
--- ../Tekkotsu_2.2.2/Motion/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Motion/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Motion/DynamicMotionSequence.h ./Motion/DynamicMotionSequence.h
--- ../Tekkotsu_2.2.2/Motion/DynamicMotionSequence.h	Tue Dec 21 17:39:01 2004
+++ ./Motion/DynamicMotionSequence.h	Tue Dec 21 17:39:01 2004
@@ -116,7 +116,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/EmergencyStopMC.cc ./Motion/EmergencyStopMC.cc
--- ../Tekkotsu_2.2.2/Motion/EmergencyStopMC.cc	Mon Aug 30 16:26:45 2004
+++ ./Motion/EmergencyStopMC.cc	Fri Jan  7 18:16:58 2005
@@ -13,9 +13,8 @@
 EmergencyStopMC::EmergencyStopMC()
 	: PostureMC(), paused(false), stilldown(false), active(true), period(2000),
 		timeoflastbtn(0), timeofthisbtn(0), timeoflastfreeze(0), duration(600),
-		pidcutoff(static_cast<unsigned char>(0.16*255)), ledengine()
+		pidcutoff(0.2), ledengine()
 {
-	setAutoPrune(false);
 	for(unsigned int i=0; i<NumPIDJoints; i++)
 		piddutyavgs[i]=0;
 	if(state->robotDesign&WorldState::ERS210Mask) {
@@ -34,6 +33,7 @@
 		ledengine.cycle(1<<(NumLEDs-1),period,1,0,period/2);
 		ledengine.cycle(1<<(NumLEDs-2),period,1);
 	}
+	defaultMaxSpeed(.15);
 	takeSnapshot();
 }
 
@@ -55,17 +55,25 @@
 	}
 	if(!paused)
 		return 0;
-	for(unsigned int i=0; i<NumPIDJoints; i++) {
-		piddutyavgs[i]=static_cast<unsigned char>(piddutyavgs[i]*.8+fabs(state->pidduties[i])*255*.2);
-		//reset if there's a force...
-		if(piddutyavgs[i]>pidcutoff) {
-			cmds[i].value-=state->pidduties[i]/10;
-			//				cmds[i].value=state->outputs[i];
-			//				cout << outputNames[i] << ' ' << state->pidduties[i] << ' ' << state->outputs[i] << endl;
+	//immediately following a pause, just hold current position at first to prevent twitching if we were in motion
+	if(get_time()-timeoflastfreeze>FrameTime*NumFrames*5) { 
+		//once joints have come to rest, respond to outside forces
+		for(unsigned int i=0; i<NumPIDJoints; i++) {
+			//exponential average of duty cycles to filter out noise
+			piddutyavgs[i]=piddutyavgs[i]*.9f+state->pidduties[i]*.1f;
+			//reset if there's something significantly out of place (perhaps we're being overridden)
+			if(fabsf(state->outputs[PIDJointOffset+i]-cmds[PIDJointOffset+i].value)>.15f) {
+				curPositions[PIDJointOffset+i]=cmds[PIDJointOffset+i].value=state->outputs[PIDJointOffset+i];
+				dirty=true;
+				targetReached=false;
+			}
+			//give if there's a force...
+			if(fabsf(piddutyavgs[i])>pidcutoff) {
+				cmds[PIDJointOffset+i].value-=piddutyavgs[PIDJointOffset+i]; //move in the direction of the force
+				dirty=true;
+				targetReached=false;
+			}
 		}
-		//reset if there's just something out of place (perhaps we're being overridden)
-		if(fabs(state->outputs[i]-cmds[i].value)>.1)
-			cmds[i].value=state->outputs[i];
 	}
 	ledengine.updateLEDs(&cmds[LEDOffset]);
 	if(state->robotDesign&WorldState::ERS7Mask) {
@@ -99,18 +107,6 @@
 	return PostureMC::updateOutputs();
 }
 
-void EmergencyStopMC::takeSnapshot() {
-	for(unsigned int i=0; i<NumOutputs; i++)
-		cmds[i].value=state->outputs[i];
-	dirty=true;
-}
-
-void EmergencyStopMC::takeSnapshot(const WorldState* st) {
-	for(unsigned int i=0; i<NumOutputs; i++)
-		cmds[i].value=st->outputs[i];
-	dirty=true;
-}
-
 void EmergencyStopMC::setActive(bool a) {
 	if(paused) {
 		if(!a && active)
@@ -126,19 +122,15 @@
 	if(p!=paused) {
 		paused=p;
 		if(active) {
-			dirty=true;
 			if(paused) {
 				freezeJoints();
 				if(sound)
 					sndman->PlayFile(config->motion.estop_on_snd);
-				timeoflastfreeze=get_time();
-				//			pprintf(TextOutputStream,"*** PAUSED ***\n");
 				cout << "*** PAUSED ***" << endl;
 			} else {
 				releaseJoints();
 				if(sound)
 					sndman->PlayFile(config->motion.estop_off_snd);
-				//			pprintf(TextOutputStream,"*** UNPAUSED ***\n");
 				cout << "*** UNPAUSED ***" << endl;
 			}
 		}
@@ -146,7 +138,12 @@
 }
 
 void EmergencyStopMC::freezeJoints() {
-	takeSnapshot();
+	dirty=true;
+	targetReached=false;
+	for(unsigned int i=0; i<NumOutputs; i++)
+		curPositions[i]=cmds[i].value=motman->getOutputCmd(i).value;
+	for(unsigned int i=0; i<NumPIDJoints; i++)
+		piddutyavgs[i]=0; //or: state->pidduties[i];
 	for(unsigned int i=0; i<LEDOffset; i++)
 		cmds[i].weight=1;
 	for(unsigned int i=LEDOffset; i<LEDOffset+NumLEDs; i++)
@@ -169,9 +166,12 @@
 		cmds[LEDOffset+NumLEDs-2].set(0,.5);
 	}
 	postEvent(EventBase(EventBase::estopEGID,getID(),EventBase::activateETID,0));
+	timeoflastfreeze=get_time();
 }
 
 void EmergencyStopMC::releaseJoints() {
+	dirty=true;
+	targetReached=false;
 	for(unsigned int i=0; i<NumOutputs; i++)
 		cmds[i].unset();
 	//these lines prevent residual display
@@ -209,9 +209,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Motion/EmergencyStopMC.h ./Motion/EmergencyStopMC.h
--- ../Tekkotsu_2.2.2/Motion/EmergencyStopMC.h	Mon Aug 30 16:26:45 2004
+++ ./Motion/EmergencyStopMC.h	Fri Jan  7 14:36:38 2005
@@ -27,17 +27,14 @@
 	virtual ~EmergencyStopMC() {} //!< destructor
 	virtual int updateOutputs(); //!< checks for feedback or double tap
 
-	virtual void takeSnapshot(); //!< records current positions of joints
-	virtual void takeSnapshot(const WorldState* st); //!< records current positions of joints
-
 	void setActive(bool a); //!< allows you to modify #active
 	bool getActive() { return active; } //!< returns #active
 	void setStopped(bool p, bool sound=true); //!< allows you to modify #paused
 	bool getStopped() const { return paused; } //!< returns #paused
 	void setDblTapDuration(unsigned int d) { duration=d; } //!< sets #duration
 	unsigned int getDblTapDuration() const { return duration; } //!< returns #duration
-	void setResetSensitivity(float r) { pidcutoff=static_cast<unsigned char>(r*255); } //!< takes a value [0,1] to set #pidcutoff
-	float getResetSensitivity() { return pidcutoff/255.0; } //!< returns a value [0-1], corresponding to #pidcutoff
+	void setResetSensitivity(float r) { pidcutoff=r; } //!< takes a value to set #pidcutoff
+	float getResetSensitivity() { return pidcutoff; } //!< returns #pidcutoff
 
  protected:
 	void freezeJoints(); //!< code to execute when locking joints
@@ -52,8 +49,8 @@
 	unsigned int timeofthisbtn; //!< time of the current button press
 	unsigned int timeoflastfreeze; //!< the time estop was last turned on
 	unsigned int duration; //!<the maximum time (in milliseconds) of consecutive button-down's to count as a double tap
-	unsigned char piddutyavgs[NumPIDJoints]; //!< a running average of PID feedback ("duty"), so one bad reading doesn't cause a movement, need a consistent pressure
-	unsigned char pidcutoff; //!<abs pid duty cycle above which we just reset joint to current
+	float piddutyavgs[NumPIDJoints]; //!< a running average of PID feedback ("duty"), so one bad reading doesn't cause a movement, need a consistent pressure
+	float pidcutoff; //!<abs pid duty cycle above which we just reset joint to current
 	LedEngine ledengine; //!< used to do LED effects on the tail
 };
 
@@ -62,10 +59,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/Geometry.h ./Motion/Geometry.h
--- ../Tekkotsu_2.2.2/Motion/Geometry.h	Thu Sep 25 11:27:22 2003
+++ ./Motion/Geometry.h	Thu Sep 25 11:27:22 2003
@@ -51,7 +51,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/HeadPointerMC.cc ./Motion/HeadPointerMC.cc
--- ../Tekkotsu_2.2.2/Motion/HeadPointerMC.cc	Wed Dec 22 19:59:03 2004
+++ ./Motion/HeadPointerMC.cc	Tue Jan 25 15:06:42 2005
@@ -7,7 +7,8 @@
 #include "Wireless/Socket.h"
 
 HeadPointerMC::HeadPointerMC()
-	: MotionCommand(), dirty(true), targetReached(false),
+	: MotionCommand(), dirty(true), hold(true), tolerance(.035),
+		targetReached(false), targetTimestamp(0), timeout(2000), 
 	  headkin(::config->motion.makePath(::config->motion.kinematics),"Camera")
 {
 	setWeight(1);
@@ -16,10 +17,10 @@
 		headTargets[i]=headCmds[i].value=state->outputs[HeadOffset+i];
 }
 
-void HeadPointerMC::defaultMaxSpeed() {
-	maxSpeed[TiltOffset]=config->motion.max_head_tilt_speed*FrameTime/1000;
-	maxSpeed[PanOffset]=config->motion.max_head_pan_speed*FrameTime/1000;
-	maxSpeed[RollOffset]=config->motion.max_head_roll_speed*FrameTime/1000;
+void HeadPointerMC::defaultMaxSpeed(float x/*=1*/) {
+	maxSpeed[TiltOffset]=config->motion.max_head_tilt_speed*FrameTime*x/1000;
+	maxSpeed[PanOffset]=config->motion.max_head_pan_speed*FrameTime*x/1000;
+	maxSpeed[RollOffset]=config->motion.max_head_roll_speed*FrameTime*x/1000;
 }
 
 void HeadPointerMC::setWeight(float w) {
@@ -86,10 +87,10 @@
 
 int HeadPointerMC::updateOutputs() {
 	int tmp=isDirty();
-	if(tmp) {
+	if(tmp || hold) {
 		dirty=false;
 		for(unsigned int i=0; i<NumHeadJoints; i++) {
-      if(maxSpeed[i]<=0) {
+			if(maxSpeed[i]<=0) {
 				headCmds[i].value=headTargets[i];
 				motman->setOutput(this,i+HeadOffset,headCmds[i]);
 			} else { // we may be trying to exceeded maxSpeed
@@ -115,14 +116,34 @@
 		if(!dirty && !targetReached) {
 			postEvent(EventBase(EventBase::motmanEGID,getID(),EventBase::statusETID));
 			targetReached=true;
+			targetTimestamp=get_time();
 		}
 	}
 	return tmp;
 }
 
+int HeadPointerMC::isAlive() {
+	if(dirty || !targetReached)
+		return true;
+	if(targetReached && get_time()-targetTimestamp>timeout) { //prevents a conflicted HeadPointerMC's from fighting forever
+		if(getAutoPrune())
+			serr->printf("WARNING: HeadPointerMC timed out - possible joint conflict or out-of-range target\n");
+		return false;
+	}
+	float maxdiff=0;
+	for(unsigned int i=0; i<NumHeadJoints; i++) {
+		float diff=fabsf(state->outputs[HeadOffset+i]-headTargets[i]);
+		if(diff>maxdiff)
+			maxdiff=diff;
+	}
+	return (maxdiff>tolerance);
+}
+
 void HeadPointerMC::markDirty() {
 	dirty=true;
 	targetReached=false;
+	for(unsigned int i=0; i<NumHeadJoints; i++)
+		headCmds[i].value=motman->getOutputCmd(HeadOffset+i).value; //not state->outputs[HeadOffset+i]; - see function documentation
 }
 
 bool HeadPointerMC::ensureValidJoint(unsigned int& i) {
@@ -138,7 +159,7 @@
 	}
 	serr->printf("ERROR: HeadPointerMC received a joint index of %d (HeadOffset%+d).\n",i,i-HeadOffset);
 	serr->printf("ERROR: This does not appear to be a head joint.  HeadPointerMC only controls\n");
-	serr->printf("       head joints, and assumes its arguments are relative to HeadOffset\n",i);
+	serr->printf("       head joints, and assumes its arguments are relative to HeadOffset\n");
 	return false;
 }
 
@@ -147,10 +168,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 
diff -urdN ../Tekkotsu_2.2.2/Motion/HeadPointerMC.h ./Motion/HeadPointerMC.h
--- ../Tekkotsu_2.2.2/Motion/HeadPointerMC.h	Wed Dec 22 19:59:03 2004
+++ ./Motion/HeadPointerMC.h	Fri Jan  7 16:13:31 2005
@@ -16,13 +16,23 @@
 	//! Destructor
 	virtual ~HeadPointerMC() {}
 	
+	//!Sets #hold - if this is set to false, it will allow a persistent motion to behave the same as a pruned motion, without being pruned
+	virtual void setHold(bool h=true) { hold=h; }
+	virtual bool getHold() { return hold; } //!< return #hold
+
+	virtual void setTolerance(float t) { tolerance=t; } //!< sets #tolerance
+	virtual float getTolerance() { return tolerance; } //!< returns #tolerance
+	virtual void setTimeout(unsigned int delay) { timeout=delay; } //!< sets #timeout
+	virtual unsigned int getTimeout() { return timeout; } //!< returns #timeout
+
 	//!@name Speed Control
 	
 	//! Sets #maxSpeed to 0 (no maximum)
 	void noMaxSpeed() { for(unsigned int i=0; i<NumHeadJoints; i++) maxSpeed[i]=0; }
 	
 	//! Restores #maxSpeed to default settings from Config::Motion_Config
-	void defaultMaxSpeed();
+	/*! @param x ratio of the max speed to use; so 0.5 would limit motion to half the recommended upper limit */
+	void defaultMaxSpeed(float x=1);
 	
 	//! Sets #maxSpeed in rad/sec
 	/*! @param i joint offset relative to HeadOffset (i.e. one of TPROffset_t)
@@ -96,7 +106,7 @@
 	//!@name Inherited:
 	virtual int updateOutputs(); //!< Updates where the head is looking
 	virtual int isDirty() { return (dirty || !targetReached)?3:0; } //!< true if a change has been made since the last updateJointCmds() and we're active
-	virtual int isAlive() { return true; } //!< always true, doesn't autoprune (yet)
+	virtual int isAlive(); //!< Alive while target is not reached
 	virtual void DoStart() { MotionCommand::DoStart(); markDirty(); } //!< marks this as dirty each time it is added
 	//@}
 
@@ -118,9 +128,16 @@
 		} else
 			return x;
 	}
-	//! if targetReached, reassigns headCmds from ::state, then sets dirty to true and targetReached to false
+	//! if targetReached, reassigns headCmds from MotionManager::getOutputCmd(), then sets dirty to true and targetReached to false
 	/*! should be called each time a joint value gets modified in case
-	 *  the head isn't where it's supposed to be, it won't jerk around */
+	 *  the head isn't where it's supposed to be, it won't jerk around
+	 * 
+	 *  MotionManager::getOutputCmd() is called instead of
+	 *  WorldState::outputs[] because if this is being called rapidly
+	 *  (i.e. after every sensor reading) using the sensor values will
+	 *  cause problems with very slow acceleration due to sensor lag
+	 *  continually resetting the current position.  Using the last
+	 *  value sent by the MotionManager fixes this.*/
 	void markDirty();
 
 	//! Makes sure @a i is in the range (0,NumHeadJoints).  If it is instead in the range (HeadOffset,HeadOffset+NumHeadJoints), output a warning and reset @a i to the obviously intended value.
@@ -130,7 +147,11 @@
 	static bool ensureValidJoint(unsigned int& i);
 
 	bool dirty;                          //!< true if a change has been made since last call to updateJointCmds()
+	bool  hold;                          //!< if set to true, the posture will be kept active; otherwise joints will be marked unused after each posture is achieved (as if the posture was pruned); set through setHold()
+	float tolerance;                     //!< when autopruning, if the maxdiff() of this posture and the robot's current position is below this value, isAlive() will be false, defaults to 0.01 (5.7 degree error)
 	bool targetReached;                  //!< false if the head is still moving towards its target
+	unsigned int targetTimestamp;        //!< time at which the targetReached flag was set
+	unsigned int timeout;                //!< number of milliseconds to wait before giving up on a target that should have already been reached, a value of -1U will try forever
   float headTargets[NumHeadJoints];    //!< stores the target value of each joint
 	OutputCmd headCmds[NumHeadJoints];   //!< stores the last values we sent from updateOutputs
 	float maxSpeed[NumHeadJoints];       //!< initialized from Config::motion_config, but can be overridden by setMaxSpeed(); rad per frame
@@ -142,10 +163,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/Kinematics.cc ./Motion/Kinematics.cc
--- ../Tekkotsu_2.2.2/Motion/Kinematics.cc	Tue Dec 21 18:51:18 2004
+++ ./Motion/Kinematics.cc	Tue Dec 21 18:51:18 2004
@@ -413,7 +413,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/Kinematics.h ./Motion/Kinematics.h
--- ../Tekkotsu_2.2.2/Motion/Kinematics.h	Wed Dec 22 20:47:07 2004
+++ ./Motion/Kinematics.h	Fri Jan 14 16:20:05 2005
@@ -65,7 +65,7 @@
  *  NEWMAT::Matrix T = kine->jointToJoint(NearIRFrameOffset,CameraFrameOffset);
  *  NEWMAT::ColumnVector camera_ray = T*Kinematics::pack(0,0,state->sensors[NearIRDistOffset]);
  *  float x,y; // x and y will be in the range -1 to 1 for resolution layer independence
- *  config->vision.computePixel(x,y,camera_ray(1),camera_ray(2),camera_ray(3));
+ *  config->vision.computePixel(camera_ray(1),camera_ray(2),camera_ray(3),x,y);
  *  @endcode
  *  
  *  Finally, for each model we have created a database of "interest points" --
@@ -350,10 +350,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/LedEngine.cc ./Motion/LedEngine.cc
--- ../Tekkotsu_2.2.2/Motion/LedEngine.cc	Sun Sep 12 00:22:37 2004
+++ ./Motion/LedEngine.cc	Sun Sep 12 00:22:37 2004
@@ -392,7 +392,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/LedEngine.h ./Motion/LedEngine.h
--- ../Tekkotsu_2.2.2/Motion/LedEngine.h	Mon Nov 15 19:29:47 2004
+++ ./Motion/LedEngine.h	Thu Jan 20 18:18:25 2005
@@ -85,7 +85,7 @@
 	//!returns the current value of the LED specified by @a led_id (the value being expressed - may change if cycling for instance)
 	float getValue(LEDOffset_t led_id,unsigned int planahead=0) { return calcValue(led_id-LEDOffset,get_time()+planahead); }
 	
-	//!holds a series of bit masks for the onedigit style of numerical display (0-10 and '.')
+	//!holds a series of bit masks for the onedigit style of numerical display (-9:9 and '.')
 	/*!the hope is that these actually resemble the shapes of the numbers so people can
 	 * recognize them more easily - without converting base 2 in their heads. */
 	static const LEDBitMask_t ERS210numMasks[11];
@@ -133,7 +133,7 @@
 	//!Performs the 'cycle' calculation based on desired period, amplituted, amplitude offset, and time since start.  See cycle()
 	static float calcCycle(unsigned int period, float amp, float offset, unsigned int t) {
 		//		cout << period << ',' << amp << ',' << offset << ',' << time << " -> " << x;
-		float x=cos(t*6.2831853/period)*(-amp/2)+.5+offset;
+		float x=float(cos(t*2*M_PI/period))*(-amp/2)+.5f+offset;
 		if(x<0)
 			return 0;
 		if(x>1)
@@ -177,10 +177,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/LedMC.h ./Motion/LedMC.h
--- ../Tekkotsu_2.2.2/Motion/LedMC.h	Fri Dec 17 00:52:36 2004
+++ ./Motion/LedMC.h	Fri Dec 17 00:52:36 2004
@@ -62,7 +62,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MMAccessor.h ./Motion/MMAccessor.h
--- ../Tekkotsu_2.2.2/Motion/MMAccessor.h	Wed Feb 18 16:13:02 2004
+++ ./Motion/MMAccessor.h	Wed Feb 18 16:13:02 2004
@@ -153,7 +153,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionCommand.cc ./Motion/MotionCommand.cc
--- ../Tekkotsu_2.2.2/Motion/MotionCommand.cc	Thu Sep 25 11:27:23 2003
+++ ./Motion/MotionCommand.cc	Thu Sep 25 11:27:23 2003
@@ -7,7 +7,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionCommand.h ./Motion/MotionCommand.h
--- ../Tekkotsu_2.2.2/Motion/MotionCommand.h	Mon Feb  9 17:45:28 2004
+++ ./Motion/MotionCommand.h	Mon Feb  9 17:45:28 2004
@@ -186,7 +186,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionManager.cc ./Motion/MotionManager.cc
--- ../Tekkotsu_2.2.2/Motion/MotionManager.cc	Fri Dec  3 19:11:34 2004
+++ ./Motion/MotionManager.cc	Fri Jan  7 14:23:45 2005
@@ -334,7 +334,7 @@
 			if(sumcmd.weight>0) 
 				outputs[frame][output]=sumcmd.value/sumcmd.weight;
 			else //if zero weight, hold last value
-				outputs[frame][output]=cmdSums[output];
+				sumcmd.value=outputs[frame][output]=cmdSums[output];
 			if(frame==NumFrames-1)
 				cmds[output]=sumcmd;
 		}
@@ -763,10 +763,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionManager.h ./Motion/MotionManager.h
--- ../Tekkotsu_2.2.2/Motion/MotionManager.h	Mon Oct 18 19:10:26 2004
+++ ./Motion/MotionManager.h	Mon Oct 18 19:10:26 2004
@@ -259,7 +259,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionManagerMsg.h ./Motion/MotionManagerMsg.h
--- ../Tekkotsu_2.2.2/Motion/MotionManagerMsg.h	Tue Sep  2 16:58:49 2003
+++ ./Motion/MotionManagerMsg.h	Tue Sep  2 16:58:49 2003
@@ -52,7 +52,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionSequenceEngine.cc ./Motion/MotionSequenceEngine.cc
--- ../Tekkotsu_2.2.2/Motion/MotionSequenceEngine.cc	Tue Dec 21 17:22:54 2004
+++ ./Motion/MotionSequenceEngine.cc	Tue Jan 11 13:39:36 2005
@@ -13,8 +13,8 @@
 	if(isPlaying()) {
 		if(lasttime==0)
 			play();
-		double diff=(get_time()-lasttime)*playspeed;
-		if(diff+playtime<0)
+		float diff=(get_time()-lasttime)*playspeed;
+		if(playtime<-diff)
 			setTime(0);
 		else
 			setTime(static_cast<unsigned int>(diff+playtime));
@@ -30,6 +30,8 @@
 	if(curstamps[i]!=playtime) {
 		if(nexts[i]!=invalid_move)
 			calcOutput(curs[i],playtime,getKeyFrame(prevs[i]),getKeyFrame(nexts[i]));
+		else if(hold)
+			curs[i]=getKeyFrame(prevs[i]).cmd;
 		else
 			curs[i].unset();
 		curstamps[i]=playtime;
@@ -45,15 +47,20 @@
 	unsigned int t=0;
 	Move_idx_t tprevs[NumOutputs];
 	Move_idx_t tnexts[NumOutputs];
-	for(unsigned int i=0;i<NumOutputs;i++)
+	bool hasInitialFrame=false;
+	for(unsigned int i=0;i<NumOutputs;i++) {
 		tnexts[i]=getKeyFrame(tprevs[i]=starts[i]).next;
+		if(getKeyFrame(starts[i]).cmd.weight!=0)
+			hasInitialFrame=true;
+	}
+	if(hasInitialFrame)
+		used+=snprintf(buf,len,"setTime\t0\n");
 	while(t!=-1U) {
 		for(unsigned int i=0; i<NumOutputs; i++) {
 			if((t!=0 || getKeyFrame(tprevs[i]).cmd.weight!=0) && getKeyFrame(tprevs[i]).starttime==t) {
-				if(getKeyFrame(tprevs[i]).cmd.weight==1) {
-					if(t!=0)
-						used+=snprintf(buf,len,"%s\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode);
-				} else
+				if(getKeyFrame(tprevs[i]).cmd.weight==1)
+					used+=snprintf(buf,len,"%s\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode);
+				else
 					used+=snprintf(buf,len,"%s\t%g\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode,getKeyFrame(tprevs[i]).cmd.weight);
 			}
 		}
@@ -220,19 +227,25 @@
 	unsigned int t=0;
 	Move_idx_t tprevs[NumOutputs];
 	Move_idx_t tnexts[NumOutputs];
-	for(unsigned int i=0;i<NumOutputs;i++)
+	bool hasInitialFrame=false;
+	for(unsigned int i=0;i<NumOutputs;i++) {
 		tnexts[i]=getKeyFrame(tprevs[i]=starts[i]).next;
+		if(getKeyFrame(starts[i]).cmd.weight!=0)
+			hasInitialFrame=true;
+	}
+	if(hasInitialFrame) {
+		written=snprintf(buf,len,"setTime\t0\n");
+		if(!ChkAdvance(written,(const char**)&buf,&len,"*** ERROR MotionSequenceEngine save failed on initial frame spec\n")) return 0;
+	}
 	while(t!=-1U) {
-//		std::cout << "t="<<t<<"..."<<std::flush;
+		//std::cout << "t="<<t<<"..."<<std::endl;
 		for(unsigned int i=0; i<NumOutputs; i++) {
-//			cout << i << ' ' << outputNames[i] << ' ' << getKeyFrame(tprevs[i]).cmd.value << ' ' << getKeyFrame(tprevs[i]).cmd.weight << ' ' << getKeyFrame(tprevs[i]).starttime << " state: " << starts[i] <<' '<< prevs[i] <<' '<< nexts[i] << " cur: " << getKeyFrame(tprevs[i]).prev << ' ' << tprevs[i] << ' ' << getKeyFrame(tprevs[i]).next << endl;
+			//cout << i << ' ' << outputNames[i] << " (" << getKeyFrame(tprevs[i]).cmd.value << ',' << getKeyFrame(tprevs[i]).cmd.weight << ") " << getKeyFrame(tprevs[i]).starttime << " state: " << starts[i] <<' '<< prevs[i] <<' '<< nexts[i] << " cur: " << getKeyFrame(tprevs[i]).prev << ' ' << tprevs[i] << ' ' << getKeyFrame(tprevs[i]).next << endl;
 			//first conditional is to skip 0 weighted values in first frame
 			if((t!=0 || getKeyFrame(tprevs[i]).cmd.weight!=0) && getKeyFrame(tprevs[i]).starttime==t) {
 				if(getKeyFrame(tprevs[i]).cmd.weight==1) {
-					if(t!=0) {
-						written=snprintf(buf,len,"%s\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode);
-						if(!ChkAdvance(written,(const char**)&buf,&len,"*** ERROR MotionSequenceEngine save failed\n")) return 0;
-					}
+					written=snprintf(buf,len,"%s\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode);
+					if(!ChkAdvance(written,(const char**)&buf,&len,"*** ERROR MotionSequenceEngine save failed\n")) return 0;
 				} else {
 					written=snprintf(buf,len,"%s\t%g\t%g\n",outputNames[i],getKeyFrame(tprevs[i]).cmd.value/loadSaveMode,getKeyFrame(tprevs[i]).cmd.weight);
 					if(!ChkAdvance(written,(const char**)&buf,&len,"*** ERROR MotionSequenceEngine save failed\n")) return 0;
@@ -308,6 +321,17 @@
 		setOutputCmd(i,pose.getOutputCmd(i));
 }
 
+PostureEngine MotionSequenceEngine::getPose() {
+	PostureEngine pose;
+	getPose(pose);
+	return pose;
+}
+
+void MotionSequenceEngine::getPose(PostureEngine& pose) {
+	for(unsigned int i=0; i<NumOutputs; i++)
+		pose.setOutputCmd(i,getOutputCmd(i));
+}
+
 void MotionSequenceEngine::overlayPose(const PostureEngine& pose) {
 	for(unsigned int i=0; i<NumOutputs; i++)
 		if(pose.getOutputCmd(i).weight>0)
@@ -467,9 +491,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionSequenceEngine.h ./Motion/MotionSequenceEngine.h
--- ../Tekkotsu_2.2.2/Motion/MotionSequenceEngine.h	Wed Dec 22 20:47:07 2004
+++ ./Motion/MotionSequenceEngine.h	Tue Jan 11 13:39:36 2005
@@ -102,7 +102,7 @@
 class MotionSequenceEngine : public LoadSave {
 public:
 	//!constructor, will start playing immediately
-	MotionSequenceEngine() : LoadSave(), playtime(1), lasttime(0), endtime(0), playspeed(1.0), playing(true), loadSaveMode(M_PI/180) {}
+	MotionSequenceEngine() : LoadSave(), playtime(1), lasttime(0), endtime(0), playspeed(1.0), playing(true), hold(true), loadSaveMode(M_PI/180) {}
 	//!destructor
 	virtual ~MotionSequenceEngine() {}
 
@@ -138,6 +138,8 @@
 	void setOutputCmd(unsigned int i, const OutputCmd& cmd); //!< will insert a keyframe for the given output, or change an existing one
 	const OutputCmd& getOutputCmd(unsigned int i); //!< gets the value of output @a i at the playhead
 	void setPose(const PostureEngine& pose); //!< calls setOutputCmd on each of the OutputCmds in @a pose
+	PostureEngine getPose(); //!< returns the set of OutputCmd's at the current playhead as a PostureEngine
+	void getPose(PostureEngine& pose); //!< stores the set of OutputCmd's at the current playhead into the specified PostureEngine
 	void overlayPose(const PostureEngine& pose); //!< calls setOutputCmd on non-zero weighted OutputCmds in @a pose
 	void compress(); //!< compresses the sequence by eliminating sequences of moves which are identical
 	virtual unsigned int getMaxFrames() const=0; //!< returns the maximum number of key frames (Move's) which can be stored, determined by the instantiating MotionSequenceMC's template parameter
@@ -154,6 +156,10 @@
 	unsigned int getEndTime() const { return endtime; }   //!< returns the length of the motion sequence (in milliseconds)
 	void setSpeed(float x) { playspeed=x; }               //!< sets the playback speed (e.g. 1=regular, 0.5=half speed, -1=@b backwards)
 	float getSpeed() const { return playspeed; }          //!< returns the playback speed
+	
+	virtual void setHold(bool h=true) { hold=h; } //!< Sets #hold - if this is set to false, it will allow a persistent motion to behave the same as a pruned motion, without being pruned
+	virtual bool getHold() { return hold; }       //!< return #hold
+	
 	//@}
 
 	//!@name Deprecated
@@ -188,6 +194,7 @@
 	unsigned int endtime;               //!< max of #moves's Move::starttime's
 	float playspeed;                    //!< multiplies the difference between current time and starttime, negative will cause play backwards
 	bool playing;                       //!< true if playing, false if paused
+	bool hold;                          //!< if set to true, the posture will be kept active; otherwise joints will be marked unused after each posture is achieved (as if the posture was pruned); set through setHold()
 	
 	float loadSaveMode;                 //!< 1 to use radians, M_PI/180 for degrees during a save
 
@@ -224,10 +231,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/MotionSequenceMC.h ./Motion/MotionSequenceMC.h
--- ../Tekkotsu_2.2.2/Motion/MotionSequenceMC.h	Wed Dec 22 20:47:07 2004
+++ ./Motion/MotionSequenceMC.h	Tue Jan 11 13:38:52 2005
@@ -23,11 +23,11 @@
 		clear();
 	}
 	//!constructor, loads from a file and then resets the playtime to beginning and begins to play
-	explicit MotionSequenceMC(const char* filename)
-		: MotionSequenceEngine(), moves()
+	explicit MotionSequenceMC(const std::string& filename)
+		: MotionCommand(), MotionSequenceEngine(), moves()
 	{
 		clear();
-		LoadFile(filename);
+		LoadFile(filename.c_str());
 		setTime(1);
 	}
 	//!destructor
@@ -43,6 +43,7 @@
 			for(unsigned int i=0; i<NumOutputs; i++) //just copies getOutputCmd(i) across frames
 				motman->setOutput(this,i,getOutputCmd(i));
 		} else {
+			//cout << getTime() << ": ";
 			for(unsigned int i=0; i<NumOutputs; i++) { //fill out the buffer of commands for smoother movement
 				Move_idx_t prev=prevs[i],next=nexts[i];
 				OutputCmd frames[NumFrames];
@@ -51,11 +52,15 @@
 					setRange(t,prev,next);
 					if(next!=invalid_move)
 						calcOutput(frames[j],t,moves[prev],moves[next]);
-					else
-						frames[j].unset();
+					else if(hold)
+						frames[j]=moves[prev].cmd;
 				}
+				/*if(i==RFrLegOffset+RotatorOffset)
+					for(unsigned int j=0; j<NumFrames; j++)
+					cout << '(' << frames[j].value << ',' << frames[j].weight << ") "; */
 				motman->setOutput(this,i,frames);
 			}
+			//cout <<'\n'<< flush;
 		}
 		return NumOutputs;
 		//		if(i<NumLegJointss)
@@ -69,6 +74,7 @@
 			moves.back().cmd.unset();
 			moves.back().next=invalid_move;
 			moves.back().prev=invalid_move;
+			moves.back().starttime=0;
 			nexts[i]=invalid_move;
 		}
 		setTime(1);
@@ -82,7 +88,7 @@
 	typedef ListMemBuf<Move,MAXMOVE,Move_idx_t> list_t; //!< shorthand for the ListMemBuf that stores all of the movement frames
 
 	// MEMBERS:
-	list_t moves;                       //!< stores all of the movement keyframes
+	list_t moves; //!< stores all of the movement keyframes
 
 	virtual Move& getKeyFrame(Move_idx_t x) { return moves[x]; }
 	virtual const Move& getKeyFrame(Move_idx_t x) const { return moves[x]; }
@@ -119,10 +125,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/OldHeadPointerMC.cc ./Motion/OldHeadPointerMC.cc
--- ../Tekkotsu_2.2.2/Motion/OldHeadPointerMC.cc	Thu Oct 14 16:23:50 2004
+++ ./Motion/OldHeadPointerMC.cc	Thu Oct 14 16:23:50 2004
@@ -176,7 +176,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/OldHeadPointerMC.h ./Motion/OldHeadPointerMC.h
--- ../Tekkotsu_2.2.2/Motion/OldHeadPointerMC.h	Thu Oct 14 16:23:50 2004
+++ ./Motion/OldHeadPointerMC.h	Thu Oct 14 16:23:50 2004
@@ -116,7 +116,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/OldKinematics.cc ./Motion/OldKinematics.cc
--- ../Tekkotsu_2.2.2/Motion/OldKinematics.cc	Thu Aug  5 16:29:04 2004
+++ ./Motion/OldKinematics.cc	Thu Aug  5 16:29:04 2004
@@ -603,7 +603,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/OldKinematics.h ./Motion/OldKinematics.h
--- ../Tekkotsu_2.2.2/Motion/OldKinematics.h	Thu Aug  5 16:29:04 2004
+++ ./Motion/OldKinematics.h	Thu Aug  5 16:29:04 2004
@@ -118,7 +118,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/OutputCmd.cc ./Motion/OutputCmd.cc
--- ../Tekkotsu_2.2.2/Motion/OutputCmd.cc	Fri Sep 12 11:29:03 2003
+++ ./Motion/OutputCmd.cc	Tue Jan  4 14:51:41 2005
@@ -1,3 +1,15 @@
 #include "OutputCmd.h"
 
 OutputCmd OutputCmd::unused;
+
+/*! @file
+ * @brief Implements OutputCmd, holds information needed to control a single output
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
diff -urdN ../Tekkotsu_2.2.2/Motion/OutputCmd.h ./Motion/OutputCmd.h
--- ../Tekkotsu_2.2.2/Motion/OutputCmd.h	Sun Sep  7 18:14:01 2003
+++ ./Motion/OutputCmd.h	Sun Sep  7 18:14:01 2003
@@ -27,7 +27,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/OutputPID.h ./Motion/OutputPID.h
--- ../Tekkotsu_2.2.2/Motion/OutputPID.h	Sat Dec 13 00:01:40 2003
+++ ./Motion/OutputPID.h	Sat Dec 13 00:01:40 2003
@@ -44,7 +44,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/PIDMC.h ./Motion/PIDMC.h
--- ../Tekkotsu_2.2.2/Motion/PIDMC.h	Mon Dec 20 19:42:21 2004
+++ ./Motion/PIDMC.h	Mon Dec 20 19:42:21 2004
@@ -139,7 +139,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/Path.h ./Motion/Path.h
--- ../Tekkotsu_2.2.2/Motion/Path.h	Thu Sep 25 11:27:23 2003
+++ ./Motion/Path.h	Thu Sep 25 11:27:23 2003
@@ -107,7 +107,7 @@
  * @endverbatim
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/PostureEngine.cc ./Motion/PostureEngine.cc
--- ../Tekkotsu_2.2.2/Motion/PostureEngine.cc	Wed Dec 22 19:59:03 2004
+++ ./Motion/PostureEngine.cc	Fri Jan  7 14:36:38 2005
@@ -8,12 +8,17 @@
 
 void PostureEngine::takeSnapshot() {
 	for(unsigned int i=0; i<NumOutputs; i++)
-		cmds[i].set(state->outputs[i],1);
+		cmds[i].value=state->outputs[i];
 }
 
 void PostureEngine::takeSnapshot(const WorldState* st) {
 	for(unsigned int i=0; i<NumOutputs; i++)
-		cmds[i].set(st->outputs[i],1);
+		cmds[i].value=st->outputs[i];
+}
+
+void PostureEngine::setWeights(float w, unsigned int lowjoint, unsigned int highjoint) {
+	for(unsigned int i=lowjoint; i<highjoint; i++)
+		cmds[i].weight=w;
 }
 
 void PostureEngine::clear() {
@@ -334,9 +339,9 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Motion/PostureEngine.h ./Motion/PostureEngine.h
--- ../Tekkotsu_2.2.2/Motion/PostureEngine.h	Wed Dec 22 19:59:03 2004
+++ ./Motion/PostureEngine.h	Fri Jan  7 14:36:38 2005
@@ -14,59 +14,28 @@
  *  @see PostureMC */
 class PostureEngine : public LoadSave, public Kinematics {
 public:
+
+	//!@name Constructors
 	//!constructor
 	PostureEngine() : LoadSave(), Kinematics(*kine) {}
 	//!constructor, loads a position from a file
 	/*! @todo might want to make a library of common positions so they don't have to be loaded repeatedly from memstick */
-	PostureEngine(const char * filename) : LoadSave(), Kinematics(*kine) { LoadFile(filename); }
+	PostureEngine(const std::string& filename) : LoadSave(), Kinematics(*kine) { LoadFile(filename.c_str()); }
 	//!constructor, initializes joint positions to the current state of the outputs as defined by @a state
 	PostureEngine(const WorldState* st) : LoadSave(), Kinematics(*kine) { takeSnapshot(st); }
 	//! destructor
 	virtual ~PostureEngine();
+	//@}
 
-	//! sets the internal #cmds to the current state of the outputs
-	virtual void takeSnapshot();
-
-	//! sets the internal #cmds to the current state of the outputs as defined by @a state
-	virtual void takeSnapshot(const WorldState* st);
-
-	//! sets all joints to unused
-	virtual void clear();
-
-	//! sets joints of this to all joints of @a pe which are not equal to unused (layers @a pe over this) stores into this
-	virtual PostureEngine& setOverlay(const PostureEngine& pe);
-	//! sets joints of this to all joints of @a pe which are not equal to unused (layers @a pe over this) returns new PostureEngine
-	virtual PostureEngine createOverlay(const PostureEngine& pe) const;
-
-	//! sets joints of this which are equal to unused to @a pe, (layers this over @a pe) stores into this
-	virtual PostureEngine& setUnderlay(const PostureEngine& pe);
-	//! sets joints of this which are equal to unused to @a pe, (layers this over @a pe) returns new PostureEngine
-	virtual PostureEngine createUnderlay(const PostureEngine& pe) const;
 
-	//! computes a weighted average of this vs. @a pe, @a w being the weight towards @a pe (so @a w==1 just copies @a pe)
-	virtual PostureEngine& setAverage(const PostureEngine& pe,float w=0.5);
-	//! computes a weighted average of this vs. @a pe, @a w being the weight towards @a pe (so @a w==1 just copies @a pe)
-	virtual PostureEngine createAverage(const PostureEngine& pe,float w=0.5) const;
 
-	//! computes a weighted average of this vs. @a pe, using the weight values of the joints, storing the total weight in the result's weight value
-	virtual PostureEngine& setCombine(const PostureEngine& pe);
-	//! computes a weighted average of this vs. @a pe, using the weight values of the joints, storing the total weight in the result's weight value
-	virtual PostureEngine createCombine(const PostureEngine& pe) const;
-
-	//! returns the sum squared error between this and pe's output values, but only between outputs which are both not unused
-	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
-	float diff(const PostureEngine& pe) const;
-	
-	//! returns the average sum squared error between this and pe's output values for outputs which are both not unused
-	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
-	float avgdiff(const PostureEngine& pe) const;
-	
-	//! returns the max error between this and pe's output values for outputs which are both not unused
-	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
-	float maxdiff(const PostureEngine& pe) const;
-	
-	//! NOT VIRTUAL! You should be able to call this to set outputs without checking out, just a peekMotion().  Theoretically.
-	//!@name Output Accessors
+	//! You should be able to call the non-virtual functions without checking out, just a MotionManager::peekMotion().  Theoretically.
+	//!@name Output Value Access/Control
+	virtual void takeSnapshot(); //!< sets the values of #cmds to the current state of the outputs (doesn't change the weights)
+	virtual void takeSnapshot(const WorldState* st); //!< sets the values of #cmds to the current state of the outputs as defined by @a state (doesn't change the weights)
+	virtual void setWeights(float w) { setWeights(w,0,NumOutputs); } //!< set the weights of all #cmds
+	virtual void setWeights(float w, unsigned int lowjoint, unsigned int highjoint); //!< the the weights of a range of #cmds
+	virtual void clear(); //!< sets all joints to unused
 	inline PostureEngine& setOutputCmd(unsigned int i, const OutputCmd& c) { cmds[i]=c; return *this; } //!<sets output @a i to OutputCmd @a c, returns @c *this so you can chain them; also remember that OutputCmd support implicit conversion from floats (so you can just pass a float)
 	inline OutputCmd& operator()(unsigned int i) { return cmds[i]; } //!< returns output @a i, returns a reference so you can also set through an assignment to this call, e.g. pose(MouthOffset)=.1; (remember that OutputCmd support implicit conversion from floats)
 	inline const OutputCmd& operator()(unsigned int i) const { return cmds[i]; } //!< returns output @a i
@@ -74,6 +43,8 @@
 	inline const OutputCmd& getOutputCmd(unsigned int i) const { return cmds[i]; } //!< returns output @a i
 	//@}
 
+
+
 	//!Uses LoadSave interface so you can load/save to files, uses a human-readable storage format
 	//!@name LoadSave
 	virtual unsigned int getBinSize() const;
@@ -83,11 +54,15 @@
 	virtual unsigned int SaveFile(const char filename[]) const;
 	//@}
 
+
+
+	//!@name Kinematics
+
 	//! Performs inverse kinematics to solve for positioning @a Peff on link @a j to @a Ptgt (expects homogenous form); if solution found, stores result in this posture and returns true
 	/*! @param Ptgt the target point, in base coordinates
 	 *  @param link the output offset of the joint to move
 	 *  @param Peff the point (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector") */
-	bool solveLinkPosition(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff);
+	virtual bool solveLinkPosition(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff);
 
 	//! Performs inverse kinematics to solve for positioning Peff on link @a j to @a Ptgt; if solution found, stores result in this posture and returns true
 	/*! @param Ptgt_x the target x position (relative to base frame)
@@ -97,14 +72,14 @@
 	 *  @param Peff_x the x position (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector")
 	 *  @param Peff_y the y position (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector")
 	 *  @param Peff_z the z position (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector") */
-	bool solveLinkPosition(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z)
+	virtual bool solveLinkPosition(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z)
 	{ return solveLinkPosition(pack(Ptgt_x,Ptgt_y,Ptgt_z),link,pack(Peff_x,Peff_y,Peff_z)); }
 
 	//! Performs inverse kinematics to solve for positioning Peff on link @a j to point at Ptgt (expects homogenous form); if solution found, stores result in this posture and returns true
 	/*! @param Ptgt the target point, in base coordinates
 	 *  @param link the output offset of the joint to move
 	 *  @param Peff the point (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector") */
-	bool solveLinkVector(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff);
+	virtual bool solveLinkVector(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff);
 
 	//! Performs inverse kinematics to solve for positioning @a Peff on link @a j to point at @a Ptgt; if solution found, stores result in this posture and returns true
 	/*! @param Ptgt_x the target x position (relative to base frame)
@@ -116,9 +91,49 @@
 	 *  @param Peff_z the z position (relative to @a link) which you desire to have moved to @a Ptgt (it's the desired "effector")
 	 *
 	 *  @todo this method is an approximation, could be more precise, and perhaps faster, although this is pretty good. */
-	bool solveLinkVector(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z)
+	virtual bool solveLinkVector(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z)
 	{ return solveLinkVector(pack(Ptgt_x,Ptgt_y,Ptgt_z),link,pack(Peff_x,Peff_y,Peff_z)); }
 
+	//@}
+
+
+
+	//!@name Combining Postures
+	
+	//! sets joints of this to all joints of @a pe which are not equal to unused (layers @a pe over this) stores into this
+	virtual PostureEngine& setOverlay(const PostureEngine& pe);
+	//! sets joints of this to all joints of @a pe which are not equal to unused (layers @a pe over this) returns new PostureEngine
+	virtual PostureEngine createOverlay(const PostureEngine& pe) const;
+
+	//! sets joints of this which are equal to unused to @a pe, (layers this over @a pe) stores into this
+	virtual PostureEngine& setUnderlay(const PostureEngine& pe);
+	//! sets joints of this which are equal to unused to @a pe, (layers this over @a pe) returns new PostureEngine
+	virtual PostureEngine createUnderlay(const PostureEngine& pe) const;
+
+	//! computes a weighted average of this vs. @a pe, @a w being the weight towards @a pe (so @a w==1 just copies @a pe)
+	virtual PostureEngine& setAverage(const PostureEngine& pe,float w=0.5);
+	//! computes a weighted average of this vs. @a pe, @a w being the weight towards @a pe (so @a w==1 just copies @a pe)
+	virtual PostureEngine createAverage(const PostureEngine& pe,float w=0.5) const;
+
+	//! computes a weighted average of this vs. @a pe, using the weight values of the joints, storing the total weight in the result's weight value
+	virtual PostureEngine& setCombine(const PostureEngine& pe);
+	//! computes a weighted average of this vs. @a pe, using the weight values of the joints, storing the total weight in the result's weight value
+	virtual PostureEngine createCombine(const PostureEngine& pe) const;
+
+	//! returns the sum squared error between this and pe's output values, but only between outputs which are both not unused
+	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
+	virtual float diff(const PostureEngine& pe) const;
+	
+	//! returns the average sum squared error between this and pe's output values for outputs which are both not unused
+	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
+	virtual float avgdiff(const PostureEngine& pe) const;
+	
+	//! returns the max error between this and pe's output values for outputs which are both not unused
+	/*! @todo create a version which does weighted summing?  This treats weights as all or nothing */
+	virtual float maxdiff(const PostureEngine& pe) const;
+	
+	//@}
+
 protected:
 	//all updates come from this posture engine's own state, not WorldState
 	virtual void update(unsigned int c, unsigned int l);
@@ -133,10 +148,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/PostureMC.cc ./Motion/PostureMC.cc
--- ../Tekkotsu_2.2.2/Motion/PostureMC.cc	Wed Dec 31 19:00:00 1969
+++ ./Motion/PostureMC.cc	Fri Jan  7 16:12:35 2005
@@ -0,0 +1,87 @@
+#include "PostureMC.h"
+#include "Shared/Config.h"
+#include "MotionManager.h"
+#include "Shared/WorldState.h"
+
+PostureMC& PostureMC::setDirty(bool d/*=true*/) {
+	dirty=d;
+	targetReached=false;
+	for(unsigned int i=0; i<NumOutputs; i++)
+		curPositions[i]=motman->getOutputCmd(i).value; //not state->outputs[i]; - see function documentation
+	return *this;
+} 
+
+void PostureMC::defaultMaxSpeed(float x/*=1*/) {
+	for(unsigned int i=0; i<NumOutputs; i++)
+		maxSpeeds[i]=MaxOutputSpeed[i]*FrameTime*x; //MaxOutputsSpeed is rad/ms
+	//respect the config values for the neck joints (which are stored as rad/sec)
+	maxSpeeds[HeadOffset+TiltOffset]=config->motion.max_head_tilt_speed*FrameTime*x/1000; 
+	maxSpeeds[HeadOffset+PanOffset]=config->motion.max_head_pan_speed*FrameTime*x/1000;
+	maxSpeeds[HeadOffset+RollOffset]=config->motion.max_head_roll_speed*FrameTime*x/1000;
+}
+
+int PostureMC::updateOutputs() {
+	int tmp=isDirty();
+	if(tmp || hold) {
+		dirty=false;
+		for(unsigned int i=0; i<NumOutputs; i++) {
+			if(maxSpeeds[i]<=0) {
+				curPositions[i]=cmds[i].value;
+				motman->setOutput(this,i,cmds[i]);
+			} else { // we may be trying to exceeded maxSpeed
+				unsigned int f=0;
+				while(cmds[i].value>curPositions[i]+maxSpeeds[i] && f<NumFrames) {
+					curPositions[i]+=maxSpeeds[i];
+					motman->setOutput(this,i,OutputCmd(curPositions[i],cmds[i].weight),f);
+					f++;
+				}
+				while(cmds[i].value<curPositions[i]-maxSpeeds[i] && f<NumFrames) {
+					curPositions[i]-=maxSpeeds[i];
+					motman->setOutput(this,i,OutputCmd(curPositions[i],cmds[i].weight),f);
+					f++;
+				}
+				if(f<NumFrames) { //we reached target value, fill in rest of frames
+					curPositions[i]=cmds[i].value;
+					for(;f<NumFrames;f++)
+						motman->setOutput(this,i,cmds[i],f);
+				} else // we didn't reach target value, still dirty
+					dirty=true;
+			}
+		}
+		if(!dirty && !targetReached) {
+			postEvent(EventBase(EventBase::motmanEGID,getID(),EventBase::statusETID));
+			targetReached=true;
+			targetTimestamp=get_time();
+		}
+	}
+	return tmp;
+}
+
+int PostureMC::isAlive() {
+	if(dirty || !targetReached)
+		return true;
+	if(targetReached && get_time()-targetTimestamp>timeout) { //prevents a conflicted PostureMC's from fighting forever
+		if(getAutoPrune())
+			serr->printf("WARNING: posture timed out - possible joint conflict or out-of-range target\n");
+		return false;
+	}
+	PostureEngine tmp; 
+	tmp.takeSnapshot(); 
+	return (maxdiff(tmp)>tolerance);
+}
+
+void PostureMC::init() {
+	defaultMaxSpeed();
+	setDirty();
+}
+
+/*! @file
+ * @brief Implements PostureMC, a MotionCommand shell for PostureEngine
+ * @author ejt (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
diff -urdN ../Tekkotsu_2.2.2/Motion/PostureMC.h ./Motion/PostureMC.h
--- ../Tekkotsu_2.2.2/Motion/PostureMC.h	Mon Dec 20 19:42:21 2004
+++ ./Motion/PostureMC.h	Fri Jan  7 16:13:10 2005
@@ -4,98 +4,160 @@
 
 #include "MotionCommand.h"
 #include "PostureEngine.h"
-#include "MotionManager.h"
 
 class WorldState;
 
 //! a MotionCommand shell for PostureEngine
 /*! Will autoprune by default once it reaches the target pose.
  * 
- *  If you want to keep it alive so your behavior can use the posture
- *  to move around, either call setAutoPrune(@c false), or pass
- *  @c false to the MotionManager::addMotion() function.
+ *  If you want to keep it alive so your behavior can repeatedly use
+ *  the posture to move around, either call setAutoPrune(@c false), or
+ *  (preferably) use MotionManager::addPersistentMotion() when adding
+ *  the motion.
+ *
+ *  This class will throw a status event when the sensors confirm the
+ *  robot has reached a specified target posture, within a configurable
+ *  range of #tolerance.  The class will keep trying to reach a target
+ *  position for #timeout milliseconds before giving up.
+ *
+ *  By default, this class will adhere to the values of
+ *  ::MaxOutputSpeed, except for head joints which use
+ *  Config::motion_config values.
  */
 class PostureMC : public MotionCommand, public PostureEngine {
 public:
+	//!#timeout will be set to a default value of 2 seconds, #tolerance is .035 radians (~2 degrees), #hold is true
+	//!@name Constructors
+
 	//!constructor
-	PostureMC() : MotionCommand(),PostureEngine(),dirty(true),tolerance(.01) { }
+	PostureMC()
+		: MotionCommand(),PostureEngine(),dirty(true),hold(true),tolerance(.035),
+			targetReached(false),targetTimestamp(0),timeout(2000)
+	{ init(); }
+	
 	//!constructor, loads from @a filename
-	PostureMC(const char* filename) : MotionCommand(),PostureEngine(filename),dirty(true),tolerance(.01) { }
+	PostureMC(const std::string& filename)
+		: MotionCommand(),PostureEngine(filename),dirty(true),hold(true),tolerance(.035),
+			targetReached(false),targetTimestamp(0),timeout(2000)
+	{ init(); }
+	
 	//!constructor, initializes joint positions to the current state of the outputs as defined by @a state
-	PostureMC(const WorldState* st) : MotionCommand(),PostureEngine(st),dirty(true),tolerance(.01) { }
+	PostureMC(const WorldState* st)
+		: MotionCommand(),PostureEngine(st),dirty(true),hold(true),tolerance(.035),
+			targetReached(false),targetTimestamp(0),timeout(2000)
+	{ init(); }
+	
 	//!destructor
 	virtual ~PostureMC() {}
+	//@}
 	
-	//!@name New Stuff
-	/*!@brief call this if you call PostureEngine::setOutputCmd(), that doesn't know about dirty flags */
-	/* This is the downside of making setOutputCmd() not virtual - if you pass this around as just a
-	 * PostureEngine, calls made to that won't be able to update the dirty flag automatically.  However,
-	 * if the object is typed as a PostureMC at the time the call is made, then you don't have to worry.\n
-	 * These are also not virtual - otherwise you'd have to still check the motion out and it would make
-	 * this all pointless! @return @c *this */
-	PostureMC& setDirty(bool d=true) { dirty=d; return *this; } 
+	//!These functions allow you to mediate problems with a physical robot, such as tolerance of joints not going quite where the should, or safe speed of movement
+	//!@name Physical Implementation Issues
+
+	//!Call this if you call PostureEngine::setOutputCmd(), or set values through getOutputCmd()'s reference, since neither will know to set the PostureMC dirty flag
+	/*! This is the downside of making setOutputCmd() not virtual - if
+	 *  you pass this around as just a PostureEngine, calls made to that
+	 *  won't be able to update the dirty flag automatically.  However,
+	 *  if the object is typed as a PostureMC at the time the call is
+	 *  made, then you don't have to worry.\n These are also not virtual
+	 *  - otherwise you'd have to still check the motion out and it
+	 *  would make this all pointless!
+	 *
+	 *  MotionManager::getOutputCmd() is called instead of
+	 *  WorldState::outputs[] because if this is being called rapidly
+	 *  (i.e. after every sensor reading) using the sensor values will
+	 *  cause problems with very slow acceleration due to sensor lag
+	 *  continually resetting the current position.  Using the last
+	 *  value sent by the MotionManager fixes this.
+	 *
+	 * @return @c *this */
+	PostureMC& setDirty(bool d=true);
+
+	//!Sets #hold - if this is set to false, it will allow a persistent motion to behave the same as a pruned motion, without being pruned
+	virtual PostureMC& setHold(bool h=true) { hold=h; return *this; }
+	virtual bool getHold() { return hold; } //!< return #hold
+
 	virtual PostureMC& setTolerance(float t) { tolerance=t; return *this; } //!< sets #tolerance, returns @c *this
 	virtual float getTolerance() { return tolerance; } //!< returns #tolerance
+	virtual PostureMC& setTimeout(unsigned int delay) { timeout=delay; return *this; } //!< sets #timeout, returns @c *this
+	virtual unsigned int getTimeout() { return timeout; } //!< returns #timeout
+
+	//! Sets #maxSpeed to 0 (no maximum)
+	void noMaxSpeed() { for(unsigned int i=0; i<NumOutputs; i++) maxSpeeds[i]=0; }
+	
+	//! Restores #maxSpeed to default ::MaxOutputSpeed values from the robot info file (e.g. ERS7Info.h)
+	/*! Neck joints are instead set from the applicable
+	 *  Config::motion_config values.
+	 *  @param x ratio of the max speed to use; so 0.5 would limit motion to half the recommended upper limit */
+	void defaultMaxSpeed(float x=1);
+	
+	//! Sets #maxSpeed in rad/sec
+	/*! @param i joint offset, see your model's info file (e.g. ERS7Info.h)
+	 *  @param x maximum radians per second to move */
+	void setMaxSpeed(unsigned int i, float x) { maxSpeeds[i]=x*FrameTime/1000; }
+	
+	//! Returns #maxSpeed in rad/sec
+	/*! @param i joint offset, see your model's info file (e.g. ERS7Info.h)
+	 *  @return the maximum speed of joint @a i in radians per second */
+	float getMaxSpeed(unsigned int i) { return maxSpeeds[i]*1000/FrameTime; }
+	
 	//@}
 
 
+
 	//!@name MotionCommand Stuff
-	virtual int updateOutputs() {
-		for(unsigned int i=0; i<NumOutputs; i++)
-			if(cmds[i].weight>0)
-				motman->setOutput(this,i,cmds[i]);
-		bool r=dirty; dirty=false; return r;
-	}
-	virtual int isDirty() { return dirty; }
+	virtual int updateOutputs();
+	virtual int isDirty() { return dirty || !targetReached; }
 
 	//! returns non-zero (true) if PostureEngine::maxdiff() between this and the current position is over #tolerance
 	/*! This is handy so you can set to have the robot go to a position and then automatically remove
 	 *  the MotionCommand when it gets there - but beware fighting Postures which average out and neither
 	 *  succeeds */
-	virtual int isAlive() {
-		if(dirty || getAutoPrune()==false) //doesn't bother computing if we're staying alive anyway
-			return true;
-		PostureEngine tmp; 
-		tmp.takeSnapshot(); 
-		return (maxdiff(tmp)>tolerance);
-	}
+	virtual int isAlive();
 	virtual void DoStart() { MotionCommand::DoStart(); dirty=true; } //!< marks this as dirty each time it is added
 	//@}
 
-	//!Had to override stuff to manage a dirty flag
+	//!These functions merely set the dirty flag and then call the PostureEngine version of the function
 	//!@name PostureEngine Stuff
-	inline virtual void takeSnapshot() { dirty=true; PostureEngine::takeSnapshot(); }
-	inline virtual void takeSnapshot(const WorldState* st) { dirty=true; PostureEngine::takeSnapshot(st); }
-	inline virtual void clear() { dirty=true; PostureEngine::clear(); }
-	inline virtual PostureEngine& setOverlay(const PostureEngine& pe) { dirty=true; PostureEngine::setOverlay(pe); return *this; }
-	inline virtual PostureEngine& setUnderlay(const PostureEngine& pe) { dirty=true; PostureEngine::setUnderlay(pe); return *this; }
-	inline virtual PostureEngine& setAverage(const PostureEngine& pe,float w=0.5) { dirty=true; PostureEngine::setAverage(pe,w); return *this; }
-	inline virtual PostureEngine& setCombine(const PostureEngine& pe) { dirty=true; PostureEngine::setCombine(pe); return *this; }
-	inline PostureEngine& setOutputCmd(unsigned int i, const OutputCmd& c) { dirty=true; PostureEngine::setOutputCmd(i,c); return *this; }
-	inline virtual unsigned int LoadBuffer(const char buf[], unsigned int len) { dirty=true; return PostureEngine::LoadBuffer(buf,len); }
+	inline virtual void takeSnapshot() { setDirty(); PostureEngine::takeSnapshot(); }
+	inline virtual void takeSnapshot(const WorldState* st) { setDirty(); PostureEngine::takeSnapshot(st); }
+	inline virtual void setWeights(float w) { setWeights(w,0,NumOutputs); }
+	inline virtual void setWeights(float w, unsigned int lowjoint, unsigned int highjoint) { setDirty(); PostureEngine::setWeights(w,lowjoint,highjoint); }
+	inline virtual void clear() { setDirty(); PostureEngine::clear(); }
+	inline virtual PostureEngine& setOverlay(const PostureEngine& pe) { setDirty(); PostureEngine::setOverlay(pe); return *this; }
+	inline virtual PostureEngine& setUnderlay(const PostureEngine& pe) { setDirty(); PostureEngine::setUnderlay(pe); return *this; }
+	inline virtual PostureEngine& setAverage(const PostureEngine& pe,float w=0.5) { setDirty(); PostureEngine::setAverage(pe,w); return *this; }
+	inline virtual PostureEngine& setCombine(const PostureEngine& pe) { setDirty(); PostureEngine::setCombine(pe); return *this; }
+	inline PostureEngine& setOutputCmd(unsigned int i, const OutputCmd& c) { setDirty(); PostureEngine::setOutputCmd(i,c); return *this; }
+	inline virtual unsigned int LoadBuffer(const char buf[], unsigned int len) { setDirty(); return PostureEngine::LoadBuffer(buf,len); }
+	inline virtual bool solveLinkPosition(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff) { setDirty(); return PostureEngine::solveLinkPosition(Ptgt,link,Peff); }
+	inline virtual bool solveLinkPosition(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z) { setDirty(); return PostureEngine::solveLinkPosition(Ptgt_x,Ptgt_y,Ptgt_z,link,Peff_x,Peff_y,Peff_z); }
+	inline virtual bool solveLinkVector(const NEWMAT::ColumnVector& Ptgt, unsigned int link, const NEWMAT::ColumnVector& Peff) { setDirty(); return PostureEngine::solveLinkVector(Ptgt,link,Peff); }
+	inline virtual bool solveLinkVector(float Ptgt_x, float Ptgt_y, float Ptgt_z, unsigned int link, float Peff_x, float Peff_y, float Peff_z) { setDirty(); return PostureEngine::solveLinkVector(Ptgt_x,Ptgt_y,Ptgt_z,link,Peff_x,Peff_y,Peff_z); }
 	//@}
 
 protected:
-	bool dirty; //!< true if changes have been made since last updateOutputs()
-	float tolerance; //!< when autopruning, if the maxdiff() of this posture and the robot's current position is below this value, isAlive() will be false, defaults to 0.01 (5.7 degree error)
+	void init(); //!< initialize #curPositions and #maxSpeeds
 
-	//!defines Registerable stuff
-	/*	REGDEFCUSTOMMEM(PostureMC) {
-		MotionCommand::registerDataRegions(regions);
-		registerRegion(regions,&cmds,&cmds,sizeof(cmds));//for PostureEngine, LoadSave doesn't have any (nonstatic) members
-		registerRegion(regions,&dirty,&tolerance,sizeof(tolerance));
-		}*/
+	bool  dirty;                    //!< true if changes have been made since last updateOutputs()
+	bool  hold;                     //!< if set to true, the posture will be kept active; otherwise joints will be marked unused after each posture is achieved (as if the posture was pruned); set through setHold()
+	float tolerance;                //!< when autopruning, if the maxdiff() of this posture and the robot's current position is below this value, isAlive() will be false, defaults to 0.01 (5.7 degree error)
+	bool  targetReached;            //!< false if any joint is still moving towards its target
+	unsigned int targetTimestamp;   //!< time at which the targetReached flag was set
+	unsigned int timeout;           //!< number of milliseconds to wait before giving up on a target that should have already been reached, a value of -1U will try forever
+  float curPositions[NumOutputs]; //!< stores the last commanded value for each joint
+	float maxSpeeds[NumOutputs];    //!< initialized from Config::motion_config, but can be overridden by setMaxSpeed(); rad per frame
 };
 
 /*! @file
- * @brief Defines PostureMC, a MotionCommand shell for PostureEngine
+ * @brief Describes PostureMC, a MotionCommand shell for PostureEngine
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Motion/RemoteControllerMC.h ./Motion/RemoteControllerMC.h
--- ../Tekkotsu_2.2.2/Motion/RemoteControllerMC.h	Mon Dec 20 19:42:21 2004
+++ ./Motion/RemoteControllerMC.h	Mon Dec 20 19:42:21 2004
@@ -45,7 +45,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/Spline.h ./Motion/Spline.h
--- ../Tekkotsu_2.2.2/Motion/Spline.h	Thu Sep 25 11:27:23 2003
+++ ./Motion/Spline.h	Thu Sep 25 11:27:23 2003
@@ -375,7 +375,7 @@
  * @endverbatim
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/TailWagMC.h ./Motion/TailWagMC.h
--- ../Tekkotsu_2.2.2/Motion/TailWagMC.h	Wed Dec 22 20:47:07 2004
+++ ./Motion/TailWagMC.h	Wed Dec 22 20:47:07 2004
@@ -61,7 +61,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/WalkMC.cc ./Motion/WalkMC.cc
--- ../Tekkotsu_2.2.2/Motion/WalkMC.cc	Mon Dec 20 16:26:24 2004
+++ ./Motion/WalkMC.cc	Mon Dec 20 16:26:24 2004
@@ -593,7 +593,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/WalkMC.h ./Motion/WalkMC.h
--- ../Tekkotsu_2.2.2/Motion/WalkMC.h	Wed Dec 22 20:47:07 2004
+++ ./Motion/WalkMC.h	Wed Dec 22 20:47:07 2004
@@ -303,7 +303,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/WaypointEngine.h ./Motion/WaypointEngine.h
--- ../Tekkotsu_2.2.2/Motion/WaypointEngine.h	Tue Jul 27 10:33:59 2004
+++ ./Motion/WaypointEngine.h	Tue Jul 27 10:33:59 2004
@@ -750,7 +750,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/WaypointWalkMC.h ./Motion/WaypointWalkMC.h
--- ../Tekkotsu_2.2.2/Motion/WaypointWalkMC.h	Tue Jul 27 10:33:59 2004
+++ ./Motion/WaypointWalkMC.h	Tue Jul 27 10:33:59 2004
@@ -50,7 +50,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/gvector.h ./Motion/gvector.h
--- ../Tekkotsu_2.2.2/Motion/gvector.h	Thu Sep 25 11:27:23 2003
+++ ./Motion/gvector.h	Thu Sep 25 11:27:23 2003
@@ -677,7 +677,7 @@
  * @endverbatim
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/CVS/Entries ./Motion/roboop/CVS/Entries
--- ../Tekkotsu_2.2.2/Motion/roboop/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,33 @@
+/Makefile/1.11/Tue Nov  9 21:26:13 2004//Ttekkotsu-2_3
+/clik.cpp/1.5/Sun Sep 26 19:55:35 2004//Ttekkotsu-2_3
+/clik.h/1.4/Wed Jul 14 02:32:11 2004//Ttekkotsu-2_3
+/comp_dq.cpp/1.4/Wed Jul 14 02:32:11 2004//Ttekkotsu-2_3
+/comp_dqp.cpp/1.4/Wed Jul 14 02:32:11 2004//Ttekkotsu-2_3
+/config.cpp/1.9/Wed Sep  1 19:51:04 2004//Ttekkotsu-2_3
+/config.h/1.11/Wed Dec 22 19:18:48 2004//Ttekkotsu-2_3
+/control_select.cpp/1.3/Wed Jul 14 02:46:43 2004//Ttekkotsu-2_3
+/control_select.h/1.3/Wed Jul 14 02:46:43 2004//Ttekkotsu-2_3
+/controller.cpp/1.2/Wed Jul 14 02:32:11 2004//Ttekkotsu-2_3
+/controller.h/1.3/Wed Jul 14 02:46:43 2004//Ttekkotsu-2_3
+/delta_t.cpp/1.5/Fri Sep  3 15:56:33 2004//Ttekkotsu-2_3
+/dynamics.cpp/1.6/Wed Jul 14 03:22:32 2004//Ttekkotsu-2_3
+/dynamics_sim.cpp/1.2/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/dynamics_sim.h/1.3/Fri Jul 23 21:33:46 2004//Ttekkotsu-2_3
+/gnugraph.cpp/1.1/Tue Jul 20 17:55:24 2004//Ttekkotsu-2_3
+/gnugraph.h/1.1/Tue Jul 20 17:55:24 2004//Ttekkotsu-2_3
+/homogen.cpp/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/invkine.cpp/1.23/Mon Oct 18 17:01:38 2004//Ttekkotsu-2_3
+/kinemat.cpp/1.16/Tue Dec 21 23:51:22 2004//Ttekkotsu-2_3
+/quaternion.cpp/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/quaternion.h/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/readme.txt/1.2/Wed Jul 14 02:29:35 2004//Ttekkotsu-2_3
+/revisions.txt/1.2/Wed Jul 14 02:29:35 2004//Ttekkotsu-2_3
+/robdocs.tar.gz/1.2/Wed Jul 14 02:29:35 2004/-kb/Ttekkotsu-2_3
+/robot.cpp/1.19/Fri Dec 10 23:49:35 2004//Ttekkotsu-2_3
+/robot.h/1.18/Mon Oct 11 22:01:28 2004//Ttekkotsu-2_3
+/sensitiv.cpp/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/trajectory.cpp/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/trajectory.h/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/utils.cpp/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+/utils.h/1.4/Wed Jul 14 02:32:12 2004//Ttekkotsu-2_3
+D/extra////
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/CVS/Repository ./Motion/roboop/CVS/Repository
--- ../Tekkotsu_2.2.2/Motion/roboop/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Motion/roboop
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/CVS/Root ./Motion/roboop/CVS/Root
--- ../Tekkotsu_2.2.2/Motion/roboop/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/CVS/Tag ./Motion/roboop/CVS/Tag
--- ../Tekkotsu_2.2.2/Motion/roboop/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Entries ./Motion/roboop/extra/CVS/Entries
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,13 @@
+/bench.cpp/1.4/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/demo.cpp/1.4/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/demo_2dof_pd.cpp/1.1/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/makefile.gcc/1.2/Fri Jul  2 00:19:33 2004//Ttekkotsu-2_3
+/matlabtest.m/1.1/Wed Jun 16 21:50:00 2004//Ttekkotsu-2_3
+/puma560_motor.m/1.2/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/puma560_no_motor.m/1.2/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/puma560akb_motor.m/1.2/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/puma560akb_no_motor.m/1.2/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/rtest.cpp/1.4/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/stanford_no_motor.m/1.2/Wed Jul 14 02:29:41 2004//Ttekkotsu-2_3
+/test.txt/1.1/Wed Jun 16 21:50:00 2004//Ttekkotsu-2_3
+D/conf////
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Repository ./Motion/roboop/extra/CVS/Repository
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Motion/roboop/extra
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Root ./Motion/roboop/extra/CVS/Root
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Tag ./Motion/roboop/extra/CVS/Tag
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Entries ./Motion/roboop/extra/conf/CVS/Entries
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/conf/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,7 @@
+/pd_2dof.conf/1.1/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+/puma560_dh.conf/1.2/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+/puma560_mdh.conf/1.2/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+/rhino_dh.conf/1.2/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+/rhino_mdh.conf/1.2/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+/rr_dh.conf/1.1/Wed Jul 14 02:29:48 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Repository ./Motion/roboop/extra/conf/CVS/Repository
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/conf/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Motion/roboop/extra/conf
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Root ./Motion/roboop/extra/conf/CVS/Root
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/conf/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Tag ./Motion/roboop/extra/conf/CVS/Tag
--- ../Tekkotsu_2.2.2/Motion/roboop/extra/conf/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Motion/roboop/extra/conf/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/CVS/Entries ./RemoteProcess/CVS/Entries
--- ../Tekkotsu_2.2.2/RemoteProcess/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,5 @@
+/RemoteProcess.cc/1.4/Thu Sep 25 15:27:50 2003//Ttekkotsu-2_3
+/RemoteProcess.h/1.7/Thu Sep 25 15:27:50 2003//Ttekkotsu-2_3
+/remoteProcess.ocf/1.1/Wed Mar 26 21:35:46 2003//Ttekkotsu-2_3
+/stub.cfg/1.1/Wed Mar 26 21:35:46 2003//Ttekkotsu-2_3
+D/MS////
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/CVS/Repository ./RemoteProcess/CVS/Repository
--- ../Tekkotsu_2.2.2/RemoteProcess/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/RemoteProcess
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/CVS/Root ./RemoteProcess/CVS/Root
--- ../Tekkotsu_2.2.2/RemoteProcess/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/CVS/Tag ./RemoteProcess/CVS/Tag
--- ../Tekkotsu_2.2.2/RemoteProcess/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Entries ./RemoteProcess/MS/CVS/Entries
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+D/OPEN-R////
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Repository ./RemoteProcess/MS/CVS/Repository
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/RemoteProcess/MS
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Root ./RemoteProcess/MS/CVS/Root
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Tag ./RemoteProcess/MS/CVS/Tag
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Entries ./RemoteProcess/MS/OPEN-R/CVS/Entries
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+D/MW////
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Repository ./RemoteProcess/MS/OPEN-R/CVS/Repository
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/RemoteProcess/MS/OPEN-R
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Root ./RemoteProcess/MS/OPEN-R/CVS/Root
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Tag ./RemoteProcess/MS/OPEN-R/CVS/Tag
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Entries ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Entries
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1,4 @@
+/CONNECT.CFG/1.1/Wed Mar 26 21:35:49 2003//Ttekkotsu-2_3
+/HOSTGW.CFG/1.2/Thu Mar 27 04:25:02 2003//Ttekkotsu-2_3
+/OBJECT.CFG/1.1/Wed Mar 26 21:35:49 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Repository ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Repository
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/RemoteProcess/MS/OPEN-R/MW/CONF
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Root ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Root
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Tag ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Tag
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CONF/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Entries ./RemoteProcess/MS/OPEN-R/MW/CVS/Entries
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CVS/Entries	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+D/CONF////
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Repository ./RemoteProcess/MS/OPEN-R/MW/CVS/Repository
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/RemoteProcess/MS/OPEN-R/MW
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Root ./RemoteProcess/MS/OPEN-R/MW/CVS/Root
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Tag ./RemoteProcess/MS/OPEN-R/MW/CVS/Tag
--- ../Tekkotsu_2.2.2/RemoteProcess/MS/OPEN-R/MW/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./RemoteProcess/MS/OPEN-R/MW/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/RemoteProcess.cc ./RemoteProcess/RemoteProcess.cc
--- ../Tekkotsu_2.2.2/RemoteProcess/RemoteProcess.cc	Thu Sep 25 11:27:50 2003
+++ ./RemoteProcess/RemoteProcess.cc	Thu Sep 25 11:27:50 2003
@@ -89,7 +89,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/RemoteProcess/RemoteProcess.h ./RemoteProcess/RemoteProcess.h
--- ../Tekkotsu_2.2.2/RemoteProcess/RemoteProcess.h	Thu Sep 25 11:27:50 2003
+++ ./RemoteProcess/RemoteProcess.h	Thu Sep 25 11:27:50 2003
@@ -54,7 +54,7 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Buffer.cc ./Shared/Buffer.cc
--- ../Tekkotsu_2.2.2/Shared/Buffer.cc	Wed Dec 22 20:47:07 2004
+++ ./Shared/Buffer.cc	Wed Dec 22 20:47:07 2004
@@ -112,7 +112,7 @@
  * Submitted as part of "Full-duplex Audio Streaming" patch
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Buffer.h ./Shared/Buffer.h
--- ../Tekkotsu_2.2.2/Shared/Buffer.h	Wed Dec 22 20:47:07 2004
+++ ./Shared/Buffer.h	Wed Dec 22 20:47:07 2004
@@ -61,7 +61,7 @@
  * Submitted as part of "Full-duplex Audio Streaming" patch
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/CVS/Entries ./Shared/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,41 @@
+/Buffer.cc/1.2/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/Buffer.h/1.2/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/CommonInfo.h/1.1/Tue Dec 23 06:33:43 2003//Ttekkotsu-2_3
+/Config.cc/1.42/Thu Jan 20 23:18:43 2005//Ttekkotsu-2_3
+/Config.h/1.41/Thu Jan 20 23:18:43 2005//Ttekkotsu-2_3
+/ERS210Info.h/1.19/Tue Jan 11 23:30:43 2005//Ttekkotsu-2_3
+/ERS220Info.h/1.20/Tue Jan 11 23:30:43 2005//Ttekkotsu-2_3
+/ERS2xxInfo.h/1.14/Tue Jan 11 23:30:43 2005//Ttekkotsu-2_3
+/ERS7Info.h/1.23/Tue Jan 11 23:30:43 2005//Ttekkotsu-2_3
+/Factory.h/1.5/Thu Oct 30 23:24:20 2003//Ttekkotsu-2_3
+/ListMemBuf.h/1.9/Tue Dec 21 20:29:14 2004//Ttekkotsu-2_3
+/LoadSave.cc/1.5/Thu Mar 25 17:07:44 2004//Ttekkotsu-2_3
+/LoadSave.h/1.11/Thu Apr  8 16:28:06 2004//Ttekkotsu-2_3
+/LockScope.h/1.3/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/MutexLock.h/1.9/Thu Feb 12 17:48:59 2004//Ttekkotsu-2_3
+/ProcessID.cc/1.3/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/ProcessID.h/1.3/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/Profiler.cc/1.13/Thu Mar 25 17:08:57 2004//Ttekkotsu-2_3
+/Profiler.h/1.11/Wed Feb  4 23:06:47 2004//Ttekkotsu-2_3
+/ProjectInterface.cc/1.5/Fri Jul 16 19:25:09 2004//Ttekkotsu-2_3
+/ProjectInterface.h/1.6/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/ReferenceCounter.h/1.7/Thu Nov 11 20:35:00 2004//Ttekkotsu-2_3
+/RobotInfo.h/1.15/Mon Feb  9 22:45:28 2004//Ttekkotsu-2_3
+/SharedObject.h/1.3/Fri Sep 12 23:42:12 2003//Ttekkotsu-2_3
+/SharedQueue.h/1.5/Sun Jan 18 10:16:58 2004//Ttekkotsu-2_3
+/SystemUtility.h/1.4/Fri Oct 10 17:46:04 2003//Ttekkotsu-2_3
+/TimeET.cc/1.3/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/TimeET.h/1.4/Thu Mar 25 17:09:18 2004//Ttekkotsu-2_3
+/Util.h/1.5/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/WMclass.cc/1.2/Tue Oct  7 01:01:09 2003//Ttekkotsu-2_3
+/WMclass.h/1.3/Fri Oct 10 17:46:04 2003//Ttekkotsu-2_3
+/WorldState.cc/1.29/Tue Jan 11 23:49:23 2005//Ttekkotsu-2_3
+/WorldState.h/1.28/Tue Jul 27 14:36:50 2004//Ttekkotsu-2_3
+/debuget.h/1.2/Thu Sep 25 15:31:53 2003//Ttekkotsu-2_3
+/get_time.cc/1.3/Fri Jul 25 20:18:07 2003//Ttekkotsu-2_3
+/get_time.h/1.2/Fri Jul 25 20:18:08 2003//Ttekkotsu-2_3
+/mathutils.h/1.3/Thu Jan  9 02:03:00 2003//Ttekkotsu-2_3
+/string_util.cc/1.3/Wed Jan 14 20:45:28 2004//Ttekkotsu-2_3
+/string_util.h/1.3/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+D/jpeg-6b////
+D/newmat////
diff -urdN ../Tekkotsu_2.2.2/Shared/CVS/Repository ./Shared/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared
diff -urdN ../Tekkotsu_2.2.2/Shared/CVS/Root ./Shared/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/CVS/Tag ./Shared/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/CVS/Tag	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/CommonInfo.h ./Shared/CommonInfo.h
--- ../Tekkotsu_2.2.2/Shared/CommonInfo.h	Tue Dec 23 01:33:43 2003
+++ ./Shared/CommonInfo.h	Tue Dec 23 01:33:43 2003
@@ -34,7 +34,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Config.cc ./Shared/Config.cc
--- ../Tekkotsu_2.2.2/Shared/Config.cc	Mon Dec 20 16:27:11 2004
+++ ./Shared/Config.cc	Thu Jan 20 18:18:43 2005
@@ -251,6 +251,13 @@
       }
       break;
     case sec_behaviors:
+      if (strncasecmp(key,"flash_bytes",29)==0) {
+        behaviors.flash_bytes = atoi(value);
+        return &behaviors.flash_bytes;
+      } else if (strncasecmp(key,"flash_on_start",29)==0) {
+        behaviors.flash_on_start = atoi(value);
+        return &behaviors.flash_on_start;
+			}
       break;
     case sec_controller:
       if (strncasecmp(key,"gui_port",29)==0) {
@@ -533,9 +540,9 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Shared/Config.h ./Shared/Config.h
--- ../Tekkotsu_2.2.2/Shared/Config.h	Wed Dec 22 20:47:07 2004
+++ ./Shared/Config.h	Thu Jan 20 18:18:43 2005
@@ -135,6 +135,9 @@
 
 	//!placeholder
 	struct behaviors_config {
+		unsigned int flash_bytes; //!< how many bytes of the IP to flash
+		bool flash_on_start;      //!< whether or not to trigger flashing when initially started
+		behaviors_config() : flash_bytes(4), flash_on_start(true) {} //!< constructor
 	} behaviors;
     
 	//!controller information
@@ -254,10 +257,10 @@
  * @author alokl (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Shared/ERS210Info.h ./Shared/ERS210Info.h
--- ../Tekkotsu_2.2.2/Shared/ERS210Info.h	Thu Sep 16 14:35:12 2004
+++ ./Shared/ERS210Info.h	Tue Jan 11 18:30:43 2005
@@ -166,8 +166,10 @@
 	};
 	
 	//! Provides a string name for each button
-	const char* const ButtonNames[NumButtons] = {
-		"LFrPaw","RFrPaw","LBkPaw","ChinBut","BackBut","HeadFrBut","HeadBkBut"
+	const char* const buttonNames[NumButtons] = {
+		"LFrPaw","RFrPaw","LBkPaw","RBkPaw",
+		"ChinBut","BackBut",
+		"HeadFrBut","HeadBkBut"
 	};
 
 	//! holds offset to different sensor values in WorldState::sensors[]
@@ -185,6 +187,14 @@
 		PowerCurrentOffset //!< milli-amp negative values (maybe positive while charging?)
 	};
 
+	//! Provides a string name for each sensor
+	const char* const sensorNames[NumSensors] = {
+		"IRDist",
+		"BAccel","LAccel","DAccel",
+		"Thermo",
+		"PowerRemain","PowerThermo","PowerCapacity","PowerVoltage","PowerCurrent"
+	};
+
 	//@}
 
 
@@ -469,10 +479,10 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Shared/ERS220Info.h ./Shared/ERS220Info.h
--- ../Tekkotsu_2.2.2/Shared/ERS220Info.h	Fri Sep 17 14:29:54 2004
+++ ./Shared/ERS220Info.h	Tue Jan 11 18:30:43 2005
@@ -260,8 +260,10 @@
 	};
 
 	//! Provides a string name for each button
-	const char* const ButtonNames[NumButtons] = {
-		"LFrPaw","RFrPaw","LBkPaw","ChinBut","BackBut","HeadFrBut","HeadBkBut","TailLeftBut","TailCenterBut","TailRightBut"
+	const char* const buttonNames[NumButtons] = {
+		"LFrPaw","RFrPaw","LBkPaw","RBkPaw",
+		"ChinBut","BackBut","HeadFrBut","HeadBkBut",
+		"TailLeftBut","TailCenterBut","TailRightBut"
 	};
 
 	//! holds offset to different sensor values in WorldState::sensors[]
@@ -279,6 +281,14 @@
 		PowerCurrentOffset //!< milli-amp negative values (maybe positive while charging?)
 	};
 
+	//! Provides a string name for each sensor
+	const char* const sensorNames[NumSensors] = {
+		"IRDist",
+		"BAccel","LAccel","DAccel",
+		"Thermo",
+		"PowerRemain","PowerThermo","PowerCapacity","PowerVoltage","PowerCurrent"
+	};
+
 	//@}
 
 
@@ -573,10 +583,10 @@
  * @author Daishi MORI (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Shared/ERS2xxInfo.h ./Shared/ERS2xxInfo.h
--- ../Tekkotsu_2.2.2/Shared/ERS2xxInfo.h	Tue Aug 31 15:48:41 2004
+++ ./Shared/ERS2xxInfo.h	Tue Jan 11 18:30:43 2005
@@ -294,6 +294,13 @@
 		TailRightButOffset,
 	};
 
+	//! Provides a string name for each button
+	const char* const buttonNames[NumButtons] = {
+		"LFrPaw","RFrPaw","LBkPaw","RBkPaw",
+		"ChinBut","BackBut","HeadFrBut","HeadBkBut",
+		"TailLeftBut","TailCenterBut","TailRightBut"
+	};
+
 	//! holds offset to different sensor values in WorldState::sensors[]
 	/*! @see WorldState::sensors[] */
 	enum SensorOffset_t {
@@ -309,6 +316,14 @@
 		PowerCurrentOffset //!< milli-amp negative values (maybe positive while charging?)
 	};
 
+	//! Provides a string name for each sensor
+	const char* const sensorNames[NumSensors] = {
+		"IRDist",
+		"BAccel","LAccel","DAccel",
+		"Thermo",
+		"PowerRemain","PowerThermo","PowerCapacity","PowerVoltage","PowerCurrent"
+	};
+
 	//@}
 
 
@@ -610,10 +625,10 @@
  * @author Daishi MORI (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Shared/ERS7Info.h ./Shared/ERS7Info.h
--- ../Tekkotsu_2.2.2/Shared/ERS7Info.h	Mon Dec  6 19:46:24 2004
+++ ./Shared/ERS7Info.h	Tue Jan 11 18:30:43 2005
@@ -195,8 +195,11 @@
 	};
 
 	//! Provides a string name for each button
-	const char* const ButtonNames[NumButtons] = {
-		"LFrPaw","RFrPaw","LBkPaw","ChinBut","HeadBut","FrontBackBut","MiddleBackBut","RearBackBut","WirelessSw"
+	const char* const buttonNames[NumButtons] = {
+		"LFrPaw","RFrPaw","LBkPaw","RBkPaw",
+		"ChinBut","HeadBut",
+		"FrontBackBut","MiddleBackBut","RearBackBut",
+		"WirelessSw"
 	};
 
 	//! holds offset to different sensor values in WorldState::sensors[]
@@ -215,6 +218,13 @@
 		PowerCurrentOffset //!< milli-amp negative values (maybe positive while charging?)
 	};
 
+	//! Provides a string name for each sensor
+	const char* const sensorNames[NumSensors] = {
+		"NearIRDist","FarIRDist","ChestIRDist",
+		"BAccel","LAccel","DAccel",
+		"PowerRemain","PowerThermo","PowerCapacity","PowerVoltage","PowerCurrent"
+	};
+
 	//@}
 
 
@@ -385,7 +395,7 @@
 	/*! a value <= 0 means infinite speed (e.g. LEDs)
 	 *  
 	 *  These limits are <b>not</b> enforced by the framework.  They are simply available for you to use as you see fit.
-	 *  HeadPointerMC is (as of v1.6) the only included MotionCommand to actually use these values.
+	 *  HeadPointerMC and PostureMC are primary examples of included classes which do respect these values (although they can be overridden)
 	 *  
 	 *  These values were obtained from the administrators of the Sony OPEN-R BBS */
 	const float MaxOutputSpeed[NumOutputs] = {
@@ -517,11 +527,11 @@
  * @brief Defines RobotInfo namespace for ERS-210 models, gives some information about the robot's capabilities, such as joint counts, offsets, names and PID values
  * @author ejt (Creator)
  *
- * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Shared/Factory.h ./Shared/Factory.h
--- ../Tekkotsu_2.2.2/Shared/Factory.h	Thu Oct 30 18:24:20 2003
+++ ./Shared/Factory.h	Thu Oct 30 18:24:20 2003
@@ -47,7 +47,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ListMemBuf.h ./Shared/ListMemBuf.h
--- ../Tekkotsu_2.2.2/Shared/ListMemBuf.h	Tue Dec 21 15:29:14 2004
+++ ./Shared/ListMemBuf.h	Tue Dec 21 15:29:14 2004
@@ -334,7 +334,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/LoadSave.cc ./Shared/LoadSave.cc
--- ../Tekkotsu_2.2.2/Shared/LoadSave.cc	Thu Mar 25 12:07:44 2004
+++ ./Shared/LoadSave.cc	Thu Mar 25 12:07:44 2004
@@ -161,7 +161,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/LoadSave.h ./Shared/LoadSave.h
--- ../Tekkotsu_2.2.2/Shared/LoadSave.h	Thu Apr  8 12:28:06 2004
+++ ./Shared/LoadSave.h	Thu Apr  8 12:28:06 2004
@@ -349,7 +349,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/LockScope.h ./Shared/LockScope.h
--- ../Tekkotsu_2.2.2/Shared/LockScope.h	Thu Sep 25 11:31:53 2003
+++ ./Shared/LockScope.h	Thu Sep 25 11:31:53 2003
@@ -22,7 +22,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/MutexLock.h ./Shared/MutexLock.h
--- ../Tekkotsu_2.2.2/Shared/MutexLock.h	Thu Feb 12 12:48:59 2004
+++ ./Shared/MutexLock.h	Thu Feb 12 12:48:59 2004
@@ -260,7 +260,7 @@
  * @author ejt (Creator), Edward A. Lycklama, Vassos Hadzilacos (paper from which this was based)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ProcessID.cc ./Shared/ProcessID.cc
--- ../Tekkotsu_2.2.2/Shared/ProcessID.cc	Thu Sep 25 11:31:53 2003
+++ ./Shared/ProcessID.cc	Thu Sep 25 11:31:53 2003
@@ -7,7 +7,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ProcessID.h ./Shared/ProcessID.h
--- ../Tekkotsu_2.2.2/Shared/ProcessID.h	Thu Sep 25 11:31:53 2003
+++ ./Shared/ProcessID.h	Thu Sep 25 11:31:53 2003
@@ -27,7 +27,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Profiler.cc ./Shared/Profiler.cc
--- ../Tekkotsu_2.2.2/Shared/Profiler.cc	Thu Mar 25 12:08:57 2004
+++ ./Shared/Profiler.cc	Thu Mar 25 12:08:57 2004
@@ -163,7 +163,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Profiler.h ./Shared/Profiler.h
--- ../Tekkotsu_2.2.2/Shared/Profiler.h	Wed Feb  4 18:06:47 2004
+++ ./Shared/Profiler.h	Wed Feb  4 18:06:47 2004
@@ -204,7 +204,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ProjectInterface.cc ./Shared/ProjectInterface.cc
--- ../Tekkotsu_2.2.2/Shared/ProjectInterface.cc	Fri Jul 16 15:25:09 2004
+++ ./Shared/ProjectInterface.cc	Fri Jul 16 15:25:09 2004
@@ -38,7 +38,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ProjectInterface.h ./Shared/ProjectInterface.h
--- ../Tekkotsu_2.2.2/Shared/ProjectInterface.h	Wed Dec 22 20:47:07 2004
+++ ./Shared/ProjectInterface.h	Wed Dec 22 20:47:07 2004
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/ReferenceCounter.h ./Shared/ReferenceCounter.h
--- ../Tekkotsu_2.2.2/Shared/ReferenceCounter.h	Thu Nov 11 15:35:00 2004
+++ ./Shared/ReferenceCounter.h	Thu Nov 11 15:35:00 2004
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/RobotInfo.h ./Shared/RobotInfo.h
--- ../Tekkotsu_2.2.2/Shared/RobotInfo.h	Mon Feb  9 17:45:28 2004
+++ ./Shared/RobotInfo.h	Mon Feb  9 17:45:28 2004
@@ -41,7 +41,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/SharedObject.h ./Shared/SharedObject.h
--- ../Tekkotsu_2.2.2/Shared/SharedObject.h	Fri Sep 12 19:42:12 2003
+++ ./Shared/SharedObject.h	Fri Sep 12 19:42:12 2003
@@ -116,7 +116,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/SharedQueue.h ./Shared/SharedQueue.h
--- ../Tekkotsu_2.2.2/Shared/SharedQueue.h	Sun Jan 18 05:16:58 2004
+++ ./Shared/SharedQueue.h	Sun Jan 18 05:16:58 2004
@@ -134,7 +134,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/SystemUtility.h ./Shared/SystemUtility.h
--- ../Tekkotsu_2.2.2/Shared/SystemUtility.h	Fri Oct 10 13:46:04 2003
+++ ./Shared/SystemUtility.h	Fri Oct 10 13:46:04 2003
@@ -60,7 +60,7 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/TimeET.cc ./Shared/TimeET.cc
--- ../Tekkotsu_2.2.2/Shared/TimeET.cc	Thu Sep 25 11:31:53 2003
+++ ./Shared/TimeET.cc	Thu Sep 25 11:31:53 2003
@@ -7,7 +7,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/TimeET.h ./Shared/TimeET.h
--- ../Tekkotsu_2.2.2/Shared/TimeET.h	Thu Mar 25 12:09:18 2004
+++ ./Shared/TimeET.h	Thu Mar 25 12:09:18 2004
@@ -148,7 +148,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/Util.h ./Shared/Util.h
--- ../Tekkotsu_2.2.2/Shared/Util.h	Thu Sep 25 11:31:53 2003
+++ ./Shared/Util.h	Thu Sep 25 11:31:53 2003
@@ -300,7 +300,7 @@
  * @endverbatim
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/WMclass.h ./Shared/WMclass.h
--- ../Tekkotsu_2.2.2/Shared/WMclass.h	Fri Oct 10 13:46:04 2003
+++ ./Shared/WMclass.h	Fri Oct 10 13:46:04 2003
@@ -14,7 +14,7 @@
  *  @author alokl (Ported)
  *  
  *  $Author: ejt $
- *  $Name: HEAD $
+ *  $Name: HEAD $
  *  $Revision: 1.1 $
  *  $State: Exp $
  *  $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/WorldState.cc ./Shared/WorldState.cc
--- ../Tekkotsu_2.2.2/Shared/WorldState.cc	Wed Dec 22 18:13:02 2004
+++ ./Shared/WorldState.cc	Tue Jan 11 18:49:23 2005
@@ -139,16 +139,16 @@
 		pidduties[ERS210Info::MouthOffset] = GETDUTY(ERS210Info::CPCJointMouth);
 
 		// Get foot switches
-		chkEvent(evtBuf,LFrPawOffset,GETB(ERS210Info::CPCSensorLFPaw),"LFrPaw");
-		chkEvent(evtBuf,RFrPawOffset,GETB(ERS210Info::CPCSensorRFPaw),"RFrPaw");
-		chkEvent(evtBuf,LBkPawOffset,GETB(ERS210Info::CPCSensorLHPaw),"LBkPaw");
-		chkEvent(evtBuf,RBkPawOffset,GETB(ERS210Info::CPCSensorRHPaw),"RBkPaw");
+		chkEvent(evtBuf,ERS210Info::LFrPawOffset,GETB(ERS210Info::CPCSensorLFPaw),buttonNames[ERS210Info::LFrPawOffset]);
+		chkEvent(evtBuf,ERS210Info::RFrPawOffset,GETB(ERS210Info::CPCSensorRFPaw),buttonNames[ERS210Info::RFrPawOffset]);
+		chkEvent(evtBuf,ERS210Info::LBkPawOffset,GETB(ERS210Info::CPCSensorLHPaw),buttonNames[ERS210Info::LBkPawOffset]);
+		chkEvent(evtBuf,ERS210Info::RBkPawOffset,GETB(ERS210Info::CPCSensorRHPaw),buttonNames[ERS210Info::RBkPawOffset]);
 
 		// Get buttons
-		chkEvent(evtBuf,ERS210Info::ChinButOffset,  GETB(ERS210Info::CPCSensorChinSwitch),"ChinBut");
-		chkEvent(evtBuf,ERS210Info::BackButOffset,  GETB(ERS210Info::CPCSensorBackSwitch),"BackBut");
-		chkEvent(evtBuf,ERS210Info::HeadFrButOffset,GETD(ERS210Info::CPCSensorHeadFrontPressure),"HeadFrBut");
-		chkEvent(evtBuf,ERS210Info::HeadBkButOffset,GETD(ERS210Info::CPCSensorHeadBackPressure),"HeadBkBut");
+		chkEvent(evtBuf,ERS210Info::ChinButOffset,  GETB(ERS210Info::CPCSensorChinSwitch),buttonNames[ERS210Info::ChinButOffset]);
+		chkEvent(evtBuf,ERS210Info::BackButOffset,  GETB(ERS210Info::CPCSensorBackSwitch),buttonNames[ERS210Info::BackButOffset]);
+		chkEvent(evtBuf,ERS210Info::HeadFrButOffset,GETD(ERS210Info::CPCSensorHeadFrontPressure),buttonNames[ERS210Info::HeadFrButOffset]);
+		chkEvent(evtBuf,ERS210Info::HeadBkButOffset,GETD(ERS210Info::CPCSensorHeadBackPressure),buttonNames[ERS210Info::HeadBkButOffset]);
 
 		// Get IR distance sensor
 		sensors[ERS210Info::IRDistOffset]=GETSENSOR(ERS210Info::CPCSensorPSD) / 1000.0f;
@@ -199,21 +199,21 @@
 		pidduties[HeadOffset+PanOffset ] = GETDUTY(ERS220Info::CPCJointNeckPan);
 		pidduties[HeadOffset+RollOffset] = GETDUTY(ERS220Info::CPCJointNeckRoll);
 
-	 	chkEvent(evtBuf, ERS220Info::TailLeftButOffset, GETB(ERS220Info::CPCSensorTailLeftSwitch),  "LBkBut");
-	 	chkEvent(evtBuf, ERS220Info::TailCenterButOffset, GETB(ERS220Info::CPCSensorTailCenterSwitch),"CBkBut");
-	 	chkEvent(evtBuf, ERS220Info::TailRightButOffset, GETB(ERS220Info::CPCSensorTailRightSwitch), "RBkBut");
+	 	chkEvent(evtBuf, ERS220Info::TailLeftButOffset, GETB(ERS220Info::CPCSensorTailLeftSwitch),  buttonNames[ERS220Info::TailLeftButOffset]);
+	 	chkEvent(evtBuf, ERS220Info::TailCenterButOffset, GETB(ERS220Info::CPCSensorTailCenterSwitch),buttonNames[ERS220Info::TailCenterButOffset]);
+	 	chkEvent(evtBuf, ERS220Info::TailRightButOffset, GETB(ERS220Info::CPCSensorTailRightSwitch), buttonNames[ERS220Info::TailRightButOffset]);
 
 		// Get foot switches
-		chkEvent(evtBuf,LFrPawOffset,GETB(ERS220Info::CPCSensorLFPaw),"LFrPaw");
-		chkEvent(evtBuf,RFrPawOffset,GETB(ERS220Info::CPCSensorRFPaw),"RFrPaw");
-		chkEvent(evtBuf,LBkPawOffset,GETB(ERS220Info::CPCSensorLHPaw),"LBkPaw");
-		chkEvent(evtBuf,RBkPawOffset,GETB(ERS220Info::CPCSensorRHPaw),"RBkPaw");
+		chkEvent(evtBuf,ERS220Info::LFrPawOffset,GETB(ERS220Info::CPCSensorLFPaw),buttonNames[ERS220Info::LFrPawOffset]);
+		chkEvent(evtBuf,ERS220Info::RFrPawOffset,GETB(ERS220Info::CPCSensorRFPaw),buttonNames[ERS220Info::RFrPawOffset]);
+		chkEvent(evtBuf,ERS220Info::LBkPawOffset,GETB(ERS220Info::CPCSensorLHPaw),buttonNames[ERS220Info::LBkPawOffset]);
+		chkEvent(evtBuf,ERS220Info::RBkPawOffset,GETB(ERS220Info::CPCSensorRHPaw),buttonNames[ERS220Info::RBkPawOffset]);
 
 		// Get buttons
-		chkEvent(evtBuf,ERS220Info::ChinButOffset,  GETB(ERS220Info::CPCSensorChinSwitch),"ChinBut");
-		chkEvent(evtBuf,ERS220Info::BackButOffset,  GETB(ERS220Info::CPCSensorBackSwitch),"BackBut");
-		chkEvent(evtBuf,ERS220Info::HeadFrButOffset,GETD(ERS220Info::CPCSensorHeadFrontPressure),"HeadFrBut");
-		chkEvent(evtBuf,ERS220Info::HeadBkButOffset,GETD(ERS220Info::CPCSensorHeadBackPressure),"HeadBkBut");
+		chkEvent(evtBuf,ERS220Info::ChinButOffset,  GETB(ERS220Info::CPCSensorChinSwitch),buttonNames[ERS220Info::ChinButOffset]);
+		chkEvent(evtBuf,ERS220Info::BackButOffset,  GETB(ERS220Info::CPCSensorBackSwitch),buttonNames[ERS220Info::BackButOffset]);
+		chkEvent(evtBuf,ERS220Info::HeadFrButOffset,GETD(ERS220Info::CPCSensorHeadFrontPressure),buttonNames[ERS220Info::HeadFrButOffset]);
+		chkEvent(evtBuf,ERS220Info::HeadBkButOffset,GETD(ERS220Info::CPCSensorHeadBackPressure),buttonNames[ERS220Info::HeadBkButOffset]);
 
 		// Get IR distance sensor
 		sensors[ERS220Info::IRDistOffset]=GETSENSOR(ERS220Info::CPCSensorPSD) / 1000.0f;
@@ -273,19 +273,19 @@
 		pidduties[ERS7Info::MouthOffset] = GETDUTY(ERS7Info::CPCJointMouth);
 
 		// Get foot switches
-		chkEvent(evtBuf,LFrPawOffset,GETB(ERS7Info::CPCSwitchLFPaw),"LFrPaw");
-		chkEvent(evtBuf,RFrPawOffset,GETB(ERS7Info::CPCSwitchRFPaw),"RFrPaw");
-		chkEvent(evtBuf,LBkPawOffset,GETB(ERS7Info::CPCSwitchLHPaw),"LBkPaw");
-		chkEvent(evtBuf,RBkPawOffset,GETB(ERS7Info::CPCSwitchRHPaw),"RBkPaw");
+		chkEvent(evtBuf,ERS7Info::LFrPawOffset,GETB(ERS7Info::CPCSwitchLFPaw),buttonNames[ERS7Info::LFrPawOffset]);
+		chkEvent(evtBuf,ERS7Info::RFrPawOffset,GETB(ERS7Info::CPCSwitchRFPaw),buttonNames[ERS7Info::RFrPawOffset]);
+		chkEvent(evtBuf,ERS7Info::LBkPawOffset,GETB(ERS7Info::CPCSwitchLHPaw),buttonNames[ERS7Info::LBkPawOffset]);
+		chkEvent(evtBuf,ERS7Info::RBkPawOffset,GETB(ERS7Info::CPCSwitchRHPaw),buttonNames[ERS7Info::RBkPawOffset]);
 
 		// Get buttons/switches
 		// the sensors are scaled to be relatively similar to the pressure values given by the head on the 210
-		chkEvent(evtBuf, ERS7Info::ChinButOffset,       GETSENSOR(ERS7Info::CPCSwitchChin),      "ChinBut");
-		chkEvent(evtBuf, ERS7Info::HeadButOffset,       GETSENSOR(ERS7Info::CPCSensorHead)/120,      "HeadBut");
-	 	chkEvent(evtBuf, ERS7Info::FrontBackButOffset,  GETSENSOR(ERS7Info::CPCSensorBackFront)/150, "BkFrBut");
-	 	chkEvent(evtBuf, ERS7Info::MiddleBackButOffset, GETSENSOR(ERS7Info::CPCSensorBackMiddle)/150,"BkMdBut");
-	 	chkEvent(evtBuf, ERS7Info::RearBackButOffset,   GETSENSOR(ERS7Info::CPCSensorBackRear)/150,  "BkRrBut");
-	 	chkEvent(evtBuf, ERS7Info::WirelessSwOffset,GETSENSOR(ERS7Info::CPCSwitchWireless),  "WirelessSw");
+		chkEvent(evtBuf, ERS7Info::ChinButOffset,       GETSENSOR(ERS7Info::CPCSwitchChin),      buttonNames[ERS7Info::ChinButOffset]);
+		chkEvent(evtBuf, ERS7Info::HeadButOffset,       GETSENSOR(ERS7Info::CPCSensorHead)/120,      buttonNames[ERS7Info::HeadButOffset]);
+	 	chkEvent(evtBuf, ERS7Info::FrontBackButOffset,  GETSENSOR(ERS7Info::CPCSensorBackFront)/150, buttonNames[ERS7Info::FrontBackButOffset]);
+	 	chkEvent(evtBuf, ERS7Info::MiddleBackButOffset, GETSENSOR(ERS7Info::CPCSensorBackMiddle)/150,buttonNames[ERS7Info::MiddleBackButOffset]);
+	 	chkEvent(evtBuf, ERS7Info::RearBackButOffset,   GETSENSOR(ERS7Info::CPCSensorBackRear)/150,  buttonNames[ERS7Info::RearBackButOffset]);
+	 	chkEvent(evtBuf, ERS7Info::WirelessSwOffset,GETSENSOR(ERS7Info::CPCSwitchWireless),  buttonNames[ERS7Info::WirelessSwOffset]);
 
 		// Get IR distance sensor
 		sensors[ERS7Info::NearIRDistOffset] = GETSENSOR(ERS7Info::CPCSensorNearPSD) / 1000.0f;
@@ -410,8 +410,8 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
diff -urdN ../Tekkotsu_2.2.2/Shared/WorldState.h ./Shared/WorldState.h
--- ../Tekkotsu_2.2.2/Shared/WorldState.h	Tue Jul 27 10:36:50 2004
+++ ./Shared/WorldState.h	Tue Jul 27 10:36:50 2004
@@ -214,7 +214,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/debuget.h ./Shared/debuget.h
--- ../Tekkotsu_2.2.2/Shared/debuget.h	Thu Sep 25 11:31:53 2003
+++ ./Shared/debuget.h	Thu Sep 25 11:31:53 2003
@@ -73,7 +73,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/get_time.cc ./Shared/get_time.cc
--- ../Tekkotsu_2.2.2/Shared/get_time.cc	Fri Jul 25 16:18:07 2003
+++ ./Shared/get_time.cc	Fri Jul 25 16:18:07 2003
@@ -19,7 +19,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/get_time.h ./Shared/get_time.h
--- ../Tekkotsu_2.2.2/Shared/get_time.h	Fri Jul 25 16:18:08 2003
+++ ./Shared/get_time.h	Fri Jul 25 16:18:08 2003
@@ -9,7 +9,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Entries ./Shared/jpeg-6b/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/jpeg-6b/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,87 @@
+/ADDED.txt/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/Makefile/1.5/Tue Nov  9 21:26:13 2004//Ttekkotsu-2_3
+/README/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/REMOVED.txt/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/change.log/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/coderules.doc/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/filelist.doc/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/jcapimin.c/1.1/Mon Dec  1 17:30:32 2003//Ttekkotsu-2_3
+/jcapistd.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jccoefct.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jccolor.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcdctmgr.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jchuff.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jchuff.h/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcinit.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcmainct.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcmarker.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcmaster.c/1.1/Mon Dec  1 17:30:33 2003//Ttekkotsu-2_3
+/jcomapi.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jconfig.doc/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jconfig.h/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jcparam.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jcphuff.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jcprepct.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jcsample.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jctrans.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jdapimin.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jdapistd.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jdatadst.c/1.1/Mon Dec  1 17:30:34 2003//Ttekkotsu-2_3
+/jdatasrc.c/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jdcoefct.c/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jdcolor.c/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jdct.h/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jddctmgr.c/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jdhuff.c/1.1/Mon Dec  1 17:30:35 2003//Ttekkotsu-2_3
+/jdhuff.h/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdinput.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdmainct.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdmarker.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdmaster.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdmerge.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdphuff.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdpostct.c/1.1/Mon Dec  1 17:30:36 2003//Ttekkotsu-2_3
+/jdsample.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jdtrans.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jerror.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jerror.h/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jfdctflt.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jfdctfst.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jfdctint.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jidctflt.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jidctfst.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jidctint.c/1.1/Mon Dec  1 17:30:37 2003//Ttekkotsu-2_3
+/jidctred.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jinclude.h/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemansi.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemdos.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemdosa.asm/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemmac.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemmgr.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemname.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemnobs.c/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmemsys.h/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jmorecfg.h/1.1/Mon Dec  1 17:30:38 2003//Ttekkotsu-2_3
+/jpeg_mem_dest.c/1.2/Tue Dec  2 06:59:58 2003//Ttekkotsu-2_3
+/jpeg_mem_dest.h/1.2/Tue Dec  2 06:59:58 2003//Ttekkotsu-2_3
+/jpegint.h/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/jpeglib.h/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/jquant1.c/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/jquant2.c/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/jutils.c/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/jversion.h/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/libjpeg.doc/1.1/Mon Dec  1 17:30:39 2003//Ttekkotsu-2_3
+/rdbmp.c/1.1/Mon Dec  1 17:30:40 2003//Ttekkotsu-2_3
+/rdgif.c/1.1/Mon Dec  1 17:30:40 2003//Ttekkotsu-2_3
+/rdppm.c/1.1/Mon Dec  1 17:30:40 2003//Ttekkotsu-2_3
+/rdrle.c/1.1/Mon Dec  1 17:30:40 2003//Ttekkotsu-2_3
+/rdtarga.c/1.1/Mon Dec  1 17:30:40 2003//Ttekkotsu-2_3
+/structure.doc/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/wrbmp.c/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/wrgif.c/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/write_jpeg.c/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/write_jpeg.h/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/wrppm.c/1.1/Mon Dec  1 17:30:41 2003//Ttekkotsu-2_3
+/wrrle.c/1.1/Mon Dec  1 17:30:42 2003//Ttekkotsu-2_3
+/wrtarga.c/1.1/Mon Dec  1 17:30:42 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Repository ./Shared/jpeg-6b/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/jpeg-6b/CVS/Repository	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared/jpeg-6b
diff -urdN ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Root ./Shared/jpeg-6b/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/jpeg-6b/CVS/Root	Fri Jan 28 20:12:54 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Tag ./Shared/jpeg-6b/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/jpeg-6b/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/jpeg-6b/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/CVS/Entries ./Shared/newmat/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/newmat/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,38 @@
+/Makefile/1.10/Tue Nov  9 21:26:13 2004//Ttekkotsu-2_3
+/bandmat.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/boolean.h/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/cholesky.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/controlw.h/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/evalue.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/fft.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/hholder.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/include.h/1.2/Fri Jul  2 00:19:33 2004//Ttekkotsu-2_3
+/jacobi.cpp/1.1/Wed Jun 16 21:16:40 2004//Ttekkotsu-2_3
+/myexcept.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/myexcept.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newfft.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat.h/1.2/Fri Jul 23 21:31:20 2004//Ttekkotsu-2_3
+/newmat1.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat2.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat3.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat4.cpp/1.2/Fri Jul 23 21:31:20 2004//Ttekkotsu-2_3
+/newmat5.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat6.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat7.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat8.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmat9.cpp/1.3/Fri Dec 17 00:32:36 2004//Ttekkotsu-2_3
+/newmatap.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatex.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatio.h/1.2/Wed Dec 15 03:56:28 2004//Ttekkotsu-2_3
+/newmatnl.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatnl.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatrc.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatrm.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/newmatrm.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/precisio.h/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/readme.txt/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/sort.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/submat.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+/svd.cpp/1.1/Wed Jun 16 21:16:41 2004//Ttekkotsu-2_3
+D/docs////
+D/extra////
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/CVS/Repository ./Shared/newmat/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/newmat/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared/newmat
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/CVS/Root ./Shared/newmat/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/newmat/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/CVS/Tag ./Shared/newmat/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/newmat/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Entries ./Shared/newmat/docs/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,3 @@
+/nm11.htm/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/rbd.css/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+D/images////
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Repository ./Shared/newmat/docs/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared/newmat/docs
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Root ./Shared/newmat/docs/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Tag ./Shared/newmat/docs/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Entries ./Shared/newmat/docs/images/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/images/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,2 @@
+/add_time.png/1.1/Wed Jun 16 21:16:45 2004/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Repository ./Shared/newmat/docs/images/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/images/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared/newmat/docs/images
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Root ./Shared/newmat/docs/images/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/images/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Tag ./Shared/newmat/docs/images/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/newmat/docs/images/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/docs/images/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Entries ./Shared/newmat/extra/CVS/Entries
--- ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/extra/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,48 @@
+/example.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/example.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/garch.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/garch.dat/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/garch.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/newmat.lfl/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nl_ex.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nl_ex.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_b55.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_b56.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_cc.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_gnu.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_i5.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_il5.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_m6.mak/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/nm_targ.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/sl_ex.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/sl_ex.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/solution.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/solution.h/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/test_exc.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/test_exc.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt.h/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt.txt/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt1.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt2.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt3.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt4.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt5.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt6.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt7.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt8.cpp/1.1/Wed Jun 16 21:16:45 2004//Ttekkotsu-2_3
+/tmt9.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmta.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtb.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtc.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtd.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmte.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtf.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtg.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmth.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmti.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtj.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtk.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtl.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+/tmtm.cpp/1.1/Wed Jun 16 21:16:46 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Repository ./Shared/newmat/extra/CVS/Repository
--- ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/extra/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Shared/newmat/extra
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Root ./Shared/newmat/extra/CVS/Root
--- ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/extra/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Tag ./Shared/newmat/extra/CVS/Tag
--- ../Tekkotsu_2.2.2/Shared/newmat/extra/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Shared/newmat/extra/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Shared/string_util.cc ./Shared/string_util.cc
--- ../Tekkotsu_2.2.2/Shared/string_util.cc	Wed Jan 14 15:45:28 2004
+++ ./Shared/string_util.cc	Wed Jan 14 15:45:28 2004
@@ -89,7 +89,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Shared/string_util.h ./Shared/string_util.h
--- ../Tekkotsu_2.2.2/Shared/string_util.h	Wed Dec 22 20:47:07 2004
+++ ./Shared/string_util.h	Wed Dec 22 20:47:07 2004
@@ -25,7 +25,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/CVS/Entries ./SoundPlay/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,10 @@
+/SoundManager.cc/1.19/Wed Dec 22 23:13:04 2004//Ttekkotsu-2_3
+/SoundManager.h/1.14/Thu Nov  4 05:24:03 2004//Ttekkotsu-2_3
+/SoundManagerMsg.h/1.4/Thu Sep 25 15:32:08 2003//Ttekkotsu-2_3
+/SoundPlay.cc/1.15/Tue Jan 11 23:10:44 2005//Ttekkotsu-2_3
+/SoundPlay.h/1.5/Tue Dec 23 06:33:44 2003//Ttekkotsu-2_3
+/SoundPlay.ocf/1.1/Sun Mar  9 02:45:25 2003//Ttekkotsu-2_3
+/WAV.cc/1.4/Fri Jul 25 20:18:08 2003//Ttekkotsu-2_3
+/WAV.h/1.3/Fri Jul 25 20:18:08 2003//Ttekkotsu-2_3
+/stub.cfg/1.2/Sun Apr  6 20:57:46 2003//Ttekkotsu-2_3
+D/clips////
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/CVS/Repository ./SoundPlay/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/CVS/Root ./SoundPlay/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/CVS/Tag ./SoundPlay/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/SoundManager.cc ./SoundPlay/SoundManager.cc
--- ../Tekkotsu_2.2.2/SoundPlay/SoundManager.cc	Wed Dec 22 18:13:04 2004
+++ ./SoundPlay/SoundManager.cc	Wed Dec 22 18:13:04 2004
@@ -694,7 +694,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/SoundManager.h ./SoundPlay/SoundManager.h
--- ../Tekkotsu_2.2.2/SoundPlay/SoundManager.h	Thu Nov  4 00:24:03 2004
+++ ./SoundPlay/SoundManager.h	Thu Nov  4 00:24:03 2004
@@ -262,7 +262,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/SoundManagerMsg.h ./SoundPlay/SoundManagerMsg.h
--- ../Tekkotsu_2.2.2/SoundPlay/SoundManagerMsg.h	Thu Sep 25 11:32:08 2003
+++ ./SoundPlay/SoundManagerMsg.h	Thu Sep 25 11:32:08 2003
@@ -59,7 +59,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/SoundPlay.cc ./SoundPlay/SoundPlay.cc
--- ../Tekkotsu_2.2.2/SoundPlay/SoundPlay.cc	Thu Dec 16 17:46:21 2004
+++ ./SoundPlay/SoundPlay.cc	Tue Jan 11 18:10:44 2005
@@ -123,7 +123,11 @@
 	eventTranslatorQueueMemRgn = event.RCData(0);
 	eventTranslatorQueueMemRgn->AddReference();
 	etrans.setQueue(reinterpret_cast<EventTranslator::Queue_t*>(eventTranslatorQueueMemRgn->Base()));
-	erouter->addTrapper(&etrans);
+	//SoundPlay should only be generator audioEGIDs
+	//but just in case, subscribe to everything except erouterEGID
+	for(unsigned int i=0; i<EventBase::numEGIDs; i++)
+		if(i!=EventBase::erouterEGID)
+			erouter->addTrapper(&etrans,static_cast<EventBase::EventGeneratorID_t>(i));
 	observer[obsReceiveEventTranslatorQueue]->AssertReady();
 	cout << "done" << endl;
 }
@@ -266,10 +270,10 @@
  * either expressed or implied, including but not limited to the
  * implied warranties of fitness for a particular purpose.
  *
- * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/SoundPlay.h ./SoundPlay/SoundPlay.h
--- ../Tekkotsu_2.2.2/SoundPlay/SoundPlay.h	Tue Dec 23 01:33:44 2003
+++ ./SoundPlay/SoundPlay.h	Tue Dec 23 01:33:44 2003
@@ -84,7 +84,7 @@
  * implied warranties of fitness for a particular purpose.
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/WAV.cc ./SoundPlay/WAV.cc
--- ../Tekkotsu_2.2.2/SoundPlay/WAV.cc	Fri Jul 25 16:18:08 2003
+++ ./SoundPlay/WAV.cc	Fri Jul 25 16:18:08 2003
@@ -15,7 +15,7 @@
  * implied warranties of fitness for a particular purpose.
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/WAV.h ./SoundPlay/WAV.h
--- ../Tekkotsu_2.2.2/SoundPlay/WAV.h	Fri Jul 25 16:18:08 2003
+++ ./SoundPlay/WAV.h	Fri Jul 25 16:18:08 2003
@@ -15,7 +15,7 @@
  * implied warranties of fitness for a particular purpose.
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Entries ./SoundPlay/clips/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+D/converted////
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Repository ./SoundPlay/clips/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Root ./SoundPlay/clips/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Tag ./SoundPlay/clips/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Entries ./SoundPlay/clips/converted/16 bit-Hz/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,31 @@
+/3barks.wav/1.1/Sat Mar 15 03:44:48 2003//Ttekkotsu-2_3
+/3yips.wav/1.1/Sat Mar 15 03:44:48 2003//Ttekkotsu-2_3
+/barkhigh.wav/1.1/Sat Mar 15 03:44:48 2003//Ttekkotsu-2_3
+/barklow.wav/1.1/Sat Mar 15 03:44:48 2003//Ttekkotsu-2_3
+/barkmed.wav/1.1/Sat Mar 15 03:44:48 2003//Ttekkotsu-2_3
+/barkreal.wav/1.1/Sat Mar 15 03:44:48 2003/-kb/Ttekkotsu-2_3
+/camera.wav/1.1/Sat Mar 15 03:44:48 2003/-kb/Ttekkotsu-2_3
+/catcry.wav/1.1/Sat Mar 15 03:44:49 2003//Ttekkotsu-2_3
+/catyowl.wav/1.1/Sat Mar 15 03:44:50 2003//Ttekkotsu-2_3
+/crash.wav/1.1/Sat Mar 15 03:44:50 2003/-kb/Ttekkotsu-2_3
+/cutey.wav/1.1/Sat Mar 15 03:44:51 2003//Ttekkotsu-2_3
+/donkey.wav/1.1/Sat Mar 15 03:44:51 2003//Ttekkotsu-2_3
+/fart.wav/1.1/Sat Mar 15 03:44:51 2003/-kb/Ttekkotsu-2_3
+/glass.wav/1.1/Sat Mar 15 03:44:51 2003/-kb/Ttekkotsu-2_3
+/growl.wav/1.1/Sat Mar 15 03:44:51 2003//Ttekkotsu-2_3
+/growl2.wav/1.1/Sat Mar 15 03:44:52 2003/-kb/Ttekkotsu-2_3
+/grrr.wav/1.1/Sat Mar 15 03:44:52 2003//Ttekkotsu-2_3
+/howl.wav/1.1/Sat Mar 15 03:44:52 2003//Ttekkotsu-2_3
+/mew.wav/1.1/Sat Mar 15 03:44:53 2003//Ttekkotsu-2_3
+/ping.wav/1.1/Sat Mar 15 03:44:53 2003/-kb/Ttekkotsu-2_3
+/roar.wav/1.1/Sat Mar 15 03:44:53 2003//Ttekkotsu-2_3
+/skid.wav/1.1/Sat Mar 15 03:44:53 2003/-kb/Ttekkotsu-2_3
+/sniff.wav/1.1/Sat Mar 15 03:44:53 2003//Ttekkotsu-2_3
+/tick.wav/1.1/Sat Mar 15 03:44:53 2003/-kb/Ttekkotsu-2_3
+/toc.wav/1.1/Sat Mar 15 03:44:54 2003/-kb/Ttekkotsu-2_3
+/whiip.wav/1.1/Sat Mar 15 03:44:54 2003/-kb/Ttekkotsu-2_3
+/whimper.wav/1.1/Sat Mar 15 03:44:54 2003//Ttekkotsu-2_3
+/whoop.wav/1.1/Sat Mar 15 03:44:54 2003/-kb/Ttekkotsu-2_3
+/yap.wav/1.1/Sat Mar 15 03:44:54 2003//Ttekkotsu-2_3
+/yipper.wav/1.1/Sat Mar 15 03:44:54 2003//Ttekkotsu-2_3
+D/numbers////
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Repository ./SoundPlay/clips/converted/16 bit-Hz/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips/converted/16 bit-Hz
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Root ./SoundPlay/clips/converted/16 bit-Hz/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Tag ./SoundPlay/clips/converted/16 bit-Hz/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/0.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/0.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/1.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/1.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/2.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/3.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/4.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/4.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/5.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/5.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/6.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/6.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/7.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/7.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/8.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/8.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/9.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/9.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Entries ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,13 @@
+/0.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/1.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/2.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/3.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/4.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/5.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/6.wav/1.1/Thu Jan 27 05:40:16 2005/-kb/Ttekkotsu-2_3
+/7.wav/1.1/Thu Jan 27 05:40:17 2005/-kb/Ttekkotsu-2_3
+/8.wav/1.1/Thu Jan 27 05:40:17 2005/-kb/Ttekkotsu-2_3
+/9.wav/1.1/Thu Jan 27 05:40:17 2005/-kb/Ttekkotsu-2_3
+/dot.wav/1.1/Thu Jan 27 05:40:17 2005/-kb/Ttekkotsu-2_3
+/point.wav/1.1/Thu Jan 27 05:40:17 2005/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Repository ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips/converted/16 bit-Hz/numbers
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Root ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Tag ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/16 bit-Hz/numbers/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/dot.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/dot.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/16 bit-Hz/numbers/point.wav and ./SoundPlay/clips/converted/16 bit-Hz/numbers/point.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Entries ./SoundPlay/clips/converted/8 bit-Hz/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,31 @@
+/3barks.wav/1.1/Sat Mar 15 03:44:54 2003//Ttekkotsu-2_3
+/3yips.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/barkhigh.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/barklow.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/barkmed.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/barkreal.wav/1.1/Sat Mar 15 03:44:55 2003/-kb/Ttekkotsu-2_3
+/camera.wav/1.1/Sat Mar 15 03:44:55 2003/-kb/Ttekkotsu-2_3
+/catcry.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/catyowl.wav/1.1/Sat Mar 15 03:44:55 2003//Ttekkotsu-2_3
+/crash.wav/1.1/Sat Mar 15 03:44:55 2003/-kb/Ttekkotsu-2_3
+/cutey.wav/1.1/Sat Mar 15 03:44:56 2003//Ttekkotsu-2_3
+/donkey.wav/1.1/Sat Mar 15 03:44:56 2003//Ttekkotsu-2_3
+/fart.wav/1.1/Sat Mar 15 03:44:56 2003/-kb/Ttekkotsu-2_3
+/glass.wav/1.1/Sat Mar 15 03:44:56 2003/-kb/Ttekkotsu-2_3
+/growl.wav/1.1/Sat Mar 15 03:44:56 2003//Ttekkotsu-2_3
+/growl2.wav/1.1/Sat Mar 15 03:44:56 2003/-kb/Ttekkotsu-2_3
+/grrr.wav/1.1/Sat Mar 15 03:44:56 2003//Ttekkotsu-2_3
+/howl.wav/1.1/Sat Mar 15 03:44:57 2003//Ttekkotsu-2_3
+/mew.wav/1.1/Sat Mar 15 03:44:57 2003//Ttekkotsu-2_3
+/ping.wav/1.1/Sat Mar 15 03:44:57 2003/-kb/Ttekkotsu-2_3
+/roar.wav/1.1/Sat Mar 15 03:44:57 2003//Ttekkotsu-2_3
+/skid.wav/1.1/Sat Mar 15 03:44:57 2003/-kb/Ttekkotsu-2_3
+/sniff.wav/1.1/Sat Mar 15 03:44:57 2003//Ttekkotsu-2_3
+/tick.wav/1.1/Sat Mar 15 03:44:57 2003/-kb/Ttekkotsu-2_3
+/toc.wav/1.1/Sat Mar 15 03:44:57 2003/-kb/Ttekkotsu-2_3
+/whiip.wav/1.1/Sat Mar 15 03:44:58 2003/-kb/Ttekkotsu-2_3
+/whimper.wav/1.1/Sat Mar 15 03:44:58 2003//Ttekkotsu-2_3
+/whoop.wav/1.1/Sat Mar 15 03:44:58 2003/-kb/Ttekkotsu-2_3
+/yap.wav/1.1/Sat Mar 15 03:44:58 2003//Ttekkotsu-2_3
+/yipper.wav/1.1/Sat Mar 15 03:44:58 2003//Ttekkotsu-2_3
+D/numbers////
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Repository ./SoundPlay/clips/converted/8 bit-Hz/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips/converted/8 bit-Hz
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Root ./SoundPlay/clips/converted/8 bit-Hz/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Tag ./SoundPlay/clips/converted/8 bit-Hz/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/0.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/0.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/1.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/1.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/2.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/3.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/4.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/4.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/5.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/5.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/6.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/6.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/7.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/7.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/8.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/8.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/9.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/9.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Entries ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,13 @@
+/0.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/1.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/2.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/3.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/4.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/5.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/6.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/7.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/8.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/9.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/dot.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+/point.wav/1.1/Thu Jan 27 05:40:19 2005/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Repository ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips/converted/8 bit-Hz/numbers
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Root ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Tag ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/8 bit-Hz/numbers/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/dot.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/dot.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/converted/8 bit-Hz/numbers/point.wav and ./SoundPlay/clips/converted/8 bit-Hz/numbers/point.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Entries ./SoundPlay/clips/converted/CVS/Entries
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,2 @@
+D/16 bit-Hz////
+D/8 bit-Hz////
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Repository ./SoundPlay/clips/converted/CVS/Repository
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/SoundPlay/clips/converted
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Root ./SoundPlay/clips/converted/CVS/Root
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Tag ./SoundPlay/clips/converted/CVS/Tag
--- ../Tekkotsu_2.2.2/SoundPlay/clips/converted/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./SoundPlay/clips/converted/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/JurassicPark-Tyrannosaurus_rex-Roaring.wav and ./SoundPlay/clips/originals/junglewalk.com/JurassicPark-Tyrannosaurus_rex-Roaring.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/barking.wav and ./SoundPlay/clips/originals/junglewalk.com/barking.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/cat02.wav and ./SoundPlay/clips/originals/junglewalk.com/cat02.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/catcry.wav and ./SoundPlay/clips/originals/junglewalk.com/catcry.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/catyowl.wav and ./SoundPlay/clips/originals/junglewalk.com/catyowl.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/dinosaur.wav and ./SoundPlay/clips/originals/junglewalk.com/dinosaur.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/dogsniff.wav and ./SoundPlay/clips/originals/junglewalk.com/dogsniff.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/donkeyb.wav and ./SoundPlay/clips/originals/junglewalk.com/donkeyb.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/dragonsn.mp3 and ./SoundPlay/clips/originals/junglewalk.com/dragonsn.mp3 differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/fakebar.wav and ./SoundPlay/clips/originals/junglewalk.com/fakebar.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/fakebark.wav and ./SoundPlay/clips/originals/junglewalk.com/fakebark.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/foxes.wav and ./SoundPlay/clips/originals/junglewalk.com/foxes.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/puppy.wav and ./SoundPlay/clips/originals/junglewalk.com/puppy.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/roar.wav and ./SoundPlay/clips/originals/junglewalk.com/roar.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/wolf.au and ./SoundPlay/clips/originals/junglewalk.com/wolf.au differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/wolf2.wav and ./SoundPlay/clips/originals/junglewalk.com/wolf2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/wolf_pup.wav and ./SoundPlay/clips/originals/junglewalk.com/wolf_pup.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/wolves3.wav and ./SoundPlay/clips/originals/junglewalk.com/wolves3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/wolves7.wav and ./SoundPlay/clips/originals/junglewalk.com/wolves7.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/yap.wav and ./SoundPlay/clips/originals/junglewalk.com/yap.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/junglewalk.com/yapper.wav and ./SoundPlay/clips/originals/junglewalk.com/yapper.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/bark.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/bark.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/bark2.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/bark2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/bark3.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/bark3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/cutey.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/cutey.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/growl.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/growl.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/growl2.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/growl2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/growl3.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/growl3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/growl4.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/growl4.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/grrr.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/grrr.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/howl.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/howl.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/src.url ./SoundPlay/clips/originals/petz - www.dmwright.com/src.url
--- ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/src.url	Sun Apr 27 21:10:59 2003
+++ ./SoundPlay/clips/originals/petz - www.dmwright.com/src.url	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-www.dmwright.com/petz/petz3/funpack/html/sound.htm
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/petz - www.dmwright.com/whimper.wav and ./SoundPlay/clips/originals/petz - www.dmwright.com/whimper.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/whiip.wav and ./SoundPlay/clips/originals/whiip.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/whoop.wav and ./SoundPlay/clips/originals/whoop.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/camera.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/camera.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/car_accelerating.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/car_accelerating.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/car_crash.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/car_crash.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/car_skids_2.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/car_skids_2.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/car_skids_3.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/car_skids_3.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/clock_tick.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/clock_tick.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/dog_bark1.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/dog_bark1.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/dog_growl.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/dog_growl.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/electronicping.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/electronicping.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/fart4.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/fart4.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/glassbreaking.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/glassbreaking.wav differ
diff -urdN ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/src.url ./SoundPlay/clips/originals/www.matthawkins.co.uk/src.url
--- ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/src.url	Sun Apr 27 21:10:59 2003
+++ ./SoundPlay/clips/originals/www.matthawkins.co.uk/src.url	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-www.matthawkins.co.uk/html/sound_fx_vehicles.htm
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/tick.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/tick.wav differ
Binary files ../Tekkotsu_2.2.2/SoundPlay/clips/originals/www.matthawkins.co.uk/toc.wav and ./SoundPlay/clips/originals/www.matthawkins.co.uk/toc.wav differ
diff -urdN ../Tekkotsu_2.2.2/TinyFTPD/CVS/Entries ./TinyFTPD/CVS/Entries
--- ../Tekkotsu_2.2.2/TinyFTPD/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./TinyFTPD/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,13 @@
+/FtpConfig.h/1.2/Tue Jul  6 22:30:57 2004//Ttekkotsu-2_3
+/FtpDTP.cc/1.4/Tue Jul  6 22:43:45 2004//Ttekkotsu-2_3
+/FtpDTP.h/1.4/Tue Jul  6 22:43:45 2004//Ttekkotsu-2_3
+/FtpMethod.cc/1.6/Tue Nov 16 23:52:10 2004//Ttekkotsu-2_3
+/FtpPI.cc/1.4/Tue Jul  6 22:43:45 2004//Ttekkotsu-2_3
+/FtpPI.h/1.4/Tue Jul  6 22:43:45 2004//Ttekkotsu-2_3
+/FtpRequest.cc/1.2/Tue Jul  6 22:30:57 2004//Ttekkotsu-2_3
+/TCPConnection.h/1.1.1.1/Mon Sep 30 18:19:49 2002//Ttekkotsu-2_3
+/TinyFTPD.cc/1.6/Tue Jul  6 23:25:45 2004//Ttekkotsu-2_3
+/TinyFTPD.h/1.4/Tue Jul  6 22:43:45 2004//Ttekkotsu-2_3
+/TinyFTPD.ocf/1.3/Mon Jul 12 20:22:29 2004//Ttekkotsu-2_3
+/stub.cfg/1.2/Tue Jul  6 22:30:57 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/TinyFTPD/CVS/Repository ./TinyFTPD/CVS/Repository
--- ../Tekkotsu_2.2.2/TinyFTPD/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./TinyFTPD/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/TinyFTPD
diff -urdN ../Tekkotsu_2.2.2/TinyFTPD/CVS/Root ./TinyFTPD/CVS/Root
--- ../Tekkotsu_2.2.2/TinyFTPD/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./TinyFTPD/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/TinyFTPD/CVS/Tag ./TinyFTPD/CVS/Tag
--- ../Tekkotsu_2.2.2/TinyFTPD/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./TinyFTPD/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Vision/BallDetectionGenerator.cc ./Vision/BallDetectionGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/BallDetectionGenerator.cc	Wed Dec 22 18:13:07 2004
+++ ./Vision/BallDetectionGenerator.cc	Fri Jan 14 17:24:51 2005
@@ -43,7 +43,7 @@
   ball.confidence = 0;
 	region * ball_region=NULL;
 
-  region * or_reg=ballCCS.list; //head of linked list of regions of target color
+  region * or_reg=ballCCS.list; //head of linked list of regions of target color. or_reg= original region (without noise removal)
   if(!or_reg) return;
   unsigned int n = 0;
   while(or_reg && n<NUM_CHECK) {
@@ -209,24 +209,37 @@
     n++;
   }
   //return (ball_color==getColor("red"))?generateEvent (VisionObjectEvent::RedBallSID, ball->confidence, ball_region->cen_x, ball_region->cen_y):generateEvent(VisionObjectEvent::PinkBallSID,ball->confidence,ball_region->cen_x,ball_region->cen_y);
-	testSendEvent(*segev,ball.confidence,(int)ball_region->cen_x,(int)ball_region->cen_y);
+  
+	testSendEvent(*segev,ball.confidence,(int)ball_region->x1,(int)ball_region->x2,(int)ball_region->y1,(int)ball_region->y2); 
 }
 
 void
-BallDetectionGenerator::testSendEvent(const FilterBankEvent& ev, float conf, int regcenX, int regcenY) {
+BallDetectionGenerator::testSendEvent(const FilterBankEvent& ev, float conf, int regX1,int regX2,int regY1,int regY2) {
 	unsigned int layer=ev.getNumLayers()-config->vision.resolution-1;
-	float cx=2.0f*regcenX/ev.getWidth(layer)-1;
-	float cy=2.0f*regcenY/ev.getHeight(layer)-1;
+
+	//pick the larger dimension for scaling, one dimension will be [-1,1], the other will depend on aspect ratio
+	float dim=ev.getWidth(layer)>ev.getHeight(layer) ? ev.getWidth(layer) : ev.getHeight(layer);
+
+	//the max width and height of scaled dimensions
+	float cw=ev.getWidth(layer)/dim;
+	float ch=ev.getHeight(layer)/dim;
+
+	//scale the dimensions
+	float cx1=2.0f*regX1/dim - cw;
+	float cx2=2.0f*(regX2+1)/dim - cw;
+	float cy1=2.0f*regY1/dim - ch;
+	float cy2=2.0f*(regY2+1)/dim - ch;
+
 	if (conf>confidenceThreshold) {
 		if (present) {
 			count=0;
-			createEvent(EventBase::statusETID,cx,cy);
+			createEvent(EventBase::statusETID,cx1,cx2,cy1,cy2,cw,ch);
 		} else {
 			count++;
 			if (count>noiseThreshold) {
 				count=0;
 				present=true;
-				createEvent(EventBase::activateETID,cx,cy);
+				createEvent(EventBase::activateETID,cx1,cx2,cy1,cy2,cw,ch);
 			}
 		}
 	} else {
@@ -237,17 +250,17 @@
 			if (count>noiseThreshold) {
 				count=0;
 				present=false;
-				createEvent(EventBase::deactivateETID,0,0);
+				createEvent(EventBase::deactivateETID,0,0,0,0,cw,ch);
 			} else {
-				createEvent(EventBase::statusETID,cx,cy);
+				createEvent(EventBase::statusETID,cx1,cx2,cy1,cy2,cw,ch);
 			}
 		}
 	}
 }
 
 void
-BallDetectionGenerator::createEvent(EventBase::EventTypeID_t etid, float centerX, float centerY) const {
-	VisionObjectEvent * vo=new VisionObjectEvent(etid,mySourceID,centerX,centerY);
+BallDetectionGenerator::createEvent(EventBase::EventTypeID_t etid, float bbX1,float bbX2,float bbY1,float bbY2,float rx,float ry) const {
+	VisionObjectEvent * vo=new VisionObjectEvent(etid,mySourceID,bbX1,bbX2,bbY1,bbY2,rx,ry);
 	vo->setName(getName());
 	erouter->postEvent(vo);
 }
@@ -269,6 +282,7 @@
  * @brief Implements BallDetectionGenerator, which uses segmented color region information to detect round objects
  * @author alokl (Creator)
  * @author ejt (reorganized)
+ * @author Ignacio Herrero Reder < nhr at dte uma es > (VisionObjectInfo Boundary Box - bug 74)
  *
  * History is old, may have grown from CMPack (CMU Robosoccer) roots?
  * I think if there's any of their code left, it's probably *mostly*
@@ -278,8 +292,8 @@
  * reviewed the code, so I guess it's all ours...
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
diff -urdN ../Tekkotsu_2.2.2/Vision/BallDetectionGenerator.h ./Vision/BallDetectionGenerator.h
--- ../Tekkotsu_2.2.2/Vision/BallDetectionGenerator.h	Mon Feb  9 17:45:28 2004
+++ ./Vision/BallDetectionGenerator.h	Fri Jan 14 17:24:51 2005
@@ -52,9 +52,9 @@
 	};
 
 	//! decides wether to actually send the event based on confidence threshold.
-	void testSendEvent(const FilterBankEvent& ev, float conf, int regcenX, int regcenY);
+	void testSendEvent(const FilterBankEvent& ev, float conf, int regX1,int regX2,int regY1, int regY2);
 	//! does the actual event sending
-	void createEvent(EventBase::EventTypeID_t etid, float centerX, float centerY) const;
+	void createEvent(EventBase::EventTypeID_t etid, float bbX1,float bbX2,float bbY1,float bbY2,float rx,float ry ) const;
 	//! returns a bit mask corresponding to edges touched by the coordinates passed
 	static int calcEdgeMask(int x1,int x2,int y1,int y2, int width, int height);
 	//! returns @f[ \left|\frac{a-b}{a+b}\right| @f]
@@ -80,6 +80,7 @@
  * @brief Describes BallDetectionGenerator, which uses segmented color region information to detect round objects
  * @author alokl (Creator)
  * @author ejt (reorganized)
+ * @author Ignacio Herrero Reder < nhr at dte uma es > (VisionObjectInfo Boundary Box - bug 74)
  *
  * History is old, may have grown from CMPack (CMU Robosoccer) roots?
  * I think if there's any of their code left, it's probably *mostly*
@@ -89,10 +90,12 @@
  * reviewed the code, so I guess it's all ours...
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
+ * $ Modified: 2005/12/01 $
+ * @ Functions to create VisionObjectEvents include now BB and area info. 
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Vision/CDTGenerator.cc ./Vision/CDTGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/CDTGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/CDTGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -237,7 +237,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/CDTGenerator.h ./Vision/CDTGenerator.h
--- ../Tekkotsu_2.2.2/Vision/CDTGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/CDTGenerator.h	Wed Feb 18 16:13:32 2004
@@ -97,7 +97,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/CVS/Entries ./Vision/CVS/Entries
--- ../Tekkotsu_2.2.2/Vision/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Vision/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,24 @@
+/BallDetectionGenerator.cc/1.9/Fri Jan 14 22:24:51 2005//Ttekkotsu-2_3
+/BallDetectionGenerator.h/1.6/Fri Jan 14 22:24:51 2005//Ttekkotsu-2_3
+/CDTGenerator.cc/1.7/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/CDTGenerator.h/1.3/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/FilterBankGenerator.cc/1.7/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/FilterBankGenerator.h/1.15/Mon Dec 20 21:47:59 2004//Ttekkotsu-2_3
+/InterleavedYUVGenerator.cc/1.9/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/InterleavedYUVGenerator.h/1.11/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/JPEGGenerator.cc/1.9/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/JPEGGenerator.h/1.7/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/RLEGenerator.cc/1.8/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/RLEGenerator.h/1.7/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/RawCameraGenerator.cc/1.16/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/RawCameraGenerator.h/1.14/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/RegionGenerator.cc/1.8/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/RegionGenerator.h/1.5/Wed Feb 18 21:13:32 2004//Ttekkotsu-2_3
+/SegmentedColorGenerator.cc/1.7/Tue Nov  9 20:01:49 2004//Ttekkotsu-2_3
+/SegmentedColorGenerator.h/1.10/Thu Dec 23 01:47:07 2004//Ttekkotsu-2_3
+/cmv_region.h/1.8/Mon Dec  8 00:21:06 2003//Ttekkotsu-2_3
+/cmv_threshold.h/1.5/Fri Dec  5 20:26:47 2003//Ttekkotsu-2_3
+/cmv_types.h/1.3/Fri Jul 16 22:27:59 2004//Ttekkotsu-2_3
+/cmvision.h/1.3/Thu Jan 23 18:14:11 2003//Ttekkotsu-2_3
+/colors.h/1.4/Fri Jul 16 22:11:38 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Vision/CVS/Repository ./Vision/CVS/Repository
--- ../Tekkotsu_2.2.2/Vision/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Vision/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Vision
diff -urdN ../Tekkotsu_2.2.2/Vision/CVS/Root ./Vision/CVS/Root
--- ../Tekkotsu_2.2.2/Vision/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Vision/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Vision/CVS/Tag ./Vision/CVS/Tag
--- ../Tekkotsu_2.2.2/Vision/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Vision/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Vision/FilterBankGenerator.cc ./Vision/FilterBankGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/FilterBankGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/FilterBankGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -164,7 +164,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/FilterBankGenerator.h ./Vision/FilterBankGenerator.h
--- ../Tekkotsu_2.2.2/Vision/FilterBankGenerator.h	Mon Dec 20 16:47:59 2004
+++ ./Vision/FilterBankGenerator.h	Mon Dec 20 16:47:59 2004
@@ -288,7 +288,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/InterleavedYUVGenerator.cc ./Vision/InterleavedYUVGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/InterleavedYUVGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/InterleavedYUVGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -128,7 +128,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/InterleavedYUVGenerator.h ./Vision/InterleavedYUVGenerator.h
--- ../Tekkotsu_2.2.2/Vision/InterleavedYUVGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/InterleavedYUVGenerator.h	Wed Feb 18 16:13:32 2004
@@ -78,7 +78,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/JPEGGenerator.cc ./Vision/JPEGGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/JPEGGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/JPEGGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -241,7 +241,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/JPEGGenerator.h ./Vision/JPEGGenerator.h
--- ../Tekkotsu_2.2.2/Vision/JPEGGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/JPEGGenerator.h	Wed Feb 18 16:13:32 2004
@@ -107,7 +107,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RLEGenerator.cc ./Vision/RLEGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/RLEGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/RLEGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -149,7 +149,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RLEGenerator.h ./Vision/RLEGenerator.h
--- ../Tekkotsu_2.2.2/Vision/RLEGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/RLEGenerator.h	Wed Feb 18 16:13:32 2004
@@ -117,7 +117,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RawCameraGenerator.cc ./Vision/RawCameraGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/RawCameraGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/RawCameraGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -425,7 +425,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RawCameraGenerator.h ./Vision/RawCameraGenerator.h
--- ../Tekkotsu_2.2.2/Vision/RawCameraGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/RawCameraGenerator.h	Wed Feb 18 16:13:32 2004
@@ -115,7 +115,7 @@
  * @author ejt (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RegionGenerator.cc ./Vision/RegionGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/RegionGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/RegionGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -239,7 +239,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/RegionGenerator.h ./Vision/RegionGenerator.h
--- ../Tekkotsu_2.2.2/Vision/RegionGenerator.h	Wed Feb 18 16:13:32 2004
+++ ./Vision/RegionGenerator.h	Wed Feb 18 16:13:32 2004
@@ -74,7 +74,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/SegmentedColorGenerator.cc ./Vision/SegmentedColorGenerator.cc
--- ../Tekkotsu_2.2.2/Vision/SegmentedColorGenerator.cc	Tue Nov  9 15:01:49 2004
+++ ./Vision/SegmentedColorGenerator.cc	Tue Nov  9 15:01:49 2004
@@ -224,7 +224,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Vision/SegmentedColorGenerator.h ./Vision/SegmentedColorGenerator.h
--- ../Tekkotsu_2.2.2/Vision/SegmentedColorGenerator.h	Wed Dec 22 20:47:07 2004
+++ ./Vision/SegmentedColorGenerator.h	Wed Dec 22 20:47:07 2004
@@ -162,7 +162,7 @@
  * @author ejt (reorganized)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Wireless/CVS/Entries ./Wireless/CVS/Entries
--- ../Tekkotsu_2.2.2/Wireless/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./Wireless/CVS/Entries	Fri Jan 28 20:12:55 2005
@@ -0,0 +1,7 @@
+/DummySocket.h/1.3/Sun Jan 18 10:16:59 2004//Ttekkotsu-2_3
+/Socket.cc/1.17/Mon Oct  4 20:38:05 2004//Ttekkotsu-2_3
+/Socket.h/1.20/Tue Jan 25 20:06:44 2005//Ttekkotsu-2_3
+/Wireless.cc/1.21/Thu Jan 27 05:40:45 2005//Ttekkotsu-2_3
+/Wireless.h/1.17/Thu Jan 27 05:40:46 2005//Ttekkotsu-2_3
+/ionetstream.h/1.1/Sat Mar  1 20:53:43 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/Wireless/CVS/Repository ./Wireless/CVS/Repository
--- ../Tekkotsu_2.2.2/Wireless/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./Wireless/CVS/Repository	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Tekkotsu/Wireless
diff -urdN ../Tekkotsu_2.2.2/Wireless/CVS/Root ./Wireless/CVS/Root
--- ../Tekkotsu_2.2.2/Wireless/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./Wireless/CVS/Root	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/Wireless/CVS/Tag ./Wireless/CVS/Tag
--- ../Tekkotsu_2.2.2/Wireless/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./Wireless/CVS/Tag	Fri Jan 28 20:12:55 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/Wireless/DummySocket.h ./Wireless/DummySocket.h
--- ../Tekkotsu_2.2.2/Wireless/DummySocket.h	Sun Jan 18 05:16:59 2004
+++ ./Wireless/DummySocket.h	Sun Jan 18 05:16:59 2004
@@ -42,7 +42,7 @@
  * @author alokl (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Wireless/Socket.cc ./Wireless/Socket.cc
--- ../Tekkotsu_2.2.2/Wireless/Socket.cc	Mon Oct  4 16:38:05 2004
+++ ./Wireless/Socket.cc	Mon Oct  4 16:38:05 2004
@@ -172,7 +172,7 @@
  * @author alokl (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/Wireless/Socket.h ./Wireless/Socket.h
--- ../Tekkotsu_2.2.2/Wireless/Socket.h	Wed Dec 22 20:47:07 2004
+++ ./Wireless/Socket.h	Tue Jan 25 15:06:44 2005
@@ -163,20 +163,19 @@
 
   //! It's standard stuff. man 3 printf on most systems should give you more
   //! information
-  int printf(const char *fmt, ...);
+  int printf(const char *fmt, ...) __attribute__((format(printf,2,3)));
 
   //! It's standard stuff. man 3 printf on most systems should give you more
   //! information
-  int vprintf(const char *fmt, va_list al);
+  int vprintf(const char *fmt, va_list al) __attribute__ ((format (printf, 2, 0)));
 
   //! Similar to printf, except it takes an extra first argument.
-  /*! If vlevel is
-   * than or equal to the current verbosity level, the string will be printed
-   * else it will be ignored
-   * @param vlevel if (vlevel<=verbosity) print, else ignore
-	 * @param fmt same as the standard printf's format string
+  /*! If vlevel is than or equal to the current #verbosity level,
+   *  the string will be printed else it will be ignored.
+   *  @param vlevel if (vlevel<=verbosity) print, else ignore
+	 *  @param fmt same as the standard printf's format string
    */
-  int pprintf(int vlevel, const char *fmt, ...);
+  int pprintf(int vlevel, const char *fmt, ...) __attribute__ ((format (printf, 3, 4)));
   
   //! Initiate blocking or nonblocking write transfer depending on the type
   //! of socket.
@@ -230,10 +229,10 @@
  * @author alokl (Creator)
  * 
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif
diff -urdN ../Tekkotsu_2.2.2/Wireless/Wireless.cc ./Wireless/Wireless.cc
--- ../Tekkotsu_2.2.2/Wireless/Wireless.cc	Tue Sep 28 18:12:35 2004
+++ ./Wireless/Wireless.cc	Thu Jan 27 00:40:45 2005
@@ -184,6 +184,8 @@
 				}
 
 			sockets[sock]->state = CONNECTION_CONNECTED;
+			//sockets[sock]->local_ipaddr = listenMsg->lAddress.Address();
+			//cout << "Listen set lip: " << local_ipaddr << endl;
 			receive( sock );
 		}
 }
@@ -204,6 +206,8 @@
 				}
 
 			sockets[sock]->state = CONNECTION_CONNECTED;
+			//sockets[sock]->local_ipaddr = connectMsg->lAddress.Address();
+			//cout << "Connect set lip: " << local_ipaddr << endl;
 			receive( sock );
 		}
 }
@@ -220,6 +224,12 @@
 	}
 
 	sockets[sock]->state = CONNECTION_CONNECTED;
+	/*	if(bindMsg->address.Address()!=0) {
+		//sockets[sock]->local_ipaddr = bindMsg->address.Address();
+		//cout << "Bind set lip: " << local_ipaddr << endl;
+	} else {
+		//cout << "Bind got 0" << endl;
+		}*/
 }
 
 void
@@ -464,6 +474,29 @@
 	sockets[sock]->state = CONNECTION_CLOSING;
 }
 
+uint32
+Wireless::getIPAddress(unsigned int /*idx=0*/) {
+	uint32 local_ipaddr=0;
+	//from OPEN-R sample ERA201D1Info:
+	antEnvInitGetParamMsg getParamMsg("ETHER_IP");
+	getParamMsg.Call(ipstackRef, sizeof(getParamMsg));
+	if (getParamMsg.error == ANT_SUCCESS && getParamMsg.paramType == antEnv_InitParam_String) {
+		//cout << "******** RECEIVED " << getParamMsg.value.str << endl;
+		unsigned int i=0;
+		for(int j=3; j>=0; j--) {
+			unsigned int b=0;
+			while(i<ANTENV_VALUE_LENGTH_MAX && getParamMsg.value.str[i]!='.' && getParamMsg.value.str[i]!='\0')
+				b=b*10+(getParamMsg.value.str[i++]-'0');
+			i++; //skip over '.'
+			local_ipaddr+=b<<(j*8);
+			//cout << j << ": " << b << ' ' << local_ipaddr << endl;
+		}
+	} else {
+		OSYSLOG1((osyslogERROR,"getParamMsg.Call() FAILED %d", getParamMsg.error));
+	}
+	return local_ipaddr;
+}
+
 void
 Wireless::CloseCont(void* msg)
 {
@@ -495,9 +528,9 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
diff -urdN ../Tekkotsu_2.2.2/Wireless/Wireless.h ./Wireless/Wireless.h
--- ../Tekkotsu_2.2.2/Wireless/Wireless.h	Wed Mar 24 01:38:21 2004
+++ ./Wireless/Wireless.h	Thu Jan 27 00:40:46 2005
@@ -104,6 +104,8 @@
     { return connect (sobj->sock, ipaddr, port); }
   void close(Socket &sobj) { close(sobj.sock); }
   void close(Socket *sobj) { close(sobj->sock); }
+	unsigned int getNumInterfaces() { return 1; }
+	uint32 getIPAddress(unsigned int idx=0);
   //@}
 
   //@{
@@ -155,10 +157,10 @@
  * @verbinclude CMPack_license.txt
  *
  * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
  * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
+ * $Date: 2005/01/30 17:44:13 $
  */
 
 #endif // Wireless_h_DEFINED
diff -urdN ../Tekkotsu_2.2.2/docs/CVS/Entries ./docs/CVS/Entries
--- ../Tekkotsu_2.2.2/docs/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./docs/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,14 @@
+/CMPack_license.txt/1.1/Thu Jan  9 02:03:00 2003//Ttekkotsu-2_3
+/JointSpeedLimits.txt/1.1/Tue Dec 23 06:33:44 2003//Ttekkotsu-2_3
+/PositionFileFormat.txt/1.1.1.1/Mon Sep 30 18:19:47 2002//Ttekkotsu-2_3
+/builddocs/1.19/Tue Jan  4 23:29:22 2005//Ttekkotsu-2_3
+/doxygencfg/1.39/Sat Jan 29 01:06:23 2005//Ttekkotsu-2_3
+/doxygenfoot.html/1.3/Tue Feb 10 01:47:08 2004//Ttekkotsu-2_3
+/doxygenhead.html/1.9/Tue Jan  4 23:29:22 2005//Ttekkotsu-2_3
+/exthead.html/1.1/Wed Nov 24 21:30:39 2004//Ttekkotsu-2_3
+/newmat.doxycfg/1.3/Wed Nov 24 21:30:40 2004//Ttekkotsu-2_3
+/newmatfoot.html/1.1/Tue Jul 20 17:57:01 2004//Ttekkotsu-2_3
+/roboop.doxycfg/1.3/Wed Nov 24 21:30:40 2004//Ttekkotsu-2_3
+/roboopfoot.html/1.1/Tue Jul 20 17:57:01 2004//Ttekkotsu-2_3
+D/benchmarks////
+D/html////
diff -urdN ../Tekkotsu_2.2.2/docs/CVS/Repository ./docs/CVS/Repository
--- ../Tekkotsu_2.2.2/docs/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./docs/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/docs
diff -urdN ../Tekkotsu_2.2.2/docs/CVS/Root ./docs/CVS/Root
--- ../Tekkotsu_2.2.2/docs/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./docs/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/docs/CVS/Tag ./docs/CVS/Tag
--- ../Tekkotsu_2.2.2/docs/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./docs/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Entries ./docs/benchmarks/CVS/Entries
--- ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,17 @@
+/STARTUP_2.3.txt/1.1/Sat Jan 29 00:39:40 2005//Ttekkotsu-2_3
+/profilerun_ERS210A_1.1.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_1.4.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_1.5.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_2.0.txt/1.3/Wed Feb  4 21:55:32 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_2.1.txt/1.1/Wed Mar 17 02:58:49 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_2.2.txt/1.1/Mon Oct 18 20:33:52 2004//Ttekkotsu-2_3
+/profilerun_ERS210A_2.3.txt/1.1/Sat Jan 29 00:38:42 2005//Ttekkotsu-2_3
+/profilerun_ERS210_1.1.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210_1.4.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210_1.5.txt/1.2/Wed Feb  4 21:54:44 2004//Ttekkotsu-2_3
+/profilerun_ERS210_2.0.txt/1.1/Wed Feb  4 21:55:32 2004//Ttekkotsu-2_3
+/profilerun_ERS7_2.0.txt/1.3/Wed Feb  4 21:55:32 2004//Ttekkotsu-2_3
+/profilerun_ERS7_2.1.txt/1.1/Wed Mar 17 02:58:49 2004//Ttekkotsu-2_3
+/profilerun_ERS7_2.2.txt/1.1/Mon Oct 18 20:33:52 2004//Ttekkotsu-2_3
+/profilerun_ERS7_2.3.txt/1.1/Sat Jan 29 00:38:42 2005//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Repository ./docs/benchmarks/CVS/Repository
--- ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/docs/benchmarks
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Root ./docs/benchmarks/CVS/Root
--- ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Tag ./docs/benchmarks/CVS/Tag
--- ../Tekkotsu_2.2.2/docs/benchmarks/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/STARTUP_2.0.txt ./docs/benchmarks/STARTUP_2.0.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/STARTUP_2.0.txt	Wed Feb  4 16:56:11 2004
+++ ./docs/benchmarks/STARTUP_2.0.txt	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-!root "Mode Switch" "StareAtBallBehavior" ; !root "Status Reports" ; !next
\ No newline at end of file
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/STARTUP_2.3.txt ./docs/benchmarks/STARTUP_2.3.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/STARTUP_2.3.txt	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/STARTUP_2.3.txt	Fri Jan 28 19:39:40 2005
@@ -0,0 +1 @@
+!root "Mode Switch" "Stare At Pink Ball" ; !root "Status Reports" ; !next ; !next
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS210A_2.2.1.txt ./docs/benchmarks/profilerun_ERS210A_2.2.1.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS210A_2.2.1.txt	Tue Nov 16 19:03:19 2004
+++ ./docs/benchmarks/profilerun_ERS210A_2.2.1.txt	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-not run
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS210A_2.3.txt ./docs/benchmarks/profilerun_ERS210A_2.3.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS210A_2.3.txt	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/profilerun_ERS210A_2.3.txt	Fri Jan 28 19:38:42 2005
@@ -0,0 +1,135 @@
+Setup:
+  Default build for ERS-2xx (TGT_ERS2xx)
+  Pink ball in view (8.5in from snout)
+  Press power button, start timer
+  Telnet to system console (port 59000)
+  Connect ControllerGUI
+  STARTUP script:
+    Launch StareAtBallBehavior (leave E-Stop ON)
+    Navigate to Status Reports -> Profiler
+  Wait until 5 minutes from initial press of power button.
+  Recorded profiler run shown below
+ 
+~~~ Main: ~~~
+Profiling information since: 20.017258 to 298.081804
+PowerEvent():
+        43 calls
+        0.640907 ms avg
+        0.573827 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        6351.275000 ms avg inter (0.157449 fps)
+        4556.783203 ms exp.avg (0.219453 fps)
+        Exec: 0 0 34 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 6 13 0 0 2 3 0 2 0 1 0 9
+ReadySendJoints():
+        2145 calls
+        0.234554 ms avg
+        0.225274 ms exp.avg
+        0.000397 ms avg child time (0.100000%)
+        128.180394 ms avg inter (7.801505 fps)
+        127.839653 ms exp.avg (7.822299 fps)
+        Exec: 0 1 2138 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 1 1 1 0 0 0 0 0 0 2137 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotSensorFrame():
+        8562 calls
+        0.852145 ms avg
+        0.779630 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.096237 ms avg inter (31.156300 fps)
+        32.131828 ms exp.avg (31.121790 fps)
+        Exec: 0 0 3803 4757 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 236 6616 1707 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotAudio():
+        8563 calls
+        0.566174 ms avg
+        0.531842 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.003073 ms avg inter (31.247000 fps)
+        31.828907 ms exp.avg (31.417982 fps)
+        Exec: 0 0 6399 2162 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 1 2 2 8299 257 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotImage():
+        6830 calls
+        11.044044 ms avg
+        11.072465 ms exp.avg
+        9.216365 ms avg child time (83.400000%)
+        40.105989 ms avg inter (24.933932 fps)
+        40.057293 ms exp.avg (24.964243 fps)
+        Exec: 0 0 8 4 0 3435 3383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 1 1 2 1 6823 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+BallDetection::processEvent():
+        6821 calls
+        9.229060 ms avg
+        9.394281 ms exp.avg
+        8.543098 ms avg child time (92.500000%)
+        40.072579 ms avg inter (24.954720 fps)
+        40.041733 ms exp.avg (24.973944 fps)
+        Exec: 0 2 0 0 1 6801 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 1 0 0 1 0 3 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RegionGenerator::calcImage(...):
+        6818 calls
+        8.546857 ms avg
+        8.688643 ms exp.avg
+        4.538367 ms avg child time (53.000000%)
+        40.100872 ms avg inter (24.937114 fps)
+        40.054451 ms exp.avg (24.966015 fps)
+        Exec: 0 0 0 0 0 6808 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 2 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RLEGenerator::calcImage(...):
+        6818 calls
+        4.538367 ms avg
+        4.572154 ms exp.avg
+        2.800123 ms avg child time (61.600000%)
+        40.100877 ms avg inter (24.937111 fps)
+        40.054607 ms exp.avg (24.965916 fps)
+        Exec: 0 0 0 0 5103 1715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 2 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SegmentedColorGenerator::calcImage(...):
+        6818 calls
+        2.800123 ms avg
+        2.824836 ms exp.avg
+        0.028903 ms avg child time (1.000000%)
+        40.100781 ms avg inter (24.937170 fps)
+        40.054451 ms exp.avg (24.966015 fps)
+        Exec: 0 0 0 0 6816 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 2 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RawCameraGenerator::calcImage(...):
+        20454 calls
+        0.009634 ms avg
+        0.007774 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        13.362485 ms avg inter (74.836381 fps)
+        11.286345 ms exp.avg (88.602638 fps)
+        Exec: 13366 6976 108 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 13405 229 2 0 0 2 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
+~~~ Motion: ~~~
+Profiling information since: 20.017359 to 298.090260
+ReadySendJoints():
+        8574 calls
+        1.911137 ms avg
+        1.728524 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.055326 ms avg inter (31.196064 fps)
+        31.852037 ms exp.avg (31.395166 fps)
+        Exec: 0 0 0 7539 1015 3 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 8556 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
+: 0 13405 229 2 0 0 2 1 6814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
+~~~ Motion: ~~~
+Profiling information since: 20.017359 to 298.090260
+ReadySendJoints():
+        8574 calls
+        1.911137 ms avg
+        1.728524 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.055326 ms avg inter (31.196064 fps)
+        31.852037 ms exp.avg (31.395166 fps)
+        Exec: 0 0 0 7539 1015 3 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 8556 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS7_2.2.1.txt ./docs/benchmarks/profilerun_ERS7_2.2.1.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS7_2.2.1.txt	Tue Nov 16 19:03:19 2004
+++ ./docs/benchmarks/profilerun_ERS7_2.2.1.txt	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-not run
diff -urdN ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS7_2.3.txt ./docs/benchmarks/profilerun_ERS7_2.3.txt
--- ../Tekkotsu_2.2.2/docs/benchmarks/profilerun_ERS7_2.3.txt	Wed Dec 31 19:00:00 1969
+++ ./docs/benchmarks/profilerun_ERS7_2.3.txt	Fri Jan 28 19:38:42 2005
@@ -0,0 +1,119 @@
+Setup:
+  Default build for ERS-2xx (TGT_ERS2xx)
+  Pink ball in view (8.5in from snout)
+  Press power button, start timer
+  Telnet to system console (port 59000)
+  Connect ControllerGUI
+  STARTUP script:
+    Launch StareAtBallBehavior (leave E-Stop ON)
+    Navigate to Status Reports -> Profiler
+  Wait until 5 minutes from initial press of power button.
+  Recorded profiler run shown below
+ 
+~~~ Main: ~~~
+Profiling information since: 16.709355 to 298.588974
+PowerEvent():
+        16 calls
+        0.219750 ms avg
+        0.219325 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        16996.075875 ms avg inter (0.058837 fps)
+        18632.210938 ms exp.avg (0.053670 fps)
+        Exec: 0 3 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 13
+ReadySendJoints():
+        1 calls
+        0.008000 ms avg
+        0.008000 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        0.000000 ms avg inter (Inf fps)
+        0.000000 ms exp.avg (Inf fps)
+        Exec: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotSensorFrame():
+        8734 calls
+        0.248177 ms avg
+        0.186829 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.046393 ms avg inter (31.204760 fps)
+        32.235420 ms exp.avg (31.021776 fps)
+        Exec: 0 5 8717 11 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 1 0 0 8725 5 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotAudio():
+        8736 calls
+        0.377339 ms avg
+        0.379657 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        31.992359 ms avg inter (31.257464 fps)
+        31.972803 ms exp.avg (31.276583 fps)
+        Exec: 0 2 8160 574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 2 2 0 8730 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GotImage():
+        8378 calls
+        3.029108 ms avg
+        3.096023 ms exp.avg
+        2.420020 ms avg child time (79.800000%)
+        33.357408 ms avg inter (29.978349 fps)
+        33.206440 ms exp.avg (30.114639 fps)
+        Exec: 0 7 17 1 8349 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 1 2 0 1 6943 1429 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+BallDetection::processEvent():
+        8356 calls
+        2.426432 ms avg
+        2.464707 ms exp.avg
+        2.127624 ms avg child time (87.600000%)
+        33.339802 ms avg inter (29.994180 fps)
+        33.216110 ms exp.avg (30.105871 fps)
+        Exec: 2 0 1 0 8352 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 1 1 0 0 3 0 6925 1425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RegionGenerator::calcImage(...):
+        8353 calls
+        2.128388 ms avg
+        2.166709 ms exp.avg
+        1.987667 ms avg child time (93.300000%)
+        33.353407 ms avg inter (29.981944 fps)
+        33.217785 ms exp.avg (30.104357 fps)
+        Exec: 0 0 0 8125 228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 2 0 6925 1425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RLEGenerator::calcImage(...):
+        8353 calls
+        1.987667 ms avg
+        2.040761 ms exp.avg
+        1.637737 ms avg child time (82.300000%)
+        33.353644 ms avg inter (29.981732 fps)
+        33.217995 ms exp.avg (30.104164 fps)
+        Exec: 0 0 0 8311 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 2 0 6925 1425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SegmentedColorGenerator::calcImage(...):
+        8353 calls
+        1.637737 ms avg
+        1.640365 ms exp.avg
+        0.015049 ms avg child time (0.900000%)
+        33.353558 ms avg inter (29.981809 fps)
+        33.218033 ms exp.avg (30.104130 fps)
+        Exec: 0 0 0 8343 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 2 0 6925 1425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RawCameraGenerator::calcImage(...):
+        25059 calls
+        0.005016 ms avg
+        0.005548 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        11.116690 ms avg inter (89.954833 fps)
+        9.195412 ms exp.avg (108.749893 fps)
+        Exec: 17766 7293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 8328 8378 0 0 0 2 0 6925 1425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
+~~~ Motion: ~~~
+Profiling information since: 16.709430 to 298.595609
+ReadySendJoints():
+        8729 calls
+        1.121769 ms avg
+        0.916171 ms exp.avg
+        0.000000 ms avg child time (0.000000%)
+        32.061304 ms avg inter (31.190247 fps)
+        31.974277 ms exp.avg (31.275139 fps)
+        Exec: 0 0 0 8705 8 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+        Inter: 0 0 0 0 0 0 0 8712 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+Bucket distribution (in ms):
+        0<0.00802, <0.133, <0.686, <2.2, <5.43, <11.4, <21.2, <36.4, <58.7, <90, <132, <188, <260, <352, <465, <604, <772, <973, <1.21e+03, <1.49e+03, <1.82e+03, <2.19e+03, <2.63e+03, <3.12e+03, <3.68e+03, <4.31e+03, <5.03e+03, <5.82e+03, <6.71e+03, <7.7e+03, <8.79e+03, <1e+04,
diff -urdN ../Tekkotsu_2.2.2/docs/builddocs ./docs/builddocs
--- ../Tekkotsu_2.2.2/docs/builddocs	Fri Sep  3 11:56:34 2004
+++ ./docs/builddocs	Tue Jan  4 18:29:22 2005
@@ -78,6 +78,12 @@
 doxygen doxygencfg ;
 printf "done\n";
 
+if [ $search -ne 0 ] ; then
+	printf "Updating search.php form action...";
+	"${src}/tools/filewordreplace" -c "@" -q '"search.php"' '"http://cvs.tekkotsu.org/search.php"' "$target/*.html";
+	printf "done\n";
+fi;
+
 if [ $update -eq 0 ] ; then
 	printf "Copying additional documentation..."
 	for x in ${src}/docs/html/* ; do
@@ -106,6 +112,13 @@
 		printf "Replacing generated main.html with docs/html/index.html..."
 		cp -f "$src"/docs/html/index.html $target/main.html ;
 	fi;
+	printf "done\n"
+fi;
+
+if [ $tree -ne 0 ] ; then
+	printf "Adding favicon tag to index.html..."
+	mv $target/index.html $target/indextmp.html
+	cat $target/indextmp.html | sed 's/<head>/<head><link href="favicon.ico" rel="SHORTCUT ICON">/' > $target/index.html
 	printf "done\n"
 fi;
 
diff -urdN ../Tekkotsu_2.2.2/docs/doxygencfg ./docs/doxygencfg
--- ../Tekkotsu_2.2.2/docs/doxygencfg	Wed Dec 22 20:47:07 2004
+++ ./docs/doxygencfg	Fri Jan 28 20:06:23 2005
@@ -23,7 +23,7 @@
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = 2.2.2
+PROJECT_NUMBER         = 2.3
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
@@ -1109,7 +1109,7 @@
 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 # will graphical hierarchy of all classes instead of a textual one.
 
-GRAPHICAL_HIERARCHY    = YES
+GRAPHICAL_HIERARCHY    = NO
 
 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
 # generated by dot. Possible values are png, jpg, or gif
diff -urdN ../Tekkotsu_2.2.2/docs/doxygenhead.html ./docs/doxygenhead.html
--- ../Tekkotsu_2.2.2/docs/doxygenhead.html	Mon Feb  9 20:47:08 2004
+++ ./docs/doxygenhead.html	Tue Jan  4 18:29:22 2005
@@ -15,15 +15,15 @@
 			<tbody>
 				<tr>
 					<!-- #Homepage# --> <td style="vertical-align: top;"><a target="_top" href="../index.html">Homepage</a></td>
-					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"></td>
+					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Demos# --> <td style="vertical-align: top;"><a target="_top" href="../Samples.html">Demos</a></td>
-					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"></td>
+					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Overview# --> <td style="vertical-align: top;"><a target="_top" href="../Overview.html">Overview</a></td>
-					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"></td>
+					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Downloads# --> <td style="vertical-align: top;"><a target="_top" href="../VersionHistory.html">Downloads</a></td>
-					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"></td>
+					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Tutorials# --> <td style="vertical-align: top;"><a target="_top" href="../Tutorials.html">Tutorials</a></td>
-					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"></td>
+					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Current# --><!-- #Reference# --> <td style="vertical-align: top;"><i>Reference</i></td>
 					<!-- #Bar# --> <td style="vertical-align: top; background-color: rgb(0, 0, 0);"><br></td>
 					<!-- #Credits# --> <td style="vertical-align: top;"><a target="_top" href="../Credits.html">Credits</a> </td>
diff -urdN ../Tekkotsu_2.2.2/docs/html/CVS/Entries ./docs/html/CVS/Entries
--- ../Tekkotsu_2.2.2/docs/html/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./docs/html/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,11 @@
+/.htaccess/1.4/Wed Jan 21 08:15:40 2004//Ttekkotsu-2_3
+/NumberLEDs.jpg/1.4/Wed Oct 15 01:20:16 2003/-kb/Ttekkotsu-2_3
+/aibo.jpg/1.1/Thu Jan  9 02:03:00 2003/-kb/Ttekkotsu-2_3
+/aibopup.jpg/1.1/Thu Jan  9 02:03:01 2003/-kb/Ttekkotsu-2_3
+/aibosmall.jpg/1.1/Thu Jan  9 02:03:01 2003/-kb/Ttekkotsu-2_3
+/doxygen.css/1.6/Tue Jan  4 18:53:34 2005//Ttekkotsu-2_3
+/favicon.ico/1.3/Sun Dec  5 04:04:54 2004/-kb/Ttekkotsu-2_3
+/index.html/1.40/Sat Jan 29 01:06:23 2005//Ttekkotsu-2_3
+/robots.txt/1.1/Thu Jan  9 02:03:01 2003//Ttekkotsu-2_3
+/search.png/1.1/Fri Oct 10 21:32:51 2003/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/docs/html/CVS/Repository ./docs/html/CVS/Repository
--- ../Tekkotsu_2.2.2/docs/html/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./docs/html/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/docs/html
diff -urdN ../Tekkotsu_2.2.2/docs/html/CVS/Root ./docs/html/CVS/Root
--- ../Tekkotsu_2.2.2/docs/html/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./docs/html/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/docs/html/CVS/Tag ./docs/html/CVS/Tag
--- ../Tekkotsu_2.2.2/docs/html/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./docs/html/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/docs/html/doxygen.css ./docs/html/doxygen.css
--- ../Tekkotsu_2.2.2/docs/html/doxygen.css	Mon Oct 18 13:01:38 2004
+++ ./docs/html/doxygen.css	Tue Jan  4 13:53:34 2005
@@ -17,12 +17,15 @@
 	margin: 2px;
 	padding: 2px;
 	line-height: 140%;
-    width: 620px;
+    width: 640px;
     align: center;
     margin-left: auto;
     margin-right: auto; 
 	font-size: smaller;
 }
+TABLE.qindex {
+	font-size: 100%;
+}
 DIV.nav {
 	width: 100%;
 	background-color: #eeeeff;
@@ -52,6 +55,8 @@
 	background-color: #6666cc;
 	color: #ffffff;
 	border: 1px double #9295C2;
+	padding-left: .55ex;
+	padding-right: .55ex;
 }
 A.qindexHL:hover {
 	text-decoration: none;
diff -urdN ../Tekkotsu_2.2.2/docs/html/index.html ./docs/html/index.html
--- ../Tekkotsu_2.2.2/docs/html/index.html	Wed Dec 22 20:47:07 2004
+++ ./docs/html/index.html	Fri Jan 28 20:06:23 2005
@@ -52,28 +52,27 @@
     </tr>
   </tbody>
 </table>
-<div class="qindex">
-<a class="qindexHL" href="main.html">Main&nbsp;Page</a> | <a
- class="qindex" href="namespaces.html">Namespace List</a> | <a
- class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a
- class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a
- class="qindex" href="annotated.html">Class&nbsp;List</a> | <a
- class="qindex" href="dirs.html">Directories</a> | <a class="qindex"
- href="files.html">File&nbsp;List</a> | <a class="qindex"
- href="namespacemembers.html">Namespace&nbsp;Members</a> | <a
- class="qindex" href="functions.html">Class&nbsp;Members</a> | <a
- class="qindex" href="globals.html">File&nbsp;Members</a> | <a
- class="qindex" href="pages.html">Related&nbsp;Pages</a>
-</div>
-<center>
-<h1>Tekkotsu Source Documentation</h1>
-</center>
 <table
  style="text-align: left; width: 620px; margin-left: auto; margin-right: auto; height: 100%;"
  border="0" cellpadding="2" cellspacing="2">
   <tbody>
     <tr>
       <td style="vertical-align: top;">
+<div class="qindex">  <form class="search" action="http://cvs.tekkotsu.org/search.php" method="get">
+<table border=0 class="qindex"><tr><td width="20%" align="center"><a class="qindexHL" href="main.html">Main&nbsp;Page</a></td>
+<td width="0px" bgcolor="000000"></td>
+<td valign="top" width="20%" align="left"><b>Classes: </b><center><a class="qindex" href="annotated.html">List</a>, <a class="qindex" href="classes.html">Index</a>, <a class="qindex" href="hierarchy.html">Hierarchy</a>, <a class="qindex" href="functions.html">Members</a></center></td>
+<td width="0px" bgcolor="000000"></td>
+<td valign="top" width="20%" align="left"><b>Namespaces: </b><center><a class="qindex" href="namespaces.html">List</a>, <a class="qindex" href="namespacemembers.html">Members</a></center></td>
+<td width="0px" bgcolor="000000"></td>
+<td valign="top" width="20%" align="left"><b>Files: </b><center><a class="qindex" href="files.html">List</a>, <a class="qindex" href="dirs.html">Directories</a>, <a class="qindex" href="globals.html">Members</a></center></td>
+<td width="0px" bgcolor="000000"></td>
+<td valign="top" width="20%" align="center"><a class="qindex" href="pages.html">Other&nbsp;Pages</a><hr><span class="search"><u>S</u>earch&nbsp;<input class="search" type="text" name="query" value="" size="10" accesskey="s"/></span></td>
+</tr></table></form>
+</div>
+<center>
+<h1>Tekkotsu Source Documentation</h1>
+</center>
       <div style="text-align: center;"> </div>
       <p style="text-align: center;"><a target="_top" href="index.html">Frames</a>
 | <a target="_top" href="main.html">No Frames</a><br>
@@ -128,8 +127,8 @@
 static copies of the documentation, there are two formats:<br>
       </p>
       <ul style="margin-left: 40px;">
-        <li><a href="../media/Tekkotsu_doc_2.2.2.tar.gz">HTML</a>
-(v2.2.2)</li>
+        <li><a href="../media/Tekkotsu_doc_2.3.tar.gz">HTML</a>
+(v2.3)</li>
       </ul>
       <div style="margin-left: 40px;">If you're using the most recent
 version from the <a href="http://cvs.tekkotsu.org/">CVS repository</a>,
diff -urdN ../Tekkotsu_2.2.2/project/CVS/Entries ./project/CVS/Entries
--- ../Tekkotsu_2.2.2/project/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,14 @@
+/Environment.conf/1.7/Tue Nov 30 21:13:16 2004//Ttekkotsu-2_3
+/Makefile/1.98/Tue Jan 18 23:25:14 2005//Ttekkotsu-2_3
+/StartupBehavior.cc/1.67/Tue Dec 21 21:49:50 2004//Ttekkotsu-2_3
+/StartupBehavior.h/1.12/Thu Nov 11 01:45:37 2004//Ttekkotsu-2_3
+/StartupBehavior_SetupBackgroundBehaviors.cc/1.17/Thu Jan 27 05:42:31 2005//Ttekkotsu-2_3
+/StartupBehavior_SetupFileAccess.cc/1.6/Fri Jan  7 19:37:43 2005//Ttekkotsu-2_3
+/StartupBehavior_SetupModeSwitch.cc/1.41/Sat Jan 29 00:58:25 2005//Ttekkotsu-2_3
+/StartupBehavior_SetupStatusReports.cc/1.4/Wed Jan 12 22:37:26 2005//Ttekkotsu-2_3
+/StartupBehavior_SetupTekkotsuMon.cc/1.17/Tue Dec 14 02:54:01 2004//Ttekkotsu-2_3
+/StartupBehavior_SetupVision.cc/1.16/Wed Mar 17 22:49:15 2004//Ttekkotsu-2_3
+/StartupBehavior_SetupWalkEdit.cc/1.8/Fri May 14 07:18:19 2004//Ttekkotsu-2_3
+/entry.h/1.1/Sat Mar  1 20:53:46 2003//Ttekkotsu-2_3
+D/ms////
+D/templates////
diff -urdN ../Tekkotsu_2.2.2/project/CVS/Repository ./project/CVS/Repository
--- ../Tekkotsu_2.2.2/project/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/project
diff -urdN ../Tekkotsu_2.2.2/project/CVS/Root ./project/CVS/Root
--- ../Tekkotsu_2.2.2/project/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/CVS/Tag ./project/CVS/Tag
--- ../Tekkotsu_2.2.2/project/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/Environment.conf ./project/Environment.conf
--- ../Tekkotsu_2.2.2/project/Environment.conf	Tue Nov 30 16:13:16 2004
+++ ./project/Environment.conf	Tue Nov 30 16:13:16 2004
@@ -1,5 +1,5 @@
 ############  ENVIRONMENT VARIABLES  ##############
-############# $Name: HEAD $ ###############
+############# $Name: HEAD $ ###############
 ############### $Revision: 1.1 $ #################
 ########## $Date: 2005/01/30 17:44:13 $ ###########
 # If you need to modify these, you should set them as environment
diff -urdN ../Tekkotsu_2.2.2/project/Makefile ./project/Makefile
--- ../Tekkotsu_2.2.2/project/Makefile	Wed Dec 22 17:25:40 2004
+++ ./project/Makefile	Tue Jan 18 18:25:14 2005
@@ -1,7 +1,7 @@
 ################ PROJECT MAKEFILE #################
-############# $Name: HEAD $ ###############
-############### $Revision: 1.1 $ #################
-########## $Date: 2005/01/30 17:44:13 $ ###########
+############# $Name: HEAD $ ###############
+############### $Revision: 1.1 $ #################
+########## $Date: 2005/01/30 17:44:13 $ ###########
 
 # Make sure the default target is 'all' by listing it first
 all:
@@ -434,44 +434,54 @@
 
 install: compile
 	@echo "Installing files to memory stick at $(MEMSTICK_ROOT)"
-	$(TEKKOTSU_ROOT)/tools/mntmem $(MEMSTICK_ROOT)
-	@if [ \! -r $(MEMSTICK_ROOT)/open-r/version.txt -o \! -r $(MEMSTICK_ROOT)/open-r/system/objs/ipstack.bin -o \! -r $(MEMSTICK_ROOT)/open-r/system/objs/vr.bin -o \! -r $(MEMSTICK_ROOT)/open-r/system/objs/wlanenbl.bin ] ; then \
+	$(TEKKOTSU_ROOT)/tools/mntmem "$(MEMSTICK_ROOT)"
+	@if [ \! -r "$(MEMSTICK_ROOT)/open-r/version.txt" -o \! -r "$(MEMSTICK_ROOT)/open-r/system/objs/ipstack.bin" -o \! -r "$(MEMSTICK_ROOT)/open-r/system/objs/vr.bin" -o \! -r "$(MEMSTICK_ROOT)/open-r/system/objs/wlanenbl.bin" ] ; then \
 		echo "** ERROR: It looks like your memory stick is missing critical system files."; \
 		echo "**        You may want to 'make newstick' first to clear the memory stick"; \
 		echo "**        and copy the OPEN-R system files onto it."; \
-		echo $(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT); \
-		$(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT); \
+		echo $(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)"; \
+		$(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)"; \
 		exit 1; \
 	fi;
 	@if [ -z "`grep \"$(if $(findstring TGT_ERS7,$(TEKKOTSU_TARGET_MODEL)),ERS-7,ERS-210/220)\" \"$(MEMSTICK_ROOT)/open-r/version.txt\"`" ] ; then \
 		echo "** ERROR: It looks like your memory stick has the system files for the wrong"; \
 		echo "**        model of AIBO.  You may want to 'make newstick' first to clear the"; \
 		echo "**        memory stick and reinstall the OPEN-R system files onto it."; \
-		echo $(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT); \
-		$(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT); \
+		echo $(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)"; \
+		$(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)"; \
 		exit 1; \
 	fi;
-	@$(TEKKOTSU_ROOT)/tools/cpymem --all --img $(MSIMGDIR) --tgt $(MEMSTICK_ROOT) --tools $(TEKKOTSU_ROOT)/tools
+	@$(TEKKOTSU_ROOT)/tools/cpymem --all --img $(MSIMGDIR) --tgt "$(MEMSTICK_ROOT)" --tools $(TEKKOTSU_ROOT)/tools
 	@touch .copiedtomemstick.timestamp
 
 update: compile $(TEKKOTSU_ROOT)/tools/evenmodtime/evenmodtime
 	@echo "Syncing $(MSIMGDIR) and $(MEMSTICK_ROOT)"
 	@$(TEKKOTSU_ROOT)/tools/evenmodtime/evenmodtime `find $(MSIMGDIR)` $(PROJ_BD)/installbin.timestamp
-	@$(TEKKOTSU_ROOT)/tools/mntmem $(MEMSTICK_ROOT)
+	@$(TEKKOTSU_ROOT)/tools/mntmem "$(MEMSTICK_ROOT)"
 	@if [ $(STRICT_MEMSTICK_IMAGE) ] ; then \
 		echo "Strict image copy is on." ; \
-		rsync -rLtWCv --delete $(MSIMGDIR)/* $(PROJ_BD)/$(notdir $(MEMSTICK_ROOT))/* $(MEMSTICK_ROOT) ; \
+		rsync -rLtWCv --delete $(MSIMGDIR)/* "$(PROJ_BD)/$(notdir $(MEMSTICK_ROOT))/"* "$(MEMSTICK_ROOT)" ; \
 	else \
-		rsync -rLtWCv $(MSIMGDIR)/* $(PROJ_BD)/$(notdir $(MEMSTICK_ROOT))/* $(MEMSTICK_ROOT) ; \
+		rsync -rLtWCv $(MSIMGDIR)/* "$(PROJ_BD)/$(notdir $(MEMSTICK_ROOT))/"* "$(MEMSTICK_ROOT)" ; \
 	fi;
-	@$(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT)
+	@$(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)"
 	@touch .copiedtomemstick.timestamp
 
 newstick:
-	$(TEKKOTSU_ROOT)/tools/mntmem $(MEMSTICK_ROOT)
-	rm -rf $(MEMSTICK_ROOT)/*
-	cp -r $(SYSTEM_BINARIES)/* $(MEMSTICK_ROOT)
-	$(TEKKOTSU_ROOT)/tools/umntmem $(MEMSTICK_ROOT)
+	@echo "  We are about to delete all the files contained within '$(MEMSTICK_ROOT)':"
+	@echo "    rm -rf \"$(MEMSTICK_ROOT)/\"*"
+	@echo
+	@echo "  These files will be replaced with a fresh copy of the system binaries"
+	@echo "  from '$(SYSTEM_BINARIES)'"
+	@printf "  Are you sure you want to continue? (Type 'yes' to continue) > "
+	@read resp ; if [ "$$resp" != "yes" ] ; then \
+		echo "newstick canceled"; \
+		exit 1; \
+	fi;
+	$(TEKKOTSU_ROOT)/tools/mntmem "$(MEMSTICK_ROOT)";
+	rm -rf "$(MEMSTICK_ROOT)/"*;
+	cp -r "$(SYSTEM_BINARIES)/"* "$(MEMSTICK_ROOT)";
+	$(TEKKOTSU_ROOT)/tools/umntmem "$(MEMSTICK_ROOT)";
 
 $(FILTERSYSWARN):
 	(cd $(TEKKOTSU_ROOT)/tools && $(MAKE));
diff -urdN ../Tekkotsu_2.2.2/project/StartupBehavior_SetupBackgroundBehaviors.cc ./project/StartupBehavior_SetupBackgroundBehaviors.cc
--- ../Tekkotsu_2.2.2/project/StartupBehavior_SetupBackgroundBehaviors.cc	Mon Nov 15 17:22:36 2004
+++ ./project/StartupBehavior_SetupBackgroundBehaviors.cc	Thu Jan 27 00:42:31 2005
@@ -3,6 +3,7 @@
 #include "Behaviors/Controls/ControlBase.h"
 #include "Behaviors/Controls/BehaviorSwitchControl.h"
 
+#include "Behaviors/Demos/FlashIPAddrBehavior.h"
 #include "Behaviors/Demos/SimpleChaseBallBehavior.h"
 #include "Behaviors/Demos/StareAtBallBehavior.h"
 #include "Behaviors/Demos/AutoGetupBehavior.h"
@@ -26,6 +27,7 @@
 	addItem(new ControlBase("Background Behaviors","Background daemons and monitors"));
 	startSubMenu();
 	{ 
+		addItem((new BehaviorSwitchControl<FlashIPAddrBehavior>("Flash IP Address",false))->start());
 		addItem(new BehaviorSwitchControl<SimpleChaseBallBehavior>("Simple Chase Ball",false));
 		addItem(new BehaviorSwitchControl<StareAtBallBehavior>("Stare at Ball",false));
 		addItem(new BehaviorSwitchControl<HeadLevelBehavior>("Head Level",false));
diff -urdN ../Tekkotsu_2.2.2/project/StartupBehavior_SetupFileAccess.cc ./project/StartupBehavior_SetupFileAccess.cc
--- ../Tekkotsu_2.2.2/project/StartupBehavior_SetupFileAccess.cc	Tue Dec 21 15:29:18 2004
+++ ./project/StartupBehavior_SetupFileAccess.cc	Fri Jan  7 14:37:43 2005
@@ -7,12 +7,16 @@
 #include "Behaviors/Controls/PlaySoundControl.h"
 #include "Behaviors/Controls/DumpFileControl.h"
 #include "Behaviors/Controls/WaypointWalkControl.h"
+#include "Behaviors/Controls/LoadPostureControl.h"
+#include "Behaviors/Controls/SavePostureControl.h"
 
 ControlBase*
 StartupBehavior::SetupFileAccess() {
 	addItem(new ControlBase("File Access","Access/load files on the memory stick"));
 	startSubMenu();
-	{ 
+	{
+		addItem(new LoadPostureControl("Load Posture",stop_id));
+		addItem(new SavePostureControl("Save Posture"));
 		addItem(new PostureEditor(stop_id));
 		addItem(new RunSequenceControl<XLargeMotionSequenceMC::CAPACITY>("Run Motion Sequence",stop_id));
 		addItem(new PlaySoundControl("Play Sound"));
diff -urdN ../Tekkotsu_2.2.2/project/StartupBehavior_SetupStatusReports.cc ./project/StartupBehavior_SetupStatusReports.cc
--- ../Tekkotsu_2.2.2/project/StartupBehavior_SetupStatusReports.cc	Thu Nov 11 15:35:00 2004
+++ ./project/StartupBehavior_SetupStatusReports.cc	Wed Jan 12 17:37:26 2005
@@ -8,6 +8,7 @@
 #include "Behaviors/Controls/EventLogger.h"
 #include "Behaviors/Controls/SensorObserverControl.h"
 #include "Behaviors/Controls/BehaviorReportControl.h"
+#include "Behaviors/Controls/NetworkStatusControl.h"
 
 ControlBase*
 StartupBehavior::SetupStatusReports() {
@@ -22,6 +23,7 @@
 		FreeMemReportControl * tmp=new FreeMemReportControl();
 		tmp->DoStart();
 		addItem(tmp);
+		addItem(new NetworkStatusControl());
 	}
 	return endSubMenu();
 }
diff -urdN ../Tekkotsu_2.2.2/project/StartupBehavior_SetupWalkEdit.cc ./project/StartupBehavior_SetupWalkEdit.cc
--- ../Tekkotsu_2.2.2/project/StartupBehavior_SetupWalkEdit.cc	Fri May 14 03:18:19 2004
+++ ./project/StartupBehavior_SetupWalkEdit.cc	Fri May 14 03:18:19 2004
@@ -9,7 +9,7 @@
  * @author PA Gov. School for the Sciences 2003 Team Project - Motion group: Haoqian Chen, Yantian Martin, Jon Stahlman (creators)
  * 
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/project/ms/CVS/Entries ./project/ms/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,3 @@
+D/config////
+D/data////
+D/open-r////
diff -urdN ../Tekkotsu_2.2.2/project/ms/CVS/Repository ./project/ms/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms
diff -urdN ../Tekkotsu_2.2.2/project/ms/CVS/Root ./project/ms/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/CVS/Tag ./project/ms/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/config/CVS/Entries ./project/ms/config/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/config/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/config/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,15 @@
+/7red.tm/1.1/Thu Feb  5 23:40:33 2004/-kb/Ttekkotsu-2_3
+/ball.tm/1.4/Wed Feb 18 21:13:59 2004/-kb/Ttekkotsu-2_3
+/default.col/1.2/Mon Jul 28 06:58:16 2003//Ttekkotsu-2_3
+/ers210.kin/1.13/Fri Dec 10 23:49:54 2004//Ttekkotsu-2_3
+/ers220.kin/1.13/Fri Dec 10 23:49:54 2004//Ttekkotsu-2_3
+/ers7.kin/1.15/Fri Dec 10 23:49:54 2004//Ttekkotsu-2_3
+/ers7pnts.kin/1.2/Fri Dec 10 23:49:54 2004//Ttekkotsu-2_3
+/general.tm/1.1/Thu Oct  9 06:25:30 2003/-kb/Ttekkotsu-2_3
+/pb.tm/1.1/Thu Oct  9 06:25:30 2003/-kb/Ttekkotsu-2_3
+/phb.tm/1.1/Thu Oct  9 06:25:30 2003/-kb/Ttekkotsu-2_3
+/tekkotsu.cfg/1.58/Thu Jan 27 05:43:38 2005//Ttekkotsu-2_3
+/ttt.col/1.1/Wed Mar  3 23:14:44 2004//Ttekkotsu-2_3
+/ttt.tm/1.1/Wed Mar  3 23:14:44 2004//Ttekkotsu-2_3
+/ttt_old.tm/1.1/Wed Mar  3 23:14:44 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/config/CVS/Repository ./project/ms/config/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/config/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/config/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/config
diff -urdN ../Tekkotsu_2.2.2/project/ms/config/CVS/Root ./project/ms/config/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/config/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/config/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/config/CVS/Tag ./project/ms/config/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/config/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/config/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/config/tekkotsu.cfg ./project/ms/config/tekkotsu.cfg
--- ../Tekkotsu_2.2.2/project/ms/config/tekkotsu.cfg	Mon Dec 20 16:27:15 2004
+++ ./project/ms/config/tekkotsu.cfg	Fri Jan 28 20:12:00 2005
@@ -1,9 +1,9 @@
 ##################################################################
 ######################   Tekkotsu config   #######################
 ##################################################################
-##################### $Name: HEAD $ ######################
-####################### $Revision: 1.1 $ ########################
-################## $Date: 2005/01/30 17:44:13 $ ##################
+##################### $Name: HEAD $ ######################
+####################### $Revision: 1.1 $ ########################
+################## $Date: 2005/01/30 17:44:13 $ ##################
 ##################################################################
 #
 # Format:
@@ -202,9 +202,21 @@
 [Behaviors]
 ##################################################################
 ##################################################################
-# your-stuff-here?
+
+### FlashIPAddrBehavior ###
+
+# You probably already know the first 3 bytes for your network
+# so you might only want the last byte for brevity
+# (valid values are 1 through 4)
+flash_bytes=4
+
+# Do you want to automatically trigger this on boot?
+# Will use a priority of kEmergencyPriority+1 in order to override
+# the emergency stop's status animation
+flash_on_start=0
 
 
+# your-stuff-here?
 
 ##################################################################
 ##################################################################
@@ -331,8 +343,12 @@
 # going above 0xF800 on a ERS-210 causes distortion (clipping) - full volume on a ERS-7 sounds fine though.
 volume=level_3
 
+# Sound playback currently requires all sounds to be the same bit
+# rate.  Aperios further requires only either 8bit/8KHz or 16bit/16KHz
+# formats
 sample_rate=16000
 sample_bits=16
+
 # Preload is a list of sounds to cache at boot
 # can be either root relative or full path
 preload=skid.wav
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/CVS/Entries ./project/ms/data/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/data/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,2 @@
+D/motion////
+D/sound////
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/CVS/Repository ./project/ms/data/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/data/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/data
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/CVS/Root ./project/ms/data/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/data/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/CVS/Tag ./project/ms/data/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/data/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Entries ./project/ms/data/motion/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/motion/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,36 @@
+/circles.wyp/1.1/Tue Mar 30 04:31:39 2004//Ttekkotsu-2_3
+/clearcal.txt/1.2/Thu Feb 26 01:03:05 2004//Ttekkotsu-2_3
+/dance.mot/1.3/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/dispos.pos/1.1/Sat Mar  1 21:08:28 2003//Ttekkotsu-2_3
+/gu_back.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/gu_front.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/gu_side.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_bump.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_diag.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_dive.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_fwd.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_grab.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_head.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_heads.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_hold.mot/1.3/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/k_punch.mot/1.5/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/leftkick.pos/1.1/Sun Sep 21 19:44:14 2003//Ttekkotsu-2_3
+/liedown.pos/1.1/Sat Mar  1 21:08:28 2003//Ttekkotsu-2_3
+/pace.prm/1.1/Fri Sep 12 03:36:10 2003/-kb/Ttekkotsu-2_3
+/pan_head.mot/1.2/Tue Dec 21 22:30:28 2004//Ttekkotsu-2_3
+/pounce.pos/1.1/Sat Mar  1 21:08:28 2003//Ttekkotsu-2_3
+/readme.txt/1.1/Wed Feb 18 21:14:14 2004//Ttekkotsu-2_3
+/rkick.pos/1.1/Thu Jul  8 03:04:21 2004//Ttekkotsu-2_3
+/situp.pos/1.1/Sat Mar  1 21:08:28 2003//Ttekkotsu-2_3
+/sqbasca2.wyp/1.1/Tue Mar 30 04:31:39 2004//Ttekkotsu-2_3
+/sqbasce2.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/sqbasco2.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/sqbasica.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/sqbasice.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/sqbasico.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/sqpush.wyp/1.1/Tue Mar 30 04:31:40 2004//Ttekkotsu-2_3
+/stand.pos/1.1/Sat Mar  1 21:08:28 2003//Ttekkotsu-2_3
+/tiger.prm/1.1/Sun Sep 21 19:44:14 2003//Ttekkotsu-2_3
+/walk.prm/1.6/Sat Feb 28 01:58:55 2004/-kb/Ttekkotsu-2_3
+/walkcal.txt/1.3/Sat Feb 28 01:58:55 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Repository ./project/ms/data/motion/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/motion/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/data/motion
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Root ./project/ms/data/motion/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/motion/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Tag ./project/ms/data/motion/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/data/motion/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/motion/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Entries ./project/ms/data/sound/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,31 @@
+/3barks.wav/1.1/Sun Mar  9 02:45:56 2003/-kb/Ttekkotsu-2_3
+/3yips.wav/1.1/Sun Mar  9 02:45:56 2003/-kb/Ttekkotsu-2_3
+/barkhigh.wav/1.1/Sun Mar  9 02:45:56 2003/-kb/Ttekkotsu-2_3
+/barklow.wav/1.1/Sun Mar  9 02:45:57 2003/-kb/Ttekkotsu-2_3
+/barkmed.wav/1.1/Sun Mar  9 02:45:57 2003/-kb/Ttekkotsu-2_3
+/barkreal.wav/1.1/Sat Mar 15 03:45:02 2003/-kb/Ttekkotsu-2_3
+/camera.wav/1.1/Sat Mar 15 03:45:02 2003/-kb/Ttekkotsu-2_3
+/catcry.wav/1.1/Sun Mar  9 02:45:57 2003/-kb/Ttekkotsu-2_3
+/catyowl.wav/1.1/Sun Mar  9 02:45:57 2003/-kb/Ttekkotsu-2_3
+/crash.wav/1.1/Sat Mar 15 03:45:02 2003/-kb/Ttekkotsu-2_3
+/cutey.wav/1.1/Sun Mar  9 02:45:57 2003/-kb/Ttekkotsu-2_3
+/donkey.wav/1.1/Sun Mar  9 02:45:58 2003/-kb/Ttekkotsu-2_3
+/fart.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/glass.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/growl.wav/1.1/Sun Mar  9 02:45:58 2003/-kb/Ttekkotsu-2_3
+/growl2.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/grrr.wav/1.1/Sun Mar  9 02:45:58 2003/-kb/Ttekkotsu-2_3
+/howl.wav/1.1/Sun Mar  9 02:45:59 2003/-kb/Ttekkotsu-2_3
+/mew.wav/1.1/Sun Mar  9 02:45:59 2003/-kb/Ttekkotsu-2_3
+/ping.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/roar.wav/1.1/Sun Mar  9 02:45:59 2003/-kb/Ttekkotsu-2_3
+/skid.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/sniff.wav/1.1/Sun Mar  9 02:45:59 2003/-kb/Ttekkotsu-2_3
+/tick.wav/1.1/Sat Mar 15 03:45:03 2003/-kb/Ttekkotsu-2_3
+/toc.wav/1.1/Sat Mar 15 03:45:04 2003/-kb/Ttekkotsu-2_3
+/whiip.wav/1.1/Sat Mar 15 03:45:04 2003/-kb/Ttekkotsu-2_3
+/whimper.wav/1.1/Sun Mar  9 02:46:00 2003/-kb/Ttekkotsu-2_3
+/whoop.wav/1.1/Sat Mar 15 03:45:04 2003/-kb/Ttekkotsu-2_3
+/yap.wav/1.1/Sun Mar  9 02:46:00 2003/-kb/Ttekkotsu-2_3
+/yipper.wav/1.1/Sun Mar  9 02:46:00 2003/-kb/Ttekkotsu-2_3
+D/numbers////
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Repository ./project/ms/data/sound/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/data/sound
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Root ./project/ms/data/sound/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Tag ./project/ms/data/sound/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/data/sound/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/0.wav and ./project/ms/data/sound/numbers/0.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/1.wav and ./project/ms/data/sound/numbers/1.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/2.wav and ./project/ms/data/sound/numbers/2.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/3.wav and ./project/ms/data/sound/numbers/3.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/4.wav and ./project/ms/data/sound/numbers/4.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/5.wav and ./project/ms/data/sound/numbers/5.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/6.wav and ./project/ms/data/sound/numbers/6.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/7.wav and ./project/ms/data/sound/numbers/7.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/8.wav and ./project/ms/data/sound/numbers/8.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/9.wav and ./project/ms/data/sound/numbers/9.wav differ
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Entries ./project/ms/data/sound/numbers/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/numbers/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,13 @@
+/0.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/1.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/2.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/3.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/4.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/5.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/6.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/7.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/8.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/9.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/dot.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+/point.wav/1.1/Thu Jan 27 05:43:46 2005/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Repository ./project/ms/data/sound/numbers/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/numbers/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/data/sound/numbers
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Root ./project/ms/data/sound/numbers/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/numbers/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Tag ./project/ms/data/sound/numbers/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/data/sound/numbers/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/dot.wav and ./project/ms/data/sound/numbers/dot.wav differ
Binary files ../Tekkotsu_2.2.2/project/ms/data/sound/numbers/point.wav and ./project/ms/data/sound/numbers/point.wav differ
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Entries ./project/ms/open-r/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,2 @@
+D/mw////
+D/system////
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Repository ./project/ms/open-r/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Root ./project/ms/open-r/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Tag ./project/ms/open-r/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Entries ./project/ms/open-r/mw/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,2 @@
+D/conf////
+D/objs////
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Repository ./project/ms/open-r/mw/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r/mw
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Root ./project/ms/open-r/mw/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Tag ./project/ms/open-r/mw/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Entries ./project/ms/open-r/mw/conf/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/conf/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,5 @@
+/connect.cfg/1.7/Tue Sep 28 23:07:08 2004//Ttekkotsu-2_3
+/object.cfg/1.3/Wed Mar 26 21:33:21 2003//Ttekkotsu-2_3
+/passwd/1.5/Tue Jul  6 22:46:12 2004//Ttekkotsu-2_3
+/robotgw.cfg/1.2/Thu Mar 27 04:25:07 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Repository ./project/ms/open-r/mw/conf/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/conf/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r/mw/conf
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Root ./project/ms/open-r/mw/conf/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/conf/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Tag ./project/ms/open-r/mw/conf/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/conf/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/conf/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Entries ./project/ms/open-r/mw/objs/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/objs/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,2 @@
+/placehld.jnk/1.1/Tue Jul  8 22:56:29 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Repository ./project/ms/open-r/mw/objs/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/objs/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r/mw/objs
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Root ./project/ms/open-r/mw/objs/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/objs/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Tag ./project/ms/open-r/mw/objs/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/mw/objs/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/mw/objs/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Entries ./project/ms/open-r/system/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+D/conf////
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Repository ./project/ms/open-r/system/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r/system
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Root ./project/ms/open-r/system/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Tag ./project/ms/open-r/system/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Entries ./project/ms/open-r/system/conf/CVS/Entries
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/conf/CVS/Entries	Fri Jan 28 20:12:00 2005
@@ -0,0 +1,2 @@
+/wlandflt.txt/1.18/Tue Dec 23 06:33:44 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Repository ./project/ms/open-r/system/conf/CVS/Repository
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/conf/CVS/Repository	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Tekkotsu/project/ms/open-r/system/conf
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Root ./project/ms/open-r/system/conf/CVS/Root
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/conf/CVS/Root	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Tag ./project/ms/open-r/system/conf/CVS/Tag
--- ../Tekkotsu_2.2.2/project/ms/open-r/system/conf/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/ms/open-r/system/conf/CVS/Tag	Fri Jan 28 20:12:00 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/templates/CVS/Entries ./project/templates/CVS/Entries
--- ../Tekkotsu_2.2.2/project/templates/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./project/templates/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,8 @@
+/behavior.h/1.1/Mon Jan 24 22:24:05 2005/-kk/Ttekkotsu-2_3
+/control.h/1.1/Tue Jan 25 23:52:52 2005/-kk/Ttekkotsu-2_3
+/header.h/1.1/Wed Aug 25 01:09:24 2004//Ttekkotsu-2_3
+/implementation.cc/1.1/Wed Aug 25 01:09:24 2004//Ttekkotsu-2_3
+/statemachine.h/1.2/Tue Jan 25 23:52:52 2005/-kk/Ttekkotsu-2_3
+/statenode.h/1.3/Wed Jan 26 00:02:44 2005/-kk/Ttekkotsu-2_3
+/transition.h/1.1/Wed Jan 26 00:02:44 2005/-kk/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/project/templates/CVS/Repository ./project/templates/CVS/Repository
--- ../Tekkotsu_2.2.2/project/templates/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./project/templates/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/project/templates
diff -urdN ../Tekkotsu_2.2.2/project/templates/CVS/Root ./project/templates/CVS/Root
--- ../Tekkotsu_2.2.2/project/templates/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./project/templates/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/project/templates/CVS/Tag ./project/templates/CVS/Tag
--- ../Tekkotsu_2.2.2/project/templates/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./project/templates/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/project/templates/behavior.h ./project/templates/behavior.h
--- ../Tekkotsu_2.2.2/project/templates/behavior.h	Wed Dec 31 19:00:00 1969
+++ ./project/templates/behavior.h	Mon Jan 24 17:24:05 2005
@@ -0,0 +1,68 @@
+//-*-c++-*-
+#ifndef INCLUDED_CLASSNAME_h_
+#define INCLUDED_CLASSNAME_h_
+
+// This is an empty Behavior template file.
+// Replace YOURNAME, CLASSNAME, and DESCRIPTION as appropriate, and go to town!
+
+
+#include "Behaviors/BehaviorBase.h"
+#include "Events/EventRouter.h"
+
+//! DESCRIPTION
+class CLASSNAME : public BehaviorBase {
+public:
+	//! constructor
+	CLASSNAME() : BehaviorBase("CLASSNAME") {}
+
+	virtual void DoStart() {
+		BehaviorBase::DoStart(); // do this first (required)
+
+		// <your startup code here>
+		// e.g. erouter->addListener(this, ... );
+		// (Event IDs are found in Events/EventBase.h)
+	}
+
+	virtual void DoStop() {
+		// <your shutdown code here>
+
+		erouter->removeListener(this); //generally a good idea, unsubscribe all
+		BehaviorBase::DoStop(); // do this last (required)
+	}
+
+	virtual void processEvent(const EventBase& e) {
+		// <your event processing code here>
+		// you can delete this function if you don't use any events...
+		// (in which case, you may want to call DoStop() at the end of DoStart()
+	}
+
+	static std::string getClassDescription() { return "DESCRIPTION"; }
+	virtual std::string getDescription() const { return getClassDescription(); }
+	
+
+protected:
+	// <class members go here>
+
+	
+private:
+	// Providing declarations for these functions will avoid a compiler warning if
+	// you have any class members which are pointers.  However, as it is, an error
+	// will result if you inadvertantly cause a call to either (which is probably
+	// a good thing, unless you really intended to copy/assign a behavior, in
+	// which case simply provide implementations for the functions)
+	CLASSNAME(const CLASSNAME&); //!< don't call (copy constructor)
+	CLASSNAME operator=(const CLASSNAME&); //!< don't call (assignment operator)
+};
+
+/*! @file
+ * @brief Defines CLASSNAME, which DESCRIPTION
+ * @author YOURNAMEHERE (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/project/templates/behavior_header.h ./project/templates/behavior_header.h
--- ../Tekkotsu_2.2.2/project/templates/behavior_header.h	Thu Nov 11 15:35:00 2004
+++ ./project/templates/behavior_header.h	Wed Dec 31 19:00:00 1969
@@ -1,50 +0,0 @@
-//-*-c++-*-
-
-// This is an empty Behavior template file.
-// Replace CLASSNAME and DESCRIPTION as appropriate, and go to town!
-
-#ifndef INCLUDED_CLASSNAME_h_
-#define INCLUDED_CLASSNAME_h_
-
-#include "Behaviors/BehaviorBase.h"
-
-//! DESCRIPTION
-class CLASSNAME : public BehaviorBase {
-public:
-	//! constructor
-	CLASSNAME() : BehaviorBase("CLASSNAME") {}
-
-	virtual void DoStart() {
-		BehaviorBase::DoStart(); // do this first
-		// <your startup code here>
-	}
-
-	virtual void DoStop() {
-		// <your shutdown code here>
-		BehaviorBase::DoStop(); // do this last
-	}
-
-	virtual void processEvent(const EventBase& e) {
-		// <your event processing code here>
-		// you can delete this function if you don't use any events...
-	}
-
-	static std::string getClassDescription() { return "DESCRIPTION"; }
-	virtual std::string getDescription() const { return getClassDescription(); }
-	
-protected:
-	
-};
-
-/*! @file
- * @brief Defines CLASSNAME, which DESCRIPTION
- * @author YOURNAMEHERE (Creator)
- *
- * $Author: ejt $
- * $Name: HEAD $
- * $Revision: 1.1 $
- * $State: Exp $
- * $Date: 2005/01/30 17:44:13 $
- */
-
-#endif
diff -urdN ../Tekkotsu_2.2.2/project/templates/control.h ./project/templates/control.h
--- ../Tekkotsu_2.2.2/project/templates/control.h	Wed Dec 31 19:00:00 1969
+++ ./project/templates/control.h	Tue Jan 25 18:52:52 2005
@@ -0,0 +1,178 @@
+//-*-c++-*-
+#ifndef INCLUDED_CLASSNAME_h
+#define INCLUDED_CLASSNAME_h
+
+// This is an empty Control template file.
+// 
+// Controls provide an interface for user interaction.  Generally this is done
+// in the format of a menu listing, where the user can select one or more items
+// at the same time, and may (or may not) be able to send textual input to these
+// selected items.  Much more information is available in the ControlBase
+// documentation.
+//
+// Early control implementations would completely override the ControlBase
+// implementations and directly encode the ControlBase protocols for interaction
+// with the user's terminal and/or GUI.  This may be more efficient, but it is
+// fair easier, and possibly easier to maintain, code which builds/maintains a
+// set of submenus and blindly relies on the ControlBase implementation to
+// manage communication.
+//
+// Using multiple inheritance, a control can also be considered an EventListener
+// or even a full-fledged behavior.  This is completely expected and can be very
+// useful for providing real time feedback or editing capabilties to a user.
+//
+// You are highly encouraged to familiarize yourself with the controls available
+// in Behaviors/Controls in order to compose your interface.
+// 
+// Some methods return a ControlBase*.  These values are interpreted
+// by the Controller as follows:
+//   - 'this' if the control should stay active (default for most)
+//   - 'NULL' to return to parent control
+//   - other address to activate a child control
+//
+// Replace YOURNAME, CLASSNAME, and DESCRIPTION as appropriate, and go to town!
+
+
+#include "Behaviors/Controls/ControlBase.h"
+
+//! DESCRIPTION
+class CLASSNAME : public ControlBase {
+
+	// **************************** //
+	// ******* CONSTRUCTORS ******* //
+	// **************************** //
+	// Not all of these necessarily make sense to implement... feel free
+	// to remove those which don't -- none are required.
+
+public:
+	//! default constructor
+	CLASSNAME()
+		: ControlBase("CLASSNAME","DESCRIPTION")
+	{init();}
+	//! constructor which allows a custom name
+	CLASSNAME(const std::string& n)
+		: ControlBase(n,"DESCRIPTION")
+	{init();}
+	//! constructor which allows a custom name and tooltip
+	CLASSNAME(const std::string& n, const std::string& d)
+		: ControlBase(n,d)
+	{init();}
+
+	//! destructor
+	virtual ~CLASSNAME() {}
+
+protected:
+	//! initialization
+	virtual void init() {
+		// If your Control is relatively static, you'll probably want to do a series
+		// of pushSlot(...)'s here in order to build up your interface.  See
+		// controls available in Behaviors/Controls.
+		// Otherwise, see the refresh() function.
+	}
+
+
+	// **************************** //
+	// ********* METHODS ********** //
+	// **************************** //
+	// You *aren't* expected to override all of these functions.
+	// Feel free to remove those which you don't use -- none are
+	// required, and the ControlBase implementation is fully functional.
+
+public:
+	//! Called when the control is activated (or the control system is reactivating)
+	/*! Takes the id number of a LedMC which the control should use,
+	 *  maintained by Controller.  Controls share the display which is
+	 *  passed, and may use the socket @a gui to communicate with the
+	 *  GUI controller, although you shouldn't assume it is connected. */
+	virtual ControlBase * activate(MotionManager::MC_ID disp_id, Socket * gui) {
+		return ControlBase::activate(disp_id,gui);
+	}
+
+	//! called when a control is being overriden by a child, or the control system is deactivating (e-stop being turned off)
+	virtual void pause() {
+		ControlBase::pause();
+	}
+
+	//! called when a child has deactivated and this control should refresh its display, or some other event (such as the user pressing the refresh button) has happened to cause a refresh to be needed
+	virtual void refresh() {
+		// If you are displaying dynamic information, you may wish to call clearSlots()
+		// and then rebuild the menus with the current information.
+		// Alternatively, if you know which items need to be modified, you can simply
+		// change their name before calling the ControlBase::refresh below.
+		ControlBase::refresh();
+	}
+	
+	//! called when this control is being popped from the control stack
+	virtual void deactivate() {
+		ControlBase::deactivate();
+	}
+
+	//! when the user has trigger an "open selection"
+	/*! default is to return the hilighted control */
+	virtual ControlBase * doSelect() {
+		return ControlBase::doSelect();
+	}
+
+	//! when the user wants to increment the control
+	/*! default is to hilight the first non-null slot after the last hilight, and return @c this */
+	virtual ControlBase * doNextItem() {
+		return ControlBase::doNextItem();
+	}
+
+	//! when the user wants to decrement the control
+	/*! default is to hilight the last non-null slot before the first hilight, and return @c this */
+	virtual ControlBase * doPrevItem() {
+		return ControlBase::doPrevItem();
+	}
+
+	//! when the user wants to cancel
+	/*! you should almost always return NULL now unless you need to override the cancel in order to confirm something (e.g. "Save changes?") */
+	virtual ControlBase * doCancel() {
+		return ControlBase::doCancel();
+	}
+
+	//! prompt the user for text input on the current input device (cin, tekkotsu console (sout), or GUI)
+	virtual ControlBase * doReadStdIn(const std::string& prompt=std::string()) {
+		return ControlBase::doReadStdIn(prompt);
+	}
+
+	//! called when the user has supplied a text string
+	/*! May or may not have been prompted by doReadStdIn()!  May not
+	 *  even be active yet - the user can direct the same input to a set
+	 *  of hilighted menus */
+	virtual ControlBase * takeInput(const std::string& msg) {
+		return ControlBase::takeInput(msg);
+	}
+
+	//! may be called before takeInput to verify this Control can make sense of msg
+	virtual bool validInput(const std::string& msg) {
+		return ControlBase::validInput(msg);
+	}
+
+
+	// **************************** //
+	// ********* MEMBERS ********** //
+	// **************************** //
+protected:
+	// <class members go here>
+
+
+	// **************************** //
+	// ********** OTHER *********** //
+	// **************************** //
+private:
+	CLASSNAME(const CLASSNAME&); //!< you can override, but don't call this...
+	CLASSNAME& operator=(const CLASSNAME&); //!< you can override, but don't call this...
+};
+
+/*! @file
+ * @brief Defines CLASSNAME, which DESCRIPTION
+ * @author YOURNAMEHERE (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+#endif
diff -urdN ../Tekkotsu_2.2.2/project/templates/header.h ./project/templates/header.h
--- ../Tekkotsu_2.2.2/project/templates/header.h	Tue Aug 24 21:09:24 2004
+++ ./project/templates/header.h	Tue Aug 24 21:09:24 2004
@@ -15,7 +15,7 @@
  * @author YOURNAMEHERE (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/project/templates/implementation.cc ./project/templates/implementation.cc
--- ../Tekkotsu_2.2.2/project/templates/implementation.cc	Tue Aug 24 21:09:24 2004
+++ ./project/templates/implementation.cc	Tue Aug 24 21:09:24 2004
@@ -5,7 +5,7 @@
  * @author YOURNAMEHERE (Creator)
  *
  * $Author: ejt $
- * $Name: HEAD $
+ * $Name: HEAD $
  * $Revision: 1.1 $
  * $State: Exp $
  * $Date: 2005/01/30 17:44:13 $
diff -urdN ../Tekkotsu_2.2.2/project/templates/statemachine.h ./project/templates/statemachine.h
--- ../Tekkotsu_2.2.2/project/templates/statemachine.h	Wed Dec 31 19:00:00 1969
+++ ./project/templates/statemachine.h	Tue Jan 25 18:52:52 2005
@@ -0,0 +1,111 @@
+//-*-c++-*-
+#ifndef INCLUDED_CLASSNAME_h_
+#define INCLUDED_CLASSNAME_h_
+
+// This is an empty StateNode template file.
+//
+// StateNodes are recursive data structures, can be used as either a leaf node
+// or a machine.  This template is the suggested form for a state machine, which
+// breaks a task down into one or more subnodes.
+//
+// You are of course welcome to combine the abilities of a leaf node (actual
+// execution) and a state machine (which breaks the task down into subnodes) --
+// simply add processEvent() and DoStop(), as seen in statenode.h
+//
+// Replace YOURNAME, CLASSNAME, and DESCRIPTION as appropriate, and go to town!
+
+
+#include "Behaviors/StateNode.h"
+
+//! DESCRIPTION
+class CLASSNAME : public StateNode {
+
+	// ****************************
+	// ******* CONSTRUCTORS *******
+	// ****************************
+public:
+	//! default constructor, use type name as instance name
+	CLASSNAME()
+		: StateNode("CLASSNAME","CLASSNAME"), start(NULL)
+	{}
+
+	//! constructor, take an instance name
+	CLASSNAME(const std::string& nm)
+		: StateNode("CLASSNAME",nm), start(NULL)
+	{}
+
+	//! destructor, check call to teardown -- only actually necessary if you override teardown()
+	~CLASSNAME() {
+		if(issetup) 
+			teardown();
+	}
+
+protected:
+  //! constructor for subclasses (which would need to provide a different class name)
+  CLASSNAME(const std::string &class_name, const std::string &node_name)
+    : StateNode(class_name,node_name), start(NULL)
+	{}
+	
+	
+	// ****************************
+	// ********* METHODS **********
+	// ****************************
+public:
+	//! This function should wire together any subnodes which you may desire
+	virtual void setup() {
+		StateNode::setup(); // call anytime(required)
+		// <your setup code here>
+		start=/*...*/;
+	}
+
+	//! You may not need this function if the only memory allocated in
+	//! setup() was subnodes and transitions
+	virtual void teardown() {
+		// <your teardown code here>
+		StateNode::teardown(); // may delete subnodes (required)
+	}
+
+	//! Just like a behavior, called when it's time to start doing your thing
+	virtual void DoStart() {
+		StateNode::DoStart(); // do this first (required)
+		start->DoStart();
+		// probably don't need to do anything else...
+	}
+
+	static std::string getClassDescription() { return "DESCRIPTION"; }
+	virtual std::string getDescription() const { return getClassDescription(); }
+
+
+	// ****************************
+	// ********* MEMBERS **********
+	// ****************************
+protected:
+	StateNode * start; //!< the subnode to begin within on DoStart()
+	// <class members go here>
+
+
+	// ****************************
+	// ********** OTHER ***********
+	// ****************************
+private:
+	// Providing declarations for these functions will avoid a compiler warning if
+	// you have any class members which are pointers.  However, as it is, an error
+	// will result if you inadvertantly cause a call to either (which is probably
+	// a good thing, unless you really intended to copy/assign a behavior, in
+	// which case simply provide implementations for the functions)
+	CLASSNAME(const CLASSNAME&); //!< don't call (copy constructor)
+	CLASSNAME operator=(const CLASSNAME&); //!< don't call (assignment operator)
+};
+
+/*! @file
+ * @brief Defines CLASSNAME, which DESCRIPTION
+ * @author YOURNAMEHERE (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/project/templates/statenode.h ./project/templates/statenode.h
--- ../Tekkotsu_2.2.2/project/templates/statenode.h	Wed Dec 31 19:00:00 1969
+++ ./project/templates/statenode.h	Tue Jan 25 19:02:44 2005
@@ -0,0 +1,109 @@
+//-*-c++-*-
+#ifndef INCLUDED_CLASSNAME_h_
+#define INCLUDED_CLASSNAME_h_
+
+// This is an empty StateNode template file.
+//
+// StateNodes are recursive data structures, can be used as either a leaf node
+// or a machine.  This template is the suggested form for a leaf node, which
+// does the actual implementation of a task without help from other subnodes.
+// Note the extreme similarity to a Behavior... the only significant difference
+// for implementation is a few extra suggested constructors.
+//
+// You are of course welcome to combine the abilities of a leaf node (actual
+// execution) and a state machine (which breaks the task down into subnodes),
+// but statemachine.h might provide an easier starting point for such usage.
+//
+// Replace YOURNAME, CLASSNAME, and DESCRIPTION as appropriate, and go to town!
+
+
+#include "Behaviors/StateNode.h"
+
+//! DESCRIPTION
+class CLASSNAME : public StateNode {
+
+	// **************************** //
+	// ******* CONSTRUCTORS ******* //
+	// **************************** //
+public:
+	//! default constructor, use type name as instance name
+	CLASSNAME()
+		: StateNode("CLASSNAME","CLASSNAME")
+	{}
+
+	//! constructor, take an instance name
+	CLASSNAME(const std::string& nm)
+		: StateNode("CLASSNAME",nm)
+	{}
+
+protected:
+  //! constructor for subclasses (which would need to provide a different class name)
+  CLASSNAME(const std::string &class_name, const std::string &node_name)
+    : StateNode(class_name,node_name)
+	{}
+	
+	
+	// **************************** //
+	// ********* METHODS ********** //
+	// **************************** //
+public:
+	//! Just like a behavior, called when it's time to start doing your thing
+	virtual void DoStart() {
+		StateNode::DoStart(); // do this first (required)
+		// <your startup code here>
+		// can also erouter->addListener(this, ... );
+		// (Event IDs are found in Events/EventBase.h)
+
+		// Don't call DoStop() yourself (as behaviors can do) -- let a transition do
+		// it when deemed appropriate
+	}
+
+	virtual void processEvent(const EventBase& /*e*/) {
+		// <your event processing code here>
+		// you can delete this function if you don't use any events...
+	}
+
+	//! Just like a behavior, called when it's time to stop doing your thing
+	virtual void DoStop() {
+		// <your shutdown code here>
+
+		erouter->removeListener(this); //generally a good idea, unsubscribe all
+		StateNode::DoStop(); // do this last (required)
+	}
+
+	static std::string getClassDescription() { return "DESCRIPTION"; }
+	virtual std::string getDescription() const { return getClassDescription(); }
+
+
+	// **************************** //
+	// ********* MEMBERS ********** //
+	// **************************** //
+protected:
+	// <class members go here>
+
+
+	// **************************** //
+	// ********** OTHER *********** //
+	// **************************** //
+private:
+	// Providing declarations for these functions will avoid a compiler warning if
+	// you have any class members which are pointers.  However, as it is, an error
+	// will result if you inadvertantly cause a call to either (which is probably
+	// a good thing, unless you really intended to copy/assign a behavior, in
+	// which case simply provide implementations for the functions)
+	CLASSNAME(const CLASSNAME&); //!< don't call (copy constructor)
+	CLASSNAME operator=(const CLASSNAME&); //!< don't call (assignment operator)
+};
+
+/*! @file
+ * @brief Defines CLASSNAME, which DESCRIPTION
+ * @author YOURNAMEHERE (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/project/templates/transition.h ./project/templates/transition.h
--- ../Tekkotsu_2.2.2/project/templates/transition.h	Wed Dec 31 19:00:00 1969
+++ ./project/templates/transition.h	Tue Jan 25 19:02:44 2005
@@ -0,0 +1,105 @@
+//-*-c++-*-
+#ifndef INCLUDED_CLASSNAME_h_
+#define INCLUDED_CLASSNAME_h_
+
+// This is an empty Transition template file.
+//
+// Note that Transitions are in fact behaviors, and indeed, there's little
+// extra.  Only now, the Transition base class provides a fire() function for
+// you to call when your transition decides it is time.
+//
+// Replace YOURNAME, CLASSNAME, and DESCRIPTION as appropriate, and go to town!
+
+
+#include "Behaviors/Transition.h"
+
+//! DESCRIPTION
+class CLASSNAME : public Transition {
+
+	// **************************** //
+	// ******* CONSTRUCTORS ******* //
+	// **************************** //
+public:
+	//! default constructor, use type name as instance name
+	CLASSNAME(StateNode* destination)
+		: Transition("CLASSNAME",destination)
+	{}
+
+	//! constructor, take an instance name
+	CLASSNAME(const std::string& nm, StateNode* destination)
+		: Transition("CLASSNAME",nm,destination)
+	{}
+
+protected:
+  //! constructor for subclasses (which would need to provide a different class name)
+  CLASSNAME(const std::string &class_name, const std::string &instance_name, StateNode* destination)
+    : Transition(class_name,instance_name,destination)
+	{}
+	
+	
+	// **************************** //
+	// ********* METHODS ********** //
+	// **************************** //
+public:
+	//! Just like a behavior, called when it's time to start doing your thing
+	virtual void DoStart() {
+		Transition::DoStart(); // do this first (required)
+		// <your startup code here>
+		// e.g. erouter->addListener(this, ... );
+		// (Event IDs are found in Events/EventBase.h)
+
+		// Don't call DoStop() yourself (as behaviors can do) -- let the source
+		// StateNode do it when a transition (perhaps this one) fires
+	}
+
+	virtual void processEvent(const EventBase& /*e*/) {
+		// <your event processing code here>
+		// Call fire() (a method of the Transition base class) whenever the
+		// environment satisifies whatever condition this Transition is supposed to
+		// monitor for.  This triggers all the machinery to cause the transition.
+	}
+
+	//! Just like a behavior, called when it's time to stop doing your thing
+	virtual void DoStop() {
+		// <your shutdown code here>
+
+		erouter->removeListener(this); //generally a good idea, unsubscribe all
+		Transition::DoStop(); // do this last (required)
+	}
+
+	static std::string getClassDescription() { return "DESCRIPTION"; }
+	virtual std::string getDescription() const { return getClassDescription(); }
+
+
+	// **************************** //
+	// ********* MEMBERS ********** //
+	// **************************** //
+protected:
+	// <class members go here>
+
+
+	// **************************** //
+	// ********** OTHER *********** //
+	// **************************** //
+private:
+	// Providing declarations for these functions will avoid a compiler warning if
+	// you have any class members which are pointers.  However, as it is, an error
+	// will result if you inadvertantly cause a call to either (which is probably
+	// a good thing, unless you really intended to copy/assign a behavior, in
+	// which case simply provide implementations for the functions)
+	CLASSNAME(const CLASSNAME&); //!< don't call (copy constructor)
+	CLASSNAME operator=(const CLASSNAME&); //!< don't call (assignment operator)
+};
+
+/*! @file
+ * @brief Defines CLASSNAME, which DESCRIPTION
+ * @author YOURNAMEHERE (Creator)
+ *
+ * $Author: ejt $
+ * $Name: HEAD $
+ * $Revision: 1.1 $
+ * $State: Exp $
+ * $Date: 2005/01/30 17:44:13 $
+ */
+
+#endif
diff -urdN ../Tekkotsu_2.2.2/tools/CVS/Entries ./tools/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,32 @@
+/Makefile/1.7/Sat Sep 25 03:14:05 2004//Ttekkotsu-2_3
+/buildDocs/1.1/Sun Jul 20 19:25:38 2003//Ttekkotsu-2_3
+/buildRelease/1.58/Sat Jan 29 01:06:59 2005//Ttekkotsu-2_3
+/catmemlog/1.1.1.1/Mon Sep 30 18:19:46 2002//Ttekkotsu-2_3
+/cmake/1.1/Mon Jul 28 06:34:13 2003//Ttekkotsu-2_3
+/colorfilt/1.2/Sat Nov 22 20:33:02 2003//Ttekkotsu-2_3
+/cpymem/1.3/Wed Apr 30 03:55:58 2003//Ttekkotsu-2_3
+/crashDebug/1.19/Fri Nov 12 21:55:47 2004//Ttekkotsu-2_3
+/cvsCheckoutDate/1.1/Thu Jan 20 23:17:37 2005//Ttekkotsu-2_3
+/dist_hosts.txt/1.2/Thu Sep 25 15:32:15 2003//Ttekkotsu-2_3
+/emonLogParser/1.3/Fri Nov 12 21:34:12 2004//Ttekkotsu-2_3
+/filewordreplace/1.2/Tue Jan  4 19:51:41 2005//Ttekkotsu-2_3
+/ftpinstall/1.7/Tue Nov 16 23:52:32 2004//Ttekkotsu-2_3
+/ftpupdate/1.7/Tue Nov 16 23:52:32 2004//Ttekkotsu-2_3
+/makelowercase/1.7/Wed Nov 17 04:48:22 2004//Ttekkotsu-2_3
+/makeuppercase/1.7/Wed Nov 17 04:48:23 2004//Ttekkotsu-2_3
+/mntmem/1.3/Tue Apr 29 21:03:09 2003//Ttekkotsu-2_3
+/mstreeput/1.3/Mon Jul 28 06:34:13 2003//Ttekkotsu-2_3
+/pm.pl/1.2/Thu Sep 25 15:32:15 2003//Ttekkotsu-2_3
+/recurse/1.1.1.1/Mon Sep 30 18:19:46 2002//Ttekkotsu-2_3
+/umntmem/1.7/Thu Aug 21 22:34:43 2003//Ttekkotsu-2_3
+D/bandit-sim////
+D/binstrswap////
+D/convertmot////
+D/evenmodtime////
+D/filtersyswarn////
+D/mipaltools////
+D/mon////
+D/safemot////
+D/seg////
+D/test////
+D/walk_calibration////
diff -urdN ../Tekkotsu_2.2.2/tools/CVS/Repository ./tools/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools
diff -urdN ../Tekkotsu_2.2.2/tools/CVS/Root ./tools/CVS/Root
--- ../Tekkotsu_2.2.2/tools/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/CVS/Tag ./tools/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Entries ./tools/bandit-sim/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/bandit-sim/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,5 @@
+/bandit.java/1.1/Sun Jun 22 17:11:53 2003//Ttekkotsu-2_3
+/loss.aif/1.1/Sun Jun 22 17:11:53 2003/-kb/Ttekkotsu-2_3
+/manifestheader/1.1/Sun Jun 22 17:11:53 2003//Ttekkotsu-2_3
+/reward.aif/1.1/Sun Jun 22 17:11:53 2003/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Repository ./tools/bandit-sim/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/bandit-sim/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/bandit-sim
diff -urdN ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Root ./tools/bandit-sim/CVS/Root
--- ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/bandit-sim/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Tag ./tools/bandit-sim/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/bandit-sim/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/bandit-sim/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Entries ./tools/binstrswap/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/binstrswap/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,3 @@
+/Makefile/1.2/Sun Aug 24 21:19:21 2003//Ttekkotsu-2_3
+/binstrswap.cc/1.3/Sat Jul 26 15:35:01 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Repository ./tools/binstrswap/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/binstrswap/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/binstrswap
diff -urdN ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Root ./tools/binstrswap/CVS/Root
--- ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/binstrswap/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Tag ./tools/binstrswap/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/binstrswap/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/binstrswap/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/buildRelease ./tools/buildRelease
--- ../Tekkotsu_2.2.2/tools/buildRelease	Wed Dec 22 20:52:13 2004
+++ ./tools/buildRelease	Fri Jan 28 20:06:59 2005
@@ -29,8 +29,8 @@
 rm -rf Tekkotsu_memstick_$1
 rm -rf Tekkotsu_memstick_$1.tar.gz
 
-echo "Exporting source for ${newtag}..."
-cvs -q export -r ${newtag} -d Tekkotsu_$1 Tekkotsu
+echo "Checking out source for ${newtag}..."
+cvs -q checkout -r ${newtag} -d Tekkotsu_$1 Tekkotsu
 if [ ! -d Tekkotsu_$1 ] ; then
 	echo "cvs export failed"
 	exit 1;
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/CVS/Entries ./tools/convertmot/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/convertmot/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,6 @@
+/Makefile/1.4/Tue Nov  9 22:15:03 2004//Ttekkotsu-2_3
+/README.txt/1.3/Fri Apr 16 20:20:56 2004//Ttekkotsu-2_3
+/convertmot.cc/1.5/Mon Nov  8 21:48:19 2004//Ttekkotsu-2_3
+/tekkotsu.cfg/1.1/Mon Nov  8 21:48:19 2004//Ttekkotsu-2_3
+D/cmpack02-littleendian////
+D/cmpack03-littleendian////
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/CVS/Repository ./tools/convertmot/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/convertmot/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/convertmot
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/CVS/Root ./tools/convertmot/CVS/Root
--- ../Tekkotsu_2.2.2/tools/convertmot/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/CVS/Tag ./tools/convertmot/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/convertmot/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Entries ./tools/convertmot/cmpack02-littleendian/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack02-littleendian/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,13 @@
+/dance.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/gu_back.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/gu_front.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/gu_side.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/k_bump.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/k_dive.mot/1.1/Sat Apr 26 21:17:15 2003/-kb/Ttekkotsu-2_3
+/k_fwd.mot/1.1/Sat Apr 26 21:17:16 2003/-kb/Ttekkotsu-2_3
+/k_head.mot/1.1/Sat Apr 26 21:17:16 2003/-kb/Ttekkotsu-2_3
+/k_heads.mot/1.1/Sat Apr 26 21:17:16 2003/-kb/Ttekkotsu-2_3
+/k_hold.mot/1.1/Sat Apr 26 21:17:16 2003/-kb/Ttekkotsu-2_3
+/k_punch.mot/1.1/Sat Apr 26 21:17:16 2003/-kb/Ttekkotsu-2_3
+/readme.txt/1.1/Fri Apr 16 20:21:23 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Repository ./tools/convertmot/cmpack02-littleendian/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack02-littleendian/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/convertmot/cmpack02-littleendian
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Root ./tools/convertmot/cmpack02-littleendian/CVS/Root
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack02-littleendian/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Tag ./tools/convertmot/cmpack02-littleendian/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack02-littleendian/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack02-littleendian/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Entries ./tools/convertmot/cmpack03-littleendian/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack03-littleendian/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,49 @@
+/b_gcntr.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/b_gdive.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/b_supp.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/bw_back.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/chicken_dance.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/dance1.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/dance2.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/dance3.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/enter_field.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/gu_back.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/gu_front.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/gu_side.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_bump.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_bw.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_diag.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_dive.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_fwd.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_fwd1.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_fwd2.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_grab.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_head.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_headh.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_heads.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_hold.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_ldive.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_punch.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_rdive.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_sdive.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_spin.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_swing.mot/1.1/Fri Apr 16 20:21:40 2004/-kb/Ttekkotsu-2_3
+/k_swing1.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_10.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_11.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_12_front.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_13.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_14_power_chunky.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_15.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_17_lightning.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_18.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_4_chest.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_5.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_6.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_8.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/k_unsw_9.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/readme.txt/1.1/Fri Apr 16 20:21:41 2004//Ttekkotsu-2_3
+/sad.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/sb_climb.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+/warmup.mot/1.1/Fri Apr 16 20:21:41 2004/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Repository ./tools/convertmot/cmpack03-littleendian/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack03-littleendian/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/convertmot/cmpack03-littleendian
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Root ./tools/convertmot/cmpack03-littleendian/CVS/Root
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack03-littleendian/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Tag ./tools/convertmot/cmpack03-littleendian/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/convertmot/cmpack03-littleendian/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/convertmot/cmpack03-littleendian/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/convertmot/tekkotsu.cfg ./tools/convertmot/tekkotsu.cfg
--- ../Tekkotsu_2.2.2/tools/convertmot/tekkotsu.cfg	Mon Nov  8 16:48:19 2004
+++ ./tools/convertmot/tekkotsu.cfg	Mon Nov  8 16:48:19 2004
@@ -1,7 +1,7 @@
 ##################################################################
 ################   Tekkotsu::convertmot config   #################
 ##################################################################
-##################### $Name: HEAD $ ######################
+##################### $Name: HEAD $ ######################
 ####################### $Revision: 1.1 $ ########################
 ################## $Date: 2005/01/30 17:44:13 $ ##################
 ##################################################################
diff -urdN ../Tekkotsu_2.2.2/tools/cvsCheckoutDate ./tools/cvsCheckoutDate
--- ../Tekkotsu_2.2.2/tools/cvsCheckoutDate	Wed Dec 31 19:00:00 1969
+++ ./tools/cvsCheckoutDate	Thu Jan 20 18:17:37 2005
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+usage="$0 [-h | --help] [ -f | --filelist] [directory]\n  Recursively searches for CVS directories and finds the newest entry"
+
+listfiles=false;
+while [ $# -gt 0 ] ; do
+	case "$1" in
+		-h | --help) printf "$usage"; exit 2;;
+		-f | --filelist) listfiles=true; shift;;
+		*) break;;
+	esac;
+done;
+
+dir="$1";
+if [ -z "$dir" ] ; then
+	dir=".";
+fi;
+
+tmpfile=/tmp/dates.cvsCheckoutDate;
+rm -f "$tmpfile";
+find $dir -name "CVS" -type d -exec cut -f 4 -d / \{\}/Entries \; | grep '^... ... .. ..:..:..' > "$tmpfile";
+
+if $listfiles ; then
+	d1=`date -f "$tmpfile" "+%F %T" | sort -r | head -n 1`;
+	d2=`date -d "$d1" "+%b %e %T %Y"`;
+	find $dir -name "CVS" -type d -exec grep -H "$d2" \{\}/Entries \;
+else
+	date -f "$tmpfile" "+%F %T" | sort -r | head -n 1;
+fi;
diff -urdN ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Entries ./tools/evenmodtime/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/evenmodtime/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,3 @@
+/Makefile/1.2/Sun Aug 24 21:19:27 2003//Ttekkotsu-2_3
+/evenmodtime.cc/1.1/Mon Jul 28 18:39:19 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Repository ./tools/evenmodtime/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/evenmodtime/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/evenmodtime
diff -urdN ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Root ./tools/evenmodtime/CVS/Root
--- ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/evenmodtime/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Tag ./tools/evenmodtime/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/evenmodtime/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/evenmodtime/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/filewordreplace ./tools/filewordreplace
--- ../Tekkotsu_2.2.2/tools/filewordreplace	Mon Sep 30 14:19:46 2002
+++ ./tools/filewordreplace	Tue Jan  4 14:51:41 2005
@@ -1,8 +1,22 @@
 #!/bin/sh
 
+usage="Usage: $0 [-c separator_char] [-q] oldstr newstr file1 [file2...]";
+
 tmpname="/tmp/wordreplacetmp";
+sepchar="/";
+status="true";
+while [ $# -gt 0 ] ; do
+	case $1 in
+		-h | --help) echo "$usage"; exit 1;;
+		-c ) sepchar="$2"; recurseflags="$recurseflags $1 $2"; shift; shift;;
+		-q ) status=false; recurseflags="$recurseflags $1"; shift;;
+		*) break;;
+	esac;
+done;
+
 if [ $# -lt 3 ] ; then
-	echo "Usage: $0 oldstr newstr file1 [file2...]";
+	echo "$usage";
+	exit 1;
 else
 	old="$1";
 	new="$2";
@@ -10,14 +24,16 @@
 	while [ $# -gt 0 ] ; do
 		if [ -f "$1" ] ; then
 			if grep -q "$old" "$1" ; then
-				echo "Processing $1";
-				sed "s/$old/$new/g" "$1" > $tmpname;
+				if $status; then
+					echo "Processing $1";
+				fi;
+				sed "s${sepchar}${old}${sepchar}${new}${sepchar}g" "$1" > $tmpname;
 				mv $tmpname "$1";
 			fi;
 		else
 			if [ -d "$1" ] ; then
 				for x in "$1"/* ; do
-					eval "$0" "$old" "$new" "$x";
+					eval "$0" $recurseflags "$old" "$new" "$x";
 				done;
 			else
 				echo "$1 not found";
diff -urdN ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Entries ./tools/filtersyswarn/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/filtersyswarn/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,3 @@
+/Makefile/1.2/Sun Aug 24 21:19:32 2003//Ttekkotsu-2_3
+/filtersyswarn.cc/1.7/Sat Jul 24 03:12:34 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Repository ./tools/filtersyswarn/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/filtersyswarn/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/filtersyswarn
diff -urdN ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Root ./tools/filtersyswarn/CVS/Root
--- ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/filtersyswarn/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Tag ./tools/filtersyswarn/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/filtersyswarn/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/filtersyswarn/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Entries ./tools/mipaltools/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,6 @@
+/Makefile/1.5/Thu Oct  9 19:51:28 2003//Ttekkotsu-2_3
+/README.txt/1.2/Wed Sep 10 19:21:53 2003//Ttekkotsu-2_3
+/elp.pl/1.4/Wed Sep 10 20:19:57 2003//Ttekkotsu-2_3
+/modifications.diff/1.1/Wed Sep 10 20:21:00 2003//Ttekkotsu-2_3
+D/doc////
+D/src////
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Repository ./tools/mipaltools/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mipaltools
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Root ./tools/mipaltools/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Tag ./tools/mipaltools/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mipaltools/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Entries ./tools/mipaltools/doc/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/doc/CVS/Entries	Fri Jan 28 20:12:57 2005
@@ -0,0 +1,4 @@
+/ELPREADME.TXT/1.1/Wed Sep 10 19:21:58 2003//Ttekkotsu-2_3
+/StackedIt_Readme.txt/1.2/Thu Oct  9 15:23:27 2003//Ttekkotsu-2_3
+/license.txt/1.1/Wed Sep 10 19:21:58 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Repository ./tools/mipaltools/doc/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/doc/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mipaltools/doc
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Root ./tools/mipaltools/doc/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/doc/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Tag ./tools/mipaltools/doc/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mipaltools/doc/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/doc/CVS/Tag	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Entries ./tools/mipaltools/src/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/src/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,15 @@
+/EmonLog.cc/1.1/Wed Sep 10 19:22:01 2003//Ttekkotsu-2_3
+/EmonLog.h/1.1/Wed Sep 10 19:22:01 2003//Ttekkotsu-2_3
+/Function.cc/1.1/Wed Sep 10 19:22:01 2003//Ttekkotsu-2_3
+/Function.h/1.1/Wed Sep 10 19:22:01 2003//Ttekkotsu-2_3
+/FunctionStore.cc/1.3/Thu Oct  9 15:29:24 2003//Ttekkotsu-2_3
+/FunctionStore.h/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/Makefile/1.3/Tue Dec  2 07:00:41 2003//Ttekkotsu-2_3
+/StackAnalyser.cc/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/StackAnalyser.h/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/StackAnalyserException.h/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/StackDump.cc/1.2/Thu Oct  9 15:23:32 2003//Ttekkotsu-2_3
+/StackDump.h/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/Trace.h/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+/main.cc/1.1/Wed Sep 10 19:22:02 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Repository ./tools/mipaltools/src/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/src/CVS/Repository	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mipaltools/src
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Root ./tools/mipaltools/src/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/src/CVS/Root	Fri Jan 28 20:12:57 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Tag ./tools/mipaltools/src/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mipaltools/src/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mipaltools/src/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/CVS/Entries ./tools/mon/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,40 @@
+/ControllerGUI/1.6/Wed Sep  1 04:56:58 2004//Ttekkotsu-2_3
+/Makefile/1.19/Thu Sep 16 18:45:30 2004//Ttekkotsu-2_3
+/README/1.1/Fri Jul 25 20:02:48 2003//Ttekkotsu-2_3
+/aibo3d.lws/1.1/Wed Aug 27 02:52:02 2003//Ttekkotsu-2_3
+/c_DepthMap.m/1.3/Tue Jul  1 16:20:40 2003//Ttekkotsu-2_3
+/c_FastSLAM.m/1.1/Wed May 28 14:55:54 2003//Ttekkotsu-2_3
+/c_HeightMap.m/1.1/Thu Mar  6 18:21:17 2003//Ttekkotsu-2_3
+/c_MechaControl.m/1.3/Sun Jun 22 01:30:05 2003//Ttekkotsu-2_3
+/c_statejoints.m/1.2/Wed Jan 28 20:38:50 2004//Ttekkotsu-2_3
+/c_statepids.m/1.1/Thu Feb 20 19:51:18 2003//Ttekkotsu-2_3
+/c_terminal.m/1.1/Wed Apr  9 03:37:31 2003//Ttekkotsu-2_3
+/c_visionraw.m/1.2/Sun Apr  6 20:57:48 2003//Ttekkotsu-2_3
+/c_visionseg.m/1.1/Thu Feb 20 19:51:19 2003//Ttekkotsu-2_3
+/close.m/1.1/Thu Feb 20 19:51:19 2003//Ttekkotsu-2_3
+/closecomponents.m/1.1/Thu Feb 20 19:51:19 2003//Ttekkotsu-2_3
+/colormap_rle_NSHA431.mat/1.1/Thu Feb 20 19:51:20 2003//Ttekkotsu-2_3
+/config.m/1.13/Wed Jan 28 20:38:50 2004//Ttekkotsu-2_3
+/default.col/1.7/Fri Jul 16 22:12:10 2004//Ttekkotsu-2_3
+/defines.m/1.3/Tue Apr 15 20:02:43 2003//Ttekkotsu-2_3
+/ers220info.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/ers2xxinfo.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/ftp.jar/1.1/Tue Jul  1 09:00:18 2003/-kb/Ttekkotsu-2_3
+/itercomponents.m/1.1/Thu Feb 20 19:51:20 2003//Ttekkotsu-2_3
+/jargs.jar/1.1/Mon Jul 28 06:30:48 2003/-kb/Ttekkotsu-2_3
+/launcher.m/1.1/Thu Feb 20 19:51:20 2003//Ttekkotsu-2_3
+/loadcomponents.m/1.1/Thu Feb 20 19:51:21 2003//Ttekkotsu-2_3
+/lognow/1.2/Tue Mar 16 17:47:09 2004//Ttekkotsu-2_3
+/plotlog.m/1.4/Tue Feb 24 21:27:27 2004//Ttekkotsu-2_3
+/plotpath.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/plotpos.m/1.2/Fri Feb  6 00:45:57 2004//Ttekkotsu-2_3
+/run.m/1.2/Sat Jun  7 21:57:21 2003//Ttekkotsu-2_3
+/setslide.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/togglecomponents.m/1.1/Thu Feb 20 19:51:21 2003//Ttekkotsu-2_3
+/updateAxes.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/yuv2rgb.m/1.1/Thu Feb 20 19:51:21 2003//Ttekkotsu-2_3
+/zoomin.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+/zoomout.m/1.1/Wed Jan 28 21:07:44 2004//Ttekkotsu-2_3
+D/images////
+D/objects////
+D/org////
diff -urdN ../Tekkotsu_2.2.2/tools/mon/CVS/Repository ./tools/mon/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon
diff -urdN ../Tekkotsu_2.2.2/tools/mon/CVS/Root ./tools/mon/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/CVS/Tag ./tools/mon/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/images/CVS/Entries ./tools/mon/images/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/images/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/images/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,15 @@
+/chasingarrows.gif/1.1/Tue Oct  7 04:14:51 2003/-kb/Ttekkotsu-2_3
+/chasingarrows.png/1.3/Wed Aug 27 02:06:55 2003/-kb/Ttekkotsu-2_3
+/disconnect.gif/1.1/Tue Oct  7 04:14:52 2003/-kb/Ttekkotsu-2_3
+/disconnect.png/1.1/Tue Oct  7 03:28:42 2003/-kb/Ttekkotsu-2_3
+/go.gif/1.1/Tue Oct  7 04:14:52 2003/-kb/Ttekkotsu-2_3
+/go.png/1.1/Tue Oct  7 03:28:42 2003/-kb/Ttekkotsu-2_3
+/larrow.gif/1.1/Tue Oct  7 04:14:52 2003/-kb/Ttekkotsu-2_3
+/larrow.png/1.3/Wed Aug 27 02:06:55 2003/-kb/Ttekkotsu-2_3
+/offline.gif/1.1/Wed Oct  8 19:09:26 2003/-kb/Ttekkotsu-2_3
+/online.gif/1.1/Wed Oct  8 19:09:26 2003/-kb/Ttekkotsu-2_3
+/rarrow.gif/1.1/Tue Oct  7 04:14:52 2003/-kb/Ttekkotsu-2_3
+/rarrow.png/1.3/Wed Aug 27 02:06:55 2003/-kb/Ttekkotsu-2_3
+/stop.gif/1.1/Tue Oct  7 04:14:52 2003/-kb/Ttekkotsu-2_3
+/stop.png/1.1/Tue Oct  7 03:28:42 2003/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mon/images/CVS/Repository ./tools/mon/images/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/images/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/images/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/images
diff -urdN ../Tekkotsu_2.2.2/tools/mon/images/CVS/Root ./tools/mon/images/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/images/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/images/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/images/CVS/Tag ./tools/mon/images/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/images/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/images/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Entries ./tools/mon/objects/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/objects/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,28 @@
+/LED_g01.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_g02.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_g03.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_r01.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_r02.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_r03.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_r04.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/LED_tail.lwo/1.1/Wed Aug 27 02:52:06 2003/-kb/Ttekkotsu-2_3
+/body2.lwo/1.1/Wed Aug 27 02:52:07 2003/-kb/Ttekkotsu-2_3
+/ear-l.lwo/1.1/Wed Aug 27 02:52:07 2003/-kb/Ttekkotsu-2_3
+/ear-r.lwo/1.1/Wed Aug 27 02:52:07 2003/-kb/Ttekkotsu-2_3
+/foot-b-l.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/foot-b-r.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/foot-f-l.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/foot-f-r.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/head.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/jaw.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-b-low-l.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-b-low-r.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-b-up-l.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-b-up-r.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-f-low-l.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-f-low-r.lwo/1.1/Wed Aug 27 02:52:08 2003/-kb/Ttekkotsu-2_3
+/leg-f-up-l.lwo/1.1/Wed Aug 27 02:52:09 2003/-kb/Ttekkotsu-2_3
+/leg-f-up-r.lwo/1.1/Wed Aug 27 02:52:09 2003/-kb/Ttekkotsu-2_3
+/neck.lwo/1.1/Wed Aug 27 02:52:09 2003/-kb/Ttekkotsu-2_3
+/tail2.lwo/1.1/Wed Aug 27 02:52:09 2003/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Repository ./tools/mon/objects/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/objects/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/objects
diff -urdN ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Root ./tools/mon/objects/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/objects/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Tag ./tools/mon/objects/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/objects/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/objects/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/CVS/Entries ./tools/mon/org/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/org/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+D/tekkotsu////
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/CVS/Repository ./tools/mon/org/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/org/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/org
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/CVS/Root ./tools/mon/org/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/org/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/CVS/Tag ./tools/mon/org/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/org/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Entries ./tools/mon/org/tekkotsu/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,2 @@
+D/aibo3d////
+D/mon////
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Repository ./tools/mon/org/tekkotsu/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/org/tekkotsu
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Root ./tools/mon/org/tekkotsu/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Tag ./tools/mon/org/tekkotsu/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Entries ./tools/mon/org/tekkotsu/aibo3d/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/aibo3d/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,12 @@
+/Aibo3D.java/1.2/Thu Oct  9 19:11:26 2003//Ttekkotsu-2_3
+/Aibo3DForward.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/Aibo3DPick.java/1.2/Thu Oct  2 02:07:33 2003//Ttekkotsu-2_3
+/AiboJoint.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/AiboPicker.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/InverseKinematics.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/Java3DTest.java/1.1/Wed Oct  1 23:45:16 2003//Ttekkotsu-2_3
+/Kinematics.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/LegConfiguration.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/PickMoveBehavior.java/1.1/Fri Sep 26 04:36:17 2003//Ttekkotsu-2_3
+/WorldStateJointsWriter.java/1.3/Thu Oct  9 19:12:03 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Repository ./tools/mon/org/tekkotsu/aibo3d/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/aibo3d/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/org/tekkotsu/aibo3d
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Root ./tools/mon/org/tekkotsu/aibo3d/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/aibo3d/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Tag ./tools/mon/org/tekkotsu/aibo3d/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/aibo3d/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/aibo3d/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Entries ./tools/mon/org/tekkotsu/mon/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,68 @@
+/AgentShapeInfo.java/1.4/Thu Apr 22 22:46:02 2004//Ttekkotsu-2_3
+/AiboComm.java/1.1/Fri Sep 26 04:36:18 2003//Ttekkotsu-2_3
+/ClassPathModifier.java/1.1/Fri Sep 26 04:36:18 2003//Ttekkotsu-2_3
+/ControllerErr.java/1.1/Sun Jan 11 07:57:29 2004//Ttekkotsu-2_3
+/ControllerGUI.java/1.20/Fri Jan 21 22:50:40 2005//Ttekkotsu-2_3
+/ControllerListener.java/1.11/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/ControllerMsg.java/1.3/Sun Jan 11 07:57:30 2004//Ttekkotsu-2_3
+/DogConfig.java/1.2/Wed Jan 21 06:59:17 2004//Ttekkotsu-2_3
+/DogConfigFTP.java/1.1/Fri Sep 26 04:36:18 2003//Ttekkotsu-2_3
+/EStopButton.java/1.7/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/EStopGUI.java/1.3/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/EStopListener.java/1.4/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/EStopPanel.java/1.2/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/EditScriptGUI.java/1.4/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/EllipseShapeInfo.java/1.5/Thu Apr 22 22:46:02 2004//Ttekkotsu-2_3
+/GraphCanvas.java/1.1/Fri Sep 26 04:36:19 2003//Ttekkotsu-2_3
+/HeadPointGUI.java/1.3/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/HeadPointListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/ImageSequenceWriterThread.java/1.8/Tue Jan 20 20:05:31 2004//Ttekkotsu-2_3
+/JointLogger.java/1.1/Wed Jan 28 21:08:46 2004//Ttekkotsu-2_3
+/JointRelay.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/JointRequestor.java/1.1/Wed Jan 28 21:08:46 2004//Ttekkotsu-2_3
+/JointWriter.java/1.2/Tue Feb 24 21:13:27 2004//Ttekkotsu-2_3
+/Joints.java/1.3/Fri Apr 16 05:51:29 2004//Ttekkotsu-2_3
+/LineShapeInfo.java/1.7/Thu Apr 22 22:46:02 2004//Ttekkotsu-2_3
+/Listener.java/1.6/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/MechaController.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/MicrophoneClient.java/1.1/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/NetDebug.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/PIDs.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/PointPick.java/1.2/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/PrintDuties.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/ScriptEntry.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/ShapeInfo.java/1.8/Fri Apr 16 00:39:28 2004//Ttekkotsu-2_3
+/SketchGUI.java/1.37/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/SketchInfo.java/1.5/Thu Apr 22 22:46:02 2004//Ttekkotsu-2_3
+/SketchPanel.java/1.18/Wed Dec  1 23:18:30 2004//Ttekkotsu-2_3
+/SpeakerClient.java/1.1/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/SquareRightLayout.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/TCPListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/TCPVisionListener.java/1.6/Tue Nov 30 01:15:52 2004//Ttekkotsu-2_3
+/TableMap.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/TableSorter.java/1.1/Fri Sep 26 04:36:20 2003//Ttekkotsu-2_3
+/Terminal.java/1.2/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/TestGraph.java/1.2/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/TextListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/TextWatchableMemory.java/1.1/Fri Sep 26 04:36:21 2003//Ttekkotsu-2_3
+/UDPListener.java/1.4/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/UDPVisionListener.java/1.7/Tue Nov 30 01:15:52 2004//Ttekkotsu-2_3
+/VisionGUI.java/1.16/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/VisionListener.java/1.10/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/VisionPanel.java/1.8/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/VisionUpdatedListener.java/1.1/Fri Sep 26 04:36:21 2003//Ttekkotsu-2_3
+/VisualObjectInfo.java/1.6/Thu Apr 22 22:46:02 2004//Ttekkotsu-2_3
+/WM2DMData.java/1.1/Fri Sep 26 04:36:22 2003//Ttekkotsu-2_3
+/WM2DMListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/WM2FSData.java/1.1/Fri Sep 26 04:36:22 2003//Ttekkotsu-2_3
+/WM2FSListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/WM2HMData.java/1.1/Fri Sep 26 04:36:22 2003//Ttekkotsu-2_3
+/WM2HMListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/WMvar.java/1.1/Fri Sep 26 04:36:22 2003//Ttekkotsu-2_3
+/WalkGUI.java/1.4/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/WatchableMemory.java/1.6/Fri Jan 21 23:31:39 2005//Ttekkotsu-2_3
+/WatchableMemoryListener.java/1.4/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/WorldModel2Conf.java/1.1/Fri Sep 26 04:36:23 2003//Ttekkotsu-2_3
+/WorldStateJointsListener.java/1.4/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+/WorldStatePIDsListener.java/1.3/Fri Nov 12 22:07:40 2004//Ttekkotsu-2_3
+D/icons////
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Repository ./tools/mon/org/tekkotsu/mon/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/org/tekkotsu/mon
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Root ./tools/mon/org/tekkotsu/mon/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Tag ./tools/mon/org/tekkotsu/mon/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/ControllerGUI.java ./tools/mon/org/tekkotsu/mon/ControllerGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/ControllerGUI.java	Mon Nov 15 15:53:05 2004
+++ ./tools/mon/org/tekkotsu/mon/ControllerGUI.java	Fri Jan 21 17:50:40 2005
@@ -15,7 +15,7 @@
 public class ControllerGUI extends JFrame implements ActionListener, KeyListener {
 	JList menu;
 	JScrollPane menuScroll;
-	JLabel title;
+	JComboBox title;
 	JLabel status;
 	JList scripts;
 	ControllerListener comm;
@@ -171,11 +171,13 @@
 		Point p=menuScroll.getViewport().getViewPosition();  
 
 		//scripts.setEnabled(comm._isConnected);
+		title.setEnabled(comm._isConnected);
 		backBut.setEnabled(comm._isConnected);
 		refreshBut.setEnabled(comm._isConnected);
 		inputField.setEnabled(comm._isConnected);
+		title.removeAllItems();//clearing the title popup menu, but we'll refresh the items if we're still connected
 		if(!comm._isConnected) {
-			title.setText("-");
+			title.addItem("-");
 			menu.setListData(new Vector());
 			status.setText("Reconnecting...");
 		} else {
@@ -188,6 +190,8 @@
 					Iterator mons=comm.dynObjSrcs.values().iterator();
 					while(mons.hasNext())
 						comm.sendInput("!root "+(String)mons.next());
+					//Set focus to the main menu
+					menu.requestFocus();
 				}
 				for(int i=0; i<scriptsModel.getSize(); i++)
 					if(scriptsModel.get(i).toString().equals("CONNECT"))
@@ -195,7 +199,15 @@
 				comm._connectCount=-1; //so we don't get it again
 			}
 			synchronized(comm._menus) {
-				title.setText((String)comm._titles.lastElement());
+				int len=0;
+				for(Iterator it=comm._titles.iterator(); it.hasNext();) {
+					String entry=(String)it.next();
+					title.insertItemAt(entry,0);
+					if(entry.length()>len)
+						len=entry.length();
+				}
+				title.setMaximumSize(new Dimension((int)(len*8)+25,title.getHeight()));
+				title.setSelectedIndex(0);
 				Vector menuitems=(Vector)comm._menus.lastElement();
 				menu.setValueIsAdjusting(true);
 				menu.setListData((Vector)menuitems.clone());
@@ -229,6 +241,11 @@
 		} else if(evt.getSource()==refreshBut) {
 			//System.out.println("refresh button clicked");
 			comm.sendRefresh();
+		} else if(evt.getSource()==title) {
+			//System.out.println("title selection changed");
+			int selected=title.getSelectedIndex();
+			for(int i=0; i<selected; i++)
+				comm.sendReturn();
 		} else if(evt.getSource()==inputField) {
 			//System.out.println("input: "+inputField.getText());
 			int[] sel=menu.getSelectedIndices();
@@ -348,9 +365,10 @@
 		
 		JPanel content=new JPanel(new BorderLayout());
 		Box titleBox=Box.createVerticalBox();
-		title=new JLabel("-");
-		title.setFont(new Font(title.getFont().getFontName(),Font.BOLD,title.getFont().getSize()));
+		title=new JComboBox();
+		title.addItem("-");
 		title.setAlignmentX(0);
+		title.addActionListener(this);
 		titleBox.add(title);
 		titleBox.add(Box.createVerticalStrut(spacer_size));
 		content.add(titleBox,BorderLayout.NORTH);
@@ -505,7 +523,8 @@
 			scriptsModel.addElement(new ScriptEntry(prefs.get("ControllerGUI.script"+i+".title","unknown"),prefs.get("ControllerGUI.script"+i+".cmd","")));
 
 		pack();
-		show();
+		title.setMaximumSize(new Dimension(15+25,title.getHeight()));
+		setVisible(true);
 		getRootPane().setMinimumSize(getRootPane().getSize());
 	}
 
@@ -533,9 +552,10 @@
 		}
 	}
 
-	public void show() {
-		super.show();
-		menu.requestFocus();
+	public void setVisible(boolean b) {
+		super.setVisible(b);
+		if(b)
+			menu.requestFocus();
 	}
 	
 	public static void main(String s[]) throws java.lang.InterruptedException {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/ControllerListener.java ./tools/mon/org/tekkotsu/mon/ControllerListener.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/ControllerListener.java	Fri Nov 12 17:07:39 2004
+++ ./tools/mon/org/tekkotsu/mon/ControllerListener.java	Fri Jan 21 18:31:39 2005
@@ -140,6 +140,7 @@
 			_out=new PrintStream(socket.getOutputStream());
 			fireConnected();
 			_out.println("!hello");
+			_out.println("!dump_stack");
 			_out.println("!refresh");
 			while (true) {
 				String msgtype=readLine(sin);
@@ -186,6 +187,19 @@
 						_connectCount=Integer.parseInt(readLine(sin));
 						if(!_isConnected) break;
 						continue;
+					} else if(msgtype.equals("stack_dump")) {
+						_titles.clear();
+						int depth=Integer.parseInt(readLine(sin));
+						if(_menus.size()>depth) {
+							System.err.println("Bad stack_dump - more menus than titles!");
+							_isConnected=false;
+							break;
+						}
+						for(int i=_menus.size(); i<depth; i++)
+							_menus.insertElementAt(new Vector(),0);
+						for(int i=0; i<depth && _isConnected; i++)
+							_titles.add(readLine(sin));
+						if(!_isConnected) break;
 					} else if(msgtype.equals("goodbye")) {
 						//removeDynObjs();
 						System.out.println("Remote is shutting down.");
@@ -254,8 +268,8 @@
 							System.out.println("ControllerGUI: error - could not close "+name+" - not loaded");
 						} else {
 							try { 
-								Method m=obj.getClass().getMethod("close",null);
-								m.invoke(obj,null);
+								Method m=obj.getClass().getMethod("close",(java.lang.Class[])null);
+								m.invoke(obj,(java.lang.Object[])null);
 							} catch (Exception e) {}
 						}
 						dynObjs.remove(name);
@@ -301,8 +315,8 @@
 		while(it.hasNext()) {
 			Object obj=it.next();
 			try {
-				Method m=obj.getClass().getMethod("close",null);
-				m.invoke(obj,null);
+				Method m=obj.getClass().getMethod("close",(java.lang.Class[])null);
+				m.invoke(obj,(java.lang.Object[])null);
 			} catch(Exception ex) {}
 		}
 		dynObjs.clear();
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopButton.java ./tools/mon/org/tekkotsu/mon/EStopButton.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopButton.java	Wed Oct  8 15:11:21 2003
+++ ./tools/mon/org/tekkotsu/mon/EStopButton.java	Fri Jan 21 18:31:39 2005
@@ -36,7 +36,7 @@
 		frame.getContentPane().add(estop);
 		frame.addWindowListener(new WindowAdapter() {
 				public void windowClosing(WindowEvent e) { System.exit(0); } });
-		frame.show();
+		frame.setVisible(true);
 	}
 
 	public static void usage() {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopGUI.java ./tools/mon/org/tekkotsu/mon/EStopGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopGUI.java	Wed Feb  4 18:28:42 2004
+++ ./tools/mon/org/tekkotsu/mon/EStopGUI.java	Fri Jan 21 18:31:39 2005
@@ -92,7 +92,7 @@
 		estop.setPreferredSize(null);
 		estop.comm.addUpdatedListener(this);
 		setLocation(prefs.getInt("EStopGUI.location.x",50),prefs.getInt("EStopGUI.location.y",50));
-		show();
+		setVisible(true);
 	}
 
 	public void actionPerformed(ActionEvent evt) {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopPanel.java ./tools/mon/org/tekkotsu/mon/EStopPanel.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EStopPanel.java	Fri Sep 26 00:36:19 2003
+++ ./tools/mon/org/tekkotsu/mon/EStopPanel.java	Fri Jan 21 18:31:39 2005
@@ -41,7 +41,7 @@
 		frame.getContentPane().add(estop);
 		frame.addWindowListener(new WindowAdapter() {
 				public void windowClosing(WindowEvent e) { System.exit(0); } });
-		frame.show();
+		frame.setVisible(true);
 	}
 
 	public static void usage() {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EditScriptGUI.java ./tools/mon/org/tekkotsu/mon/EditScriptGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/EditScriptGUI.java	Wed Sep  1 18:37:11 2004
+++ ./tools/mon/org/tekkotsu/mon/EditScriptGUI.java	Fri Jan 21 18:31:39 2005
@@ -34,7 +34,7 @@
 		checkMoveButtons();
 		pack();
 		setLocation(prefs.getInt("EditScriptGUI.location.x",50),prefs.getInt("EditScriptGUI.location.y",50));
-		show();
+		setVisible(true);
 		height=getBounds().height;
 		title.setMaximumSize(new Dimension(Integer.MAX_VALUE,title.getSize().height));
 //		titleLabel.setMaximumSize(new Dimension(Integer.MAX_VALUE,titleLabel.getSize().height));
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/HeadPointGUI.java ./tools/mon/org/tekkotsu/mon/HeadPointGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/HeadPointGUI.java	Wed Feb  4 18:28:42 2004
+++ ./tools/mon/org/tekkotsu/mon/HeadPointGUI.java	Fri Jan 21 18:31:39 2005
@@ -54,7 +54,7 @@
 		int offx=getGraphicsConfiguration().getBounds().x;
 		int offy=getGraphicsConfiguration().getBounds().y;
 		setLocation(prefs.getInt("HeadPointGUI.location.x",50),prefs.getInt("HeadPointGUI.location.y",50));
-		show();
+		setVisible(true);
 	}
 
 	public void close() {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/PointPick.java ./tools/mon/org/tekkotsu/mon/PointPick.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/PointPick.java	Fri Sep 26 00:36:20 2003
+++ ./tools/mon/org/tekkotsu/mon/PointPick.java	Fri Jan 21 18:31:39 2005
@@ -16,7 +16,7 @@
 		frame.addWindowListener(new WindowAdapter() {
 			public void windowClosing(WindowEvent e) { System.exit(0); }
 		});
-		frame.show();
+		frame.setVisible(true);
 	}
 	
 	float x=0;
@@ -101,17 +101,17 @@
 		BasicStroke s=new BasicStroke(1);
 
 		track=new PPTic(1,new BasicStroke(2),Color.RED,null);
-		track.reshape((int)((getWidth()*(1+x)-tracksize)/2),(int)((getHeight()*(1+y)-tracksize)/2),(int)tracksize,(int)tracksize);
+		track.setBounds((int)((getWidth()*(1+x)-tracksize)/2),(int)((getHeight()*(1+y)-tracksize)/2),(int)tracksize,(int)tracksize);
 		track.setVisible(false);
 		add(track);
 
 		mdot=new PPTic(1,s,null,isEnabled()?new Color(.7f,.0f,.0f):new Color(.4f,.4f,.4f));
-		mdot.reshape((int)((getWidth()*(1+x)-dotsize)/2),(int)((getHeight()*(1-y)-dotsize)/2),(int)dotsize,(int)dotsize);
+		mdot.setBounds((int)((getWidth()*(1+x)-dotsize)/2),(int)((getHeight()*(1-y)-dotsize)/2),(int)dotsize,(int)dotsize);
 		add(mdot);
 
 		PPTic tmp,tmp2;
 		tmp=new PPTic(1.0f,new BasicStroke(2),isEnabled()?Color.BLACK:Color.GRAY,Color.WHITE);
-		tmp.reshape(0,0,getWidth(),getHeight());
+		tmp.setBounds(0,0,getWidth(),getHeight());
 		tmp.setLayout(new BorderLayout());
 		add(tmp);
 		tics.add(tmp);
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/SketchGUI.java ./tools/mon/org/tekkotsu/mon/SketchGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/SketchGUI.java	Tue Dec  7 19:05:20 2004
+++ ./tools/mon/org/tekkotsu/mon/SketchGUI.java	Fri Jan 21 18:31:39 2005
@@ -65,7 +65,7 @@
 //	gui.sketchPort = Integer.parseInt(args[3]);
 	gui.addWindowListener(new WindowAdapter() {
 		 public void windowClosing(WindowEvent e) {System.exit(0);}});
-	gui.show();
+	gui.setVisible(true);
     }
 		
     public static void usage() {
@@ -80,7 +80,7 @@
 //	    gui.addWindowListener(new WindowAdapter() {
 //		     public void windowClosing(WindowEvent e) {
 //		     }});
-//	    gui.show();
+//	    gui.setVisible(true);
 	if(e.getActionCommand().compareTo("refresh")==0) {
 		// reset bounds
 		sketchPanel.leftBound = 0;
@@ -404,7 +404,7 @@
 	sketchFrame.pack();
 	sketchFrame.setLocation(prefs.getInt("SketchPanel.location.x",50),prefs.getInt("SketchPanel.location.y",50));
 
-	sketchFrame.show();
+	sketchFrame.setVisible(true);
 
 	{
 
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/Terminal.java ./tools/mon/org/tekkotsu/mon/Terminal.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/Terminal.java	Fri Sep 26 00:36:20 2003
+++ ./tools/mon/org/tekkotsu/mon/Terminal.java	Fri Jan 21 18:31:39 2005
@@ -73,7 +73,7 @@
 
       _input.addKeyListener(this);
       _term.addComponentListener(this);
-      _term.show();
+      _term.setVisible(true);
       _term.setSize(new Dimension(_width, _height));
       resize();
 
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/TestGraph.java ./tools/mon/org/tekkotsu/mon/TestGraph.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/TestGraph.java	Fri Sep 26 00:36:20 2003
+++ ./tools/mon/org/tekkotsu/mon/TestGraph.java	Fri Jan 21 18:31:39 2005
@@ -6,7 +6,7 @@
     JFrame frame=new JFrame("graph test");
     GraphCanvas canvas=new GraphCanvas(0.0f, 1.0f);
     frame.setSize(500,300);
-    frame.show();
+    frame.setVisible(true);
     frame.getContentPane().add(canvas);
     while (true) {
       canvas.registerValue((float)Math.random());
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/VisionGUI.java ./tools/mon/org/tekkotsu/mon/VisionGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/VisionGUI.java	Tue Nov  2 00:23:41 2004
+++ ./tools/mon/org/tekkotsu/mon/VisionGUI.java	Fri Jan 21 18:31:39 2005
@@ -361,7 +361,7 @@
 		String name="VisionGUI"+(isRaw?".raw":"")+(isRLE?".rle":"")+".location";
 		setLocation(prefs.getInt(name+".x",50),prefs.getInt(name+".y",50));
 
-		show();
+		setVisible(true);
 
 	}
 }
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/VisionPanel.java ./tools/mon/org/tekkotsu/mon/VisionPanel.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/VisionPanel.java	Tue Sep 28 18:12:38 2004
+++ ./tools/mon/org/tekkotsu/mon/VisionPanel.java	Fri Jan 21 18:31:39 2005
@@ -41,7 +41,7 @@
 		frame.getContentPane().add(vision);
 		frame.addWindowListener(new WindowAdapter() {
 				public void windowClosing(WindowEvent e) { System.exit(0); } });
-		frame.show();
+		frame.setVisible(true);
 	}
 
 	public void setConvertRGB(boolean b) { _listener.setConvertRGB(b); }
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/WalkGUI.java ./tools/mon/org/tekkotsu/mon/WalkGUI.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/WalkGUI.java	Wed Feb  4 18:28:42 2004
+++ ./tools/mon/org/tekkotsu/mon/WalkGUI.java	Fri Jan 21 18:31:39 2005
@@ -52,7 +52,7 @@
 		comm=new MechaController(host,port);
 		comm.addMechaUpdatedListener(this);
 		setLocation(prefs.getInt("WalkGUI.location.x",50),prefs.getInt("WalkGUI.location.y",50));
-		show();
+		setVisible(true);
 	}
 
 	public void close() {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/WatchableMemory.java ./tools/mon/org/tekkotsu/mon/WatchableMemory.java
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/WatchableMemory.java	Wed Feb  4 18:28:42 2004
+++ ./tools/mon/org/tekkotsu/mon/WatchableMemory.java	Fri Jan 21 18:31:39 2005
@@ -243,7 +243,7 @@
     this.wmController=wmController;
 
     addWindowListener(new WindowAdapter() {
-      public void windowClosing(WindowEvent e) { e.getWindow().hide(); } });
+      public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); } });
 
     wmvars_vec=new Vector();
     wmvars_hash=new Hashtable();
@@ -339,7 +339,7 @@
           wmregistry=new WMregistry(registry, wmController, registries);
           registries.put(registry, wmregistry);
         } else {
-          wmregistry.show();
+          wmregistry.setVisible(true);
         }
       }
     } else {
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Entries ./tools/mon/org/tekkotsu/mon/icons/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/icons/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,6 @@
+/agent.png/1.1/Thu Apr 22 22:46:08 2004//Ttekkotsu-2_3
+/ellipse.png/1.1/Thu Apr 22 22:46:08 2004//Ttekkotsu-2_3
+/line.png/1.1/Thu Apr 22 22:46:08 2004//Ttekkotsu-2_3
+/sketch.png/1.1/Thu Apr 22 22:46:08 2004//Ttekkotsu-2_3
+/unknown.png/1.1/Thu Apr 22 22:46:08 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Repository ./tools/mon/org/tekkotsu/mon/icons/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/icons/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/mon/org/tekkotsu/mon/icons
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Root ./tools/mon/org/tekkotsu/mon/icons/CVS/Root
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/icons/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Tag ./tools/mon/org/tekkotsu/mon/icons/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/mon/org/tekkotsu/mon/icons/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/mon/org/tekkotsu/mon/icons/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/CVS/Entries ./tools/safemot/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/safemot/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,4 @@
+/Makefile/1.3/Tue Nov  9 22:15:03 2004//Ttekkotsu-2_3
+/safemot.cc/1.2/Mon Nov  8 21:48:19 2004//Ttekkotsu-2_3
+/tekkotsu.cfg/1.1/Mon Nov  8 21:48:19 2004//Ttekkotsu-2_3
+D/from_cmpack02////
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/CVS/Repository ./tools/safemot/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/safemot/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/safemot
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/CVS/Root ./tools/safemot/CVS/Root
--- ../Tekkotsu_2.2.2/tools/safemot/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/CVS/Tag ./tools/safemot/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/safemot/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Entries ./tools/safemot/from_cmpack02/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/from_cmpack02/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,15 @@
+/dance.mot/1.1/Fri May  2 04:57:52 2003//Ttekkotsu-2_3
+/gu_back.mot/1.1/Fri May  2 04:57:52 2003//Ttekkotsu-2_3
+/gu_front.mot/1.1/Fri May  2 04:57:52 2003//Ttekkotsu-2_3
+/gu_side.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_bump.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_diag.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_dive.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_fwd.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_grab.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_head.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_heads.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_hold.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/k_punch.mot/1.1/Fri May  2 04:57:53 2003//Ttekkotsu-2_3
+/readme.txt/1.1/Fri Apr 16 20:23:09 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Repository ./tools/safemot/from_cmpack02/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/from_cmpack02/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/safemot/from_cmpack02
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Root ./tools/safemot/from_cmpack02/CVS/Root
--- ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/from_cmpack02/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Tag ./tools/safemot/from_cmpack02/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/safemot/from_cmpack02/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/safemot/from_cmpack02/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/safemot/tekkotsu.cfg ./tools/safemot/tekkotsu.cfg
--- ../Tekkotsu_2.2.2/tools/safemot/tekkotsu.cfg	Mon Nov  8 16:48:19 2004
+++ ./tools/safemot/tekkotsu.cfg	Mon Nov  8 16:48:19 2004
@@ -1,7 +1,7 @@
 ##################################################################
 ##################   Tekkotsu::safemot config   ##################
 ##################################################################
-##################### $Name: HEAD $ ######################
+##################### $Name: HEAD $ ######################
 ####################### $Revision: 1.1 $ ########################
 ################## $Date: 2005/01/30 17:44:13 $ ##################
 ##################################################################
diff -urdN ../Tekkotsu_2.2.2/tools/seg/CVS/Entries ./tools/seg/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/seg/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/seg/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,21 @@
+/ClassPathModifier.java/1.1/Sun Jul 27 01:55:58 2003//Ttekkotsu-2_3
+/ColorConverter.java/1.1/Sun Jul 27 01:55:59 2003//Ttekkotsu-2_3
+/DogConfig.java/1.1/Sun Jul 27 01:55:59 2003//Ttekkotsu-2_3
+/DogConfigFTP.java/1.2/Thu Oct  9 06:29:39 2003//Ttekkotsu-2_3
+/ImageData.java/1.2/Wed Jan 21 03:32:26 2004//Ttekkotsu-2_3
+/ImageShow.java/1.4/Wed Feb 18 05:10:13 2004//Ttekkotsu-2_3
+/Listener.java/1.1/Sun Jul 27 01:55:59 2003//Ttekkotsu-2_3
+/Makefile/1.2/Wed Oct  8 18:26:51 2003//Ttekkotsu-2_3
+/MoveIndex.java/1.1/Thu Oct  9 06:30:08 2003//Ttekkotsu-2_3
+/README/1.1/Mon Sep 22 09:51:26 2003//Ttekkotsu-2_3
+/TCPListener.java/1.1/Sun Jul 27 01:55:59 2003//Ttekkotsu-2_3
+/TextListener.java/1.1/Sun Jul 27 01:55:59 2003//Ttekkotsu-2_3
+/ThresholdAdd.java/1.2/Thu Oct  9 06:29:39 2003//Ttekkotsu-2_3
+/ThresholdMerge.java/1.2/Thu Oct  9 06:29:39 2003//Ttekkotsu-2_3
+/TileTrain.java/1.1/Tue Sep 28 20:51:43 2004//Ttekkotsu-2_3
+/UseThresh.java/1.4/Thu Oct  9 19:54:36 2003//Ttekkotsu-2_3
+/VisionFilter.java/1.2/Mon Jul 28 06:31:46 2003//Ttekkotsu-2_3
+/VisionSegment.java/1.2/Wed Jan 21 03:32:26 2004//Ttekkotsu-2_3
+/VisionTrain.java/1.7/Tue Feb 24 22:17:38 2004//Ttekkotsu-2_3
+/createyuv.m/1.1/Sat Aug  9 03:49:37 2003//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/seg/CVS/Repository ./tools/seg/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/seg/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/seg/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/seg
diff -urdN ../Tekkotsu_2.2.2/tools/seg/CVS/Root ./tools/seg/CVS/Root
--- ../Tekkotsu_2.2.2/tools/seg/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/seg/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/seg/CVS/Tag ./tools/seg/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/seg/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/seg/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/test/CVS/Entries ./tools/test/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/test/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/test/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,2 @@
+D/kinematics////
+D/mon////
diff -urdN ../Tekkotsu_2.2.2/tools/test/CVS/Repository ./tools/test/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/test/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/test/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/test
diff -urdN ../Tekkotsu_2.2.2/tools/test/CVS/Root ./tools/test/CVS/Root
--- ../Tekkotsu_2.2.2/tools/test/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/test/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/test/CVS/Tag ./tools/test/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/test/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/test/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ttekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Entries ./tools/test/kinematics/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,69 @@
+/IP210Body.txt/1.1/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210Camera.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210IR.txt/1.1/Wed Jan 12 19:25:00 2005//Ttekkotsu-2_3
+/IP210LBk.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210LFr.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210Mouth.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210RBk.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP210RFr.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220Body.txt/1.1/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220Camera.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220IR.txt/1.1/Wed Jan 12 19:25:00 2005//Ttekkotsu-2_3
+/IP220LBk.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220LFr.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220RBk.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP220RFr.txt/1.3/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP7Body.txt/1.1/Fri Dec 10 20:43:22 2004//Ttekkotsu-2_3
+/IP7Camera.txt/1.3/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7ChestIR.txt/1.1/Wed Jan 12 19:25:00 2005//Ttekkotsu-2_3
+/IP7FarIR.txt/1.1/Wed Jan 12 19:25:00 2005//Ttekkotsu-2_3
+/IP7LBk.txt/1.4/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7LFr.txt/1.4/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7Mouth.txt/1.3/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7NearIR.txt/1.1/Wed Jan 12 19:25:00 2005//Ttekkotsu-2_3
+/IP7PantsBody.txt/1.1/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7RBk.txt/1.4/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/IP7RFr.txt/1.4/Fri Dec 10 20:43:23 2004//Ttekkotsu-2_3
+/Makefile/1.9/Tue Oct  5 21:06:57 2004//Ttekkotsu-2_3
+/cam2xx.txt/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/cam7.txt/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/cam_range210/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/cam_range220/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/cam_range7/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/cam_type2xx.txt/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/cam_type7.txt/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/closest_point_on_line.m/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/dhtransform.m/1.1/Sun Sep 12 06:07:46 2004//Ttekkotsu-2_3
+/dhvisualize.m/1.5/Mon Sep 27 01:32:06 2004//Ttekkotsu-2_3
+/dist_point_to_vector.m/1.1/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/front_leg_range7/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/hind_leg_range7/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/inv_kin.m/1.16/Thu Oct 14 21:59:29 2004//Ttekkotsu-2_3
+/ipvisualize.m/1.4/Tue Oct  5 19:12:37 2004//Ttekkotsu-2_3
+/kine.m/1.1/Mon Sep 27 01:32:06 2004//Ttekkotsu-2_3
+/kinverify.nb/1.2/Tue Sep 14 22:07:01 2004//Ttekkotsu-2_3
+/leg_range2xx/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/leg_type.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/lf2xx.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/lf7.txt/1.2/Tue Oct 19 07:37:20 2004//Ttekkotsu-2_3
+/lh2xx.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/lh7.txt/1.2/Tue Oct 19 07:37:20 2004//Ttekkotsu-2_3
+/limit_angle.m/1.1/Mon Sep 27 01:32:06 2004//Ttekkotsu-2_3
+/loadDH.m/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/matlab.mat/1.7/Tue Oct 19 07:37:20 2004/-kb/Ttekkotsu-2_3
+/mouth2xx.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/mouth7.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/mouth7b.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/mouth_range210/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/mouth_range7/1.1/Mon Sep 20 21:54:32 2004//Ttekkotsu-2_3
+/mouth_type.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/rf2xx.txt/1.1/Tue Sep 14 22:07:02 2004//Ttekkotsu-2_3
+/rf7.txt/1.2/Tue Oct 19 07:37:21 2004//Ttekkotsu-2_3
+/rh2xx.txt/1.1/Tue Sep 14 22:07:03 2004//Ttekkotsu-2_3
+/rh7.txt/1.2/Tue Oct 19 07:37:21 2004//Ttekkotsu-2_3
+/set_q.m/1.4/Mon Sep 20 22:54:21 2004//Ttekkotsu-2_3
+/test2xx.m/1.1/Fri Sep 24 21:37:37 2004//Ttekkotsu-2_3
+/test7.m/1.4/Thu Oct 14 19:25:23 2004//Ttekkotsu-2_3
+/test_kinematics.cc/1.12/Thu Nov  4 19:45:26 2004//Ttekkotsu-2_3
+/vector_from_point_to_vector.m/1.1/Tue Sep 14 22:07:03 2004//Ttekkotsu-2_3
+D/IPorig////
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Repository ./tools/test/kinematics/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/test/kinematics
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Root ./tools/test/kinematics/CVS/Root
--- ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Tag ./tools/test/kinematics/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/test/kinematics/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IP210IR.txt ./tools/test/kinematics/IP210IR.txt
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IP210IR.txt	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IP210IR.txt	Wed Jan 12 14:25:00 2005
@@ -0,0 +1 @@
+6	0	0	0
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IP220IR.txt ./tools/test/kinematics/IP220IR.txt
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IP220IR.txt	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IP220IR.txt	Wed Jan 12 14:25:00 2005
@@ -0,0 +1 @@
+6	0	0	0
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IP7ChestIR.txt ./tools/test/kinematics/IP7ChestIR.txt
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IP7ChestIR.txt	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IP7ChestIR.txt	Wed Jan 12 14:25:00 2005
@@ -0,0 +1 @@
+3	0	0	0
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IP7FarIR.txt ./tools/test/kinematics/IP7FarIR.txt
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IP7FarIR.txt	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IP7FarIR.txt	Wed Jan 12 14:25:00 2005
@@ -0,0 +1 @@
+6	0	0	0
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IP7NearIR.txt ./tools/test/kinematics/IP7NearIR.txt
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IP7NearIR.txt	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IP7NearIR.txt	Wed Jan 12 14:25:00 2005
@@ -0,0 +1 @@
+6	0	0	0
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Entries ./tools/test/kinematics/IPorig/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IPorig/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,9 @@
+/210.txt/1.5/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/210scale.txt/1.3/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/220.txt/1.5/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/220scale.txt/1.3/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/7.txt/1.7/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/7scale.txt/1.2/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/ipenlist/1.3/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+/ipsplit/1.2/Fri Dec 10 20:43:34 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Repository ./tools/test/kinematics/IPorig/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IPorig/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/test/kinematics/IPorig
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Root ./tools/test/kinematics/IPorig/CVS/Root
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IPorig/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Tag ./tools/test/kinematics/IPorig/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/test/kinematics/IPorig/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/test/kinematics/IPorig/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/test/mon/CVS/Entries ./tools/test/mon/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/test/mon/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/test/mon/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,5 @@
+/ControllerGUITest.java/1.2/Sat May 24 04:56:20 2003//Ttekkotsu-2_3
+/Listener.java/1.3/Tue Nov  2 05:23:41 2004//Ttekkotsu-2_3
+/TCPListener.java/1.3/Tue Nov  2 05:23:41 2004//Ttekkotsu-2_3
+/listen.java/1.1/Tue Nov  2 05:23:41 2004//Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/test/mon/CVS/Repository ./tools/test/mon/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/test/mon/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/test/mon/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/test/mon
diff -urdN ../Tekkotsu_2.2.2/tools/test/mon/CVS/Root ./tools/test/mon/CVS/Root
--- ../Tekkotsu_2.2.2/tools/test/mon/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/test/mon/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/test/mon/CVS/Tag ./tools/test/mon/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/test/mon/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/test/mon/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
diff -urdN ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Entries ./tools/walk_calibration/CVS/Entries
--- ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Entries	Wed Dec 31 19:00:00 1969
+++ ./tools/walk_calibration/CVS/Entries	Fri Jan 28 20:12:58 2005
@@ -0,0 +1,11 @@
+/WalkCalibration.m/1.3/Sat Feb 28 01:58:59 2004//Ttekkotsu-2_3
+/data.tgz/1.1/Fri Jan 16 05:15:18 2004/-kb/Ttekkotsu-2_3
+/final3br.txt/1.1/Fri Jan 16 05:15:18 2004//Ttekkotsu-2_3
+/final3bs.txt/1.1/Fri Jan 16 05:15:18 2004//Ttekkotsu-2_3
+/final3fr.txt/1.1/Fri Jan 16 05:15:18 2004//Ttekkotsu-2_3
+/final3fs.txt/1.1/Fri Jan 16 05:15:18 2004//Ttekkotsu-2_3
+/final3outliers.txt/1.2/Thu Feb 26 01:03:19 2004//Ttekkotsu-2_3
+/final3rr.txt/1.2/Thu Feb 26 01:03:19 2004//Ttekkotsu-2_3
+/final3sr.txt/1.2/Thu Feb 26 01:03:19 2004//Ttekkotsu-2_3
+/logs.tgz/1.1/Fri Jan 16 05:15:19 2004/-kb/Ttekkotsu-2_3
+D
diff -urdN ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Repository ./tools/walk_calibration/CVS/Repository
--- ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Repository	Wed Dec 31 19:00:00 1969
+++ ./tools/walk_calibration/CVS/Repository	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Tekkotsu/tools/walk_calibration
diff -urdN ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Root ./tools/walk_calibration/CVS/Root
--- ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Root	Wed Dec 31 19:00:00 1969
+++ ./tools/walk_calibration/CVS/Root	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+/afs/cs/project/skinnerbots/aibo
diff -urdN ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Tag ./tools/walk_calibration/CVS/Tag
--- ../Tekkotsu_2.2.2/tools/walk_calibration/CVS/Tag	Wed Dec 31 19:00:00 1969
+++ ./tools/walk_calibration/CVS/Tag	Fri Jan 28 20:12:58 2005
@@ -0,0 +1 @@
+Ntekkotsu-2_3
