pulled down a new version of wpilib (revision 3615)

I checked, and all of the changes we had on top of it got upstreamed (thanks
Jerry!) so this is just a clean copy (with newlines converted).

git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4177 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/aos/externals/WPILib/Makefile b/aos/externals/WPILib/Makefile
index 6e13be8..fe999c8 100644
--- a/aos/externals/WPILib/Makefile
+++ b/aos/externals/WPILib/Makefile
@@ -1,3 +1,8 @@
+broken:
+	@echo THIS FILE IS OLD 2>&1
+	@echo IT IS ONLY HERE TO HELP MANUALLY DOWNLOAD NEW VERSIONS!!!!! 2>&1
+	exit 1
+
 all: make.rb WPILib.a
 	#ruby make.rb
 clean:
diff --git a/aos/externals/WPILib/WPILib.a b/aos/externals/WPILib/WPILib.a
index 278a2a2..57584f3 100644
--- a/aos/externals/WPILib/WPILib.a
+++ b/aos/externals/WPILib/WPILib.a
Binary files differ
diff --git a/aos/externals/WPILib/WPILib/.cproject b/aos/externals/WPILib/WPILib/.cproject
deleted file mode 100644
index dc5fad2..0000000
--- a/aos/externals/WPILib/WPILib/.cproject
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<?fileVersion 4.0.0?>

-

-<cproject>

-<storageModule moduleId="org.eclipse.cdt.core.settings">

-<cconfiguration id="org.eclipse.cdt.core.default.config.1075613688">

-<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="org.eclipse.cdt.core.default.config.1075613688" moduleId="org.eclipse.cdt.core.settings" name="Configuration">

-<externalSettings/>

-<extensions>

-<extension id="com.windriver.ide.core.WRScannerInfoProvider" point="org.eclipse.cdt.core.ScannerInfoProvider"/>

-<extension id="com.windriver.ide.core.WRElfParserVxWorks" point="org.eclipse.cdt.core.BinaryParser"/>

-<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>

-</extensions>

-</storageModule>

-<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-

-<storageModule moduleId="scannerConfiguration"/>

-<storageModule moduleId="userdefinedContainer">

-<indexAllFiles value="false"/>

-<initialized value="true"/>

-</storageModule>

-<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>

-<storageModule moduleId="org.eclipse.cdt.core.pathentry">

-<pathentry excluding="PPC603gnu/|.svn/|.settings/" kind="src" path=""/>

-<pathentry kind="out" path=""/>

-<pathentry kind="con" path="com.windriver.ide.core.WR_CONTAINER"/>

-<pathentry kind="con" path="com.windriver.ide.core.build.model.WR_USERDEFINED_CONTAINER"/>

-</storageModule>

-</cconfiguration>

-</storageModule>

-</cproject>

diff --git a/aos/externals/WPILib/WPILib/.project b/aos/externals/WPILib/WPILib/.project
deleted file mode 100644
index f2fb2cc..0000000
--- a/aos/externals/WPILib/WPILib/.project
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>WPILib</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>com.windriver.ide.core.wrbuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-	</buildSpec>

-	<natures>

-		<nature>com.windriver.ide.core.wrnature</nature>

-		<nature>com.windriver.ide.core.wrcorenature</nature>

-		<nature>org.eclipse.cdt.core.cnature</nature>

-		<nature>org.eclipse.cdt.core.ccnature</nature>

-	</natures>

-</projectDescription>

diff --git a/aos/externals/WPILib/WPILib/.settings/Makefile b/aos/externals/WPILib/WPILib/.settings/Makefile
deleted file mode 100644
index bc19164..0000000
--- a/aos/externals/WPILib/WPILib/.settings/Makefile
+++ /dev/null
@@ -1,2184 +0,0 @@
-# Wind River Workbench generated Makefile.
-# Do not edit!!!
-#
-# The file ".wrmakefile" is the template used by the Wind River Workbench to
-# generate the makefiles of this project. Add user-specific build targets and
-# make rules only(!) in this project's ".wrmakefile" file. These will then be
-# automatically dumped into the makefiles.
-
-WIND_HOME := $(subst \,/,$(WIND_HOME))
-WIND_BASE := $(subst \,/,$(WIND_BASE))
-WIND_USR := $(subst \,/,$(WIND_USR))
-
-all : pre_build main_all post_build
-
-_clean ::
-	@echo "make: removing targets and objects of `pwd`"
-
-TRACE=0
-TRACEON=$(TRACE:0=@)
-TRACE_FLAG=$(TRACEON:1=)
-
-MAKEFILE := Makefile
-
-BUILD_SPEC = PPC603gnu
-DEBUG_MODE = 1
-SRC_DIR := .
-BUILD_ROOT_DIR := 
-PRJ_ROOT_DIR := C:/windriver/workspace/WPILib
-WS_ROOT_DIR := C:/windriver/workspace
-
-ALL_BUILD_SPECS := PPC32diab PPC32gnu PPC32sfdiab PPC32sfgnu \
-	 PPC403diab PPC403gnu PPC405diab PPC405gnu \
-	 PPC405sfdiab PPC405sfgnu PPC440diab PPC440gnu \
-	 PPC440sfdiab PPC440sfgnu PPC603diab PPC603gnu \
-	 PPC604diab PPC604gnu PPC85XXdiab PPC85XXgnu \
-	 PPC85XXsfdiab PPC85XXsfgnu PPC860sfdiab PPC860sfgnu \
-	 SIMLINUXdiab SIMLINUXgnu SIMNTdiab SIMNTgnu \
-	 SIMSPARCSOLARISdiab SIMSPARCSOLARISgnu
-ENABLED_BUILD_SPECS := PPC603gnu
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32diab_DEBUG
-else
-OBJ_DIR := PPC32diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32gnu_DEBUG
-else
-OBJ_DIR := PPC32gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32sfdiab_DEBUG
-else
-OBJ_DIR := PPC32sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32sfgnu_DEBUG
-else
-OBJ_DIR := PPC32sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC403diab_DEBUG
-else
-OBJ_DIR := PPC403diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC403gnu_DEBUG
-else
-OBJ_DIR := PPC403gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405diab_DEBUG
-else
-OBJ_DIR := PPC405diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405gnu_DEBUG
-else
-OBJ_DIR := PPC405gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405sfdiab_DEBUG
-else
-OBJ_DIR := PPC405sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405sfgnu_DEBUG
-else
-OBJ_DIR := PPC405sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440diab_DEBUG
-else
-OBJ_DIR := PPC440diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440gnu_DEBUG
-else
-OBJ_DIR := PPC440gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440sfdiab_DEBUG
-else
-OBJ_DIR := PPC440sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440sfgnu_DEBUG
-else
-OBJ_DIR := PPC440sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC603diab_DEBUG
-else
-OBJ_DIR := PPC603diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC603gnu_DEBUG
-else
-OBJ_DIR := PPC603gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC604diab_DEBUG
-else
-OBJ_DIR := PPC604diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC604gnu_DEBUG
-else
-OBJ_DIR := PPC604gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXdiab_DEBUG
-else
-OBJ_DIR := PPC85XXdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXgnu_DEBUG
-else
-OBJ_DIR := PPC85XXgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXsfdiab_DEBUG
-else
-OBJ_DIR := PPC85XXsfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXsfgnu_DEBUG
-else
-OBJ_DIR := PPC85XXsfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC860sfdiab_DEBUG
-else
-OBJ_DIR := PPC860sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC860sfgnu_DEBUG
-else
-OBJ_DIR := PPC860sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMLINUXdiab_DEBUG
-else
-OBJ_DIR := SIMLINUXdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMLINUXgnu_DEBUG
-else
-OBJ_DIR := SIMLINUXgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMNTdiab_DEBUG
-else
-OBJ_DIR := SIMNTdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMNTgnu_DEBUG
-else
-OBJ_DIR := SIMNTgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMSPARCSOLARISdiab_DEBUG
-else
-OBJ_DIR := SIMSPARCSOLARISdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMSPARCSOLARISgnu_DEBUG
-else
-OBJ_DIR := SIMSPARCSOLARISgnu
-endif
-endif
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-SUBDIRS :=
-OBJECTS :=
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-
-PROJECT_TYPE = DKM
-DEFINES = 
-EXPAND_DBG = 0
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCFH:vxworks63 -Xstmw-slow -DPPC32_fp60x
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mhard-float -mstrict-align -mno-implicit-fp -DPPC32_fp60x
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCFS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -msoft-float -mstrict-align
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC403diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC403
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC403FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC403gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC403
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=403 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC405FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC405FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC440FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC440FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC603diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC603
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC603FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC603gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC603
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I.. -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC604diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC604
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC604FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC604gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC604
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=604 -mstrict-align -mno-implicit-fp
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCE500FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCE500FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC860
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC860FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC860
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=860 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-VX_CPU_FAMILY = simlinux
-CPU = SIMLINUX
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tX86LH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-VX_CPU_FAMILY = simlinux
-CPU = SIMLINUX
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mtune=i486 -march=i486
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-VX_CPU_FAMILY = simpc
-CPU = SIMNT
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tX86LH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-VX_CPU_FAMILY = simpc
-CPU = SIMNT
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mtune=i486 -march=i486
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-VX_CPU_FAMILY = simso
-CPU = SIMSPARCSOLARIS
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tSPARCFH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-VX_CPU_FAMILY = simso
-CPU = SIMSPARCSOLARIS
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = 
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-
-
-
-
-
--include $(PRJ_ROOT_DIR)/*.makefile
-
--include *.makefile
-
-main_all : external_build $(PROJECT_TARGETS)
-	@echo "make: built targets of `pwd`"
-
-# entry point for extending the build
-external_build ::
-	@echo ""
-
-# main entry point for pre processing prior to the build
-pre_build :: $(PRE_BUILD_STEP) generate_sources
-	@echo ""
-
-# entry point for generating sources prior to the build
-generate_sources ::
-	@echo ""
-
-# main entry point for post processing after the build
-post_build :: $(POST_BUILD_STEP) deploy_output
-	@echo ""
-
-# entry point for deploying output after the build
-deploy_output ::
-	@echo ""
-
-clean :: external_clean $(CLEAN_STEP) _clean
-
-# entry point for extending the build clean
-external_clean ::
-	@echo ""
diff --git a/aos/externals/WPILib/WPILib/.settings/org.eclipse.ltk.core.refactoring.prefs b/aos/externals/WPILib/WPILib/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index efc568c..0000000
--- a/aos/externals/WPILib/WPILib/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Sep 14 17:17:39 EDT 2010

-eclipse.preferences.version=1

-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false

diff --git a/aos/externals/WPILib/WPILib/.wrmakefile b/aos/externals/WPILib/WPILib/.wrmakefile
deleted file mode 100644
index 6ad1e05..0000000
--- a/aos/externals/WPILib/WPILib/.wrmakefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# The file ".wrmakefile" is the template used by the Wind River Workbench to
-# generate the makefiles of this project. Add user-specific build targets and
-# make rules only(!) in this project's ".wrmakefile" file. These will then be
-# automatically dumped into the makefiles.
-
-WIND_HOME := $(subst \,/,$(WIND_HOME))
-WIND_BASE := $(subst \,/,$(WIND_BASE))
-WIND_USR := $(subst \,/,$(WIND_USR))
-
-all : pre_build main_all post_build
-
-_clean ::
-	@echo "make: removing targets and objects of `pwd`"
-
-%IDE_GENERATED%
-
--include $(PRJ_ROOT_DIR)/*.makefile
-
--include *.makefile
-
-main_all : external_build $(PROJECT_TARGETS)
-	@echo "make: built targets of `pwd`"
-
-# entry point for extending the build
-external_build ::
-	@echo ""
-
-# main entry point for pre processing prior to the build
-pre_build :: $(PRE_BUILD_STEP) generate_sources
-	@echo ""
-
-# entry point for generating sources prior to the build
-generate_sources ::
-	@echo ""
-
-# main entry point for post processing after the build
-post_build :: $(POST_BUILD_STEP) deploy_output
-	@echo ""
-
-# entry point for deploying output after the build
-deploy_output ::
-	@echo ""
-
-clean :: external_clean $(CLEAN_STEP) _clean
-
-# entry point for extending the build clean
-external_clean ::
-	@echo ""
diff --git a/aos/externals/WPILib/WPILib/.wrproject b/aos/externals/WPILib/WPILib/.wrproject
deleted file mode 100644
index d55d2e9..0000000
--- a/aos/externals/WPILib/WPILib/.wrproject
+++ /dev/null
@@ -1,1414 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>

-<wrxml>

-    <properties platform="VxWorks" platform_name="vxworks-6.3" root="0" type="DownloadableKernelModuleProject"/>

-    <attributes>

-        <mapAttribute>

-            <listAttribute key="BLD::Info|GlobalMacros">

-                <stringAttribute value="PROJECT_TYPE"/>

-                <stringAttribute value="DEFINES"/>

-                <stringAttribute value="EXPAND_DBG"/>

-            </listAttribute>

-            <stringAttribute key="BLD::Info|GlobalMacro|DEFINES" value=""/>

-            <stringAttribute key="BLD::Info|GlobalMacro|EXPAND_DBG" value="0"/>

-            <stringAttribute key="BLD::Info|GlobalMacro|PROJECT_TYPE" value="DKM"/>

-            <listAttribute key="BLD::Info|Incl|PPC32diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC32gnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC32sfdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC32sfgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC403diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC403gnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC405diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC405gnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC405sfdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC405sfgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC440diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC440gnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC440sfdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC440sfgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC603diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC603gnu">

-                <stringAttribute value="-I.."/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC604diab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC604gnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC85XXdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC85XXgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC85XXsfdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC85XXsfgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC860sfdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|PPC860sfgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMLINUXdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMLINUXgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMNTdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMNTgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMSPARCSOLARISdiab">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Incl|SIMSPARCSOLARISgnu">

-                <stringAttribute value="-I$(WIND_BASE)/target/h"/>

-                <stringAttribute value="-I$(WIND_BASE)/target/h/wrn/coreip"/>

-            </listAttribute>

-            <listAttribute key="BLD::Info|Macros">

-                <stringAttribute value="VX_CPU_FAMILY"/>

-                <stringAttribute value="CPU"/>

-                <stringAttribute value="TOOL_FAMILY"/>

-                <stringAttribute value="TOOL"/>

-                <stringAttribute value="TOOL_PATH"/>

-                <stringAttribute value="CC_ARCH_SPEC"/>

-                <stringAttribute value="LIBPATH"/>

-                <stringAttribute value="LIBS"/>

-            </listAttribute>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC32diab" value="-tPPCFH:vxworks63 -Xstmw-slow -DPPC32_fp60x"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC32gnu" value="-mhard-float -mstrict-align -mno-implicit-fp -DPPC32_fp60x"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC32sfdiab" value="-tPPCFS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC32sfgnu" value="-msoft-float -mstrict-align"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC403diab" value="-tPPC403FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC403gnu" value="-mcpu=403 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC405diab" value="-tPPC405FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC405gnu" value="-mcpu=405 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC405sfdiab" value="-tPPC405FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC405sfgnu" value="-mcpu=405 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC440diab" value="-tPPC440FH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC440gnu" value="-mcpu=440 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC440sfdiab" value="-tPPC440FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC440sfgnu" value="-mcpu=440 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC603diab" value="-tPPC603FH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC603gnu" value="-mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC604diab" value="-tPPC604FH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC604gnu" value="-mcpu=604 -mstrict-align -mno-implicit-fp"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC85XXdiab" value="-tPPCE500FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC85XXgnu" value="-mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC85XXsfdiab" value="-tPPCE500FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC85XXsfgnu" value="-mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC860sfdiab" value="-tPPC860FS:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|PPC860sfgnu" value="-mcpu=860 -mstrict-align -msoft-float"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMLINUXdiab" value="-tX86LH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMLINUXgnu" value="-mtune=i486 -march=i486"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMNTdiab" value="-tX86LH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMNTgnu" value="-mtune=i486 -march=i486"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMSPARCSOLARISdiab" value="-tSPARCFH:vxworks63"/>

-            <stringAttribute key="BLD::Info|Macro|CC_ARCH_SPEC|value|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC32diab" value="PPC32"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC32gnu" value="PPC32"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC32sfdiab" value="PPC32"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC32sfgnu" value="PPC32"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC403diab" value="PPC403"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC403gnu" value="PPC403"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC405diab" value="PPC405"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC405gnu" value="PPC405"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC405sfdiab" value="PPC405"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC405sfgnu" value="PPC405"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC440diab" value="PPC440"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC440gnu" value="PPC440"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC440sfdiab" value="PPC440"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC440sfgnu" value="PPC440"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC603diab" value="PPC603"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC603gnu" value="PPC603"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC604diab" value="PPC604"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC604gnu" value="PPC604"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC85XXdiab" value="PPC85XX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC85XXgnu" value="PPC85XX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC85XXsfdiab" value="PPC85XX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC85XXsfgnu" value="PPC85XX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC860sfdiab" value="PPC860"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|PPC860sfgnu" value="PPC860"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMLINUXdiab" value="SIMLINUX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMLINUXgnu" value="SIMLINUX"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMNTdiab" value="SIMNT"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMNTgnu" value="SIMNT"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMSPARCSOLARISdiab" value="SIMSPARCSOLARIS"/>

-            <stringAttribute key="BLD::Info|Macro|CPU|value|SIMSPARCSOLARISgnu" value="SIMSPARCSOLARIS"/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBPATH|value|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|LIBS|value|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC32diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC32gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC32sfdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC32sfgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC403diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC403gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC405diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC405gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC405sfdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC405sfgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC440diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC440gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC440sfdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC440sfgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC603diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC603gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC604diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC604gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC85XXdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC85XXgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC85XXsfdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC85XXsfgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC860sfdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|PPC860sfgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMLINUXdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMLINUXgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMNTdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMNTgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMSPARCSOLARISdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_FAMILY|value|SIMSPARCSOLARISgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL_PATH|value|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC32diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC32gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC32sfdiab" value="sfdiab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC32sfgnu" value="sfgnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC403diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC403gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC405diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC405gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC405sfdiab" value="sfdiab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC405sfgnu" value="sfgnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC440diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC440gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC440sfdiab" value="sfdiab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC440sfgnu" value="sfgnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC603diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC603gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC604diab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC604gnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC85XXdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC85XXgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC85XXsfdiab" value="sfdiab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC85XXsfgnu" value="sfgnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC860sfdiab" value="sfdiab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|PPC860sfgnu" value="sfgnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMLINUXdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMLINUXgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMNTdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMNTgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMSPARCSOLARISdiab" value="diab"/>

-            <stringAttribute key="BLD::Info|Macro|TOOL|value|SIMSPARCSOLARISgnu" value="gnu"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC32diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC32gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC32sfdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC32sfgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC403diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC403gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC405diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC405gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC405sfdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC405sfgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC440diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC440gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC440sfdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC440sfgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC603diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC603gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC604diab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC604gnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC85XXdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC85XXgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC85XXsfdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC85XXsfgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC860sfdiab" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|PPC860sfgnu" value="ppc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMLINUXdiab" value="simlinux"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMLINUXgnu" value="simlinux"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMNTdiab" value="simpc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMNTgnu" value="simpc"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMSPARCSOLARISdiab" value="simso"/>

-            <stringAttribute key="BLD::Info|Macro|VX_CPU_FAMILY|value|SIMSPARCSOLARISgnu" value="simso"/>

-            <listAttribute key="BLD::Info|Tools">

-                <stringAttribute value="C-Compiler"/>

-                <stringAttribute value="C++-Compiler"/>

-                <stringAttribute value="Linker"/>

-                <stringAttribute value="Partial Image Linker"/>

-                <stringAttribute value="Librarian"/>

-                <stringAttribute value="Assembler"/>

-            </listAttribute>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC32diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC32gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC403diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC403gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC405diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC405gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC440diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC440gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC603diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC603gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC604diab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC604gnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;%assemblerprefix% $(TOOL_PATH)ccsparc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC32diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC32gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC32sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC32sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC403diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC403gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC405diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC405gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC405sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC405sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC440diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC440gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC440sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC440sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC603diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC603gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC604diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC604gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC85XXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC85XXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC85XXsfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC85XXsfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC860sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|PPC860sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMLINUXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMLINUXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMNTdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMNTgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMSPARCSOLARISdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|dbgFlags|SIMSPARCSOLARISgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC32diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC32gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC32sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC32sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC403diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC403gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC405diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC405gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC405sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC405sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC440diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC440gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC440sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC440sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC603diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC603gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC604diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC604gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC85XXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC85XXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC85XXsfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC85XXsfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC860sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|PPC860sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMLINUXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMLINUXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMNTdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMNTgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMSPARCSOLARISdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|derivedSigs|SIMSPARCSOLARISgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC32diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC32gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC32sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC32sfgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC403diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC403gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC405diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC405gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC405sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC405sfgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC440diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC440gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC440sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC440sfgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC603diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC603gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC604diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC604gnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC85XXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC85XXgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC85XXsfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC85XXsfgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC860sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|PPC860sfgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMLINUXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMLINUXgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMNTdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMNTgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMSPARCSOLARISdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|flags|SIMSPARCSOLARISgnu" value="$(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC32diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC32gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC32sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC32sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC403diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC403gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC405diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC405gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC405sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC405sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC440diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC440gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC440sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC440sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC603diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC603gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC604diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC604gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC85XXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC85XXgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC85XXsfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC85XXsfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC860sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|PPC860sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMLINUXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMLINUXgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMNTdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMNTgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMSPARCSOLARISdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|nonDbgFlags|SIMSPARCSOLARISgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <booleanAttribute key="BLD::Info|Tool|Assembler|object" value="true"/>

-            <booleanAttribute key="BLD::Info|Tool|Assembler|passAble" value="false"/>

-            <stringAttribute key="BLD::Info|Tool|Assembler|sigs" value="*.s"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC32diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC32gnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC403diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC403gnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC405diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC405gnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC440diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC440gnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC603diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC603gnu" value="%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV=&quot;$(shell svnversion -n ..)&quot;' $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC604diab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC604gnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;%cppcompilerprefix% $(TOOL_PATH)ccsparc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC32diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC32gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC32sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC32sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC403diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC403gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC405diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC405gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC405sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC405sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC440diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC440gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC440sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC440sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC603diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC603gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC604diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC604gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC85XXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC85XXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC85XXsfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC85XXsfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC860sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|PPC860sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMLINUXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMLINUXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMNTdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMNTgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMSPARCSOLARISdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|dbgFlags|SIMSPARCSOLARISgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC32diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC32gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC32sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC32sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC403diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC403gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC405diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC405gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC405sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC405sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC440diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC440gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC440sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC440sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC603diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC603gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC604diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC604gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC85XXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC85XXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC85XXsfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC85XXsfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC860sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|PPC860sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMLINUXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMLINUXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMNTdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMNTgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMSPARCSOLARISdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|derivedSigs|SIMSPARCSOLARISgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC32diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC32gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC32sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC32sfgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC403diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC403gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC405diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC405gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC405sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC405sfgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC440diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC440gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC440sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC440sfgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC603diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC603gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC604diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC604gnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC85XXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC85XXgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC85XXsfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC85XXsfgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC860sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|PPC860sfgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMLINUXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMLINUXgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMNTdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMNTgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMSPARCSOLARISdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|flags|SIMSPARCSOLARISgnu" value="$(CC_ARCH_SPEC) -ansi -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC32diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC32gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC32sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC32sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC403diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC403gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC405diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC405gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC405sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC405sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC440diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC440gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC440sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC440sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC603diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC603gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC604diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC604gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC85XXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC85XXgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC85XXsfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC85XXsfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC860sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|PPC860sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMLINUXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMLINUXgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMNTdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMNTgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMSPARCSOLARISdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|nonDbgFlags|SIMSPARCSOLARISgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <booleanAttribute key="BLD::Info|Tool|C++-Compiler|object" value="true"/>

-            <booleanAttribute key="BLD::Info|Tool|C++-Compiler|passAble" value="false"/>

-            <stringAttribute key="BLD::Info|Tool|C++-Compiler|sigs" value="*.cpp;*.C;*.cxx;*.cc"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC32diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC32gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC403diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC403gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC405diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC405gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC440diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC440gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC603diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC603gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC604diab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC604gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccsparc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC32diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC32gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC32sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC32sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC403diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC403gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC405diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC405gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC405sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC405sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC440diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC440gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC440sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC440sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC603diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC603gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC604diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC604gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC85XXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC85XXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC85XXsfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC85XXsfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC860sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|PPC860sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMLINUXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMLINUXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMNTdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMNTgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMSPARCSOLARISdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|dbgFlags|SIMSPARCSOLARISgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC32diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC32gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC32sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC32sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC403diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC403gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC405diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC405gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC405sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC405sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC440diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC440gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC440sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC440sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC603diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC603gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC604diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC604gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC85XXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC85XXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC85XXsfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC85XXsfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC860sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|PPC860sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMLINUXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMLINUXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMNTdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMNTgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMSPARCSOLARISdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|derivedSigs|SIMSPARCSOLARISgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC32diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC32gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC32sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC32sfgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC403diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC403gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC405diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC405gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC405sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC405sfgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC440diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC440gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC440sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC440sfgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC603diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC603gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC604diab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC604gnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC85XXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC85XXgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC85XXsfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC85XXsfgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC860sfdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|PPC860sfgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMLINUXdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMLINUXgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMNTdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMNTgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMSPARCSOLARISdiab" value="$(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|flags|SIMSPARCSOLARISgnu" value="$(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC32diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC32gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC32sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC32sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC403diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC403gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC405diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC405gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC405sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC405sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC440diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC440gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC440sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC440sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC603diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC603gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC604diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC604gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC85XXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC85XXgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC85XXsfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC85XXsfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC860sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|PPC860sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMLINUXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMLINUXgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMNTdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMNTgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMSPARCSOLARISdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|nonDbgFlags|SIMSPARCSOLARISgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <booleanAttribute key="BLD::Info|Tool|C-Compiler|object" value="true"/>

-            <booleanAttribute key="BLD::Info|Tool|C-Compiler|passAble" value="false"/>

-            <stringAttribute key="BLD::Info|Tool|C-Compiler|sigs" value="*.c"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC403diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC403gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC603diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC603gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC604diab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC604gnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arpentium %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arpentium %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;%archiverprefix% $(TOOL_PATH)arsparc %ToolFlags% %OutFile% %Objects%"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|dbgFlags|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC32diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC32gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC32sfdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC32sfgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC403diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC403gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC405diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC405gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC405sfdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC405sfgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC440diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC440gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC440sfdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC440sfgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC603diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC603gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC604diab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC604gnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC85XXdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC85XXgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC85XXsfdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC85XXsfgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC860sfdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|PPC860sfgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMLINUXdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMLINUXgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMNTdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMNTgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMSPARCSOLARISdiab" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|derivedSigs|SIMSPARCSOLARISgnu" value="*.a"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC32diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC32gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC32sfdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC32sfgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC403diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC403gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC405diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC405gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC405sfdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC405sfgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC440diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC440gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC440sfdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC440sfgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC603diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC603gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC604diab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC604gnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC85XXdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC85XXgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC85XXsfdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC85XXsfgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC860sfdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|PPC860sfgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMLINUXdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMLINUXgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMNTdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMNTgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMSPARCSOLARISdiab" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|flags|SIMSPARCSOLARISgnu" value="crus"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|nonDbgFlags|SIMSPARCSOLARISgnu" value=""/>

-            <booleanAttribute key="BLD::Info|Tool|Librarian|object" value="false"/>

-            <booleanAttribute key="BLD::Info|Tool|Librarian|passAble" value="true"/>

-            <stringAttribute key="BLD::Info|Tool|Librarian|sigs" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPCFS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC403diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC403FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC403gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC440FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC440FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC603diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC603FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC603gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC604diab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC604FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC604gnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tPPC860FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmpentium %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmpentium %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccpentium %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c sparc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)dld -tSPARCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;rm -f %OutFile%;nmsparc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c sparc &gt; $(OBJ_DIR)/ctdt.c;%ccompilerprefix% $(TOOL_PATH)ccsparc %DebugModeFlags% $(CC_ARCH_SPEC) -fdollars-in-identifiers -Wall $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES)  -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;%linkerprefix% $(TOOL_PATH)ccsparc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o %Objects% %Libraries% $(LIBPATH) $(LIBS)  $(ADDED_LIBPATH) $(ADDED_LIBS) &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC32diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC32gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC32sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC32sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC403diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC403gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC405diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC405gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC405sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC405sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC440diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC440gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC440sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC440sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC603diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC603gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC604diab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC604gnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC85XXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC85XXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC85XXsfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC85XXsfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC860sfdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|PPC860sfgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMLINUXdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMLINUXgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMNTdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMNTgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMSPARCSOLARISdiab" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|dbgFlags|SIMSPARCSOLARISgnu" value="-g"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC32diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC32gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC32sfdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC32sfgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC403diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC403gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC405diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC405gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC405sfdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC405sfgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC440diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC440gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC440sfdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC440sfgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC603diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC603gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC604diab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC604gnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC85XXdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC85XXgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC85XXsfdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC85XXsfgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC860sfdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|PPC860sfgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMLINUXdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMLINUXgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMNTdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMNTgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMSPARCSOLARISdiab" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|derivedSigs|SIMSPARCSOLARISgnu" value="*.out"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC32diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC32gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC32sfdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC32sfgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC403diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC403gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC405diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC405gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC405sfdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC405sfgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC440diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC440gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC440sfdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC440sfgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC603diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC603gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC604diab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC604gnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC85XXdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC85XXgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC85XXsfdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC85XXsfgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC860sfdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|PPC860sfgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMLINUXdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMLINUXgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMNTdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMNTgnu" value="-T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMSPARCSOLARISdiab" value="-r4"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|flags|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC32diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC32gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC32sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC32sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC403diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC403gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC405diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC405gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC405sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC405sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC440diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC440gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC440sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC440sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC603diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC603gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC604diab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC604gnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC85XXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC85XXgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC85XXsfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC85XXsfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC860sfdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|PPC860sfgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMLINUXdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMLINUXgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMNTdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMNTgnu" value="-O2 -nostdlib -fno-builtin -fno-defer-pop"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMSPARCSOLARISdiab" value="-XO -Xsize-opt"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|nonDbgFlags|SIMSPARCSOLARISgnu" value="-O2 -fstrength-reduce -fno-builtin"/>

-            <booleanAttribute key="BLD::Info|Tool|Linker|object" value="false"/>

-            <booleanAttribute key="BLD::Info|Tool|Linker|passAble" value="false"/>

-            <stringAttribute key="BLD::Info|Tool|Linker|sigs" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32gnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32sfdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPCFS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32sfgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC403diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC403FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC403gnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405gnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405sfdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405sfgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC440FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440gnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440sfdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC440FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440sfgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC603diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC603FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC603gnu" value="%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC604diab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC604FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC604gnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXsfdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXsfgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC860sfdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tPPC860FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC860sfgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMLINUXdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMLINUXgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMNTdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMNTgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMSPARCSOLARISdiab" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)dld -tSPARCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMSPARCSOLARISgnu" value="echo &quot;building $@&quot;;%linkerprefix% $(TOOL_PATH)ccsparc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS)  &amp;&amp; if [ &quot;$(EXPAND_DBG)&quot; = &quot;1&quot; ]; then plink &quot;$@&quot;;fi"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|dbgFlags|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC32diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC32gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC32sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC32sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC403diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC403gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC405diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC405gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC405sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC405sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC440diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC440gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC440sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC440sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC603diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC603gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC604diab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC604gnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC85XXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC85XXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC85XXsfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC85XXsfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC860sfdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|PPC860sfgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMLINUXdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMLINUXgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMNTdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMNTgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMSPARCSOLARISdiab" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|derivedSigs|SIMSPARCSOLARISgnu" value="*.o"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|flags|SIMSPARCSOLARISgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC32diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC32gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC32sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC32sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC403diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC403gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC405diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC405gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC405sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC405sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC440diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC440gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC440sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC440sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC603diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC603gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC604diab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC604gnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC85XXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC85XXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC85XXsfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC85XXsfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC860sfdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|PPC860sfgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMLINUXdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMLINUXgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMNTdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMNTgnu" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMSPARCSOLARISdiab" value=""/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|nonDbgFlags|SIMSPARCSOLARISgnu" value=""/>

-            <booleanAttribute key="BLD::Info|Tool|Partial Image Linker|object" value="false"/>

-            <booleanAttribute key="BLD::Info|Tool|Partial Image Linker|passAble" value="true"/>

-            <stringAttribute key="BLD::Info|Tool|Partial Image Linker|sigs" value=""/>

-            <stringAttribute key="BLD::Info|cmd" value="%makeprefix% make --no-print-directory"/>

-            <stringAttribute key="BLD::Info|defaultSpec" value="PPC603gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC32diab" value="PPC32diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC32gnu" value="PPC32gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC32sfdiab" value="PPC32sfdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC32sfgnu" value="PPC32sfgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC403diab" value="PPC403diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC403gnu" value="PPC403gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC405diab" value="PPC405diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC405gnu" value="PPC405gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC405sfdiab" value="PPC405sfdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC405sfgnu" value="PPC405sfgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC440diab" value="PPC440diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC440gnu" value="PPC440gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC440sfdiab" value="PPC440sfdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC440sfgnu" value="PPC440sfgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC603diab" value="PPC603diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC603gnu" value="PPC603gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC604diab" value="PPC604diab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC604gnu" value="PPC604gnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC85XXdiab" value="PPC85XXdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC85XXgnu" value="PPC85XXgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC85XXsfdiab" value="PPC85XXsfdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC85XXsfgnu" value="PPC85XXsfgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC860sfdiab" value="PPC860sfdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|PPC860sfgnu" value="PPC860sfgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMLINUXdiab" value="SIMLINUXdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMLINUXgnu" value="SIMLINUXgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMNTdiab" value="SIMNTdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMNTgnu" value="SIMNTgnu"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMSPARCSOLARISdiab" value="SIMSPARCSOLARISdiab"/>

-            <stringAttribute key="BLD::Info|redirDir|SIMSPARCSOLARISgnu" value="SIMSPARCSOLARISgnu"/>

-            <stringAttribute key="BLD::Info|redirRoot" value=""/>

-            <intAttribute key="BLD::Info|refreshType" value="0"/>

-            <listAttribute key="BLD::Info|specs">

-                <stringAttribute value="PPC32diab"/>

-                <stringAttribute value="PPC32gnu"/>

-                <stringAttribute value="PPC32sfdiab"/>

-                <stringAttribute value="PPC32sfgnu"/>

-                <stringAttribute value="PPC403diab"/>

-                <stringAttribute value="PPC403gnu"/>

-                <stringAttribute value="PPC405diab"/>

-                <stringAttribute value="PPC405gnu"/>

-                <stringAttribute value="PPC405sfdiab"/>

-                <stringAttribute value="PPC405sfgnu"/>

-                <stringAttribute value="PPC440diab"/>

-                <stringAttribute value="PPC440gnu"/>

-                <stringAttribute value="PPC440sfdiab"/>

-                <stringAttribute value="PPC440sfgnu"/>

-                <stringAttribute value="PPC603diab"/>

-                <stringAttribute value="PPC603gnu"/>

-                <stringAttribute value="PPC604diab"/>

-                <stringAttribute value="PPC604gnu"/>

-                <stringAttribute value="PPC85XXdiab"/>

-                <stringAttribute value="PPC85XXgnu"/>

-                <stringAttribute value="PPC85XXsfdiab"/>

-                <stringAttribute value="PPC85XXsfgnu"/>

-                <stringAttribute value="PPC860sfdiab"/>

-                <stringAttribute value="PPC860sfgnu"/>

-                <stringAttribute value="SIMLINUXdiab"/>

-                <stringAttribute value="SIMLINUXgnu"/>

-                <stringAttribute value="SIMNTdiab"/>

-                <stringAttribute value="SIMNTgnu"/>

-                <stringAttribute value="SIMSPARCSOLARISdiab"/>

-                <stringAttribute value="SIMSPARCSOLARISgnu"/>

-            </listAttribute>

-            <listAttribute key="BLD::Tgt|Targets"/>

-            <intAttribute key="BuildSupportEnabled" value="1"/>

-            <listAttribute key="BuildSupportForBuildSpecs">

-                <stringAttribute value="PPC603gnu"/>

-            </listAttribute>

-            <booleanAttribute key="BuildTargetCentric" value="true"/>

-            <booleanAttribute key="PassObjects" value="false"/>

-        </mapAttribute>

-    </attributes>

-    <buildtargets>

-        <buildtarget buildtool="Librarian" name="WPILib" passed="true" targetname="WPILib">

-            <contents>

-                <folder name="/WPILib" recursive="true"/>

-            </contents>

-        </buildtarget>

-        <buildtarget buildtool="Librarian" name="JavaCameraLib" passed="false" targetname="JavaCameraLib">

-            <attributes>

-                <mapAttribute>

-                    <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC603gnu" value="%cppcompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_C++FLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV=&quot;$(shell svnversion -n ..)&quot;' $(DEFINES) -o %OutFile% -c %InFile%"/>

-                    <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC603gnu" value="echo &quot;building $@&quot;;%ccompilerprefix% $(TOOL_PATH)ccppc %DebugModeFlags% %ToolFlags% $(ADDED_CFLAGS) %Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL   $(DEFINES) -o %OutFile% -c %InFile%"/>

-                </mapAttribute>

-            </attributes>

-            <contents>

-                <file name="/WPILib/Vision/PCVideoServer.cpp"/>

-                <file name="/WPILib/Vision/AxisCamera.cpp"/>

-                <file name="/WPILib/Vision/AxisCameraParams.cpp"/>

-                <file name="/WPILib/Vision/EnumCameraParameter.cpp"/>

-                <file name="/WPILib/Vision/IntCameraParameter.cpp"/>

-                <file name="/WPILib/Error.cpp"/>

-                <file name="/WPILib/ErrorBase.cpp"/>

-                <file name="/WPILib/Task.cpp"/>

-                <file name="/WPILib/Timer.cpp"/>

-                <file name="/WPILib/Synchronized.cpp"/>

-                <file name="/WPILib/Utility.cpp"/>

-            </contents>

-        </buildtarget>

-    </buildtargets>

-</wrxml>

diff --git a/aos/externals/WPILib/WPILib/Accelerometer.cpp b/aos/externals/WPILib/WPILib/Accelerometer.cpp
index 553404b..de8d05d 100644
--- a/aos/externals/WPILib/WPILib/Accelerometer.cpp
+++ b/aos/externals/WPILib/WPILib/Accelerometer.cpp
@@ -8,6 +8,7 @@
 #include "AnalogModule.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 /**
  * Common function for initializing the accelerometer.
@@ -17,6 +18,7 @@
 	m_voltsPerG = 1.0;
 	m_zeroGVoltage = 2.5;
 	nUsageReporting::report(nUsageReporting::kResourceType_Accelerometer, m_analogChannel->GetChannel(), m_analogChannel->GetModuleNumber() - 1);
+	LiveWindow::GetInstance()->AddSensor("Accelerometer", m_analogChannel->GetModuleNumber(), m_analogChannel->GetChannel(), this);
 }
 
 /**
@@ -125,3 +127,29 @@
 {
 	return GetAcceleration();
 }
+
+void Accelerometer::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetAcceleration());
+	}
+}
+
+void Accelerometer::StartLiveWindowMode() {
+}
+
+void Accelerometer::StopLiveWindowMode() {
+}
+
+std::string Accelerometer::GetSmartDashboardType() {
+	return "Accelerometer";
+}
+
+void Accelerometer::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Accelerometer::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Accelerometer.h b/aos/externals/WPILib/WPILib/Accelerometer.h
index aa0dca2..92f9619 100644
--- a/aos/externals/WPILib/WPILib/Accelerometer.h
+++ b/aos/externals/WPILib/WPILib/Accelerometer.h
@@ -10,6 +10,7 @@
 #include "AnalogChannel.h"
 #include "SensorBase.h"
 #include "PIDSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 /** 
  * Handle operation of the accelerometer.
@@ -17,7 +18,7 @@
  * multiple axis and can be treated as multiple devices. Each is calibrated by finding
  * the center value over a period of time.
  */
-class Accelerometer : public SensorBase, public PIDSource {
+class Accelerometer : public SensorBase, public PIDSource, public LiveWindowSendable {
 public:
 	explicit Accelerometer(UINT32 channel);
 	Accelerometer(UINT8 moduleNumber, UINT32 channel);
@@ -29,6 +30,13 @@
 	void SetZero(float zero);
 	double PIDGet();
 
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+
 private:
 	void InitAccelerometer();
 
@@ -36,6 +44,8 @@
 	float m_voltsPerG;
 	float m_zeroGVoltage;
 	bool m_allocatedChannel;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/AnalogChannel.cpp b/aos/externals/WPILib/WPILib/AnalogChannel.cpp
index 2da202c..834837f 100644
--- a/aos/externals/WPILib/WPILib/AnalogChannel.cpp
+++ b/aos/externals/WPILib/WPILib/AnalogChannel.cpp
@@ -9,6 +9,7 @@
 #include "NetworkCommunication/UsageReporting.h"
 #include "Resource.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 static Resource *channels = NULL;
 
@@ -55,7 +56,7 @@
 	{
 		m_accumulator = NULL;
 	}
-
+	LiveWindow::GetInstance()->AddActuator("AnalogChannel",channel, GetModuleNumber(), this);
 	nUsageReporting::report(nUsageReporting::kResourceType_AnalogChannel, channel, GetModuleNumber() - 1);
 }
 
@@ -432,3 +433,32 @@
 	if (StatusIsFatal()) return 0.0;
 	return GetAverageValue();
 }
+
+void AnalogChannel::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetAverageVoltage());
+	}
+}
+
+void AnalogChannel::StartLiveWindowMode() {
+	
+}
+
+void AnalogChannel::StopLiveWindowMode() {
+	
+}
+
+std::string AnalogChannel::GetSmartDashboardType() {
+	return "Analog Input";
+}
+
+void AnalogChannel::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * AnalogChannel::GetTable() {
+	return m_table;
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/AnalogChannel.h b/aos/externals/WPILib/WPILib/AnalogChannel.h
index c859555..ab860d4 100644
--- a/aos/externals/WPILib/WPILib/AnalogChannel.h
+++ b/aos/externals/WPILib/WPILib/AnalogChannel.h
@@ -10,6 +10,7 @@
 #include "ChipObject.h"
 #include "SensorBase.h"
 #include "PIDSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class AnalogModule;
 
@@ -25,7 +26,7 @@
  * resolution, while the averaged samples are divided by the number of samples to retain the resolution,
  * but get more stable values.
  */
-class AnalogChannel : public SensorBase, public PIDSource
+class AnalogChannel : public SensorBase, public PIDSource, public LiveWindowSendable
 {
 public:
 	static const UINT8 kAccumulatorModuleNumber = 1;
@@ -66,6 +67,13 @@
 	void GetAccumulatorOutput(INT64 *value, UINT32 *count);
 	
 	double PIDGet();
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	void InitChannel(UINT8 moduleNumber, UINT32 channel);
@@ -73,6 +81,8 @@
 	AnalogModule *m_module;
 	tAccumulator *m_accumulator;
 	INT64 m_accumulatorOffset;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h b/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h
index f5ef54b..9b867e6 100644
--- a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h
+++ b/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h
@@ -9,7 +9,7 @@
 
 #include "Buttons/Button.h"
 
-class AnalogIOButton : public Button
+class AnalogIOButton : public Trigger
 {
 public:
 	static const double kThreshold;
diff --git a/aos/externals/WPILib/WPILib/Buttons/Button.cpp b/aos/externals/WPILib/WPILib/Buttons/Button.cpp
index 81671af..ea955f7 100644
--- a/aos/externals/WPILib/WPILib/Buttons/Button.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/Button.cpp
@@ -4,56 +4,31 @@
 /* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
 /*----------------------------------------------------------------------------*/
 
-#include "Buttons/Button.h"
+#include "Button.h"
 
-#include "Buttons/HeldButtonScheduler.h"
-#include "Buttons/PressedButtonScheduler.h"
-#include "Buttons/ReleasedButtonScheduler.h"
-#include "NetworkTables/NetworkTable.h"
-
-Button::Button() {
-	m_table = NULL;
+/**
+ * Specifies the command to run when a button is first pressed
+ * @param command The pointer to the command to run
+ */
+void Button::WhenPressed(Command *command) {
+	WhenActive(command);
 }
 
-bool Button::Grab()
-{
-	if (Get())
-		return true;
-	else if (m_table != NULL)
-	{
-		if (m_table->IsConnected())
-			return m_table->GetBoolean("pressed");
-		else
-			return false;
-	}
-	else
-		return false;
+/**
+ * Specifies the command to be scheduled while the button is pressed
+ * The command will be scheduled repeatedly while the button is pressed and will
+ * be canceled when the button is released.
+ * @param command The pointer to the command to run
+ */
+void Button::WhileHeld(Command *command) {
+	WhileActive(command);
 }
 
-void Button::WhenPressed(Command *command)
-{
-	PressedButtonScheduler *pbs = new PressedButtonScheduler(Grab(), this, command);
-	pbs->Start();
-}
-
-void Button::WhileHeld(Command *command)
-{
-	HeldButtonScheduler *hbs = new HeldButtonScheduler(Grab(), this, command);
-	hbs->Start();
-}
-
-void Button::WhenReleased(Command *command)
-{
-	ReleasedButtonScheduler *rbs = new ReleasedButtonScheduler(Grab(), this, command);
-	rbs->Start();
-}
-
-NetworkTable* Button::GetTable()
-{
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-		m_table->PutBoolean("pressed", Get());
-	}
-	return m_table;
+/**
+ * Specifies the command to run when the button is released
+ * The command will be scheduled a single time.
+ * @param The pointer to the command to run
+ */
+void Button::WhenReleased(Command *command) {
+	WhenInactive(command);
 }
diff --git a/aos/externals/WPILib/WPILib/Buttons/Button.h b/aos/externals/WPILib/WPILib/Buttons/Button.h
index da83339..e2893b0 100644
--- a/aos/externals/WPILib/WPILib/Buttons/Button.h
+++ b/aos/externals/WPILib/WPILib/Buttons/Button.h
@@ -7,26 +7,27 @@
 #ifndef __BUTTON_H__
 #define __BUTTON_H__
 
-#include "SmartDashboard/SmartDashboardData.h"
+#include "Buttons/Trigger.h"
+#include "Commands/Command.h"
 
-class Command;
-
-class Button : public SmartDashboardData
-{
+/**
+ * This class provides an easy way to link commands to OI inputs.
+ *
+ * It is very easy to link a button to a command.  For instance, you could
+ * link the trigger button of a joystick to a "score" command.
+ *
+ * This class represents a subclass of Trigger that is specifically aimed at
+ * buttons on an operator interface as a common use case of the more generalized
+ * Trigger objects. This is a simple wrapper around Trigger with the method names
+ * renamed to fit the Button object use.
+ * 
+ * @author brad
+ */
+class Button : public Trigger {
 public:
-	Button();
-	virtual ~Button() {}
-	bool Grab();
-	virtual bool Get() = 0;
-	void WhenPressed(Command *command);
-	void WhileHeld(Command *command);
-	void WhenReleased(Command *command);
-
-	virtual std::string GetType() {return "Button";}
-	virtual NetworkTable *GetTable();
-
-protected:
-	NetworkTable* m_table;
+	virtual void WhenPressed(Command *command);
+	virtual void WhileHeld(Command *command);
+	virtual void WhenReleased(Command *command);
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp
index c75e203..e7f71b9 100644
--- a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp
@@ -7,9 +7,8 @@
 #include "Buttons/ButtonScheduler.h"
 
 #include "Commands/Scheduler.h"
-#include "NetworkTables/NetworkTable.h"
 
-ButtonScheduler::ButtonScheduler(bool last, Button *button, Command *orders) :
+ButtonScheduler::ButtonScheduler(bool last, Trigger *button, Command *orders) :
 	m_pressedLast(last),
 	m_button(button),
 	m_command(orders)
diff --git a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h
index 15e6fb9..96d0a0e 100644
--- a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h
+++ b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h
@@ -7,20 +7,20 @@
 #ifndef __BUTTON_SCHEDULER_H__
 #define __BUTTON_SCHEDULER_H__
 
-class Button;
+class Trigger;
 class Command;
 
 class ButtonScheduler
 {
 public:
-	ButtonScheduler(bool last, Button *button, Command *orders);
+	ButtonScheduler(bool last, Trigger *button, Command *orders);
 	virtual ~ButtonScheduler() {}
 	virtual void Execute() = 0;
 	void Start();
 
 protected:
 	bool m_pressedLast;
-	Button *m_button;
+	Trigger *m_button;
 	Command *m_command;
 };
 
diff --git a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp
index f7b7a49..fbe4a9f 100644
--- a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp
@@ -9,7 +9,7 @@
 #include "Buttons/Button.h"
 #include "Commands/Command.h"
 
-HeldButtonScheduler::HeldButtonScheduler(bool last, Button *button, Command *orders) :
+HeldButtonScheduler::HeldButtonScheduler(bool last, Trigger *button, Command *orders) :
 	ButtonScheduler(last, button, orders)
 {
 }
diff --git a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h
index 3e50b97..3bca0d5 100644
--- a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h
+++ b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h
@@ -9,13 +9,13 @@
 
 #include "Buttons/ButtonScheduler.h"
 
-class Button;
+class Trigger;
 class Command;
 
 class HeldButtonScheduler : public ButtonScheduler
 {
 public:
-	HeldButtonScheduler(bool last, Button *button, Command *orders);
+	HeldButtonScheduler(bool last, Trigger *button, Command *orders);
 	virtual ~HeldButtonScheduler() {}
 	virtual void Execute();
 };
diff --git a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp b/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp
index 9fc3bba..5b67c2a 100644
--- a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp
@@ -5,16 +5,15 @@
 /*----------------------------------------------------------------------------*/
 
 #include "Buttons/NetworkButton.h"
+#include "networktables/NetworkTable.h"
 
-#include "NetworkTables/NetworkTable.h"
-
-NetworkButton::NetworkButton(const char *tableName, const char *field) :
+NetworkButton::NetworkButton(const char *tableName, const char *field) ://TODO how is this supposed to work???
 	m_netTable(NetworkTable::GetTable(tableName)),
 	m_field(field)
 {
 }
 
-NetworkButton::NetworkButton(NetworkTable *table, const char *field) :
+NetworkButton::NetworkButton(ITable *table, const char *field) :
 	m_netTable(table),
 	m_field(field)
 {
@@ -22,8 +21,9 @@
 
 bool NetworkButton::Get()
 {
-	if (m_netTable->IsConnected())
+	/*if (m_netTable->isConnected())
 		return m_netTable->GetBoolean(m_field.c_str());
 	else
-		return false;
+		return false;*/
+	return m_netTable->GetBoolean(m_field);
 }
diff --git a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.h b/aos/externals/WPILib/WPILib/Buttons/NetworkButton.h
index 40af41a..874a768 100644
--- a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.h
+++ b/aos/externals/WPILib/WPILib/Buttons/NetworkButton.h
@@ -10,20 +10,19 @@
 #include "Buttons/Button.h"
 #include <string>
 
-class NetworkTable;
-
 class NetworkButton : public Button
 {
 public:
 	NetworkButton(const char *tableName, const char *field);
-	NetworkButton(NetworkTable* table, const char *field);
+	NetworkButton(ITable* table, const char *field);
 	virtual ~NetworkButton() {}
 
 	virtual bool Get();
 
 private:
-	NetworkTable* m_netTable;
+	ITable* m_netTable;
 	std::string m_field;
+
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.cpp
index d6a3451..3cf25ba 100644
--- a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.cpp
@@ -9,7 +9,7 @@
 #include "Buttons/Button.h"
 #include "Commands/Command.h"
 
-PressedButtonScheduler::PressedButtonScheduler(bool last, Button *button, Command *orders) :
+PressedButtonScheduler::PressedButtonScheduler(bool last, Trigger *button, Command *orders) :
 	ButtonScheduler(last, button, orders)
 {
 }
diff --git a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h
index e6ebc3a..a69320b 100644
--- a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h
+++ b/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h
@@ -9,13 +9,13 @@
 
 #include "Buttons/ButtonScheduler.h"
 
-class Button;
+class Trigger;
 class Command;
 
 class PressedButtonScheduler : public ButtonScheduler
 {
 public:
-	PressedButtonScheduler(bool last, Button *button, Command *orders);
+	PressedButtonScheduler(bool last, Trigger *button, Command *orders);
 	virtual ~PressedButtonScheduler() {}
 	virtual void Execute();
 };
diff --git a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp
index a0f1bdc..8715573 100644
--- a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp
+++ b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp
@@ -9,7 +9,7 @@
 #include "Buttons/Button.h"
 #include "Commands/Command.h"
 
-ReleasedButtonScheduler::ReleasedButtonScheduler(bool last, Button *button, Command *orders) :
+ReleasedButtonScheduler::ReleasedButtonScheduler(bool last, Trigger *button, Command *orders) :
 	ButtonScheduler(last, button, orders)
 {
 }
diff --git a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h
index dc2eb78..198a1d3 100644
--- a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h
+++ b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h
@@ -9,13 +9,13 @@
 
 #include "Buttons/ButtonScheduler.h"
 
-class Button;
+class Trigger;
 class Command;
 
 class ReleasedButtonScheduler : public ButtonScheduler
 {
 public:
-	ReleasedButtonScheduler(bool last, Button *button, Command *orders);
+	ReleasedButtonScheduler(bool last, Trigger *button, Command *orders);
 	virtual ~ReleasedButtonScheduler() {}
 	virtual void Execute();
 };
diff --git a/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp b/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp
new file mode 100644
index 0000000..8ee5a4d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp
@@ -0,0 +1,65 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#include "Buttons/Button.h"
+
+#include "Buttons/HeldButtonScheduler.h"
+#include "Buttons/PressedButtonScheduler.h"
+#include "Buttons/ReleasedButtonScheduler.h"
+
+Trigger::Trigger() {
+	m_table = NULL;
+}
+
+bool Trigger::Grab()
+{
+	if (Get())
+		return true;
+	else if (m_table != NULL)
+	{
+		//if (m_table->isConnected())//TODO is connected on button?
+			return m_table->GetBoolean("pressed");
+		/*else
+			return false;*/
+	}
+	else
+		return false;
+}
+
+void Trigger::WhenActive(Command *command)
+{
+	PressedButtonScheduler *pbs = new PressedButtonScheduler(Grab(), this, command);
+	pbs->Start();
+}
+
+void Trigger::WhileActive(Command *command)
+{
+	HeldButtonScheduler *hbs = new HeldButtonScheduler(Grab(), this, command);
+	hbs->Start();
+}
+
+void Trigger::WhenInactive(Command *command)
+{
+	ReleasedButtonScheduler *rbs = new ReleasedButtonScheduler(Grab(), this, command);
+	rbs->Start();
+}
+
+
+
+std::string Trigger::GetSmartDashboardType(){
+	return "Button";
+}
+
+void Trigger::InitTable(ITable* table){
+	m_table = table;
+	if(m_table!=NULL){
+		m_table->PutBoolean("pressed", Get());
+	}
+}
+
+ITable* Trigger::GetTable(){
+	return m_table;
+}
diff --git a/aos/externals/WPILib/WPILib/Buttons/Trigger.h b/aos/externals/WPILib/WPILib/Buttons/Trigger.h
new file mode 100644
index 0000000..da7c1b8
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/Buttons/Trigger.h
@@ -0,0 +1,47 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef __TRIGGER_H__
+#define __TRIGGER_H__
+
+#include "SmartDashboard/Sendable.h"
+
+class Command;
+
+/**
+ * This class provides an easy way to link commands to inputs.
+ *
+ * It is very easy to link a polled input to a command.  For instance, you could
+ * link the trigger button of a joystick to a "score" command or an encoder reaching
+ * a particular value.
+ *
+ * It is encouraged that teams write a subclass of Trigger if they want to have
+ * something unusual (for instance, if they want to react to the user holding
+ * a button while the robot is reading a certain sensor input).  For this, they
+ * only have to write the {@link Trigger#Get()} method to get the full functionality
+ * of the Trigger class.
+ *
+ * @author Brad Miller, Joe Grinstead
+ */
+class Trigger : public Sendable
+{
+public:
+	Trigger();
+	virtual ~Trigger() {}
+	bool Grab();
+	virtual bool Get() = 0;
+	void WhenActive(Command *command);
+	void WhileActive(Command *command);
+	void WhenInactive(Command *command);
+	
+	virtual void InitTable(ITable* table);
+	virtual ITable* GetTable();
+	virtual std::string GetSmartDashboardType();
+protected:
+	ITable* m_table;
+};
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/CANJaguar.cpp b/aos/externals/WPILib/WPILib/CANJaguar.cpp
index 4261d98..b0cc642 100644
--- a/aos/externals/WPILib/WPILib/CANJaguar.cpp
+++ b/aos/externals/WPILib/WPILib/CANJaguar.cpp
@@ -12,6 +12,7 @@
 #include "NetworkCommunication/UsageReporting.h"
 #include "WPIErrors.h"
 #include <stdio.h>
+#include "LiveWindow/LiveWindow.h"
 
 #define swap16(x) ( (((x)>>8) &0x00FF) \
                   | (((x)<<8) &0xFF00) )
@@ -69,6 +70,7 @@
 	m_safetyHelper = new MotorSafetyHelper(this);
 
 	nUsageReporting::report(nUsageReporting::kResourceType_CANJaguar, m_deviceNumber, m_controlMode);
+	LiveWindow::GetInstance()->AddActuator("CANJaguar", m_deviceNumber, 0, this);
 }
 
 /**
@@ -1235,3 +1237,35 @@
 	DisableControl();
 }
 
+void CANJaguar::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	Set(value.f);
+}
+
+void CANJaguar::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", Get());
+	}
+}
+
+void CANJaguar::StartLiveWindowMode() {
+	m_table->AddTableListener("Value", this, true);
+}
+
+void CANJaguar::StopLiveWindowMode() {
+	m_table->RemoveTableListener(this);
+}
+
+std::string CANJaguar::GetSmartDashboardType() {
+	return "Speed Controller";
+}
+
+void CANJaguar::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * CANJaguar::GetTable() {
+	return m_table;
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/CANJaguar.h b/aos/externals/WPILib/WPILib/CANJaguar.h
index f3cbee0..0bb38b1 100644
--- a/aos/externals/WPILib/WPILib/CANJaguar.h
+++ b/aos/externals/WPILib/WPILib/CANJaguar.h
@@ -15,11 +15,17 @@
 #include "SpeedController.h"
 #include <semLib.h>
 #include <vxWorks.h>
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITable.h"
 
 /**
  * Luminary Micro Jaguar Speed Control
  */
-class CANJaguar : public MotorSafety, public PIDOutput, public SpeedController, public ErrorBase
+class CANJaguar : public MotorSafety,
+					public SpeedController,
+					public ErrorBase,
+					public LiveWindowSendable,
+					public ITableListener
 {
 public:
 	// The internal PID control loop in the Jaguar runs at 1kHz.
@@ -113,6 +119,16 @@
 
 	MotorSafetyHelper *m_safetyHelper;
 
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+	
+	ITable *m_table;
+
 private:
 	void InitCANJaguar();
 };
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.cpp
deleted file mode 100644
index d8ba69c..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Accelerometer.h"
-#include "CInterfaces/CAccelerometer.h"
-#include "AnalogModule.h"
-#include "CInterfaces/CWrappers.h"
-
-static Accelerometer* accelerometers[SensorBase::kAnalogModules][SensorBase::kAnalogChannels];
-static bool initialized = false;
-
-/**
- * Allocate an instance of the C Accelerometer object
- * @param slot The slot the analog module is plugged into
- * @param channel The analog module channel the accelerometer is plugged into
- */
-static Accelerometer *AllocateAccelerometer(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		initialized = true;
-		for (unsigned i = 1; i <= SensorBase::kAnalogModules; i++)
-			for (unsigned j = 1; j <= SensorBase::kAnalogChannels; j++)
-				accelerometers[i][j] = NULL;
-	}
-	if (!SensorBase::CheckAnalogModule(moduleNumber) || !SensorBase::CheckAnalogChannel(channel))
-		return NULL;
-	unsigned index = moduleNumber - 1;
-	if (accelerometers[index][channel - 1] == NULL)
-	{
-		accelerometers[index][channel - 1] = new Accelerometer(moduleNumber, channel);
-	}
-	return accelerometers[index][channel - 1];
-}
-
-/**
- * Get the acceleration in Gs
- * @param channel The channel the accelerometer is plugged into
- * @returns Returns the acceleration in Gs
- */
-float GetAcceleration(UINT32 channel)
-{
-	Accelerometer *accel = AllocateAccelerometer(SensorBase::GetDefaultAnalogModule(), channel);
-	return accel->GetAcceleration();
-}
-
-/**
- * Get the acceleration in Gs
- * @param slot The slot the analog module is plugged into
- * @param channel The channel the accelerometer is plugged into
- * @returns Returns the acceleration in Gs
- */
-float GetAcceleration(UINT8 moduleNumber, UINT32 channel)
-{
-	Accelerometer *accel = AllocateAccelerometer(moduleNumber, channel);
-	return accel->GetAcceleration();
-}
-
-/**
- * Set the accelerometer sensitivity.
- *
- * This sets the sensitivity of the accelerometer used for calculating the acceleration.
- * The sensitivity varys by accelerometer model. There are constants defined for various models.
- *
- * @param channel The channel the accelerometer is plugged into
- * @param sensitivity The sensitivity of accelerometer in Volts per G.
- */
-void SetAccelerometerSensitivity(UINT32 channel, float sensitivity)
-{
-	Accelerometer *accel = AllocateAccelerometer(SensorBase::GetDefaultAnalogModule(), channel);
-	accel->SetSensitivity(sensitivity);
-}
-
-/**
- * Set the accelerometer sensitivity.
- *
- * This sets the sensitivity of the accelerometer used for calculating the acceleration.
- * The sensitivity varys by accelerometer model. There are constants defined for various models.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel the accelerometer is plugged into
- * @param sensitivity The sensitivity of accelerometer in Volts per G.
- */
-void SetAccelerometerSensitivity(UINT8 moduleNumber, UINT32 channel, float sensitivity)
-{
-	Accelerometer *accel = AllocateAccelerometer(moduleNumber, channel);
-	accel->SetSensitivity(sensitivity);
-}
-
-/**
- * Set the voltage that corresponds to 0 G.
- *
- * The zero G voltage varys by accelerometer model. There are constants defined for various models.
- *
- * @param channel The channel the accelerometer is plugged into
- * @param zero The zero G voltage.
- */
-void SetAccelerometerZero(UINT32 channel, float zero)
-{
-	Accelerometer *accel = AllocateAccelerometer(SensorBase::GetDefaultAnalogModule(), channel);
-	accel->SetZero(zero);
-}
-
-/**
- * Set the voltage that corresponds to 0 G.
- *
- * The zero G voltage varys by accelerometer model. There are constants defined for various models.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel the accelerometer is plugged into
- * @param zero The zero G voltage.
- */
-void SetAccelerometerZero(UINT8 moduleNumber, UINT32 channel, float zero)
-{
-	Accelerometer *accel = AllocateAccelerometer(moduleNumber, channel);
-	accel->SetZero(zero);
-}
-
-/**
- * Delete the accelerometer underlying object
- * Deletes the object that is associated with this accelerometer and frees up the storage
- * and the ports.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel the accelerometer is plugged into
- */
-void DeleteAccelerometer(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckAnalogModule(moduleNumber) && SensorBase::CheckAnalogChannel(channel))
-	{
-		unsigned index = moduleNumber - 1;
-		delete accelerometers[index][channel - 1];
-		accelerometers[index][channel - 1] = NULL;
-	}
-}
-
-/**
- * Delete the accelerometer underlying object
- * Deletes the object that is associated with this accelerometer and frees up the storage
- * and the ports.
- *
- * @param channel The channel the accelerometer is plugged into
- */
-void DeleteAccelerometer(UINT32 channel)
-{
-	DeleteAccelerometer(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-
-/**
- * Alternate C Interface
- */
-
-AccelerometerObject CreateAccelerometer(UINT32 channel)
-{
-	return (AccelerometerObject) new Accelerometer(channel);
-}
-
-AccelerometerObject CreateAccelerometer(UINT8 moduleNumber, UINT32 channel)
-{
-	return (AccelerometerObject) new Accelerometer(moduleNumber, channel);
-}
-
-float GetAcceleration(AccelerometerObject o)
-{
-	return ((Accelerometer *) o)->GetAcceleration();
-}
-
-void SetAccelerometerSensitivity(AccelerometerObject o, float sensitivity)
-{
-	((Accelerometer *) o)->SetSensitivity(sensitivity);
-}
-
-void SetAccelerometerZero(AccelerometerObject o, float zero)
-{
-	((Accelerometer *)o )->SetZero(zero);
-}
-
-void DeleteAccelerometer(AccelerometerObject o)
-{
-	delete (Accelerometer *) o;
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.h b/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.h
deleted file mode 100644
index 90f3113..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CAccelerometer.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_ACCELEROMETER_H
-#define _C_ACCELEROMETER_H
-
-float GetAcceleration(UINT32 channel);
-float GetAcceleration(UINT8 moduleNumber, UINT32 channel);
-void SetAccelerometerSensitivity(UINT32 channel, float sensitivity);
-void SetAccelerometerSensitivity(UINT8 moduleNumber, UINT32 channel, float sensitivity);
-void SetAccelerometerZero(UINT32 channel, float zero);
-void SetAccelerometerZero(UINT8 moduleNumber, UINT32 channel, float zero);
-void DeleteAccelerometer(UINT32 channel);
-void DeleteAccelerometer(UINT8 moduleNumber, UINT32 channel);
-
-typedef void *AccelerometerObject;
-
-AccelerometerObject CreateAccelerometer(UINT32 channel);
-AccelerometerObject CreateAccelerometer(UINT8 moduleNumber, UINT32 channel);
-float GetAcceleration(AccelerometerObject o);
-void SetAccelerometerSensitivity(AccelerometerObject o, float sensitivity);
-void SetAccelerometerZero(AccelerometerObject o, float zero);
-void DeleteAccelerometer(AccelerometerObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.cpp
deleted file mode 100644
index cf0f675..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/CAnalogChannel.h"
-#include "AnalogModule.h"
-
-static bool analogChannelsInitialized = false;
-static AnalogChannel
-		*analogs[SensorBase::kAnalogModules][SensorBase::kAnalogChannels];
-
-/**
- * Allocate an AnalogChannel object for this set of slot/port
- * @param slot The slot the analog module is plugged into
- * @param channel The channel number on the module for this analog channel object
- */
-AnalogChannel *AllocateAnalogChannel(UINT8 moduleNumber, UINT32 channel/*, SensorCreator createObject*/)
-{
-	if (!analogChannelsInitialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kAnalogModules; i++)
-			for (unsigned j = 0; j < SensorBase::kAnalogChannels; j++)
-				analogs[i][j] = NULL;
-		analogChannelsInitialized = true;
-	}
-	if (SensorBase::CheckAnalogModule(moduleNumber) && SensorBase::CheckAnalogChannel(channel))
-	{
-		if (analogs[moduleNumber - 1][channel - 1] == NULL)
-			analogs[moduleNumber - 1][channel - 1] = new AnalogChannel(moduleNumber, channel);
-		return analogs[moduleNumber - 1][channel - 1];
-	}
-	else
-		return NULL;
-}
-
-/**
- * Get a sample straight from this channel on the module.
- * The sample is a 12-bit value representing the -10V to 10V range of the A/D converter in the module.
- * The units are in A/D converter codes.  Use GetVoltage() to get the analog value in calibrated units.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel the channel for the value being used
- * @return A sample straight from this channel on the module.
- */
-INT16 GetAnalogValue(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetValue();
-	}
-	return 0;
-}
-
-/**
- * Get a sample from the output of the oversample and average engine for this channel.
- * The sample is 12-bit + the value configured in SetOversampleBits().
- * The value configured in SetAverageBits() will cause this value to be averaged 2**bits number of samples.
- * This is not a sliding window.  The sample will not change until 2**(OversamplBits + AverageBits) samples
- * have been acquired from the module on this channel.
- * Use GetAverageVoltage() to get the analog value in calibrated units.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel the channel for the value being used
- * @return A sample from the oversample and average engine for this channel.
- */
-INT32 GetAnalogAverageValue(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageValue();
-	}
-	return 0;
-}
-
-/**
- * Get a scaled sample straight from this channel on the module.
- * The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @return A scaled sample straight from this channel on the module.
- */
-float GetAnalogVoltage(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetVoltage();
-	}
-	return 0.0;
-}
-
-/**
- * Get a scaled sample from the output of the oversample and average engine for this channel.
- * The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().
- * Using oversampling will cause this value to be higher resolution, but it will update more slowly.
- * Using averaging will cause this value to be more stable, but it will update more slowly.
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @return A scaled sample from the output of the oversample and average engine for this channel.
- */
-float GetAnalogAverageVoltage(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageVoltage();
-	}
-	return 0.0;
-}
-
-/**
- * Set the number of averaging bits.
- * This sets the number of averaging bits. The actual number of averaged samples is 2**bits.
- * Use averaging to improve the stability of your measurement at the expense of sampling rate.
- * The averaging is done automatically in the FPGA.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @param bits Number of bits of averaging.
- */
-void SetAnalogAverageBits(UINT8 moduleNumber, UINT32 channel, UINT32 bits)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		analog->SetAverageBits(bits);
-	}
-}
-
-/**
- * Get the number of averaging bits previously configured.
- * This gets the number of averaging bits from the FPGA. The actual number of averaged samples is 2**bits.
- * The averaging is done automatically in the FPGA.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @return Number of bits of averaging previously configured.
- */
-UINT32 GetAnalogAverageBits(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageBits();
-	}
-	return 0;
-}
-
-/**
- * Set the number of oversample bits.
- * This sets the number of oversample bits. The actual number of oversampled values is 2**bits.
- * Use oversampling to improve the resolution of your measurements at the expense of sampling rate.
- * The oversampling is done automatically in the FPGA.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @param bits Number of bits of oversampling.
- */
-void SetAnalogOversampleBits(UINT8 moduleNumber, UINT32 channel, UINT32 bits)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		analog->SetOversampleBits(bits);
-	}
-}
-
-/**
- * Get the number of oversample bits previously configured.
- * This gets the number of oversample bits from the FPGA. The actual number of oversampled values is
- * 2**bits. The oversampling is done automatically in the FPGA.
- *
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- * @return Number of bits of oversampling previously configured.
- */
-UINT32 GetAnalogOversampleBits(UINT8 moduleNumber, UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(moduleNumber, channel);
-	if (analog != NULL)
-	{
-		return analog->GetOversampleBits();
-	}
-	return 0;
-}
-
-/**
- * Get a sample straight from this channel on the module.
- * The sample is a 12-bit value representing the -10V to 10V range of the A/D converter in the module.
- * The units are in A/D converter codes.  Use GetVoltage() to get the analog value in calibrated units.
-
- * @param channel The channel in the module assicated with this analog channel
- * @return A sample straight from this channel on the module.
- */
-INT16 GetAnalogValue(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetValue();
-	}
-	return 0;
-}
-
-/**
- * Get a sample from the output of the oversample and average engine for this channel.
- * The sample is 12-bit + the value configured in SetOversampleBits().
- * The value configured in SetAverageBits() will cause this value to be averaged 2**bits number of samples.
- * This is not a sliding window.  The sample will not change until 2**(OversamplBits + AverageBits) samples
- * have been acquired from the module on this channel.
- * Use GetAverageVoltage() to get the analog value in calibrated units.
-
- * @param channel The channel in the module assicated with this analog channel
- * @return A sample from the oversample and average engine for this channel.
- */
-INT32 GetAnalogAverageValue(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageValue();
-	}
-	return 0;
-}
-
-/**
- * Get a scaled sample straight from this channel on the module.
- * The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().
-
- * @param channel The channel in the module assicated with this analog channel
- * @return A scaled sample straight from this channel on the module.
- */
-float GetAnalogVoltage(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetVoltage();
-	}
-	return 0.0;
-}
-
-/**
- * Get a scaled sample from the output of the oversample and average engine for this channel.
- * The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().
- * Using oversampling will cause this value to be higher resolution, but it will update more slowly.
- * Using averaging will cause this value to be more stable, but it will update more slowly.
-
- * @param channel The channel in the module assicated with this analog channel
- * @return A scaled sample from the output of the oversample and average engine for this channel.
- */
-float GetAnalogAverageVoltage(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageVoltage();
-	}
-	return 0.0;
-}
-
-/**
- * Set the number of averaging bits.
- * This sets the number of averaging bits. The actual number of averaged samples is 2**bits.
- * Use averaging to improve the stability of your measurement at the expense of sampling rate.
- * The averaging is done automatically in the FPGA.
- *
- * @param channel The channel in the module assicated with this analog channel
- * @param bits Number of bits of averaging.
- */
-void SetAnalogAverageBits(UINT32 channel, UINT32 bits)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		analog->SetAverageBits(bits);
-	}
-}
-
-/**
- * Get the number of averaging bits previously configured.
- * This gets the number of averaging bits from the FPGA. The actual number of averaged samples is 2**bits.
- * The averaging is done automatically in the FPGA.
- *
- * @param channel The channel in the module assicated with this analog channel
- * @return Number of bits of averaging previously configured.
- */
-UINT32 GetAnalogAverageBits(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetAverageBits();
-	}
-	return 0;
-}
-
-/**
- * Set the number of oversample bits.
- * This sets the number of oversample bits. The actual number of oversampled values is 2**bits.
- * Use oversampling to improve the resolution of your measurements at the expense of sampling rate.
- * The oversampling is done automatically in the FPGA.
- *
- * @param channel The channel in the module assicated with this analog channel
- * @param bits Number of bits of oversampling.
- */
-void SetAnalogOversampleBits(UINT32 channel, UINT32 bits)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		analog->GetOversampleBits();
-	}
-}
-
-/**
- * Get the number of oversample bits previously configured.
- * This gets the number of oversample bits from the FPGA. The actual number of oversampled values is
- * 2**bits. The oversampling is done automatically in the FPGA.
- *
- * @param channel The channel in the module assicated with this analog channel
- * @return Number of bits of oversampling previously configured.
- */
-UINT32 GetAnalogOversampleBits(UINT32 channel)
-{
-	AnalogChannel *analog = AllocateAnalogChannel(AnalogModule::GetDefaultAnalogModule(), channel);
-	if (analog != NULL)
-	{
-		return analog->GetOversampleBits();
-	}
-	return 0;
-}
-
-/**
- * Delete the resources associated with this AnalogChannel
- * The underlying object and the port reservations are deleted for this analog channel.
-
- * @param slot The slot the analog module is plugged into
- * @param channel The channel in the module assicated with this analog channel
- */
-void DeleteAnalogChannel(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckAnalogModule(moduleNumber) && SensorBase::CheckAnalogChannel(channel))
-	{
-		delete analogs[moduleNumber - 1][channel - 1];
-		analogs[moduleNumber - 1][channel - 1] = NULL;
-	}
-}
-
-/**
- * Delete the resources associated with this AnalogChannel
- * The underlying object and the port reservations are deleted for this analog channel.
-
- * @param channel The channel in the module assicated with this analog channel
- */
-void DeleteAnalogChannel(UINT32 channel)
-{
-	DeleteAnalogChannel(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Alternative C Interface
- */
-
-AnalogChannelObject CreateAnalogChannel(UINT32 module, UINT32 channel)
-{
-	return (AnalogChannelObject) new AnalogChannel(module, channel);
-}
-
-AnalogChannelObject CreateAnalogChannel(UINT32 channel)
-{
-	return (AnalogChannelObject) new AnalogChannel(channel);
-}
-
-INT16 GetAnalogValue(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetValue();
-}
-
-INT32 GetAnalogAverageValue(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetAverageValue();
-}
-
-float GetAnalogVoltage(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetVoltage();
-}
-
-float GetAnalogAverageVoltage(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetAverageVoltage();
-}
-
-void SetAnalogAverageBits(AnalogChannelObject o, UINT32 bits)
-{
-	((AnalogChannel *)o )->SetAverageBits(bits);
-}
-
-UINT32 GetAnalogAverageBits(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetAverageBits();
-}
-
-void SetAnalogOversampleBits(AnalogChannelObject o, UINT32 bits)
-{
-	((AnalogChannel *)o )->SetOversampleBits(bits);
-}
-
-UINT32 GetAnalogOversampleBits(AnalogChannelObject o)
-{
-	return ((AnalogChannel *)o )->GetOversampleBits();
-}
-
-void DeleteAnalogChannel(AnalogChannelObject o)
-{
-	delete (AnalogChannel *)o;
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.h b/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.h
deleted file mode 100644
index 55206b0..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CAnalogChannel.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_ANALOG_CHANNEL_H
-#define C_ANALOG_CHANNEL_H
-
-#include "AnalogChannel.h"
-#include "CWrappers.h"
-
-AnalogChannel *AllocateAnalogChannel(UINT8 moduleNumber, UINT32 channel /*,SensorCreator createObject*/);
-
-INT16 GetAnalogValue(UINT8 moduleNumber, UINT32 channel);
-INT32 GetAnalogAverageValue(UINT8 moduleNumber, UINT32 channel);
-
-float GetAnalogVoltage(UINT8 moduleNumber, UINT32 channel);
-float GetAnalogAverageVoltage(UINT8 moduleNumber, UINT32 channel);
-
-void SetAnalogAverageBits(UINT8 moduleNumber, UINT32 channel, UINT32 bits);
-UINT32 GetAnalogAverageBits(UINT8 moduleNumber, UINT32 channel);
-void SetAnalogOversampleBits(UINT8 moduleNumber, UINT32 channel, UINT32 bits);
-UINT32 GetAnalogOversampleBits(UINT8 moduleNumber, UINT32 channel);
-
-INT16 GetAnalogValue(UINT32 channel);
-INT32 GetAnalogAverageValue(UINT32 channel);
-
-float GetAnalogVoltage(UINT32 channel);
-float GetAnalogAverageVoltage(UINT32 channel);
-
-void SetAnalogAverageBits(UINT32 channel, UINT32 bits);
-UINT32 GetAnalogAverageBits(UINT32 channel);
-void SetAnalogOversampleBits(UINT32 channel, UINT32 bits);
-UINT32 GetAnalogOversampleBits(UINT32 channel);
-
-UINT32 GetAnalogLSBWeight();
-INT32 GetAnalogOffset();
-
-void DeleteAnalogChannel(UINT8 moduleNumber, UINT32 channel);
-void DeleteAnalogChannel(UINT32 channel);
-
-typedef void *AnalogChannelObject;
-
-AnalogChannelObject CreateAnalogChannel(UINT8 moduleNumber, UINT32 channel);
-AnalogChannelObject CreateAnalogChannel(UINT32 channel);
-INT16 GetAnalogValue(AnalogChannelObject o);
-INT32 GetAnalogAverageValue(AnalogChannelObject o);
-
-float GetAnalogVoltage(AnalogChannelObject o);
-float GetAnalogAverageVoltage(AnalogChannelObject o);
-
-void SetAnalogAverageBits(AnalogChannelObject o, UINT32 bits);
-UINT32 GetAnalogAverageBits(AnalogChannelObject o);
-void SetAnalogOversampleBits(AnalogChannelObject o, UINT32 bits);
-UINT32 GetAnalogOversampleBits(AnalogChannelObject o);
-void DeleteAnalogChannel(AnalogChannelObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.cpp
deleted file mode 100644
index 233b84c..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Compressor.h"
-#include "CInterfaces/CCompressor.h"
-#include "CInterfaces/CError.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-static Compressor *compressor = NULL;
-
-/**
- * Allocate resources for a compressor/pressure switch pair
- * Allocate the underlying object for the compressor.
- * @param pressureSwitchChannel The channel on the default digital module for the pressure switch
- * @param relayChannel The channel on the default digital module for the relay that controls the compressor
- */
-void CreateCompressor(UINT32 pressureSwitchChannel, UINT32 relayChannel)
-{
-	if (compressor == NULL)
-	{
-		compressor = new Compressor(pressureSwitchChannel, relayChannel);
-		return;
-	}
-	CError *error = new CError();
-	wpi_setStaticWPIError(error, CompressorAlreadyDefined);
-}
-
-/**
- * Allocate resources for a compressor/pressure switch pair
- * Allocate the underlying object for the compressor.
- * @param pressureSwitchSlot The slot of the digital module for the pressure switch
- * @param pressureSwitchChannel The channel on the digital module for the pressure switch
- * @param relaySlot The slot of the digital module for the relay controlling the compressor
- * @param relayChannel The channel on the digital module for the relay that controls the compressor
- */
-void CreateCompressor(UINT32 pressureSwitchSlot, UINT32 pressureSwitchChannel,
-						UINT32 relaySlot, UINT32 relayChannel)
-{
-	if (compressor == NULL)
-	{
-		compressor = new Compressor(pressureSwitchSlot, pressureSwitchChannel,
-									relaySlot, relayChannel);
-		return;
-	}
-	CError *error = new CError();
-	wpi_setStaticWPIError(error, CompressorAlreadyDefined);
-}
-
-/**
- * Start the compressor
- * Calling this function will cause the compressor task to begin polling the switch and operating the compressor.
- */
-void StartCompressor()
-{
-	if (compressor == NULL)
-	{
-		CError *error = new CError();
-		wpi_setStaticWPIError(error, CompressorUndefined);
-		return;
-	}
-	compressor->Start();
-}
-
-/**
- * Stop the compressor.
- * Stops the polling loop that operates the compressor. At this time the compressor will stop operating.
- */
-void StopCompressor()
-{
-	if (compressor == NULL)
-	{
-		CError *error = new CError();
-		wpi_setStaticWPIError(error, CompressorUndefined);
-		return;
-	}
-	compressor->Stop();
-}
-
-/**
- * Get the state of the enabled flag.
- * Return the state of the enabled flag for the compressor and pressure switch.
- *
- * @return The state of the compressor task's enable flag.
- */
-bool CompressorEnabled()
-{
-	if (compressor == NULL)
-	{
-		CError *error = new CError();
-		wpi_setStaticWPIError(error, CompressorUndefined);
-		return false;
-	}
-	return compressor->Enabled();
-}
-
-/**
- * Free the resources associated with the compressor.
- * The underlying Compressor object will be deleted and the resources and ports freed.
- */
-void DeleteCompressor()
-{
-	delete compressor;
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.h b/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.h
deleted file mode 100644
index 2047de0..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CCompressor.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _COMPRESSOR_H
-#define _COMPRESSOR_H
-
-void CreateCompressor(UINT32 pressureSwitch, UINT32 relayChannel);
-void CreateCompressor(UINT32 pressureSwitchSlot, UINT32 pressureSwitchChannel,
-						UINT32 relaySlot, UINT32 relayChannel);
-void StartCompressor();
-void StopCompressor();
-bool CompressorEnabled();
-
-void DeleteCompressor();
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CCounter.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CCounter.cpp
deleted file mode 100644
index 72eb5f7..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CCounter.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-#include "VxWorks.h"
-#include "CInterfaces/CCounter.h"
-#include "Counter.h"
-#include "DigitalModule.h"
-
-static Counter* counters[SensorBase::kDigitalModules][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Allocate the resource for a counter
- * Allocate the underlying Counter object and the resources associated with the
- * slot and channel
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-static Counter *AllocateCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kDigitalModules; i++)
-			for (unsigned j = 0; j < SensorBase::kDigitalChannels; j++)
-				counters[i][j] = NULL;
-		initialized = true;
-	}
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotOffset = moduleNumber - 1;
-		if (counters[slotOffset][channel - 1] == NULL)
-			counters[slotOffset][channel - 1] = new Counter(moduleNumber, channel);
-		return counters[slotOffset][channel - 1];
-	}
-	else
-		return NULL;
-}
-
-/**
- * Allocate the resource for a counter
- * Allocate the underlying Counter object and the resources associated with the
- * slot and channel
- *
- * @param channel The channel of the digital input used with this counter
- */
-static Counter *AllocateCounter(UINT32 channel)
-{
-	return AllocateCounter(DigitalModule::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Start the Counter counting.
- * This enables the counter and it starts accumulating counts from the associated
- * input channel. The counter value is not reset on starting, and still has the previous value.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-void StartCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	Counter *counter = AllocateCounter(moduleNumber, channel);
-	if (counter != NULL)
-		counter->Start();
-}
-
-/**
- * Start the Counter counting.
- * This enables the counter and it starts accumulating counts from the associated
- * input channel. The counter value is not reset on starting, and still has the previous value.
- *
- * @param channel The channel of the digital input used with this counter
- */
-void StartCounter(UINT32 channel)
-{
-	Counter *counter = AllocateCounter(channel);
-	if (counter != NULL)
-		counter->Start();
-}
-
-/**
- * Read the current counter value.
- * Read the value at this instant. It may still be running, so it reflects the current value. Next
- * time it is read, it might have a different value.
-
- * @param channel The channel of the digital input used with this counter
- */
-INT32 GetCounter(UINT32 channel)
-{
-	Counter *counter = AllocateCounter(channel);
-	if (counter != NULL)
-		return counter->Get();
-	else
-		return 0;
-}
-
-/**
- * Read the current counter value.
- * Read the value at this instant. It may still be running, so it reflects the current value. Next
- * time it is read, it might have a different value.
-
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-INT32 GetCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	Counter *counter = AllocateCounter(moduleNumber, channel);
-	if (counter != NULL)
-		return counter->Get();
-	else
-		return 0;
-}
-
-/**
- * Reset the Counter to zero.
- * Set the counter value to zero. This doesn't effect the running state of the counter, just sets
- * the current value to zero.
- * @param channel The channel of the digital input used with this counter
- */
-void ResetCounter(UINT32 channel)
-{
-	Counter *counter = AllocateCounter(channel);
-	if (counter != NULL)
-		counter->Reset();
-}
-
-/**
- * Reset the Counter to zero.
- * Set the counter value to zero. This doesn't effect the running state of the counter, just sets
- * the current value to zero.
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-void ResetCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	Counter *counter = AllocateCounter(moduleNumber, channel);
-	if (counter != NULL)
-		counter->Reset();
-}
-
-/**
- * Stop the Counter.
- * Stops the counting but doesn't effect the current value.
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-void StopCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	Counter *counter = AllocateCounter(moduleNumber, channel);
-	if (counter != NULL)
-		counter->Stop();
-}
-
-/**
- * Stop the Counter.
- * Stops the counting but doesn't effect the current value.
- * @param channel The channel of the digital input used with this counter
- */
-void StopCounter(UINT32 channel)
-{
-	Counter *counter = AllocateCounter(channel);
-	if (counter != NULL)
-		counter->Stop();
-}
-
-/*
- * Get the Period of the most recent count.
- * Returns the time interval of the most recent count. This can be used for velocity calculations
- * to determine shaft speed.
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- * @returns The period of the last two pulses in units of seconds.
- */
-double GetCounterPeriod(UINT8 moduleNumber, UINT32 channel)
-{
-	Counter *counter = AllocateCounter(moduleNumber, channel);
-	if (counter != NULL)
-		return counter->GetPeriod();
-	else
-		return 0;
-}
-
-/*
- * Get the Period of the most recent count.
- * Returns the time interval of the most recent count. This can be used for velocity calculations
- * to determine shaft speed.
- * @param channel The channel of the digital input used with this counter
- * @returns The period of the last two pulses in units of seconds.
- */
-double GetCounterPeriod(UINT32 channel)
-{
-	Counter *counter = AllocateCounter(channel);
-	if (counter != NULL)
-		return counter->GetPeriod();
-	else
-		return 0;
-}
-
-/**
- * Delete the resources associated with this counter.
- * The resources including the underlying object are deleted for this counter.
- * @param slot The slot the digital module is plugged into
- * @param channel The channel of the digital input used with this counter
- */
-void DeleteCounter(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotOffset = moduleNumber - 1;
-		delete counters[slotOffset][channel - 1];
-		counters[slotOffset][channel - 1] = NULL;
-	}
-}
-
-/**
- * Delete the resources associated with this counter.
- * The resources including the underlying object are deleted for this counter.
- * @param channel The channel of the digital input used with this counter
- */
-void DeleteCounter(UINT32 channel)
-{
-	DeleteCounter(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/*******************************************************************************
- * Alternative interface to counter
-*******************************************************************************/
-
-CounterObject CreateCounter(UINT32 channel) 
-{
-	return (CounterObject) new Counter(channel);
-}
-
-CounterObject CreateCounter(UINT8 moduleNumber, UINT32 channel) 
-{
-	return (CounterObject) new Counter(moduleNumber,channel);	
-}
-
-void StartCounter(CounterObject o)
-{
-	((Counter *) o)->Start();
-}
-
-INT32 GetCounter(CounterObject o)
-{
-	return 	((Counter *) o)->Get();
-}
-
-void ResetCounter(CounterObject o)
-{
-	((Counter *) o)->Reset();	
-}
-
-void StopCounter(CounterObject o)
-{
-	((Counter *) o)->Stop();
-}
-
-double GetCounterPeriod(CounterObject o)
-{
-	return 	((Counter *) o)->GetPeriod();	
-}
-
-void DeleteCounter(CounterObject o)
-{
-	delete (Counter *) o;
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CCounter.h b/aos/externals/WPILib/WPILib/CInterfaces/CCounter.h
deleted file mode 100644
index 0a9fd22..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CCounter.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _C_COUNTER_H
-#define _C_COUNTER_H
-
-void StartCounter(UINT32 channel);
-void StartCounter(UINT8 moduleNumber, UINT32 channel);
-INT32 GetCounter(UINT32 channel);
-INT32 GetCounter(UINT8 moduleNumber, UINT32 channel);
-void ResetCounter(UINT32 channel);
-void ResetCounter(UINT8 moduleNumber, UINT32 channel);
-void StopCounter(UINT32 channel);
-void StopCounter(UINT8 moduleNumber, UINT32 channel);
-double GetCounterPeriod(UINT32 channel);
-double GetCounterPeriod(UINT8 moduleNumber, UINT32 channel);
-void DeleteCounter(UINT32 channel);
-void DeleteCounter(UINT8 moduleNumber, UINT32 channel);
-
-typedef void *CounterObject;
-
-CounterObject CreateCounter(UINT32 channel);
-CounterObject CreateCounter(UINT8 moduleNumber, UINT32 channel);
-void StartCounter(CounterObject o);
-INT32 GetCounter(CounterObject o);
-void ResetCounter(CounterObject o);
-void StopCounter(CounterObject o);
-double GetCounterPeriod(CounterObject o);
-void DeleteCounter(CounterObject o);
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.cpp
deleted file mode 100644
index 88e19ef..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "DigitalModule.h"
-#include "DigitalInput.h"
-#include "CInterfaces/CDigitalInput.h"
-
-static DigitalInput* digitalInputs[SensorBase::kDigitalModules][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Allocates the resources associated with a DigitalInput.
- * Allocate the underlying DigitalInput object and the reservations for the
- * associated slot and channel.
- *
- * @param slot The slot the digital input module is plugged into
- * @param channel The particular channel this digital input is using
- */
-static DigitalInput *AllocateDigitalInput(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kDigitalModules; i++)
-			for (unsigned j = 0; j < SensorBase::kDigitalChannels; j++)
-				digitalInputs[i][j] = NULL;
-		initialized = true;
-	}
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotOffset = moduleNumber - 1;
-		if (digitalInputs[slotOffset][channel - 1] == NULL)
-		{
-			digitalInputs[slotOffset][channel - 1] = new DigitalInput(moduleNumber, channel);
-		}
-		return digitalInputs[slotOffset][channel - 1];
-	}
-	return NULL;
-}
-
-/*
- * Get the value from a digital input channel.
- * Retrieve the value of a single digital input channel from the FPGA.
- *
- * @param slot The slot the digital input module is plugged into
- * @param channel The particular channel this digital input is using
- */
-UINT32 GetDigitalInput(UINT8 moduleNumber, UINT32 channel)
-{
-	DigitalInput *digIn = AllocateDigitalInput(moduleNumber, channel);
-	if (digIn)
-		return digIn->Get();
-	else
-		return 0;
-}
-
-/*
- * Get the value from a digital input channel.
- * Retrieve the value of a single digital input channel from the FPGA.
- *
- * @param channel The particular channel this digital input is using
- */
-UINT32 GetDigitalInput(UINT32 channel)
-{
-	return GetDigitalInput(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Frees the resources for this DigitalInput.
- * Deletes the underlying object and frees the reservation for the associated digital
- * input port.
- *
- * @param slot The slot the digital input module is plugged into
- * @param channel The particular channel this digital input is using
- */
-void DeleteDigitalInput(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotOffset = moduleNumber - 1;
-		delete digitalInputs[slotOffset][channel - 1];
-		digitalInputs[slotOffset][channel - 1] = NULL;
-	}
-}
-
-/**
- * Frees the resources for this DigitalInput.
- * Deletes the underlying object and frees the reservation for the associated digital
- * input port.
- *
- * @param channel The particular channel this digital input is using
- */
-void DeleteDigitalInput(UINT32 channel)
-{
-	DeleteDigitalInput(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/*******************************************************************************
- * Alternative interface to digital input
-*******************************************************************************/
-DigitalInputObject CreateDigitalInput(UINT8 moduleNumber, UINT32 channel)
-{
-	return (DigitalInputObject) new DigitalInput(moduleNumber, channel); 
-}
-
-DigitalInputObject CreateDigitalInput(UINT32 channel)
-{
-	return (DigitalInputObject) new DigitalInput(channel); 
-}
-
-bool GetDigitalInput(DigitalInputObject o)
-{
-	return ((DigitalInput *) o)->Get();
-}
-
-void DeleteDigitalInput(DigitalInputObject o)
-{
-	delete (DigitalInput *) o;
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.h b/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.h
deleted file mode 100644
index 185b173..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalInput.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_DIGITAL_INPUT_H
-#define _C_DIGITIL_INPUT_H
-
-UINT32 GetDigitalInput(UINT8 moduleNumber, UINT32 channel);
-UINT32 GetDigitalInput(UINT32 channel);
-void DeleteDigitalInput(UINT8 moduleNumber, UINT32 channel);
-void DeleteDigitalInput(UINT32 channel);
-
-typedef void *DigitalInputObject;
-
-DigitalInputObject CreateDigitalInput(UINT8 moduleNumber, UINT32 channel);
-DigitalInputObject CreateDigitalInput(UINT32 channel);
-bool GetDigitalInput(DigitalInputObject o);
-void DeleteDigitalInput(DigitalInputObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.cpp
deleted file mode 100644
index acbec96..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "DigitalModule.h"
-#include "DigitalOutput.h"
-#include "CInterfaces/CDigitalOutput.h"
-
-static DigitalOutput* digitalOutputs[SensorBase::kDigitalModules][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Allocate the DigitalOuput.
- * Allocates the resources associated with this DigitalOutput including the channel/slot reservation
- * and the underlying DigitalOutput object.
- *
- * @param slot The slot this digital module is plugged into
- * @param channel The channel being used for this digital output
- */
-static DigitalOutput * AllocateDigitalOutput(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kDigitalModules; i++)
-			for (unsigned j = 0; j < SensorBase::kDigitalChannels; j++)
-				digitalOutputs[i][j] = NULL;
-		initialized = true;
-	}
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		unsigned slotOffset = moduleNumber - 1;
-		if (digitalOutputs[slotOffset][channel - 1] == NULL)
-		{
-			digitalOutputs[slotOffset][channel - 1] = new DigitalOutput(moduleNumber, channel);
-		}
-		return digitalOutputs[slotOffset][channel - 1];
-	}
-	return NULL;
-}
-
-/**
- * Set the value of a digital output.
- * Set the value of a digital output to either one (true) or zero (false).
- *
- * @param slot The slot this digital module is plugged into
- * @param channel The channel being used for this digital output
- * @param value The 0/1 value set to the port.
- */
-void SetDigitalOutput(UINT8 moduleNumber, UINT32 channel, UINT32 value)
-{
-	DigitalOutput *digOut = AllocateDigitalOutput(moduleNumber, channel);
-	if (digOut)
-		digOut->Set(value);
-}
-
-/**
- * Set the value of a digital output.
- * Set the value of a digital output to either one (true) or zero (false).
- *
- * @param channel The channel being used for this digital output
- * @param value The 0/1 value set to the port.
- */
-void SetDigitalOutput(UINT32 channel, UINT32 value)
-{
-	SetDigitalOutput(SensorBase::GetDefaultDigitalModule(), channel, value);
-}
-
-/**
- * Free the resources associated with this digital output.
- * The underlying DigitalOutput object and the resouces for the channel and slot are
- * freed so they can be reused.
- *
- * @param slot The slot this digital module is plugged into
- * @param channel The channel being used for this digital output
- */
-void DeleteDigitalOutput(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		unsigned slotOffset = moduleNumber - 1;
-		delete digitalOutputs[slotOffset][channel - 1];
-		digitalOutputs[slotOffset][channel - 1] = NULL;
-	}
-}
-
-/**
- * Free the resources associated with this digital output.
- * The underlying DigitalOutput object and the resouces for the channel and slot are
- * freed so they can be reused.
- *
- * @param channel The channel being used for this digital output
- */
-void DeleteDigitalOutput(UINT32 channel)
-{
-	DeleteDigitalOutput(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/*******************************************************************************
- * Alternative interface to digital output
-*******************************************************************************/
-DigitalOutputObject CreateDigitalOutput(UINT8 moduleNumber, UINT32 channel)
-{
-	return (DigitalOutputObject) new DigitalOutput(moduleNumber, channel); 
-}
-
-DigitalOutputObject CreateDigitalOutput(UINT32 channel)
-{
-	return (DigitalOutputObject) new DigitalOutput(channel); 
-}
-
-void SetDigitalOutput(DigitalOutputObject o, bool val)
-{
-	((DigitalOutput *) o)->Set(val);
-}
-
-void DeleteDigitalOutput(DigitalOutputObject o)
-{
-	delete (DigitalOutput *) o;
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.h b/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.h
deleted file mode 100644
index 22c5915..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDigitalOutput.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_DIGITAL_OUTPUT_H
-#define _C_DIGITIL_OUTPUT_H
-
-void SetDigitalOutput(UINT8 moduleNumber, UINT32 channel, UINT32 value);
-void SetDigitalOutput(UINT32 channel, UINT32 value);
-void DeleteDigitalOutput(UINT8 moduleNumber, UINT32 channel);
-void DeleteDigitalOutput(UINT32 channel);
-
-typedef void *DigitalOutputObject;
-
-DigitalOutputObject CreateDigitalOutput(UINT8 moduleNumber, UINT32 channel);
-DigitalOutputObject CreateDigitalOutput(UINT32 channel);
-void SetDigitalOutput(DigitalOutputObject o, bool val);
-void DeleteDigitalOutput(DigitalOutputObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.cpp
deleted file mode 100644
index 0cd0313..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "DriverStation.h"
-#include "CInterfaces/CDriverStation.h"
-
-static DriverStation *ds = NULL;
-
-/**
- * Get the value of the axis on a joystick.
- * This depends on the mapping of the joystick connected to the specified port.
- *
- * @param stick The joystick to read.
- * @param axis The analog axis value to read from the joystick.
- * @return The value of the axis on the joystick.
- */
-float GetStickAxis(UINT32 stick, UINT32 axis)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetStickAxis(stick, axis);
-}
-
-/**
- * The state of the buttons on the joystick.
- * 12 buttons (4 msb are unused) from the joystick.
- *
- * @param stick The joystick to read.
- * @return The state of the buttons on the joystick.
- */
-short GetStickButtons(UINT32 stick)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetStickButtons(stick);
-}
-
-/**
- * Get an analog voltage from the Driver Station.
- * The analog values are returned as UINT32 values for the Driver Station analog inputs.
- * These inputs are typically used for advanced operator interfaces consisting of potentiometers
- * or resistor networks representing values on a rotary switch.
- *
- * @param channel The analog input channel on the driver station to read from. Valid range is 1 - 4.
- * @return The analog voltage on the input.
- */
-float GetAnalogIn(UINT32 channel)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetAnalogIn(channel);
-}
-
-/**
- * Get values from the digital inputs on the Driver Station.
- * Return digital values from the Drivers Station. These values are typically used for buttons
- * and switches on advanced operator interfaces.
- * @param channel The digital input to get. Valid range is 1 - 8.
- */
-bool GetDigitalIn(UINT32 channel)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetDigitalIn(channel);
-}
-
-/**
- * Set a value for the digital outputs on the Driver Station.
- *
- * Control digital outputs on the Drivers Station. These values are typically used for
- * giving feedback on a custom operator station such as LEDs.
- *
- * @param channel The digital output to set. Valid range is 1 - 8.
- * @param value The state to set the digital output.
- */
-void SetDigitalOut(UINT32 channel, bool value)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	ds->SetDigitalOut(channel, value);
-}
-
-/**
- * Get a value that was set for the digital outputs on the Driver Station.
- * @param channel The digital ouput to monitor. Valid range is 1 through 8.
- * @return A digital value being output on the Drivers Station.
- */
-bool GetDigitalOut(UINT32 channel)
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetDigitalOut(channel);
-}
-
-/**
- * Returns the robot state
- * @returns true if the robot is disabled
- */
-bool IsDisabled()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->IsDisabled();
-}
-
-/**
- * Returns flag for field state
- * @returns true if the field is in Autonomous mode
- */
-bool IsAutonomous()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->IsAutonomous();
-}
-
-/**
- * Returns flag for field state
- * @returns true if the field is in Operator Control mode (teleop)
- */
-bool IsOperatorControl()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->IsOperatorControl();
-}
-
-/**
- * Return the DS packet number.
- * The packet number is the index of this set of data returned by the driver station.
- * Each time new data is received, the packet number (included with the sent data) is returned.
- */
-UINT32 GetPacketNumber()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetPacketNumber();
-}
-
-UINT32 GetAlliance()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetAlliance();
-}
-
-UINT32 GetLocation()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetLocation();
-}
-
-/**
- * Get the battery voltage on the robot
- * @returns the battery voltage in volts
- */
-float GetBatteryVoltage()
-{
-	if (ds == NULL) ds = DriverStation::GetInstance();
-	return ds->GetBatteryVoltage();
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.h b/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.h
deleted file mode 100644
index dbd828e..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CDriverStation.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_DRIVER_STATION_H
-#define _C_DRIVER_STATION_H
-
-float GetStickAxis(UINT32 stick, UINT32 axis);
-short GetStickButtons(UINT32 stick);
-
-float GetAnalogIn(UINT32 channel);
-bool GetDigitalIn(UINT32 channel);
-void SetDigitalOut(UINT32 channel, bool value);
-bool GetDigitalOut(UINT32 channel);
-
-bool IsDisabled();
-bool IsAutonomous();
-bool IsOperatorControl();
-
-UINT32 GetPacketNumber();
-UINT32 GetAlliance();
-UINT32 GetLocation();
-
-float GetBatteryVoltage();
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.cpp
deleted file mode 100644
index 7e9eb3b..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.cpp
+++ /dev/null
@@ -1,674 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Encoder.h"
-#include "SensorBase.h"
-#include "DigitalModule.h"
-#include "CInterfaces/CEncoder.h"
-
-static Encoder* encoders[SensorBase::kDigitalModules][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Allocate the resources associated with this encoder.
- * Allocate an Encoder object and cache the value in the associated table to find it
- * in the future.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-static Encoder *AllocateEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder;
-	if (!initialized)
-	{
-		for (unsigned slot = 0; slot < SensorBase::kDigitalModules; slot++)
-			for (unsigned channel = 0; channel < SensorBase::kDigitalChannels; channel++)
-				encoders[slot][channel] = NULL;
-		initialized = true;
-	}
-	// check if the channel and slots are valid values
-	if (!SensorBase::CheckDigitalModule(amoduleNumber)
-			|| !SensorBase::CheckDigitalChannel(aChannel)
-			|| !SensorBase::CheckDigitalModule(bmoduleNumber)
-			|| !SensorBase::CheckDigitalChannel(bChannel)) return NULL;
-	// check if nothing has been allocated to that pair of channels
-	if (encoders[amoduleNumber - 1][aChannel - 1] == NULL
-				&& encoders[bmoduleNumber - 1][bChannel - 1] == NULL)
-	{
-		// allocate an encoder and put it into both slots
-		encoder = new Encoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-		encoders[amoduleNumber - 1][aChannel - 1] = encoder;
-		encoders[bmoduleNumber - 1][bChannel - 1] = encoder;
-		return encoder;
-	}
-	// if there was the same encoder object allocated to both channels, return it
-	if ((encoder = encoders[amoduleNumber - 1][aChannel - 1]) ==
-				 encoders[bmoduleNumber - 1][bChannel - 1])
-		return encoder;
-	// Otherwise, one of the channels is allocated and the other isn't, so this is a
-	// resource allocation error.
-	return NULL;
-}
-
-/**
- * Allocate the resources associated with this encoder.
- * Allocate an Encoder object and cache the value in the associated table to find it
- * in the future.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-static Encoder *AllocateEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	return AllocateEncoder(SensorBase::GetDefaultDigitalModule(), aChannel,
-							SensorBase::GetDefaultDigitalModule(), bChannel);
-}
-
-/**
- * Start the encoder counting.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void StartEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-	{
-		encoder->Start();
-	}
-}
-
-/**
- * Start the encoder counting.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void StartEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-	{
-		encoder->Start();
-	}
-}
-
-/**
- * Gets the current count.
- * Returns the current count on the Encoder.
- * This method compensates for the decoding type.
- *
- * @deprecated Use GetEncoderDistance() in favor of this method.  This returns unscaled pulses and GetDistance() scales using value from SetEncoderDistancePerPulse().
- *
- * @return Current count from the Encoder.
- * 
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-INT32 GetEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->Get();
-	else
-		return 0;
-}
-
-/**
- * Gets the current count.
- * Returns the current count on the Encoder.
- * This method compensates for the decoding type.
- * 
- * @deprecated Use GetEncoderDistance() in favor of this method.  This returns unscaled pulses and GetDistance() scales using value from SetEncoderDistancePerPulse().
- *
- * @return Current count from the Encoder.
- * 
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-INT32 GetEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, amoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->Get();
-	else
-		return 0;
-}
-
-/**
- * Reset the count for the encoder object.
- * Resets the count to zero.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void ResetEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->Reset();
-}
-
-/**
- * Reset the count for the encoder object.
- * Resets the count to zero.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void ResetEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->Reset();
-}
-
-/**
- * Stops the counting for the encoder object.
- * Stops the counting for the Encoder. It still retains the count, but it doesn't change
- * with pulses until it is started again.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void StopEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->Stop();
-}
-
-/**
- * Stops the counting for the encoder object.
- * Stops the counting for the Encoder. It still retains the count, but it doesn't change
- * with pulses until it is started again.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void StopEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->Stop();
-}
-
-/**
- * Returns the period of the most recent pulse.
- * Returns the period of the most recent Encoder pulse in seconds.
- * This method compenstates for the decoding type.
- * 
- * @deprecated Use GetEncoderRate() in favor of this method.  This returns unscaled periods and GetEncoderRate() scales using value from SetEncoderDistancePerPulse().
- *
- * @return Period in seconds of the most recent pulse.
- * 
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-double GetEncoderPeriod(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->GetPeriod();
-	else
-		return 0.0;
-}
-
-/**
- * Returns the period of the most recent pulse.
- * Returns the period of the most recent Encoder pulse in seconds.
- * This method compenstates for the decoding type.
- * 
- * @deprecated Use GetEncoderRate() in favor of this method.  This returns unscaled periods and GetEncoderRate() scales using value from SetEncoderDistancePerPulse().
- *
- * @return Period in seconds of the most recent pulse.
- * 
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-double GetEncoderPeriod(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->GetPeriod();
-	else
-		return 0.0;
-}
-
-
-/**
- * Sets the maximum period for stopped detection.
- * Sets the value that represents the maximum period of the Encoder before it will assume
- * that the attached device is stopped. This timeout allows users to determine if the wheels or
- * other shaft has stopped rotating.
- * This method compensates for the decoding type.
- * 
- * @deprecated Use SetEncoderMinRate() in favor of this method.  This takes unscaled periods and SetMinEncoderRate() scales using value from SetEncoderDistancePerPulse().
- * 
- * @param maxPeriod The maximum time between rising and falling edges before the FPGA will
- * report the device stopped. This is expressed in seconds.
- * 
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetMaxEncoderPeriod(UINT32 aChannel, UINT32 bChannel, double maxPeriod)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->SetMaxPeriod(maxPeriod);
-}
-
-/**
- * Sets the maximum period for stopped detection.
- * Sets the value that represents the maximum period of the Encoder before it will assume
- * that the attached device is stopped. This timeout allows users to determine if the wheels or
- * other shaft has stopped rotating.
- * This method compensates for the decoding type.
- * 
- * @deprecated Use SetEncoderMinRate() in favor of this method.  This takes unscaled periods and SetMinEncoderRate() scales using value from SetEncoderDistancePerPulse().
- * 
- * @param maxPeriod The maximum time between rising and falling edges before the FPGA will
- * report the device stopped. This is expressed in seconds.
- * 
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetMaxEncoderPeriod(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double maxPeriod)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->SetMaxPeriod(maxPeriod);
-}
-
-/**
- * Determine if the encoder is stopped.
- * Using the MaxPeriod value, a boolean is returned that is true if the encoder is considered
- * stopped and false if it is still moving. A stopped encoder is one where the most recent pulse
- * width exceeds the MaxPeriod.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @return True if the encoder is considered stopped.
- */
-bool GetEncoderStopped(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->GetStopped();
-	else
-		return false;
-}
-
-/**
- * Determine if the encoder is stopped.
- * Using the MaxPeriod value, a boolean is returned that is true if the encoder is considered
- * stopped and false if it is still moving. A stopped encoder is one where the most recent pulse
- * width exceeds the MaxPeriod.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @return True if the encoder is considered stopped.
- */
-bool GetEncoderStopped(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->GetStopped();
-	else
-		return false;
-}
-
-/**
- * The last direction the encoder value changed.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @return The last direction the encoder value changed.
- */
-bool GetEncoderDirection(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->GetDirection();
-	else
-		return false;
-}
-
-/**
- * The last direction the encoder value changed.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @return The last direction the encoder value changed.
- */
-bool GetEncoderDirection(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->GetDirection();
-	else
-		return false;
-}
-
-/**
- * Get the distance the robot has driven since the last reset.
- * 
- * @return The distance driven since the last reset as scaled by the value from SetEncoderDistancePerPulse().
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-double GetEncoderDistance(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->GetDistance();
-	else
-		return 0.0;
-}
-
-/**
- * Get the distance the robot has driven since the last reset.
- * 
- * @return The distance driven since the last reset as scaled by the value from SetEncoderDistancePerPulse().
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
-  */
-double GetEncoderDistance(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->GetDistance();
-	else
-		return 0.0;
-}
-
-/**
- * Get the current rate of the encoder.
- * Units are distance per second as scaled by the value from SetEncoderDistancePerPulse().
- * 
- * @return The current rate of the encoder.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-double GetEncoderRate(UINT32 aChannel, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		return encoder->GetRate();
-	else
-		return 0.0;
-}
-
-/**
- * Get the current rate of the encoder.
- * Units are distance per second as scaled by the value from SetEncoderDistancePerPulse().
- * 
- * @return The current rate of the encoder.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
-  */
-double GetEncoderRate(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		return encoder->GetRate();
-	else
-		return 0.0;
-}
-
-/**
- * Set the minimum rate of the device before the hardware reports it stopped.
- * 
- * @param minRate The minimum rate.  The units are in distance per second as scaled by the value from SetEncoderDistancePerPulse().
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetMinEncoderRate(UINT32 aChannel, UINT32 bChannel, double minRate)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->SetMinRate(minRate);
-}
-
-/**
- * Set the minimum rate of the device before the hardware reports it stopped.
- * 
- * @param minRate The minimum rate.  The units are in distance per second as scaled by the value from SetEncoderDistancePerPulse().
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetMinEncoderRate(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double minRate)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->SetMinRate(minRate);
-}
-
-/**
- * Set the distance per pulse for this encoder.
- * This sets the multiplier used to determine the distance driven based on the count value
- * from the encoder.
- * Do not include the decoding type in this scale.  The library already compensates for the decoding type.
- * Set this value based on the encoder's rated Pulses per Revolution and
- * factor in gearing reductions following the encoder shaft.
- * This distance can be in any units you like, linear or angular.
- * 
- * @param distancePerPulse The scale factor that will be used to convert pulses to useful units.
- * 
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetEncoderDistancePerPulse(UINT32 aChannel, UINT32 bChannel, double distancePerPulse)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->SetDistancePerPulse(distancePerPulse);
-}
-
-/**
- * Set the distance per pulse for this encoder.
- * This sets the multiplier used to determine the distance driven based on the count value
- * from the encoder.
- * Do not include the decoding type in this scale.  The library already compensates for the decoding type.
- * Set this value based on the encoder's rated Pulses per Revolution and
- * factor in gearing reductions following the encoder shaft.
- * This distance can be in any units you like, linear or angular.
- * 
- * @param distancePerPulse The scale factor that will be used to convert pulses to useful units.
- * 
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void SetEncoderDistancePerPulse(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double distancePerPulse)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->SetDistancePerPulse(distancePerPulse);
-}
-
-/**
- * Set the direction sensing for this encoder.
- * This sets the direction sensing on the encoder so that it could count in the correct
- * software direction regardless of the mounting.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @param reverseDirection true if the encoder direction should be reversed
- */
-void SetEncoderReverseDirection(UINT32 aChannel, UINT32 bChannel, bool reverseDirection)
-{
-	Encoder *encoder = AllocateEncoder(aChannel, bChannel);
-	if (encoder != NULL)
-		encoder->SetReverseDirection(reverseDirection);
-}
-
-/**
- * Set the direction sensing for this encoder.
- * This sets the direction sensing on the encoder so that it couldl count in the correct
- * software direction regardless of the mounting.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- * @param reverseDirection true if the encoder direction should be reversed
- */
-void SetEncoderReverseDirection(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, bool reverseDirection)
-{
-	Encoder *encoder = AllocateEncoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-	if (encoder != NULL)
-		encoder->SetReverseDirection(reverseDirection);
-}
-
-/**
- * Free the resources associated with this encoder.
- * Delete the Encoder object and the entries from the cache for this encoder.
- *
- * @param aSlot The digital module slot for the A Channel on the encoder
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bSlot The digital module slot for the B Channel on the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void DeleteEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	if (SensorBase::CheckDigitalModule(amoduleNumber) && SensorBase::CheckDigitalChannel(aChannel) &&
-	        SensorBase::CheckDigitalModule(bmoduleNumber) && SensorBase::CheckDigitalChannel(bChannel))
-	{
-		delete encoders[amoduleNumber - 1][aChannel - 1];
-        encoders[amoduleNumber - 1][aChannel - 1] = NULL;
-        encoders[bmoduleNumber - 1][bChannel - 1] = NULL;
-	}
-}
-
-/**
- * Free the resources associated with this encoder.
- * Delete the Encoder object and the entries from the cache for this encoder.
- *
- * @param aChannel The channel on the digital module for the A Channel of the encoder
- * @param bChannel The channel on the digital module for the B Channel of the encoder
- */
-void DeleteEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	DeleteEncoder(SensorBase::GetDefaultDigitalModule(), aChannel, SensorBase::GetDefaultDigitalModule(), bChannel);
-}
-
-/**
- * Alternate C Interface
- */
-
-EncoderObject CreateEncoder(UINT32 aChannel, UINT32 bChannel)
-{
-	return (EncoderObject) new Encoder(aChannel, bChannel);
-}
-
-EncoderObject CreateEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel)
-{
-	return (EncoderObject) new Encoder(amoduleNumber, aChannel, bmoduleNumber, bChannel);
-}
-
-void StartEncoder(EncoderObject o)
-{
-	((Encoder *)o )->Start();
-}
-
-INT32 GetEncoder(EncoderObject o)
-{
-	return ((Encoder *)o )->Get();
-}
-
-void ResetEncoder(EncoderObject o)
-{
-	((Encoder *)o )->Reset();
-}
-
-void StopEncoder(EncoderObject o)
-{
-	((Encoder *)o )->Stop();
-}
-
-double GetEncoderPeriod(EncoderObject o)
-{
-	return ((Encoder *)o )->GetPeriod();
-}
-
-void SetMaxEncoderPeriod(EncoderObject o, double maxPeriod)
-{
-	((Encoder *)o )->SetMaxPeriod(maxPeriod);
-}
-
-bool GetEncoderStopped(EncoderObject o)
-{
-	return ((Encoder *)o )->GetStopped();
-}
-
-bool GetEncoderDirection(EncoderObject o)
-{
-	return ((Encoder *)o )->GetDirection();
-}
-
-double GetEncoderDistance(EncoderObject o)
-{
-	return ((Encoder *)o )->GetDistance();
-}
-
-double GetEncoderRate(EncoderObject o)
-{
-	return ((Encoder *)o )->GetRate();
-}
-
-void SetMinEncoderRate(EncoderObject o, double minRate)
-{
-	((Encoder *)o )->SetMinRate(minRate);
-}
-
-void SetEncoderDistancePerPulse(EncoderObject o, double distancePerPulse)
-{
-	((Encoder *)o )->SetDistancePerPulse(distancePerPulse);
-}
-
-void SetEncoderReverseDirection(EncoderObject o, bool reversedDirection)
-{
-	((Encoder *)o )->SetReverseDirection(reversedDirection);
-}
-
-void DeleteEncoder(EncoderObject o)
-{
-	delete (Encoder *)o;
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.h b/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.h
deleted file mode 100644
index 040ea7e..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CEncoder.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_ENCODER_H
-#define _C_ENCODER_H
-
-void StartEncoder(UINT32 aChannel, UINT32 bChannel);
-INT32 GetEncoder(UINT32 aChannel, UINT32 bChannel);
-void ResetEncoder(UINT32 aChannel, UINT32 bChannel);
-void StopEncoder(UINT32 aChannel, UINT32 bChannel);
-double GetEncoderPeriod(UINT32 aChannel, UINT32 bChannel);
-void SetMaxEncoderPeriod(UINT32 aChannel, UINT32 bChannel, double maxPeriod);
-bool GetEncoderStopped(UINT32 aChannel, UINT32 bChannel);
-bool GetEncoderDirection(UINT32 aChannel, UINT32 bChannel);
-double GetEncoderDistance(UINT32 aChannel, UINT32 bChannel);
-double GetEncoderRate(UINT32 aChannel, UINT32 bChannel);
-void SetMinEncoderRate(UINT32 aChannel, UINT32 bChannel, double minRate);
-void SetEncoderDistancePerPulse(UINT32 aChannel, UINT32 bChannel, double distancePerPulse);
-void SetEncoderReverseDirection(UINT32 aChannel, UINT32 bChannel, bool reversedDirection);
-void StartEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-INT32 GetEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-void ResetEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-void StopEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-double GetEncoderPeriod(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-void SetMaxEncoderPeriod(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double maxPeriod);
-bool GetEncoderStopped(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-bool GetEncoderDirection(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-double GetEncoderDistance(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-double GetEncoderRate(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-void SetMinEncoderRate(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double minRate);
-void SetEncoderDistancePerPulse(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, double distancePerPulse);
-void SetEncoderReverseDirection(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel, bool reversedDirection);
-void DeleteEncoder(UINT32 aChannel, UINT32 bChannel);
-void DeleteEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-
-typedef void *EncoderObject;
-
-EncoderObject CreateEncoder(UINT32 aChannel, UINT32 bChannel);
-EncoderObject CreateEncoder(UINT8 amoduleNumber, UINT32 aChannel, UINT8 bmoduleNumber, UINT32 bChannel);
-void StartEncoder(EncoderObject o);
-INT32 GetEncoder(EncoderObject o);
-void ResetEncoder(EncoderObject o);
-void StopEncoder(EncoderObject o);
-double GetEncoderPeriod(EncoderObject o);
-void SetMaxEncoderPeriod(EncoderObject o, double maxPeriod);
-bool GetEncoderStopped(EncoderObject o);
-bool GetEncoderDirection(EncoderObject o);
-double GetEncoderDistance(EncoderObject o);
-double GetEncoderRate(EncoderObject o);
-void SetMinEncoderRate(EncoderObject o, double minRate);
-void SetEncoderDistancePerPulse(EncoderObject o, double distancePerPulse);
-void SetEncoderReverseDirection(EncoderObject o, bool reversedDirection);
-void DeleteEncoder(EncoderObject o);
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CError.h b/aos/externals/WPILib/WPILib/CInterfaces/CError.h
deleted file mode 100644
index d98d273..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CError.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_ERROR_H
-#define C_ERROR_H
-
-#include "ErrorBase.h"
-#include <VxWorks.h>
-
-class CError : public ErrorBase
-{
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.cpp
deleted file mode 100644
index 5fb30ff..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#include "CInterfaces/CGearTooth.h"
-#include "DigitalModule.h"
-
-static GearTooth* gearToothSensors[SensorBase::kChassisSlots][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Get a pointer to the gear tooth sensor given a slot and a channel.
- * This is an internal routine to allocate (if necessary) a gear tooth
- * object from inputs.
- * @param slot The slot the GearTooth sensor is plugged into.
- * @param channel The channel the GearTooth sensor is plugged into.
- */
-static GearTooth *GTptr(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		initialized = true;
-		for (unsigned i = 0; i < SensorBase::kChassisSlots; i++)
-			for (unsigned j = 0; j < SensorBase::kDigitalChannels; j++)
-				gearToothSensors[i][j] = NULL;
-	}
-	GearTooth *gt = NULL;
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotIndex = moduleNumber - 1;
-		gt = gearToothSensors[slotIndex][channel - 1];
-		if (gt == NULL)
-		{
-			gt = new GearTooth(moduleNumber, channel);
-			gearToothSensors[slotIndex][channel - 1] = gt;
-		}
-	}
-	return gt;
-}
-
-/**
- * Initialize the gear tooth sensor.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- * @param directionSensitive True if this geartooth sensor can differentiate between
- * foward and backward movement.
- */
-void InitGearTooth(UINT8 moduleNumber, UINT32 channel, bool directionSensitive)
-{
-	GearTooth *gt = GTptr(moduleNumber, channel);
-	if (gt) gt->EnableDirectionSensing(directionSensitive);
-}
-
-/**
- * Initialize the gear tooth sensor.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- * @param directionSensitive True if this geartooth sensor can differentiate between
- * foward and backward movement.
- */
-void InitGearTooth(UINT32 channel, bool directionSensitive)
-{
-	InitGearTooth(SensorBase::GetDefaultDigitalModule(), channel, directionSensitive);
-}
-
-/**
- * Start the GearTooth sensor counting.
- * Start the counting for the geartooth sensor. Before this, the sensor is allocated
- * but not counting pulses.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void StartGearTooth(UINT8 moduleNumber, UINT32 channel)
-{
-	GearTooth *gt = GTptr(moduleNumber, channel);
-	if (gt) gt->Start();
-}
-
-/**
- * Start the GearTooth sensor counting.
- * Start the counting for the geartooth sensor. Before this, the sensor is allocated
- * but not counting pulses.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void StartGearTooth(UINT32 channel)
-{
-	StartGearTooth(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Stop the gear tooth sensor from counting.
- * The counting is disabled on the underlying Counter object.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void StopGearTooth(UINT8 moduleNumber, UINT32 channel)
-{
-	GearTooth *gt = GTptr(moduleNumber, channel);
-	if (gt) gt->Stop();
-}
-
-/**
- * Stop the gear tooth sensor from counting.
- * The counting is disabled on the underlying Counter object.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void StopGearTooth(UINT32 channel)
-{
-	StopGearTooth(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Get value from GearTooth sensor.
- * Get the current count from the sensor.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- */
-INT32 GetGearTooth(UINT8 moduleNumber, UINT32 channel)
-{
-	GearTooth *gt = GTptr(moduleNumber, channel);
-	if (gt) return gt->Get();
-	return 0;
-}
-
-/**
- * Get value from GearTooth sensor.
- * Get the current count from the sensor.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- */
-INT32 GetGearTooth(UINT32 channel)
-{
-	return GetGearTooth(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Reset the GearTooth sensor.
- * Reset the count to zero for the gear tooth sensor.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void ResetGearTooth(UINT8 moduleNumber, UINT32 channel)
-{
-	GearTooth *gt = GTptr(moduleNumber, channel);
-	if (gt) gt->Reset();
-}
-
-/**
- * Reset the GearTooth sensor.
- * Reset the count to zero for the gear tooth sensor.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void ResetGearTooth(UINT32 channel)
-{
-	ResetGearTooth(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Free the resources associated with this gear tooth sensor.
- * Delete the underlying object and free the resources for this geartooth
- * sensor.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void DeleteGearTooth(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckDigitalModule(moduleNumber) && SensorBase::CheckDigitalChannel(channel))
-	{
-		UINT32 slotIndex = moduleNumber - 1;
-		delete gearToothSensors[slotIndex][channel - 1];
-		gearToothSensors[slotIndex][channel - 1] = NULL;
-	}
-}
-
-/**
- * Free the resources associated with this gear tooth sensor.
- * Delete the underlying object and free the resources for this geartooth
- * sensor.
- *
- * @param channel The digital I/O channel the sensor is plugged into
- */
-void DeleteGearTooth(UINT32 channel)
-{
-	DeleteGearTooth(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-
-/**
- * Alternate C Interface
- */
-
-GearToothObject CreateGearTooth(UINT32 channel, bool directionSensitive)
-{
-	return (GearToothObject) new GearTooth(channel, directionSensitive);
-}
-
-GearToothObject CreateGearTooth(UINT8 moduleNumber, UINT32 channel, bool directionSensitive)
-{
-	return (GearToothObject) new GearTooth(moduleNumber, channel, directionSensitive);
-}
-
-void StartGearTooth(GearToothObject o)
-{
-	((GearTooth *)o )->Start();
-}
-
-void StopGearTooth(GearToothObject o)
-{
-	((GearTooth *)o )->Stop();
-}
-
-INT32 GetGearTooth(GearToothObject o)
-{
-	return ((GearTooth *)o )->Get();
-}
-
-void ResetGearTooth(GearToothObject o)
-{
-	((GearTooth *)o )->Reset();
-}
-
-void DeleteGearTooth(GearToothObject o)
-{
-	delete (GearTooth *)o;
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.h b/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.h
deleted file mode 100644
index 998bbf4..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CGearTooth.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#ifndef C_GEARTOOTH_H
-#define C_GEARTOOTH_H
-
-#include "GearTooth.h"
-
-// TODO: Need to add support for digital sensors
-
-void InitGearTooth(UINT32 channel, bool directionSensitive);
-void InitGearTooth(UINT8 moduleNumber, UINT32 channel, bool directionSensitive);
-void StartGearTooth(UINT32 channel);
-void StartGearTooth(UINT8 moduleNumber, UINT32 channel);
-void StopGearTooth(UINT32 channel);
-void StopGearTooth(UINT8 moduleNumber, UINT32 channel);
-INT32 GetGearTooth(UINT32 channel);
-INT32 GetGearTooth(UINT8 moduleNumber, UINT32 channel);
-void ResetGearTooth(UINT32 channel);
-void ResetGearTooth(UINT8 moduleNumber, UINT32 channel);
-void DeleteGearTooth(UINT32 channel);
-void DeleteGearTooth(UINT8 moduleNumber, UINT32 channel);
-
-typedef void *GearToothObject;
-
-GearToothObject CreateGearTooth(UINT32 channel, bool directionSensitive = true);
-GearToothObject CreateGearTooth(UINT8 moduleNumber, UINT32 channel, bool directionSensitive = true);
-void StartGearTooth(GearToothObject o);
-void StopGearTooth(GearToothObject o);
-INT32 GetGearTooth(GearToothObject o);
-void ResetGearTooth(GearToothObject o);
-void DeleteGearTooth(GearToothObject o);
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CGyro.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CGyro.cpp
deleted file mode 100644
index 485624c..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CGyro.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/CGyro.h"
-#include "Gyro.h"
-
-static Gyro* gyros[2] = {NULL, NULL};
-
-/**
- * Allocate resoures for a Gyro.
- *
- * This is an internal routine and not used outside of this module.
- *
- * @param slot The analog module that the gyro is connected to. Must be slot 1 on the current
- * hardware implementation.
- * @param channel The analog channel the gyro is connected to. Must be channel 1 or 2 only (the only
- * ones with the attached accumulator)
- */
-static Gyro *AllocateGyro(UINT32 slot, UINT32 channel)
-{
-	Gyro *gyro = NULL;
-	if (slot == 1 && (channel == 1 || channel == 2))
-	{
-		if ((gyro = gyros[channel - 1]) == NULL)
-		{
-			gyro = new Gyro(channel);
-			gyros[channel - 1] = gyro;
-		}
-	}
-	return gyro;
-}
-
-/**
- * Initialize the gyro.
- * Calibrate the gyro by running for a number of samples and computing the center value for this
- * part. Then use the center value as the Accumulator center value for subsequent measurements.
- * It's important to make sure that the robot is not moving while the centering calculations are
- * in progress, this is typically done when the robot is first turned on while it's sitting at
- * rest before the competition starts.
- *
- * @param slot The slot the analog module is connected to
- * @param channel The analog channel the gyro is plugged into
- */
-void InitGyro(UINT32 slot, UINT32 channel)
-{
-	AllocateGyro(slot, channel);
-}
-
-/**
- * Initialize the gyro.
- * Calibrate the gyro by running for a number of samples and computing the center value for this
- * part. Then use the center value as the Accumulator center value for subsequent measurements.
- * It's important to make sure that the robot is not moving while the centering calculations are
- * in progress, this is typically done when the robot is first turned on while it's sitting at
- * rest before the competition starts.
- *
- * @param channel The analog channel the gyro is plugged into
- */
-void InitGyro(UINT32 channel)
-{
-	InitGyro(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Return the actual angle in degrees that the robot is currently facing.
- *
- * The angle is based on the current accumulator value corrected by the oversampling rate, the
- * gyro type and the A/D calibration values.
- * The angle is continuous, that is can go beyond 360 degrees. This make algorithms that wouldn't
- * want to see a discontinuity in the gyro output as it sweeps past 0 on the second time around.
- *
- * @param slot The slot the analog module is connected to
- * @param channel The analog channel the gyro is plugged into
- * @return the current heading of the robot in degrees. This heading is based on integration
- * of the returned rate from the gyro.
- */
-float GetGyroAngle(UINT32 slot, UINT32 channel)
-{
-	Gyro *gyro = AllocateGyro(slot, channel);
-	if (gyro) return gyro->GetAngle();
-	return 0.0;
-}
-
-/**
- * Return the actual angle in degrees that the robot is currently facing.
- *
- * The angle is based on the current accumulator value corrected by the oversampling rate, the
- * gyro type and the A/D calibration values.
- * The angle is continuous, that is can go beyond 360 degrees. This make algorithms that wouldn't
- * want to see a discontinuity in the gyro output as it sweeps past 0 on the second time around.
- *
- * @param channel The analog channel the gyro is plugged into
- * @return the current heading of the robot in degrees. This heading is based on integration
- * of the returned rate from the gyro.
- */
-float GetGyroAngle(UINT32 channel)
-{
-	return GetGyroAngle(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Reset the gyro.
- * Resets the gyro to a heading of zero. This can be used if there is significant
- * drift in the gyro and it needs to be recalibrated after it has been running.
-
- * @param slot The slot the analog module is connected to
- * @param channel The analog channel the gyro is plugged into
- */
-void ResetGyro(UINT32 slot, UINT32 channel)
-{
-	Gyro *gyro = AllocateGyro(slot, channel);
-	if (gyro) gyro->Reset();
-}
-
-/**
- * Reset the gyro.
- * Resets the gyro to a heading of zero. This can be used if there is significant
- * drift in the gyro and it needs to be recalibrated after it has been running.
-
- * @param channel The analog channel the gyro is plugged into
- */
-void ResetGyro(UINT32 channel)
-{
-	ResetGyro(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Set the gyro type based on the sensitivity.
- * This takes the number of volts/degree/second sensitivity of the gyro and uses it in subsequent
- * calculations to allow the code to work with multiple gyros.
- *
- * @param slot The slot the analog module is connected to
- * @param channel The analog channel the gyro is plugged into
- * @param voltsPerDegreePerSecond The type of gyro specified as the voltage that represents one degree/second.
- */
-void SetGyroSensitivity(UINT32 slot, UINT32 channel, float voltsPerDegreePerSecond)
-{
-	Gyro *gyro = AllocateGyro(slot, channel);
-	if (gyro) gyro->SetSensitivity(voltsPerDegreePerSecond);
-}
-
-/**
- * Set the gyro type based on the sensitivity.
- * This takes the number of volts/degree/second sensitivity of the gyro and uses it in subsequent
- * calculations to allow the code to work with multiple gyros.
- *
- * @param channel The analog channel the gyro is plugged into
- * @param voltsPerDegreePerSecond The type of gyro specified as the voltage that represents one degree/second.
- */
-void SetGyroSensitivity(UINT32 channel, float voltsPerDegreePerSecond)
-{
-	SetGyroSensitivity(SensorBase::GetDefaultAnalogModule(), channel, voltsPerDegreePerSecond);
-}
-
-/**
- * Free the resources associated with this Gyro
- * Free the Gyro object and the reservation for this slot/channel.
- *
- * @param slot The slot the analog module is connected to
- * @param channel The analog channel the gyro is plugged into
- */
-void DeleteGyro(UINT32 slot, UINT32 channel)
-{
-	if (slot == 1 && (channel == 1 || channel == 2))
-	{
-		delete gyros[channel - 1];
-		gyros[channel - 1] = NULL;
-	}
-}
-
-void DeleteGyro(UINT32 channel)
-{
-	DeleteGyro(SensorBase::GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Alternate C interface to Gyro
- */
-
-GyroObject CreateGyro(UINT32 slot, UINT32 channel)
-{
-	return (GyroObject) new Gyro(slot, channel);
-}
-
-GyroObject CreateGyro(UINT32 channel)
-{
-	return (GyroObject) new Gyro(channel);
-}
-
-float GetGyroAngle(GyroObject o)
-{
-	return ((Gyro *) o)->GetAngle();
-}
-
-void ResetGyro(GyroObject o)
-{
-	((Gyro *) o)->Reset();
-}
-
-void SetGyroSensitivity(GyroObject o, float voltsPerDegreePerSecond)
-{
-	((Gyro *) o)->SetSensitivity(voltsPerDegreePerSecond);
-}
-
-void Delete(GyroObject o)
-{
-	delete ((Gyro *) o);
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CGyro.h b/aos/externals/WPILib/WPILib/CInterfaces/CGyro.h
deleted file mode 100644
index 1c27533..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CGyro.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_GYRO_H
-#define C_GYRO_H
-
-#include <VxWorks.h>
-
-typedef void *GyroObject;
-
-GyroObject CreateGyro(UINT32 slot, UINT32 channel);
-GyroObject CreateGyro(UINT32 channel);
-float GetGyroAngle(GyroObject o);
-void ResetGyro(GyroObject o);
-void SetGyroSensitivity(GyroObject o, float voltsPerDegreePerSecond);
-void Delete(GyroObject o);
-
-void InitGyro(UINT32 slot, UINT32 channel);
-void InitGyro(UINT32 channel);
-float GetGyroAngle(UINT32 channel);
-float GetGyroAngle(UINT32 slot, UINT32 channel);
-void ResetGyro(UINT32 channel);
-void ResetGyro(UINT32 slot, UINT32 channel);
-void SetGyroSensitivity(UINT32 slot, UINT32 channel, float voltsPerDegreePerSecond);
-void SetGyroSensitivity(UINT32 channel, float voltsPerDegreePerSecond);
-void DeleteGyro(UINT32 slot, UINT32 channel);
-void DeleteGyro(UINT32 channel);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.cpp
deleted file mode 100644
index 88507e5..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Jaguar.h"
-#include "CInterfaces/CJaguar.h"
-#include "CInterfaces/CWrappers.h"
-#include "CInterfaces/CPWM.h"
-
-/**
- * Create a Jaguar speed controller object.
- * Allocate the object itself. This is a callback from the CPWM.cpp code to create the
- * actual specific PWM object type.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel connected to this speed controller
- */
-static SensorBase *CreateJaguarStatic(UINT32 slot, UINT32 channel)
-{
-	return new Jaguar(slot, channel);
-}
-
-/**
- * Set the PWM value.
- *
- * The PWM value is set using a range of -1.0 to 1.0, appropriately
- * scaling the value for the FPGA.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel connected to this speed controller
- * @param speed The speed value between -1.0 and 1.0 to set.
- */
-void SetJaguarSpeed(UINT32 slot, UINT32 channel, float speed)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(slot, channel, CreateJaguarStatic);
-	if (jaguar)	jaguar->Set(speed);
-}
-
-/**
- * Set the PWM value.
- *
- * The PWM value is set using a range of -1.0 to 1.0, appropriately
- * scaling the value for the FPGA.
- *
- * @param channel The PWM channel connected to this speed controller
- * @param speed The speed value between -1.0 and 1.0 to set.
- */
-void SetJaguarSpeed(UINT32 channel, float speed)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(SensorBase::GetDefaultDigitalModule(), channel, CreateJaguarStatic);
-	if (jaguar) jaguar->Set(speed);
-}
-
-/**
- * Set the PWM value directly to the hardware.
- *
- * Write a raw value to a PWM channel.
- *
- * @param channel The PWM channel connected to this speed controller
- * @param value Raw PWM value.  Range 0 - 255.
- */
-void SetJaguarRaw(UINT32 channel, UINT8 value)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(SensorBase::GetDefaultDigitalModule(), channel, CreateJaguarStatic);
-	if (jaguar) jaguar->SetRaw(value);
-}
-
-/**
- * Get the PWM value directly from the hardware.
- *
- * Read a raw value from a PWM channel.
- *
- * @param channel The PWM channel connected to this speed controller
- * @return Raw PWM control value.  Range: 0 - 255.
- */
-UINT8 GetJaguarRaw(UINT32 channel)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(SensorBase::GetDefaultDigitalModule(), channel, CreateJaguarStatic);
-	if (jaguar)
-		return jaguar->GetRaw();
-	else
-		return 0;
-}
-
-/**
- * Set the PWM value directly to the hardware.
- *
- * Write a raw value to a PWM channel.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel connected to this speed controller
- * @param value Raw PWM value.  Range 0 - 255.
- */
-void SetJaguarRaw(UINT32 slot, UINT32 channel, UINT8 value)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(slot, channel, CreateJaguarStatic);
-	if (jaguar) jaguar->SetRaw(value);
-}
-
-/**
- * Get the PWM value directly from the hardware.
- *
- * Read a raw value from a PWM channel.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel connected to this speed controller
- * @return Raw PWM control value.  Range: 0 - 255.
- */
-UINT8 GetJaguarRaw(UINT32 slot, UINT32 channel)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(slot, channel, CreateJaguarStatic);
-	if (jaguar)
-		return jaguar->GetRaw();
-	else
-		return 0;
-}
-
-/**
- * Free the underlying Jaguar object.
- * Free the underlying object and free the associated resources.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel connected to this speed controller
- */
-void DeleteJaguar(UINT32 slot, UINT32 channel)
-{
-	Jaguar *jaguar = (Jaguar *) AllocatePWM(slot, channel, CreateJaguarStatic);
-	DeletePWM(slot, channel);
-	delete jaguar;
-}
-
-/**
- * Free the underlying Jaguar object.
- * Free the underlying object and free the associated resources.
- *
- * @param channel The PWM channel connected to this speed controller
- */
-void DeleteJaguar(UINT32 channel)
-{
-	DeleteJaguar(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-
-/*
- * Alternate interface to Jaguar
- */
-
-JaguarObject CreateJaguar(UINT32 module, UINT32 channel)
-{
-	return (JaguarObject) new Jaguar(module, channel); 
-}
-
-JaguarObject CreateJaguar(UINT32 channel)
-{
-	return (JaguarObject) new Jaguar(channel);
-}
-
-void SetJaguarRaw(JaguarObject o, UINT8 value)
-{
-	((Jaguar *) o)->SetRaw(value);
-}
-
-void SetJaguarSpeed(JaguarObject o, float speed)
-{
-	((Jaguar *) o)->Set(speed);
-}
-
-UINT8 GetJaguarRaw(JaguarObject o)
-{
-	return ((Jaguar *)o)->GetRaw();
-}
-
-void DeleteJaguar(JaguarObject o)
-{
-	delete (Jaguar *) o;
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.h b/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.h
deleted file mode 100644
index eca456c..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CJaguar.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_JAGUAR_H
-#define C_JAGUAR_H
-
-void SetJaguarSpeed(UINT32 module, UINT32 channel, float speed);
-void SetJaguarSpeed(UINT32 channel, float speed);
-void SetJaguarRaw(UINT32 channel, UINT8 value);
-UINT8 GetJaguarRaw(UINT32 channel);
-void SetJaguarRaw(UINT32 module, UINT32 channel, UINT8 value);
-UINT8 GetJaguarRaw(UINT32 module, UINT32 channel);
-void DeleteJaguar(UINT32 module, UINT32 channel);
-void DeleteJaguar(UINT32 channel);
-
-typedef void *JaguarObject;
-
-JaguarObject CreateJaguar(UINT32 module, UINT32 channel);
-JaguarObject CreateJaguar(UINT32 channel);
-void SetJaguarRaw(JaguarObject o, UINT8 value);
-void SetJaguarSpeed(JaguarObject o, float speed);
-UINT8 GetJaguarRaw(JaguarObject o);
-void DeleteJaguar(JaguarObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.cpp
deleted file mode 100644
index b388640..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Joystick.h"
-#include "CInterfaces/CJoystick.h"
-
-static Joystick *joysticks[4];
-static bool initialized = false;
-
-/**
- * Get the joystick associated with a port.
- * An internal function that will return the joystick object associated with a given
- * joystick port number. On the first call, all four joysticks are preallocated.
- *
- * @param port The joystick (USB) port number
- */
-static Joystick *getJoystick(UINT32 port)
-{
-	if (!initialized)
-	{
-		for (int i = 0; i < 4; i++)
-		{
-			joysticks[i] = new Joystick(i+1);
-		}
-		initialized = true;
-	}
-	if (port < 1 || port > 4) return NULL;
-	return joysticks[port - 1];
-}
-
-
-/**
- * Get the channel currently associated with the specified axis.
- *
- * @param port The USB port for this joystick.
- * @param axis The axis to look up the channel for.
- * @return The channel fr the axis.
- */
-UINT32 GetAxisChannel(UINT32 port, AxisType axis)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetAxisChannel((Joystick::AxisType) axis);
-}
-
-/**
- * Set the channel associated with a specified axis.
- *
- * @param port The USB port for this joystick.
- * @param axis The axis to set the channel for.
- * @param channel The channel to set the axis to.
- */
-void SetAxisChannel(UINT32 port, AxisType axis, UINT32 channel)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return;
-	stick->SetAxisChannel((Joystick::AxisType) axis, channel);
-}
-
-/**
- * Get the X value of the joystick.
- * This depends on the mapping of the joystick connected to the current port.
- *
- * @param port The USB port for this joystick.
- */
-float GetX(UINT32 port, JoystickHand hand)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetX((Joystick::JoystickHand) hand);
-}
-
-/**
- * Get the Y value of the joystick.
- * This depends on the mapping of the joystick connected to the current port.
- *
- * @param port The USB port for this joystick.
- */
-float GetY(UINT32 port, JoystickHand hand)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetY((Joystick::JoystickHand) hand);
-}
-
-/**
- * Get the Z value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- *
- * @param port The USB port for this joystick.
- */
-float GetZ(UINT32 port)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetZ();
-}
-
-/**
- * Get the twist value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- *
- * @param port The USB port for this joystick.
- */
-float GetTwist(UINT32 port)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetTwist();
-}
-
-/**
- * Get the throttle value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- *
- * @param port The USB port for this joystick.
- */
-float GetThrottle(UINT32 port)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetThrottle();
-}
-
-/**
- * For the current joystick, return the axis determined by the argument.
- *
- * This is for cases where the joystick axis is returned programatically, otherwise one of the
- * previous functions would be preferable (for example GetX()).
- *
- * @param port The USB port for this joystick.
- * @param axis The axis to read.
- * @return The value of the axis.
- */
-float GetAxis(UINT32 port, AxisType axis)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetAxis((Joystick::AxisType) axis);
-}
-
-/**
- * Get the value of the axis.
- *
- * @param port The USB port for this joystick.
- * @param axis The axis to read [1-6].
- * @return The value of the axis.
- */
-float GetRawAxis(UINT32 port, UINT32 axis)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetRawAxis(axis);
-}
-
-/**
- * Read the state of the trigger on the joystick.
- *
- * Look up which button has been assigned to the trigger and read its state.
- *
- * @param port The USB port for this joystick.
- * @param hand This parameter is ignored for the Joystick class and is only here to complete the GenericHID interface.
- * @return The state of the trigger.
- */
-bool GetTrigger(UINT32 port, JoystickHand hand)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetTrigger((Joystick::JoystickHand) hand);
-}
-
-/**
- * Read the state of the top button on the joystick.
- *
- * Look up which button has been assigned to the top and read its state.
- *
- * @param port The USB port for this joystick.
- * @param hand This parameter is ignored for the Joystick class and is only here to complete the GenericHID interface.
- * @return The state of the top button.
- */
-bool GetTop(UINT32 port, JoystickHand hand)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetTop((Joystick::JoystickHand) hand);
-}
-
-/**
- * This is not supported for the Joystick.
- * This method is only here to complete the GenericHID interface.
- *
- * @param port The USB port for this joystick.
- */
-bool GetBumper(UINT32 port, JoystickHand hand)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetBumper((Joystick::JoystickHand) hand);
-}
-
-/**
- * Get buttons based on an enumerated type.
- *
- * The button type will be looked up in the list of buttons and then read.
- *
- * @param port The USB port for this joystick.
- * @param button The type of button to read.
- * @return The state of the button.
- */
-bool GetButton(UINT32 port, ButtonType button)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetButton((Joystick::ButtonType) button);
-}
-
-/**
- * Get the button value for buttons 1 through 12.
- *
- * The buttons are returned in a single 16 bit value with one bit representing the state
- * of each button. The appropriate button is returned as a boolean value.
- *
- * @param port The USB port for this joystick.
- * @param button The button number to be read.
- * @return The state of the button.
- **/
-bool GetRawButton(UINT32 port, UINT32 button)
-{
-	Joystick *stick = getJoystick(port);
-	if (stick == NULL) return 0;
-	return stick->GetRawButton(button);
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.h b/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.h
deleted file mode 100644
index 7e278bd..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CJoystick.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_JOYSTICK_H_
-#define _C_JOYSTICK_H_
-
-static const UINT32 kDefaultXAxis = 1;
-static const UINT32 kDefaultYAxis = 2;
-static const UINT32 kDefaultZAxis = 3;
-static const UINT32 kDefaultTwistAxis = 4;
-static const UINT32 kDefaultThrottleAxis = 3;
-
-typedef enum {
-	kLeftHand = 0,
-	kRightHand = 1
-} JoystickHand;
-
-typedef enum
-{
-	kXAxis, kYAxis, kZAxis, kTwistAxis, kThrottleAxis, kNumAxisTypes
-} AxisType;
-static const UINT32 kDefaultTriggerButton = 1;
-static const UINT32 kDefaultTopButton = 2;
-typedef enum
-{
-	kTriggerButton, kTopButton, kNumButtonTypes
-} ButtonType;
-
-UINT32 GetAxisChannel(UINT32 port, AxisType axis);
-void SetAxisChannel(UINT32 port, AxisType axis, UINT32 channel); 
-
-float GetX(UINT32 port, JoystickHand hand = kRightHand);
-float GetY(UINT32 port, JoystickHand hand = kRightHand);
-float GetZ(UINT32 port);
-float GetTwist(UINT32 port);
-float GetThrottle(UINT32 port);
-float GetAxis(UINT32 port, AxisType axis);
-float GetRawAxis(UINT32 port, UINT32 axis);
-
-bool GetTrigger(UINT32 port, JoystickHand hand = kRightHand);
-bool GetTop(UINT32 port, JoystickHand hand = kRightHand);
-bool GetBumper(UINT32 port, JoystickHand hand = kRightHand);
-bool GetButton(UINT32 port, ButtonType button);
-bool GetRawButton(UINT32 port, UINT32 button);
-
-#endif
- 
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CPWM.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CPWM.cpp
deleted file mode 100644
index 50e7e76..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CPWM.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/CPWM.h"
-#include "PWM.h"
-#include "CInterfaces/CWrappers.h"
-#include "DigitalModule.h"
-
-static bool PWMsInitialized = false;
-static PWM *PWMs[SensorBase::kDigitalModules][SensorBase::kPwmChannels];
-
-/**
- * Alloate a PWM based object
- *
- * Allocate an instance of a PWM based object. This code is shared between the subclasses
- * of PWM and is not usually created as a standalone object.
- *
- * @param module The slot the digital module is plugged into that corresponds to this serial port
- * @param channel The PWM channel for this PWM object
- * @param createObject The function callback in the subclass object that actually creates an instance
- * of the appropriate class.
- */
-PWM *AllocatePWM(UINT8 moduleNumber, UINT32 channel, SensorCreator createObject)
-{
-	if (!PWMsInitialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kDigitalModules; i++)
-			for (unsigned j = 0; j < SensorBase::kPwmChannels; j++)
-				PWMs[i][j] = NULL;
-		PWMsInitialized = true;
-	}
-	if (!SensorBase::CheckPWMModule(moduleNumber) || !SensorBase::CheckPWMChannel(channel))
-		return NULL;
-	PWM *pwm = PWMs[moduleNumber - 1][channel - 1];
-	if (pwm == NULL)
-	{
-		pwm = (PWM *) createObject(moduleNumber, channel);
-		PWMs[moduleNumber - 1][channel - 1] = pwm;
-	}
-	return pwm;
-}
-
-/**
- * Alloate a PWM based object
- *
- * Allocate an instance of a PWM based object. This code is shared between the subclasses
- * of PWM and is not usually created as a standalone object.
- *
- * @param channel The PWM channel for this PWM object
- * @param createObject The function callback in the subclass object that actually creates an instance
- * of the appropriate class.
- */
-PWM *AllocatePWM(UINT32 channel, SensorCreator createObject)
-{
-	return AllocatePWM(SensorBase::GetDefaultDigitalModule(), channel, createObject);
-}
-
-/**
- * Delete a PWM
- * Delete a PWM and free up all the associated resources for this object.
- *
- * @param slot The slot the digital module is plugged into that corresponds to this serial port
- * @param channel The PWM channel for this PWM object
- */
-void DeletePWM(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckPWMModule(moduleNumber) && SensorBase::CheckPWMChannel(channel))
-	{
-		PWMs[moduleNumber - 1][channel - 1] = NULL;
-	}
-}
-
-/**
- * Delete a PWM
- * Delete a PWM and free up all the associated resources for this object.
- *
- * @param channel The PWM channel for this PWM object
- */
-void DeletePWM(UINT32 channel)
-{
-	DeletePWM(SensorBase::GetDefaultDigitalModule(), channel);
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CPWM.h b/aos/externals/WPILib/WPILib/CInterfaces/CPWM.h
deleted file mode 100644
index b9fb646..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CPWM.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_PWM_H
-#define C_PWM_H
-
-#include <VxWorks.h>
-#include "CWrappers.h"
-#include "PWM.h"
-
-PWM *AllocatePWM(UINT8 moduleNumber, UINT32 channel, SensorCreator creator);
-PWM *AllocatePWM(UINT32 channel, SensorCreator creator);
-void DeletePWM(UINT8 moduleNumber, UINT32 channel);
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CRelay.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CRelay.cpp
deleted file mode 100644
index 07e1d01..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CRelay.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-#include "SensorBase.h"
-#include "DigitalModule.h"
-#include "Relay.h"
-#include "CInterfaces/CRelay.h"
-
-static Relay* relays[SensorBase::kDigitalModules][SensorBase::kRelayChannels];
-static bool initialized = false;
-static Relay::Direction s_direction = Relay::kBothDirections;
-
-/**
- * Internal function to allocate Relay objects.
- * This function handles the mapping between channel/slot numbers to relay objects. It also
- * allocates Relay objects if they are not already allocated.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The relay channel for this device
- */
-static Relay *AllocateRelay(UINT8 moduleNumber, UINT32 channel)
-{
-	if (!initialized)
-	{
-		for (unsigned i = 0; i < SensorBase::kDigitalModules; i++)
-			for (unsigned j = 0; j < SensorBase::kRelayChannels; j++)
-				relays[i][j] = NULL;
-		initialized = true;
-	}
-	if (SensorBase::CheckRelayModule(moduleNumber) && SensorBase::CheckRelayChannel(channel))
-	{
-		unsigned slotOffset = moduleNumber - 1;
-		if (relays[slotOffset][channel - 1] == NULL)
-		{
-			relays[slotOffset][channel - 1] = new Relay(moduleNumber, channel, s_direction);
-		}
-		return relays[slotOffset][channel - 1];
-	}
-	return NULL;
-}
-
-/**
- * Set the direction that this relay object will control.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The relay channel number for this object
- * @param direction The direction that the relay object will control
- */
-void InitRelay(UINT8 moduleNumber, UINT32 channel, RelayDirection direction)
-{
-	switch (direction)
-	{
-	case kBothDirections:
-		s_direction = Relay::kBothDirections;
-		break;
-	case kForwardOnly:
-		s_direction = Relay::kForwardOnly;
-		break;
-	case kReverseOnly:
-		s_direction = Relay::kReverseOnly;
-		break;
-	default:
-		s_direction = Relay::kBothDirections;
-	}
-	AllocateRelay(moduleNumber, channel);
-}
-
-/**
- * Set the direction that this relay object will control.
- *
- * @param channel The relay channel number for this object
- * @param direction The direction that the relay object will control
- */
-void InitRelay(UINT32 channel, RelayDirection direction)
-{
-	InitRelay(SensorBase::GetDefaultDigitalModule(), channel, direction);
-}
-
-/**
- * Free up the resources associated with this relay.
- * Delete the underlying Relay object and make the channel/port available for reuse.
- *
- * @param slot The slot that the digital module is plugged into
- * @param channel The relay channel number for this object
- */
-void DeleteRelay(UINT8 moduleNumber, UINT32 channel)
-{
-	if (SensorBase::CheckRelayModule(moduleNumber) && SensorBase::CheckRelayChannel(channel))
-	{
-		unsigned slotOffset = moduleNumber - 1;
-		delete relays[slotOffset][channel - 1];
-		relays[slotOffset][channel - 1] = NULL;
-	}
-}
-
-/**
- * Free up the resources associated with this relay.
- * Delete the underlying Relay object and make the channel/port available for reuse.
- *
- * @param channel The relay channel number for this object
- */
-void DeleteRelay(UINT32 channel)
-{
-	DeleteRelay(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Set the relay state.
- *
- * Valid values depend on which directions of the relay are controlled by the object.
- *
- * When set to kBothDirections, the relay can only be one of the three reasonable
- *    values, 0v-0v, 0v-12v, or 12v-0v.
- *
- * When set to kForwardOnly or kReverseOnly, you can specify the constant for the
- *    direction or you can simply specify kOff and kOn.  Using only kOff and kOn is
- *    recommended.
- *
- * @param slot The slot that the digital module is plugged into
- * @param channel The relay channel number for this object
- * @param value The state to set the relay.
- */
-void SetRelay(UINT8 moduleNumber, UINT32 channel, RelayValue value)
-{
-	Relay *relay = AllocateRelay(moduleNumber, channel);
-	if (relay != NULL)
-	{
-		switch (value)
-		{
-			case kOff: relay->Set(Relay::kOff); break;
-			case kOn: relay->Set(Relay::kOn); break;
-			case kForward: relay->Set(Relay::kForward); break;
-			case kReverse: relay->Set(Relay::kReverse); break;
-		}
-	}
-}
-
-/**
- * Set the relay state.
- *
- * Valid values depend on which directions of the relay are controlled by the object.
- *
- * When set to kBothDirections, the relay can only be one of the three reasonable
- *    values, 0v-0v, 0v-12v, or 12v-0v.
- *
- * When set to kForwardOnly or kReverseOnly, you can specify the constant for the
- *    direction or you can simply specify kOff and kOn.  Using only kOff and kOn is
- *    recommended.
- *
- * @param channel The relay channel number for this object
- * @param value The state to set the relay.
- */
-void SetRelay(UINT32 channel, RelayValue value)
-{
-	SetRelay(SensorBase::GetDefaultDigitalModule(), channel, value);
-}
-
-
-/**
- * Alternate C Interface
- */
-
-RelayObject CreateRelay(UINT8 moduleNumber, UINT32 channel, RelayDirection direction)
-{
-	switch (direction)
-	{
-	case kForwardOnly:
-		return new Relay(moduleNumber, channel, Relay::kForwardOnly);
-	case kReverseOnly:
-		return new Relay(moduleNumber, channel, Relay::kReverseOnly);
-	case kBothDirections:
-	default:
-		return new Relay(moduleNumber, channel, Relay::kBothDirections);
-	}
-}
-
-RelayObject CreateRelay(UINT32 channel, RelayDirection direction)
-{
-	switch (direction)
-	{
-	case kForwardOnly:
-		return new Relay(channel, Relay::kForwardOnly);
-	case kReverseOnly:
-		return new Relay(channel, Relay::kReverseOnly);
-	case kBothDirections:
-	default:
-		return new Relay(channel, Relay::kBothDirections);
-	}
-}
-
-void SetRelay(RelayObject o, RelayValue value)
-{
-	switch (value)
-	{
-		case kOff: ((Relay *)o )->Set(Relay::kOff); break;
-		case kOn: ((Relay *)o )->Set(Relay::kOn); break;
-		case kForward: ((Relay *)o )->Set(Relay::kForward); break;
-		case kReverse: ((Relay *)o )->Set(Relay::kReverse); break;
-	}
-}
-
-void DeleteRelay(RelayObject o)
-{
-	delete (Relay *) o;
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CRelay.h b/aos/externals/WPILib/WPILib/CInterfaces/CRelay.h
deleted file mode 100644
index 140018d..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CRelay.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _C_RELAY_H
-#define _C_RELAY_H
-
-typedef enum {kOff, kOn, kForward, kReverse} RelayValue;
-typedef enum {kBothDirections, kForwardOnly, kReverseOnly} RelayDirection;
-
-void InitRelay(UINT32 channel, RelayDirection direction = kBothDirections);
-void InitRelayRelay(UINT8 moduleNumber, UINT32 channel, RelayDirection direction = kBothDirections);
-
-void DeleteRelay(UINT32 channel);
-void DeleteRelay(UINT8 moduleNumber, UINT32 channel);
-
-void SetRelay(UINT32 channel, RelayValue value);
-void SetRelay(UINT8 moduleNumber, UINT32 channel, RelayValue value);
-
-typedef void *RelayObject;
-
-RelayObject CreateRelay(UINT8 moduleNumber, UINT32 channel, RelayDirection direction = kBothDirections);
-RelayObject CreateRelay(UINT32 channel, RelayDirection direction = kBothDirections);
-void SetRelay(RelayObject o, RelayValue value);
-void DeleteRelay(RelayObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.cpp
deleted file mode 100644
index 48faf78..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/CRobotDrive.h"
-#include "Joystick.h"
-#include "RobotDrive.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-
-static RobotDrive *drive = NULL;
-
-/*
- * Driving functions
- * These functions provide an interface to multiple motors that is used for C programming
- * The Drive(speed, direction) function is the main part of the set that makes it easy
- * to set speeds and direction independently in one call.
- */
-
-/**
- * Create a RobotDrive with 4 motors specified with channel numbers.
- * Set up parameters for a four wheel drive system where all four motor
- * pwm channels are specified in the call.
- * This call assumes Jaguars for controlling the motors.
- *
- * @param frontLeftMotor Front left motor channel number on the default digital module
- * @param rearLeftMotor Rear Left motor channel number on the default digital module
- * @param frontRightMotor Front right motor channel number on the default digital module
- * @param rearRightMotor Rear Right motor channel number on the default digital module
- */
-void CreateRobotDrive(UINT32 frontLeftMotor, UINT32 rearLeftMotor,
-		UINT32 frontRightMotor, UINT32 rearRightMotor)
-{
-	if (drive == NULL)
-		drive = new RobotDrive(frontLeftMotor, rearLeftMotor,
-								frontRightMotor, rearRightMotor);
-}
-
-/**
- * Constructor for RobotDrive with 2 motors specified with channel numbers.
- * Set up parameters for a four wheel drive system where all four motor
- * pwm channels are specified in the call.
- * This call assumes Jaguars for controlling the motors.
- *
- * @param leftMotor Front left motor channel number on the default digital module
- * @param rightMotor Front right motor channel number on the default digital module
- */
-void CreateRobotDrive(UINT32 leftMotor, UINT32 rightMotor)
-{
-	if (drive == NULL)
-		drive = new RobotDrive(leftMotor, rightMotor);
-}
-
-/**
- * Drive the motors at "speed" and "curve".
- *
- * The speed and curve are -1.0 to +1.0 values where 0.0 represents stopped and
- * not turning. The algorithm for adding in the direction attempts to provide a constant
- * turn radius for differing speeds.
- *
- * This function sill most likely be used in an autonomous routine.
- *
- * @param speed The forward component of the speed to send to the motors.
- * @param curve The rate of turn, constant for different forward speeds.
- */
-void Drive(float speed, float curve)
-{
-	if (drive == NULL)
-		wpi_setGlobalWPIError(DriveUninitialized);
-	else
-		drive->Drive(speed, curve);
-}
-
-/**
- * Provide tank steering using the stored robot configuration.
- * Drive the robot using two joystick inputs. The Y-axis will be selected from
- * each Joystick object.
- *
- * @param leftStickPort The joystick port to control the left side of the robot.
- * @param rightStickPort The joystick port to control the right side of the robot.
- */
-void TankDrive(UINT32 leftStickPort, UINT32 rightStickPort)
-{
-	if (drive == NULL)
-	{
-		wpi_setGlobalWPIError(DriveUninitialized);
-	}
-	else
-	{
-		Joystick *leftStick = Joystick::GetStickForPort(leftStickPort);
-		Joystick *rightStick = Joystick::GetStickForPort(rightStickPort);
-		drive->TankDrive(leftStick, rightStick);
-	}
-}
-
-/**
- * Arcade drive implements single stick driving.
- * Given a single Joystick, the class assumes the Y axis for the move value and the X axis
- * for the rotate value.
- * (Should add more information here regarding the way that arcade drive works.)
- *
- * @param stickPort The joystick to use for Arcade single-stick driving. The Y-axis will be selected
- * for forwards/backwards and the X-axis will be selected for rotation rate.
- * @param squaredInputs If true, the sensitivity will be increased for small values
- */
-void ArcadeDrive(UINT32 stickPort, bool squaredInputs)
-{
-	if (drive == NULL)
-	{
-		wpi_setGlobalWPIError(DriveUninitialized);
-	}
-	else
-	{
-		Joystick *stick = Joystick::GetStickForPort(stickPort);
-		drive->ArcadeDrive(stick);
-	}
-}
-
-/**
- * Provide tank steering using the stored robot configuration.
- * This function lets you directly provide joystick values from any source.
- * @param leftSpeed The value of the left stick.
- * @param rightSpeed The value of the right stick.
- */
-void TankByValue(float leftSpeed, float rightSpeed)
-{
-	if (drive == NULL)
-	{
-		wpi_setGlobalWPIError(DriveUninitialized);
-	}
-	else
-	{
-		drive->Drive(leftSpeed, rightSpeed);
-	}
-}
-
-/**
- * Arcade drive implements single stick driving.
- * This function lets you directly provide joystick values from any source.
- *
- * @param moveValue The value to use for fowards/backwards
- * @param rotateValue The value to use for the rotate right/left
- * @param squaredInputs If set, increases the sensitivity at low speeds
- */
-void ArcadeByValue(float moveValue, float rotateValue, bool squaredInputs)
-{
-	if (drive == NULL)
-		wpi_setGlobalWPIError(DriveUninitialized);
-	else
-		drive->ArcadeDrive(moveValue, rotateValue, squaredInputs);
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.h b/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.h
deleted file mode 100644
index f547ff7..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CRobotDrive.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_ROBOT_DRIVE_H
-#define C_ROBOT_DRIVE_H
-
-#include <VxWorks.h>
-
-void CreateRobotDrive(UINT32 leftMotor, UINT32 rightMotor);
-void CreateRobotDrive(UINT32 frontLeftMotor, UINT32 rearLeftMotor,
-		UINT32 frontRightMotor, UINT32 rearRightMotor);
-void Drive(float speed, float curve);
-void TankDrive(UINT32 leftStickPort, UINT32 rightStickPort);
-void ArcadeDrive(UINT32 stickPort, bool squaredInputs = false);
-void TankByValue(float leftSpeed, float rightSpeed);
-void ArcadeByValue(float moveSpeed, float rotateSpeed, bool squaredInputs = false);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.cpp
deleted file mode 100644
index 9d00f30..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#include "CInterfaces/CSerialPort.h"
-#include <visa/visa.h>
-
-static SerialPort* serial_port = NULL;
-
-/**
- * Open the serial port object.
- * Open and allocate the serial port.
- *
- * @param baudRate The baud rate to configure the serial port.  The cRIO-9074 supports up to 230400 Baud.
- * @param dataBits The number of data bits per transfer.  Valid values are between 5 and 8 bits.
- * @param parity Select the type of parity checking to use.
- * @param stopBits The number of stop bits to use as defined by the enum StopBits.
- */
-void OpenSerialPort(UINT32 baudRate, UINT8 dataBits, SerialPort::Parity parity, SerialPort::StopBits stopBits)
-{
-	if (serial_port == NULL)
-	{
-		serial_port = new SerialPort(baudRate, dataBits, parity, stopBits);
-	}
-}
-
-/**
- * Set the type of flow control to enable on this port.
- *
- * By default, flow control is disabled.
- */
-void SetSerialFlowControl(SerialPort::FlowControl flowControl)
-{
-	serial_port->SetFlowControl(flowControl);
-}
-
-/**
- * Enable termination and specify the termination character.
- *
- * Termination is currently only implemented for receive.
- * When the the terminator is recieved, the Read() or Scanf() will return
- *   fewer bytes than requested, stopping after the terminator.
- *
- * @param terminator The character to use for termination.
- */
-void EnableSerialTermination(char terminator)
-{
-	serial_port->EnableTermination(terminator);
-}
-
-/**
- * Disable termination behavior.
- */
-void DisableSerialTermination()
-{
-	serial_port->DisableTermination();
-}
-
-/**
- * Get the number of bytes currently available to read from the serial port.
- *
- * @return The number of bytes available to read.
- */
-INT32 GetSerialBytesReceived()
-{
-	return serial_port->GetBytesReceived();
-}
-
-/**
- * Output formatted text to the serial port.
- *
- * @bug All pointer-based parameters seem to return an error.
- *
- * @param writeFmt A string that defines the format of the output.
- */
-void PrintfSerial(const char *writeFmt, ...)
-{
-	va_list args;
-
-	va_start (args, writeFmt);
-	serial_port->Printf((ViString)writeFmt, args);
-	va_end (args);
-}
-
-/**
- * Input formatted text from the serial port.
- *
- * @bug All pointer-based parameters seem to return an error.
- *
- * @param readFmt A string that defines the format of the input.
- */
-void ScanfSerial(const char *readFmt, ...)
-{
-	va_list args;
-
-	va_start (args, readFmt);
-	serial_port->Scanf((ViString)readFmt, args);
-	va_end (args);
-}
-
-/**
- * Read raw bytes out of the buffer.
- *
- * @param buffer Pointer to the buffer to store the bytes in.
- * @param count The maximum number of bytes to read.
- * @return The number of bytes actually read into the buffer.
- */
-UINT32 ReadSerialPort(char *buffer, INT32 count)
-{
-	return serial_port->Read(buffer, count);
-}
-
-/**
- * Write raw bytes to the buffer.
- *
- * @param buffer Pointer to the buffer to read the bytes from.
- * @param count The maximum number of bytes to write.
- * @return The number of bytes actually written into the port.
- */
-UINT32 WriteSerialPort(const char *buffer, INT32 count)
-{
-	return serial_port->Write(buffer, count);
-}
-
-/**
- * Configure the timeout of the serial port.
- *
- * This defines the timeout for transactions with the hardware.
- * It will affect reads and very large writes.
- *
- * @param timeout The number of seconds to to wait for I/O.
- */
-void SetSerialTimeout(INT32 timeout)
-{
-	serial_port->SetTimeout(timeout);
-}
-
-/**
- * Specify the flushing behavior of the output buffer.
- *
- * When set to kFlushOnAccess, data is synchronously written to the serial port
- *   after each call to either Printf() or Write().
- *
- * When set to kFlushWhenFull, data will only be written to the serial port when
- *   the buffer is full or when Flush() is called.
- *
- * @param mode The write buffer mode.
- */
-void SetSerialWriteBufferMode(SerialPort::WriteBufferMode mode)
-{
-	serial_port->SetWriteBufferMode(mode);
-}
-
-/**
- * Force the output buffer to be written to the port.
- *
- * This is used when SetWriteBufferMode() is set to kFlushWhenFull to force a
- * flush before the buffer is full.
- */
-void FlushSerialPort()
-{
-	serial_port->Flush();
-}
-
-/**
- * Reset the serial port driver to a known state.
- *
- * Empty the transmit and receive buffers in the device and formatted I/O.
- */
-void ResetSerialPort()
-{
-	serial_port->Reset();
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.h b/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.h
deleted file mode 100644
index 91f7c3e..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CSerialPort.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#ifndef _SERIALPORT_H
-#define _SERIALPORT_H
-
-#include "SerialPort.h"
-
-void OpenSerialPort(UINT32 baudRate, UINT8 dataBits, SerialPort::Parity parity, SerialPort::StopBits stopBits);
-void SetSerialFlowControl(SerialPort::FlowControl flowControl);
-void EnableSerialTermination(char terminator);
-void DisableSerialTermination();
-INT32 GetSerialBytesReceived();
-void PrintfSerial(const char *writeFmt, ...);
-void ScanfSerial(const char *readFmt, ...);
-UINT32 ReadSerialPort(char *buffer, INT32 count);
-UINT32 WriteSerialPort(const char *buffer, INT32 count);
-void SetSerialTimeout(INT32 timeout_ms);
-void SetSerialWriteBufferMode(SerialPort::WriteBufferMode mode);
-void FlushSerialPort();
-void ResetSerialPort();
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CServo.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CServo.cpp
deleted file mode 100644
index 50b585e..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CServo.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Servo.h"
-#include "CInterfaces/CServo.h"
-#include "CInterfaces/CPWM.h"
-
-static SensorBase *CreateServoStatic(UINT32 slot, UINT32 channel)
-{
-	return new Servo(slot, channel);
-}
-
-/**
- * Set the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel in the module the servo is plugged into
- * @param value Position from 0.0 to 1.0.
- */
-void SetServo(UINT32 slot, UINT32 channel, float value)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	servo->Set(value);
-}
-
-/**
- * Get the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel in the module the servo is plugged into
- * @return Position from 0.0 to 1.0.
- */
-float GetGetServo(UINT32 slot, UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	return servo->Get();
-}
-
-/**
- * Set the servo angle.
- *
- * Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).
- *
- * Servo angles that are out of the supported range of the servo simply "saturate" in that direction
- * In other words, if the servo has a range of (X degrees to Y degrees) than angles of less than X
- * result in an angle of X being set and angles of more than Y degrees result in an angle of Y being set.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel in the module the servo is plugged into
- * @param angle The angle in degrees to set the servo.
- */
-void SetServoAngle(UINT32 slot, UINT32 channel, float angle)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	servo->SetAngle(angle);
-}
-
-/**
- * Get the servo angle.
- *
- * Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel in the module the servo is plugged into
- * @return The angle in degrees to which the servo is set.
- */
-float GetServoAngle(UINT32 slot, UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	return servo->GetAngle();
-}
-
-/**
- * Get the maximum servo angle.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM port in the module the servo is plugged into
- */
-float GetServoMaxAngle(UINT32 slot, UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	return servo->GetMaxAngle();
-}
-
-/**
- * Get the minimum servo angle.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM port in the module the servo is plugged into
- */
-float GetServoMinAngle(UINT32 slot, UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	return servo->GetMinAngle();
-}
-
-/**
- * Set the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @param channel The PWM port in the module the servo is plugged into
- * @param value Position from 0.0 to 1.0.
- */
-void SetServo(UINT32 channel, float value)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	servo->Set(value);
-}
-
-/**
- * Get the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @param channel The PWM port in the module the servo is plugged into
- * @returns Position from 0.0 to 1.0.
- */
-float GetServo(UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	return servo->Get();
-}
-
-/**
- * Set the servo angle.
- *
- * Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).
- *
- * Servo angles that are out of the supported range of the servo simply "saturate" in that direction
- * In other words, if the servo has a range of (X degrees to Y degrees) than angles of less than X
- * result in an angle of X being set and angles of more than Y degrees result in an angle of Y being set.
- *
- * @param channel The PWM port in the module the servo is plugged into
- * @param angle The angle in degrees to set the servo.
- */
-void SetServoAngle(UINT32 channel, float angle)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	servo->SetAngle(angle);
-}
-
-/**
- * Get the servo angle.
- *
- * Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).
- *
- * @param channel The slot the digital module is plugged into
- * @return The angle in degrees to which the servo is set.
- */
-float GetServoAngle(UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	return servo->GetAngle();
-}
-
-/**
- * Get the maximum angle for the servo.
- *
- * @param channel The PWM port in the module the servo is plugged into
- */
-float GetServoMaxAngle(UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	return servo->GetMaxAngle();
-}
-
-/**
- * Get the minimum angle for the servo.
- *
- * @param channel The PWM port in the module the servo is plugged into
- */
-float GetServoMinAngle(UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(channel, CreateServoStatic);
-	return servo->GetMinAngle();
-}
-
-/**
- * Free the resources associated with this Servo object.
- * The underlying Servo object and the allocated ports are freed.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM port in the module the servo is plugged into
- */
-void DeleteServo(UINT32 slot, UINT32 channel)
-{
-	Servo *servo = (Servo *) AllocatePWM(slot, channel, CreateServoStatic);
-	DeletePWM(slot, channel);
-	delete servo;
-}
-
-/**
- * Free the resources associated with this Servo object.
- * The underlying Servo object and the allocated ports are freed.
- *
- * @param channel The PWM port in the module the servo is plugged into
- */
-void DeleteServo(UINT32 channel)
-{
-	DeleteServo(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-ServoObject CreateServo(UINT32 slot, UINT32 channel)
-{
-	return (ServoObject) new Servo(slot, channel);
-}
-
-ServoObject CreateServo(UINT32 channel)
-{
-	return (ServoObject) new Servo(channel);
-}
-
-void SetServo(ServoObject o, float value)
-{
-	((Servo *)o)->Set(value);
-}
-
-float GetGetServo(ServoObject o)
-{
-	return ((Servo *)o)->Get();
-}
-
-void SetServoAngle(ServoObject o, float angle)
-{
-	((Servo *)o)->SetAngle(angle);
-}
-
-float GetServoAngle(ServoObject o)
-{
-	return ((Servo *)o)->GetAngle();
-}
-
-float GetServoMaxAngle(ServoObject o)
-{
-	return ((Servo *)o)->GetMaxAngle();
-}
-
-float GetServoMinAngle(ServoObject o)
-{
-	return ((Servo *)o)->GetMinAngle();
-}
-
-void DeleteServo(ServoObject o)
-{
-	delete (Servo *)o;
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CServo.h b/aos/externals/WPILib/WPILib/CInterfaces/CServo.h
deleted file mode 100644
index 7010a2f..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CServo.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_SERVO_H
-#define C_SERVO_H
-
-void SetServo(UINT32 slot, UINT32 channel, float value);
-float GetGetServo(UINT32 slot, UINT32 channel);
-void SetServoAngle(UINT32 slot, UINT32 channel, float angle);
-float GetServoAngle(UINT32 slot, UINT32 channel);
-float GetServoMaxAngle(UINT32 slot, UINT32 channel);
-float GetServoMinAngle(UINT32 slot, UINT32 channel);
-void SetServo(UINT32 channel, float value);
-float GetGetServo(UINT32 channel);
-void SetServoAngle(UINT32 channel, float angle);
-float GetServoAngle(UINT32 channel);
-float GetServoMaxAngle(UINT32 channel);
-float GetServoMinAngle(UINT32 channel);
-void DeleteServo(UINT32 slot, UINT32 channel);
-void DeleteServo(UINT32 channel);
-
-typedef void *ServoObject;
-
-ServoObject CreateServo(UINT32 slot, UINT32 channel);
-ServoObject CreateServo(UINT32 channel);
-void SetServo(ServoObject o, float value);
-float GetGetServo(ServoObject o);
-void SetServoAngle(ServoObject o, float angle);
-float GetServoAngle(ServoObject o);
-float GetServoMaxAngle(ServoObject o);
-float GetServoMinAngle(ServoObject o);
-void DeleteServo(ServoObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.cpp
deleted file mode 100644
index 26e3660..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "Solenoid.h"
-#include "CInterfaces/CSolenoid.h"
-
-static Solenoid *solenoids[SensorBase::kSolenoidChannels];
-static bool initialized = false;
-
-/**
- * Internal allocation function for Solenoid channels.
- * The function is used interally to allocate the Solenoid object and keep track
- * of the channel mapping to the object for subsequent calls.
- *
- * @param channel The channel for the solenoid
- */
-static Solenoid *allocateSolenoid(UINT32 channel)
-{
-	if (!initialized)
-	{
-		initialized = true;
-		for (unsigned i = 0; i < SensorBase::kSolenoidChannels; i++)
-			solenoids[i] = new Solenoid(i + 1);
-	}
-	if (channel < 1 || channel > SensorBase::kSolenoidChannels)
-		return NULL;
-	return solenoids[channel - 1];
-}
-
-/**
- * Set the value of a solenoid.
- *
- * @param channel The channel on the Solenoid module
- * @param on Turn the solenoid output off or on.
- */
-void SetSolenoid(UINT32 channel, bool on)
-{
-	Solenoid *s = allocateSolenoid(channel);
-	if (s != NULL)
-		s->Set(on);
-}
-
-/**
- * Read the current value of the solenoid.
- *
- * @param channel The channel in the Solenoid module
- * @return The current value of the solenoid.
- */
-bool GetSolenoid(UINT32 channel)
-{
-	Solenoid *s = allocateSolenoid(channel);
-	if (s == NULL)
-		return false;
-	return s->Get();
-}
-
-/**
- * Free the resources associated with the Solenoid channel.
- * Free the resources including the Solenoid object for this channel.
- *
- * @param channel The channel in the Solenoid module
- */
-void DeleteSolenoid(UINT32 channel)
-{
-	if (channel >= 1 && channel <= SensorBase::kSolenoidChannels)
-	{
-		delete solenoids[channel - 1];
-		solenoids[channel - 1] = NULL;
-	}
-}
-
-SolenoidObject CreateSolenoid(UINT32 channel)
-{
-	return (SolenoidObject) new Solenoid(channel);
-}
-
-void DeleteSolenoid(SolenoidObject o)
-{
-	delete (Solenoid *) o;
-}
-
-void SetSolenoid(SolenoidObject o, bool on)
-{
-	((Solenoid *)o)->Set(on);
-}
-
-bool GetSolenoid(SolenoidObject o)
-{
-	return ((Solenoid *)o)->Get();
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.h b/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.h
deleted file mode 100644
index 739a853..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CSolenoid.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef _C_SOLENOID_H
-#define _C_SOLENOID_H
-
-void SetSolenoid(UINT32 channel, bool on);
-bool GetSolenoid(UINT32 channel);
-
-typedef void *SolenoidObject;
-
-SolenoidObject CreateSolenoid(UINT32 channel);
-void DeleteSolenoid(SolenoidObject o);
-void SetSolenoid(SolenoidObject o, bool on);
-bool GetSolenoid(SolenoidObject o);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CTimer.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CTimer.cpp
deleted file mode 100644
index fef3600..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CTimer.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#include "CInterfaces/CTimer.h"
-#include <stdio.h>
-#include "Utility.h"
-
-static Timer *timers[kMaxTimers];
-static bool initialized = false;
-
-/**
- * Allocate the resources for a timer object
- * Timers are allocated in an array and indexed with the "index" parameter. There
- * can be up to 10 timer objects in use at any one time. Deleting a timer object
- * frees up it's slot and resources.
- *
- * @param index The index of this timer object.
- */
-static Timer *AllocateTimer(UINT32 index)
-{
-	if (!initialized)
-	{
-		for (unsigned i = 0; i < kMaxTimers; i++)
-			timers[i] = NULL;
-		initialized = true;
-	}
-	if (index == 0 || index >= kMaxTimers)
-	{
-		printf("Timer index out of range [1, %d]: %d\n", kMaxTimers, index);
-		return NULL;
-	}
-	Timer *timer = timers[index - 1];
-	if (timer == NULL)
-	{
-		timer = new Timer();
-		timers[index - 1] = timer;
-	}
-	return timer;
-}
-
-/**
- * Reset the timer by setting the time to 0.
- *
- * Make the timer startTime the current time so new requests will be relative now
- * @param index The index of this timer object.
- */
-void ResetTimer(UINT32 index)
-{
-	Timer *timer = AllocateTimer(index);
-	if (timer != NULL)
-	{
-		timer->Reset();
-	}
-}
-
-/**
- * Start the timer running.
- * Just set the running flag to true indicating that all time requests should be
- * relative to the system clock.
- *
- * @param index The index of this timer object.
- */
-void StartTimer(UINT32 index)
-{
-	Timer *timer = AllocateTimer(index);
-	if (timer != NULL)
-	{
-		timer->Start();
-	}
-}
-
-/**
- * Stop the timer.
- * This computes the time as of now and clears the running flag, causing all
- * subsequent time requests to be read from the accumulated time rather than
- * looking at the system clock.
- *
- * @param index The index of this timer object.
- */
-void StopTimer(UINT32 index)
-{
-	Timer *timer = AllocateTimer(index);
-	if (timer != NULL)
-	{
-		timer->Stop();
-	}
-}
-
-/**
- * Get the current time from the timer. If the clock is running it is derived from
- * the current system clock the start time stored in the timer class. If the clock
- * is not running, then return the time when it was last stopped.
- *
- * @param index The timer index being used
- * @return unsigned Current time value for this timer in seconds
- */
-double GetTimer(UINT32 index)
-{
-	Timer *timer = AllocateTimer(index);
-	if (timer != NULL)
-	{
-		return timer->Get();
-	}
-	else
-		return 0.0;
-}
-
-/**
- * Free the resources associated with this timer object
- *
- * @param index The index of this timer object.
- */
-void DeleteTimer(UINT32 index)
-{
-	if (index >= 1 && index <= kMaxTimers)
-	{
-		delete timers[index - 1];
-		timers[index - 1] = NULL;
-	}
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CTimer.h b/aos/externals/WPILib/WPILib/CInterfaces/CTimer.h
deleted file mode 100644
index bfd756e..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CTimer.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#ifndef _C_TIMER_H
-#define _C_TIMER_H
-
-#include "Timer.h"
-
-static const unsigned kMaxTimers = 32;
-
-void ResetTimer(UINT32 index);
-void StartTimer(UINT32 index);
-void StopTimer(UINT32 index);
-double GetTimer(UINT32 index);
-void DeleteTimer(UINT32 index);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.cpp
deleted file mode 100644
index 33c5204..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#include "CInterfaces/CUltrasonic.h"
-#include "DigitalModule.h"
-
-static Ultrasonic* ultrasonics[SensorBase::kChassisSlots][SensorBase::kDigitalChannels];
-static bool initialized = false;
-
-/**
- * Internal routine to allocate and initialize resources for an Ultrasonic sensor
- * Allocate the actual Ultrasonic sensor object and the slot/channels associated with them. Then
- * initialize the sensor.
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoSlot The slot for the digital module for the echo connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-static void USinit(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	if (!initialized)
-	{
-		initialized = true;
-		for (unsigned i = 0; i < SensorBase::kChassisSlots; i++)
-			for (unsigned j = 0; j < SensorBase::kDigitalChannels; j++)
-				ultrasonics[i][j] = NULL;
-	}
-	if (SensorBase::CheckDigitalModule(pingModuleNumber)
-			&& SensorBase::CheckDigitalChannel(pingChannel)
-		 	&& SensorBase::CheckDigitalModule(echoModuleNumber)
-			&& SensorBase::CheckDigitalChannel(echoChannel))
-	{
-		if (ultrasonics[pingModuleNumber - 1][pingChannel - 1] == NULL)
-		{
-			ultrasonics[pingModuleNumber - 1][pingChannel - 1] = new Ultrasonic(pingModuleNumber, pingChannel, echoModuleNumber, echoChannel);
-			printf("new Ultrasonic(%d, %d, %d, %d)\n", pingModuleNumber, pingChannel, echoModuleNumber, echoChannel);
-		}
-		Ultrasonic::SetAutomaticMode(true);
-	}
-}
-
-/**
- * Internal routine to return the pointer to an Ultrasonic sensor
- * Return the pointer to a previously allocated Ultrasonic sensor object. Only the ping connection
- * is required since there can only be a single sensor connected to that channel
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- */
-static Ultrasonic *USptr(UINT8 pingModuleNumber, UINT32 pingChannel)
-{
-	if (!SensorBase::CheckDigitalModule(pingModuleNumber) || !SensorBase::CheckDigitalChannel(pingChannel))
-		return NULL;
-	Ultrasonic *us = ultrasonics[pingModuleNumber - 1][pingChannel - 1];
-	return us;
-}
-
-/**
- * Initialize and Ultrasonic sensor.
- *
- * Initialize an Ultrasonic sensor to start it pinging in round robin mode with other allocated
- * sensors. There is no need to explicitly start the sensor pinging.
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoSlot The slot for the digital module for the echo connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-void InitUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	Ultrasonic *us = USptr(pingModuleNumber, pingChannel);
-	if (!us) USinit(pingModuleNumber, pingChannel, echoModuleNumber, echoChannel);
-}
-
-/**
- * Initialize and Ultrasonic sensor.
- *
- * Initialize an Ultrasonic sensor to start it pinging in round robin mode with other allocated
- * sensors. There is no need to explicitly start the sensor pinging.
- *
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-void InitUltrasonic(UINT32 pingChannel, UINT32 echoChannel)
-{
-	InitUltrasonic(SensorBase::GetDefaultDigitalModule(), pingChannel,
-				   SensorBase::GetDefaultDigitalModule(), echoChannel);
-}
-
-/**
- * Get the range in inches from the ultrasonic sensor.
- * @return double Range in inches of the target returned from the ultrasonic sensor. If there is
- * no valid value yet, i.e. at least one measurement hasn't completed, then return 0.
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoSlot The slot for the digital module for the echo connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-double GetUltrasonicInches(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	Ultrasonic *us = USptr(pingModuleNumber, pingChannel);
-	if (us != NULL)
-		return us->GetRangeInches();
-	else
-		return 0.0;
-}
-
-/**
- * Get the range in inches from the ultrasonic sensor.
- * @return double Range in inches of the target returned from the ultrasonic sensor. If there is
- * no valid value yet, i.e. at least one measurement hasn't completed, then return 0.
- *
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-double GetUltrasonicInches(UINT32 pingChannel, UINT32 echoChannel)
-{
-	return GetUltrasonicInches(SensorBase::GetDefaultDigitalModule(), pingChannel,
-								SensorBase::GetDefaultDigitalModule(), echoChannel);
-}
-
-/**
- * Get the range in millimeters from the ultrasonic sensor.
- * @return double Range in millimeters of the target returned by the ultrasonic sensor.
- * If there is no valid value yet, i.e. at least one measurement hasn't complted, then return 0.
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoSlot The slot for the digital module for the echo connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-double GetUltrasonicMM(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	Ultrasonic *us = USptr(pingModuleNumber, pingChannel);
-	if (us != NULL)
-		return us->GetRangeMM();
-	else
-		return 0.0;
-}
-
-/**
- * Get the range in millimeters from the ultrasonic sensor.
- * @return double Range in millimeters of the target returned by the ultrasonic sensor.
- * If there is no valid value yet, i.e. at least one measurement hasn't complted, then return 0.
- *
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-double GetUltrasonicMM(UINT32 pingChannel, UINT32 echoChannel)
-{
-	return GetUltrasonicMM(SensorBase::GetDefaultDigitalModule(), pingChannel,
-							SensorBase::GetDefaultDigitalModule(), echoChannel);
-}
-
-/**
- * Free the resources associated with an ultrasonic sensor.
- * Deallocate the Ultrasonic object and free the associated resources.
- *
- * @param pingSlot The slot for the digital module for the ping connection
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoSlot The slot for the digital module for the echo connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-void DeleteUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	if (SensorBase::CheckDigitalModule(pingModuleNumber) && SensorBase::CheckDigitalChannel(pingChannel))
-	{
-		delete ultrasonics[pingModuleNumber - 1][pingChannel - 1];
-		ultrasonics[pingModuleNumber - 1][pingChannel - 1] = NULL;
-	}
-}
-
-/**
- * Free the resources associated with an ultrasonic sensor.
- * Deallocate the Ultrasonic object and free the associated resources.
- *
- * @param pingChannel The channel on the digital module for the ping connection
- * @param echoChannel The channel on the digital module for the echo connection
- */
-void DeleteUltrasonic(UINT32 pingChannel, UINT32 echoChannel)
-{
-	DeleteUltrasonic(SensorBase::GetDefaultDigitalModule(), pingChannel, SensorBase::GetDefaultDigitalModule(), echoChannel);
-}
-
-UltrasonicObject CreateUltrasonic(UINT32 pingChannel, UINT32 echoChannel)
-{
-	return (UltrasonicObject) new Ultrasonic(pingChannel, echoChannel);
-}
-
-UltrasonicObject CreateUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel)
-{
-	return (UltrasonicObject) new Ultrasonic(pingModuleNumber, pingChannel, echoModuleNumber, echoChannel);
-}
-
-double GetUltrasonicInches(UltrasonicObject o)
-{
-	return ((Ultrasonic *)o)->GetRangeInches();
-}
-
-double GetUltrasonicMM(UltrasonicObject o)
-{
-	return ((Ultrasonic *)o)->GetRangeMM();
-}
-
-void DeleteUltrasonic(UltrasonicObject o)
-{
-	delete (Ultrasonic *) o;
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.h b/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.h
deleted file mode 100644
index 5faa145..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CUltrasonic.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#ifndef C_ULTRASONIC_H
-#define C_ULTRASONIC_H
-
-#include "Ultrasonic.h"
-
-void InitUltrasonic(UINT32 pingChannel, UINT32 echoChannel);
-void InitUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel);
-double GetUltrasonicInches(UINT32 pingChannel, UINT32 echoChannel);
-double GetUltrasonicInches(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel);
-double GetUltrasonicMM(UINT32 pingChannel, UINT32 echoChannel);
-double GetUltrasonicMM(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel);
-void DeleteUltrasonic(UINT32 pingChannel, UINT32 echoChannel);
-void DeleteUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel);
-
-typedef void *UltrasonicObject;
-
-UltrasonicObject CreateUltrasonic(UINT32 pingChannel, UINT32 echoChannel);
-UltrasonicObject CreateUltrasonic(UINT8 pingModuleNumber, UINT32 pingChannel, UINT8 echoModuleNumber, UINT32 echoChannel);
-double GetUltrasonicInches(UltrasonicObject o);
-double GetUltrasonicMM(UltrasonicObject o);
-void DeleteUltrasonic(UltrasonicObject o);
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CVictor.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CVictor.cpp
deleted file mode 100644
index 389c30f..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CVictor.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/CVictor.h"
-#include "CInterfaces/CPWM.h"
-#include "Victor.h"
-
-/**
- * Create an instance of a Victor object (used internally by this module)
- *
- * @param slot The slot that the digital module is plugged into
- * @param channel The PWM channel that the motor is plugged into
- */
-static SensorBase *CreateVictorStatic(UINT32 slot, UINT32 channel)
-{
-	return new Victor(slot, channel);
-}
-
-
-/**
- * Set the PWM value.
- *
- * The PWM value is set using a range of -1.0 to 1.0, appropriately
- * scaling the value for the FPGA.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel used for this Victor
- * @param speed The speed value between -1.0 and 1.0 to set.
- */
-void SetVictorSpeed(UINT32 slot, UINT32 channel, float speed)
-{
-	Victor *victor = (Victor *) AllocatePWM(slot, channel, CreateVictorStatic);
-	if (victor)	victor->Set(speed);
-}
-
-/**
- * Set the PWM value directly to the hardware.
- *
- * Write a raw value to a PWM channel.
- *
- * @param channel The PWM channel used for this Victor
- * @param value Raw PWM value.  Range 0 - 255.
- */
-void SetVictorRaw(UINT32 channel, UINT8 value)
-{
-	Victor *victor = (Victor *) AllocatePWM(channel, CreateVictorStatic);
-	if (victor) victor->SetRaw(value);
-}
-
-/**
- * Set the PWM value.
- *
- * The PWM value is set using a range of -1.0 to 1.0, appropriately
- * scaling the value for the FPGA.
- *
- * @param channel The PWM channel used for this Victor
- * @param speed The speed value between -1.0 and 1.0 to set.
- */
-void SetVictorSpeed(UINT32 channel, float speed)
-{
-	Victor *victor = (Victor *) AllocatePWM(channel, CreateVictorStatic);
-	if (victor) victor->Set(speed);
-}
-
-/**
- * Get the PWM value directly from the hardware.
- *
- * Read a raw value from a PWM channel.
- *
- * @param channel The PWM channel used for this Victor
- * @return Raw PWM control value.  Range: 0 - 255.
- */
-UINT8 GetVictorRaw(UINT32 channel)
-{
-	Victor *victor = (Victor *) AllocatePWM(channel, CreateVictorStatic);
-	if (victor)
-		return victor->GetRaw();
-	else
-		return 0;
-}
-
-/**
- * Set the PWM value directly to the hardware.
- *
- * Write a raw value to a PWM channel.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel used for this Victor
- * @param value Raw PWM value.  Range 0 - 255.
- */
-void SetVictorRaw(UINT32 slot, UINT32 channel, UINT8 value)
-{
-	Victor *victor = (Victor *) AllocatePWM(slot, channel, CreateVictorStatic);
-	if (victor) victor->SetRaw(value);
-}
-
-
-/**
- * Get the PWM value directly from the hardware.
- *
- * Read a raw value from a PWM channel.
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel used for this Victor
- * @return Raw PWM control value.  Range: 0 - 255.
- */
-UINT8 GetVictorRaw(UINT32 slot, UINT32 channel)
-{
-	Victor *victor = (Victor *) AllocatePWM(slot, channel, CreateVictorStatic);
-	if (victor)
-		return victor->GetRaw();
-	else
-		return 0;
-}
-
-/**
- * Delete resources for a Victor
- * Free the underlying object and delete the allocated resources for the Victor
- *
- * @param slot The slot the digital module is plugged into
- * @param channel The PWM channel used for this Victor
- */
-void DeleteVictor(UINT32 slot, UINT32 channel)
-{
-	Victor *victor = (Victor *) AllocatePWM(slot, channel, CreateVictorStatic);
-	delete victor;
-	DeletePWM(slot, channel);
-}
-
-/**
- * Delete resources for a Victor
- * Free the underlying object and delete the allocated resources for the Victor
- *
- * @param channel The PWM channel used for this Victor
- */
-void DeleteVictor(UINT32 channel)
-{
-	DeleteVictor(SensorBase::GetDefaultDigitalModule(), channel);
-}
-
-VictorObject CreateVictor(UINT32 slot, UINT32 channel)
-{
-	return (VictorObject) new Victor(slot, channel);
-}
-
-VictorObject CreateVictor(UINT32 channel)
-{
-	return (VictorObject) new Victor(channel);
-}
-
-void DeleteVictor(VictorObject o)
-{
-	delete (Victor *) o;
-}
-
-void SetVictorSpeed(VictorObject o, float speed)
-{
-	((Victor *)o)->Set(speed);
-}
-
-void SetVictorRaw(VictorObject o, UINT8 value)
-{
-	((Victor *)o)->SetRaw(value);
-}
-
-UINT8 GetVictorRaw(VictorObject o)
-{
-	return ((Victor *)o)->GetRaw();
-}
-
-void LoadVictor()
-{
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CVictor.h b/aos/externals/WPILib/WPILib/CInterfaces/CVictor.h
deleted file mode 100644
index 2080b97..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CVictor.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_VICTOR_H
-#define C_VICTOR_H
-
-#include <VxWorks.h>
-
-void SetVictorSpeed(UINT32 module, UINT32 channel, float speed);
-void SetVictorSpeed(UINT32 channel, float speed);
-void SetVictorRaw(UINT32 channel, UINT8 value);
-UINT8 GetVictorRaw(UINT32 channel);
-void SetVictorRaw(UINT32 module, UINT32 channel, UINT8 value);
-UINT8 GetVictorRaw(UINT32 module, UINT32 channel);
-void DeleteVictor(UINT32 module, UINT32 channel);
-void DeleteVictor(UINT32 channel);
-
-typedef void *VictorObject;
-
-VictorObject CreateVictor(UINT32 slot, UINT32 channel);
-VictorObject CreateVictor(UINT32 channel);
-void DeleteVictor(VictorObject o);
-void SetVictorSpeed(VictorObject o, float speed);
-void SetVictorRaw(VictorObject o, UINT8 value);
-UINT8 GetVictorRaw(VictorObject o);
-
-void LoadVictor();
-#endif
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.cpp b/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.cpp
deleted file mode 100644
index efe2061..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "CInterfaces/CWatchdog.h"
-#include "Watchdog.h"
-
-WatchdogObject CreateWatchdog()
-{
-	return (WatchdogObject) new Watchdog();
-}
-
-void DeleteWatchdog(WatchdogObject o)
-{
-	delete (Watchdog *) o;
-}
-
-bool FeedWatchdog(WatchdogObject o)
-{
-	return ((Watchdog *)o)->Feed();
-}
-
-void KillWatchdog(WatchdogObject o)
-{
-	((Watchdog *)o)->Kill();
-}
-
-double GetWatchdogTimer(WatchdogObject o)
-{
-	return ((Watchdog *)o)->GetTimer();
-}
-
-double GetWatchdogExpiration(WatchdogObject o)
-{
-	return ((Watchdog *)o)->GetExpiration();
-}
-
-void SetWatchdogExpiration(WatchdogObject o, double expiration)
-{
-	((Watchdog *)o)->SetExpiration(expiration);
-}
-
-bool GetWatchdogEnabled(WatchdogObject o)
-{
-	return ((Watchdog *)o)->GetEnabled();
-}
-
-void SetWatchdogEnabled(WatchdogObject o, bool enabled)
-{
-	((Watchdog *)o)->SetEnabled(enabled);
-}
-
-bool IsWatchdogAlive(WatchdogObject o)
-{
-	return ((Watchdog *)o)->IsAlive();
-}
-
-bool IsWatchdogSystemActive(WatchdogObject o)
-{
-	return ((Watchdog *)o)->IsSystemActive();
-}
-
-void LoadWatchdog()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.h b/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.h
deleted file mode 100644
index 4f33c15..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CWatchdog.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_WATCHDOG_H
-#define C_WATCHDOG_H
-
-typedef void *WatchdogObject;
-
-WatchdogObject CreateWatchdog();
-void DeleteWatchdog(WatchdogObject o);
-bool FeedWatchdog(WatchdogObject o);
-void KillWatchdog(WatchdogObject o);
-double GetWatchdogTimer(WatchdogObject o);
-double GetWatchdogExpiration(WatchdogObject o);
-void SetWatchdogExpiration(WatchdogObject o, double expiration);
-bool GetWatchdogEnabled(WatchdogObject o);
-void SetWatchdogEnabled(WatchdogObject o, bool enabled);
-bool IsWatchdogAlive(WatchdogObject o);
-bool IsWatchdogSystemActive(WatchdogObject o);
-
-void LoadWatchdog();
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/CWrappers.h b/aos/externals/WPILib/WPILib/CInterfaces/CWrappers.h
deleted file mode 100644
index 0bb96b5..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/CWrappers.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef C_WRAPPERS_H
-#define C_WRAPPERS_H
-
-class SensorBase;
-typedef SensorBase *(*SensorCreator)(UINT32 slot, UINT32 channel);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/Doxyfile b/aos/externals/WPILib/WPILib/CInterfaces/Doxyfile
deleted file mode 100644
index 9eada45..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/Doxyfile
+++ /dev/null
@@ -1,253 +0,0 @@
-# Doxyfile 1.5.7.1
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING      = UTF-8
-PROJECT_NAME           = "WPILib C Reference Manual"
-PROJECT_NUMBER         = "Version 1.0"
-OUTPUT_DIRECTORY       = /Users/brad/Documents/WPILibDocs/CInterfaces
-CREATE_SUBDIRS         = NO
-OUTPUT_LANGUAGE        = English
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
-SHORT_NAMES            = NO
-JAVADOC_AUTOBRIEF      = NO
-QT_AUTOBRIEF           = NO
-MULTILINE_CPP_IS_BRIEF = NO
-INHERIT_DOCS           = YES
-SEPARATE_MEMBER_PAGES  = NO
-TAB_SIZE               = 8
-ALIASES                = 
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = NO
-OPTIMIZE_FOR_FORTRAN   = NO
-OPTIMIZE_OUTPUT_VHDL   = NO
-BUILTIN_STL_SUPPORT    = NO
-CPP_CLI_SUPPORT        = NO
-SIP_SUPPORT            = NO
-IDL_PROPERTY_SUPPORT   = YES
-DISTRIBUTE_GROUP_DOC   = NO
-SUBGROUPING            = YES
-TYPEDEF_HIDES_STRUCT   = NO
-SYMBOL_CACHE_SIZE      = 0
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-EXTRACT_LOCAL_METHODS  = NO
-EXTRACT_ANON_NSPACES   = NO
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = NO
-CASE_SENSE_NAMES       = NO
-HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = YES
-SORT_BRIEF_DOCS        = NO
-SORT_GROUP_NAMES       = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = NO
-SHOW_FILES             = YES
-SHOW_NAMESPACES        = YES
-FILE_VERSION_FILTER    = 
-LAYOUT_FILE            = 
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_IF_DOC_ERROR      = YES
-WARN_NO_PARAMDOC       = NO
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = /Users/brad/Documents/workspace/WPILib/CInterfaces
-INPUT_ENCODING         = UTF-8
-FILE_PATTERNS          = 
-RECURSIVE              = NO
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXCLUDE_SYMBOLS        = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
-FILTER_SOURCE_FILES    = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = NO
-INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = NO
-REFERENCES_RELATION    = NO
-REFERENCES_LINK_SOURCE = YES
-USE_HTAGS              = NO
-VERBATIM_HEADERS       = NO
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = NO
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = NO
-HTML_OUTPUT            = html
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-HTML_DYNAMIC_SECTIONS  = NO
-GENERATE_DOCSET        = NO
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-CHM_INDEX_ENCODING     = 
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-GENERATE_QHP           = NO
-QCH_FILE               = 
-QHP_NAMESPACE          = org.doxygen.Project
-QHP_VIRTUAL_FOLDER     = doc
-QHG_LOCATION           = 
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = NONE
-TREEVIEW_WIDTH         = 250
-FORMULA_FONTSIZE       = 10
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = YES
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = YES
-USE_PDFLATEX           = YES
-LATEX_BATCHMODE        = NO
-LATEX_HIDE_INDICES     = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = NO
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = NO
-MSCGEN_PATH            = /Applications/Doxygen.app/Contents/Resources/
-HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = NO
-DOT_FONTNAME           = FreeSans
-DOT_FONTSIZE           = 10
-DOT_FONTPATH           = 
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = YES
-GROUP_GRAPHS           = YES
-UML_LOOK               = NO
-TEMPLATE_RELATIONS     = NO
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-CALL_GRAPH             = NO
-CALLER_GRAPH           = NO
-GRAPHICAL_HIERARCHY    = YES
-DIRECTORY_GRAPH        = YES
-DOT_IMAGE_FORMAT       = png
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-DOT_GRAPH_MAX_NODES    = 50
-MAX_DOT_GRAPH_DEPTH    = 0
-DOT_TRANSPARENT        = NO
-DOT_MULTI_TARGETS      = NO
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/Makefile b/aos/externals/WPILib/WPILib/CInterfaces/Makefile
deleted file mode 100644
index dd8ec83..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/Makefile
+++ /dev/null
@@ -1,2404 +0,0 @@
-# Wind River Workbench generated Makefile.
-# Do not edit!!!
-#
-# The file ".wrmakefile" is the template used by the Wind River Workbench to
-# generate the makefiles of this project. Add user-specific build targets and
-# make rules only(!) in this project's ".wrmakefile" file. These will then be
-# automatically dumped into the makefiles.
-
-WIND_HOME := $(subst \,/,$(WIND_HOME))
-WIND_BASE := $(subst \,/,$(WIND_BASE))
-WIND_USR := $(subst \,/,$(WIND_USR))
-
-all : pre_build main_all post_build
-
-_clean ::
-	@echo "make: removing targets and objects of `pwd`"
-
-TRACE=0
-TRACEON=$(TRACE:0=@)
-TRACE_FLAG=$(TRACEON:1=)
-
-MAKEFILE := Makefile
-
-BUILD_SPEC = PPC603gnu
-DEBUG_MODE = 1
-SRC_DIR := .
-BUILD_ROOT_DIR := 
-PRJ_ROOT_DIR := C:/windriver/workspace/WPILib
-WS_ROOT_DIR := C:/windriver/workspace
-
-ALL_BUILD_SPECS := PPC32diab PPC32gnu PPC32sfdiab PPC32sfgnu \
-	 PPC403diab PPC403gnu PPC405diab PPC405gnu \
-	 PPC405sfdiab PPC405sfgnu PPC440diab PPC440gnu \
-	 PPC440sfdiab PPC440sfgnu PPC603diab PPC603gnu \
-	 PPC604diab PPC604gnu PPC85XXdiab PPC85XXgnu \
-	 PPC85XXsfdiab PPC85XXsfgnu PPC860sfdiab PPC860sfgnu \
-	 SIMLINUXdiab SIMLINUXgnu SIMNTdiab SIMNTgnu \
-	 SIMSPARCSOLARISdiab SIMSPARCSOLARISgnu
-ENABLED_BUILD_SPECS := PPC603gnu
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32diab_DEBUG
-else
-OBJ_DIR := PPC32diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32gnu_DEBUG
-else
-OBJ_DIR := PPC32gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32sfdiab_DEBUG
-else
-OBJ_DIR := PPC32sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC32sfgnu_DEBUG
-else
-OBJ_DIR := PPC32sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC403diab_DEBUG
-else
-OBJ_DIR := PPC403diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC403gnu_DEBUG
-else
-OBJ_DIR := PPC403gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405diab_DEBUG
-else
-OBJ_DIR := PPC405diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405gnu_DEBUG
-else
-OBJ_DIR := PPC405gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405sfdiab_DEBUG
-else
-OBJ_DIR := PPC405sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC405sfgnu_DEBUG
-else
-OBJ_DIR := PPC405sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440diab_DEBUG
-else
-OBJ_DIR := PPC440diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440gnu_DEBUG
-else
-OBJ_DIR := PPC440gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440sfdiab_DEBUG
-else
-OBJ_DIR := PPC440sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC440sfgnu_DEBUG
-else
-OBJ_DIR := PPC440sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC603diab_DEBUG
-else
-OBJ_DIR := PPC603diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC603gnu_DEBUG
-else
-OBJ_DIR := PPC603gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC604diab_DEBUG
-else
-OBJ_DIR := PPC604diab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC604gnu_DEBUG
-else
-OBJ_DIR := PPC604gnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXdiab_DEBUG
-else
-OBJ_DIR := PPC85XXdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXgnu_DEBUG
-else
-OBJ_DIR := PPC85XXgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXsfdiab_DEBUG
-else
-OBJ_DIR := PPC85XXsfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC85XXsfgnu_DEBUG
-else
-OBJ_DIR := PPC85XXsfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC860sfdiab_DEBUG
-else
-OBJ_DIR := PPC860sfdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := PPC860sfgnu_DEBUG
-else
-OBJ_DIR := PPC860sfgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMLINUXdiab_DEBUG
-else
-OBJ_DIR := SIMLINUXdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMLINUXgnu_DEBUG
-else
-OBJ_DIR := SIMLINUXgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMNTdiab_DEBUG
-else
-OBJ_DIR := SIMNTdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMNTgnu_DEBUG
-else
-OBJ_DIR := SIMNTgnu
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMSPARCSOLARISdiab_DEBUG
-else
-OBJ_DIR := SIMSPARCSOLARISdiab
-endif
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-OBJ_DIR := SIMSPARCSOLARISgnu_DEBUG
-else
-OBJ_DIR := SIMSPARCSOLARISgnu
-endif
-endif
-
-DEP_FILES := $(OBJ_DIR)/CAnalogChannel.d $(OBJ_DIR)/CCounter.d $(OBJ_DIR)/CWatchdog.d \
-	 $(OBJ_DIR)/SimpleCRobot.d $(OBJ_DIR)/CAccelerometer.d $(OBJ_DIR)/CJoystick.d \
-	 $(OBJ_DIR)/CTimer.d $(OBJ_DIR)/CCompressor.d $(OBJ_DIR)/CRobotDrive.d \
-	 $(OBJ_DIR)/CDigitalInput.d $(OBJ_DIR)/CGearTooth.d $(OBJ_DIR)/CGyro.d \
-	 $(OBJ_DIR)/CDigitalOutput.d $(OBJ_DIR)/CSolenoid.d $(OBJ_DIR)/CSerialPort.d \
-	 $(OBJ_DIR)/CRelay.d $(OBJ_DIR)/CDriverStation.d $(OBJ_DIR)/CVictor.d \
-	 $(OBJ_DIR)/CPWM.d $(OBJ_DIR)/CEncoder.d $(OBJ_DIR)/CUltrasonic.d \
-	 $(OBJ_DIR)/CJaguar.d $(OBJ_DIR)/CServo.d
--include $(DEP_FILES)
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-SUBDIRS :=
-OBJECTS := $(OBJ_DIR)/CAnalogChannel.o $(OBJ_DIR)/CCounter.o $(OBJ_DIR)/CWatchdog.o \
-	 $(OBJ_DIR)/SimpleCRobot.o $(OBJ_DIR)/CAccelerometer.o $(OBJ_DIR)/CJoystick.o \
-	 $(OBJ_DIR)/CTimer.o $(OBJ_DIR)/CCompressor.o $(OBJ_DIR)/CRobotDrive.o \
-	 $(OBJ_DIR)/CDigitalInput.o $(OBJ_DIR)/CGearTooth.o $(OBJ_DIR)/CGyro.o \
-	 $(OBJ_DIR)/CDigitalOutput.o $(OBJ_DIR)/CSolenoid.o $(OBJ_DIR)/CSerialPort.o \
-	 $(OBJ_DIR)/CRelay.o $(OBJ_DIR)/CDriverStation.o $(OBJ_DIR)/CVictor.o \
-	 $(OBJ_DIR)/CPWM.o $(OBJ_DIR)/CEncoder.o $(OBJ_DIR)/CUltrasonic.o \
-	 $(OBJ_DIR)/CJaguar.o $(OBJ_DIR)/CServo.o
-
-PROJECT_TARGETS := $(OBJECTS)
-
-SUB_OBJECTS :=
-SUB_TARGETS :=
-endif
-
-PROJECT_TYPE = DKM
-DEFINES = 
-EXPAND_DBG = 0
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCFH:vxworks63 -Xstmw-slow -DPPC32_fp60x
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mhard-float -mstrict-align -mno-implicit-fp -DPPC32_fp60x
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCFS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC32
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -msoft-float -mstrict-align
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC403diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC403
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC403FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC403gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC403
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=403 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC405FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC405FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC405
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC440FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC440FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC440
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC603diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC603
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC603FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC603gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC603
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I.. -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC604diab)
-VX_CPU_FAMILY = ppc
-CPU = PPC604
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC604FH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC604gnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC604
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=604 -mstrict-align -mno-implicit-fp
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCE500FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPCE500FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC85XX
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-VX_CPU_FAMILY = ppc
-CPU = PPC860
-TOOL_FAMILY = diab
-TOOL = sfdiab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tPPC860FS:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-VX_CPU_FAMILY = ppc
-CPU = PPC860
-TOOL_FAMILY = gnu
-TOOL = sfgnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mcpu=860 -mstrict-align -msoft-float
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-VX_CPU_FAMILY = simlinux
-CPU = SIMLINUX
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tX86LH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-VX_CPU_FAMILY = simlinux
-CPU = SIMLINUX
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mtune=i486 -march=i486
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-VX_CPU_FAMILY = simpc
-CPU = SIMNT
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tX86LH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-VX_CPU_FAMILY = simpc
-CPU = SIMNT
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = -mtune=i486 -march=i486
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-VX_CPU_FAMILY = simso
-CPU = SIMSPARCSOLARIS
-TOOL_FAMILY = diab
-TOOL = diab
-TOOL_PATH = 
-CC_ARCH_SPEC = -tSPARCFH:vxworks63
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-VX_CPU_FAMILY = simso
-CPU = SIMSPARCSOLARIS
-TOOL_FAMILY = gnu
-TOOL = gnu
-TOOL_PATH = 
-CC_ARCH_SPEC = 
-LIBPATH = 
-LIBS = 
-
-IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip 
-
-IDE_LIBRARIES = 
-endif
-
-
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi  -Wall  -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations  -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C++-Compiler = -g
-else
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC32sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC403gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC405sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC440sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC603gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604diab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC604gnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC85XXsfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),PPC860sfgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMLINUXgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMNTgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -XO -Xsize-opt
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space  -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu)
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s
-	$(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi   -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL   $(DEFINES) -o "$@" -c "$<"
-
-endif
-
-
-
-
-
--include $(PRJ_ROOT_DIR)/*.makefile
-
--include *.makefile
-
-main_all : external_build $(PROJECT_TARGETS)
-	@echo "make: built targets of `pwd`"
-
-# entry point for extending the build
-external_build ::
-	@echo ""
-
-# main entry point for pre processing prior to the build
-pre_build :: $(PRE_BUILD_STEP) generate_sources
-	@echo ""
-
-# entry point for generating sources prior to the build
-generate_sources ::
-	@echo ""
-
-# main entry point for post processing after the build
-post_build :: $(POST_BUILD_STEP) deploy_output
-	@echo ""
-
-# entry point for deploying output after the build
-deploy_output ::
-	@echo ""
-
-clean :: external_clean $(CLEAN_STEP) _clean
-
-# entry point for extending the build clean
-external_clean ::
-	@echo ""
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.cpp b/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.cpp
deleted file mode 100644
index a4a57a9..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "CInterfaces/SimpleCRobot.h"
-
-#include "Timer.h"
-#include "Utility.h"
-
-static SimpleCRobot *simpleCRobot = NULL;
-
-/**
- * The simple robot constructor.
- * The constructor, besides doing the normal constructor stuff, also calls the
- * Initialize() C function where sensors can be set up immediately after the power
- * is turned on.
- */
-SimpleCRobot::SimpleCRobot()
-{
-	simpleCRobot = this;
-	Initialize();
-}
-
-/**
- * Start a competition.
- * This code needs to track the order of the field starting to ensure that everything happens
- * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
- * when the robot is enabled. After running the correct method, wait for some state to change,
- * either the other mode starts or the robot is disabled. Then go back and wait for the robot
- * to be enabled again.
- */
-void SimpleCRobot::StartCompetition()
-{
-	while (1)
-	{
-		while (IsDisabled()) Wait(.01);		// wait for robot to be enabled
-
-		if (IsAutonomous())
-		{
-			Autonomous();					// run the autonomous method
-			while (IsAutonomous() && !IsDisabled()) Wait(.01);
-		}
-		else
-		{
-			OperatorControl();				// run the operator control method
-			while (IsOperatorControl() && !IsDisabled()) Wait(.01);
-		}
-	}
-}
-
-bool IsAutonomous()
-{
-	wpi_assert(simpleCRobot != NULL);
-	return simpleCRobot->IsAutonomous();
-}
-
-bool IsOperatorControl()
-{
-	wpi_assert(simpleCRobot != NULL);
-	return simpleCRobot->IsOperatorControl();
-}
-
-bool IsDisabled()
-{
-	wpi_assert(simpleCRobot != NULL);
-	return simpleCRobot->IsDisabled();
-}
-
-void SetWatchdogEnabled(bool enable)
-{
-	simpleCRobot->GetWatchdog().SetEnabled(enable);
-}
-
-void SetWatchdogExpiration(float time)
-{
-	simpleCRobot->GetWatchdog().SetExpiration(time);
-}
-
-void WatchdogFeed()
-{
-	simpleCRobot->GetWatchdog().Feed();
-}
-
diff --git a/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.h b/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.h
deleted file mode 100644
index 769e760..0000000
--- a/aos/externals/WPILib/WPILib/CInterfaces/SimpleCRobot.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef SIMPLE_C_ROBOT_H
-#define SIMPLE_C_ROBOT_H
-
-#include "RobotBase.h"
-
-void Autonomous();
-void OperatorControl();
-void Initialize();
-
-bool IsAutonomous();
-bool IsOperatorControl();
-bool IsDisabled();
-
-void SetWatchdogEnabled(bool enable);
-void SetWatchdogExpiration(float time);
-void WatchdogFeed();
-
-class SimpleCRobot: public RobotBase
-{
-public:
-	SimpleCRobot();
-	virtual ~SimpleCRobot() {}
-	void StartCompetition();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/Command.cpp b/aos/externals/WPILib/WPILib/Commands/Command.cpp
index b037977..42adcd6 100644
--- a/aos/externals/WPILib/WPILib/Commands/Command.cpp
+++ b/aos/externals/WPILib/WPILib/Commands/Command.cpp
@@ -8,7 +8,6 @@
 #include "Commands/CommandGroup.h"
 #include "Commands/Scheduler.h"
 #include "DriverStation.h"
-#include "NetworkTables/NetworkTable.h"
 #include "Timer.h"
 #include "WPIErrors.h"
 
@@ -16,8 +15,11 @@
 static const char *kRunning = "running";
 static const char *kIsParented = "isParented";
 
+int Command::m_commandCounter = 0;
+
 void Command::InitCommand(const char *name, double timeout)
 {
+	m_commandID = m_commandCounter++;
 	m_timeout = timeout;
 	m_locked = false;
 	m_startTime = -1;
@@ -27,7 +29,6 @@
 	m_canceled = false;
 	m_runWhenDisabled = false;
 	m_parent = NULL;
-	m_table = NULL;
 	if (name == NULL)
 	{
 		// Don't have a way to find the subclass name like java, so use the address
@@ -39,6 +40,7 @@
 	{
 		m_name = name;
 	}
+	m_table = NULL;	
 }
 
 /**
@@ -89,11 +91,19 @@
 }
 
 Command::~Command()
-{
-	if (m_table != NULL)
-	{
+{//TODO deal with cleaning up all listeners
+	/*if (m_table != NULL){
 		m_table->RemoveChangeListener(kRunning, this);
-	}
+	}*/
+}
+
+/**
+ * Get the ID (sequence number) for this command
+ * The ID is a unique sequence number that is incremented for each command.
+ * @return the ID of this command
+ */
+int Command::GetID() {
+	return m_commandID;
 }
 
 /**
@@ -430,28 +440,36 @@
 	return m_name;
 }
 
-std::string Command::GetType()
+std::string Command::GetSmartDashboardType()
 {
 	return "Command";
 }
 
-NetworkTable *Command::GetTable()
+void Command::InitTable(ITable* table)
 {
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-		m_table->PutString(kName, GetName());
-		m_table->PutBoolean(kRunning, IsRunning());
-		m_table->PutBoolean(kIsParented, m_parent != NULL);
-		m_table->AddChangeListener(kRunning, this);
-	}
+    if(m_table!=NULL)
+    	m_table->RemoveTableListener(this);
+    m_table = table;
+    if(m_table!=NULL){
+    	m_table->PutString(kName, GetName());
+    	m_table->PutBoolean(kRunning, IsRunning());
+    	m_table->PutBoolean(kIsParented, m_parent != NULL);
+    	m_table->AddTableListener(kRunning, this, false);
+    }
+}
+
+ITable* Command::GetTable(){
 	return m_table;
 }
 
-void Command::ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type)
+void Command::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew)
 {
-	if (table->GetBoolean(kRunning))
-		Start();
-	else
-		Cancel();
+	if (value.b){
+		if(!IsRunning())
+			Start();
+	}
+	else{
+		if(IsRunning())
+			Cancel();
+	}
 }
diff --git a/aos/externals/WPILib/WPILib/Commands/Command.h b/aos/externals/WPILib/WPILib/Commands/Command.h
index ddfd677..5a9a77f 100644
--- a/aos/externals/WPILib/WPILib/Commands/Command.h
+++ b/aos/externals/WPILib/WPILib/Commands/Command.h
@@ -8,13 +8,11 @@
 #define __COMMAND_H__
 
 #include "ErrorBase.h"
-#include "NetworkTables/NetworkTableChangeListener.h"
-#include "SmartDashboard/SmartDashboardNamedData.h"
+#include "SmartDashboard/NamedSendable.h"
 #include <set>
 #include <string>
 
 class CommandGroup;
-class NetworkTable;
 class Subsystem;
 
 /**
@@ -42,7 +40,7 @@
  * @see CommandGroup
  * @see Subsystem
  */
-class Command : public SmartDashboardNamedData, public NetworkTableChangeListener, public ErrorBase
+class Command : public ErrorBase, public NamedSendable, public ITableListener
 {
 	friend class CommandGroup;
 	friend class Scheduler;
@@ -67,13 +65,8 @@
 	CommandGroup *GetGroup();
 	void SetRunWhenDisabled(bool run);
 	bool WillRunWhenDisabled();
+	int GetID();
 
-	virtual std::string GetName();
-	virtual std::string GetType();
-	virtual NetworkTable *GetTable();
-
-	virtual void ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type);
-	virtual void ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type) {}
 
 protected:
 	void SetTimeout(double timeout);
@@ -155,8 +148,17 @@
 	bool m_runWhenDisabled;
 	/** The {@link CommandGroup} this is in */
 	CommandGroup *m_parent;
-
-	NetworkTable *m_table;
+	int m_commandID;
+	static int m_commandCounter;
+	
+public:
+	virtual std::string GetName();
+	virtual void InitTable(ITable* table);
+	virtual ITable* GetTable();
+	virtual std::string GetSmartDashboardType();
+	virtual void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+protected:
+	ITable* m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp b/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp
index d289164..19da02d 100644
--- a/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp
+++ b/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp
@@ -6,39 +6,40 @@
 
 #include "Commands/PIDCommand.h"
 
-#include "SmartDashboard/SendablePIDController.h"
+#include "PIDController.h"
 #include "float.h"
 
-// XXX max and min are not used?
+PIDCommand::PIDCommand(const char *name, double p, double i, double d, double f, double period) :
+		Command(name)
+{
+	m_controller = new PIDController(p, i, d, this, this, period);
+}
+
+PIDCommand::PIDCommand(double p, double i, double d, double f, double period)
+{
+	m_controller = new PIDController(p, i, d, f, this, this, period);
+}
 
 PIDCommand::PIDCommand(const char *name, double p, double i, double d) :
 	Command(name)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this);
+	m_controller = new PIDController(p, i, d, this, this);
 }
 
 PIDCommand::PIDCommand(const char *name, double p, double i, double d, double period) :
 	Command(name)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this, period);
+	m_controller = new PIDController(p, i, d, this, this, period);
 }
 
 PIDCommand::PIDCommand(double p, double i, double d)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this);
+	m_controller = new PIDController(p, i, d, this, this);
 }
 
 PIDCommand::PIDCommand(double p, double i, double d, double period)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this, period);
+	m_controller = new PIDController(p, i, d, this, this, period);
 }
 
 PIDCommand::~PIDCommand()
@@ -96,27 +97,10 @@
 	return ReturnPIDInput();
 }
 
-void PIDCommand::SetSetpointRange(double a, double b)
-{
-	if (a <= b)
-	{
-		m_min = a;
-		m_max = b;
-	}
-	else
-	{
-		m_min = b;
-		m_max = a;
-	}
+std::string PIDCommand::GetSmartDashboardType(){
+        return "PIDCommand";
 }
-
-std::string PIDCommand::GetType()
-{
-	return "PIDCommand";
+void PIDCommand::InitTable(ITable* table){
+	m_controller->InitTable(table);
+	Command::InitTable(table);
 }
-
-NetworkTable *PIDCommand::GetControllerTable()
-{
-	return m_controller->GetTable();
-}
-
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDCommand.h b/aos/externals/WPILib/WPILib/Commands/PIDCommand.h
index 9e503b9..be44f06 100644
--- a/aos/externals/WPILib/WPILib/Commands/PIDCommand.h
+++ b/aos/externals/WPILib/WPILib/Commands/PIDCommand.h
@@ -11,17 +11,17 @@
 #include "PIDSource.h"
 #include "PIDOutput.h"
 
-class NetworkTable;
 class PIDController;
-class SendablePIDController;
 
 class PIDCommand : public Command, public PIDOutput, public PIDSource
 {
 public:
 	PIDCommand(const char *name, double p, double i, double d);
 	PIDCommand(const char *name, double p, double i, double d, double period);
+	PIDCommand(const char *name, double p, double i, double d, double f, double perioid);
 	PIDCommand(double p, double i, double d);
 	PIDCommand(double p, double i, double d, double period);
+	PIDCommand(double p, double i, double d, double f, double period);
 	virtual ~PIDCommand();
 	
 	void SetSetpointRelative(double deltaSetpoint);
@@ -31,10 +31,6 @@
 
 	// PIDSource interface
 	virtual double PIDGet();
-
-	NetworkTable *GetControllerTable();
-
-	virtual std::string GetType();
 protected:
 	PIDController *GetPIDController();
 	virtual void _Initialize();
@@ -43,18 +39,17 @@
 	void SetSetpoint(double setpoint);
 	double GetSetpoint();
 	double GetPosition();
-	void SetSetpointRange(double a, double b);
 
 	virtual double ReturnPIDInput() = 0;
 	virtual void UsePIDOutput(double output) = 0;
 
 private:	
-	/** The max setpoint value */
-	double m_max;
-	/** The min setpoint value */
-	double m_min;
 	/** The internal {@link PIDController} */
-	SendablePIDController *m_controller;
+	PIDController *m_controller;
+
+public:
+	virtual void InitTable(ITable* table);
+	virtual std::string GetSmartDashboardType();
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.cpp b/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.cpp
index b600cb9..b093725 100644
--- a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.cpp
+++ b/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.cpp
@@ -5,42 +5,97 @@
 /*----------------------------------------------------------------------------*/
 
 #include "Commands/PIDSubsystem.h"
-#include "SmartDashboard/SendablePIDController.h"
+#include "PIDController.h"
 #include "float.h"
 
 // XXX max and min are not used?
 
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.
+ * @param name the name
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ */
 PIDSubsystem::PIDSubsystem(const char *name, double p, double i, double d) :
 	Subsystem(name)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this);
+	m_controller = new PIDController(p, i, d, this, this);
 }
 
-PIDSubsystem::PIDSubsystem(const char *name, double p, double i, double d,
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.
+ * @param name the name
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ * @param f the feedforward value
+ */
+PIDSubsystem::PIDSubsystem(const char *name, double p, double i, double d, double f) :
+	Subsystem(name)
+{
+	m_controller = new PIDController(p, i, d, f, this, this);
+}
+
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.  It will also space the time
+ * between PID loop calculations to be equal to the given period.
+ * @param name the name
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ * @param f the feedfoward value
+ * @param period the time (in seconds) between calculations
+ */
+PIDSubsystem::PIDSubsystem(const char *name, double p, double i, double d, double f,
 	double period) :
 	Subsystem(name)
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this, period);
+	m_controller = new PIDController(p, i, d, f, this, this, period);
 }
 
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.
+ * It will use the class name as its name.
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ */
 PIDSubsystem::PIDSubsystem(double p, double i, double d) :
 	Subsystem("PIDSubsystem")
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this);
+	m_controller = new PIDController(p, i, d, this, this);
 }
 
-PIDSubsystem::PIDSubsystem(double p, double i, double d, double period) :
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.
+ * It will use the class name as its name.
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ * @param f the feedforward value
+ */
+PIDSubsystem::PIDSubsystem(double p, double i, double d, double f) :
 	Subsystem("PIDSubsystem")
 {
-	m_max = DBL_MAX;
-	m_min = DBL_MIN;
-	m_controller = new SendablePIDController(p, i, d, this, this, period);
+	m_controller = new PIDController(p, i, d, f, this, this);
+}
+
+/**
+ * Instantiates a {@link PIDSubsystem} that will use the given p, i and d values.
+ * It will use the class name as its name.
+ * It will also space the time
+ * between PID loop calculations to be equal to the given period.
+ * @param p the proportional value
+ * @param i the integral value
+ * @param d the derivative value
+ * @param f the feedforward value
+ * @param period the time (in seconds) between calculations
+ */
+PIDSubsystem::PIDSubsystem(double p, double i, double d, double f, double period) :
+	Subsystem("PIDSubsystem")
+{
+	m_controller = new PIDController(p, i, d, f, this, this, period);
 }
 
 PIDSubsystem::~PIDSubsystem()
@@ -48,65 +103,120 @@
 	delete m_controller;
 }
 
+/**
+ * Enables the internal {@link PIDController}
+ */
 void PIDSubsystem::Enable()
 {
 	m_controller->Enable();
 }
 
+/** 
+  * Disables the internal {@link PIDController}
+  */
 void PIDSubsystem::Disable()
 {
 	m_controller->Disable();
 }
 
-std::string PIDSubsystem::GetType()
-{
-	return "PIDSubsystem";
-}
 
-NetworkTable *PIDSubsystem::GetControllerTable()
-{
-	return m_controller->GetTable();
-}
-
+/**
+ * Returns the {@link PIDController} used by this {@link PIDSubsystem}.
+ * Use this if you would like to fine tune the pid loop.
+ *
+ * @return the {@link PIDController} used by this {@link PIDSubsystem}
+ */
 PIDController *PIDSubsystem::GetPIDController()
 {
 	return m_controller;
 }
 
+/**
+ * Sets the setpoint to the given value.  If {@link PIDCommand#SetRange(double, double) SetRange(...)}
+ * was called,
+ * then the given setpoint
+ * will be trimmed to fit within the range.
+ * @param setpoint the new setpoint
+ */
 void PIDSubsystem::SetSetpoint(double setpoint)
 {
 	m_controller->SetSetpoint(setpoint);
 }
 
+/**
+ * Adds the given value to the setpoint.
+ * If {@link PIDCommand#SetRange(double, double) SetRange(...)} was used,
+ * then the bounds will still be honored by this method.
+ * @param deltaSetpoint the change in the setpoint
+ */
 void PIDSubsystem::SetSetpointRelative(double deltaSetpoint)
 {
 	SetSetpoint(GetSetpoint() + deltaSetpoint);
 }
 
+/**
+ * Return the current setpoint
+ * @return The current setpoint
+ */
 double PIDSubsystem::GetSetpoint()
 {
 	return m_controller->GetSetpoint();
 }
 
+/**
+ * Sets the maximum and minimum values expected from the input.
+ * 
+ * @param minimumInput the minimum value expected from the input
+ * @param maximumInput the maximum value expected from the output
+ */
+void PIDSubsystem::SetInputRange(float minimumInput, float maximumInput)
+{
+	m_controller->SetInputRange(minimumInput, maximumInput);
+}
+
+/*
+ * Set the absolute error which is considered tolerable for use with
+ * OnTarget.
+ * @param percentage error which is tolerable
+ */
+void PIDSubsystem::SetAbsoluteTolerance(float absValue) {
+	m_controller->SetAbsoluteTolerance(absValue);
+}
+
+/*
+ * Set the percentage error which is considered tolerable for use with
+ * OnTarget.
+ * @param percentage error which is tolerable
+ */
+void PIDSubsystem::SetPercentTolerance(float percent) {
+	m_controller->SetPercentTolerance(percent);
+}
+
+/*
+ * Return true if the error is within the percentage of the total input range,
+ * determined by SetTolerance. This asssumes that the maximum and minimum input
+ * were set using SetInput. Use OnTarget() in the IsFinished() method of commands
+ * that use this subsystem.
+ * 
+ * Currently this just reports on target as the actual value passes through the setpoint.
+ * Ideally it should be based on being within the tolerance for some period of time.
+ * 
+ * @return true if the error is within the percentage tolerance of the input range
+ */
+bool PIDSubsystem::OnTarget()
+{
+	return m_controller->OnTarget();
+}
+
+/**
+ * Returns the current position
+ * @return the current position
+ */
 double PIDSubsystem::GetPosition()
 {
 	return ReturnPIDInput();
 }
 
-void PIDSubsystem::SetSetpointRange(double a, double b)
-{
-	if (a <= b)
-	{
-		m_min = a;
-		m_max = b;
-	}
-	else
-	{
-		m_min = b;
-		m_max = a;
-	}
-}
-
 void PIDSubsystem::PIDWrite(float output)
 {
 	UsePIDOutput(output);
@@ -116,3 +226,12 @@
 {
 	return ReturnPIDInput();
 }
+
+
+std::string PIDSubsystem::GetSmartDashboardType(){
+	return "PIDCommand";
+}
+void PIDSubsystem::InitTable(ITable* table){
+	m_controller->InitTable(table);
+	Subsystem::InitTable(table);
+}
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.h b/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.h
index 32c2925..6b9d138 100644
--- a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.h
+++ b/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.h
@@ -12,24 +12,29 @@
 #include "PIDSource.h"
 #include "PIDOutput.h"
 
-class NetworkTable;
-class SendablePIDController;
-
+/**
+ * This class is designed to handle the case where there is a {@link Subsystem}
+ * which uses a single {@link PIDController} almost constantly (for instance, 
+ * an elevator which attempts to stay at a constant height).
+ *
+ * <p>It provides some convenience methods to run an internal {@link PIDController}.
+ * It also allows access to the internal {@link PIDController} in order to give total control
+ * to the programmer.</p>
+ *
+ */
 class PIDSubsystem : public Subsystem, public PIDOutput, public PIDSource
 {
 public:
 	PIDSubsystem(const char *name, double p, double i, double d);
-	PIDSubsystem(const char *name, double p, double i, double d, double period);
+	PIDSubsystem(const char *name, double p, double i, double d, double f);
+	PIDSubsystem(const char *name, double p, double i, double d, double f, double period);
 	PIDSubsystem(double p, double i, double d);
-	PIDSubsystem(double p, double i, double d, double period);
+	PIDSubsystem(double p, double i, double d, double f);
+	PIDSubsystem(double p, double i, double d, double f, double period);
 	virtual ~PIDSubsystem();
 	
 	void Enable();
 	void Disable();
-	NetworkTable *GetControllerTable();
-
-	// SmartDashboardData interface
-	virtual std::string GetType();
 
 	// PIDOutput interface
 	virtual void PIDWrite(float output);
@@ -38,10 +43,14 @@
 	virtual double PIDGet();
 	void SetSetpoint(double setpoint);
 	void SetSetpointRelative(double deltaSetpoint);
+	void SetInputRange(float minimumInput, float maximumInput);
 	double GetSetpoint();
 	double GetPosition();
-	void SetSetpointRange(double a, double b);
 
+	virtual void SetAbsoluteTolerance(float absValue);
+	virtual void SetPercentTolerance(float percent);
+	virtual bool OnTarget();
+	
 protected:
 	PIDController *GetPIDController();
 
@@ -49,12 +58,12 @@
 	virtual void UsePIDOutput(double output) = 0;
 
 private:
-	/** The max setpoint value */
-	double m_max;
-	/** The min setpoint value */
-	double m_min;
 	/** The internal {@link PIDController} */
-	SendablePIDController *m_controller;
+	PIDController *m_controller;
+
+public:
+	virtual void InitTable(ITable* table);
+	virtual std::string GetSmartDashboardType();
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp b/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp
index 918a68f..3f63180 100644
--- a/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp
+++ b/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp
@@ -9,97 +9,98 @@
 #include "Buttons/ButtonScheduler.h"
 #include "Commands/Subsystem.h"
 #include "NetworkCommunication/UsageReporting.h"
-#include "NetworkTables/NetworkTable.h"
 #include "Synchronized.h"
 #include "WPIErrors.h"
 #include <iostream>
 #include <set>
 #include <semLib.h>
+#include <algorithm>
 
 Scheduler *Scheduler::_instance = NULL;
 
 Scheduler::Scheduler() :
-	m_tableLock(NULL),
-	m_table(NULL),
-	m_buttonsLock(NULL),
-	m_additionsLock(NULL),
-	m_adding(false)
-{
-	m_tableLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_buttonsLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_additionsLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
+	m_buttonsLock(NULL), m_additionsLock(NULL), m_adding(false) {
+	m_buttonsLock = semMCreate(
+			SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
+	m_additionsLock = semMCreate(
+			SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
 
-	nUsageReporting::report(nUsageReporting::kResourceType_Command, nUsageReporting::kCommand_Scheduler);
+	nUsageReporting::report(nUsageReporting::kResourceType_Command,
+			nUsageReporting::kCommand_Scheduler);
+
+	m_table = NULL;
+	m_enabled = true;
 }
 
-Scheduler::~Scheduler()
-{
+Scheduler::~Scheduler() {
 	semTake(m_additionsLock, WAIT_FOREVER);
 	semDelete(m_additionsLock);
 
 	semTake(m_buttonsLock, WAIT_FOREVER);
 	semDelete(m_buttonsLock);
-
-	semTake(m_tableLock, WAIT_FOREVER);
-	semDelete(m_tableLock);
 }
 
 /**
  * Returns the {@link Scheduler}, creating it if one does not exist.
  * @return the {@link Scheduler}
  */
-Scheduler *Scheduler::GetInstance()
-{
+Scheduler *Scheduler::GetInstance() {
 	if (_instance == NULL)
 		_instance = new Scheduler();
 	return _instance;
 }
 
-void Scheduler::AddCommand(Command *command)
-{
+void Scheduler::SetEnabled(bool enabled) {
+	m_enabled = enabled;
+}
+
+/**
+ * Add a command to be scheduled later.
+ * In any pass through the scheduler, all commands are added to the additions list, then
+ * at the end of the pass, they are all scheduled.
+ * @param command The command to be scheduled
+ */
+void Scheduler::AddCommand(Command *command) {
 	Synchronized sync(m_additionsLock);
+	if (std::find(m_additions.begin(), m_additions.end(), command)
+			!= m_additions.end())
+		return;
 	m_additions.push_back(command);
 }
 
-void Scheduler::AddButton(ButtonScheduler *button)
-{
+void Scheduler::AddButton(ButtonScheduler *button) {
 	Synchronized sync(m_buttonsLock);
 	m_buttons.push_back(button);
 }
 
-void Scheduler::ProcessCommandAddition(Command *command)
-{
+void Scheduler::ProcessCommandAddition(Command *command) {
 	if (command == NULL)
 		return;
 
 	// Check to make sure no adding during adding
-	if (m_adding)
-	{
+	if (m_adding) {
 		wpi_setWPIErrorWithContext(IncompatibleState, "Can not start command from cancel method");
 		return;
 	}
 
 	// Only add if not already in
 	CommandSet::iterator found = m_commands.find(command);
-	if (found == m_commands.end())
-	{
+	if (found == m_commands.end()) {
 		// Check that the requirements can be had
 		Command::SubsystemSet requirements = command->GetRequirements();
 		Command::SubsystemSet::iterator iter;
-		for (iter = requirements.begin(); iter != requirements.end(); iter++)
-		{
+		for (iter = requirements.begin(); iter != requirements.end(); iter++) {
 			Subsystem *lock = *iter;
-			if (lock->GetCurrentCommand() != NULL && !lock->GetCurrentCommand()->IsInterruptible())
+			if (lock->GetCurrentCommand() != NULL
+					&& !lock->GetCurrentCommand()->IsInterruptible())
 				return;
 		}
 
 		// Give it the requirements
 		m_adding = true;
-		for (iter = requirements.begin(); iter != requirements.end(); iter++)
-		{
+		for (iter = requirements.begin(); iter != requirements.end(); iter++) {
 			Subsystem *lock = *iter;
-			if (lock->GetCurrentCommand() != NULL)
-			{
+			if (lock->GetCurrentCommand() != NULL) {
 				lock->GetCurrentCommand()->Cancel();
 				Remove(lock->GetCurrentCommand());
 			}
@@ -110,6 +111,7 @@
 		m_commands.insert(command);
 
 		command->StartRunning();
+		m_runningCommandsChanged = true;
 	}
 }
 
@@ -125,53 +127,38 @@
  * <li> Add Defaults </li>
  * </ol>
  */
-void Scheduler::Run()
-{
+void Scheduler::Run() {
 	// Get button input (going backwards preserves button priority)
 	{
+		if (!m_enabled)
+			return;
+
 		Synchronized sync(m_buttonsLock);
 		ButtonVector::reverse_iterator rButtonIter = m_buttons.rbegin();
-		for (; rButtonIter != m_buttons.rend(); rButtonIter++)
-		{
+		for (; rButtonIter != m_buttons.rend(); rButtonIter++) {
 			(*rButtonIter)->Execute();
 		}
 	}
+	
+	m_runningCommandsChanged = false;
 
 	// Loop through the commands
 	CommandSet::iterator commandIter = m_commands.begin();
-	for (; commandIter != m_commands.end();)
-	{
+	for (; commandIter != m_commands.end();) {
 		Command *command = *commandIter;
 		// Increment before potentially removing to keep the iterator valid
 		commandIter++;
-		if (!command->Run())
-		{
+		if (!command->Run()) {
 			Remove(command);
+			m_runningCommandsChanged = true;
 		}
 	}
 
-	// Send the value over the table
-	if (m_table != NULL) {
-		int count = 0;
-		Synchronized sync(m_tableLock);
-		m_table->BeginTransaction();
-		commandIter = m_commands.begin();
-		for (; commandIter != m_commands.end(); commandIter++)
-		{
-			char buf[10];
-			snprintf(buf, 10, "%d", ++count);
-			m_table->PutSubTable(buf, (*commandIter)->GetTable());
-		}
-		m_table->PutInt("count", count);
-		m_table->EndTransaction();
-	}
-
 	// Add the new things
 	{
 		Synchronized sync(m_additionsLock);
 		CommandVector::iterator additionsIter = m_additions.begin();
-		for (; additionsIter != m_additions.end(); additionsIter++)
-		{
+		for (; additionsIter != m_additions.end(); additionsIter++) {
 			ProcessCommandAddition(*additionsIter);
 		}
 		m_additions.clear();
@@ -179,15 +166,15 @@
 
 	// Add in the defaults
 	Command::SubsystemSet::iterator subsystemIter = m_subsystems.begin();
-	for (; subsystemIter != m_subsystems.end(); subsystemIter++)
-	{
+	for (; subsystemIter != m_subsystems.end(); subsystemIter++) {
 		Subsystem *lock = *subsystemIter;
-		if (lock->GetCurrentCommand() == NULL)
-		{
+		if (lock->GetCurrentCommand() == NULL) {
 			ProcessCommandAddition(lock->GetDefaultCommand());
 		}
 		lock->ConfirmCommand();
 	}
+
+	UpdateTable();
 }
 
 /**
@@ -195,10 +182,8 @@
  * if a default {@link Command} needs to be run.  All {@link Subsystem Subsystems} should call this.
  * @param system the system
  */
-void Scheduler::RegisterSubsystem(Subsystem *subsystem)
-{
-	if (subsystem == NULL)
-	{
+void Scheduler::RegisterSubsystem(Subsystem *subsystem) {
+	if (subsystem == NULL) {
 		wpi_setWPIErrorWithContext(NullParameter, "subsystem");
 		return;
 	}
@@ -209,10 +194,8 @@
  * Removes the {@link Command} from the {@link Scheduler}.
  * @param command the command to remove
  */
-void Scheduler::Remove(Command *command)
-{
-	if (command == NULL)
-	{
+void Scheduler::Remove(Command *command) {
+	if (command == NULL) {
 		wpi_setWPIErrorWithContext(NullParameter, "command");
 		return;
 	}
@@ -222,8 +205,7 @@
 
 	Command::SubsystemSet requirements = command->GetRequirements();
 	Command::SubsystemSet::iterator iter = requirements.begin();
-	for (; iter != requirements.end(); iter++)
-	{
+	for (; iter != requirements.end(); iter++) {
 		Subsystem *lock = *iter;
 		lock->SetCurrentCommand(NULL);
 	}
@@ -231,22 +213,76 @@
 	command->Removed();
 }
 
-std::string Scheduler::GetName()
-{
-    return "Scheduler";
-}
-
-std::string Scheduler::GetType()
-{
-    return "Scheduler";
-}
-
-NetworkTable *Scheduler::GetTable()
-{
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-		m_table->PutInt("count", 0);
+void Scheduler::RemoveAll() {
+	while (m_commands.size() > 0) {
+		Remove(*m_commands.begin());
 	}
+}
+
+/**
+ * Update the network tables associated with the Scheduler object on the SmartDashboard
+ */
+void Scheduler::UpdateTable() {
+	CommandSet::iterator commandIter;
+	if (m_table != NULL) {
+		// Get the list of possible commands to cancel
+		m_table->RetrieveValue("Cancel", *toCancel);
+//		m_table->RetrieveValue("Ids", *ids);
+
+		// cancel commands that have had the cancel buttons pressed
+		// on the SmartDashboad
+		if (toCancel->size() > 0) {
+			for (commandIter = m_commands.begin(); commandIter
+					!= m_commands.end(); ++commandIter) {
+				for (unsigned i = 0; i < toCancel->size(); i++) {
+					Command *c = *commandIter;
+					if (c->GetID() == toCancel->get(i)) {
+						c->Cancel();
+					}
+				}
+			}
+			toCancel->setSize(0);
+			m_table->PutValue("Cancel", *toCancel);
+		}
+		
+		// Set the running commands
+		if (m_runningCommandsChanged) {
+			commands->setSize(0);
+			ids->setSize(0);
+			for (commandIter = m_commands.begin(); commandIter != m_commands.end(); ++commandIter) {
+				Command *c = *commandIter;
+				commands->add(c->GetName());
+				ids->add(c->GetID());
+			}
+			m_table->PutValue("Names", *commands);
+			m_table->PutValue("Ids", *ids);
+		}
+	}
+}
+
+std::string Scheduler::GetName() {
+	return "Scheduler";
+}
+
+std::string Scheduler::GetType() {
+	return "Scheduler";
+}
+
+std::string Scheduler::GetSmartDashboardType() {
+	return "Scheduler";
+}
+
+void Scheduler::InitTable(ITable *subTable) {
+	m_table = subTable;
+	commands = new StringArray();
+	ids = new NumberArray();
+	toCancel = new NumberArray();
+
+	m_table->PutValue("Names", *commands);
+	m_table->PutValue("Ids", *ids);
+	m_table->PutValue("Cancel", *toCancel);
+}
+
+ITable * Scheduler::GetTable() {
 	return m_table;
 }
diff --git a/aos/externals/WPILib/WPILib/Commands/Scheduler.h b/aos/externals/WPILib/WPILib/Commands/Scheduler.h
index a70dc59..3547e2b 100644
--- a/aos/externals/WPILib/WPILib/Commands/Scheduler.h
+++ b/aos/externals/WPILib/WPILib/Commands/Scheduler.h
@@ -9,30 +9,38 @@
 
 #include "Commands/Command.h"
 #include "ErrorBase.h"
-#include "SmartDashboard/SmartDashboardNamedData.h"
+#include "SmartDashboard/NamedSendable.h"
+#include "networktables/NetworkTable.h"
+#include "networktables2/type/NumberArray.h"
+#include "networktables2/type/StringArray.h"
+#include "SmartDashboard/SmartDashboard.h"
 #include <list>
 #include <map>
 #include <set>
 #include <vector>
 
 class ButtonScheduler;
-class NetworkTable;
 class Subsystem;
 
-class Scheduler : public SmartDashboardNamedData, public ErrorBase
+class Scheduler : public ErrorBase, public NamedSendable
 {
 public:
 	static Scheduler *GetInstance();
 
-	virtual std::string GetName();
-	virtual std::string GetType();
-	virtual NetworkTable *GetTable();
-
 	void AddCommand(Command* command);
 	void AddButton(ButtonScheduler* button);
 	void RegisterSubsystem(Subsystem *subsystem);
 	void Run();	
 	void Remove(Command *command);
+	void RemoveAll();
+	void SetEnabled(bool enabled);
+	
+	void UpdateTable();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+	std::string GetName();
+	std::string GetType();
 
 private:
 	Scheduler();
@@ -41,8 +49,6 @@
 	void ProcessCommandAddition(Command *command);
 
 	static Scheduler *_instance;
-	SEM_ID m_tableLock;
-	NetworkTable *m_table;
 	Command::SubsystemSet m_subsystems;
 	SEM_ID m_buttonsLock;
 	typedef std::vector<ButtonScheduler *> ButtonVector;
@@ -53,6 +59,12 @@
 	typedef std::set<Command *> CommandSet;
 	CommandSet m_commands;
 	bool m_adding;
+	bool m_enabled;
+	StringArray *commands;
+	NumberArray *ids;
+	NumberArray *toCancel;
+	ITable *m_table;
+	bool m_runningCommandsChanged;
 };
 #endif
 
diff --git a/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp b/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp
index ed30f2f..bdc0da8 100644
--- a/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp
+++ b/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp
@@ -8,7 +8,6 @@
 
 #include "Commands/Command.h"
 #include "Commands/Scheduler.h"
-#include "NetworkTables/NetworkTable.h"
 #include "WPIErrors.h"
 
 /**
@@ -16,13 +15,14 @@
  * @param name the name of the subsystem
  */
 Subsystem::Subsystem(const char *name) :
-	m_table(NULL),
 	m_currentCommand(NULL),
 	m_defaultCommand(NULL),
 	m_initializedDefaultCommand(false)
 {
 	m_name = name;
 	Scheduler::GetInstance()->RegisterSubsystem(this);
+	m_table = NULL;
+	m_currentCommandChanged = true;
 }
 /**
  * Initialize the default command for this subsystem
@@ -75,10 +75,10 @@
 	}
 	if (m_table != NULL)
 	{
-		if (m_defaultCommand != 0)
+		if (m_defaultCommand != NULL)
 		{
 			m_table->PutBoolean("hasDefault", true);
-			m_table->PutSubTable("default", m_defaultCommand->GetTable());
+			m_table->PutString("default", m_defaultCommand->GetName());
 		}
 		else
 		{
@@ -107,6 +107,7 @@
 void Subsystem::SetCurrentCommand(Command *command)
 {
 	m_currentCommand = command;
+	m_currentCommandChanged = true;
 }
 
 /**
@@ -125,36 +126,54 @@
  */
 void Subsystem::ConfirmCommand()
 {
-	if (m_table != NULL)
-	{
-		if (m_currentCommand != NULL)
+	if (m_currentCommandChanged) {
+		if (m_table != NULL)
 		{
-			m_table->PutBoolean("hasCommand", true);
-			m_table->PutSubTable("command", m_currentCommand->GetTable());
+			if (m_currentCommand != NULL)
+			{
+				m_table->PutBoolean("hasCommand", true);
+				m_table->PutString("command", m_currentCommand->GetName());
+			}
+			else
+			{
+				m_table->PutBoolean("hasCommand", false);
+			}
 		}
-		else
-		{
-			m_table->PutBoolean("hasCommand", false);
-		}
+		m_currentCommandChanged = false;
 	}
 }
 
+
+
 std::string Subsystem::GetName()
 {
 	return m_name;
 }
 
-std::string Subsystem::GetType()
+std::string Subsystem::GetSmartDashboardType()
 {
 	return "Subsystem";
 }
 
-NetworkTable *Subsystem::GetTable()
+void Subsystem::InitTable(ITable* table)
 {
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-		m_table->PutInt("count", 0);
-	}
+    m_table = table;
+    if(m_table!=NULL){
+        if (m_defaultCommand != NULL) {
+        	m_table->PutBoolean("hasDefault", true);
+        	m_table->PutString("default", m_defaultCommand->GetName());
+        } else {
+        	m_table->PutBoolean("hasDefault", false);
+        }
+        if (m_currentCommand != NULL) {
+        	m_table->PutBoolean("hasCommand", true);
+            m_table->PutString("command", m_currentCommand->GetName());
+        } else {
+        	m_table->PutBoolean("hasCommand", false);
+        }
+    }
+}
+
+ITable* Subsystem::GetTable(){
 	return m_table;
 }
diff --git a/aos/externals/WPILib/WPILib/Commands/Subsystem.h b/aos/externals/WPILib/WPILib/Commands/Subsystem.h
index 8f1e529..1bc1fd2 100644
--- a/aos/externals/WPILib/WPILib/Commands/Subsystem.h
+++ b/aos/externals/WPILib/WPILib/Commands/Subsystem.h
@@ -8,23 +8,19 @@
 #define __SUBSYSTEM_H__
 
 #include "ErrorBase.h"
-#include "SmartDashboard/SmartDashboardNamedData.h"
+#include "SmartDashboard/NamedSendable.h"
 #include <string>
 
-class NetworkTable;
+
 class Command;
 
-class Subsystem : public SmartDashboardNamedData, public ErrorBase
+class Subsystem : public ErrorBase, public NamedSendable
 {
 	friend class Scheduler;
 public:
 	Subsystem(const char *name);
 	virtual ~Subsystem() {}
 
-	virtual std::string GetName();
-	virtual std::string GetType();
-	virtual NetworkTable *GetTable();
-
 	void SetDefaultCommand(Command *command);
 	Command *GetDefaultCommand();
 	void SetCurrentCommand(Command *command);
@@ -34,11 +30,19 @@
 private:
 	void ConfirmCommand();
 
-	NetworkTable *m_table;
 	Command *m_currentCommand;
+	bool m_currentCommandChanged;
 	Command *m_defaultCommand;
 	std::string m_name;
 	bool m_initializedDefaultCommand;
+
+public:
+	virtual std::string GetName();
+	virtual void InitTable(ITable* table);
+	virtual ITable* GetTable();
+	virtual std::string GetSmartDashboardType();
+protected:
+	ITable* m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Compressor.cpp b/aos/externals/WPILib/WPILib/Compressor.cpp
index 6a595b8..265c761 100644
--- a/aos/externals/WPILib/WPILib/Compressor.cpp
+++ b/aos/externals/WPILib/WPILib/Compressor.cpp
@@ -164,3 +164,31 @@
 	return m_enabled;
 }
 
+void Compressor::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutBoolean("Enabled", m_enabled);
+		m_table->PutBoolean("Pressure switch", GetPressureSwitchValue());
+	}
+}
+
+void Compressor::StartLiveWindowMode() {
+	
+}
+
+void Compressor::StopLiveWindowMode() {
+	
+}
+
+std::string Compressor::GetSmartDashboardType() {
+	return "Compressor";
+}
+
+void Compressor::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Compressor::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Compressor.h b/aos/externals/WPILib/WPILib/Compressor.h
index 57fe252..04f58ef 100644
--- a/aos/externals/WPILib/WPILib/Compressor.h
+++ b/aos/externals/WPILib/WPILib/Compressor.h
@@ -12,6 +12,7 @@
 #include "SensorBase.h"
 #include "Relay.h"
 #include "Task.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class DigitalInput;
 
@@ -22,7 +23,7 @@
  * backround and periodically polls the pressure sensor and operates the relay that controls the
  * compressor.
  */ 
-class Compressor: public SensorBase
+class Compressor: public SensorBase, public LiveWindowSendable
 {
 public:
 	Compressor(UINT32 pressureSwitchChannel, UINT32 compressorRelayChannel);
@@ -35,6 +36,13 @@
 	bool Enabled();
 	UINT32 GetPressureSwitchValue();
 	void SetRelayValue(Relay::Value relayValue);
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	void InitCompressor(UINT8 pressureSwitchModuleNumber, UINT32 pressureSwitchChannel,
@@ -44,6 +52,8 @@
 	Relay *m_relay;
 	bool m_enabled;
 	Task m_task;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Controller.h b/aos/externals/WPILib/WPILib/Controller.h
new file mode 100644
index 0000000..84f8857
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/Controller.h
@@ -0,0 +1,35 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef CONTROLLER_H
+#define CONTROLLER_H
+
+#include <vxWorks.h>
+
+/**
+ * Interface for Controllers
+ * Common interface for controllers. Controllers run control loops, the most common
+ * are PID controllers and their variants, but this includes anything that is controlling
+ * an actuator in a separate thread.
+ */
+class Controller
+{
+public:
+	virtual ~Controller() {};
+	
+	/**
+	 * Allows the control loop to run
+	 */
+	virtual void Enable() = 0;
+	
+	/** 
+	 * Stops the control loop from running until explicitly re-enabled by calling enable()
+	 */
+	virtual void Disable() = 0;
+};
+
+#endif
+
diff --git a/aos/externals/WPILib/WPILib/Counter.cpp b/aos/externals/WPILib/WPILib/Counter.cpp
index ead4d1e..a11c268 100644
--- a/aos/externals/WPILib/WPILib/Counter.cpp
+++ b/aos/externals/WPILib/WPILib/Counter.cpp
@@ -665,3 +665,32 @@
 	}
 	wpi_setError(localStatus);
 }
+
+
+void Counter::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", Get());
+	}
+}
+
+void Counter::StartLiveWindowMode() {
+	
+}
+
+void Counter::StopLiveWindowMode() {
+	
+}
+
+std::string Counter::GetSmartDashboardType() {
+	return "Counter";
+}
+
+void Counter::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Counter::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Counter.h b/aos/externals/WPILib/WPILib/Counter.h
index 0d3c125..8b7230d 100644
--- a/aos/externals/WPILib/WPILib/Counter.h
+++ b/aos/externals/WPILib/WPILib/Counter.h
@@ -10,6 +10,7 @@
 #include "AnalogTriggerOutput.h"
 #include "CounterBase.h"
 #include "SensorBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 /**
  * Class for counting the number of ticks on a digital input channel.
@@ -17,7 +18,7 @@
  * of counts, the period of the most recent cycle, and detect when the signal being counted
  * has stopped by supplying a maximum cycle time.
  */
-class Counter : public SensorBase, public CounterBase
+class Counter : public SensorBase, public CounterBase, public LiveWindowSendable
 {
 public:
 	typedef enum {kTwoPulse=0, kSemiperiod=1, kPulseLength=2, kExternalDirection=3} Mode;
@@ -68,6 +69,15 @@
 	bool GetStopped();
 	bool GetDirection();
 	UINT32 GetIndex() {return m_index;}
+	
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	virtual std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+
 private:
 	void InitCounter(Mode mode = kTwoPulse);
 
@@ -77,6 +87,8 @@
 	bool m_allocatedDownSource;	///< Was the downSource allocated locally?
 	tCounter *m_counter;				///< The FPGA counter object.
 	UINT32 m_index;					///< The index of this counter.
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Dashboard.cpp b/aos/externals/WPILib/WPILib/Dashboard.cpp
index 24e7e56..c513baf 100644
--- a/aos/externals/WPILib/WPILib/Dashboard.cpp
+++ b/aos/externals/WPILib/WPILib/Dashboard.cpp
@@ -179,7 +179,7 @@
 	if (!ValidateAdd(length + sizeof(length))) return;
 	memcpy(m_packPtr, (char*)&length, sizeof(length));
 	m_packPtr += sizeof(length);
-	memcpy(m_packPtr, (char*)&value, length);
+	memcpy(m_packPtr, value, length);
 	m_packPtr += length;
 	AddedElement(kString);
 }
diff --git a/aos/externals/WPILib/WPILib/DigitalInput.cpp b/aos/externals/WPILib/WPILib/DigitalInput.cpp
index 8858e50..75640b6 100644
--- a/aos/externals/WPILib/WPILib/DigitalInput.cpp
+++ b/aos/externals/WPILib/WPILib/DigitalInput.cpp
@@ -199,3 +199,29 @@
 	wpi_setError(localStatus);
 }
 
+void DigitalInput::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutBoolean("Value", Get());
+	}
+}
+
+void DigitalInput::StartLiveWindowMode() {
+	
+}
+
+void DigitalInput::StopLiveWindowMode() {
+	
+}
+
+std::string DigitalInput::GetSmartDashboardType() {
+	return "DigitalInput";
+}
+
+void DigitalInput::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * DigitalInput::GetTable() {
+	return m_table;
+}
diff --git a/aos/externals/WPILib/WPILib/DigitalInput.h b/aos/externals/WPILib/WPILib/DigitalInput.h
index e847ec1..96f122a 100644
--- a/aos/externals/WPILib/WPILib/DigitalInput.h
+++ b/aos/externals/WPILib/WPILib/DigitalInput.h
@@ -10,6 +10,7 @@
 class DigitalModule;
 
 #include "DigitalSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 /**
  * Class to read a digital input.
@@ -18,7 +19,7 @@
  * allocate digital inputs and outputs as required. This class is only for devices like switches
  * etc. that aren't implemented anywhere else.
  */
-class DigitalInput : public DigitalSource {
+class DigitalInput : public DigitalSource, public LiveWindowSendable {
 public:
 	explicit DigitalInput(UINT32 channel);
 	DigitalInput(UINT8 moduleNumber, UINT32 channel);
@@ -36,11 +37,20 @@
 	virtual void RequestInterrupts();		///< Synchronus Wait version.
 	void SetUpSourceEdge(bool risingEdge, bool fallingEdge);
 
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+
 private:
 	void InitDigitalInput(UINT8 moduleNumber, UINT32 channel);
 	UINT32 m_channel;
 	DigitalModule *m_module;
 	bool m_lastValue;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/DigitalOutput.cpp b/aos/externals/WPILib/WPILib/DigitalOutput.cpp
index 39c8e84..a571066 100644
--- a/aos/externals/WPILib/WPILib/DigitalOutput.cpp
+++ b/aos/externals/WPILib/WPILib/DigitalOutput.cpp
@@ -280,3 +280,32 @@
 	wpi_setError(localStatus);
 }
 
+void DigitalOutput::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	Set(value.b);
+}
+
+void DigitalOutput::UpdateTable() {
+}
+
+void DigitalOutput::StartLiveWindowMode() {
+	m_table->AddTableListener("Value", this, true);
+}
+
+void DigitalOutput::StopLiveWindowMode() {
+	m_table->RemoveTableListener(this);
+}
+
+std::string DigitalOutput::GetSmartDashboardType() {
+	return "Digital Output";
+}
+
+void DigitalOutput::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * DigitalOutput::GetTable() {
+	return m_table;
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/DigitalOutput.h b/aos/externals/WPILib/WPILib/DigitalOutput.h
index 645e130..36645cf 100644
--- a/aos/externals/WPILib/WPILib/DigitalOutput.h
+++ b/aos/externals/WPILib/WPILib/DigitalOutput.h
@@ -8,6 +8,8 @@
 #define DIGITAL_OUTPUT_H_
 
 #include "DigitalSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITableListener.h"
 
 class DigitalModule;
 
@@ -16,7 +18,7 @@
  * Write values to the digital output channels. Other devices implemented elsewhere will allocate
  * channels automatically so for those devices it shouldn't be done here.
  */
-class DigitalOutput : public DigitalSource
+class DigitalOutput : public DigitalSource, public ITableListener, public LiveWindowSendable
 {
 public:
 	explicit DigitalOutput(UINT32 channel);
@@ -39,6 +41,14 @@
 	virtual void RequestInterrupts();
 
 	void SetUpSourceEdge(bool risingEdge, bool fallingEdge);
+	
+	virtual void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	void InitDigitalOutput(UINT8 moduleNumber, UINT32 channel);
@@ -46,6 +56,8 @@
 	UINT32 m_channel;
 	UINT32 m_pwmGenerator;
 	DigitalModule *m_module;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp b/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp
index 0bd4d88..d05c7ff 100644
--- a/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp
+++ b/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp
@@ -7,6 +7,8 @@
 #include "DoubleSolenoid.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include "WPIErrors.h"
+#include <string.h>
+#include "LiveWindow/LiveWindow.h"
 
 /**
  * Common function to implement constructor behavior.
@@ -51,6 +53,7 @@
 
 	nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_forwardChannel, m_moduleNumber - 1);
 	nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_reverseChannel, m_moduleNumber - 1);
+	LiveWindow::GetInstance()->AddSensor("DoubleSolenoid", m_moduleNumber, m_forwardChannel, this);
 }
 
 /**
@@ -134,3 +137,45 @@
 	if (value & m_reverseMask) return kReverse;
 	return kOff;
 }
+
+
+
+
+void DoubleSolenoid::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	Value lvalue = kOff;
+	if (strcmp((char*)value.ptr, "Forward") == 0)
+		lvalue = kForward;
+	else if (strcmp((char*)value.ptr, "Reverse") == 0)
+		lvalue = kReverse;
+	Set(lvalue);
+}
+
+void DoubleSolenoid::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutString("Value", (Get() == kForward ? "Forward" : (Get() == kReverse ? "Reverse" : "Off")));
+	}
+}
+
+void DoubleSolenoid::StartLiveWindowMode() {
+	Set(kOff);
+	m_table->AddTableListener("Value", this, true);
+}
+
+void DoubleSolenoid::StopLiveWindowMode() {
+	Set(kOff);
+	m_table->RemoveTableListener(this);
+}
+
+std::string DoubleSolenoid::GetSmartDashboardType() {
+	return "Double Solenoid";
+}
+
+void DoubleSolenoid::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * DoubleSolenoid::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/DoubleSolenoid.h b/aos/externals/WPILib/WPILib/DoubleSolenoid.h
index d0de661..f9920a1 100644
--- a/aos/externals/WPILib/WPILib/DoubleSolenoid.h
+++ b/aos/externals/WPILib/WPILib/DoubleSolenoid.h
@@ -8,6 +8,9 @@
 #define DOUBLE_SOLENOID_H_
 
 #include "SolenoidBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITableListener.h"
+
 
 /**
  * DoubleSolenoid class for running 2 channels of high voltage Digital Output
@@ -16,7 +19,7 @@
  * The DoubleSolenoid class is typically used for pneumatics solenoids that
  * have two positions controlled by two separate channels.
  */
-class DoubleSolenoid : public SolenoidBase {
+class DoubleSolenoid : public SolenoidBase, public LiveWindowSendable, public ITableListener {
 public:
 	typedef enum {kOff, kForward, kReverse} Value;
 
@@ -25,6 +28,14 @@
 	virtual ~DoubleSolenoid();
 	virtual void Set(Value value);
 	virtual Value Get();
+	
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	virtual void InitSolenoid();
@@ -33,6 +44,8 @@
 	UINT32 m_reverseChannel; ///< The reverse channel on the module to control.
 	UINT8 m_forwardMask; ///< The mask for the forward channel.
 	UINT8 m_reverseMask; ///< The mask for the reverse channel.
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/DriverStation.cpp b/aos/externals/WPILib/WPILib/DriverStation.cpp
index 6adb41f..ffe0e66 100644
--- a/aos/externals/WPILib/WPILib/DriverStation.cpp
+++ b/aos/externals/WPILib/WPILib/DriverStation.cpp
@@ -38,7 +38,7 @@
 	, m_dashboardLow(m_statusDataSemaphore)
 	, m_dashboardInUseHigh(&m_dashboardHigh)
 	, m_dashboardInUseLow(&m_dashboardLow)
-	, m_newControlData (0)
+	, m_newControlData(0)
 	, m_packetDataAvailableSem (0)
 	, m_enhancedIO()
 	, m_waitForDataSem(0)
@@ -46,10 +46,11 @@
 	, m_userInDisabled(false)
 	, m_userInAutonomous(false)
 	, m_userInTeleop(false)
+	, m_userInTest(false)
 {
 	// Create a new semaphore
 	m_packetDataAvailableSem = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
-	m_newControlData = semBCreate (0, SEM_EMPTY);
+	m_newControlData = semBCreate (SEM_Q_FIFO, SEM_EMPTY);
 
 	// Register that semaphore with the network communications task.
 	// It will signal when new packet data is available. 
@@ -131,8 +132,10 @@
 			FRC_NetworkCommunication_observeUserProgramDisabled();
 		if (m_userInAutonomous)
 			FRC_NetworkCommunication_observeUserProgramAutonomous();
-		if (m_userInTeleop)
-			FRC_NetworkCommunication_observeUserProgramTeleop();
+        if (m_userInTeleop)
+            FRC_NetworkCommunication_observeUserProgramTeleop();
+        if (m_userInTest)
+            FRC_NetworkCommunication_observeUserProgramTest();
 	}
 }
 
@@ -402,7 +405,12 @@
 
 bool DriverStation::IsOperatorControl()
 {
-	return !m_controlData->autonomous;
+	return !(m_controlData->autonomous || m_controlData->test);
+}
+
+bool DriverStation::IsTest()
+{
+	return m_controlData->test;
 }
 
 /**
diff --git a/aos/externals/WPILib/WPILib/DriverStation.h b/aos/externals/WPILib/WPILib/DriverStation.h
index 94b6956..acd9b16 100644
--- a/aos/externals/WPILib/WPILib/DriverStation.h
+++ b/aos/externals/WPILib/WPILib/DriverStation.h
@@ -41,8 +41,9 @@
 
 	bool IsEnabled();
 	bool IsDisabled();
-	bool IsAutonomous();
+    bool IsAutonomous();
 	bool IsOperatorControl();
+    bool IsTest();
 	bool IsNewControlData();
 	bool IsFMSAttached();
 
@@ -84,10 +85,14 @@
 	 *   for diagnostic purposes only
 	 * @param entering If true, starting autonomous code; if false, leaving autonomous code */
 	void InAutonomous(bool entering) {m_userInAutonomous=entering;}
-	/** Only to be used to tell the Driver Station what code you claim to be executing
-	 *   for diagnostic purposes only
-	 * @param entering If true, starting teleop code; if false, leaving teleop code */
-	void InOperatorControl(bool entering) {m_userInTeleop=entering;}
+    /** Only to be used to tell the Driver Station what code you claim to be executing
+     *   for diagnostic purposes only
+     * @param entering If true, starting teleop code; if false, leaving teleop code */
+    void InOperatorControl(bool entering) {m_userInTeleop=entering;}
+    /** Only to be used to tell the Driver Station what code you claim to be executing
+     *   for diagnostic purposes only
+     * @param entering If true, starting test code; if false, leaving test code */
+    void InTest(bool entering) {m_userInTest=entering;}
 
 protected:
 	DriverStation();
@@ -120,7 +125,8 @@
 	double m_approxMatchTimeOffset;
 	bool m_userInDisabled;
 	bool m_userInAutonomous;
-	bool m_userInTeleop;
+    bool m_userInTeleop;
+    bool m_userInTest;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/DriverStationLCD.cpp b/aos/externals/WPILib/WPILib/DriverStationLCD.cpp
index 1a5169a..fe4893f 100644
--- a/aos/externals/WPILib/WPILib/DriverStationLCD.cpp
+++ b/aos/externals/WPILib/WPILib/DriverStationLCD.cpp
@@ -31,7 +31,7 @@
 
 	*((UINT16 *)m_textBuffer) = kFullDisplayTextCommand;
 
-	m_textBufferSemaphore = semMCreate(SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
+	m_textBufferSemaphore = semMCreate(SEM_DELETE_SAFE);
 
 	nUsageReporting::report(nUsageReporting::kResourceType_DriverStationLCD, 0);
 
@@ -69,7 +69,7 @@
 /**
  * Print formatted text to the Driver Station LCD text bufer.
  * 
- * Use UpdateLCD() periodically to actually send the test to the Driver Station.
+ * Use UpdateLCD() periodically to actually send the text to the Driver Station.
  * 
  * @param line The line on the LCD to print to.
  * @param startingColumn The column to start printing to.  This is a 1-based number.
@@ -77,11 +77,12 @@
  */
 void DriverStationLCD::Printf(Line line, INT32 startingColumn, const char *writeFmt, ...)
 {
-  va_list args;
+	va_list args;
 	va_start (args, writeFmt);
-  VPrintf(line, startingColumn, writeFmt, args);
-  va_end (args);
+	VPrintf(line, startingColumn, writeFmt, args);
+	va_end (args);
 }
+
 void DriverStationLCD::VPrintf(Line line, INT32 startingColumn, const char *writeFmt, va_list args)
 {
 	UINT32 start = startingColumn - 1;
@@ -114,18 +115,19 @@
  * Print formatted text to the Driver Station LCD text bufer. This function 
  * pads the line with empty spaces. 
  * 
- * Use UpdateLCD() periodically to actually send the test to the Driver Station.
+ * Use UpdateLCD() periodically to actually send the text to the Driver Station.
  * 
  * @param line The line on the LCD to print to.
  * @param writeFmt The printf format string describing how to print.
  */
 void DriverStationLCD::PrintfLine(Line line, const char *writeFmt, ...)
 {
-  va_list args;
+	va_list args;
 	va_start (args, writeFmt);
-  VPrintfLine(line, writeFmt, args);
-  va_end (args);
+	VPrintfLine(line, writeFmt, args);
+	va_end (args);
 }
+
 void DriverStationLCD::VPrintfLine(Line line, const char *writeFmt, va_list args)
 {
 	char lineBuffer[kLineLength + 1];
diff --git a/aos/externals/WPILib/WPILib/DriverStationLCD.h b/aos/externals/WPILib/WPILib/DriverStationLCD.h
index 60a06ad..3ea90a5 100644
--- a/aos/externals/WPILib/WPILib/DriverStationLCD.h
+++ b/aos/externals/WPILib/WPILib/DriverStationLCD.h
@@ -10,7 +10,8 @@
 #include "SensorBase.h"
 
 /**
- * Provide access to LCD on the Driver Station.
+ * Provide access to "LCD" on the Driver Station.
+ * This is the Messages box on the DS Operation tab.
  * 
  * Buffer the printed data locally and then send it
  * when UpdateLCD is called.
@@ -28,14 +29,13 @@
 	static DriverStationLCD *GetInstance();
 
 	void UpdateLCD();
-	void VPrintf(Line line, INT32 startingColumn, const char *writeFmt, va_list args);
-	void VPrintfLine(Line line, const char *writeFmt, va_list args);
 	void Printf(Line line, INT32 startingColumn, const char *writeFmt, ...);
+	void VPrintf(Line line, INT32 startingColumn, const char *writeFmt, va_list args);
 	void PrintfLine(Line line, const char *writeFmt, ...);
+	void VPrintfLine(Line line, const char *writeFmt, va_list args);
  
 	void Clear();
 
-
 protected:
 	DriverStationLCD();
 
diff --git a/aos/externals/WPILib/WPILib/Encoder.cpp b/aos/externals/WPILib/WPILib/Encoder.cpp
index e67b56b..cdf1dba 100644
--- a/aos/externals/WPILib/WPILib/Encoder.cpp
+++ b/aos/externals/WPILib/WPILib/Encoder.cpp
@@ -9,6 +9,7 @@
 #include "NetworkCommunication/UsageReporting.h"
 #include "Resource.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 static Resource *quadEncoders = NULL;
 
@@ -70,6 +71,7 @@
 	wpi_setError(localStatus);
 
 	nUsageReporting::report(nUsageReporting::kResourceType_Encoder, m_index, encodingType);
+	LiveWindow::GetInstance()->AddSensor("Encoder", m_aSource->GetModuleForRouting(), m_aSource->GetChannelForRouting(), this);
 }
 
 /**
@@ -511,3 +513,36 @@
 		return 0.0;
 	}
 }
+
+void Encoder::UpdateTable() {
+	if (m_table != NULL) {
+        m_table->PutNumber("Speed", GetRate());
+        m_table->PutNumber("Distance", GetDistance());
+        m_table->PutNumber("Distance per Tick", m_distancePerPulse);
+	}
+}
+
+void Encoder::StartLiveWindowMode() {
+	
+}
+
+void Encoder::StopLiveWindowMode() {
+	
+}
+
+std::string Encoder::GetSmartDashboardType() {
+	if (m_encodingType == k4X)
+		return "Quadrature Encoder";
+	else
+		return "Encoder";
+}
+
+void Encoder::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Encoder::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Encoder.h b/aos/externals/WPILib/WPILib/Encoder.h
index f08e706..7f9605c 100644
--- a/aos/externals/WPILib/WPILib/Encoder.h
+++ b/aos/externals/WPILib/WPILib/Encoder.h
@@ -12,6 +12,7 @@
 #include "SensorBase.h"
 #include "Counter.h"
 #include "PIDSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class DigitalSource;
 
@@ -24,7 +25,7 @@
  * generates negative values. Quadrature encoders have two digital outputs, an A Channel and a B Channel
  * that are out of phase with each other to allow the FPGA to do direction sensing. 
  */
-class Encoder: public SensorBase, public CounterBase, public PIDSource
+class Encoder: public SensorBase, public CounterBase, public PIDSource, public LiveWindowSendable
 {
 public:
 	typedef enum {kDistance, kRate} PIDSourceParameter;
@@ -53,6 +54,13 @@
 
 	void SetPIDSourceParameter(PIDSourceParameter pidSource);
 	double PIDGet();
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	void InitEncoder(bool _reverseDirection, EncodingType encodingType);
@@ -68,6 +76,8 @@
 	Counter *m_counter;				// Counter object for 1x and 2x encoding
 	EncodingType m_encodingType;	// Encoding type
 	PIDSourceParameter m_pidSource;// Encoder parameter that sources a PID controller
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/GearTooth.cpp b/aos/externals/WPILib/WPILib/GearTooth.cpp
index d0f8780..077385d 100644
--- a/aos/externals/WPILib/WPILib/GearTooth.cpp
+++ b/aos/externals/WPILib/WPILib/GearTooth.cpp
@@ -5,6 +5,7 @@
 /*----------------------------------------------------------------------------*/
 
 #include "GearTooth.h"
+#include "LiveWindow/LiveWindow.h"
 
 const double GearTooth::kGearToothThreshold;
 
@@ -44,6 +45,7 @@
 	: Counter(moduleNumber, channel)
 {
 	EnableDirectionSensing(directionSensitive);
+	LiveWindow::GetInstance()->AddSensor("GearTooth", moduleNumber, channel, this);
 }
 
 /**
@@ -71,3 +73,8 @@
 {
 }
 
+
+std::string GearTooth::GetSmartDashboardType() {
+	return "GearTooth";
+}
+
diff --git a/aos/externals/WPILib/WPILib/GearTooth.h b/aos/externals/WPILib/WPILib/GearTooth.h
index fa65555..509f1ba 100644
--- a/aos/externals/WPILib/WPILib/GearTooth.h
+++ b/aos/externals/WPILib/WPILib/GearTooth.h
@@ -26,6 +26,8 @@
 	GearTooth(DigitalSource &source, bool directionSensitive = false);
 	virtual ~GearTooth();
 	void EnableDirectionSensing(bool directionSensitive);
+	
+	virtual std::string GetSmartDashboardType();
 };
 
 
diff --git a/aos/externals/WPILib/WPILib/Gyro.cpp b/aos/externals/WPILib/WPILib/Gyro.cpp
index 179c0ad..34034ff 100644
--- a/aos/externals/WPILib/WPILib/Gyro.cpp
+++ b/aos/externals/WPILib/WPILib/Gyro.cpp
@@ -10,6 +10,7 @@
 #include "NetworkCommunication/UsageReporting.h"
 #include "Timer.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 const UINT32 Gyro::kOversampleBits;
 const UINT32 Gyro::kAverageBits;
@@ -63,6 +64,7 @@
 	m_analog->ResetAccumulator();
 
 	nUsageReporting::report(nUsageReporting::kResourceType_Gyro, m_analog->GetChannel(), m_analog->GetModuleNumber() - 1);
+	LiveWindow::GetInstance()->AddSensor("Gyro", m_analog->GetModuleNumber(), m_analog->GetChannel(), this);
 }
 
 /**
@@ -185,3 +187,31 @@
 {
 	return GetAngle();
 }
+
+void Gyro::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetAngle());
+	}
+}
+
+void Gyro::StartLiveWindowMode() {
+	
+}
+
+void Gyro::StopLiveWindowMode() {
+	
+}
+
+std::string Gyro::GetSmartDashboardType() {
+	return "Gyro";
+}
+
+void Gyro::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Gyro::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Gyro.h b/aos/externals/WPILib/WPILib/Gyro.h
index dc3a4bc..5673703 100644
--- a/aos/externals/WPILib/WPILib/Gyro.h
+++ b/aos/externals/WPILib/WPILib/Gyro.h
@@ -9,6 +9,7 @@
 
 #include "SensorBase.h"
 #include "PIDSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class AnalogChannel;
 class AnalogModule;
@@ -23,7 +24,7 @@
  * with a channel that is assigned one of the Analog accumulators from the FPGA. See
  * AnalogChannel for the current accumulator assignments.
  */
-class Gyro : public SensorBase, public PIDSource
+class Gyro : public SensorBase, public PIDSource, public LiveWindowSendable
 {
 public:
 	static const UINT32 kOversampleBits = 10;
@@ -43,6 +44,13 @@
 
 	// PIDSource interface
 	double PIDGet();
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	void InitGyro();
@@ -51,5 +59,7 @@
 	float m_voltsPerDegreePerSecond;
 	float m_offset;
 	bool m_channelAllocated;
+	
+	ITable *m_table;
 };
 #endif
diff --git a/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp b/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp
new file mode 100644
index 0000000..d2756ca
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp
@@ -0,0 +1,380 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#include "HiTechnicColorSensor.h"
+#include "DigitalModule.h"
+#include "I2C.h"
+#include "NetworkCommunication/UsageReporting.h"
+#include "WPIErrors.h"
+
+const UINT8 HiTechnicColorSensor::kAddress;
+const UINT8 HiTechnicColorSensor::kManufacturerBaseRegister;
+const UINT8 HiTechnicColorSensor::kManufacturerSize;
+const UINT8 HiTechnicColorSensor::kSensorTypeBaseRegister;
+const UINT8 HiTechnicColorSensor::kSensorTypeSize;
+const UINT8 HiTechnicColorSensor::kModeRegister;
+const UINT8 HiTechnicColorSensor::kColorRegister;
+const UINT8 HiTechnicColorSensor::kRedRegister;
+const UINT8 HiTechnicColorSensor::kGreenRegister;
+const UINT8 HiTechnicColorSensor::kBlueRegister;
+const UINT8 HiTechnicColorSensor::kRawRedRegister;
+const UINT8 HiTechnicColorSensor::kRawGreenRegister;
+const UINT8 HiTechnicColorSensor::kRawBlueRegister;
+
+/**
+ * Constructor.
+ * 
+ * @param moduleNumber The digital module that the sensor is plugged into (1 or 2).
+ */
+HiTechnicColorSensor::HiTechnicColorSensor(UINT8 moduleNumber)
+	: m_i2c (NULL)
+{
+	DigitalModule *module = DigitalModule::GetInstance(moduleNumber);
+	m_mode = kActive;
+	
+	if (module)
+	{
+		m_i2c = module->GetI2C(kAddress);
+	
+		// Verify Sensor
+		const UINT8 kExpectedManufacturer[] = "HiTechnc";
+		const UINT8 kExpectedSensorType[] = "ColorPD ";
+		if ( ! m_i2c->VerifySensor(kManufacturerBaseRegister, kManufacturerSize, kExpectedManufacturer) )
+		{
+			wpi_setWPIError(CompassManufacturerError);
+			return;
+		}
+		if ( ! m_i2c->VerifySensor(kSensorTypeBaseRegister, kSensorTypeSize, kExpectedSensorType) )
+		{
+			wpi_setWPIError(CompassTypeError);
+		}
+		
+		nUsageReporting::report(nUsageReporting::kResourceType_HiTechnicColorSensor, moduleNumber - 1);
+	}
+}
+
+/**
+ * Destructor.
+ */
+HiTechnicColorSensor::~HiTechnicColorSensor()
+{
+	delete m_i2c;
+	m_i2c = NULL;
+}
+
+/**
+ * Get the estimated color.
+ *
+ * Gets a color estimate from the sensor corresponding to the
+ * table found with the sensor or at the following site:
+ * http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NCO1038
+ *
+ * @return The estimated color.
+ */
+UINT8 HiTechnicColorSensor::GetColor()
+{
+	UINT8 color = 0;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kColorRegister, sizeof(color), &color);
+	}
+	return color;
+}
+
+/**
+ * Get the Red value.
+ *
+ * Gets the (0-255) red value from the sensor.
+ * 
+ * The sensor must be in active mode to access the regular RGB data
+ * if the sensor is not in active mode, it will be placed into active
+ * mode by this method.
+ *
+ * @return The Red sensor value.
+ */
+UINT8 HiTechnicColorSensor::GetRed()
+{
+	UINT8 red = 0;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kRedRegister, sizeof(red), &red);
+	}
+	return red;
+}
+
+/**
+ * Get the Green value.
+ *
+ * Gets the(0-255) green value from the sensor.
+ * 
+ * The sensor must be in active mode to access the regular RGB data
+ * if the sensor is not in active mode, it will be placed into active
+ * mode by this method.
+ * 
+ * @return The Green sensor value.
+ */
+UINT8 HiTechnicColorSensor::GetGreen()
+{
+	UINT8 green = 0;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kGreenRegister, sizeof(green), &green);
+	}
+	return green;
+}
+
+/**
+ * Get the Blue value.
+ *
+ * Gets the raw (0-255) blue value from the sensor.
+ * 
+ * The sensor must be in active mode to access the regular RGB data
+ * if the sensor is not in active mode, it will be placed into active
+ * mode by this method.
+ * 
+ * @return The Blue sensor value.
+ */
+UINT8 HiTechnicColorSensor::GetBlue()
+{
+	UINT8 blue = 0;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kBlueRegister, sizeof(blue), &blue);
+	}
+	return blue;
+}
+
+/**
+ * Get the value of all three colors from a single sensor reading.
+ * Using this method ensures that all three values come from the
+ * same sensor reading, using the individual color methods provides
+ * no such guarantee.
+ * 
+ * The sensor must be in active mode to access the regular RGB data.
+ * If the sensor is not in active mode, it will be placed into active
+ * mode by this method.
+ * 
+ * @return RGB object with the three color values
+ */
+HiTechnicColorSensor::RGB HiTechnicColorSensor::GetRGB()
+{
+	UINT8 colors[3] = {0,0,0};
+	RGB result;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if(m_i2c)
+	{
+		m_i2c->Read(kRawRedRegister, sizeof(colors), (UINT8*)&colors);
+	}
+	
+	result.red = colors[0];
+	result.green = colors[1];
+	result.blue = colors[2];
+	
+	return result;
+}
+
+/**
+ * Get the Raw Red value.
+ *
+ * Gets the (0-65536) raw red value from the sensor.
+ * 
+ * The sensor must be in raw or passive mode to access the regular RGB data
+ * if the sensor is not in raw or passive mode, it will be placed into raw
+ * mode by this method.
+ *
+ * @return The Raw Red sensor value.
+ */
+UINT16 HiTechnicColorSensor::GetRawRed()
+{
+	UINT16 rawRed = 0;
+	
+	if(m_mode == kActive)
+	{
+		SetMode(kRaw);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kRawRedRegister, sizeof(rawRed), (UINT8 *)&rawRed);
+	}
+	return rawRed;
+}
+
+/**
+   * Get the Raw Green value.
+   *
+   * Gets the (0-65536) raw green value from the sensor.
+   * 
+   * The sensor must be in raw or passive mode to access the regular RGB data
+   * if the sensor is not in raw or passive mode, it will be placed into raw
+   * mode by this method.
+   *
+   * @return The Raw Green sensor value.
+   */
+UINT16 HiTechnicColorSensor::GetRawGreen()
+{
+	UINT16 rawGreen = 0;
+	
+	if(m_mode == kActive)
+	{
+		SetMode(kRaw);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kRawGreenRegister, sizeof(rawGreen), (UINT8 *)&rawGreen);
+	}
+	return rawGreen;
+}
+
+/**
+ * Get the Raw Blue value.
+ *
+ * Gets the (0-65536) raw blue value from the sensor.
+ * 
+ * The sensor must be in raw or passive mode to access the regular RGB data
+ * if the sensor is not in raw or passive mode, it will be placed into raw
+ * mode by this method.
+ *
+ * @return The Raw Blue sensor value.
+ */
+UINT16 HiTechnicColorSensor::GetRawBlue()
+{
+	UINT16 rawBlue = 0;
+	
+	if(m_mode == kActive)
+	{
+		SetMode(kRaw);
+	}
+	if (m_i2c)
+	{
+		m_i2c->Read(kRawBlueRegister, sizeof(rawBlue), (UINT8 *)&rawBlue);
+	}
+	return rawBlue;
+}
+
+/**
+ * Get the raw value of all three colors from a single sensor reading.
+ * Using this method ensures that all three values come from the
+ * same sensor reading, using the individual color methods provides
+ * no such guarantee.
+ *
+ * Gets the (0-65536) raw color values from the sensor.
+ * 
+ * The sensor must be in raw or passive mode to access the regular RGB data
+ * if the sensor is not in raw or passive mode, it will be placed into raw
+ * mode by this method.
+ *
+ * @return An RGB object with the raw sensor values.
+ */
+HiTechnicColorSensor::RGB HiTechnicColorSensor::GetRawRGB()
+{
+	UINT8 colors[6] = {0,0,0,0,0,0};
+	RGB result;
+	
+	if(m_mode != kActive)
+	{
+		SetMode(kActive);
+	}
+	if(m_i2c)
+	{
+		m_i2c->Read(kRedRegister, sizeof(colors), (UINT8*)&colors);
+	}
+	
+	result.red = (colors[0]<<8) + colors[1];
+	result.green = (colors[2]<<8) + colors[3];
+	result.blue = (colors[4]<<8) + colors[5];
+	
+	return result;
+}
+
+/**
+ * Set the Mode of the color sensor
+ * This method is used to set the color sensor to one of the three modes,
+ * active, passive or raw. The sensor defaults to active mode which uses the
+ * internal LED and returns an interpreted color value and 3 8-bit RGB channel
+ * values. Raw mode uses the internal LED and returns 3 16-bit RGB channel values.
+ * Passive mode disables the internal LED and returns 3 16-bit RGB channel values.
+ * @param mode The mode to set
+ */
+void HiTechnicColorSensor::SetMode(tColorMode mode)
+{
+	if(m_i2c)
+	{
+		m_i2c->Write(kModeRegister, (UINT8)mode);
+	}
+}
+
+/*
+ * Live Window code, only does anything if live window is activated.
+ */
+std::string HiTechnicColorSensor::GetType()
+{
+    return "Compass";
+}
+
+/**
+ * {@inheritDoc}
+ */
+void HiTechnicColorSensor::InitTable(ITable *subtable) {
+    m_table = subtable;
+    UpdateTable();
+}
+
+/**
+ * {@inheritDoc}
+ */
+void HiTechnicColorSensor::UpdateTable() {
+    if (m_table != NULL) {
+        m_table->PutNumber("Value", GetColor());
+    }
+}
+
+/**
+ * {@inheritDoc}
+ */
+ITable* HiTechnicColorSensor::GetTable()
+{
+    return m_table;
+}
+
+/**
+ * {@inheritDoc}
+ */
+void HiTechnicColorSensor::StartLiveWindowMode()
+{
+	
+}
+
+/**
+ * {@inheritDoc}
+ */
+void HiTechnicColorSensor::StopLiveWindowMode()
+{
+	
+}
diff --git a/aos/externals/WPILib/WPILib/HiTechnicColorSensor.h b/aos/externals/WPILib/WPILib/HiTechnicColorSensor.h
new file mode 100644
index 0000000..86f36d0
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/HiTechnicColorSensor.h
@@ -0,0 +1,78 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef __HiTechnicColorSensor_h__
+#define __HiTechnicColorSensor_h__
+
+#include "SensorBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
+
+class I2C;
+
+/**
+ * HiTechnic NXT Color Sensor.
+ *
+ * This class allows access to a HiTechnic NXT Color Sensor on an I2C bus.
+ * These sensors do not allow changing addresses so you cannot have more
+ * than one on a single bus.
+ *
+ * Details on the sensor can be found here:
+ *   http://www.hitechnic.com/index.html?lang=en-us&target=d17.html
+ *
+ */
+class HiTechnicColorSensor : public SensorBase
+{
+public:
+	enum tColorMode {kActive = 0, kPassive = 1, kRaw = 3};
+	typedef struct{
+		UINT16 red;
+		UINT16 blue;
+		UINT16 green;
+	}RGB;
+	explicit HiTechnicColorSensor(UINT8 moduleNumber);
+	virtual ~HiTechnicColorSensor();
+	UINT8 GetColor();
+	UINT8 GetRed();
+	UINT8 GetGreen();
+	UINT8 GetBlue();
+	RGB GetRGB();
+	UINT16 GetRawRed();
+	UINT16 GetRawGreen();
+	UINT16 GetRawBlue();
+	RGB GetRawRGB();
+	void SetMode(tColorMode mode);
+	
+	
+	//LiveWindowSendable interface
+	virtual std::string GetType();
+	virtual void InitTable(ITable *subtable);
+	virtual void UpdateTable();
+	virtual ITable* GetTable();
+	virtual void StartLiveWindowMode();
+	virtual void StopLiveWindowMode(); 
+
+private:
+	static const UINT8 kAddress = 0x02;
+	static const UINT8 kManufacturerBaseRegister = 0x08;
+	static const UINT8 kManufacturerSize = 0x08;
+	static const UINT8 kSensorTypeBaseRegister = 0x10;
+	static const UINT8 kSensorTypeSize = 0x08;
+	static const UINT8 kModeRegister = 0x41;
+	static const UINT8 kColorRegister = 0x42;
+	static const UINT8 kRedRegister = 0x43;
+	static const UINT8 kGreenRegister = 0x44;
+	static const UINT8 kBlueRegister = 0x45;
+	static const UINT8 kRawRedRegister = 0x43;
+	static const UINT8 kRawGreenRegister = 0x45;
+	static const UINT8 kRawBlueRegister = 0x47;
+	
+	int m_mode;
+	I2C* m_i2c;
+	ITable *m_table;
+};
+
+#endif
+
diff --git a/aos/externals/WPILib/WPILib/HiTechnicCompass.cpp b/aos/externals/WPILib/WPILib/HiTechnicCompass.cpp
index f925b33..e72637d 100644
--- a/aos/externals/WPILib/WPILib/HiTechnicCompass.cpp
+++ b/aos/externals/WPILib/WPILib/HiTechnicCompass.cpp
@@ -7,7 +7,9 @@
 #include "HiTechnicCompass.h"
 #include "DigitalModule.h"
 #include "I2C.h"
+#include "NetworkCommunication/UsageReporting.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 const UINT8 HiTechnicCompass::kAddress;
 const UINT8 HiTechnicCompass::kManufacturerBaseRegister;
@@ -41,6 +43,9 @@
 		{
 			wpi_setWPIError(CompassTypeError);
 		}
+
+		nUsageReporting::report(nUsageReporting::kResourceType_HiTechnicCompass, moduleNumber - 1);
+		LiveWindow::GetInstance()->AddSensor("HiTechnicCompass", moduleNumber, 0, this);
 	}
 }
 
@@ -73,3 +78,30 @@
 	return (float)heading;
 }
 
+void HiTechnicCompass::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetAngle());
+	}
+}
+
+void HiTechnicCompass::StartLiveWindowMode() {
+	
+}
+
+void HiTechnicCompass::StopLiveWindowMode() {
+	
+}
+
+std::string HiTechnicCompass::GetSmartDashboardType() {
+	return "HiTechnicCompass";
+}
+
+void HiTechnicCompass::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * HiTechnicCompass::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/HiTechnicCompass.h b/aos/externals/WPILib/WPILib/HiTechnicCompass.h
index fb94b1a..442d5b4 100644
--- a/aos/externals/WPILib/WPILib/HiTechnicCompass.h
+++ b/aos/externals/WPILib/WPILib/HiTechnicCompass.h
@@ -8,6 +8,7 @@
 #define __HiTechnicCompass_h__
 
 #include "SensorBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class I2C;
 
@@ -23,12 +24,19 @@
  * 
  * @todo Implement a calibration method for the sensor.
  */
-class HiTechnicCompass : public SensorBase
+class HiTechnicCompass : public SensorBase, public LiveWindowSendable
 {
 public:
 	explicit HiTechnicCompass(UINT8 moduleNumber);
 	virtual ~HiTechnicCompass();
 	float GetAngle();
+	
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
 
 private:
 	static const UINT8 kAddress = 0x02;
@@ -39,6 +47,8 @@
 	static const UINT8 kHeadingRegister = 0x44;
 
 	I2C* m_i2c;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/I2C.cpp b/aos/externals/WPILib/WPILib/I2C.cpp
index c3c5277..e0dfe63 100644
--- a/aos/externals/WPILib/WPILib/I2C.cpp
+++ b/aos/externals/WPILib/WPILib/I2C.cpp
@@ -31,9 +31,7 @@
 	}
 	m_objCount++;
 
-	const char *cm = NULL;
-	if (m_compatibilityMode) cm = "C";
-	nUsageReporting::report(nUsageReporting::kResourceType_I2C, deviceAddress, module->GetNumber() - 1, cm);
+	nUsageReporting::report(nUsageReporting::kResourceType_I2C, deviceAddress, module->GetNumber() - 1);
 }
 
 /**
@@ -199,6 +197,10 @@
 void I2C::SetCompatibilityMode(bool enable)
 {
 	m_compatibilityMode = enable;
+
+	const char *cm = NULL;
+	if (m_compatibilityMode) cm = "C";
+	nUsageReporting::report(nUsageReporting::kResourceType_I2C, m_deviceAddress, m_module->GetNumber() - 1, cm);
 }
 
 /**
diff --git a/aos/externals/WPILib/WPILib/IterativeRobot.cpp b/aos/externals/WPILib/WPILib/IterativeRobot.cpp
index 1dc7f81..96e9b71 100644
--- a/aos/externals/WPILib/WPILib/IterativeRobot.cpp
+++ b/aos/externals/WPILib/WPILib/IterativeRobot.cpp
@@ -9,6 +9,9 @@
 #include "DriverStation.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include <taskLib.h>
+#include "SmartDashboard/SmartDashboard.h"
+#include "LiveWindow/LiveWindow.h"
+#include "networktables/NetworkTable.h"
 
 const double IterativeRobot::kDefaultPeriod;
 
@@ -16,12 +19,13 @@
  * Constructor for RobotIterativeBase
  * 
  * The constructor initializes the instance variables for the robot to indicate
- * the status of initialization for disabled, autonomous, and teleop code.
+ * the status of initialization for disabled, autonomous, teleop, and test code.
  */
 IterativeRobot::IterativeRobot()
 	: m_disabledInitialized (false)
 	, m_autonomousInitialized (false)
 	, m_teleopInitialized (false)
+	, m_testInitialized (false)
 	, m_period (kDefaultPeriod)
 {
 	m_watchdog.SetEnabled(false);
@@ -90,10 +94,14 @@
 {
 	nUsageReporting::report(nUsageReporting::kResourceType_Framework, nUsageReporting::kFramework_Iterative);
 
+	LiveWindow *lw = LiveWindow::GetInstance();
 	// first and one-time initialization
+	SmartDashboard::init();
+	NetworkTable::GetTable("LiveWindow")->GetSubTable("~STATUS~")->PutBoolean("LW Enabled", false);
 	RobotInit();
 
 	// loop forever, calling the appropriate mode-dependent function
+	lw->SetEnabled(false);
 	while (true)
 	{
 		// Call the appropriate function depending upon the current robot mode
@@ -103,18 +111,19 @@
 			// either a different mode or from power-on
 			if(!m_disabledInitialized)
 			{
+				lw->SetEnabled(false);
 				DisabledInit();
 				m_disabledInitialized = true;
 				// reset the initialization flags for the other modes
 				m_autonomousInitialized = false;
-				m_teleopInitialized = false;
+                m_teleopInitialized = false;
+                m_testInitialized = false;
 			}
 			if (NextPeriodReady())
 			{
 				FRC_NetworkCommunication_observeUserProgramDisabled();
 				DisabledPeriodic();
 			}
-			DisabledContinuous();
 		}
 		else if (IsAutonomous())
 		{
@@ -122,38 +131,63 @@
 			// either a different mode or from power-on
 			if(!m_autonomousInitialized)
 			{
+				lw->SetEnabled(false);
 				AutonomousInit();
 				m_autonomousInitialized = true;
 				// reset the initialization flags for the other modes
 				m_disabledInitialized = false;
-				m_teleopInitialized = false;
+                m_teleopInitialized = false;
+                m_testInitialized = false;
 			}
 			if (NextPeriodReady())
 			{
 				FRC_NetworkCommunication_observeUserProgramAutonomous();
 				AutonomousPeriodic();
 			}
-			AutonomousContinuous();
 		}
+        else if (IsTest())
+        {
+            // call TestInit() if we are now just entering test mode from
+            // either a different mode or from power-on
+            if(!m_testInitialized)
+            {
+            	lw->SetEnabled(true);
+                TestInit();
+                m_testInitialized = true;
+                // reset the initialization flags for the other modes
+                m_disabledInitialized = false;
+                m_autonomousInitialized = false;
+                m_teleopInitialized = false;
+            }
+            if (NextPeriodReady())
+            {
+                FRC_NetworkCommunication_observeUserProgramTest();
+                TestPeriodic();
+            }
+        }
 		else
 		{
 			// call TeleopInit() if we are now just entering teleop mode from
 			// either a different mode or from power-on
 			if(!m_teleopInitialized)
 			{
+				lw->SetEnabled(false);
 				TeleopInit();
 				m_teleopInitialized = true;
 				// reset the initialization flags for the other modes
 				m_disabledInitialized = false;
-				m_autonomousInitialized = false;
+                m_autonomousInitialized = false;
+                m_testInitialized = false;
+                Scheduler::GetInstance()->SetEnabled(true);
 			}
 			if (NextPeriodReady())
 			{
 				FRC_NetworkCommunication_observeUserProgramTeleop();
 				TeleopPeriodic();
 			}
-			TeleopContinuous();
 		}
+		// wait for driver station data so the loop doesn't hog the CPU
+		m_ds->WaitForData();
 	}	
 }
 
@@ -220,7 +254,18 @@
  */
 void IterativeRobot::TeleopInit()
 {
-	printf("Default %s() method... Overload me!\n", __FUNCTION__);
+    printf("Default %s() method... Overload me!\n", __FUNCTION__);
+}
+
+/**
+ * Initialization code for test mode should go here.
+ * 
+ * Users should override this method for initialization code which will be called each time
+ * the robot enters test mode.
+ */
+void IterativeRobot::TestInit()
+{
+    printf("Default %s() method... Overload me!\n", __FUNCTION__);
 }
 
 /**
@@ -275,52 +320,19 @@
 }
 
 /**
- * Continuous code for disabled mode should go here.
+ * Periodic code for test mode should go here.
  *
- * Users should override this method for code which will be called repeatedly as frequently
- * as possible while the robot is in disabled mode.
+ * Users should override this method for code which will be called periodically at a regular
+ * rate while the robot is in test mode.
  */
-void IterativeRobot::DisabledContinuous()
+void IterativeRobot::TestPeriodic()
 {
-	static bool firstRun = true;
-	if (firstRun)
-	{
-		printf("Default %s() method... Overload me!\n", __FUNCTION__);
-		firstRun = false;
-	}
-	m_ds->WaitForData();
+    static bool firstRun = true;
+    if (firstRun)
+    {
+        printf("Default %s() method... Overload me!\n", __FUNCTION__);
+        firstRun = false;
+    }
+    taskDelay(1);
 }
 
-/**
- * Continuous code for autonomous mode should go here.
- *
- * Users should override this method for code which will be called repeatedly as frequently
- * as possible while the robot is in autonomous mode.
- */
-void IterativeRobot::AutonomousContinuous()
-{
-	static bool firstRun = true;
-	if (firstRun)
-	{
-		printf("Default %s() method... Overload me!\n", __FUNCTION__);
-		firstRun = false;
-	}
-	m_ds->WaitForData();
-}
-
-/**
- * Continuous code for teleop mode should go here.
- *
- * Users should override this method for code which will be called repeatedly as frequently
- * as possible while the robot is in teleop mode.
- */
-void IterativeRobot::TeleopContinuous()
-{
-	static bool firstRun = true;
-	if (firstRun)
-	{
-		printf("Default %s() method... Overload me!\n", __FUNCTION__);
-		firstRun = false;
-	}
-	m_ds->WaitForData();
-}
diff --git a/aos/externals/WPILib/WPILib/IterativeRobot.h b/aos/externals/WPILib/WPILib/IterativeRobot.h
index cee0f64..db877cb 100644
--- a/aos/externals/WPILib/WPILib/IterativeRobot.h
+++ b/aos/externals/WPILib/WPILib/IterativeRobot.h
@@ -25,6 +25,7 @@
  *  - DisabledInit()   -- called only when first disabled
  *  - AutonomousInit() -- called each and every time autonomous is entered from another mode
  *  - TeleopInit()     -- called each and every time teleop is entered from another mode
+ *  - TestInit()       -- called each and every time test is entered from another mode
  * 
  * Periodic() functions -- each of these functions is called iteratively at the
  *                         appropriate periodic rate (aka the "slow loop").  The default period of
@@ -33,13 +34,7 @@
  *   - DisabledPeriodic()
  *   - AutonomousPeriodic()
  *   - TeleopPeriodic()
- * 
- * Continuous() functions -- each of these functions is called repeatedly as
- *                           fast as possible.  These functions are generally discouraged
- *                           and if they are used, they should contain a Wait() of some type:
- *   - DisabledContinuous()
- *   - AutonomousContinuous()
- *   - TeleopContinuous()
+ *   - TestPeriodic()
  * 
  */
 
@@ -57,15 +52,13 @@
 	virtual void RobotInit();
 	virtual void DisabledInit();
 	virtual void AutonomousInit();
-	virtual void TeleopInit();
+    virtual void TeleopInit();
+    virtual void TestInit();
 
 	virtual void DisabledPeriodic();
 	virtual void AutonomousPeriodic();
-	virtual void TeleopPeriodic();
-
-	virtual void DisabledContinuous();
-	virtual void AutonomousContinuous();
-	virtual void TeleopContinuous();
+    virtual void TeleopPeriodic();
+    virtual void TestPeriodic();
 
 	void SetPeriod(double period);
 	double GetPeriod();
@@ -80,7 +73,8 @@
 
 	bool m_disabledInitialized;
 	bool m_autonomousInitialized;
-	bool m_teleopInitialized;
+    bool m_teleopInitialized;
+    bool m_testInitialized;
 	double m_period;
 	Timer m_mainLoopTimer;
 };
diff --git a/aos/externals/WPILib/WPILib/Jaguar.cpp b/aos/externals/WPILib/WPILib/Jaguar.cpp
index 77f3c43..b31065d 100644
--- a/aos/externals/WPILib/WPILib/Jaguar.cpp
+++ b/aos/externals/WPILib/WPILib/Jaguar.cpp
@@ -8,6 +8,7 @@
 #include "Jaguar.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include "DigitalModule.h"
+#include "LiveWindow/LiveWindow.h"
 
 /**
  * Common initialization code called by all constructors.
@@ -29,6 +30,7 @@
 	SetRaw(m_centerPwm);
 
 	nUsageReporting::report(nUsageReporting::kResourceType_Jaguar, GetChannel(), GetModuleNumber() - 1);
+	LiveWindow::GetInstance()->AddActuator("Jaguar", GetModuleNumber(), GetChannel(), this);
 }
 
 /**
diff --git a/aos/externals/WPILib/WPILib/Jaguar.h b/aos/externals/WPILib/WPILib/Jaguar.h
index e8691d6..b1e96ff 100644
--- a/aos/externals/WPILib/WPILib/Jaguar.h
+++ b/aos/externals/WPILib/WPILib/Jaguar.h
@@ -14,7 +14,7 @@
 /**
  * Luminary Micro Jaguar Speed Control
  */
-class Jaguar : public SafePWM, public SpeedController, public PIDOutput
+class Jaguar : public SafePWM, public SpeedController
 {
 public:
 	explicit Jaguar(UINT32 channel);
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp
new file mode 100644
index 0000000..e4113a4
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp
@@ -0,0 +1,189 @@
+#include "LiveWindow/LiveWindow.h"
+#include "networktables/NetworkTable.h"
+#include <algorithm>
+#include <sstream>
+
+LiveWindow* LiveWindow::m_instance = NULL;
+
+/**
+ * Get an instance of the LiveWindow main class
+ * This is a singleton to guarantee that there is only a single instance regardless of
+ * how many times GetInstance is called.
+ */
+LiveWindow * LiveWindow::GetInstance()
+{
+	if (m_instance == NULL)
+	{
+		m_instance = new LiveWindow();
+	}
+	return m_instance;
+}
+
+/**
+ * LiveWindow constructor.
+ * Allocate the necessary tables.
+ */
+LiveWindow::LiveWindow()
+{
+	m_enabled = false;
+	m_liveWindowTable = NetworkTable::GetTable("LiveWindow");
+	m_statusTable = m_liveWindowTable->GetSubTable("~STATUS~");
+	m_scheduler = Scheduler::GetInstance();
+}
+
+/**
+ * Change the enabled status of LiveWindow
+ * If it changes to enabled, start livewindow running otherwise stop it
+ */
+void LiveWindow::SetEnabled(bool enabled)
+{
+	if (m_enabled == enabled)
+		return;
+	if (enabled)
+	{
+		printf("Starting live window mode\n");
+		if (m_firstTime)
+		{
+			InitializeLiveWindowComponents();
+			m_firstTime = false;
+		}
+		m_scheduler->SetEnabled(false);
+		m_scheduler->RemoveAll();
+		for (std::map<LiveWindowSendable *, LiveWindowComponent>::iterator it =
+				m_components.begin(); it != m_components.end(); ++it)
+		{
+			it->first->StartLiveWindowMode();
+		}
+	}
+	else
+	{
+		printf("Ending LiveWindow mode\n");
+		for (std::map<LiveWindowSendable *, LiveWindowComponent>::iterator it =
+				m_components.begin(); it != m_components.end(); ++it)
+		{
+			it->first->StopLiveWindowMode();
+		}
+		m_scheduler->SetEnabled(true);
+	}
+	m_enabled = enabled;
+	m_statusTable->PutBoolean("LW Enabled", m_enabled);
+}
+
+LiveWindow::~LiveWindow()
+{
+}
+
+/**
+ * Add a Sensor associated with the subsystem and with call it by the given name.
+ * @param subsystem The subsystem this component is part of.
+ * @param name The name of this component.
+ * @param component A LiveWindowSendable component that represents a sensor.
+ */
+void LiveWindow::AddSensor(char *subsystem, char *name,
+		LiveWindowSendable *component)
+{
+	m_components[component].subsystem = subsystem;
+	m_components[component].name = name;
+	m_components[component].isSensor = true;
+}
+
+/**
+ * Add an Actuator associated with the subsystem and with call it by the given name.
+ * @param subsystem The subsystem this component is part of.
+ * @param name The name of this component.
+ * @param component A LiveWindowSendable component that represents a actuator.
+ */
+void LiveWindow::AddActuator(char *subsystem, char *name,
+		LiveWindowSendable *component)
+{
+	m_components[component].subsystem = subsystem;
+	m_components[component].name = name;
+	m_components[component].isSensor = false;
+}
+
+/**
+ * INTERNAL
+ */
+void LiveWindow::AddSensor(std::string type, int module, int channel, LiveWindowSendable *component)
+{
+	std::ostringstream oss;
+	oss << type << "[" << module << "," << channel << "]";
+	std::string types(oss.str());
+	char* cc = new char[types.size() + 1];
+	types.copy(cc, types.size());
+	cc[types.size()]='\0';
+	AddSensor("Ungrouped", cc, component);
+	if (std::find(m_sensors.begin(), m_sensors.end(), component) == m_sensors.end())
+		m_sensors.push_back(component);
+}
+
+/**
+ * INTERNAL
+ */
+void LiveWindow::AddActuator(std::string type, int module, int channel, LiveWindowSendable *component)
+{
+	std::ostringstream oss;
+	oss << type << "[" << module << "," << channel << "]";
+	std::string types(oss.str());
+	char* cc = new char[types.size() + 1];
+	types.copy(cc, types.size());
+	cc[types.size()]='\0';
+	AddActuator("Ungrouped", cc, component);
+}
+
+/**
+ * Tell all the sensors to update (send) their values
+ * Actuators are handled through callbacks on their value changing from the
+ * SmartDashboard widgets.
+ */
+void LiveWindow::UpdateValues()
+{
+	for (unsigned int i = 0; i < m_sensors.size(); i++)
+	{
+		m_sensors[i]->UpdateTable();
+	}
+}
+
+/**
+ * This method is called periodically to cause the sensors to send new values
+ * to the SmartDashboard.
+ */
+void LiveWindow::Run()
+{
+	if (m_enabled)
+	{
+		UpdateValues();
+	}
+}
+
+/**
+ * Initialize all the LiveWindow elements the first time we enter LiveWindow mode.
+ * By holding off creating the NetworkTable entries, it allows them to be redefined
+ * before the first time in LiveWindow mode. This allows default sensor and actuator
+ * values to be created that are replaced with the custom names from users calling
+ * addActuator and addSensor.
+ */
+void LiveWindow::InitializeLiveWindowComponents()
+{
+	for (std::map<LiveWindowSendable *, LiveWindowComponent>::iterator it =
+			m_components.begin(); it != m_components.end(); ++it)
+	{
+		LiveWindowSendable *component = it->first;
+		LiveWindowComponent c = it->second;
+		std::string subsystem = c.subsystem;
+		std::string name = c.name;
+		m_liveWindowTable->GetSubTable(subsystem)->PutString("~TYPE~",
+				"LW Subsystem");
+		ITable *table = m_liveWindowTable->GetSubTable(subsystem)->GetSubTable(
+				name);
+		table->PutString("~TYPE~", component->GetSmartDashboardType());
+		table->PutString("Name", name);
+		table->PutString("Subsystem", subsystem);
+		component->InitTable(table);
+		if (c.isSensor)
+		{
+			m_sensors.push_back(component);
+		}
+	}
+}
+
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h
new file mode 100644
index 0000000..7583c85
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h
@@ -0,0 +1,67 @@
+#ifndef _LIVE_WINDOW_H
+#define _LIVE_WINDOW_H
+
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITable.h"
+#include "Commands/Scheduler.h"
+#include <vector>
+#include <map>
+
+struct LiveWindowComponent
+{
+	std::string subsystem;
+	std::string name;
+	bool isSensor;
+
+	LiveWindowComponent()
+	{}//WTF?
+	LiveWindowComponent(std::string subsystem, std::string name, bool isSensor)
+	{
+		this->subsystem = subsystem;
+		this->name = name;
+		this->isSensor = isSensor;
+	}
+};
+
+/**
+ * The LiveWindow class is the public interface for putting sensors and actuators
+ * on the LiveWindow.
+ *
+ * @author Brad Miller
+ */
+class LiveWindow {
+public:
+	static LiveWindow * GetInstance();
+	void Run();
+	void AddSensor(char *subsystem, char *name, LiveWindowSendable *component);
+	void AddActuator(char *subsystem, char *name, LiveWindowSendable *component);
+	void AddSensor(std::string type, int module, int channel, LiveWindowSendable *component);
+	void AddActuator(std::string type, int module, int channel, LiveWindowSendable *component);
+	
+	bool IsEnabled() { return m_enabled; }
+	void SetEnabled(bool enabled);
+
+protected:
+	LiveWindow();
+	virtual ~LiveWindow();
+
+private:
+	void UpdateValues();
+	void Initialize();
+	void InitializeLiveWindowComponents();
+	
+	std::vector<LiveWindowSendable *> m_sensors;
+	std::map<LiveWindowSendable *, LiveWindowComponent> m_components;
+	
+	static LiveWindow *m_instance;
+	ITable *m_liveWindowTable;
+	ITable *m_statusTable;
+	
+	Scheduler *m_scheduler;
+	
+	bool m_enabled;
+	bool m_firstTime;
+};
+
+#endif
+
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h
new file mode 100644
index 0000000..abc4f7e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h
@@ -0,0 +1,40 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) Patrick Plenefisch 2012. All Rights Reserved.			      */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef LIVEWINDOWSENDABLE_H_
+#define LIVEWINDOWSENDABLE_H_
+
+#include "SmartDashboard/Sendable.h"
+
+/**
+ * Live Window Sendable is a special type of object sendable to the live window.
+ *
+ * @author Patrick Plenefisch
+ */
+class LiveWindowSendable: public Sendable
+{
+public:
+    /**
+     * Update the table for this sendable object with the latest
+     * values.
+     */
+    virtual void UpdateTable() = 0;
+
+    /**
+     * Start having this sendable object automatically respond to
+     * value changes reflect the value on the table.
+     */
+    virtual void StartLiveWindowMode() = 0;
+
+    /**
+     * Stop having this sendable object automatically respond to value
+     * changes.
+     */
+    virtual void StopLiveWindowMode() = 0;
+};
+
+
+#endif /* LIVEWINDOWSENDABLE_H_ */
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.cpp b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.cpp
new file mode 100644
index 0000000..deb8cc0
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.cpp
@@ -0,0 +1,7 @@
+#include "LiveWindow/LiveWindowStatusListener.h"
+#include "Commands/Scheduler.h"
+
+void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	
+}
+
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.h b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.h
new file mode 100644
index 0000000..7c701e3
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.h
@@ -0,0 +1,12 @@
+#ifndef _LIVE_WINDOW_STATUS_LISTENER_H
+#define _LIVE_WINDOW_STATUS_LISTENER_H
+
+#include "tables/ITable.h"
+#include "tables/ITableListener.h"
+
+class LiveWindowStatusListener : public ITableListener {
+public:
+	virtual void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+};
+
+#endif 
diff --git a/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp b/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp
index eb68566..1055de8 100644
--- a/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp
+++ b/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp
@@ -14,7 +14,7 @@
 #include <stdio.h>
 
 MotorSafetyHelper *MotorSafetyHelper::m_headHelper = NULL;
-Semaphore MotorSafetyHelper::m_listMutex;
+ReentrantSemaphore MotorSafetyHelper::m_listMutex;
 
 /**
  * The constructor for a MotorSafetyHelper object.
@@ -106,6 +106,7 @@
 {
 	if (!m_enabled) return;
 	if (DriverStation::GetInstance()->IsDisabled()) return;
+
 	Synchronized sync(m_syncMutex);
 	if (m_stopTime < Timer::GetFPGATimestamp())
 	{
@@ -142,7 +143,7 @@
 
 /**
  * Check the motors to see if any have timed out.
- * This static method is called periodically to poll all the motors and stop any that have
+ * This static  method is called periodically to poll all the motors and stop any that have
  * timed out.
  */
 void MotorSafetyHelper::CheckMotors()
diff --git a/aos/externals/WPILib/WPILib/MotorSafetyHelper.h b/aos/externals/WPILib/WPILib/MotorSafetyHelper.h
index 40ccddc..67a6a2f 100644
--- a/aos/externals/WPILib/WPILib/MotorSafetyHelper.h
+++ b/aos/externals/WPILib/WPILib/MotorSafetyHelper.h
@@ -30,11 +30,11 @@
 	double m_expiration;			// the expiration time for this object
 	bool m_enabled;					// true if motor safety is enabled for this motor
 	double m_stopTime; 				// the FPGA clock value when this motor has expired
+	ReentrantSemaphore m_syncMutex;			// protect accesses to the state for this object
 	MotorSafety *m_safeObject;		// the object that is using the helper
 	MotorSafetyHelper *m_nextHelper; // next object in the list of MotorSafetyHelpers
 	static MotorSafetyHelper *m_headHelper; // the head of the list of MotorSafetyHelper objects
-	static Semaphore m_listMutex; // protect accesses to the list of helpers
-	Semaphore m_syncMutex;        // protect accesses to the state for this object
+	static ReentrantSemaphore m_listMutex;	// protect accesses to the list of helpers
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h b/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h
index 6a7e3f0..16d4b0e 100644
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h
+++ b/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h
@@ -14,7 +14,13 @@
 #ifndef __FRC_COMM_H__
 #define __FRC_COMM_H__
 
+#ifdef SIMULATION
+#include <vxWorks_compat.h>
+#define EXPORT_FUNC __declspec(dllexport) __cdecl
+#else
 #include <vxWorks.h>
+#define EXPORT_FUNC
+#endif
 
 // Commandeer some bytes at the end for advanced I/O feedback.
 #define IO_CONFIG_DATA_SIZE 32
@@ -26,6 +32,18 @@
 	UINT16 packetIndex;
 	union {
 		UINT8 control;
+#ifdef SIMULATION
+		struct {
+			UINT8 checkVersions :1;
+			UINT8 test :1;
+			UINT8 resync : 1;
+			UINT8 fmsAttached:1;
+			UINT8 autonomous : 1;
+			UINT8 enabled : 1;
+			UINT8 notEStop : 1;
+			UINT8 reset : 1;
+		};
+#else
 		struct {
 			UINT8 reset : 1;
 			UINT8 notEStop : 1;
@@ -33,9 +51,10 @@
 			UINT8 autonomous : 1;
 			UINT8 fmsAttached:1;
 			UINT8 resync : 1;
-			UINT8 cRIOChkSum :1;
-			UINT8 fpgaChkSum :1;
+			UINT8 test :1;
+			UINT8 checkVersions :1;
 		};
+#endif
 	};
 	UINT8 dsDigitalIn;
 	UINT16 teamID;
@@ -121,34 +140,41 @@
 #define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25
 
 extern "C" {
-	void getFPGAHardwareVersion(UINT16 *fpgaVersion, UINT32 *fpgaRevision);
-	int getCommonControlData(FRCCommonControlData *data, int wait_ms);
-	int getRecentCommonControlData(FRCCommonControlData *commonData, int wait_ms);
-	int getRecentStatusData(UINT8 *batteryInt, UINT8 *batteryDec, UINT8 *dsDigitalOut, int wait_ms);
-	int getDynamicControlData(UINT8 type, char *dynamicData, INT32 maxLength, int wait_ms);
-	int setStatusData(float battery, UINT8 dsDigitalOut, UINT8 updateNumber,
+#ifndef SIMULATION
+	void EXPORT_FUNC getFPGAHardwareVersion(UINT16 *fpgaVersion, UINT32 *fpgaRevision);
+#endif
+	int EXPORT_FUNC getCommonControlData(FRCCommonControlData *data, int wait_ms);
+	int EXPORT_FUNC getRecentCommonControlData(FRCCommonControlData *commonData, int wait_ms);
+	int EXPORT_FUNC getRecentStatusData(UINT8 *batteryInt, UINT8 *batteryDec, UINT8 *dsDigitalOut, int wait_ms);
+	int EXPORT_FUNC getDynamicControlData(UINT8 type, char *dynamicData, INT32 maxLength, int wait_ms);
+	int EXPORT_FUNC setStatusData(float battery, UINT8 dsDigitalOut, UINT8 updateNumber,
 			const char *userDataHigh, int userDataHighLength,
 			const char *userDataLow, int userDataLowLength, int wait_ms);
-	int setStatusDataFloatAsInt(int battery, UINT8 dsDigitalOut, UINT8 updateNumber,
+	int EXPORT_FUNC setStatusDataFloatAsInt(int battery, UINT8 dsDigitalOut, UINT8 updateNumber,
 			const char *userDataHigh, int userDataHighLength,
 			const char *userDataLow, int userDataLowLength, int wait_ms);
-	int setErrorData(const char *errors, int errorsLength, int wait_ms);
-	int setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms);
-	int overrideIOConfig(const char *ioConfig, int wait_ms);
+	int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms);
+	int EXPORT_FUNC setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms);
+	int EXPORT_FUNC overrideIOConfig(const char *ioConfig, int wait_ms);
 
-	void setNewDataSem(SEM_ID);
-	void setResyncSem(SEM_ID);
-	void signalResyncActionDone(void);
+	void EXPORT_FUNC setNewDataSem(SEM_ID);
+#ifndef SIMULATION
+	void EXPORT_FUNC setResyncSem(SEM_ID);
+	void EXPORT_FUNC signalResyncActionDone(void);
+#endif
 
 	// this UINT32 is really a LVRefNum
-	void setNewDataOccurRef(UINT32 refnum);
-	void setResyncOccurRef(UINT32 refnum);
+	void EXPORT_FUNC setNewDataOccurRef(UINT32 refnum);
+#ifndef SIMULATION
+	void EXPORT_FUNC setResyncOccurRef(UINT32 refnum);
+#endif
 
-	void FRC_NetworkCommunication_getVersionString(char *version);
-	void FRC_NetworkCommunication_observeUserProgramStarting(void);
-	void FRC_NetworkCommunication_observeUserProgramDisabled(void);
-	void FRC_NetworkCommunication_observeUserProgramAutonomous(void);
-	void FRC_NetworkCommunication_observeUserProgramTeleop(void);
+	void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version);
+	void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void);
+	void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void);
+	void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void);
+	void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void);
+	void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void);
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h b/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h
index daf0ac4..5fbd455 100644
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h
+++ b/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h
@@ -2,7 +2,13 @@
 #ifndef __UsageReporting_h__
 #define __UsageReporting_h__
 
+#ifdef SIMULATION
+#include <vxWorks_compat.h>
+#define EXPORT_FUNC __declspec(dllexport) __cdecl
+#else
 #include <vxWorks.h>
+#define EXPORT_FUNC
+#endif
 
 #define kUsageReporting_version 1
 
@@ -54,6 +60,11 @@
         kResourceType_AxisCamera,
         kResourceType_PCVideoServer,
         kResourceType_SmartDashboard,
+        kResourceType_Talon,
+        kResourceType_HiTechnicColorSensor,
+        kResourceType_HiTechnicAccel,
+        kResourceType_HiTechnicCompass,
+        kResourceType_SRF08,
     } tResourceType;
 
     typedef enum
@@ -93,7 +104,7 @@
         kDriverStationEIO_TouchSlider = 11,
 
         kADXL345_SPI = 1,
-        kADXL345_I2C = 1,
+        kADXL345_I2C = 2,
 
         kCommand_Scheduler = 1,
 
@@ -108,14 +119,14 @@
      * @param context an optional additional context number for some cases (such as module number).  Set to 0 to omit.
      * @param feature a string to be included describing features in use on a specific resource.  Setting the same resource more than once allows you to change the feature string.
      */
-    UINT32 report(tResourceType resource, UINT8 instanceNumber, UINT8 context = 0, const char *feature = NULL);
+    UINT32 EXPORT_FUNC report(tResourceType resource, UINT8 instanceNumber, UINT8 context = 0, const char *feature = NULL);
 }
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-    UINT32 FRC_NetworkCommunication_nUsageReporting_report(UINT8 resource, UINT8 instanceNumber, UINT8 context, const char *feature);
+    UINT32 EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(UINT8 resource, UINT8 instanceNumber, UINT8 context, const char *feature);
 
 #ifdef __cplusplus
 }
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.cpp
deleted file mode 100644
index 7273bd7..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/BooleanEntry.h"
-#include "NetworkTables/Buffer.h"
-
-namespace NetworkTables
-{
-
-BooleanEntry::BooleanEntry(bool value) :
-	m_value(value)
-{
-}
-
-NetworkTables_Types BooleanEntry::GetType()
-{
-	return kNetworkTables_Types_BOOLEAN;
-}
-
-void BooleanEntry::Encode(Buffer *buffer)
-{
-	Entry::Encode(buffer);
-	buffer->WriteByte(m_value ? kNetworkTables_BOOLEAN_TRUE
-		: kNetworkTables_BOOLEAN_FALSE);
-}
-
-bool BooleanEntry::GetBoolean()
-{
-	return m_value;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.h b/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.h
deleted file mode 100644
index 4481b57..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/BooleanEntry.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __BOOLEAN_ENTRY_H__
-#define __BOOLEAN_ENTRY_H__
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include <vxWorks.h>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class BooleanEntry : public Entry {
-public:
-	BooleanEntry(bool value);
-	virtual NetworkTables_Types GetType();
-	virtual void Encode(Buffer *buffer);
-	virtual bool GetBoolean();
-
-private:
-	bool m_value;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Buffer.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Buffer.cpp
deleted file mode 100644
index 29d4002..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Buffer.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include "WPIErrors.h"
-#include <sockLib.h>
-#include <string.h>
-
-namespace NetworkTables
-{
-
-Buffer::Buffer(UINT32 capacity) :
-	m_buffer (NULL),
-	m_size (0),
-	m_capacity (capacity)
-{
-	m_buffer = new UINT8[capacity];
-}
-
-Buffer::~Buffer()
-{
-	delete [] m_buffer;
-}
-
-void Buffer::WriteString(UINT32 length, const char *entry)
-{
-	if (length >= kNetworkTables_BEGIN_STRING)
-	{
-		WriteByte(kNetworkTables_BEGIN_STRING);
-		WriteBytes(length, (UINT8*)entry);
-		WriteByte(kNetworkTables_END_STRING);
-	}
-	else
-	{
-		WriteByte(length);
-		WriteBytes(length, (UINT8*)entry);
-	}
-}
-
-void Buffer::WriteString(const char *entry)
-{
-	WriteString(strlen(entry), entry);
-}
-
-void Buffer::WriteString(std::string entry)
-{
-	WriteString(entry.length(), entry.c_str());
-}
-
-void Buffer::WriteDouble(double entry)
-{
-	WriteBytes(sizeof(entry), (UINT8*) &entry);
-}
-
-void Buffer::WriteInt(UINT32 entry)
-{
-	WriteBytes(sizeof(entry), (UINT8*) &entry);
-}
-
-void Buffer::WriteId(UINT32 id)
-{
-	WriteVariableSize(kNetworkTables_ID, id);
-}
-
-void Buffer::WriteTableId(UINT32 id)
-{
-	WriteVariableSize(kNetworkTables_TABLE_ID, id);
-}
-
-void Buffer::WriteBytes(UINT32 length, const UINT8 *entries)
-{
-	UINT32 i;
-	for (i = 0; i < length; i++)
-	{
-		WriteByte(entries[i]);
-	}
-}
-
-void Buffer::WriteByte(UINT8 entry)
-{
-	if (m_size >= m_capacity)
-	{
-		wpi_setWPIError(NetworkTablesBufferFull);
-		return;
-	}
-	m_buffer[m_size++] = entry;
-}
-
-void Buffer::Flush(int socket)
-{
-#ifdef DEBUG
-	if (m_size != 1 || m_buffer[0] != kNetworkTables_PING)
-	{
-		unsigned i;
-		char buf[128];
-		char *pbuf = buf;
-		pbuf = pbuf + snprintf(pbuf, 128 - (pbuf - buf), "\nO:");
-		for (i=0; i<m_size; i++)
-		{
-			pbuf = pbuf + snprintf(pbuf, 128 - (pbuf - buf), "%02X", m_buffer[i]);
-		}
-		snprintf(pbuf, 128 - (pbuf - buf), "\n");
-		printf(buf);
-	}
-#endif
-	write(socket, (char *)m_buffer, m_size);
-	Clear();
-}
-
-void Buffer::Clear()
-{
-	m_size = 0;
-}
-
-void Buffer::WriteVariableSize(UINT32 tag, UINT32 id)
-{
-	if (id < tag - 4)
-	{
-		WriteByte(tag | id);
-	}
-	else
-	{
-		int fullTag = (tag | (tag - 1)) ^ 3;
-		if (id < (1 << 8))
-		{
-			WriteByte(fullTag);
-			WriteByte(id);
-		}
-		else if (id < (1 << 16))
-		{
-			WriteByte(fullTag | 1);
-			WriteByte(id >> 8);
-			WriteByte(id);
-		}
-		else if (id < (1 << 24))
-		{
-			WriteByte(fullTag | 2);
-			WriteByte(id >> 16);
-			WriteByte(id >> 8);
-			WriteByte(id);
-		}
-		else
-		{
-			WriteByte(fullTag | 3);
-			WriteByte(id >> 24);
-			WriteByte(id >> 16);
-			WriteByte(id >> 8);
-			WriteByte(id);
-		}
-	}
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Buffer.h b/aos/externals/WPILib/WPILib/NetworkTables/Buffer.h
deleted file mode 100644
index 164da96..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Buffer.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __BUFFER_H__
-#define __BUFFER_H__
-
-#include "ErrorBase.h"
-#include <vxWorks.h>
-#include <string>
-
-namespace NetworkTables
-{
-
-class Buffer : public ErrorBase
-{
-public:
-	Buffer(UINT32 capacity);
-	~Buffer();
-	void WriteString(UINT32 length, const char *entry);
-	void WriteString(const char *entry);
-	void WriteString(std::string entry);
-	void WriteDouble(double entry);
-	void WriteInt(UINT32 entry);
-	void WriteId(UINT32 id);
-	void WriteTableId(UINT32 id);
-	void WriteBytes(UINT32 length, const UINT8 *entries);
-	void WriteByte(UINT8 entry);
-	void Flush(int socket);
-	void Clear();
-
-private:
-	void WriteVariableSize(UINT32 tag, UINT32 id);
-
-	UINT8 *m_buffer;
-	UINT32 m_size;
-	UINT32 m_capacity;
-};
-
-} // namespace
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.cpp
deleted file mode 100644
index 129c889..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Confirmation.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-
-namespace NetworkTables
-{
-
-Confirmation::Confirmation(int count) :
-	m_count(count)
-{
-}
-
-void Confirmation::Encode(Buffer *buffer)
-{
-	for (int i = m_count; i > 0; i -= kNetworkTables_CONFIRMATION - 1)
-	{
-		buffer->WriteByte(kNetworkTables_CONFIRMATION | std::min(kNetworkTables_CONFIRMATION - 1, i));
-	}
-}
-
-// Currently unused
-Confirmation *Confirmation::Combine(Confirmation *a, Confirmation *b)
-{
-	a->m_count = a->m_count + b->m_count;
-	delete b;
-	return a;
-}
-
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.h b/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.h
deleted file mode 100644
index 6ecc7e7..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Confirmation.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __CONFIRMATION_H__
-#define __CONFIRMATION_H__
-
-#include "NetworkTables/Data.h"
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class Confirmation : public Data
-{
-public:
-	Confirmation(int count);
-	virtual void Encode(Buffer *buffer);
-private:
-	static Confirmation *Combine(Confirmation *a, Confirmation *b);
-
-	int m_count;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Connection.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Connection.cpp
deleted file mode 100644
index 7abc3df..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Connection.cpp
+++ /dev/null
@@ -1,591 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Connection.h"
-
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/Confirmation.h"
-#include "NetworkTables/ConnectionManager.h"
-#include "NetworkTables/Data.h"
-#include "NetworkTables/Denial.h"
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include "NetworkTables/Key.h"
-#include "NetworkTables/NetworkQueue.h"
-#include "NetworkTables/NetworkTable.h"
-#include "NetworkTables/OldData.h"
-#include "NetworkTables/Reader.h"
-#include "NetworkTables/TableAssignment.h"
-#include "NetworkTables/TableEntry.h"
-#include "NetworkTables/TransactionEnd.h"
-#include "NetworkTables/TransactionStart.h"
-#include "Synchronized.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-#include <inetLib.h>
-#include <semLib.h>
-#include <sockLib.h>
-#include <string>
-#include <usrLib.h>
-
-namespace NetworkTables
-{
-
-const UINT32 Connection::kWriteDelay;
-const UINT32 Connection::kTimeout;
-
-Connection::Connection(int socket) :
-	m_socket(socket),
-	m_dataLock(NULL),
-	m_dataAvailable(NULL),
-	m_watchdogLock(NULL),
-	m_watchdogFood(NULL),
-	m_queue(NULL),
-	m_transaction(NULL),
-	m_connected(true),
-	m_inTransaction(false),
-	m_denyTransaction(false),
-	m_watchdogActive(false),
-	m_watchdogFed(false),
-	m_readTask("NetworkTablesReadTask", (FUNCPTR)Connection::InitReadTask),
-	m_writeTask("NetworkTablesWriteTask", (FUNCPTR)Connection::InitWriteTask),
-	m_watchdogTask("NetworkTablesWatchdogTask", (FUNCPTR)Connection::InitWatchdogTask),
-	m_transactionStart(NULL),
-	m_transactionEnd(NULL)
-{
-	m_dataLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_dataAvailable = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
-	m_watchdogLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_watchdogFood = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
-	m_queue = new NetworkQueue();
-	m_transaction = new NetworkQueue();
-	m_transactionStart = new TransactionStart();
-	m_transactionEnd = new TransactionEnd();
-}
-
-Connection::~Connection()
-{
-	delete m_transactionEnd;
-	delete m_transactionStart;
-	delete m_transaction;
-	delete m_queue;
-	semDelete(m_watchdogFood);
-	semTake(m_watchdogLock, WAIT_FOREVER);
-	semDelete(m_watchdogLock);
-	semDelete(m_dataAvailable);
-	semTake(m_dataLock, WAIT_FOREVER);
-	semDelete(m_dataLock);
-}
-
-void Connection::OfferTransaction(NetworkQueue *transaction)
-{
-	Synchronized sync(m_dataLock);
-	NetworkQueue::DataQueue_t::const_iterator it = transaction->GetQueueHead();
-	for (; !transaction->IsQueueEnd(it); it++)
-	{
-		Data *data = it->first;
-		if (data->IsEntry() && ((Entry *)data)->GetType() == kNetworkTables_TABLE)
-		{
-			NetworkTable *table = ((TableEntry *)data)->GetTable();
-			table->AddConnection(this);
-		}
-	}
-	m_queue->Offer(m_transactionStart);
-	it = transaction->GetQueueHead();
-	for (; !transaction->IsQueueEnd(it); it++)
-	{
-		// We are always offering something from a transaction that has yet to be used locally...
-		// They will be cleaned up if necessary in the local use.
-		m_queue->Offer(it->first);
-	}
-	m_queue->Offer(m_transactionEnd);
-	semGive(m_dataAvailable);
-}
-
-void Connection::Offer(Data *data)
-{
-	if (data != NULL)
-	{
-		Synchronized sync(m_dataLock);
-		if (data->IsEntry() && ((Entry *)data)->GetType() == kNetworkTables_TABLE)
-		{
-			NetworkTable *table = ((TableEntry *)data)->GetTable();
-			table->AddConnection(this);
-		}
-		m_queue->Offer(data);
-		semGive(m_dataAvailable);
-	}
-}
-
-void Connection::Offer(std::auto_ptr<Data> autoData)
-{
-	Synchronized sync(m_dataLock);
-	if (autoData->IsEntry() && ((Entry *)autoData.get())->GetType() == kNetworkTables_TABLE)
-	{
-		NetworkTable *table = ((TableEntry *)autoData.get())->GetTable();
-		table->AddConnection(this);
-	}
-	m_queue->Offer(autoData);
-	semGive(m_dataAvailable);
-}
-
-void Connection::Start()
-{
-	m_watchdogTask.Start((UINT32)this);
-	m_readTask.Start((UINT32)this);
-	m_writeTask.Start((UINT32)this);
-}
-
-void Connection::ReadTaskRun()
-{
-	Reader input(this, m_socket);
-	int value;
-	
-	value = input.Read();
-	while (m_connected)
-	{
-		WatchdogFeed();
-		WatchdogActivate();
-
-		if (value >= kNetworkTables_ID || value == kNetworkTables_OLD_DATA)
-		{
-			bool oldData = value == kNetworkTables_OLD_DATA;
-			UINT32 id = input.ReadId(!oldData);
-			if (!m_connected)
-				break;
-			Key *key = Key::GetKey(m_fieldMap[id]);
-#ifdef DEBUG
-			char pbuf[64];
-			snprintf(pbuf, 64, "Update field \"%s\" value remote=%d local=%d\n", key->GetName().c_str(), id, m_fieldMap[id]);
-			printf(pbuf);
-#endif
-
-			if (key == NULL)
-			{
-				wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Unexpected ID");
-				Close();
-				return;
-			}
-
-			value = input.Read();
-			if (!m_connected)
-				break;
-
-			if (ConnectionManager::GetInstance()->IsServer() && ConfirmationsContainsKey(key))
-			{
-				if (m_inTransaction)
-					m_denyTransaction = true;
-				else
-					Offer(std::auto_ptr<Data>(new Denial(1)));
-				if (value >= kNetworkTables_TABLE_ID)
-					input.ReadTableId(true);
-				else
-					input.ReadEntry(true);
-			}
-			else if (value >= kNetworkTables_TABLE_ID)
-			{
-				UINT32 tableId = input.ReadTableId(true);
-				if (!m_connected)
-					break;
-				if (oldData && key->HasEntry())
-				{
-					Offer(std::auto_ptr<Data>(new Denial(1)));
-				}
-				else
-				{
-					NetworkTable *table = GetTable(false, tableId);
-					Entry *tableEntry = new TableEntry(table);
-					tableEntry->SetSource(this);
-					tableEntry->SetKey(key);
-					if (m_inTransaction)
-					{
-						m_transaction->Offer(std::auto_ptr<Data>(tableEntry));
-					}
-					else
-					{
-						key->GetTable()->Got(false, key, std::auto_ptr<Entry>(tableEntry));
-						Offer(std::auto_ptr<Data>(new Confirmation(1)));
-					}
-				}
-			}
-			else
-			{
-				std::auto_ptr<Entry> entry = input.ReadEntry(true);
-				if (!m_connected)
-					break;
-
-				if (entry.get() == NULL)
-				{
-					wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Unable to parse entry");
-					Close();
-					return;
-				}
-				else if (oldData && key->HasEntry())
-				{
-					Offer(std::auto_ptr<Data>(new Denial(1)));
-				}
-				else
-				{
-					entry->SetSource(this);
-					entry->SetKey(key);
-					if (m_inTransaction)
-					{
-						m_transaction->Offer(std::auto_ptr<Data>(entry.release()));
-					}
-					else
-					{
-						key->GetTable()->Got(false, key, entry);
-						Offer(std::auto_ptr<Data>(new Confirmation(1)));
-					}
-				}
-			}
-		}
-		else if (value >= kNetworkTables_CONFIRMATION)
-		{
-			int count = input.ReadConfirmations(true);
-			if (!m_connected)
-				break;
-			while (count-- > 0)
-			{
-				if (m_confirmations.empty())
-				{
-					wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Too many confirmations");
-					Close();
-					return;
-				}
-				Entry *entry = m_confirmations.front();
-				m_confirmations.pop_front();
-				// TransactionStart
-				if (entry == NULL)
-				{
-					if (ConnectionManager::GetInstance()->IsServer())
-					{
-						while (!m_confirmations.empty() && m_confirmations.front() != NULL)
-							m_confirmations.pop_front();
-					}
-					else
-					{
-						while (!m_confirmations.empty() && m_confirmations.front() != NULL)
-						{
-							m_transaction->Offer(m_confirmations.front());
-							m_confirmations.pop_front();
-						}
-
-						if (!m_transaction->IsEmpty())
-							((Entry *)m_transaction->Peek())->GetKey()->GetTable()->ProcessTransaction(true, m_transaction);
-					}
-				}
-				else if (!ConnectionManager::GetInstance()->IsServer())
-				{
-					entry->GetKey()->GetTable()->Got(true, entry->GetKey(), std::auto_ptr<Entry>(entry));
-				}
-			}
-		}
-		else if (value >= kNetworkTables_DENIAL)
-		{
-			if (ConnectionManager::GetInstance()->IsServer())
-			{
-				wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Server can not be denied");
-				Close();
-				return;
-			}
-			int count = input.ReadDenials(m_connected);
-			if (!m_connected)
-				break;
-			while (count-- > 0)
-			{
-				if (m_confirmations.empty())
-				{
-					wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Excess denial");
-					Close();
-					return;
-				}
-				else if (m_confirmations.front() == NULL)
-				{
-					m_confirmations.pop_front();
-					// Skip the transaction
-					while (!m_confirmations.empty() && m_confirmations.front() != NULL)
-					{
-						delete m_confirmations.front();
-						m_confirmations.pop_front();
-					}
-				}
-				else
-				{
-					delete m_confirmations.front();
-					m_confirmations.pop_front();
-				}
-			}
-		}
-		else if (value == kNetworkTables_TABLE_REQUEST)
-		{
-			if (!ConnectionManager::GetInstance()->IsServer())
-			{
-				wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Server requesting table");
-				Close();
-				return;
-			}
-			std::string name = input.ReadString();
-			if (!m_connected)
-				break;
-			UINT32 id = input.ReadTableId(false);
-			if (!m_connected)
-				break;
-#ifdef DEBUG
-			char pbuf[128];
-			snprintf(pbuf, 128, "Request table: %s (%d)\n", name.c_str(), id);
-			printf(pbuf);
-#endif
-
-			NetworkTable *table = NetworkTable::GetTable(name.c_str());
-
-			{
-				Synchronized sync(m_dataLock);
-				Offer(std::auto_ptr<Data>(new TableAssignment(table, id)));
-				table->AddConnection(this);
-			}
-
-			m_tableMap.insert(IDMap_t::value_type(id, table->GetId()));
-		}
-		else if (value == kNetworkTables_TABLE_ASSIGNMENT)
-		{
-			UINT32 localTableId = input.ReadTableId(false);
-			if (!m_connected)
-				break;
-			UINT32 remoteTableId = input.ReadTableId(false);
-			if (!m_connected)
-				break;
-#ifdef DEBUG
-			char pbuf[64];
-			snprintf(pbuf, 64, "Table Assignment: local=%d remote=%d\n", localTableId, remoteTableId);
-			printf(pbuf);
-#endif
-			m_tableMap.insert(IDMap_t::value_type(remoteTableId, localTableId));
-		}
-		else if (value == kNetworkTables_ASSIGNMENT)
-		{
-			UINT32 tableId = input.ReadTableId(false);
-			if (!m_connected)
-				break;
-			NetworkTable *table = GetTable(false, tableId);
-			std::string keyName = input.ReadString();
-			if (!m_connected)
-				break;
-			Key *key = table->GetKey(keyName.c_str());
-			UINT32 id = input.ReadId(false);
-			if (!m_connected)
-				break;
-#ifdef DEBUG
-			char pbuf[64];
-			snprintf(pbuf, 64, "Field Assignment: table %d \"%s\" local=%d remote=%d\n", tableId, keyName.c_str(), key->GetId(), id);
-			printf(pbuf);
-#endif
-			m_fieldMap.insert(IDMap_t::value_type(id, key->GetId()));
-		}
-		else if (value == kNetworkTables_TRANSACTION)
-		{
-#ifdef DEBUG
-			printf("Transaction Start\n");
-#endif
-			m_inTransaction = !m_inTransaction;
-			// Finishing a transaction
-			if (!m_inTransaction)
-			{
-				if (m_denyTransaction)
-				{
-					Offer(std::auto_ptr<Data>(new Denial(1)));
-				}
-				else
-				{
-					if (!m_transaction->IsEmpty())
-						((Entry *)m_transaction->Peek())->GetKey()->GetTable()->ProcessTransaction(false, m_transaction);
-					Offer(std::auto_ptr<Data>(new Confirmation(1)));
-				}
-				m_denyTransaction = false;
-			}
-#ifdef DEBUG
-			printf("Transaction End\n");
-#endif
-		}
-		else
-		{
-#ifdef DEBUG
-			char buf[64];
-			snprintf(buf, 64, "Don't know how to interpret marker byte (%02X)", value);
-			wpi_setWPIErrorWithContext(NetworkTablesCorrupt, buf);
-#else
-			wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Don't know how to interpret marker byte");
-#endif
-			Close();
-			return;
-		}
-		value = input.Read();
-	}
-}
-
-void Connection::WriteTaskRun()
-{
-	std::auto_ptr<Buffer> buffer = std::auto_ptr<Buffer>(new Buffer(2048));
-	bool sentData = true;
-	while (m_connected)
-	{
-		std::pair<Data *, bool> data;
-		{
-			Synchronized sync(m_dataLock);
-			data = m_queue->Poll();
-			// Check if there is no data to send
-			if (data.first == NULL)
-			{
-				// Ping if necessary
-				if (sentData)
-				{
-					sentData = false;
-				}
-				else
-				{
-					buffer->WriteByte(kNetworkTables_PING);
-					buffer->Flush(m_socket);
-				}
-				semGive(m_dataLock);
-				semTake(m_dataAvailable, kWriteDelay);
-				semTake(m_dataLock, WAIT_FOREVER);
-				continue;
-			}
-		}
-
-		// If there is data, send it
-		sentData = true;
-
-		if (data.first->IsEntry())
-			m_confirmations.push_back((Entry *)data.first);
-		else if (data.first->IsOldData())
-			m_confirmations.push_back(((OldData *)data.first)->GetEntry());
-		else if (data.first->IsTransaction())
-			m_confirmations.push_back((Entry *)NULL);
-
-		data.first->Encode(buffer.get());
-		buffer->Flush(m_socket);
-		// Noone else wants this data and it used to be auto_ptr'd, so delete it
-		if (data.second)
-			delete data.first;
-	}
-}
-
-void Connection::Close()
-{
-	if (m_connected)
-	{
-		m_connected = false;
-		close(m_socket);
-		WatchdogFeed();
-		IDMap_t::iterator it = m_tableMap.begin();
-		IDMap_t::iterator end = m_tableMap.end();
-		for (; it != end; it++)
-		{
-			// Get the local id
-			UINT32 id = it->second;
-			NetworkTable *table = NetworkTable::GetTable(id);
-#ifdef DEBUG
-			char pbuf[64];
-			snprintf(pbuf, 64, "Removing Table %d (%p)\n", id, table);
-			printf(pbuf);
-#endif
-			if (table)
-				table->RemoveConnection(this);
-		}
-
-		ConnectionManager::GetInstance()->RemoveConnection(this);
-	}
-}
-
-NetworkTable *Connection::GetTable(bool local, UINT32 id)
-{
-	NetworkTable *table = NULL;
-	if (local)
-	{
-		table = NetworkTable::GetTable(id);
-	}
-	else
-	{
-		IDMap_t::iterator localID = m_tableMap.find(id);
-		if (localID != m_tableMap.end())
-		{
-			table = NetworkTable::GetTable(localID->second);
-		}
-		/*
-		else
-		{
-			// This should not be needed as long as TABLE_REQUEST is always issued first
-			// We don't care about hosting locally anonymous tables from the network
-			table = new NetworkTable();
-			m_tableMap.insert(IDMap_t::value_type(id, table->GetId()));
-			Offer(std::auto_ptr<Data>(new TableAssignment(table, id)));
-			table->AddConnection(this);
-		}
-		*/
-	}
-	if (table == NULL)
-	{
-		wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "Unexpected ID");
-	}
-	return table;
-}
-
-bool Connection::ConfirmationsContainsKey(Key *key)
-{
-	std::deque<Entry *>::iterator it = m_confirmations.begin();
-	std::deque<Entry *>::iterator end = m_confirmations.end();
-	for (; it != end; it++)
-		if ((*it)->GetKey() == key)
-			return true;
-
-	return false;
-}
-
-void Connection::WatchdogTaskRun()
-{
-	Synchronized sync(m_watchdogLock);
-	while (m_connected)
-	{
-		while(!m_watchdogActive)
-		{
-			semGive(m_watchdogLock);
-			semTake(m_watchdogFood, WAIT_FOREVER);
-			semTake(m_watchdogLock, WAIT_FOREVER);
-		}
-		m_watchdogFed = false;
-		semGive(m_watchdogLock);
-		int retval = semTake(m_watchdogFood, kTimeout);
-		semTake(m_watchdogLock, WAIT_FOREVER);
-		if (retval == ERROR && !m_watchdogFed)
-		{
-			wpi_setWPIErrorWithContext(Timeout, "NetworkTables watchdog expired... disconnecting");
-			break;
-		}
-	}
-
-	Close();
-}
-
-void Connection::WatchdogActivate()
-{
-	Synchronized sync(m_watchdogLock);
-	if (!m_watchdogActive)
-	{
-		m_watchdogActive = true;
-		semGive(m_watchdogFood);
-	}
-}
-
-void Connection::WatchdogFeed()
-{
-	Synchronized sync(m_watchdogLock);
-	m_watchdogActive = false;
-	m_watchdogFed = true;
-	semGive(m_watchdogFood);
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Connection.h b/aos/externals/WPILib/WPILib/NetworkTables/Connection.h
deleted file mode 100644
index 50dbca7..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Connection.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __CONNECTION_H__
-#define __CONNECTION_H__
-
-#include "ErrorBase.h"
-#include "Task.h"
-#include <map>
-#include <deque>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-class Data;
-class Entry;
-class Key;
-class NetworkQueue;
-class TransactionEnd;
-class TransactionStart;
-
-class Connection : public ErrorBase
-{
-	friend class ConnectionManager;
-	friend class NetworkTable;
-	friend class Reader;
-public:
-	static const UINT32 kWriteDelay = 250;
-	static const UINT32 kTimeout = 1000;
-
-private:
-	Connection(int socket);
-	~Connection();
-	void OfferTransaction(NetworkQueue *transaction);
-	void Offer(Data *data);
-	void Offer(std::auto_ptr<Data> autoData);
-	void Start();
-	void ReadTaskRun();
-	void WriteTaskRun();
-	void Close();
-	bool IsConnected() {return m_connected;}
-	NetworkTable *GetTable(bool local, UINT32 id);
-	bool ConfirmationsContainsKey(Key *key);
-	void WatchdogActivate();
-	void WatchdogFeed();
-	void WatchdogTaskRun();
-
-	static int InitReadTask(Connection *obj) {obj->ReadTaskRun();return 0;}
-	static int InitWriteTask(Connection *obj) {obj->WriteTaskRun();return 0;}
-	static int InitWatchdogTask(Connection *obj) {obj->WatchdogTaskRun();return 0;}
-
-	int m_socket;
-	SEM_ID m_dataLock;
-	SEM_ID m_dataAvailable;
-	SEM_ID m_watchdogLock;
-	SEM_ID m_watchdogFood;
-	typedef std::map<UINT32, UINT32> IDMap_t;
-	IDMap_t m_tableMap;
-	IDMap_t m_fieldMap;
-	NetworkQueue *m_queue;
-	std::deque<Entry *> m_confirmations;
-	NetworkQueue *m_transaction;
-	bool m_connected;
-	bool m_inTransaction;
-	bool m_denyTransaction;
-	bool m_watchdogActive;
-	bool m_watchdogFed;
-	Task m_readTask;
-	Task m_writeTask;
-	Task m_watchdogTask;
-	TransactionStart *m_transactionStart;
-	TransactionEnd *m_transactionEnd;
-};
-
-} // namespace
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.cpp b/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.cpp
deleted file mode 100644
index 1b1c816..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/ConnectionManager.h"
-
-#include "NetworkTables/Connection.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-
-#include <inetLib.h>
-#include <selectLib.h>
-#include <semLib.h>
-#include <sockLib.h>
-#include <taskLib.h>
-#include <usrLib.h>
-
-#define kPort 1735
-
-namespace NetworkTables
-{
-
-ConnectionManager *ConnectionManager::_instance = NULL;
-
-ConnectionManager::ConnectionManager() :
-	m_isServer(true),
-	m_listener("NetworkTablesListener", (FUNCPTR)InitListenTask),
-	m_run(true),
-	m_listenSocket(-1),
-	m_connectionLock(NULL)
-{
-	AddToSingletonList();
-	m_connectionLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_listener.Start((UINT32)this);
-}
-
-ConnectionManager::~ConnectionManager()
-{
-	close(m_listenSocket);
-	_instance->m_run = false;
-	while(_instance->m_listener.Verify())
-		taskDelay(10);
-	semTake(m_connectionLock, WAIT_FOREVER);
-	m_connections.clear();
-	semDelete(m_connectionLock);
-}
-
-ConnectionManager *ConnectionManager::GetInstance()
-{
-	if (_instance == NULL)
-		_instance = new ConnectionManager();
-	return _instance;
-}
-
-int ConnectionManager::ListenTaskRun()
-{
-	struct sockaddr_in serverAddr;
-	int sockAddrSize = sizeof(serverAddr);
-	bzero((char *)&serverAddr, sockAddrSize);
-	serverAddr.sin_len = (u_char)sockAddrSize;
-	serverAddr.sin_family = AF_INET;
-	serverAddr.sin_port = htons(kPort);
-	serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
-
-	// Create the socket.
-	if ((m_listenSocket = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
-	{
-		printErrno(0);
-		wpi_setGlobalWPIErrorWithContext(ResourceAlreadyAllocated, "Could not create NetworkTables server socket");
-		return -1;
-	}
-
-	// Set the TCP socket so that it can be reused if it is in the wait state.
-	int reuseAddr = 1;
-	setsockopt(m_listenSocket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuseAddr, sizeof(reuseAddr));
-
-	// Bind socket to local address.
-	if (bind(m_listenSocket, (struct sockaddr *)&serverAddr, sockAddrSize) == ERROR)
-	{
-		close(m_listenSocket);
-		printErrno(0);
-		wpi_setGlobalWPIErrorWithContext(ResourceAlreadyAllocated, "Could not bind NetworkTables server socket");
-		return -1;
-	}
-
-	if (listen(m_listenSocket, 1) == ERROR)
-	{
-		close(m_listenSocket);
-		printErrno(0);
-		wpi_setGlobalWPIErrorWithContext(ResourceAlreadyAllocated, "Could not listen on NetworkTables server socket");
-		return -1;
-	}
-
-	struct timeval timeout;
-	// Check for a shutdown once per second
-	timeout.tv_sec = 1;
-	timeout.tv_usec = 0;
-	while (m_run)
-	{
-		fd_set fdSet;
-
-		FD_ZERO(&fdSet);
-		FD_SET(m_listenSocket, &fdSet);
-		if (select(FD_SETSIZE, &fdSet, NULL, NULL, &timeout) > 0)
-		{
-			if (FD_ISSET(m_listenSocket, &fdSet))
-			{
-				struct sockaddr clientAddr;
-				int clientAddrSize;
-				int connectedSocket = accept(m_listenSocket, &clientAddr, &clientAddrSize);
-				if (connectedSocket == ERROR)
-					continue;
-
-				// TODO: Linger option?
-				AddConnection(new Connection(connectedSocket));
-			}
-		}
-	}
-	return 0;
-}
-
-void ConnectionManager::AddConnection(Connection *connection)
-{
-	{
-		Synchronized sync(m_connectionLock);
-		if (!m_connections.insert(connection).second)
-		{
-			wpi_setGlobalWPIErrorWithContext(ResourceAlreadyAllocated, "Connection object already exists");
-			return;
-		}
-	}
-	connection->Start();
-}
-
-void ConnectionManager::RemoveConnection(Connection *connection)
-{
-	{
-		Synchronized sync(m_connectionLock);
-		m_connections.erase(connection);
-	}
-	delete connection;
-}
-
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.h b/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.h
deleted file mode 100644
index d3883fb..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/ConnectionManager.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __CONNECTION_MANAGER_H__
-#define __CONNECTION_MANAGER_H__
-
-#include "NetworkTables/Data.h"
-#include "SensorBase.h"
-#include "Task.h"
-#include <set>
-
-namespace NetworkTables
-{
-class Connection;
-
-class ConnectionManager : public SensorBase
-{
-	friend class Connection;
-public:
-	static ConnectionManager *GetInstance();
-
-private:
-	ConnectionManager();
-	~ConnectionManager();
-
-	int ListenTaskRun();
-	bool IsServer() {return m_isServer;}
-	void AddConnection(Connection *connection);
-	void RemoveConnection(Connection *connection);
-
-	static int InitListenTask(ConnectionManager *obj) {obj->ListenTaskRun();return 0;}
-
-	typedef std::set<Connection *> ConnectionSet;
-	bool m_isServer;
-	ConnectionSet m_connections;
-	Task m_listener;
-	bool m_run;
-	int m_listenSocket;
-	SEM_ID m_connectionLock;
-
-	static ConnectionManager *_instance;
-};
-
-}
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Data.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Data.cpp
deleted file mode 100644
index dc76bcd..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Data.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Data.h"
-
-namespace NetworkTables
-{
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Data.h b/aos/externals/WPILib/WPILib/NetworkTables/Data.h
deleted file mode 100644
index 7b47877..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Data.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __DATA_H__
-#define __DATA_H__
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class Data {
-public:
-	virtual void Encode(Buffer *buffer) = 0;
-	virtual bool IsEntry() {return false;}
-	virtual bool IsOldData() {return false;}
-	virtual bool IsTransaction() {return false;}
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Denial.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Denial.cpp
deleted file mode 100644
index 38292e3..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Denial.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Denial.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-
-namespace NetworkTables
-{
-
-Denial::Denial(int count) :
-	m_count(count)
-{
-}
-
-void Denial::Encode(Buffer *buffer)
-{
-	for (int i = m_count; i > 0; i -= kNetworkTables_DENIAL - 1)
-		buffer->WriteByte(kNetworkTables_DENIAL | std::min(kNetworkTables_DENIAL - 1, i));
-}
-
-// Currently unused
-Denial *Denial::Combine(Denial *a, Denial *b)
-{
-	a->m_count = a->m_count + b->m_count;
-	delete b;
-	return a;
-}
-
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Denial.h b/aos/externals/WPILib/WPILib/NetworkTables/Denial.h
deleted file mode 100644
index 595d322..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Denial.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __DENIAL_H__
-#define __DENIAL_H__
-
-#include "NetworkTables/Data.h"
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class Denial : public Data
-{
-public:
-	Denial(int count);
-	virtual void Encode(Buffer *buffer);
-private:
-	static Denial *Combine(Denial *a, Denial *b);
-
-	int m_count;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.cpp
deleted file mode 100644
index a1c1a74..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/DoubleEntry.h"
-#include "NetworkTables/Buffer.h"
-
-namespace NetworkTables
-{
-
-DoubleEntry::DoubleEntry(double value) :
-	m_value(value)
-{
-}
-
-NetworkTables_Types DoubleEntry::GetType()
-{
-	return kNetworkTables_Types_DOUBLE;
-}
-
-void DoubleEntry::Encode(Buffer *buffer)
-{
-	Entry::Encode(buffer);
-	buffer->WriteByte(kNetworkTables_DOUBLE);
-	buffer->WriteDouble(m_value);
-}
-
-double DoubleEntry::GetDouble()
-{
-	return m_value;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.h b/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.h
deleted file mode 100644
index 6108f0d..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/DoubleEntry.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __DOUBLE_ENTRY_H__
-#define __DOUBLE_ENTRY_H__
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include <vxWorks.h>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class DoubleEntry : public Entry {
-public:
-	DoubleEntry(double value);
-	virtual NetworkTables_Types GetType();
-	virtual void Encode(Buffer *buffer);
-	virtual double GetDouble();
-
-private:
-	double m_value;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Entry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Entry.cpp
deleted file mode 100644
index 2c3d87a..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Entry.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/Key.h"
-#include "WPIErrors.h"
-
-namespace NetworkTables
-{
-
-UINT32 Entry::GetId()
-{
-	return m_key->GetId();
-}
-
-void Entry::Encode(Buffer *buffer)
-{
-	GetKey()->EncodeName(buffer);
-}
-
-int Entry::GetInt()
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return 0;
-}
-
-double Entry::GetDouble()
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return 0.0;
-}
-
-bool Entry::GetBoolean()
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return false;
-}
-
-int Entry::GetString(char *str, int len)
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return 0;
-}
-
-std::string Entry::GetString()
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return "";
-}
-
-NetworkTable *Entry::GetTable()
-{
-	wpi_setWPIError(NetworkTablesWrongType);
-	return NULL;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Entry.h b/aos/externals/WPILib/WPILib/NetworkTables/Entry.h
deleted file mode 100644
index 61ff5f8..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Entry.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __ENTRY_H__
-#define __ENTRY_H__
-
-#include "ErrorBase.h"
-#include "NetworkTables/Data.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include <vxWorks.h>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-class Connection;
-class Key;
-
-class Entry : public Data, public ErrorBase
-{
-public:
-	void SetKey(Key *key) {m_key = key;}
-	Key *GetKey() {return m_key;}
-	UINT32 GetId();
-    void SetSource(Connection *source) {m_source = source;}
-	Connection *GetSource() {return m_source;}
-
-	virtual void Encode(Buffer *buffer);
-	virtual bool IsEntry() {return true;}
-
-	virtual NetworkTables_Types GetType() = 0;
-	virtual int GetInt();
-	virtual double GetDouble();
-	virtual bool GetBoolean();
-	virtual int GetString(char *str, int len);
-	virtual std::string GetString();
-	virtual NetworkTable *GetTable();
-
-private:
-
-	Key *m_key;
-	Connection *m_source;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.cpp
deleted file mode 100644
index 3806ac6..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/IntegerEntry.h"
-#include "NetworkTables/Buffer.h"
-
-namespace NetworkTables
-{
-
-IntegerEntry::IntegerEntry(int value) :
-	m_value(value)
-{
-}
-
-NetworkTables_Types IntegerEntry::GetType()
-{
-	return kNetworkTables_Types_INT;
-}
-
-void IntegerEntry::Encode(Buffer *buffer)
-{
-	Entry::Encode(buffer);
-	buffer->WriteByte(kNetworkTables_INT);
-	buffer->WriteInt(m_value);
-}
-
-int IntegerEntry::GetInt()
-{
-	return m_value;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.h b/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.h
deleted file mode 100644
index bee5a7e..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/IntegerEntry.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __INTEGER_ENTRY_H__
-#define __INTEGER_ENTRY_H__
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include <vxWorks.h>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class IntegerEntry : public Entry {
-public:
-	IntegerEntry(int value);
-	virtual NetworkTables_Types GetType();
-	virtual void Encode(Buffer *buffer);
-	virtual int GetInt();
-
-private:
-	int m_value;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/InterfaceConstants.h b/aos/externals/WPILib/WPILib/NetworkTables/InterfaceConstants.h
deleted file mode 100644
index 99a0eb2..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/InterfaceConstants.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __INTERFACE_CONSTANTS_H__
-#define __INTERFACE_CONSTANTS_H__
-
-#define kNetworkTables_STRING			0
-#define kNetworkTables_BEGIN_STRING		0xFF
-#define kNetworkTables_END_STRING		0
-#define kNetworkTables_INT				1
-#define kNetworkTables_DOUBLE			2
-#define kNetworkTables_TABLE			3
-#define kNetworkTables_TABLE_ASSIGNMENT	kNetworkTables_TABLE
-#define kNetworkTables_BOOLEAN_FALSE	4
-#define kNetworkTables_BOOLEAN_TRUE		5
-#define kNetworkTables_ASSIGNMENT		6
-#define kNetworkTables_EMPTY			7
-#define kNetworkTables_DATA				8
-#define kNetworkTables_OLD_DATA			9
-#define kNetworkTables_TRANSACTION		10
-#define kNetworkTables_REMOVAL			11
-#define kNetworkTables_TABLE_REQUEST	12
-#define kNetworkTables_ID				(1 << 7)
-#define kNetworkTables_TABLE_ID			(1 << 6)
-#define kNetworkTables_CONFIRMATION		(1 << 5)
-#define kNetworkTables_CONFIRMATION_MAX	(kNetworkTables_CONFIRMATION - 1)
-#define kNetworkTables_PING				kNetworkTables_CONFIRMATION
-#define kNetworkTables_DENIAL			(1 << 4)
-
-typedef enum
-{
-	kNetworkTables_Types_NONE = -1,
-	kNetworkTables_Types_STRING = kNetworkTables_STRING,
-	kNetworkTables_Types_INT = kNetworkTables_INT,
-	kNetworkTables_Types_DOUBLE = kNetworkTables_DOUBLE,
-	kNetworkTables_Types_BOOLEAN = kNetworkTables_BOOLEAN_TRUE,
-	kNetworkTables_Types_TABLE = kNetworkTables_TABLE,
-} NetworkTables_Types;
-
-#endif // __INTERFACE_CONSTANTS_H__
-
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Key.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Key.cpp
deleted file mode 100644
index b61b23e..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Key.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Key.h"
-
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/NetworkTable.h"
-#include "Synchronized.h"
-
-namespace NetworkTables
-{
-
-SEM_ID Key::_staticLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);;
-std::map<UINT32, Key *> Key::_idsMap;
-UINT32 Key::_currentId = 0;
-
-Key::Key(NetworkTable *table, const char *keyName) :
-	m_table(table),
-	m_name(keyName),
-	m_entry(NULL),
-	m_id(AllocateId())
-{
-	_idsMap.insert(std::pair<UINT32, Key *>(m_id, this));
-}
-
-Key::~Key()
-{
-	_idsMap.erase(m_id);
-}
-
-NetworkTables_Types Key::GetType()
-{
-	if (m_entry.get() == NULL)
-		return kNetworkTables_Types_NONE;
-	return m_entry->GetType();
-}
-
-void Key::Encode(Buffer *buffer)
-{
-	buffer->WriteByte(kNetworkTables_ASSIGNMENT);
-	m_table->EncodeName(buffer);
-	buffer->WriteString(m_name);
-	buffer->WriteId(m_id);
-}
-
-std::auto_ptr<Entry> Key::SetEntry(std::auto_ptr<Entry> entry)
-{
-	Entry *old = m_entry.release();
-	m_entry = entry;
-	m_entry->SetKey(this);
-	return std::auto_ptr<Entry>(old);
-}
-
-Key *Key::GetKey(UINT32 id)
-{
-	return _idsMap[id];
-}
-
-void Key::EncodeName(Buffer *buffer)
-{
-	buffer->WriteId(m_id);
-}
-
-UINT32 Key::AllocateId()
-{
-	Synchronized sync(_staticLock);
-	return ++_currentId;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Key.h b/aos/externals/WPILib/WPILib/NetworkTables/Key.h
deleted file mode 100644
index 07a5fa7..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Key.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __KEY_H__
-#define __KEY_H__
-
-#include "NetworkTables/Data.h"
-#include "NetworkTables/InterfaceConstants.h"
-
-#include <map>
-#include <string>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Entry;
-
-class Key : public Data
-{
-	friend class Connection;
-	friend class Entry;
-	friend class KeyConnectionListener;
-	friend class NetworkTable;
-public:
-	Key(NetworkTable *table, const char *keyName);
-	virtual ~Key();
-	NetworkTable *GetTable() {return m_table;}
-	NetworkTables_Types GetType();
-	Entry *GetEntry() {return m_entry.get();}
-	std::string GetName() {return m_name;}
-	UINT32 GetId() {return m_id;}
-	void Encode(Buffer *buffer);
-
-	static Key *GetKey(UINT32 id);
-
-private:
-	std::auto_ptr<Entry> SetEntry(std::auto_ptr<Entry> entry);
-	bool HasEntry() {return m_entry.get() != NULL;}
-	void EncodeName(Buffer *buffer);
-
-	static UINT32 AllocateId();
-
-	NetworkTable *m_table;
-	std::string m_name;
-	// Keys are responsible for entrys' memory
-	std::auto_ptr<Entry> m_entry;
-	UINT32 m_id;
-
-	static SEM_ID _staticLock;
-	static std::map<UINT32, Key *> _idsMap;
-	static UINT32 _currentId;
-};
-
-} // namespace
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.cpp b/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.cpp
deleted file mode 100644
index 2eac671..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/NetworkQueue.h"
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/Key.h"
-#include "NetworkTables/Confirmation.h"
-#include "NetworkTables/Denial.h"
-#include "NetworkTables/TransactionStart.h"
-#include "NetworkTables/TransactionEnd.h"
-#include "Synchronized.h"
-
-namespace NetworkTables
-{
-
-NetworkQueue::NetworkQueue() :
-	m_dataLock(NULL),
-	m_inTransaction(false)
-{
-	m_dataLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-}
-
-NetworkQueue::~NetworkQueue()
-{
-	semDelete(m_dataLock);
-}
-
-void NetworkQueue::Offer(TransactionStart *value)
-{
-	Synchronized sync(m_dataLock);
-	m_inTransaction = true;
-	m_dataQueue.push_back(DataQueue_t::value_type(value, false));	
-}
-
-void NetworkQueue::Offer(TransactionEnd *value)
-{
-	Synchronized sync(m_dataLock);
-	m_inTransaction = false;
-	m_dataQueue.push_back(DataQueue_t::value_type(value, false));	
-}
-
-void NetworkQueue::Offer(Data *value, bool needsDelete)
-{
-	Synchronized sync(m_dataLock);
-	if (value->IsEntry())
-	{
-		if (m_inTransaction)
-		{
-			m_dataQueue.push_back(DataQueue_t::value_type(value, needsDelete));
-		}
-		else
-		{
-			DataHash_t::iterator found = m_latestDataHash.find(((Entry *)value)->GetId());
-			if (found != m_latestDataHash.end())
-			{
-				// Replace the old value for this key with a new one
-				// If this used to be auto_ptr'd, then delete it
-				// (This should never happen, right?)
-				if (found->second->second)
-					delete found->second->first;
-				found->second->first = value;
-			}
-			else
-			{
-				// Add a new entry to the queue
-				m_dataQueue.push_back(DataQueue_t::value_type(value, needsDelete));
-				m_latestDataHash.insert(DataHash_t::value_type(((Entry *)m_dataQueue.back().first)->GetId(), m_dataQueue.end() - 1));
-			}
-		}
-	}
-	else
-	{
-		// TODO: Combine Confirmations
-		// TODO: Combine Denials
-		m_dataQueue.push_back(DataQueue_t::value_type(value, needsDelete));
-	}
-}
-
-void NetworkQueue::Offer(std::auto_ptr<Data> value)
-{
-	// Indicate that we released this from an auto_ptr
-	Offer(value.release(), true);
-}
-
-bool NetworkQueue::IsEmpty()
-{
-	Synchronized sync(m_dataLock);
-	return m_dataQueue.empty();
-}
-
-bool NetworkQueue::ContainsKey(Key *key)
-{
-	Synchronized sync(m_dataLock);
-	DataHash_t::iterator found = m_latestDataHash.find(key->GetId());
-	return key != NULL && found != m_latestDataHash.end();
-}
-
-// @return the data and if it came from an auto_ptr
-std::pair<Data *, bool> NetworkQueue::Poll()
-{
-	Synchronized sync(m_dataLock);
-	if (IsEmpty())
-		return DataQueue_t::value_type(NULL, false);
-	DataQueue_t::value_type data = m_dataQueue.front();
-	if (data.first->IsEntry())
-	{
-		m_latestDataHash.erase(((Entry *)data.first)->GetId());
-	}
-	m_dataQueue.pop_front();
-	return data;
-}
-
-void NetworkQueue::Clear()
-{
-	Synchronized sync(m_dataLock);
-	m_dataQueue.clear();
-	m_latestDataHash.clear();
-}
-
-Data *NetworkQueue::Peek()
-{
-	Synchronized sync(m_dataLock);
-	if (IsEmpty())
-		return NULL;
-	return m_dataQueue.front().first;
-}
-
-} // namespace
-
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.h b/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.h
deleted file mode 100644
index ec9da58..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkQueue.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_QUEUE_H__
-#define __NETWORK_QUEUE_H__
-
-#include "NetworkTables/NetworkTable.h"
-#include <map>
-#include <deque>
-
-namespace NetworkTables
-{
-class Entry;
-class Confirmation;
-class Denial;
-class TransactionStart;
-class TransactionEnd;
-class Data;
-
-class NetworkQueue
-{
-	typedef std::deque<std::pair<Data *, bool> > DataQueue_t;
-	typedef std::map<UINT32, DataQueue_t::iterator> DataHash_t;
-public:
-	NetworkQueue();
-	~NetworkQueue();
-
-	void Offer(TransactionStart *value);
-	void Offer(TransactionEnd *value);
-	void Offer(Data *value, bool needsDelete=false);
-	void Offer(std::auto_ptr<Data> value);
-	bool IsEmpty();
-	bool ContainsKey(Key *key);
-	std::pair<Data *, bool> Poll();
-	void Clear();
-	Data *Peek();
-	DataQueue_t::const_iterator GetQueueHead() {return m_dataQueue.begin();}
-	bool IsQueueEnd(DataQueue_t::const_iterator it) {return m_dataQueue.end() == it;}
-
-private:
-	SEM_ID m_dataLock;
-	DataQueue_t m_dataQueue;
-	DataHash_t m_latestDataHash;
-	bool m_inTransaction;
-};
-
-}
-
-#endif // __NETWORK_QUEUE_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.cpp b/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.cpp
deleted file mode 100644
index e236fa8..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.cpp
+++ /dev/null
@@ -1,683 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/NetworkTable.h"
-
-#include "NetworkTables/BooleanEntry.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/Connection.h"
-#include "NetworkTables/ConnectionManager.h"
-#include "NetworkTables/DoubleEntry.h"
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/IntegerEntry.h"
-#include "NetworkTables/Key.h"
-#include "NetworkTables/NetworkQueue.h"
-#include "NetworkTables/NetworkTableChangeListener.h"
-#include "NetworkTables/NetworkTableAdditionListener.h"
-#include "NetworkTables/NetworkTableConnectionListener.h"
-#include "NetworkTables/StringEntry.h"
-#include "NetworkTables/TableEntry.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-
-NetworkTable::TableNameMap NetworkTable::_tableNameMap;
-NetworkTable::TableIdMap NetworkTable::_tableIdMap;
-UINT32 NetworkTable::_currentId = 1;
-bool NetworkTable::_initialized = false;
-SEM_ID NetworkTable::_staticMemberMutex = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-
-NetworkTable::NetworkTable() :
-	m_dataLock(NULL),
-	m_listenerLock(NULL),
-	m_id(GrabId()),
-	m_transaction(NULL),
-	m_transactionCount(0),
-	m_hasChanged(NULL),
-	m_hasAdded(NULL)
-{
-	m_dataLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_listenerLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-	m_transaction = new NetworkTables::NetworkQueue();
-	m_hasChanged = new NetworkTables::NetworkQueue();
-	m_hasAdded = new NetworkTables::NetworkQueue();
-}
-
-NetworkTable::~NetworkTable()
-{
-	delete m_hasAdded;
-	delete m_hasChanged;
-	delete m_transaction;
-	semTake(m_listenerLock, WAIT_FOREVER);
-	m_connectionListeners.clear();
-	m_additionListeners.clear();
-	m_listeners.clear();
-	m_listenToAllListeners.clear();
-	semDelete(m_listenerLock);
-	semTake(m_dataLock, WAIT_FOREVER);
-	m_connections.clear();
-	m_data.clear();
-	semDelete(m_dataLock);
-}
-
-/**
- * Opens up the connection stream.  Note that this method will be called
- * automatically when {@link NetworkTable#GetTable(const char *)} is
- * called.  This will only have an effect the first time this is called.
- */
-void NetworkTable::Initialize()
-{
-	if (!_initialized)
-	{
-		_initialized = true;
-		NetworkTables::ConnectionManager::GetInstance();
-	}
-}
-
-/**
- * Returns the table with the given name.  The table will automatically be connected
- * by clients asking for the same table.
- * @param tableName The name of the table
- * @return The table
- */
-NetworkTable *NetworkTable::GetTable(const char *tableName)
-{
-	Initialize();
-	Synchronized sync(_staticMemberMutex);
-	// Insert will add a new element if the key is not found
-	//  or will return the existing key if it is found.
-	std::pair<TableNameMap::iterator, bool> ret =
-		_tableNameMap.insert(TableNameMap::value_type(tableName, NULL));
-	if (ret.second)
-		// Key not found.  Create a table.
-		ret.first->second = new NetworkTable();
-	return ret.first->second;
-}
-
-NetworkTable *NetworkTable::GetTable(int id)
-{
-	Synchronized sync(_staticMemberMutex);
-	// Don't check if the id is in the map(assume it is)
-	// If it's not, we will get the ID mapped to an uninitialized pointer (bad)
-	// TODO: Validate success and error if not found
-	return _tableIdMap[id];
-}
-
-std::vector<const char *> NetworkTable::GetKeys()
-{
-	Synchronized sync(m_dataLock);
-	std::vector<const char *> keys;
-	keys.reserve(m_data.size());
-	DataMap::iterator it = m_data.begin();
-	DataMap::iterator end = m_data.end();
-	for (; it != end; it++)
-		if (it->second->HasEntry())
-			keys.push_back(it->second->GetName().c_str());
-	return keys;
-}
-
-/**
- * Begins a transaction.  Note that you must call endTransaction() afterwards.
- */
-void NetworkTable::BeginTransaction()
-{
-	Synchronized sync(m_dataLock);
-	m_transactionCount++;
-}
-
-void NetworkTable::EndTransaction()
-{
-	Synchronized sync(m_dataLock);
-	if (m_transactionCount == 0)
-	{
-		wpi_setWPIErrorWithContext(NetworkTablesCorrupt, "EndTransaction() called too many times");
-		return;
-	}
-	else if (--m_transactionCount == 0)
-	{
-		ProcessTransaction(true, m_transaction);
-	}
-}
-
-/**
- * Adds a NetworkTableChangeListener to listen to the specified element.
- * @param keyName the key to listen to
- * @param listener the listener
- * @see NetworkTableChangeListener
- */
-void NetworkTable::AddChangeListener(const char *keyName, NetworkTableChangeListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	std::set<NetworkTableChangeListener *> emptyList;
-	std::pair<ListenersMap::iterator, bool> listenersForKey =
-		m_listeners.insert(ListenersMap::value_type(keyName, emptyList));
-	listenersForKey.first->second.insert(listener);
-}
-
-/**
- * Adds a NetworkTableChangeListener to listen to any element changed in the table
- * @param listener the listener
- * @see NetworkTableChangeListener
- */
-void NetworkTable::AddChangeListenerAny(NetworkTableChangeListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	m_listenToAllListeners.insert(listener);
-}
-
-/**
- * Removes the given NetworkTableChangeListener from the specified element.
- * @param keyName the key to no longer listen to.
- * @param listener the listener to remove
- * @see NetworkTableChangeListener
- */
-void NetworkTable::RemoveChangeListener(const char *keyName,
-	NetworkTableChangeListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	ListenersMap::iterator listenersForKey = m_listeners.find(keyName);
-	if (listenersForKey != m_listeners.end())
-		listenersForKey->second.erase(listener);
-}
-
-/**
- * Removes the given NetworkTableChangeListener for any element in the table.
- * @param listener the listener to remove
- * @see NetworkTableChangeListener
- */
-void NetworkTable::RemoveChangeListenerAny(NetworkTableChangeListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	m_listenToAllListeners.erase(listener);
-}
-
-/**
- * Adds the NetworkTableAdditionListener to the table.
- * @param listener the listener to add
- * @see NetworkTableAdditionListener
- */
-void NetworkTable::AddAdditionListener(NetworkTableAdditionListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	m_additionListeners.insert(listener);
-}
-
-/**
- * Removes the given NetworkTableAdditionListener from the set of listeners.
- * @param listener the listener to remove
- * @see NetworkTableAdditionListener
- */
-void NetworkTable::RemoveAdditionListener(
-	NetworkTableAdditionListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	m_additionListeners.erase(listener);
-}
-
-/**
- * Adds a NetworkTableConnectionListener to this table.
- * @param listener the listener to add
- * @param immediateNotify whether to tell the listener of the current connection status
- * @see NetworkTableConnectionListener
- */
-void NetworkTable::AddConnectionListener(
-	NetworkTableConnectionListener *listener, bool immediateNotify)
-{
-	Synchronized sync(m_listenerLock);
-	m_connectionListeners.insert(listener);
-}
-
-/**
- * Removes the given NetworkTableConnectionListener from the table.
- * @param listener the listener to remove
- * @see NetworkTableConnectionListener
- */
-void NetworkTable::RemoveConnectionListener(
-	NetworkTableConnectionListener *listener)
-{
-	Synchronized sync(m_listenerLock);
-	m_connectionListeners.erase(listener);
-}
-
-/**
- * Returns whether or not this table is connected to the robot.
- *
- * @return whether or not this table is connected to the robot
- */
-bool NetworkTable::IsConnected()
-{
-	Synchronized sync(m_dataLock);
-	return m_connections.size() > 0;
-}
-
-bool NetworkTable::ContainsKey(const char *keyName)
-{
-	if (keyName == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "keyName");
-		return false;
-	}
-	Synchronized sync(m_dataLock);
-	DataMap::iterator key = m_data.find(keyName);
-	return key != m_data.end() && key->second->HasEntry();
-}
-
-/**
- * Internally used to get at the underlying Entry
- * @param keyName the name of the key
- * @return the entry at that position (or null if no entry)
- */
-NetworkTables::Entry *NetworkTable::GetEntry(const char *keyName)
-{
-	if (keyName == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "keyName");
-		return NULL;
-	}
-	Synchronized sync(m_dataLock);
-	DataMap::iterator key = m_data.find(keyName);
-	if (key == m_data.end())
-		return NULL;
-	return key->second->GetEntry();
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-int NetworkTable::GetInt(const char *keyName)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName);
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_INT)
-			return entry->GetInt();
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return 0;
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-bool NetworkTable::GetBoolean(const char *keyName)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName);
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_BOOLEAN)
-			return entry->GetBoolean();
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return false;
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-double NetworkTable::GetDouble(const char *keyName)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName);
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_DOUBLE)
-			return entry->GetDouble();
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return 0.0;
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-int NetworkTable::GetString(const char *keyName, char *value, int len)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName);
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_STRING)
-			return entry->GetString(value, len);
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return 0;
-}
-
-std::string NetworkTable::GetString(std::string keyName)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName.c_str());
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_STRING)
-			return entry->GetString();
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return "";
-}
-
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-NetworkTable *NetworkTable::GetSubTable(const char *keyName)
-{
-	NetworkTables::Entry *entry = GetEntry(keyName);
-	if (entry != NULL)
-	{
-		if (entry->GetType() == kNetworkTables_Types_TABLE)
-			return entry->GetTable();
-		else
-			wpi_setWPIError(NetworkTablesWrongType);
-	}
-	return NULL;
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be null.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void NetworkTable::PutInt(const char *keyName, int value)
-{
-	Put(keyName, std::auto_ptr<NetworkTables::Entry>(new NetworkTables::IntegerEntry(value)));
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be null.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void NetworkTable::PutBoolean(const char *keyName, bool value)
-{
-	Put(keyName, std::auto_ptr<NetworkTables::Entry>(new NetworkTables::BooleanEntry(value)));
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be null.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void NetworkTable::PutDouble(const char *keyName, double value)
-{
-	Put(keyName, std::auto_ptr<NetworkTables::Entry>(new NetworkTables::DoubleEntry(value)));
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be null.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void NetworkTable::PutString(const char *keyName, const char *value)
-{
-	if (value == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "value");
-		return;
-	}
-	Put(keyName, std::auto_ptr<NetworkTables::Entry>(new NetworkTables::StringEntry(value)));
-}
-
-void NetworkTable::PutString(std::string keyName, std::string value)
-{
-	PutString(keyName.c_str(), value.c_str());
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be null.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void NetworkTable::PutSubTable(const char *keyName, NetworkTable *value)
-{
-	if (value == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "value");
-		return;
-	}
-	Put(keyName, std::auto_ptr<NetworkTables::Entry>(new NetworkTables::TableEntry(value)));
-}
-
-UINT32 NetworkTable::GrabId()
-{
-	Synchronized sync(_staticMemberMutex);
-	return _currentId++;
-}
-
-void NetworkTable::ProcessTransaction(bool confirmed, NetworkTables::NetworkQueue *transaction)
-{
-	if (transaction->IsEmpty())
-		return;
-
-	NetworkTables::Connection *source = ((NetworkTables::Entry *)transaction->Peek())->GetSource();
-
-	Synchronized sync(m_dataLock);
-
-	std::set<NetworkTables::Connection *>::iterator it, end;
-	it = m_connections.begin();
-	end = m_connections.end();
-	for (; it != end; it++)
-		if (*it != source)
-			(*it)->OfferTransaction(transaction);
-
-	while (!transaction->IsEmpty())
-	{
-		std::pair<NetworkTables::Data *, bool> data = transaction->Poll();
-		// TODO: Remove this
-		if (!data.second)
-			printf("Internal error!");
-		std::auto_ptr<NetworkTables::Entry> entry =
-			std::auto_ptr<NetworkTables::Entry>((NetworkTables::Entry *)data.first);
-		std::auto_ptr<NetworkTables::Entry> oldEntry = entry->GetKey()->SetEntry(entry);
-		if (oldEntry.get() == NULL)
-			m_hasAdded->Offer(data.first);
-		else	// TODO: Filter unchanged values
-			m_hasChanged->Offer(data.first);
-	}
-	while (!m_hasAdded->IsEmpty())
-	{
-		NetworkTables::Entry *entry = (NetworkTables::Entry *)m_hasAdded->Poll().first;
-		AlertListeners(true, confirmed, entry->GetKey()->GetName().c_str(), entry);
-	}
-	while (!m_hasChanged->IsEmpty())
-	{
-		NetworkTables::Entry *entry = (NetworkTables::Entry *)m_hasChanged->Poll().first;
-		AlertListeners(true, confirmed, entry->GetKey()->GetName().c_str(), entry);
-	}
-}
-
-void NetworkTable::AddConnection(NetworkTables::Connection *connection)
-{
-	Synchronized sync(m_dataLock);
-
-	if (m_connections.insert(connection).second)
-	{
-		DataMap::iterator it = m_data.begin();
-		DataMap::iterator end = m_data.end();
-		for (; it != end; it++)
-		{
-			connection->Offer(it->second);
-			if(it->second->HasEntry())
-				connection->Offer(it->second->GetEntry());
-		}
-		if (m_connections.size() == 1)
-		{
-			Synchronized syncStatic(_staticMemberMutex);
-			_tableIdMap.insert(TableIdMap::value_type(m_id, this));
-
-			std::set<NetworkTableConnectionListener *>::iterator lit, lend;
-			lit = m_connectionListeners.begin();
-			lend = m_connectionListeners.end();
-			for (; lit != lend; lit++)
-				(*lit)->Connected(this);
-		}
-	}
-}
-
-void NetworkTable::RemoveConnection(NetworkTables::Connection *connection)
-{
-	Synchronized sync(m_dataLock);
-
-	m_connections.erase(connection);
-
-	if (m_connections.size() == 0)
-	{
-		Synchronized syncStatic(_staticMemberMutex);
-		_tableIdMap.erase(m_id);
-
-		std::set<NetworkTableConnectionListener *>::iterator lit, lend;
-		lit = m_connectionListeners.begin();
-		lend = m_connectionListeners.end();
-		for (; lit != lend; lit++)
-			(*lit)->Disconnected(this);
-	}
-}
-
-/**
- * Returns the key that the name maps to.  This should
- * never fail, if their is no key for that name, then one should be made.
- * @param keyName the name
- * @return the key
- */
-NetworkTables::Key *NetworkTable::GetKey(const char *keyName)
-{
-	Synchronized sync(m_dataLock);
-	// Insert will add a new element if the key is not found
-	//  or will return the existing key if it is found.
-	std::pair<DataMap::iterator, bool> ret =
-		m_data.insert(DataMap::value_type(keyName, NULL));
-	if (ret.second)
-	{
-		// Key not found.  Create a new one.
-		ret.first->second = new NetworkTables::Key(this, keyName);
-		if (m_connections.size() != 0)
-		{
-			std::set<NetworkTables::Connection *>::iterator it, end;
-			it = m_connections.begin();
-			end = m_connections.end();
-			for (; it != end; it++)
-				(*it)->Offer(ret.first->second);
-		}
-	}
-	return ret.first->second;
-}
-
-void NetworkTable::Put(const char *keyName, std::auto_ptr<NetworkTables::Entry> value)
-{
-	if (keyName == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "keyName");
-		return;
-	}
-	Synchronized sync(m_dataLock);
-	NetworkTables::Key *key = GetKey(keyName);
-	value->SetKey(key);
-
-	if (m_transactionCount == 0)
-		Got(true, key, value);
-	else
-		m_transaction->Offer(std::auto_ptr<NetworkTables::Data>(value.release()));
-}
-
-void NetworkTable::Send(NetworkTables::Entry *entry)
-{
-	Synchronized sync(m_dataLock);
-	std::set<NetworkTables::Connection *>::iterator it, end;
-	it = m_connections.begin();
-	end = m_connections.end();
-	for (; it != end; it++)
-		if (*it != entry->GetSource())
-			(*it)->Offer(entry);
-}
-
-/**
- * This method should be called by children when they want to add a new value.
- * It will notify listeners of the value
- * @param confirmed whether or not this value was confirmed or received
- * @param key the key
- * @param value the value
- */
-void NetworkTable::Got(bool confirmed, NetworkTables::Key *key, std::auto_ptr<NetworkTables::Entry> value)
-{
-	std::auto_ptr<NetworkTables::Entry> old;
-	{
-		Synchronized sync(m_dataLock);
-		old = key->SetEntry(value);
-	}
-	// TODO: return if value didn't change
-
-	Send(key->GetEntry());
-	AlertListeners(old.get() == NULL, confirmed, key->GetName().c_str(), key->GetEntry());
-}
-
-void NetworkTable::AlertListeners(bool isNew, bool confirmed, const char *keyName,
-	NetworkTables::Entry *value)
-{
-	Synchronized sync(m_listenerLock);
-
-	if (isNew && m_additionListeners.size() != 0)
-	{
-		std::set<NetworkTableAdditionListener *>::iterator lit, lend;
-		lit = m_additionListeners.begin();
-		lend = m_additionListeners.end();
-		for (; lit != lend; lit++)
-			(*lit)->FieldAdded(this, keyName, value->GetType());
-	}
-
-	ListenersMap::iterator listeners = m_listeners.find(keyName);
-	if (listeners != m_listeners.end())
-	{
-		std::set<NetworkTableChangeListener *>::iterator lit, lend;
-		lit = listeners->second.begin();
-		lend = listeners->second.end();
-		for (; lit != lend; lit++)
-		{
-			if (confirmed)
-				(*lit)->ValueConfirmed(this, keyName, value->GetType());
-			else
-				(*lit)->ValueChanged(this, keyName, value->GetType());
-		}
-	}
-
-	{
-		std::set<NetworkTableChangeListener *>::iterator lit, lend;
-		lit = m_listenToAllListeners.begin();
-		lend = m_listenToAllListeners.end();
-		for (; lit != lend; lit++)
-		{
-			if (confirmed)
-				(*lit)->ValueConfirmed(this, keyName, value->GetType());
-			else
-				(*lit)->ValueChanged(this, keyName, value->GetType());
-		}
-	}
-}
-
-void NetworkTable::EncodeName(NetworkTables::Buffer *buffer)
-{
-	buffer->WriteTableId(m_id);
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.h b/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.h
deleted file mode 100644
index df978b8..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTable.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_TABLE_H__
-#define __NETWORK_TABLE_H__
-
-#include "ErrorBase.h"
-#include <map>
-#include <set>
-#include <vector>
-
-namespace NetworkTables
-{
-    class Buffer;
-    class Connection;
-    class Entry;
-    class Key;
-    class NetworkQueue;
-    class TableAssignment;
-    class TableEntry;
-}
-
-class NetworkTableChangeListener;
-class NetworkTableAdditionListener;
-class NetworkTableConnectionListener;
-
-class NetworkTable : public ErrorBase {
-	friend class NetworkTables::Connection;
-	friend class NetworkTables::Key;
-	friend class NetworkTables::TableAssignment;
-	friend class NetworkTables::TableEntry;
-public:
-	NetworkTable();
-	~NetworkTable();
-	static void Initialize();
-	static NetworkTable *GetTable(const char *tableName);
-	static NetworkTable *GetTable(int id);
-	std::vector<const char *> GetKeys();
-	void BeginTransaction();
-	void EndTransaction();
-	void AddChangeListener(const char *keyName, NetworkTableChangeListener *listener);
-	void AddChangeListenerAny(NetworkTableChangeListener *listener);
-	void RemoveChangeListener(const char *keyName, NetworkTableChangeListener *listener);
-	void RemoveChangeListenerAny(NetworkTableChangeListener *listener);
-	void AddAdditionListener(NetworkTableAdditionListener *listener);
-	void RemoveAdditionListener(NetworkTableAdditionListener *listener);
-	void AddConnectionListener(NetworkTableConnectionListener *listener, bool immediateNotify);
-	void RemoveConnectionListener(NetworkTableConnectionListener *listener);
-	bool IsConnected();
-	bool ContainsKey(const char *keyName);
-	NetworkTables::Entry *GetEntry(const char *keyName);
-	
-	int GetInt(const char *keyName);
-	bool GetBoolean(const char *keyName);
-	double GetDouble(const char *keyName);
-	int GetString(const char *keyName, char *value, int len);
-	std::string GetString(std::string keyName);
-	NetworkTable *GetSubTable(const char *keyName);
-	void PutInt(const char *keyName, int value);
-	void PutBoolean(const char *keyName, bool value);
-	void PutDouble(const char *keyName, double value);
-	void PutString(const char *keyName, const char *value);
-	void PutString(std::string keyName, std::string value);
-	void PutSubTable(const char *keyName, NetworkTable *value);
-	
-private:
-	static UINT32 GrabId();
-	void ProcessTransaction(bool confirmed, NetworkTables::NetworkQueue *transaction);
-	UINT32 GetId() {return m_id;}
-	void AddConnection(NetworkTables::Connection *connection);
-	void RemoveConnection(NetworkTables::Connection *connection);
-	NetworkTables::Key *GetKey(const char *keyName);
-	void Put(const char *keyName, std::auto_ptr<NetworkTables::Entry> value);
-	void Send(NetworkTables::Entry *entry);
-	void Got(bool confirmed, NetworkTables::Key *key, std::auto_ptr<NetworkTables::Entry> value);
-	void AlertListeners(bool isNew, bool confirmed, const char *keyName, NetworkTables::Entry *value);
-	void EncodeName(NetworkTables::Buffer *buffer);
-
-	/** The lock for data */
-	SEM_ID m_dataLock;
-	/** The actual data */
-	typedef std::map<std::string, NetworkTables::Key *> DataMap;
-	DataMap m_data;
-	/** The connections this table has */
-	std::set<NetworkTables::Connection *> m_connections;
-	/** The lock for listener modification */
-	SEM_ID m_listenerLock;
-	/** Set of NetworkingListeners who register for everything */
-	std::set<NetworkTableChangeListener *> m_listenToAllListeners;
-	/** Links names to NetworkingListeners */
-	typedef std::map<std::string, std::set<NetworkTableChangeListener *> > ListenersMap;
-	ListenersMap m_listeners;
-	/** Set of addition listeners */
-	std::set<NetworkTableAdditionListener *> m_additionListeners;
-	/** Set of connection listeners */
-	std::set<NetworkTableConnectionListener *> m_connectionListeners;
-	/** The id of this table */
-	UINT32 m_id;
-	/** The queue of the current transaction */
-	NetworkTables::NetworkQueue *m_transaction;
-	/** The number of times begin transaction has been called without a matching end transaction */
-	int m_transactionCount;
-	/** A list of values which need to be signaled */
-	NetworkTables::NetworkQueue *m_hasChanged;
-	/** A list of values which has been added */
-	NetworkTables::NetworkQueue *m_hasAdded;
-
-	/** Links names to tables */
-	typedef std::map<std::string, NetworkTable *> TableNameMap;
-	static TableNameMap _tableNameMap;
-	/** Links ids to currently active NetworkingTables */
-	typedef std::map<UINT32, NetworkTable *> TableIdMap;
-	static TableIdMap _tableIdMap;
-	/** The currently available id */
-	static UINT32 _currentId;
-	/** Indicates that static variables are initialized */
-	static bool _initialized;
-	/** Protects access to static members */
-	static SEM_ID _staticMemberMutex;
-	/** Usage Guidelines... */
-	DISALLOW_COPY_AND_ASSIGN(NetworkTable);
-};
-
-#endif // __NETWORK_TABLE_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableAdditionListener.h b/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableAdditionListener.h
deleted file mode 100644
index b115347..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableAdditionListener.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_TABLE_ADDITION_LISTENER_H__
-#define __NETWORK_TABLE_ADDITION_LISTENER_H__
-
-#include "NetworkTables/InterfaceConstants.h"
-
-class NetworkTable;
-
-class NetworkTableAdditionListener {
-public:
-	virtual void FieldAdded(NetworkTable *table, const char *name, NetworkTables_Types type) = 0;
-};
-
-#endif // __NETWORK_TABLE_ADDITION_LISTENER_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableChangeListener.h b/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableChangeListener.h
deleted file mode 100644
index f5b0265..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableChangeListener.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_TABLE_CHANGE_LISTENER_H__
-#define __NETWORK_TABLE_CHANGE_LISTENER_H__
-
-#include "NetworkTables/InterfaceConstants.h"
-
-class NetworkTable;
-
-class NetworkTableChangeListener {
-public:
-public:
-	virtual void ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type) = 0;
-	virtual void ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type) = 0;
-};
-
-#endif // __NETWORK_TABLE_CHANGE_LISTENER_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableConnectionListener.h b/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableConnectionListener.h
deleted file mode 100644
index d58c5c1..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/NetworkTableConnectionListener.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_TABLE_CONNECTION_LISTENER_H__
-#define __NETWORK_TABLE_CONNECTION_LISTENER_H__
-
-class NetworkTable;
-
-class NetworkTableConnectionListener {
-public:
-	virtual void Connected(NetworkTable *table) = 0;
-	virtual void Disconnected(NetworkTable *table) = 0;
-};
-
-#endif // __NETWORK_TABLE_CONNECTION_LISTENER_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/OldData.cpp b/aos/externals/WPILib/WPILib/NetworkTables/OldData.cpp
deleted file mode 100644
index 8d55242..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/OldData.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/OldData.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/Entry.h"
-
-namespace NetworkTables
-{
-
-OldData::OldData(Entry *entry) :
-	m_entry(entry)
-{
-}
-
-void OldData::Encode(Buffer *buffer)
-{
-	buffer->WriteByte(kNetworkTables_OLD_DATA);
-	m_entry->Encode(buffer);
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/OldData.h b/aos/externals/WPILib/WPILib/NetworkTables/OldData.h
deleted file mode 100644
index e2d13d8..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/OldData.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __OLD_DATA_H__
-#define __OLD_DATA_H__
-
-#include "NetworkTables/Data.h"
-#include <vxWorks.h>
-
-namespace NetworkTables
-{
-class Buffer;
-class Entry;
-
-class OldData : public Data
-{
-public:
-	OldData(Entry *entry);
-	virtual void Encode(Buffer *buffer);
-	virtual bool IsOldData() {return true;}
-	Entry *GetEntry() {return m_entry;}
-
-private:
-	Entry *m_entry;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Reader.cpp b/aos/externals/WPILib/WPILib/NetworkTables/Reader.cpp
deleted file mode 100644
index fdc6a46..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Reader.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/Reader.h"
-
-#include "NetworkTables/BooleanEntry.h"
-#include "NetworkTables/Connection.h"
-#include "NetworkTables/DoubleEntry.h"
-#include "NetworkTables/IntegerEntry.h"
-#include "NetworkTables/StringEntry.h"
-#include "WPIErrors.h"
-#include <errnoLib.h> 
-#include <selectLib.h> 
-#include <sockLib.h> 
-#include <usrLib.h> 
-
-namespace NetworkTables
-{
-
-Reader::Reader(Connection *connection, int inputStreamFd) :
-	m_connection(connection),
-	m_inputStreamFd(inputStreamFd)
-{
-	m_lastByte = -2;
-}
-
-int Reader::Read()
-{
-	fd_set readFdSet;
-	int retval = ERROR;
-
-	FD_ZERO(&readFdSet);
-	FD_SET(m_inputStreamFd, &readFdSet);
-	if (select(FD_SETSIZE, &readFdSet, NULL, NULL, NULL) != ERROR)
-	{
-		if (FD_ISSET(m_inputStreamFd, &readFdSet))
-		{
-			char readbuf;
-			retval = recv(m_inputStreamFd, &readbuf, 1, 0);
-			m_lastByte = readbuf;
-			if (retval != ERROR && retval > 0)
-			{
-#ifdef DEBUG
-				if (m_lastByte != kNetworkTables_PING)
-				{
-					char pbuf[6];
-					snprintf(pbuf, 6, "I:%02X\n", m_lastByte);
-					printf(pbuf);
-				}
-#endif
-				return m_lastByte;
-			}
-		}
-	}
-	else if (!m_connection->IsConnected())
-	{
-		// The error came from us closing the socket
-		return 0;
-	}
-
-	// TODO: Should we ignore ECONNRESET errors?
-	if (retval == ERROR)
-	{
-		char buf[32] = "";
-		int err = errnoGet();
-		snprintf(buf, 32, "errno=%d", err);
-		wpi_setStaticWPIErrorWithContext(m_connection, NetworkTablesReadError, buf);
-		printErrno(err);
-	}
-	m_connection->Close();
-	return 0;
-}
-
-int Reader::Check(bool useLastValue)
-{
-	return useLastValue ? m_lastByte : Read();
-}
-
-std::string Reader::ReadString()
-{
-	Read();
-	std::string buffer;
-
-	if (m_lastByte == kNetworkTables_BEGIN_STRING)
-	{
-		buffer.reserve(360);
-		buffer.clear();
-		while (Read() != kNetworkTables_END_STRING)
-			buffer.append(1, (char)m_lastByte);
-	}
-	else
-	{
-		int length = m_lastByte;
-		buffer.reserve(length + 1);
-		buffer.clear();
-		for (int i = 0; i < length; i++)
-			buffer[i] = (char)Read();
-		buffer[length] = '\0';
-	}
-
-	return buffer;
-}
-
-int Reader::ReadId(bool useLastValue)
-{
-	return ReadVariableSize(useLastValue, kNetworkTables_ID);
-}
-
-int Reader::ReadTableId(bool useLastValue) {
-	return ReadVariableSize(useLastValue, kNetworkTables_TABLE_ID);
-}
-
-int Reader::ReadVariableSize(bool useLastValue, int tag) {
-	int value = Check(useLastValue);
-	value ^= tag;
-	if (value < tag - 4)
-	{
-		return value;
-	}
-	else
-	{
-		int bytes = (value & 3) + 1;
-		int id = 0;
-		for (int i = 0; i < bytes; i++)
-			id = (id << 8) | Read();
-		return id;
-	}
-}
-
-int Reader::ReadInt()
-{
-	return (Read() << 24) | (Read() << 16) | (Read() << 8) | Read();
-}
-
-double Reader::ReadDouble()
-{
-	long l = Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	l = (l << 8) | Read();
-	return *((double *)&l);
-}
-
-int Reader::ReadConfirmations(bool useLastValue)
-{
-	return Check(useLastValue) ^ kNetworkTables_CONFIRMATION;
-}
-
-int Reader::ReadDenials(bool useLastValue)
-{
-	return Check(useLastValue) ^ kNetworkTables_DENIAL;
-}
-
-std::auto_ptr<Entry> Reader::ReadEntry(bool useLastValue)
-{
-	switch (Check(useLastValue))
-	{
-	case kNetworkTables_BOOLEAN_FALSE:
-		return std::auto_ptr<Entry>(new BooleanEntry(false));
-	case kNetworkTables_BOOLEAN_TRUE:
-		return std::auto_ptr<Entry>(new BooleanEntry(true));
-	case kNetworkTables_INT:
-		return std::auto_ptr<Entry>(new IntegerEntry(ReadInt()));
-	case kNetworkTables_DOUBLE:
-		return std::auto_ptr<Entry>(new DoubleEntry(ReadDouble()));
-	case kNetworkTables_STRING:
-		return std::auto_ptr<Entry>(new StringEntry(ReadString().c_str()));
-	default:
-		return std::auto_ptr<Entry>(NULL);
-	}
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/Reader.h b/aos/externals/WPILib/WPILib/NetworkTables/Reader.h
deleted file mode 100644
index a13eb09..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/Reader.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __READER_H__
-#define __READER_H__
-
-#include "NetworkTables/Entry.h"
-#include <memory>
-#include <string>
-
-namespace NetworkTables
-{
-class Connection;
-
-class Reader
-{
-public:
-    Reader(Connection *connection, int inputStreamFd);
-    int Read();
-    std::string ReadString();
-    int ReadId(bool useLastValue);
-    int ReadTableId(bool useLastValue);
-    int ReadInt();
-    double ReadDouble();
-    int ReadConfirmations(bool useLastValue);
-    int ReadDenials(bool useLastValue);
-    std::auto_ptr<Entry> ReadEntry(bool useLastValue);
-private:
-    int Check(bool useLastValue);
-    int ReadVariableSize(bool useLastValue, int tag);
-
-    /** The connection associated with this reader */
-    Connection *m_connection;
-    /** The input stream */
-    int m_inputStreamFd;
-    /** The last read value (-2 if nothing has been read) */
-    int m_lastByte;
-
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.cpp
deleted file mode 100644
index a8db0cd..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/StringEntry.h"
-#include "NetworkTables/Buffer.h"
-
-namespace NetworkTables
-{
-
-StringEntry::StringEntry(const char *str)
-{
-	m_value = str;
-}
-
-NetworkTables_Types StringEntry::GetType()
-{
-	return kNetworkTables_Types_STRING;
-}
-
-void StringEntry::Encode(Buffer *buffer)
-{
-	Entry::Encode(buffer);
-	buffer->WriteByte(kNetworkTables_STRING);
-	buffer->WriteString(m_value.c_str());
-}
-
-int StringEntry::GetString(char *str, int len)
-{
-	return (int)m_value.copy(str, len);
-}
-
-std::string StringEntry::GetString()
-{
-	return m_value;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.h b/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.h
deleted file mode 100644
index 43c65b2..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/StringEntry.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __STRING_ENTRY_H__
-#define __STRING_ENTRY_H__
-
-#include "NetworkTables/Entry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include <vxWorks.h>
-#include <string>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class StringEntry : public Entry {
-public:
-	StringEntry(const char *str);
-	virtual ~StringEntry() {}
-	virtual NetworkTables_Types GetType();
-	virtual void Encode(Buffer *buffer);
-	virtual int GetString(char *str, int len);
-	virtual std::string GetString();
-
-private:
-	std::string m_value;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.cpp b/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.cpp
deleted file mode 100644
index 1629e9c..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/TableAssignment.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include "NetworkTables/NetworkTable.h"
-
-namespace NetworkTables
-{
-
-TableAssignment::TableAssignment(NetworkTable *table, int alteriorId) :
-	m_table(table),
-	m_alteriorId(alteriorId)
-{
-}
-
-void TableAssignment::Encode(Buffer *buffer)
-{
-	buffer->WriteByte(kNetworkTables_TABLE_ASSIGNMENT);
-	buffer->WriteTableId(m_alteriorId);
-	m_table->EncodeName(buffer);
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.h b/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.h
deleted file mode 100644
index b8fa029..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TableAssignment.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __TABLE_ASSIGNMENT_H__
-#define __TABLE_ASSIGNMENT_H__
-
-#include "NetworkTables/Data.h"
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class TableAssignment : public Data
-{
-public:
-	TableAssignment(NetworkTable *table, int alteriorId);
-	virtual void Encode(Buffer *buffer);
-
-private:
-	NetworkTable *m_table;
-	int m_alteriorId;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.cpp b/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.cpp
deleted file mode 100644
index b14add8..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/TableEntry.h"
-#include "NetworkTables/InterfaceConstants.h"
-#include "NetworkTables/NetworkTable.h"
-
-namespace NetworkTables
-{
-
-TableEntry::TableEntry(NetworkTable *value) :
-	m_value(value)
-{
-}
-
-NetworkTables_Types TableEntry::GetType()
-{
-	return kNetworkTables_Types_TABLE;
-}
-
-void TableEntry::Encode(Buffer *buffer)
-{
-	Entry::Encode(buffer);
-	m_value->EncodeName(buffer);
-}
-
-NetworkTable *TableEntry::GetTable()
-{
-	return m_value;
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.h b/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.h
deleted file mode 100644
index 0e8032c..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TableEntry.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __TABLE_ENTRY_H__
-#define __TABLE_ENTRY_H__
-
-#include "NetworkTables/Entry.h"
-#include <vxWorks.h>
-
-class NetworkTable;
-
-namespace NetworkTables
-{
-class Buffer;
-
-class TableEntry : public Entry
-{
-public:
-	TableEntry(NetworkTable *value);
-	virtual NetworkTables_Types GetType();
-	virtual void Encode(Buffer *buffer);
-	virtual NetworkTable *GetTable();
-
-private:
-	NetworkTable *m_value;
-};
-
-} // namespace
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.cpp b/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.cpp
deleted file mode 100644
index 8b046a2..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/TransactionEnd.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-
-namespace NetworkTables
-{
-
-void TransactionEnd::Encode(Buffer *buffer)
-{
-	buffer->WriteByte(kNetworkTables_TRANSACTION);
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.h b/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.h
deleted file mode 100644
index a7281b6..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TransactionEnd.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __TRANSACTION_END_H__
-#define __TRANSACTION_END_H__
-
-#include "NetworkTables/Data.h"
-
-namespace NetworkTables
-{
-class Buffer;
-
-class TransactionEnd : public Data
-{
-public:
-	virtual void Encode(Buffer *buffer);
-	virtual bool IsTransaction() {return true;}
-};
-
-} // namespace
-
-#endif // __TRANSACTION_END_H__
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.cpp b/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.cpp
deleted file mode 100644
index 33d564e..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "NetworkTables/TransactionStart.h"
-#include "NetworkTables/Buffer.h"
-#include "NetworkTables/InterfaceConstants.h"
-
-namespace NetworkTables
-{
-
-void TransactionStart::Encode(Buffer *buffer)
-{
-	buffer->WriteByte(kNetworkTables_TRANSACTION);
-}
-
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.h b/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.h
deleted file mode 100644
index 245c93c..0000000
--- a/aos/externals/WPILib/WPILib/NetworkTables/TransactionStart.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.                             */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __TRANSACTION_START_H__
-#define __TRANSACTION_START_H__
-
-#include "NetworkTables/Data.h"
-
-namespace NetworkTables
-{
-
-class Buffer;
-
-class TransactionStart : public Data
-{
-public:
-	virtual void Encode(Buffer *buffer);
-	virtual bool IsTransaction() {return true;}
-};
-
-} // namespace
-
-#endif // __TRANSACTION_START_H__
diff --git a/aos/externals/WPILib/WPILib/Notifier.cpp b/aos/externals/WPILib/WPILib/Notifier.cpp
index bafae85..edbe487 100644
--- a/aos/externals/WPILib/WPILib/Notifier.cpp
+++ b/aos/externals/WPILib/WPILib/Notifier.cpp
@@ -11,7 +11,7 @@
 
 const UINT32 Notifier::kTimerInterruptNumber;
 Notifier *Notifier::timerQueueHead = NULL;
-Semaphore Notifier::queueSemaphore;
+ReentrantSemaphore Notifier::queueSemaphore;
 tAlarm *Notifier::talarm = NULL;
 tInterruptManager *Notifier::manager = NULL;
 int Notifier::refcount = 0;
@@ -243,7 +243,7 @@
 /**
  * Register for periodic event notification.
  * A timer event is queued for periodic event notification. Each time the interrupt
- * occurs, the event will be immedeatly requeued for the same time interval.
+ * occurs, the event will be immediately requeued for the same time interval.
  * @param period Period in seconds to call the handler starting one period after the call to this method.
  */
 void Notifier::StartPeriodic(double period)
diff --git a/aos/externals/WPILib/WPILib/Notifier.h b/aos/externals/WPILib/WPILib/Notifier.h
index 5bcfc92..a36b872 100644
--- a/aos/externals/WPILib/WPILib/Notifier.h
+++ b/aos/externals/WPILib/WPILib/Notifier.h
@@ -23,7 +23,7 @@
 	void Stop();
 private:
 	static Notifier *timerQueueHead;
-	static Semaphore queueSemaphore;
+	static ReentrantSemaphore queueSemaphore;
 	static tAlarm *talarm;
 	static tInterruptManager *manager;
 	static int refcount;
diff --git a/aos/externals/WPILib/WPILib/PIDController.cpp b/aos/externals/WPILib/WPILib/PIDController.cpp
index 99b7e44..b9a7ed4 100644
--- a/aos/externals/WPILib/WPILib/PIDController.cpp
+++ b/aos/externals/WPILib/WPILib/PIDController.cpp
@@ -11,6 +11,15 @@
 #include "PIDOutput.h"
 #include <math.h>
 #include "Synchronized.h"
+
+static const char *kP = "p";
+static const char *kI = "i";
+static const char *kD = "d";
+static const char *kF = "f";
+static const char *kSetpoint = "setpoint";
+static const char *kEnabled = "enabled";
+
+
 /**
  * Allocate a PID object with the given constants for P, I, D
  * @param Kp the proportional coefficient
@@ -26,13 +35,43 @@
 								float period) :
 	m_semaphore (0)
 {
-	m_semaphore = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
+	Initialize(Kp, Ki, Kd, 0.0f, source, output, period);
+}
+
+/**
+ * Allocate a PID object with the given constants for P, I, D
+ * @param Kp the proportional coefficient
+ * @param Ki the integral coefficient
+ * @param Kd the derivative coefficient
+ * @param source The PIDSource object that is used to get values
+ * @param output The PIDOutput object that is set to the output value
+ * @param period the loop time for doing calculations. This particularly effects calculations of the
+ * integral and differental terms. The default is 50ms.
+ */
+PIDController::PIDController(float Kp, float Ki, float Kd, float Kf,
+								PIDSource *source, PIDOutput *output,
+								float period) :
+	m_semaphore (0)
+{
+	Initialize(Kp, Ki, Kd, Kf, source, output, period);
+}
+
+
+void PIDController::Initialize(float Kp, float Ki, float Kd, float Kf,
+								PIDSource *source, PIDOutput *output,
+								float period)
+{
+	m_table = NULL;
+	
+	m_semaphore = semMCreate(SEM_Q_PRIORITY);
 
 	m_controlLoop = new Notifier(PIDController::CallCalculate, this);
 
 	m_P = Kp;
 	m_I = Ki;
 	m_D = Kd;
+	m_F = Kf;
+	
 	m_maximumOutput = 1.0;
 	m_minimumOutput = -1.0;
 
@@ -58,6 +97,8 @@
 	static INT32 instances = 0;
 	instances++;
 	nUsageReporting::report(nUsageReporting::kResourceType_PIDController, instances);
+	
+	m_toleranceType = kNoTolerance;
 }
 
 /**
@@ -124,21 +165,24 @@
 					}
 				}
 			}
-
-			double potentialIGain = (m_totalError + m_error) * m_I;
-			if (potentialIGain < m_maximumOutput)
+			
+			if(m_I != 0)
 			{
-				if (potentialIGain > m_minimumOutput)
-					m_totalError += m_error;
+				double potentialIGain = (m_totalError + m_error) * m_I;
+				if (potentialIGain < m_maximumOutput)
+				{
+					if (potentialIGain > m_minimumOutput)
+						m_totalError += m_error;
+					else
+						m_totalError = m_minimumOutput / m_I;
+				}
 				else
-					m_totalError = m_minimumOutput / m_I;
-			}
-			else
-			{
-				m_totalError = m_maximumOutput / m_I;
+				{
+					m_totalError = m_maximumOutput / m_I;
+				}
 			}
 
-			m_result = m_P * m_error + m_I * m_totalError + m_D * (m_error - m_prevError);
+			m_result = m_P * m_error + m_I * m_totalError + m_D * (m_error - m_prevError) + m_setpoint * m_F;
 			m_prevError = m_error;
 
 			if (m_result > m_maximumOutput) m_result = m_maximumOutput;
@@ -168,6 +212,39 @@
 		m_D = d;
 	}
 	END_REGION;
+
+	if (m_table != NULL) {
+		m_table->PutNumber("p", m_P);
+		m_table->PutNumber("i", m_I);
+		m_table->PutNumber("d", m_D);
+	}
+}
+
+/**
+ * Set the PID Controller gain parameters.
+ * Set the proportional, integral, and differential coefficients.
+ * @param p Proportional coefficient
+ * @param i Integral coefficient
+ * @param d Differential coefficient
+ * @param f Feed forward coefficient
+ */
+void PIDController::SetPID(float p, float i, float d, float f)
+{
+	CRITICAL_REGION(m_semaphore)
+	{
+		m_P = p;
+		m_I = i;
+		m_D = d;
+		m_F = f;
+	}
+	END_REGION;
+
+	if (m_table != NULL) {
+		m_table->PutNumber("p", m_P);
+		m_table->PutNumber("i", m_I);
+		m_table->PutNumber("d", m_D);
+		m_table->PutNumber("f", m_F);
+	}
 }
 
 /**
@@ -210,6 +287,19 @@
 }
 
 /**
+ * Get the Feed forward coefficient
+ * @return Feed forward coefficient
+ */
+float PIDController::GetF()
+{
+	CRITICAL_REGION(m_semaphore)
+	{
+		return m_F;
+	}
+	END_REGION;
+}
+
+/**
  * Return the current PID result
  * This is always centered on zero and constrained the the max and min outs
  * @return the latest calculated output
@@ -299,6 +389,10 @@
 		}
 	}
 	END_REGION;	
+	
+	if (m_table != NULL) {
+		m_table->PutNumber("setpoint", m_setpoint);
+	}
 }
 
 /**
@@ -325,7 +419,7 @@
 	float error;
 	CRITICAL_REGION(m_semaphore)
 	{
-		error = m_error;
+		error = m_setpoint - m_pidInput->PIDGet();
 	}
 	END_REGION;
 	return error;
@@ -340,23 +434,65 @@
 {
 	CRITICAL_REGION(m_semaphore)
 	{
+		m_toleranceType = kPercentTolerance;
 		m_tolerance = percent;
 	}
 	END_REGION;
 }
 
 /*
+ * Set the percentage error which is considered tolerable for use with
+ * OnTarget.
+ * @param percentage error which is tolerable
+ */
+void PIDController::SetPercentTolerance(float percent)
+{
+	CRITICAL_REGION(m_semaphore)
+	{
+		m_toleranceType = kPercentTolerance;
+		m_tolerance = percent;
+	}
+	END_REGION;
+}
+
+/*
+ * Set the absolute error which is considered tolerable for use with
+ * OnTarget.
+ * @param percentage error which is tolerable
+ */
+void PIDController::SetAbsoluteTolerance(float absTolerance)
+{
+	CRITICAL_REGION(m_semaphore)
+	{
+		m_toleranceType = kAbsoluteTolerance;
+		m_tolerance = absTolerance;
+	}
+	END_REGION;
+}
+
+/*
  * Return true if the error is within the percentage of the total input range,
  * determined by SetTolerance. This asssumes that the maximum and minimum input
  * were set using SetInput.
+ * Currently this just reports on target as the actual value passes through the setpoint.
+ * Ideally it should be based on being within the tolerance for some period of time.
  */
 bool PIDController::OnTarget()
 {
 	bool temp;
 	CRITICAL_REGION(m_semaphore)
 	{
-		temp = fabs(m_error) < (m_tolerance / 100 * 
-			(m_maximumInput - m_minimumInput));
+		switch (m_toleranceType) {
+		case kPercentTolerance:
+			temp = fabs(GetError()) < (m_tolerance / 100 * (m_maximumInput - m_minimumInput));
+			break;
+		case kAbsoluteTolerance:
+			temp = fabs(GetError()) < m_tolerance;
+			break;
+		//TODO: this case needs an error
+		case kNoTolerance:
+			temp = false;
+		}
 	}
 	END_REGION;
 	return temp;
@@ -372,7 +508,12 @@
 		m_enabled = true;
 	}
 	END_REGION;	
+	
+	if (m_table != NULL) {
+		m_table->PutBoolean("enabled", true);
+	}
 }
+
 /**
  * Stop running the PIDController, this sets the output to zero before stopping.
  */
@@ -384,6 +525,10 @@
 		m_enabled = false;
 	}
 	END_REGION;
+	
+	if (m_table != NULL) {
+		m_table->PutBoolean("enabled", false);
+	}
 }
 
 /**
@@ -415,3 +560,54 @@
 	}
 	END_REGION;
 }
+
+std::string PIDController::GetSmartDashboardType(){
+	return "PIDController";
+}
+
+void PIDController::InitTable(ITable* table){
+	if(m_table!=NULL)
+		m_table->RemoveTableListener(this);
+	m_table = table;
+	if(m_table!=NULL){
+		m_table->PutNumber(kP, GetP());
+		m_table->PutNumber(kI, GetI());
+		m_table->PutNumber(kD, GetD());
+		m_table->PutNumber(kF, GetF());
+		m_table->PutNumber(kSetpoint, GetSetpoint());
+		m_table->PutBoolean(kEnabled, IsEnabled());
+		m_table->AddTableListener(this, false);
+	}
+}
+
+ITable* PIDController::GetTable(){
+	return m_table;
+}
+
+void PIDController::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew){
+	if (key==kP || key==kI || key==kD || key==kF) {
+		if (m_P != m_table->GetNumber(kP) || m_I != m_table->GetNumber(kI) || m_D != m_table->GetNumber(kD) || m_F != m_table->GetNumber(kF)  ) {
+			SetPID(m_table->GetNumber(kP, 0.0), m_table->GetNumber(kI, 0.0), m_table->GetNumber(kD, 0.0), m_table->GetNumber(kF, 0.0));
+		}
+	} else if (key==kSetpoint && m_setpoint != value.f) {
+		SetSetpoint(value.f);
+	} else if (key==kEnabled && m_enabled != value.b) {
+		if (value.b) {
+			Enable();
+		} else {
+			Disable();
+		}
+	}
+}
+
+void PIDController::UpdateTable() {
+	
+}
+
+void PIDController::StartLiveWindowMode() {
+	Disable();
+}
+
+void PIDController::StopLiveWindowMode() {
+	
+}
diff --git a/aos/externals/WPILib/WPILib/PIDController.h b/aos/externals/WPILib/WPILib/PIDController.h
index 5956f5f..0549c03 100644
--- a/aos/externals/WPILib/WPILib/PIDController.h
+++ b/aos/externals/WPILib/WPILib/PIDController.h
@@ -9,6 +9,8 @@
 
 #include "Base.h"
 #include "semLib.h"
+#include "Controller.h"
+#include "LiveWindow/LiveWindow.h"
 
 class PIDOutput;
 class PIDSource;
@@ -21,21 +23,26 @@
  * care of the integral calculations, as well as writing the given
  * PIDOutput
  */
-class PIDController
+class PIDController : public LiveWindowSendable, public Controller, public ITableListener
 {
 public:
 	PIDController(float p, float i, float d,
 					PIDSource *source, PIDOutput *output,
 					float period = 0.05);
+	PIDController(float p, float i, float d, float f,
+					PIDSource *source, PIDOutput *output,
+					float period = 0.05);
 	virtual ~PIDController();
 	virtual float Get();
 	virtual void SetContinuous(bool continuous = true);
 	virtual void SetInputRange(float minimumInput, float maximumInput);
 	virtual void SetOutputRange(float mimimumOutput, float maximumOutput);
 	virtual void SetPID(float p, float i, float d);
+	virtual void SetPID(float p, float i, float d, float f);
 	virtual float GetP();
 	virtual float GetI();
 	virtual float GetD();
+	virtual float GetF();
 	
 	virtual void SetSetpoint(float setpoint);
 	virtual float GetSetpoint();
@@ -43,6 +50,8 @@
 	virtual float GetError();
 	
 	virtual void SetTolerance(float percent);
+	virtual void SetAbsoluteTolerance(float absValue);
+	virtual void SetPercentTolerance(float percentValue);
 	virtual bool OnTarget();
 	
 	virtual void Enable();
@@ -50,11 +59,14 @@
 	virtual bool IsEnabled();
 	
 	virtual void Reset();
+	
+	virtual void InitTable(ITable* table);
 
 private:
 	float m_P;			// factor for "proportional" control
 	float m_I;			// factor for "integral" control
 	float m_D;			// factor for "derivative" control
+	float m_F;			// factor for "feed forward" control
 	float m_maximumOutput;	// |maximum output|
 	float m_minimumOutput;	// |minimum output|
 	float m_maximumInput;		// maximum input - limit setpoint to this
@@ -63,7 +75,8 @@
 	bool m_enabled; 			//is the pid controller enabled
 	float m_prevError;	// the prior sensor input (used to compute velocity)
 	double m_totalError; //the sum of the errors for use in the integral calc
-	float m_tolerance;	//the percetage error that is considered on target
+	enum {kAbsoluteTolerance, kPercentTolerance, kNoTolerance} m_toleranceType;
+	float m_tolerance;	//the percetage or absolute error that is considered on target
 	float m_setpoint;
 	float m_error;
 	float m_result;
@@ -75,8 +88,21 @@
 	PIDOutput *m_pidOutput;
 	Notifier *m_controlLoop;
 
+	void Initialize(float p, float i, float d, float f,
+					PIDSource *source, PIDOutput *output,
+					float period = 0.05);
 	static void CallCalculate(void *controller);
 	void Calculate();
+	
+	virtual ITable* GetTable();
+	virtual std::string GetSmartDashboardType();
+	virtual void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	virtual void UpdateTable();
+	virtual void StartLiveWindowMode();
+	virtual void StopLiveWindowMode();
+protected:
+	ITable* m_table;
+
 	DISALLOW_COPY_AND_ASSIGN(PIDController);
 };
 
diff --git a/aos/externals/WPILib/WPILib/PPC603gnu/Makefile b/aos/externals/WPILib/WPILib/PPC603gnu/Makefile
index 882fa4e..b5a18a3 100644
--- a/aos/externals/WPILib/WPILib/PPC603gnu/Makefile
+++ b/aos/externals/WPILib/WPILib/PPC603gnu/Makefile
@@ -185,102 +185,14 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
+WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Trigger.o : $(PRJ_ROOT_DIR)/Buttons/Trigger.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
 WPILib/$(MODE_DIR)/Objects/WPILib/CANJaguar.o : $(PRJ_ROOT_DIR)/CANJaguar.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAccelerometer.o : $(PRJ_ROOT_DIR)/CInterfaces/CAccelerometer.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAnalogChannel.o : $(PRJ_ROOT_DIR)/CInterfaces/CAnalogChannel.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCompressor.o : $(PRJ_ROOT_DIR)/CInterfaces/CCompressor.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCounter.o : $(PRJ_ROOT_DIR)/CInterfaces/CCounter.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalInput.o : $(PRJ_ROOT_DIR)/CInterfaces/CDigitalInput.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalOutput.o : $(PRJ_ROOT_DIR)/CInterfaces/CDigitalOutput.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDriverStation.o : $(PRJ_ROOT_DIR)/CInterfaces/CDriverStation.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CEncoder.o : $(PRJ_ROOT_DIR)/CInterfaces/CEncoder.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGearTooth.o : $(PRJ_ROOT_DIR)/CInterfaces/CGearTooth.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGyro.o : $(PRJ_ROOT_DIR)/CInterfaces/CGyro.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJaguar.o : $(PRJ_ROOT_DIR)/CInterfaces/CJaguar.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJoystick.o : $(PRJ_ROOT_DIR)/CInterfaces/CJoystick.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CPWM.o : $(PRJ_ROOT_DIR)/CInterfaces/CPWM.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRelay.o : $(PRJ_ROOT_DIR)/CInterfaces/CRelay.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRobotDrive.o : $(PRJ_ROOT_DIR)/CInterfaces/CRobotDrive.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSerialPort.o : $(PRJ_ROOT_DIR)/CInterfaces/CSerialPort.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CServo.o : $(PRJ_ROOT_DIR)/CInterfaces/CServo.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSolenoid.o : $(PRJ_ROOT_DIR)/CInterfaces/CSolenoid.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CTimer.o : $(PRJ_ROOT_DIR)/CInterfaces/CTimer.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CUltrasonic.o : $(PRJ_ROOT_DIR)/CInterfaces/CUltrasonic.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CVictor.o : $(PRJ_ROOT_DIR)/CInterfaces/CVictor.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CWatchdog.o : $(PRJ_ROOT_DIR)/CInterfaces/CWatchdog.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/SimpleCRobot.o : $(PRJ_ROOT_DIR)/CInterfaces/SimpleCRobot.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Command.o : $(PRJ_ROOT_DIR)/Commands/Command.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
@@ -425,6 +337,14 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
+WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindow.o : $(PRJ_ROOT_DIR)/LiveWindow/LiveWindow.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindowStatusListener.o : $(PRJ_ROOT_DIR)/LiveWindow/LiveWindowStatusListener.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
 WPILib/$(MODE_DIR)/Objects/WPILib/Module.o : $(PRJ_ROOT_DIR)/Module.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
@@ -433,86 +353,6 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/BooleanEntry.o : $(PRJ_ROOT_DIR)/NetworkTables/BooleanEntry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Buffer.o : $(PRJ_ROOT_DIR)/NetworkTables/Buffer.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Confirmation.o : $(PRJ_ROOT_DIR)/NetworkTables/Confirmation.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Connection.o : $(PRJ_ROOT_DIR)/NetworkTables/Connection.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/ConnectionManager.o : $(PRJ_ROOT_DIR)/NetworkTables/ConnectionManager.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Data.o : $(PRJ_ROOT_DIR)/NetworkTables/Data.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Denial.o : $(PRJ_ROOT_DIR)/NetworkTables/Denial.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/DoubleEntry.o : $(PRJ_ROOT_DIR)/NetworkTables/DoubleEntry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Entry.o : $(PRJ_ROOT_DIR)/NetworkTables/Entry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/IntegerEntry.o : $(PRJ_ROOT_DIR)/NetworkTables/IntegerEntry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Key.o : $(PRJ_ROOT_DIR)/NetworkTables/Key.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkQueue.o : $(PRJ_ROOT_DIR)/NetworkTables/NetworkQueue.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkTable.o : $(PRJ_ROOT_DIR)/NetworkTables/NetworkTable.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/OldData.o : $(PRJ_ROOT_DIR)/NetworkTables/OldData.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Reader.o : $(PRJ_ROOT_DIR)/NetworkTables/Reader.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/StringEntry.o : $(PRJ_ROOT_DIR)/NetworkTables/StringEntry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableAssignment.o : $(PRJ_ROOT_DIR)/NetworkTables/TableAssignment.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableEntry.o : $(PRJ_ROOT_DIR)/NetworkTables/TableEntry.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionEnd.o : $(PRJ_ROOT_DIR)/NetworkTables/TransactionEnd.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionStart.o : $(PRJ_ROOT_DIR)/NetworkTables/TransactionStart.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
 WPILib/$(MODE_DIR)/Objects/WPILib/Notifier.o : $(PRJ_ROOT_DIR)/Notifier.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
@@ -573,14 +413,6 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
-WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableGyro.o : $(PRJ_ROOT_DIR)/SmartDashboard/SendableGyro.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendablePIDController.o : $(PRJ_ROOT_DIR)/SmartDashboard/SendablePIDController.cpp $(FORCE_FILE_BUILD)
-	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SmartDashboard.o : $(PRJ_ROOT_DIR)/SmartDashboard/SmartDashboard.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
@@ -597,6 +429,10 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
+WPILib/$(MODE_DIR)/Objects/WPILib/Talon.o : $(PRJ_ROOT_DIR)/Talon.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
 WPILib/$(MODE_DIR)/Objects/WPILib/Task.o : $(PRJ_ROOT_DIR)/Task.cpp $(FORCE_FILE_BUILD)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
@@ -689,6 +525,202 @@
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
 
 
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTable.o : $(PRJ_ROOT_DIR)/networktables/NetworkTable.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableConnectionListenerAdapter.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableConnectionListenerAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableKeyListenerAdapter.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableKeyListenerAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableListenerAdapter.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableListenerAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableMode.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableMode.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableProvider.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableProvider.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableSubListenerAdapter.o : $(PRJ_ROOT_DIR)/networktables/NetworkTableSubListenerAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/AbstractNetworkTableEntryStore.o : $(PRJ_ROOT_DIR)/networktables2/AbstractNetworkTableEntryStore.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableEntry.o : $(PRJ_ROOT_DIR)/networktables2/NetworkTableEntry.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableNode.o : $(PRJ_ROOT_DIR)/networktables2/NetworkTableNode.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/OutgoingEntryReciever.o : $(PRJ_ROOT_DIR)/networktables2/OutgoingEntryReciever.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.o : $(PRJ_ROOT_DIR)/networktables2/TableKeyExistsWithDifferentTypeException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TransactionDirtier.o : $(PRJ_ROOT_DIR)/networktables2/TransactionDirtier.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/WriteManager.o : $(PRJ_ROOT_DIR)/networktables2/WriteManager.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionAdapter.o : $(PRJ_ROOT_DIR)/networktables2/client/ClientConnectionAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionState.o : $(PRJ_ROOT_DIR)/networktables2/client/ClientConnectionState.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientNetworkTableEntryStore.o : $(PRJ_ROOT_DIR)/networktables2/client/ClientNetworkTableEntryStore.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/NetworkTableClient.o : $(PRJ_ROOT_DIR)/networktables2/client/NetworkTableClient.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/BadMessageException.o : $(PRJ_ROOT_DIR)/networktables2/connection/BadMessageException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/ConnectionMonitorThread.o : $(PRJ_ROOT_DIR)/networktables2/connection/ConnectionMonitorThread.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/DataIOStream.o : $(PRJ_ROOT_DIR)/networktables2/connection/DataIOStream.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/NetworkTableConnection.o : $(PRJ_ROOT_DIR)/networktables2/connection/NetworkTableConnection.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/NetworkTableServer.o : $(PRJ_ROOT_DIR)/networktables2/server/NetworkTableServer.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionAdapter.o : $(PRJ_ROOT_DIR)/networktables2/server/ServerConnectionAdapter.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionList.o : $(PRJ_ROOT_DIR)/networktables2/server/ServerConnectionList.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionState.o : $(PRJ_ROOT_DIR)/networktables2/server/ServerConnectionState.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerIncomingStreamMonitor.o : $(PRJ_ROOT_DIR)/networktables2/server/ServerIncomingStreamMonitor.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerNetworkTableEntryStore.o : $(PRJ_ROOT_DIR)/networktables2/server/ServerNetworkTableEntryStore.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/FDIOStream.o : $(PRJ_ROOT_DIR)/networktables2/stream/FDIOStream.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketServerStreamProvider.o : $(PRJ_ROOT_DIR)/networktables2/stream/SocketServerStreamProvider.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreamFactory.o : $(PRJ_ROOT_DIR)/networktables2/stream/SocketStreamFactory.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreams.o : $(PRJ_ROOT_DIR)/networktables2/stream/SocketStreams.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/thread/DefaultThreadManger.o : $(PRJ_ROOT_DIR)/networktables2/thread/DefaultThreadManger.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayData.o : $(PRJ_ROOT_DIR)/networktables2/type/ArrayData.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayEntryType.o : $(PRJ_ROOT_DIR)/networktables2/type/ArrayEntryType.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/BooleanArray.o : $(PRJ_ROOT_DIR)/networktables2/type/BooleanArray.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexData.o : $(PRJ_ROOT_DIR)/networktables2/type/ComplexData.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexEntryType.o : $(PRJ_ROOT_DIR)/networktables2/type/ComplexEntryType.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/DefaultEntryTypes.o : $(PRJ_ROOT_DIR)/networktables2/type/DefaultEntryTypes.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryType.o : $(PRJ_ROOT_DIR)/networktables2/type/NetworkTableEntryType.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryTypeManager.o : $(PRJ_ROOT_DIR)/networktables2/type/NetworkTableEntryTypeManager.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NumberArray.o : $(PRJ_ROOT_DIR)/networktables2/type/NumberArray.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/StringArray.o : $(PRJ_ROOT_DIR)/networktables2/type/StringArray.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/EOFException.o : $(PRJ_ROOT_DIR)/networktables2/util/EOFException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IOException.o : $(PRJ_ROOT_DIR)/networktables2/util/IOException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IllegalStateException.o : $(PRJ_ROOT_DIR)/networktables2/util/IllegalStateException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/StringCache.o : $(PRJ_ROOT_DIR)/networktables2/util/StringCache.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/System.o : $(PRJ_ROOT_DIR)/networktables2/util/System.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
+WPILib/$(MODE_DIR)/Objects/WPILib/tables/TableKeyNotDefinedException.o : $(PRJ_ROOT_DIR)/tables/TableKeyNotDefinedException.cpp $(FORCE_FILE_BUILD)
+	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall  -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
+
+
 OBJECTS_WPILib = WPILib/$(MODE_DIR)/Objects/WPILib/ADXL345_I2C.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/ADXL345_SPI.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Accelerometer.o \
@@ -706,30 +738,8 @@
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/NetworkButton.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/PressedButtonScheduler.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/ReleasedButtonScheduler.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Trigger.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/CANJaguar.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAccelerometer.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAnalogChannel.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCompressor.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCounter.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalInput.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalOutput.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDriverStation.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CEncoder.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGearTooth.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGyro.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJaguar.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJoystick.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CPWM.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRelay.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRobotDrive.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSerialPort.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CServo.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSolenoid.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CTimer.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CUltrasonic.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CVictor.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CWatchdog.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/SimpleCRobot.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Command.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroup.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroupEntry.o \
@@ -766,28 +776,10 @@
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Joystick.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Kinect.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/KinectStick.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindow.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindowStatusListener.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Module.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/MotorSafetyHelper.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/BooleanEntry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Buffer.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Confirmation.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Connection.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/ConnectionManager.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Data.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Denial.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/DoubleEntry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Entry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/IntegerEntry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Key.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkQueue.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkTable.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/OldData.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Reader.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/StringEntry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableAssignment.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableEntry.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionEnd.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionStart.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Notifier.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/PIDController.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/PWM.o \
@@ -803,12 +795,11 @@
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Servo.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/SimpleRobot.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableChooser.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableGyro.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendablePIDController.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SmartDashboard.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Solenoid.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/SolenoidBase.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Synchronized.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Talon.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Task.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Timer.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Ultrasonic.o \
@@ -831,7 +822,56 @@
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/FrcError.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/TrackAPI.o \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/VisionAPI.o \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Watchdog.o
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Watchdog.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTable.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableConnectionListenerAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableKeyListenerAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableListenerAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableMode.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableProvider.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableSubListenerAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/AbstractNetworkTableEntryStore.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableEntry.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableNode.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/OutgoingEntryReciever.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TransactionDirtier.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/WriteManager.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionState.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientNetworkTableEntryStore.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/NetworkTableClient.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/BadMessageException.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/ConnectionMonitorThread.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/DataIOStream.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/NetworkTableConnection.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/NetworkTableServer.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionAdapter.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionList.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionState.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerIncomingStreamMonitor.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerNetworkTableEntryStore.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/FDIOStream.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketServerStreamProvider.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreamFactory.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreams.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/thread/DefaultThreadManger.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayData.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayEntryType.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/BooleanArray.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexData.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexEntryType.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/DefaultEntryTypes.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryType.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryTypeManager.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NumberArray.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/StringArray.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/EOFException.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IOException.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IllegalStateException.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/StringCache.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/System.o \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/tables/TableKeyNotDefinedException.o
 
 WPILib/$(MODE_DIR)/WPILib.a : $(OBJECTS_WPILib)
 	$(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi;echo "building $@"; $(TOOL_PATH)arppc crus "$@" $(OBJECTS_WPILib)
@@ -949,53 +989,55 @@
 	 WPILib/$(MODE_DIR)/Objects/WPILib/AnalogTriggerOutput.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/AnalogIOButton.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Button.d \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/ButtonScheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/DigitalIOButton.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/HeldButtonScheduler.d \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/InternalButton.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/JoystickButton.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/NetworkButton.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/PressedButtonScheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/ReleasedButtonScheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/CANJaguar.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAccelerometer.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CAnalogChannel.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCompressor.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CCounter.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalInput.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDigitalOutput.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CDriverStation.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CEncoder.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGearTooth.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CGyro.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJaguar.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CJoystick.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CPWM.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRelay.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CRobotDrive.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSerialPort.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CServo.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CSolenoid.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CTimer.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CUltrasonic.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CVictor.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/CWatchdog.d WPILib/$(MODE_DIR)/Objects/WPILib/CInterfaces/SimpleCRobot.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Command.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroup.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroupEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDCommand.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDSubsystem.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PrintCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Scheduler.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/StartCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Subsystem.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitCommand.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitForChildren.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitUntilCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Compressor.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Counter.d WPILib/$(MODE_DIR)/Objects/WPILib/Dashboard.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalInput.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/DigitalModule.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalOutput.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalSource.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/DoubleSolenoid.d WPILib/$(MODE_DIR)/Objects/WPILib/DriverStation.d WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationEnhancedIO.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationLCD.d WPILib/$(MODE_DIR)/Objects/WPILib/Encoder.d WPILib/$(MODE_DIR)/Objects/WPILib/Error.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/ErrorBase.d WPILib/$(MODE_DIR)/Objects/WPILib/GearTooth.d WPILib/$(MODE_DIR)/Objects/WPILib/Gyro.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/HiTechnicCompass.d WPILib/$(MODE_DIR)/Objects/WPILib/I2C.d WPILib/$(MODE_DIR)/Objects/WPILib/InterruptableSensorBase.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/IterativeRobot.d WPILib/$(MODE_DIR)/Objects/WPILib/Jaguar.d WPILib/$(MODE_DIR)/Objects/WPILib/Joystick.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Kinect.d WPILib/$(MODE_DIR)/Objects/WPILib/KinectStick.d WPILib/$(MODE_DIR)/Objects/WPILib/Module.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/MotorSafetyHelper.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/BooleanEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Buffer.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Confirmation.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Connection.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/ConnectionManager.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Data.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Denial.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/DoubleEntry.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Entry.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/IntegerEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Key.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkQueue.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/NetworkTable.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/OldData.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/Reader.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/StringEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableAssignment.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TableEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionEnd.d WPILib/$(MODE_DIR)/Objects/WPILib/NetworkTables/TransactionStart.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Notifier.d WPILib/$(MODE_DIR)/Objects/WPILib/PIDController.d WPILib/$(MODE_DIR)/Objects/WPILib/PWM.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Preferences.d WPILib/$(MODE_DIR)/Objects/WPILib/Relay.d WPILib/$(MODE_DIR)/Objects/WPILib/Resource.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/RobotBase.d WPILib/$(MODE_DIR)/Objects/WPILib/RobotDrive.d WPILib/$(MODE_DIR)/Objects/WPILib/SPI.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/SafePWM.d WPILib/$(MODE_DIR)/Objects/WPILib/SensorBase.d WPILib/$(MODE_DIR)/Objects/WPILib/SerialPort.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Servo.d WPILib/$(MODE_DIR)/Objects/WPILib/SimpleRobot.d WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableChooser.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableGyro.d WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendablePIDController.d WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SmartDashboard.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/PressedButtonScheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/ReleasedButtonScheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Trigger.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/CANJaguar.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Command.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroup.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroupEntry.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDSubsystem.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PrintCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Scheduler.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/StartCommand.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Subsystem.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitForChildren.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitUntilCommand.d WPILib/$(MODE_DIR)/Objects/WPILib/Compressor.d WPILib/$(MODE_DIR)/Objects/WPILib/Counter.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Dashboard.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalInput.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalModule.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/DigitalOutput.d WPILib/$(MODE_DIR)/Objects/WPILib/DigitalSource.d WPILib/$(MODE_DIR)/Objects/WPILib/DoubleSolenoid.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/DriverStation.d WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationEnhancedIO.d WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationLCD.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Encoder.d WPILib/$(MODE_DIR)/Objects/WPILib/Error.d WPILib/$(MODE_DIR)/Objects/WPILib/ErrorBase.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/GearTooth.d WPILib/$(MODE_DIR)/Objects/WPILib/Gyro.d WPILib/$(MODE_DIR)/Objects/WPILib/HiTechnicCompass.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/I2C.d WPILib/$(MODE_DIR)/Objects/WPILib/InterruptableSensorBase.d WPILib/$(MODE_DIR)/Objects/WPILib/IterativeRobot.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Jaguar.d WPILib/$(MODE_DIR)/Objects/WPILib/Joystick.d WPILib/$(MODE_DIR)/Objects/WPILib/Kinect.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/KinectStick.d WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindow.d WPILib/$(MODE_DIR)/Objects/WPILib/LiveWindow/LiveWindowStatusListener.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Module.d WPILib/$(MODE_DIR)/Objects/WPILib/MotorSafetyHelper.d WPILib/$(MODE_DIR)/Objects/WPILib/Notifier.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/PIDController.d WPILib/$(MODE_DIR)/Objects/WPILib/PWM.d WPILib/$(MODE_DIR)/Objects/WPILib/Preferences.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Relay.d WPILib/$(MODE_DIR)/Objects/WPILib/Resource.d WPILib/$(MODE_DIR)/Objects/WPILib/RobotBase.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/RobotDrive.d WPILib/$(MODE_DIR)/Objects/WPILib/SPI.d WPILib/$(MODE_DIR)/Objects/WPILib/SafePWM.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/SensorBase.d WPILib/$(MODE_DIR)/Objects/WPILib/SerialPort.d WPILib/$(MODE_DIR)/Objects/WPILib/Servo.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/SimpleRobot.d WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SendableChooser.d WPILib/$(MODE_DIR)/Objects/WPILib/SmartDashboard/SmartDashboard.d \
 	 WPILib/$(MODE_DIR)/Objects/WPILib/Solenoid.d WPILib/$(MODE_DIR)/Objects/WPILib/SolenoidBase.d WPILib/$(MODE_DIR)/Objects/WPILib/Synchronized.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Task.d WPILib/$(MODE_DIR)/Objects/WPILib/Timer.d WPILib/$(MODE_DIR)/Objects/WPILib/Ultrasonic.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Utility.d WPILib/$(MODE_DIR)/Objects/WPILib/Victor.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCamera.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCameraParams.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/BinaryImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ColorImage.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/EnumCameraParameter.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/HSLImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ImageBase.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/IntCameraParameter.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/MonoImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/PCVideoServer.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/RGBImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/Threshold.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/AxisCamera.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/BaeUtilities.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/FrcError.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/TrackAPI.d \
-	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/VisionAPI.d WPILib/$(MODE_DIR)/Objects/WPILib/Watchdog.d JavaCameraLib/$(MODE_DIR)/Objects/PCVideoServer.d \
-	 JavaCameraLib/$(MODE_DIR)/Objects/AxisCamera.d JavaCameraLib/$(MODE_DIR)/Objects/AxisCameraParams.d JavaCameraLib/$(MODE_DIR)/Objects/EnumCameraParameter.d \
-	 JavaCameraLib/$(MODE_DIR)/Objects/IntCameraParameter.d JavaCameraLib/$(MODE_DIR)/Objects/Error.d JavaCameraLib/$(MODE_DIR)/Objects/ErrorBase.d \
-	 JavaCameraLib/$(MODE_DIR)/Objects/Task.d JavaCameraLib/$(MODE_DIR)/Objects/Timer.d JavaCameraLib/$(MODE_DIR)/Objects/Synchronized.d \
-	 JavaCameraLib/$(MODE_DIR)/Objects/Utility.d
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Talon.d WPILib/$(MODE_DIR)/Objects/WPILib/Task.d WPILib/$(MODE_DIR)/Objects/WPILib/Timer.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Ultrasonic.d WPILib/$(MODE_DIR)/Objects/WPILib/Utility.d WPILib/$(MODE_DIR)/Objects/WPILib/Victor.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCamera.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCameraParams.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/BinaryImage.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ColorImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/EnumCameraParameter.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/HSLImage.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ImageBase.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/IntCameraParameter.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/MonoImage.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision/PCVideoServer.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/RGBImage.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision/Threshold.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/AxisCamera.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/BaeUtilities.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/FrcError.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/TrackAPI.d WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/VisionAPI.d WPILib/$(MODE_DIR)/Objects/WPILib/Watchdog.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTable.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableConnectionListenerAdapter.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableKeyListenerAdapter.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableListenerAdapter.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableMode.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableProvider.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables/NetworkTableSubListenerAdapter.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/AbstractNetworkTableEntryStore.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableEntry.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/NetworkTableNode.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/OutgoingEntryReciever.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/TransactionDirtier.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/WriteManager.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionAdapter.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientConnectionState.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/ClientNetworkTableEntryStore.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/client/NetworkTableClient.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/BadMessageException.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/ConnectionMonitorThread.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/DataIOStream.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/connection/NetworkTableConnection.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/NetworkTableServer.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionAdapter.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionList.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerConnectionState.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerIncomingStreamMonitor.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/server/ServerNetworkTableEntryStore.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/FDIOStream.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketServerStreamProvider.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreamFactory.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/stream/SocketStreams.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/thread/DefaultThreadManger.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayData.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ArrayEntryType.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/BooleanArray.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexData.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/ComplexEntryType.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/DefaultEntryTypes.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryType.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NetworkTableEntryTypeManager.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/NumberArray.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/type/StringArray.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/EOFException.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IOException.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/IllegalStateException.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/StringCache.d WPILib/$(MODE_DIR)/Objects/WPILib/networktables2/util/System.d \
+	 WPILib/$(MODE_DIR)/Objects/WPILib/tables/TableKeyNotDefinedException.d JavaCameraLib/$(MODE_DIR)/Objects/PCVideoServer.d JavaCameraLib/$(MODE_DIR)/Objects/AxisCamera.d \
+	 JavaCameraLib/$(MODE_DIR)/Objects/AxisCameraParams.d JavaCameraLib/$(MODE_DIR)/Objects/EnumCameraParameter.d JavaCameraLib/$(MODE_DIR)/Objects/IntCameraParameter.d \
+	 JavaCameraLib/$(MODE_DIR)/Objects/Error.d JavaCameraLib/$(MODE_DIR)/Objects/ErrorBase.d JavaCameraLib/$(MODE_DIR)/Objects/Task.d \
+	 JavaCameraLib/$(MODE_DIR)/Objects/Timer.d JavaCameraLib/$(MODE_DIR)/Objects/Synchronized.d JavaCameraLib/$(MODE_DIR)/Objects/Utility.d
 -include $(DEP_FILES)
 
 
diff --git a/aos/externals/WPILib/WPILib/PWM.cpp b/aos/externals/WPILib/WPILib/PWM.cpp
index e1991fb..05bf16d 100644
--- a/aos/externals/WPILib/WPILib/PWM.cpp
+++ b/aos/externals/WPILib/WPILib/PWM.cpp
@@ -332,3 +332,37 @@
 		wpi_assert(false);
 	}
 }
+
+
+void PWM::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	SetSpeed(value.f);
+}
+
+void PWM::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetSpeed());
+	}
+}
+
+void PWM::StartLiveWindowMode() {
+	m_table->AddTableListener("Value", this, true);
+}
+
+void PWM::StopLiveWindowMode() {
+	SetSpeed(0);
+	m_table->RemoveTableListener(this);
+}
+
+std::string PWM::GetSmartDashboardType() {
+	return "Speed Controller";
+}
+
+void PWM::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * PWM::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/PWM.h b/aos/externals/WPILib/WPILib/PWM.h
index 08b3242..f279016 100644
--- a/aos/externals/WPILib/WPILib/PWM.h
+++ b/aos/externals/WPILib/WPILib/PWM.h
@@ -8,6 +8,8 @@
 #define PWM_H_
 
 #include "SensorBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITableListener.h"
 
 class DigitalModule;
 
@@ -27,7 +29,7 @@
  *   - 1 = full "reverse"
  *   - 0 = disabled (i.e. PWM output is held low)
  */
-class PWM : public SensorBase
+class PWM : public SensorBase, public ITableListener, public LiveWindowSendable
 {
 	friend class DigitalModule;
 public:
@@ -87,6 +89,16 @@
 	INT32 m_centerPwm;
 	INT32 m_deadbandMinPwm;
 	INT32 m_minPwm;
+	
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+	
+	ITable *m_table;
 
 private:
 	void InitPWM(UINT8 moduleNumber, UINT32 channel);
diff --git a/aos/externals/WPILib/WPILib/Preferences.cpp b/aos/externals/WPILib/WPILib/Preferences.cpp
index 576dc3f..c18df0b 100644
--- a/aos/externals/WPILib/WPILib/Preferences.cpp
+++ b/aos/externals/WPILib/WPILib/Preferences.cpp
@@ -7,11 +7,11 @@
 #include "Preferences.h"
 
 #include "NetworkCommunication/UsageReporting.h"
-#include "NetworkTables/NetworkTable.h"
 #include "Synchronized.h"
 #include "WPIErrors.h"
 
 #include <stdio.h>
+#include <algorithm>
 
 /** Private NI function needed to write to the VxWorks target */
 extern "C" int Priv_SetWriteFileAllowed(UINT32 enable); 
@@ -45,7 +45,7 @@
 	semTake(m_fileOpStarted, WAIT_FOREVER);
 
 	NetworkTable::GetTable(kTableName)->PutBoolean(kSaveField, false);
-	NetworkTable::GetTable(kTableName)->AddChangeListenerAny(this);
+	NetworkTable::GetTable(kTableName)->AddTableListener(this);
 
 	nUsageReporting::report(nUsageReporting::kResourceType_Preferences, 0);
 }
@@ -501,7 +501,7 @@
 				{
 					m_keys.push_back(name);
 					m_values.insert(std::pair<std::string, std::string>(name, value));
-					NetworkTable::GetTable(kTableName)->PutString(name, value);
+					//NetworkTable::GetTable(kTableName)->PutString(name, value);
 
 					if (!comment.empty())
 					{
@@ -566,48 +566,55 @@
 	NetworkTable::GetTable(kTableName)->PutBoolean(kSaveField, false);
 }
 
-void Preferences::ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type)
+static bool isKeyAcceptable(const std::string& value) {
+    for (unsigned int i = 0; i < value.length(); i++) {
+        char letter = value.at(i);
+        switch (letter) {
+            case '=':
+            case '\n':
+            case '\r':
+            case ' ':
+            case '\t':
+            	return false;
+        }
+    }
+    return true;
+}
+void Preferences::ValueChanged(ITable* table, const std::string& key, EntryValue value, bool isNew)
 {
-	if (strcmp(name, kSaveField) == 0)
+	if (key==kSaveField)
 	{
-		if (table->GetBoolean(kSaveField))
+		if (table->GetBoolean(kSaveField, false))
 			Save();
 	}
 	else
 	{
 		Synchronized sync(m_tableLock);
 
-		std::string key = name;
-		if (key.find_first_of("=\n\r \t") != std::string::npos)
+		if (!isKeyAcceptable(key) || table->GetString(key, "").find('"')!=std::string::npos)
 		{
-			// The key is bogus... ignore it
-		}
-		else if (table->GetString(key).find_first_of("\"") != std::string::npos)
-		{
-			table->PutString(key, "\"");
-			m_values.erase(key);
-			std::vector<std::string>::iterator it = m_keys.begin();
-			for (; it != m_keys.end(); it++)
-			{
-				if (it->compare(name) == 0)
+			if(m_values.find(key) != m_values.end()){
+				m_values.erase(key);
+				std::vector<std::string>::iterator it = m_keys.begin();
+				for (; it != m_keys.end(); it++)
 				{
-					m_keys.erase(it);
-					break;
+					if (key==*it)
+					{
+						m_keys.erase(it);
+						break;
+					}
 				}
+				table->PutString(key, "\"");
 			}
 		}
 		else
 		{
 			std::pair<StringMap::iterator, bool> ret =
-				m_values.insert(StringMap::value_type(key, table->GetString(key)));
+				m_values.insert(StringMap::value_type(key, table->GetString(key, "")));
 			if (ret.second)
 				m_keys.push_back(key);
 			else
-				ret.first->second = table->GetString(key);
+				ret.first->second = table->GetString(key, "");
 		}
 	}
 }
-
-void Preferences::ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type)
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Preferences.h b/aos/externals/WPILib/WPILib/Preferences.h
index 507fd67..7aae2e4 100644
--- a/aos/externals/WPILib/WPILib/Preferences.h
+++ b/aos/externals/WPILib/WPILib/Preferences.h
@@ -8,12 +8,13 @@
 #define __PREFERENCES_H__
 
 #include "ErrorBase.h"
-#include "NetworkTables/NetworkTableChangeListener.h"
 #include "Task.h"
 #include <map>
 #include <semLib.h>
 #include <string>
 #include <vector>
+#include "tables/ITableListener.h"
+#include "networktables/NetworkTable.h"
 
 /**
  * The preferences class provides a relatively simple way to save important values to
@@ -30,7 +31,7 @@
  * Also, if the value of any variable is " in the {@link NetworkTable}, then that represents non-existence in the
  * {@link Preferences} table</p>
  */
-class Preferences : public ErrorBase, public NetworkTableChangeListener
+class Preferences : public ErrorBase, public ITableListener
 {
 public:
 	static Preferences *GetInstance();
@@ -52,6 +53,8 @@
 	void Save();
 	bool ContainsKey(const char *key);
 	void Remove(const char *key);
+	
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
 
 protected:
 	Preferences();
@@ -64,9 +67,6 @@
 	void ReadTaskRun();
 	void WriteTaskRun();
 
-	virtual void ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type);
-	virtual void ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type);
-
 	static int InitReadTask(Preferences *obj) {obj->ReadTaskRun();return 0;}
 	static int InitWriteTask(Preferences *obj) {obj->WriteTaskRun();return 0;}
 
diff --git a/aos/externals/WPILib/WPILib/Relay.cpp b/aos/externals/WPILib/WPILib/Relay.cpp
index 9b52a68..dd59d52 100644
--- a/aos/externals/WPILib/WPILib/Relay.cpp
+++ b/aos/externals/WPILib/WPILib/Relay.cpp
@@ -10,6 +10,7 @@
 #include "NetworkCommunication/UsageReporting.h"
 #include "Resource.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 // Allocate each direction separately.
 static Resource *relayChannels = NULL;
@@ -64,6 +65,7 @@
 	m_module = DigitalModule::GetInstance(moduleNumber);
 	m_module->SetRelayForward(m_channel, false);
 	m_module->SetRelayReverse(m_channel, false);
+	LiveWindow::GetInstance()->AddActuator("Relay", moduleNumber, m_channel, this);
 }
 
 /**
@@ -182,3 +184,84 @@
 		break;
 	}
 }
+
+/**
+ * Get the Relay State
+ * 
+ * Gets the current state of the relay.
+ * 
+ * When set to kForwardOnly or kReverseOnly, value is returned as kOn/kOff not
+ * kForward/kReverse (per the recommendation in Set)
+ * 
+ * @return The current state of the relay as a Relay::Value
+ */
+Relay::Value Relay::Get() {
+   if(m_module->GetRelayForward(m_channel)) {
+	   if(m_module->GetRelayReverse(m_channel)) {
+		   return kOn;
+	   } else {
+		   if(m_direction == kForwardOnly) {
+			   return kOn;
+		   } else {
+		   return kForward;
+		   }
+	   }
+   } else {
+	   if(m_module->GetRelayReverse(m_channel)) {
+		   if(m_direction == kReverseOnly) {
+			   return kOn;
+		   } else {
+		   return kReverse;
+		   }
+	   } else {
+		   return kOff;
+	   }
+   }        
+}
+
+void Relay::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	std::string *val = (std::string *) value.ptr;
+	if (*val == "Off") Set(kOff);
+	else if (*val == "Forward") Set(kForward);
+	else if (*val == "Reverse") Set(kReverse);
+}
+
+void Relay::UpdateTable() {
+	if(m_table != NULL){
+		if (Get() == kOn) {
+			m_table->PutString("Value", "On");
+		}
+		else if (Get() == kForward) {
+			m_table->PutString("Value", "Forward");
+		}
+		else if (Get() == kReverse) {
+			m_table->PutString("Value", "Reverse");
+		}
+		else {
+			m_table->PutString("Value", "Off");
+		}
+	}
+}
+
+void Relay::StartLiveWindowMode() {
+	m_table->AddTableListener("Value", this, true);
+}
+
+void Relay::StopLiveWindowMode() {
+	m_table->RemoveTableListener(this);
+}
+
+std::string Relay::GetSmartDashboardType() {
+	return "Relay";
+}
+
+void Relay::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Relay::GetTable() {
+	return m_table;
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/Relay.h b/aos/externals/WPILib/WPILib/Relay.h
index c2864ea..640f657 100644
--- a/aos/externals/WPILib/WPILib/Relay.h
+++ b/aos/externals/WPILib/WPILib/Relay.h
@@ -8,6 +8,9 @@
 #define RELAY_H_
 
 #include "SensorBase.h"
+#include "tables/ITableListener.h"
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITable.h"
 
 class DigitalModule;
 
@@ -20,7 +23,7 @@
  * variable speed.  It also allows the two channels (forward and reverse) to be used independently
  * for something that does not care about voltage polatiry (like a solenoid).
  */
-class Relay : public SensorBase {
+class Relay : public SensorBase, public ITableListener, public LiveWindowSendable {
 public:
 	typedef enum {kOff, kOn, kForward, kReverse} Value;
 	typedef enum {kBothDirections, kForwardOnly, kReverseOnly} Direction;
@@ -30,6 +33,17 @@
 	virtual ~Relay();
 
 	void Set(Value value);
+	Value Get();
+	
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+	
+	ITable *m_table;
 
 private:
 	void InitRelay(UINT8 moduleNumber);
diff --git a/aos/externals/WPILib/WPILib/Resource.cpp b/aos/externals/WPILib/WPILib/Resource.cpp
index ccbf863..ec35eb3 100644
--- a/aos/externals/WPILib/WPILib/Resource.cpp
+++ b/aos/externals/WPILib/WPILib/Resource.cpp
@@ -8,30 +8,41 @@
 #include "WPIErrors.h"
 #include "ErrorBase.h"
 
-Resource *Resource::m_resourceList = NULL;
-Semaphore Resource::m_createLock;
+ReentrantSemaphore Resource::m_createLock;
 
 /**
  * Allocate storage for a new instance of Resource.
  * Allocate a bool array of values that will get initialized to indicate that no resources
- * have been allocated yet. The indicies of the resources are 0..size-1.
- * This constructor will be called while m_createLock is held.
+ * have been allocated yet. The indicies of the resources are [0 .. elements - 1].
  */
 Resource::Resource(UINT32 elements)
 {
+	Synchronized sync(m_createLock);
 	m_size = elements;
 	m_isAllocated = new bool[m_size];
 	for (UINT32 i=0; i < m_size; i++)
+	{
 		m_isAllocated[i] = false;
-	m_nextResource = m_resourceList;
-	m_resourceList = this;
+	}
 }
 
+/**
+ * Factory method to create a Resource allocation-tracker *if* needed.
+ *
+ * @param r -- address of the caller's Resource pointer. If *r == NULL, this
+ *    will construct a Resource and make *r point to it. If *r != NULL, i.e.
+ *    the caller already has a Resource instance, this won't do anything.
+ * @param elements -- the number of elements for this Resource allocator to
+ *    track, that is, it will allocate resource numbers in the range
+ *    [0 .. elements - 1].
+ */
 /*static*/ void Resource::CreateResourceObject(Resource **r, UINT32 elements)
 {
 	Synchronized sync(m_createLock);
 	if (*r == NULL)
+	{
 		*r = new Resource(elements);
+	}
 }
 
 /**
diff --git a/aos/externals/WPILib/WPILib/Resource.h b/aos/externals/WPILib/WPILib/Resource.h
index 20e7147..dbe1936 100644
--- a/aos/externals/WPILib/WPILib/Resource.h
+++ b/aos/externals/WPILib/WPILib/Resource.h
@@ -12,17 +12,13 @@
 #include <vxWorks.h>
 
 /**
- * Track resources in the program.
- * The Resource class is a convienent way of keeping track of allocated arbitrary resources
- * in the program. Resources are just indicies that have an lower and upper bound that are
- * tracked by this class. In the library they are used for tracking allocation of hardware channels
- * but this is purely arbitrary. The resource class does not do any actual allocation, but
- * simply tracks if a given index is currently in use.
- * 
- * WARNING: this should only be statically allocated. When the program loads into memory all the
- * static constructors are called. At that time a linked list of all the "Resources" is created.
- * Then when the program actually starts - in the Robot constructor, all resources are initialized.
- * This ensures that the program is restartable in memory without having to unload/reload.
+ * The Resource class is a convenient way to track allocated resources.
+ * It tracks them as indicies in the range [0 .. elements - 1].
+ * E.g. the library uses this to track hardware channel allocation.
+ *
+ * The Resource class does not allocate the hardware channels or other
+ * resources; it just tracks which indices were marked in use by
+ * Allocate and not yet freed by Free.
  */
 class Resource : public ErrorBase
 {
@@ -33,17 +29,14 @@
 	UINT32 Allocate(UINT32 index, const char *resourceDesc);
 	void Free(UINT32 index);
 
-protected:
+private:
 	explicit Resource(UINT32 size);
 
-private:
 	bool *m_isAllocated;
-	Semaphore m_allocateLock;
+	ReentrantSemaphore m_allocateLock;
 	UINT32 m_size;
-	Resource *m_nextResource;
 
-	static Semaphore m_createLock;
-	static Resource *m_resourceList;
+	static ReentrantSemaphore m_createLock;
 
 	DISALLOW_COPY_AND_ASSIGN(Resource);
 };
diff --git a/aos/externals/WPILib/WPILib/RobotBase.cpp b/aos/externals/WPILib/WPILib/RobotBase.cpp
index a658c3d..0bebf09 100644
--- a/aos/externals/WPILib/WPILib/RobotBase.cpp
+++ b/aos/externals/WPILib/WPILib/RobotBase.cpp
@@ -113,6 +113,15 @@
 }
 
 /**
+ * Determine if the robot is currently in Test mode.
+ * @return True if the robot is currently running tests as determined by the field controls.
+ */
+bool RobotBase::IsTest()
+{
+    return m_ds->IsTest();
+}
+
+/**
  * Indicates if new data is available from the driver station.
  * @return Has new data arrived over the network since the last time this function was called?
  */
diff --git a/aos/externals/WPILib/WPILib/RobotBase.h b/aos/externals/WPILib/WPILib/RobotBase.h
index 358dadc..ac15250 100644
--- a/aos/externals/WPILib/WPILib/RobotBase.h
+++ b/aos/externals/WPILib/WPILib/RobotBase.h
@@ -44,6 +44,7 @@
 	bool IsDisabled();
 	bool IsAutonomous();
 	bool IsOperatorControl();
+    bool IsTest();
 	bool IsSystemActive();
 	bool IsNewDataAvailable();
 	Watchdog &GetWatchdog();
diff --git a/aos/externals/WPILib/WPILib/RobotDrive.cpp b/aos/externals/WPILib/WPILib/RobotDrive.cpp
index 2d54d22..14e28f5 100644
--- a/aos/externals/WPILib/WPILib/RobotDrive.cpp
+++ b/aos/externals/WPILib/WPILib/RobotDrive.cpp
@@ -238,19 +238,19 @@
  * @param leftStick The joystick to control the left side of the robot.
  * @param rightStick The joystick to control the right side of the robot.
  */
-void RobotDrive::TankDrive(GenericHID *leftStick, GenericHID *rightStick)
+void RobotDrive::TankDrive(GenericHID *leftStick, GenericHID *rightStick, bool squaredInputs)
 {
 	if (leftStick == NULL || rightStick == NULL)
 	{
 		wpi_setWPIError(NullParameter);
 		return;
 	}
-	TankDrive(leftStick->GetY(), rightStick->GetY());
+	TankDrive(leftStick->GetY(), rightStick->GetY(), squaredInputs);
 }
 
-void RobotDrive::TankDrive(GenericHID &leftStick, GenericHID &rightStick)
+void RobotDrive::TankDrive(GenericHID &leftStick, GenericHID &rightStick, bool squaredInputs)
 {
-	TankDrive(leftStick.GetY(), rightStick.GetY());
+	TankDrive(leftStick.GetY(), rightStick.GetY(), squaredInputs);
 }
 
 /**
@@ -263,20 +263,20 @@
  * @param rightAxis The axis to select on the right side Joystick object.
  */
 void RobotDrive::TankDrive(GenericHID *leftStick, UINT32 leftAxis,
-		GenericHID *rightStick, UINT32 rightAxis)
+		GenericHID *rightStick, UINT32 rightAxis, bool squaredInputs)
 {
 	if (leftStick == NULL || rightStick == NULL)
 	{
 		wpi_setWPIError(NullParameter);
 		return;
 	}
-	TankDrive(leftStick->GetRawAxis(leftAxis), rightStick->GetRawAxis(rightAxis));
+	TankDrive(leftStick->GetRawAxis(leftAxis), rightStick->GetRawAxis(rightAxis), squaredInputs);
 }
 
 void RobotDrive::TankDrive(GenericHID &leftStick, UINT32 leftAxis,
-		GenericHID &rightStick, UINT32 rightAxis)
+		GenericHID &rightStick, UINT32 rightAxis, bool squaredInputs)
 {
-	TankDrive(leftStick.GetRawAxis(leftAxis), rightStick.GetRawAxis(rightAxis));
+	TankDrive(leftStick.GetRawAxis(leftAxis), rightStick.GetRawAxis(rightAxis), squaredInputs);
 }
 
 
@@ -286,7 +286,7 @@
  * @param leftValue The value of the left stick.
  * @param rightValue The value of the right stick.
  */
-void RobotDrive::TankDrive(float leftValue, float rightValue)
+void RobotDrive::TankDrive(float leftValue, float rightValue, bool squaredInputs)
 {
 	static bool reported = false;
 	if (!reported)
@@ -298,21 +298,24 @@
 	// square the inputs (while preserving the sign) to increase fine control while permitting full power
 	leftValue = Limit(leftValue);
 	rightValue = Limit(rightValue);
-	if (leftValue >= 0.0)
+	if(squaredInputs)
 	{
-		leftValue = (leftValue * leftValue);
-	}
-	else
-	{
-		leftValue = -(leftValue * leftValue);
-	}
-	if (rightValue >= 0.0)
-	{
-		rightValue = (rightValue * rightValue);
-	}
-	else
-	{
-		rightValue = -(rightValue * rightValue);
+		if (leftValue >= 0.0)
+		{
+			leftValue = (leftValue * leftValue);
+		}
+		else
+		{
+			leftValue = -(leftValue * leftValue);
+		}
+		if (rightValue >= 0.0)
+		{
+			rightValue = (rightValue * rightValue);
+		}
+		else
+		{
+			rightValue = -(rightValue * rightValue);
+		}
 	}
 
 	SetLeftRightMotorOutputs(leftValue, rightValue);
@@ -330,7 +333,7 @@
 void RobotDrive::ArcadeDrive(GenericHID *stick, bool squaredInputs)
 {
 	// simply call the full-featured ArcadeDrive with the appropriate values
-	ArcadeDrive(stick->GetY(), stick->GetX(), stick->GetTrigger());
+	ArcadeDrive(stick->GetY(), stick->GetX(), squaredInputs);
 }
 
 /**
@@ -345,7 +348,7 @@
 void RobotDrive::ArcadeDrive(GenericHID &stick, bool squaredInputs)
 {
 	// simply call the full-featured ArcadeDrive with the appropriate values
-	ArcadeDrive(stick.GetY(), stick.GetX(), stick.GetTrigger());
+	ArcadeDrive(stick.GetY(), stick.GetX(), squaredInputs);
 }
 
 /**
diff --git a/aos/externals/WPILib/WPILib/RobotDrive.h b/aos/externals/WPILib/WPILib/RobotDrive.h
index c3a045b..4567dac 100644
--- a/aos/externals/WPILib/WPILib/RobotDrive.h
+++ b/aos/externals/WPILib/WPILib/RobotDrive.h
@@ -47,11 +47,11 @@
 	virtual ~RobotDrive();
 
 	void Drive(float outputMagnitude, float curve);
-	void TankDrive(GenericHID *leftStick, GenericHID *rightStick);
-	void TankDrive(GenericHID &leftStick, GenericHID &rightStick);
-	void TankDrive(GenericHID *leftStick, UINT32 leftAxis, GenericHID *rightStick, UINT32 rightAxis);
-	void TankDrive(GenericHID &leftStick, UINT32 leftAxis, GenericHID &rightStick, UINT32 rightAxis);
-	void TankDrive(float leftValue, float rightValue);
+	void TankDrive(GenericHID *leftStick, GenericHID *rightStick, bool squaredInputs = true);
+	void TankDrive(GenericHID &leftStick, GenericHID &rightStick, bool squaredInputs = true);
+	void TankDrive(GenericHID *leftStick, UINT32 leftAxis, GenericHID *rightStick, UINT32 rightAxis, bool squaredInputs = true);
+	void TankDrive(GenericHID &leftStick, UINT32 leftAxis, GenericHID &rightStick, UINT32 rightAxis, bool squaredInputs = true);
+	void TankDrive(float leftValue, float rightValue, bool squaredInputs = true);
 	void ArcadeDrive(GenericHID *stick, bool squaredInputs = true);
 	void ArcadeDrive(GenericHID &stick, bool squaredInputs = true);
 	void ArcadeDrive(GenericHID *moveStick, UINT32 moveChannel, GenericHID *rotateStick, UINT32 rotateChannel, bool squaredInputs = true);
diff --git a/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd b/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd
index e397e2a..7e0f220 100644
--- a/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd
+++ b/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd
@@ -1,48 +1,83 @@
-

-C:

-

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\Buttons

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\CAN

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\ChipObject

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\CInterfaces

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\Commands

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\NetworkCommunication

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\NetworkTables

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\SmartDashboard

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\visa

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\Vision

-mkdir \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib\Vision2009

-

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\Buttons\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\CAN\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\ChipObject\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\CInterfaces\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\Commands\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\NetworkCommunication\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\NetworkTables\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\SmartDashboard\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\visa\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\Vision\*.h

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPIlib\Vision2009\*.h

-

-del \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\lib\WPILib.a

-

-cd \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\h\WPILib

-

-copy \WindRiver\workspace\WPILib\*.h

-copy \WindRiver\workspace\WPILib\Buttons\*.h Buttons

-copy \WindRiver\workspace\WPILib\CAN\*.h CAN

-copy \WindRiver\workspace\WPILib\ChipObject\*.h ChipObject

-copy \WindRiver\workspace\WPILib\CInterfaces\*.h CInterfaces

-copy \WindRiver\workspace\WPILib\Commands\*.h Commands

-copy \WindRiver\workspace\WPILib\NetworkCommunication\*.h NetworkCommunication

-copy \WindRiver\workspace\WPILib\NetworkTables\*.h NetworkTables

-copy \WindRiver\workspace\WPILib\SmartDashboard\*.h SmartDashboard

-copy \WindRiver\workspace\WPILib\visa\*.h visa

-copy \WindRiver\workspace\WPILib\Vision\*.h Vision

-copy \WindRiver\workspace\WPILib\Vision2009\*.h Vision2009

-

-copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a \WindRiver\workspace\WorkbenchUpdate\vxworks-6.3\target\lib

-

-cd \WindRiver\workspace\WPILib\Scripts

+rem cd C:\WindRiver\workspace\WorkbenchUpdate
+cd ..\..\WorkbenchUpdate
+
+
+mkdir vxworks-6.3\target\h\WPILib\Buttons
+mkdir vxworks-6.3\target\h\WPILib\CAN
+mkdir vxworks-6.3\target\h\WPILib\ChipObject
+mkdir vxworks-6.3\target\h\WPILib\CInterfaces
+mkdir vxworks-6.3\target\h\WPILib\Commands
+mkdir vxworks-6.3\target\h\WPILib\NetworkCommunication
+mkdir vxworks-6.3\target\h\WPILib\SmartDashboard
+mkdir vxworks-6.3\target\h\WPILib\visa
+mkdir vxworks-6.3\target\h\WPILib\Vision
+mkdir vxworks-6.3\target\h\WPILib\Vision2009
+
+mkdir vxworks-6.3\target\h\WPILib\LiveWindow
+mkdir vxworks-6.3\target\h\WPILib\networktables
+mkdir vxworks-6.3\target\h\WPILib\tables
+mkdir vxworks-6.3\target\h\WPILib\networktables2
+mkdir vxworks-6.3\target\h\WPILib\networktables2\client
+mkdir vxworks-6.3\target\h\WPILib\networktables2\connection
+mkdir vxworks-6.3\target\h\WPILib\networktables2\server
+mkdir vxworks-6.3\target\h\WPILib\networktables2\stream
+mkdir vxworks-6.3\target\h\WPILib\networktables2\thread
+mkdir vxworks-6.3\target\h\WPILib\networktables2\type
+mkdir vxworks-6.3\target\h\WPILib\networktables2\util
+
+
+del vxworks-6.3\target\h\WPIlib\*.h
+del vxworks-6.3\target\h\WPIlib\Buttons\*.h
+del vxworks-6.3\target\h\WPIlib\CAN\*.h
+del vxworks-6.3\target\h\WPIlib\ChipObject\*.h
+del vxworks-6.3\target\h\WPIlib\CInterfaces\*.h
+del vxworks-6.3\target\h\WPIlib\Commands\*.h
+del vxworks-6.3\target\h\WPIlib\NetworkCommunication\*.h
+del vxworks-6.3\target\h\WPIlib\SmartDashboard\*.h
+del vxworks-6.3\target\h\WPIlib\visa\*.h
+del vxworks-6.3\target\h\WPIlib\Vision\*.h
+del vxworks-6.3\target\h\WPIlib\Vision2009\*.h
+
+del vxworks-6.3\target\h\WPIlib\LiveWindow\*.h
+del vxworks-6.3\target\h\WPIlib\networktables\*.h
+del vxworks-6.3\target\h\WPIlib\tables\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\client\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\connection\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\server\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\stream\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\thread\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\type\*.h
+del vxworks-6.3\target\h\WPIlib\networktables2\util\*.h
+
+del vxworks-6.3\target\lib\WPILib.a
+
+
+copy C:\WindRiver\workspace\WPILib\*.h vxworks-6.3\target\h\WPILib
+copy C:\WindRiver\workspace\WPILib\Buttons\*.h vxworks-6.3\target\h\WPILib\Buttons
+copy C:\WindRiver\workspace\WPILib\CAN\*.h vxworks-6.3\target\h\WPILib\CAN
+copy C:\WindRiver\workspace\WPILib\ChipObject\*.h vxworks-6.3\target\h\WPILib\ChipObject
+copy C:\WindRiver\workspace\WPILib\CInterfaces\*.h vxworks-6.3\target\h\WPILib\CInterfaces
+copy C:\WindRiver\workspace\WPILib\Commands\*.h vxworks-6.3\target\h\WPILib\Commands
+copy C:\WindRiver\workspace\WPILib\NetworkCommunication\*.h vxworks-6.3\target\h\WPILib\NetworkCommunication
+copy C:\WindRiver\workspace\WPILib\SmartDashboard\*.h vxworks-6.3\target\h\WPILib\SmartDashboard
+copy C:\WindRiver\workspace\WPILib\visa\*.h vxworks-6.3\target\h\WPILib\visa
+copy C:\WindRiver\workspace\WPILib\Vision\*.h vxworks-6.3\target\h\WPILib\Vision
+copy C:\WindRiver\workspace\WPILib\Vision2009\*.h vxworks-6.3\target\h\WPILib\Vision2009
+
+copy C:\WindRiver\workspace\WPILib\LiveWindow\*.h vxworks-6.3\target\h\WPILib\LiveWindow
+copy C:\WindRiver\workspace\WPILib\networktables\*.h vxworks-6.3\target\h\WPILib\networktables
+copy C:\WindRiver\workspace\WPILib\tables\*.h vxworks-6.3\target\h\WPILib\tables
+copy C:\WindRiver\workspace\WPILib\networktables2\*.h vxworks-6.3\target\h\WPILib\networktables2
+copy C:\WindRiver\workspace\WPILib\networktables2\client\*.h vxworks-6.3\target\h\WPILib\networktables2\client
+copy C:\WindRiver\workspace\WPILib\networktables2\connection\*.h vxworks-6.3\target\h\WPILib\networktables2\connection
+copy C:\WindRiver\workspace\WPILib\networktables2\server\*.h vxworks-6.3\target\h\WPILib\networktables2\server
+copy C:\WindRiver\workspace\WPILib\networktables2\stream\*.h vxworks-6.3\target\h\WPILib\networktables2\stream
+copy C:\WindRiver\workspace\WPILib\networktables2\thread\*.h vxworks-6.3\target\h\WPILib\networktables2\thread
+copy C:\WindRiver\workspace\WPILib\networktables2\type\*.h vxworks-6.3\target\h\WPILib\networktables2\type
+copy C:\WindRiver\workspace\WPILib\networktables2\util\*.h vxworks-6.3\target\h\WPILib\networktables2\util
+
+
+copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a vxworks-6.3\target\lib
+
+cd C:\WindRiver\workspace\WPILib\Scripts
diff --git a/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd b/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd
index 6c06802..ebbbcff 100644
--- a/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd
+++ b/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd
@@ -1,46 +1,61 @@
-cd C:\WindRiver\vxworks-6.3\target

-

-mkdir h\WPILib

-mkdir h\WPILib\Buttons

-mkdir h\WPILib\CAN

-mkdir h\WPILib\ChipObject

-mkdir h\WPILib\CInterfaces

-mkdir h\WPILib\Commands

-mkdir h\WPILib\NetworkCommunication

-mkdir h\WPILib\NetworkTables

-mkdir h\WPILib\SmartDashboard

-mkdir h\WPILib\visa

-mkdir h\WPILib\Vision

-mkdir h\WPILib\Vision2009

-

-del h\WPILib\*.h

-del h\WPILib\Buttons\*.h

-del h\WPILib\CAN\*.h

-del h\WPILib\ChipObject\*.h

-del h\WPILib\CInterfaces\*.h

-del h\WPILib\Commands\*.h

-del h\WPILib\NetworkCommunication\*.h

-del h\WPILib\NetworkTables\*.h

-del h\WPILib\SmartDashboard\*.h

-del h\WPILib\visa\*.h

-del h\WPILib\Vision\*.h

-del h\WPILib\Vision2009\*.h

-

-copy c:\WindRiver\workspace\WPILib\*.h h\WPILib

-copy c:\WindRiver\workspace\WPILib\Buttons\*.h h\WPILib\Buttons

-copy c:\WindRiver\workspace\WPILib\CAN\*.h h\WPILib\CAN

-copy c:\WindRiver\workspace\WPILib\ChipObject\*.h h\WPILib\ChipObject

-copy C:\WindRiver\workspace\WPILib\CInterfaces\*.h h\WPILib\CInterfaces

-copy C:\WindRiver\workspace\WPILib\Commands\*.h h\WPILib\Commands

-copy C:\WindRiver\workspace\WPILib\NetworkCommunication\*.h h\WPILib\NetworkCommunication

-copy C:\WindRiver\workspace\WPILib\NetworkTables\*.h h\WPILib\NetworkTables

-copy C:\WindRiver\workspace\WPILib\SmartDashboard\*.h h\WPILib\SmartDashboard

-copy c:\WindRiver\workspace\WPILib\visa\*.h h\WPILib\visa

-copy c:\WindRiver\workspace\WPILib\Vision\*.h h\WPILib\Vision

-copy c:\WindRiver\workspace\WPILib\Vision2009\*.h h\WPILib\Vision2009

-

-copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a lib

-

-rem copy c:\WindRiver\workspace\WorkbenchUpdate\frc_20*.zip c:\WindRiver\WPILib\cRIO_Images

-

-cd \WindRiver\workspace\WPILib\Scripts

+cd C:\WindRiver\vxworks-6.3\target
+
+rd /s /q h\WPILib
+
+mkdir h\WPILib
+mkdir h\WPILib\Buttons
+mkdir h\WPILib\CAN
+mkdir h\WPILib\ChipObject
+mkdir h\WPILib\CInterfaces
+mkdir h\WPILib\Commands
+mkdir h\WPILib\NetworkCommunication
+mkdir h\WPILib\SmartDashboard
+mkdir h\WPILib\visa
+mkdir h\WPILib\Vision
+mkdir h\WPILib\Vision2009
+
+mkdir h\WPILib\LiveWindow
+mkdir h\WPILib\networktables
+mkdir h\WPILib\tables
+mkdir h\WPILib\networktables2
+mkdir h\WPILib\networktables2\client
+mkdir h\WPILib\networktables2\connection
+mkdir h\WPILib\networktables2\server
+mkdir h\WPILib\networktables2\stream
+mkdir h\WPILib\networktables2\thread
+mkdir h\WPILib\networktables2\type
+mkdir h\WPILib\networktables2\util
+
+
+
+copy c:\WindRiver\workspace\WPILib\*.h h\WPILib
+copy c:\WindRiver\workspace\WPILib\Buttons\*.h h\WPILib\Buttons
+copy c:\WindRiver\workspace\WPILib\CAN\*.h h\WPILib\CAN
+copy c:\WindRiver\workspace\WPILib\ChipObject\*.h h\WPILib\ChipObject
+copy C:\WindRiver\workspace\WPILib\CInterfaces\*.h h\WPILib\CInterfaces
+copy C:\WindRiver\workspace\WPILib\Commands\*.h h\WPILib\Commands
+copy C:\WindRiver\workspace\WPILib\NetworkCommunication\*.h h\WPILib\NetworkCommunication
+copy C:\WindRiver\workspace\WPILib\SmartDashboard\*.h h\WPILib\SmartDashboard
+copy c:\WindRiver\workspace\WPILib\visa\*.h h\WPILib\visa
+copy c:\WindRiver\workspace\WPILib\Vision\*.h h\WPILib\Vision
+copy c:\WindRiver\workspace\WPILib\Vision2009\*.h h\WPILib\Vision2009
+
+copy C:\WindRiver\workspace\WPILib\LiveWindow\*.h h\WPILib\LiveWindow
+copy C:\WindRiver\workspace\WPILib\networktables\*.h h\WPILib\networktables
+copy C:\WindRiver\workspace\WPILib\tables\*.h h\WPILib\tables
+copy C:\WindRiver\workspace\WPILib\networktables2\*.h h\WPILib\networktables2
+copy C:\WindRiver\workspace\WPILib\networktables2\client\*.h h\WPILib\networktables2\client
+copy C:\WindRiver\workspace\WPILib\networktables2\connection\*.h h\WPILib\networktables2\connection
+copy C:\WindRiver\workspace\WPILib\networktables2\server\*.h h\WPILib\networktables2\server
+copy C:\WindRiver\workspace\WPILib\networktables2\stream\*.h h\WPILib\networktables2\stream
+copy C:\WindRiver\workspace\WPILib\networktables2\thread\*.h h\WPILib\networktables2\thread
+copy C:\WindRiver\workspace\WPILib\networktables2\type\*.h h\WPILib\networktables2\type
+copy C:\WindRiver\workspace\WPILib\networktables2\util\*.h h\WPILib\networktables2\util
+
+
+
+copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a lib
+
+rem copy c:\WindRiver\workspace\WorkbenchUpdate\frc_20*.zip c:\WindRiver\WPILib\cRIO_Images
+
+cd \WindRiver\workspace\WPILib\Scripts
diff --git a/aos/externals/WPILib/WPILib/Servo.cpp b/aos/externals/WPILib/WPILib/Servo.cpp
index fb00224..172044f 100644
--- a/aos/externals/WPILib/WPILib/Servo.cpp
+++ b/aos/externals/WPILib/WPILib/Servo.cpp
@@ -7,6 +7,7 @@
 #include "Servo.h"
 
 #include "NetworkCommunication/UsageReporting.h"
+#include "LiveWindow/LiveWindow.h"
 
 const float Servo::kMaxServoAngle;
 const float Servo::kMinServoAngle;
@@ -23,6 +24,8 @@
 	SetBounds(245, 0, 0, 0, 11);
 	SetPeriodMultiplier(kPeriodMultiplier_4X);
 
+
+	LiveWindow::GetInstance()->AddActuator("Servo", GetModuleNumber(), GetChannel(), this);
 	nUsageReporting::report(nUsageReporting::kResourceType_Servo, GetChannel(), GetModuleNumber() - 1);
 }
 
@@ -119,3 +122,36 @@
 {
 	return (float)GetPosition() * GetServoAngleRange() + kMinServoAngle;
 }
+
+void Servo::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	Set(value.f);
+}
+
+void Servo::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", Get());
+	}
+}
+
+void Servo::StartLiveWindowMode() {
+	m_table->AddTableListener("Value", this, true);
+}
+
+void Servo::StopLiveWindowMode() {
+	m_table->RemoveTableListener(this);
+}
+
+std::string Servo::GetSmartDashboardType() {
+	return "Servo";
+}
+
+void Servo::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Servo::GetTable() {
+	return m_table;
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/Servo.h b/aos/externals/WPILib/WPILib/Servo.h
index 70123a6..0d9da50 100644
--- a/aos/externals/WPILib/WPILib/Servo.h
+++ b/aos/externals/WPILib/WPILib/Servo.h
@@ -29,6 +29,16 @@
 	float GetAngle();
 	static float GetMaxAngle() { return kMaxServoAngle; };
 	static float GetMinAngle() { return kMinServoAngle; };
+	
+	void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+	
+	ITable *m_table;
 
 private:
 	void InitServo();
diff --git a/aos/externals/WPILib/WPILib/SimpleRobot.cpp b/aos/externals/WPILib/WPILib/SimpleRobot.cpp
index 8860aa9..b111bff 100644
--- a/aos/externals/WPILib/WPILib/SimpleRobot.cpp
+++ b/aos/externals/WPILib/WPILib/SimpleRobot.cpp
@@ -9,6 +9,9 @@
 #include "DriverStation.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include "Timer.h"
+#include "SmartDashboard/SmartDashboard.h"
+#include "LiveWindow/LiveWindow.h"
+#include "networktables/NetworkTable.h"
 
 SimpleRobot::SimpleRobot()
 	: m_robotMainOverridden (true)
@@ -20,7 +23,7 @@
  * Robot-wide initialization code should go here.
  * 
  * Programmers should override this method for default Robot-wide initialization which will
- * be called when the robot is first powered on.  It will be called exactly 1 time.
+ * be called each time the robot enters the disabled state.
  */
 void SimpleRobot::RobotInit()
 {
@@ -40,7 +43,8 @@
 /**
  * Autonomous should go here.
  * Programmers should override this method to run code that should run while the field is
- * in the autonomous period.
+ * in the autonomous period. This will be called once each time the robot enters the
+ * autonomous state.
  */
 void SimpleRobot::Autonomous()
 {
@@ -50,7 +54,8 @@
 /**
  * Operator control (tele-operated) code should go here.
  * Programmers should override this method to run code that should run while the field is
- * in the Operator Control (tele-operated) period.
+ * in the Operator Control (tele-operated) period. This is called once each time the robot
+ * enters the teleop state.
  */
 void SimpleRobot::OperatorControl()
 {
@@ -58,6 +63,16 @@
 }
 
 /**
+ * Test program should go here.
+ * Programmers should override this method to run code that executes while the robot is
+ * in test mode. This will be called once whenever the robot enters test mode
+ */
+void SimpleRobot::Test()
+{
+	printf("Default %s() method... Override me!\n", __FUNCTION__);
+}
+
+/**
  * Robot main program for free-form programs.
  * 
  * This should be overridden by user subclasses if the intent is to not use the Autonomous() and
@@ -77,19 +92,27 @@
  * Start a competition.
  * This code needs to track the order of the field starting to ensure that everything happens
  * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
- * when the robot is enabled. After running the correct method, wait for some state to change,
- * either the other mode starts or the robot is disabled. Then go back and wait for the robot
- * to be enabled again.
+ * or Test when the robot is enabled. After running the correct method, wait for some state to
+ * change, either the other mode starts or the robot is disabled. Then go back and wait for the
+ * robot to be enabled again.
  */
 void SimpleRobot::StartCompetition()
 {
+	LiveWindow *lw = LiveWindow::GetInstance();
+
 	nUsageReporting::report(nUsageReporting::kResourceType_Framework, nUsageReporting::kFramework_Simple);
 
+	SmartDashboard::init();
+	NetworkTable::GetTable("LiveWindow")->GetSubTable("~STATUS~")->PutBoolean("LW Enabled", false);
+
 	RobotMain();
 	
 	if (!m_robotMainOverridden)
 	{
 		// first and one-time initialization
+		
+		lw->SetEnabled(false);
+		
 		RobotInit();
 
 		while (true)
@@ -108,6 +131,15 @@
 				m_ds->InAutonomous(false);
 				while (IsAutonomous() && IsEnabled()) m_ds->WaitForData();
 			}
+            else if (IsTest())
+            {
+            	lw->SetEnabled(true);
+                m_ds->InTest(true);
+                Test();
+                m_ds->InTest(false);
+                while (IsTest() && IsEnabled()) m_ds->WaitForData();
+                lw->SetEnabled(false);
+            }
 			else
 			{
 				m_ds->InOperatorControl(true);
diff --git a/aos/externals/WPILib/WPILib/SimpleRobot.h b/aos/externals/WPILib/WPILib/SimpleRobot.h
index ac282fa..d963805 100644
--- a/aos/externals/WPILib/WPILib/SimpleRobot.h
+++ b/aos/externals/WPILib/WPILib/SimpleRobot.h
@@ -20,7 +20,8 @@
 	virtual void RobotInit();
 	virtual void Disabled();
 	virtual void Autonomous();
-	virtual void OperatorControl();
+    virtual void OperatorControl();
+    virtual void Test();
 	virtual void RobotMain();
 	void StartCompetition();
 
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h b/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h
new file mode 100644
index 0000000..8be059b
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h
@@ -0,0 +1,29 @@
+/*
+ * NamedSendable.h
+ *
+ *  Created on: Oct 19, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NAMEDSENDABLE_H_
+#define NAMEDSENDABLE_H_
+
+
+#include <string>
+#include "SmartDashboard/Sendable.h"
+
+/**
+ * The interface for sendable objects that gives the sendable a default name in the Smart Dashboard
+ * 
+ */
+class NamedSendable : public Sendable
+{
+public:
+
+    /**
+     * @return the name of the subtable of SmartDashboard that the Sendable object will use
+     */
+	virtual std::string GetName() = 0;
+};
+
+#endif /* NAMEDSENDABLE_H_ */
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/Sendable.h b/aos/externals/WPILib/WPILib/SmartDashboard/Sendable.h
new file mode 100644
index 0000000..e5c8698
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/Sendable.h
@@ -0,0 +1,33 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef __SMART_DASHBOARD_DATA__
+#define __SMART_DASHBOARD_DATA__
+
+#include <string>
+#include "tables/ITable.h"
+
+class Sendable
+{
+public:
+	/**
+	 * Initializes a table for this sendable object.
+	 * @param subtable The table to put the values in.
+	 */
+	virtual void InitTable(ITable* subtable) = 0;
+
+	/**
+	 * @return the table that is currently associated with the sendable
+	 */
+	virtual ITable* GetTable() = 0;
+
+	/**
+	 * @return the string representation of the named data type that will be used by the smart dashboard for this sendable
+	 */
+	virtual std::string GetSmartDashboardType() = 0;
+};
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.cpp b/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.cpp
index ed3990a..7c226dc 100644
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.cpp
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.cpp
@@ -5,18 +5,17 @@
 /*----------------------------------------------------------------------------*/
 
 #include "SmartDashboard/SendableChooser.h"
+#include "networktables2/type/StringArray.h"
 
-#include "NetworkTables/NetworkTable.h"
 #include <stdio.h>
 
 static const char *kDefault = "default";
-static const char *kCount = "count";
+static const char *kOptions = "options";
 static const char *kSelected = "selected";
 
 SendableChooser::SendableChooser()
 {
-	m_table = new NetworkTable();
-	m_count = 0;
+	m_defaultChoice = "";
 }
 
 /**
@@ -27,23 +26,7 @@
  */
 void SendableChooser::AddObject(const char *name, void *object)
 {
-	std::pair<std::map<std::string, void *>::iterator, bool> ret = m_choices.insert(std::pair<std::string, void *>(name, object));
-	if (ret.second)
-	{
-		//idBuf is: 10 bytes for m_count and 1 for NULL term
-		char idBuf[11];
-		snprintf(idBuf, 11, "%d", m_count);
-		m_ids.insert(std::pair<void *, std::string>(object, idBuf));
-		m_table->PutString(idBuf, name);
-		m_count++;
-		m_table->PutInt(kCount, m_count);
-	}
-	else
-	{
-		std::string id = m_ids[ret.first->second];
-		ret.first->second = object;
-		m_table->PutString(id, name);
-	}
+	m_choices[name] = object;
 }
 
 /**
@@ -55,9 +38,8 @@
  */
 void SendableChooser::AddDefault(const char *name, void *object)
 {
-	m_defaultChoice = object;
+	m_defaultChoice = name;
 	AddObject(name, object);
-	m_table->PutString(kDefault, name);
 }
 
 /**
@@ -67,5 +49,30 @@
  */
 void *SendableChooser::GetSelected()
 {
-	return m_table->ContainsKey(kSelected) ? m_choices[m_table->GetString(kSelected)] : m_defaultChoice;
+	std::string selected = m_table->GetString(kSelected, m_defaultChoice);
+	if (selected == "")
+		return NULL;
+	else
+		return m_choices[selected];
+}
+
+void SendableChooser::InitTable(ITable* subtable) {
+	StringArray keys;
+	m_table = subtable;
+	if (m_table != NULL) {
+		std::map<std::string, void *>::iterator iter;
+		for (iter = m_choices.begin(); iter != m_choices.end(); iter++) {
+			keys.add(iter->first);
+		}
+		m_table->PutValue(kOptions, keys);
+		m_table->PutString(kDefault, m_defaultChoice);
+	}
+}
+
+ITable* SendableChooser::GetTable() {
+	return m_table;
+}
+
+std::string SendableChooser::GetSmartDashboardType() {
+	return "String Chooser";
 }
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.h b/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.h
index d25dca0..7a119b4 100644
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.h
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.h
@@ -7,12 +7,11 @@
 #ifndef __SENDABLE_CHOOSER_H__
 #define __SENDABLE_CHOOSER_H__
 
-#include "SmartDashboard/SmartDashboardData.h"
+#include "SmartDashboard/Sendable.h"
+#include "tables/ITable.h"
 #include <map>
 #include <string>
 
-class NetworkTable;
-
 /**
  * The {@link SendableChooser} class is a useful tool for presenting a selection of options
  * to the {@link SmartDashboard}.
@@ -25,7 +24,7 @@
  *
  * @see SmartDashboard
  */
-class SendableChooser : public SmartDashboardData
+class SendableChooser : public Sendable
 {
 public:
 	SendableChooser();
@@ -35,16 +34,14 @@
 	void AddDefault(const char *name, void *object);
 	void *GetSelected();
 
-	// SmartDashboardData interface
-	virtual std::string GetType() {return "String Chooser";}
-	virtual NetworkTable *GetTable() {return m_table;}
+	virtual void InitTable(ITable* subtable);
+	virtual ITable* GetTable();
+	virtual std::string GetSmartDashboardType();
 
 private:
-	void *m_defaultChoice;
+	std::string m_defaultChoice;
 	std::map<std::string, void *> m_choices;
-	std::map<void *, std::string> m_ids;
-	NetworkTable *m_table;
-	int m_count;
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.cpp b/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.cpp
deleted file mode 100644
index fd694a4..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "SmartDashboard/SendableGyro.h"
-
-#include "NetworkTables/NetworkTable.h"
-#include "WPIErrors.h"
-
-#include <taskLib.h>
-
-/** The time (in seconds) between updates to the table */
-static const double kDefaultTimeBetweenUpdates = 0.2;
-static const char *kAngle = "angle";
-
-/**
- * Gyro constructor given a moduleNumber and a channel.
- *
- * @param moduleNumber The analog module the gyro is connected to.
- * @param channel The analog channel the gyro is connected to.
- */
-SendableGyro::SendableGyro(UINT8 moduleNumber, UINT32 channel) :
-	Gyro(moduleNumber, channel),
-	m_offset(0.0),
-	m_period(kDefaultTimeBetweenUpdates),
-	m_table(NULL),
-	m_publisher("SendableGyroPublisher", (FUNCPTR)InitPublishTask),
-	m_runPublisher(false)
-{
-}
-
-/**
- * Gyro constructor with only a channel.
- *
- * Use the default analog module slot.
- *
- * @param channel The analog channel the gyro is connected to.
- */
-SendableGyro::SendableGyro(UINT32 channel) :
-	Gyro(channel),
-	m_offset(0.0),
-	m_period(kDefaultTimeBetweenUpdates),
-	m_table(NULL),
-	m_publisher("SendableGyroPublisher", (FUNCPTR)InitPublishTask),
-	m_runPublisher(false)
-{
-}
-
-/**
- * Gyro constructor with a precreated analog channel object.
- * Use this constructor when the analog channel needs to be shared. There
- * is no reference counting when an AnalogChannel is passed to the gyro.
- * @param channel The AnalogChannel object that the gyro is connected to.
- */
-SendableGyro::SendableGyro(AnalogChannel* channel):  
-	Gyro(channel),
-	m_offset(0.0),
-	m_period(kDefaultTimeBetweenUpdates),
-	m_table(NULL),
-	m_publisher("SendableGyroPublisher", (FUNCPTR)InitPublishTask),
-	m_runPublisher(false)
-{
-}
-
-SendableGyro::~SendableGyro()
-{
-	if (m_table != NULL)
-	{
-		// Stop the task
-		m_runPublisher = false;
-		while(m_publisher.Verify())
-			taskDelay(10);
-
-		// Stop listening to the table
-		m_table->RemoveChangeListener(kAngle, this);
-
-		delete m_table;
-		m_table = NULL;
-	}
-}
-
-float SendableGyro::GetAngle()
-{
-	return m_offset + Gyro::GetAngle();
-}
-
-void SendableGyro::Reset()
-{
-	m_offset = 0.0;
-	Gyro::Reset();
-}
-
-/**
- * Sets the time (in seconds) between updates to the {@link SmartDashboard}.
- * The default is 0.2 seconds.
- * @param period the new time between updates
- */
-void SendableGyro::SetUpdatePeriod(double period)
-{
-	if (period <= 0.0)
-		wpi_setWPIErrorWithContext(ParameterOutOfRange, "period <= 0.0");
-	else
-		m_period = period;
-}
-
-/**
- * Returns the period (in seconds) between updates to the {@link SmartDashboard}.
- * This value is independent of whether or not this {@link SendableGyro} is connected
- * to the {@link SmartDashboard}.  The default value is 0.2 seconds.
- * @return the period (in seconds)
- */
-double SendableGyro::GetUpdatePeriod()
-{
-	return m_period;
-}
-
-/**
- * Reset the gyro.
- * Resets the gyro to the given heading. This can be used if there is significant
- * drift in the gyro and it needs to be recalibrated after it has been running.
- * @param angle the angle the gyro should believe it is pointing
- */
-void SendableGyro::ResetToAngle(double angle)
-{
-	m_offset = angle;
-	Gyro::Reset();
-}
-
-NetworkTable *SendableGyro::GetTable()
-{
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-		m_table->PutInt(kAngle, (int)GetAngle());
-		m_table->AddChangeListener(kAngle, this);
-		m_publisher.Start((UINT32)this);
-	}
-	return m_table;
-}
-
-void SendableGyro::ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type)
-{
-	// Update value from smart dashboard
-	ResetToAngle(m_table->GetDouble(name));
-}
-
-void SendableGyro::PublishTaskRun()
-{
-	m_runPublisher = true;
-	while(m_runPublisher)
-	{
-		m_table->PutInt(kAngle, (int)GetAngle());
-		taskDelay((INT32)(m_period * 1000));
-	}
-}
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.h b/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.h
deleted file mode 100644
index 4616b7d..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableGyro.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __SENDABLE_GYRO_H__
-#define __SENDABLE_GYRO_H__
-
-#include "Gyro.h"
-#include "NetworkTables/NetworkTableChangeListener.h"
-#include "SmartDashboard/SmartDashboardData.h"
-#include "Task.h"
-
-class NetworkTable;
-
-/**
- * The {@link SendableGyro} class behaves exactly the same as a {@link Gyro} except that it
- * also implements {@link SmartDashboardData} so that it can be sent over to the {@link SmartDashboard}.
- */
-class SendableGyro : public Gyro, public SmartDashboardData, public NetworkTableChangeListener
-{
-public:
-	SendableGyro(UINT8 moduleNumber, UINT32 channel);
-	SendableGyro(UINT32 channel);
-	SendableGyro(AnalogChannel* channel);
-	virtual ~SendableGyro();
-
-	// Gyro overrides
-	virtual float GetAngle();
-	virtual void Reset();
-
-	void SetUpdatePeriod(double period);
-	double GetUpdatePeriod();
-	void ResetToAngle(double angle);
-
-	// SmartDashboardData interface
-	virtual std::string GetType() {return "Gyro";}
-	virtual NetworkTable *GetTable();
-
-private:
-	// NetworkTableChangeListener interface
-	virtual void ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type);
-	virtual void ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type) {}
-
-	void PublishTaskRun();
-
-	static int InitPublishTask(SendableGyro *obj) {obj->PublishTaskRun();return 0;}
-
-	/** The angle added to the gyro's value */
-	double m_offset;
-	/** The period (in seconds) between value updates */
-	double m_period;
-	NetworkTable *m_table;
-	Task m_publisher;
-	bool m_runPublisher;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.cpp b/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.cpp
deleted file mode 100644
index 2606a2f..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#include "SmartDashboard/SendablePIDController.h"
-
-#include "NetworkTables/NetworkTable.h"
-
-static const char *kP = "p";
-static const char *kI = "i";
-static const char *kD = "d";
-static const char *kSetpoint = "setpoint";
-static const char *kEnabled = "enabled";
-
-/**
- * Allocate a PID object with the given constants for P, I, D, using a 50ms period.
- * @param p the proportional coefficient
- * @param i the integral coefficient
- * @param d the derivative coefficient
- * @param source The PIDSource object that is used to get values
- * @param output The PIDOutput object that is set to the output value
- */
-SendablePIDController::SendablePIDController(double p, double i, double d,
-	PIDSource* source, PIDOutput* output) :
-	PIDController(p, i, d, source, output),
-	m_table(NULL)
-{
-}
-
-/**
- * Allocate a PID object with the given constants for P, I, D
- * @param p the proportional coefficient
- * @param i the integral coefficient
- * @param d the derivative coefficient
- * @param source The PIDSource object that is used to get values
- * @param output The PIDOutput object that is set to the output value
- * @param period the loop time for doing calculations in seconds. This particularly effects calculations of the
- * integral and differential terms. The default is 50ms.
- */
-SendablePIDController::SendablePIDController(double p, double i, double d,
-	PIDSource* source, PIDOutput* output, double period) :
-	PIDController(p, i, d, source, output, period),
-	m_table(NULL)
-{
-}
-
-SendablePIDController::~SendablePIDController()
-{
-	if (m_table != NULL)
-		m_table->RemoveChangeListenerAny(this);
-}
-
-/**
- * Set the setpoint for the PIDController
- * @param setpoint the desired setpoint
- */
-void SendablePIDController::SetSetpoint(float setpoint)
-{
-	PIDController::SetSetpoint(setpoint);
-
-	if (m_table != NULL)
-	{
-		m_table->PutDouble(kSetpoint, setpoint);
-	}
-}
-
-/**
- * Set the PID Controller gain parameters.
- * Set the proportional, integral, and differential coefficients.
- * @param p Proportional coefficient
- * @param i Integral coefficient
- * @param d Differential coefficient
- */
-void SendablePIDController::SetPID(double p, double i, double d)
-{
-	PIDController::SetPID(p, i, d);
-
-	if (m_table != NULL)
-	{
-		m_table->PutDouble(kP, p);
-		m_table->PutDouble(kI, i);
-		m_table->PutDouble(kD, d);
-	}
-}
-
-/**
- * Begin running the PIDController
- */
-void SendablePIDController::Enable()
-{
-	PIDController::Enable();
-
-	if (m_table != NULL)
-		m_table->PutBoolean(kEnabled, true);
-}
-
-/**
- * Stop running the PIDController, this sets the output to zero before stopping.
- */
-void SendablePIDController::Disable()
-{
-	PIDController::Disable();
-
-	if (m_table != NULL)
-		m_table->PutBoolean(kEnabled, false);
-}
-
-NetworkTable* SendablePIDController::GetTable()
-{
-	if (m_table == NULL)
-	{
-		m_table = new NetworkTable();
-
-		m_table->PutDouble(kP, GetP());
-		m_table->PutDouble(kI, GetI());
-		m_table->PutDouble(kD, GetD());
-		m_table->PutDouble(kSetpoint, GetSetpoint());
-		m_table->PutBoolean(kEnabled, IsEnabled());
-
-		m_table->AddChangeListenerAny(this);
-	}
-	return m_table;
-}
-
-void SendablePIDController::ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type)
-{
-	if (strcmp(name, kP) == 0 || strcmp(name, kI) == 0 || strcmp(name, kD) == 0)
-	{
-		PIDController::SetPID(table->GetDouble(kP), table->GetDouble(kI),
-			table->GetDouble(kD));
-	}
-	else if (strcmp(name, kSetpoint) == 0)
-	{
-		PIDController::SetSetpoint(table->GetDouble(kSetpoint));
-	}
-	else if (strcmp(name, kEnabled) == 0)
-	{
-		if (table->GetBoolean(kEnabled))
-			PIDController::Enable();
-		else
-			PIDController::Disable();
-	}
-}
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.h b/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.h
deleted file mode 100644
index 02d6daa..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendablePIDController.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __SENDABLE_PID_CONTROLLER_H__
-#define __SENDABLE_PID_CONTROLLER_H__
-
-#include "NetworkTables/NetworkTableChangeListener.h"
-#include "PIDController.h"
-#include "SmartDashboard/SmartDashboardData.h"
-
-class NetworkTable;
-
-/**
- * A {@link SendablePIDController} is a {@link PIDController} that can be sent over to the {@link SmartDashboard} using
- * the {@link SmartDashboard#PutData(const char *, SmartDashboardData *) PutData(...)}
- * method.
- *
- * <p>It is useful if you want to test values of a {@link PIDController} without having to recompile code between tests.
- * Also, consider using {@link Preferences} to save the important values between matches.</p>
- * 
- * @see SmartDashboard
- */
-class SendablePIDController : public PIDController, public SmartDashboardData, public NetworkTableChangeListener
-{
-public:
-	SendablePIDController(double p, double i, double d, PIDSource *source, PIDOutput *output);
-	SendablePIDController(double p, double i, double d, PIDSource *source, PIDOutput *output, double period);
-	virtual ~SendablePIDController();
-
-	virtual void SetSetpoint(float setpoint);
-	virtual void SetPID(double p, double i, double d); 
-	virtual void Enable();
-	virtual void Disable();
-
-	// SmartDashboardData interface
-	virtual std::string GetType() {return "PIDController";}
-	virtual NetworkTable *GetTable();
-
-	// NetworkTableChangeListener interface
-	virtual void ValueChanged(NetworkTable *table, const char *name, NetworkTables_Types type);
-	virtual void ValueConfirmed(NetworkTable *table, const char *name, NetworkTables_Types type) {}
-
-private:
-	NetworkTable* m_table;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp
index f7c4867..bfa3ee6 100644
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp
@@ -7,45 +7,18 @@
 #include "SmartDashboard/SmartDashboard.h"
 
 #include "NetworkCommunication/UsageReporting.h"
-#include "NetworkTables/NetworkTable.h"
-#include "SmartDashboard/SmartDashboardData.h"
-#include "SmartDashboard/SmartDashboardNamedData.h"
+#include "NamedSendable.h"
 #include "WPIErrors.h"
+#include "networktables/NetworkTable.h"
 
-SmartDashboard *SmartDashboard::_instance = NULL;
+ITable* SmartDashboard::m_table = NULL;
+std::map<ITable *, Sendable *> SmartDashboard::m_tablesToData;
 
-/**
- * The {@link SmartDashboard} class is the bridge between robot programs and the SmartDashboard on the
- * laptop.
- *
- * <p>When a value is put into the SmartDashboard here, it pops up on the SmartDashboard on the laptop.
- * Users can put values into and get values from the SmartDashboard</p>
- */
-SmartDashboard::SmartDashboard()
-{
-	AddToSingletonList();
+void SmartDashboard::init(){
 	m_table = NetworkTable::GetTable("SmartDashboard");
-
-	nUsageReporting::report(nUsageReporting::kResourceType_SmartDashboard, nUsageReporting::kSmartDashboard_Instance);
 }
 
-SmartDashboard::~SmartDashboard()
-{
-}
-
-/**
- * Get the one and only {@link SmartDashboard} object
- * @return pointer to the {@link SmartDashboard}
- */
-SmartDashboard *SmartDashboard::GetInstance()
-{
-	if (_instance == NULL)
-	{
-		_instance = new SmartDashboard();
-	}
-	return _instance;
-}
-
+//TODO usage reporting
 
 /**
  * Maps the specified key to the specified value in this table.
@@ -54,23 +27,17 @@
  * @param keyName the key
  * @param value the value
  */
-void SmartDashboard::PutData(const char *keyName, SmartDashboardData *value)
+void SmartDashboard::PutData(std::string key, Sendable *data)
 {
-	if (keyName == NULL)
+	if (data == NULL)
 	{
-		wpi_setWPIErrorWithContext(NullParameter, "keyName");
+		//TODO wpi_setWPIErrorWithContext(NullParameter, "value");
 		return;
 	}
-	if (value == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "value");
-		return;
-	}
-	NetworkTable *type = new NetworkTable();
-	type->PutString("~TYPE~", value->GetType());
-	type->PutSubTable("Data", value->GetTable());
-	m_table->PutSubTable(keyName, type);
-	m_tablesToData[type] = value;
+    ITable* dataTable = m_table->GetSubTable(key);
+    dataTable->PutString("~TYPE~", data->GetSmartDashboardType());
+    data->InitTable(dataTable);
+    m_tablesToData[dataTable] = data;
 }
 
 /**
@@ -79,14 +46,14 @@
  * The value can be retrieved by calling the get method with a key that is equal to the original key.
  * @param value the value
  */
-void SmartDashboard::PutData(SmartDashboardNamedData *value)
+void SmartDashboard::PutData(NamedSendable *value)
 {
 	if (value == NULL)
 	{
-		wpi_setWPIErrorWithContext(NullParameter, "value");
+		//TODO wpi_setWPIErrorWithContext(NullParameter, "value");
 		return;
 	}
-	PutData(value->GetName().c_str(), value);
+	PutData(value->GetName(), value);
 }
 
 /**
@@ -94,21 +61,39 @@
  * @param keyName the key
  * @return the value
  */
-SmartDashboardData *SmartDashboard::GetData(const char *keyName)
-{
-	if (keyName == NULL)
-	{
-		wpi_setWPIErrorWithContext(NullParameter, "keyName");
-		return NULL;
-	}
-	NetworkTable *subtable = m_table->GetSubTable(keyName);
-	SmartDashboardData *data = m_tablesToData[subtable];
+//TODO Sendable *SmartDashboard::GetData(std::string key)
+/*{
+	ITable* subtable = m_table->GetSubTable(keyName);
+	Sendable *data = m_tablesToData[subtable];
 	if (data == NULL)
 	{
 		wpi_setWPIErrorWithContext(SmartDashboardMissingKey, keyName);
 		return NULL;
 	}
     return data;
+}*/
+
+/**
+ * Maps the specified key to the specified complex value (such as an array) in this table.
+ * The key can not be NULL.
+ * The value can be retrieved by calling the RetrieveValue method with a key that is equal to the original key.
+ * @param keyName the key
+ * @param value the value
+ */
+void SmartDashboard::PutValue(std::string keyName, ComplexData& value)
+{
+	m_table->PutValue(keyName, value);
+}
+
+/**
+ * Retrieves the complex value (such as an array) in this table into the complex data object
+ * The key can not be NULL.
+ * @param keyName the key
+ * @param value the object to retrieve the value into
+ */
+void SmartDashboard::RetrieveValue(std::string keyName, ComplexData& value)
+{
+	m_table->RetrieveValue(keyName, value);
 }
 
 /**
@@ -118,7 +103,7 @@
  * @param keyName the key
  * @param value the value
  */
-void SmartDashboard::PutBoolean(const char *keyName, bool value)
+void SmartDashboard::PutBoolean(std::string keyName, bool value)
 {
 	m_table->PutBoolean(keyName, value);
 }
@@ -128,43 +113,20 @@
  * @param keyName the key
  * @return the value
  */
-bool SmartDashboard::GetBoolean(const char *keyName)
+bool SmartDashboard::GetBoolean(std::string keyName)
 {
 	return m_table->GetBoolean(keyName);
 }
 
 /**
-* Maps the specified key to the specified value in this table.
-* The keyName can not be NULL.
-* The value can be retrieved by calling the get method with a key that is equal to the original key.
-* @param keyName the key
-* @param value the value
-*/
-void SmartDashboard::PutInt(const char *keyName, int value)
-{
-	m_table->PutInt(keyName, value);
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-int SmartDashboard::GetInt(const char *keyName)
-{
-	return m_table->GetInt(keyName);
-}
-
-/**
  * Maps the specified key to the specified value in this table.
  * The key can not be NULL.
  * The value can be retrieved by calling the get method with a key that is equal to the original key.
  * @param keyName the key
  * @param value the value
  */
-void SmartDashboard::PutDouble(const char *keyName, double value)
-{
-	m_table->PutDouble(keyName, value);
+void SmartDashboard::PutNumber(std::string keyName, double value){
+	m_table->PutNumber(keyName, value);
 }
 
 /**
@@ -172,33 +134,9 @@
  * @param keyName the key
  * @return the value
  */
-double SmartDashboard::GetDouble(const char *keyName)
+double SmartDashboard::GetNumber(std::string keyName)
 {
-	return m_table->GetDouble(keyName);
-}
-
-/**
- * Maps the specified key to the specified value in this table.
- * Neither the key nor the value can be NULL.
- * The value can be retrieved by calling the get method with a key that is equal to the original key.
- * @param keyName the key
- * @param value the value
- */
-void SmartDashboard::PutString(const char *keyName, const char *value)
-{
-	m_table->PutString(keyName, value);
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @param value the buffer to fill with the value
- * @param valueLen the size of the buffer pointed to by value
- * @return the length of the string
- */
-int SmartDashboard::GetString(const char *keyName, char *value, int valueLen)
-{
-	return m_table->GetString(keyName, value, valueLen);
+	return m_table->GetNumber(keyName);
 }
 
 /**
@@ -216,120 +154,26 @@
 /**
  * Returns the value at the specified key.
  * @param keyName the key
+ * @param value the buffer to fill with the value
+ * @param valueLen the size of the buffer pointed to by value
+ * @return the length of the string
+ */
+int SmartDashboard::GetString(std::string keyName, char *outBuffer, unsigned int bufferLen){
+	std::string value = m_table->GetString(keyName);
+	unsigned int i;
+	for(i = 0; i<bufferLen-1&&i<value.length(); ++i)
+		outBuffer[i] = (char)value.at(i);
+	outBuffer[i] = '\0';
+	return i;
+}
+
+
+/**
+ * Returns the value at the specified key.
+ * @param keyName the key
  * @return the value
  */
 std::string SmartDashboard::GetString(std::string keyName)
 {
 	return m_table->GetString(keyName);
 }
-
-/**
- * @deprecated no longer necessary
- */
-void SmartDashboard::init()
-{
-}
-
-/**
- * Send the given byte value to the client as the field with the given name.
- * @param value The value to be displayed on the client.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutInt(const char*, int)}
- */
-int SmartDashboard::LogChar(char value, const char *name)
-{
-	GetInstance()->PutInt(name, value);
-	return 0;
-}
-
-/**
- * Send the given UTF-16 char value to the client as the field with the given name.
- * @param value The value to be displayed on the client.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutInt(const char*, int)}
- */
-int SmartDashboard::LogChar(wchar_t value, const char *name)
-{
-	GetInstance()->PutInt(name, value);
-	return 0;
-}
-
-/**
- * Sends the given int value to the client as the field with the given name.
- * @param value The value to send.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutInt(const char*, int)}
- */
-int SmartDashboard::Log(INT32 value, const char *name)
-{
-	GetInstance()->PutInt(name, value);
-	return 0;
-}
-
-/**
- * Sends the given long value to the client as the field with the given name.
- * @param value The value to send.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutDouble(const char*, double)}
- */
-int SmartDashboard::Log(INT64 value, const char *name)
-{
-	GetInstance()->PutDouble(name, value);
-	return 0;
-}
-
-/**
- * Sends the given boolean value to the client as the field with the given name.
- * @param value The value to send.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutBoolean(const char*, bool)} instead
- */
-int SmartDashboard::Log(bool value, const char *name)
-{
-	GetInstance()->PutBoolean(name, value);
-	return 0;
-}
-
-/**
- * Sends the given float value to the client as the field with the given name.
- * @param value The value to send.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutDouble(const char*, double)}
- */
-int SmartDashboard::Log(float value, const char *name)
-{
-	GetInstance()->PutDouble(name, value);
-	return 0;
-}
-
-/**
- * Sends the given double value to the client as the field with the given name.
- * @param value The value to send.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutDouble(const char*, double)}
- */
-int SmartDashboard::Log(double value, const char *name)
-{
-	GetInstance()->PutDouble(name, value);
-	return 0;
-}
-
-/**
- * Sends the given string value to the client as the field with the given name.
- * @param value The value to send. This may be at most 63 characters in length.
- * @param name The name of the field.
- * @return An integer status code.
- * @deprecated use {@link SmartDashboard#PutString(const char*, const char*)}
- */
-int SmartDashboard::Log(const char* value, const char *name)
-{
-	GetInstance()->PutString(name, value);
-	return 0;
-}
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h
index 38f1f95..3fae9d4 100644
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h
+++ b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h
@@ -10,54 +10,45 @@
 #include "SensorBase.h"
 #include <map>
 #include <string>
+#include "SmartDashboard/Sendable.h"
+#include "SmartDashboard/NamedSendable.h"
+#include "tables/ITable.h"
 
-class NetworkTable;
-class SmartDashboardData;
-class SmartDashboardNamedData;
 
 class SmartDashboard : public SensorBase
 {
 public:
-	static SmartDashboard *GetInstance();
-
-	void PutData(const char *keyName, SmartDashboardData *value);
-	void PutData(SmartDashboardNamedData *value);
-	SmartDashboardData* GetData(const char *keyName);
-	void PutBoolean(const char *keyName, bool value);
-	bool GetBoolean(const char *keyName);
-	void PutInt(const char *keyName, int value);
-	int GetInt(const char *keyName);
-	void PutDouble(const char *keyName, double value);
-	double GetDouble(const char *keyName);
-	void PutString(const char *keyName, const char *value);
-	int GetString(const char *keyName, char *value, int valueLen);
-	std::string GetString(std::string keyName);
-	void PutString(std::string keyName, std::string value);
-
-	void init();
-	static int LogChar(char value, const char *name);
-	static int LogChar(wchar_t value, const char *name);
-	static int Log(INT32 value, const char *name);
-	static int Log(INT64 value, const char *name);
-	static int Log(bool value, const char *name);
-	static int Log(float value, const char *name);
-	static int Log(double value, const char *name);
-	static int Log(const char *value, const char *name);
-
+	static void init();
+	
+	static void PutData(std::string key, Sendable *data);
+	static void PutData(NamedSendable *value);
+	//static Sendable* GetData(std::string keyName);
+	
+	static void PutBoolean(std::string keyName, bool value);
+	static bool GetBoolean(std::string keyName);
+	
+	static void PutNumber(std::string keyName, double value);
+	static double GetNumber(std::string keyName);
+	
+	static void PutString(std::string keyName, std::string value);
+	static int GetString(std::string keyName, char *value, unsigned int valueLen);
+	static std::string GetString(std::string keyName);
+	
+	static void PutValue(std::string keyName, ComplexData& value);
+	static void RetrieveValue(std::string keyName, ComplexData& value);
 private:
 	SmartDashboard();
 	virtual ~SmartDashboard();
 	DISALLOW_COPY_AND_ASSIGN(SmartDashboard);
 
-	static SmartDashboard *_instance;
-
 	/** The {@link NetworkTable} used by {@link SmartDashboard} */
-	NetworkTable *m_table;
+	static ITable* m_table;
+	
 	/** 
 	 * A map linking tables in the SmartDashboard to the {@link SmartDashboardData} objects
 	 * they came from.
 	 */
-	std::map<NetworkTable *, SmartDashboardData *> m_tablesToData;
+	static std::map<ITable *, Sendable *> m_tablesToData;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardData.h b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardData.h
deleted file mode 100644
index 4fe43a7..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardData.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __SMART_DASHBOARD_DATA__
-#define __SMART_DASHBOARD_DATA__
-
-#include <string>
-
-class NetworkTable;
-
-class SmartDashboardData
-{
-public:
-	virtual std::string GetType() = 0;
-	virtual NetworkTable *GetTable() = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardNamedData.h b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardNamedData.h
deleted file mode 100644
index c0c1531..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboardNamedData.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.							  */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __SMART_DASHBOARD_NAMED_DATA__
-#define __SMART_DASHBOARD_NAMED_DATA__
-
-#include "SmartDashboard/SmartDashboardData.h"
-
-class SmartDashboardNamedData : public SmartDashboardData
-{
-public:
-	virtual std::string GetName() = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Solenoid.cpp b/aos/externals/WPILib/WPILib/Solenoid.cpp
index 4c7307c..35813af 100644
--- a/aos/externals/WPILib/WPILib/Solenoid.cpp
+++ b/aos/externals/WPILib/WPILib/Solenoid.cpp
@@ -7,6 +7,7 @@
 #include "Solenoid.h"
 #include "NetworkCommunication/UsageReporting.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 /**
  * Common function to implement constructor behavior.
@@ -35,6 +36,7 @@
 		return;
 	}
 
+	LiveWindow::GetInstance()->AddActuator("Solenoid", m_moduleNumber, m_channel, this);
 	nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_channel, m_moduleNumber - 1);
 }
 
@@ -99,3 +101,38 @@
 	UINT8 value = GetAll() & ( 1 << (m_channel - 1));
 	return (value != 0);
 }
+
+
+void Solenoid::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	Set(value.b);
+}
+
+void Solenoid::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutBoolean("Value", Get());
+	}
+}
+
+void Solenoid::StartLiveWindowMode() {
+	Set(false);
+	m_table->AddTableListener("Value", this, true);
+}
+
+void Solenoid::StopLiveWindowMode() {
+	Set(false);
+	m_table->RemoveTableListener(this);
+}
+
+std::string Solenoid::GetSmartDashboardType() {
+	return "Solenoid";
+}
+
+void Solenoid::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Solenoid::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Solenoid.h b/aos/externals/WPILib/WPILib/Solenoid.h
index b0ea4fd..6d535c6 100644
--- a/aos/externals/WPILib/WPILib/Solenoid.h
+++ b/aos/externals/WPILib/WPILib/Solenoid.h
@@ -8,6 +8,9 @@
 #define SOLENOID_H_
 
 #include "SolenoidBase.h"
+#include "LiveWindow/LiveWindowSendable.h"
+#include "tables/ITableListener.h"
+
 
 /**
  * Solenoid class for running high voltage Digital Output (9472 module).
@@ -15,18 +18,29 @@
  * The Solenoid class is typically used for pneumatics solenoids, but could be used
  * for any device within the current spec of the 9472 module.
  */
-class Solenoid : public SolenoidBase {
+class Solenoid : public SolenoidBase, public LiveWindowSendable, public ITableListener {
 public:
 	explicit Solenoid(UINT32 channel);
 	Solenoid(UINT8 moduleNumber, UINT32 channel);
 	virtual ~Solenoid();
 	virtual void Set(bool on);
 	virtual bool Get();
+	
+void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+
 
 private:
 	void InitSolenoid();
 
 	UINT32 m_channel; ///< The channel on the module to control.
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/SolenoidBase.cpp b/aos/externals/WPILib/WPILib/SolenoidBase.cpp
index 4be4e18..cc1a2c4 100644
--- a/aos/externals/WPILib/WPILib/SolenoidBase.cpp
+++ b/aos/externals/WPILib/WPILib/SolenoidBase.cpp
@@ -7,7 +7,7 @@
 #include "SolenoidBase.h"
 
 // Needs to be global since the protected resource spans all Solenoid objects.
-Semaphore SolenoidBase::m_semaphore;
+ReentrantSemaphore SolenoidBase::m_semaphore;
 Resource *SolenoidBase::m_allocated = NULL;
 
 tSolenoid *SolenoidBase::m_fpgaSolenoidModule = NULL;
diff --git a/aos/externals/WPILib/WPILib/SolenoidBase.h b/aos/externals/WPILib/WPILib/SolenoidBase.h
index ddfb958..a7a67a6 100644
--- a/aos/externals/WPILib/WPILib/SolenoidBase.h
+++ b/aos/externals/WPILib/WPILib/SolenoidBase.h
@@ -32,7 +32,7 @@
 private:
 	static tSolenoid *m_fpgaSolenoidModule; ///< FPGA Solenoid Module object.
 	static UINT32 m_refCount; ///< Reference count for the chip object.
-	static Semaphore m_semaphore;
+	static ReentrantSemaphore m_semaphore;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/SpeedController.h b/aos/externals/WPILib/WPILib/SpeedController.h
index c5bba38..7fc1732 100644
--- a/aos/externals/WPILib/WPILib/SpeedController.h
+++ b/aos/externals/WPILib/WPILib/SpeedController.h
@@ -8,11 +8,12 @@
 #define SPEED_CONTROLLER_H
 
 #include <vxWorks.h>
+#include "PIDOutput.h"
 
 /**
  * Interface for speed controlling devices.
  */
-class SpeedController
+class SpeedController : public PIDOutput
 {
 public:
 	virtual ~SpeedController() {};
diff --git a/aos/externals/WPILib/WPILib/Synchronized.cpp b/aos/externals/WPILib/WPILib/Synchronized.cpp
index 962caf0..eb17318 100644
--- a/aos/externals/WPILib/WPILib/Synchronized.cpp
+++ b/aos/externals/WPILib/WPILib/Synchronized.cpp
@@ -7,57 +7,6 @@
 #include "Synchronized.h"
 
 /**
- * Semaphore class deals with low-level vxworks semaphores.
- * The Semaphore class is very useful for static variables because it takes care of creating and
- * deleting the raw vxworks system semaphore at load and unload time.
- * This constructor will create the semaphore with semBCreate(SEM_Q_PRIORITY, SEM_FULL).
- */
-Semaphore::Semaphore()
-{
-	m_semaphore = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
-}
-/**
- * Semaphore destructor.
- * This destructor deletes the semaphore ensuring that the code does not leak vxworks system resources.
- */
-Semaphore::~Semaphore()
-{
-	semDelete(m_semaphore);
-}
-/**
- * Retrieve the raw vxworks semaphore.
- */
-SEM_ID Semaphore::get()
-{
-	return m_semaphore;
-}
-
-/**
- * Take the semaphore.
- *
- * Taking the semaphore is also called locking. If the semaphore is not
- * currently taken, it will block until it is given.
- *
- * @return 0 for success and -1 for error. If -1, the error will be in errno.
- */
-int Semaphore::Take()
-{
-	return semTake(m_semaphore, WAIT_FOREVER);
-}
-/**
- * Give the semaphore.
- *
- * Giving the semaphore is also called unlocking. If another task is currently
- * waiting to take the semaphore, it will succeed.
- *
- * @return 0 for success and -1 for error. If -1, the error will be in errno.
- */
-int Semaphore::Give()
-{
-	return semGive(m_semaphore);
-}
-
-/**
  * Synchronized class deals with critical regions.
  * Declare a Synchronized object at the beginning of a block. That will take the semaphore.
  * When the code exits from the block it will call the destructor which will give the semaphore.
@@ -70,16 +19,15 @@
 	m_semaphore = semaphore;
 	semTake(m_semaphore, WAIT_FOREVER);
 }
-Synchronized::Synchronized(Semaphore &semaphore)
+
+Synchronized::Synchronized(ReentrantSemaphore& semaphore)
 {
-	m_semaphore = semaphore.get();
+	m_semaphore = semaphore.m_semaphore;
 	semTake(m_semaphore, WAIT_FOREVER);
 }
 
 /**
- * Synchronized destructor.
- * This destructor frees the semaphore ensuring that the resource is freed for the block
- * containing the Synchronized object.
+ * This destructor unlocks the semaphore.
  */
 Synchronized::~Synchronized()
 {
diff --git a/aos/externals/WPILib/WPILib/Synchronized.h b/aos/externals/WPILib/WPILib/Synchronized.h
index f70557c..28cfbc3 100644
--- a/aos/externals/WPILib/WPILib/Synchronized.h
+++ b/aos/externals/WPILib/WPILib/Synchronized.h
@@ -17,47 +17,77 @@
 class Synchronized;
 
 /**
- * Wrap a raw vxworks semaphore (SEM_ID).
- * This class wraps a raw vxworks semaphore so that it is created and destroyed
- * with C++ constructors and destructors.
+ * Wrap a vxWorks semaphore (SEM_ID) for easier use in C++. For a static
+ * instance, the constructor runs at program load time before main() can spawn
+ * any tasks. Use that to fix race conditions in setup code.
+ *
+ * This uses a semM semaphore which is "reentrant" in the sense that the owning
+ * task can "take" the semaphore more than once. It will need to "give" the
+ * semaphore the same number of times to unlock it.
+ *
  * This class is safe to use in static variables because it does not depend on
  * any other C++ static constructors or destructors.
  */
-class Semaphore
+class ReentrantSemaphore
 {
 public:
-	Semaphore();
-	~Semaphore();
-	int Take();
-	int Give();
+	explicit ReentrantSemaphore() {
+		m_semaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE);
+	}
+	~ReentrantSemaphore() {
+		semDelete(m_semaphore);
+	}
+
+	/**
+	 * Lock the semaphore, blocking until it's available.
+	 * @return 0 for success, -1 for error. If -1, the error will be in errno.
+	 */
+	int take() {
+		return semTake(m_semaphore, WAIT_FOREVER);
+	}
+
+	/**
+	 * Unlock the semaphore.
+	 * @return 0 for success, -1 for error. If -1, the error will be in errno.
+	 */
+	int give() {
+		return semGive(m_semaphore);
+	}
+
 private:
 	SEM_ID m_semaphore;
-	SEM_ID get();
 
-	// TODO somebody should change Synchronized to not support raw SEM_IDs and
-	// instead use Take() and Give() directly so this can go away
 	friend class Synchronized;
-	DISALLOW_COPY_AND_ASSIGN(Semaphore);
+	DISALLOW_COPY_AND_ASSIGN(ReentrantSemaphore);
 };
 
 /**
  * Provide easy support for critical regions.
+ *
  * A critical region is an area of code that is always executed under mutual exclusion. Only
  * one task can be executing this code at any time. The idea is that code that manipulates data
  * that is shared between two or more tasks has to be prevented from executing at the same time
  * otherwise a race condition is possible when both tasks try to update the data. Typically
  * semaphores are used to ensure only single task access to the data.
- * Synchronized objects are a simple wrapper around semaphores to help ensure that semaphores
- * are always signaled (semGive) after a wait (semTake).
+ *
+ * Synchronized objects are a simple wrapper around semaphores to help ensure
+ * that semaphores are always unlocked (semGive) after locking (semTake).
+ *
+ * You allocate a Synchronized as a local variable, *not* on the heap. That
+ * makes it a "stack object" whose destructor runs automatically when it goes
+ * out of scope. E.g.
+ *
+ *   { Synchronized _sync(aReentrantSemaphore); ... critical region ... }
  */
 class Synchronized
 {
 public:
 	explicit Synchronized(SEM_ID);
-	explicit Synchronized(Semaphore&);
+	explicit Synchronized(ReentrantSemaphore&);
 	virtual ~Synchronized();
 private:
 	SEM_ID m_semaphore;
+
 	DISALLOW_COPY_AND_ASSIGN(Synchronized);
 };
 
diff --git a/aos/externals/WPILib/WPILib/Talon.cpp b/aos/externals/WPILib/WPILib/Talon.cpp
new file mode 100644
index 0000000..42cbecf
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/Talon.cpp
@@ -0,0 +1,104 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#include "Talon.h"
+
+#include "DigitalModule.h"
+#include "NetworkCommunication/UsageReporting.h"
+#include "LiveWindow/LiveWindow.h"
+
+/**
+ * Common initialization code called by all constructors.
+ *
+ * Note that the Talon uses the following bounds for PWM values. These values should work reasonably well for
+ * most controllers, but if users experience issues such as asymmetric behavior around
+ * the deadband or inability to saturate the controller in either direction, calibration is recommended.
+ * The calibration procedure can be found in the Talon User Manual available from CTRE.
+ * 
+ *   - 211 = full "forward"
+ *   - 133 = the "high end" of the deadband range
+ *   - 129 = center of the deadband range (off)
+ *   - 125 = the "low end" of the deadband range
+ *   - 49 = full "reverse"
+ */
+void Talon::InitTalon() {
+	// TODO: compute the appropriate values based on digital loop timing
+	SetBounds(211, 133, 129, 125, 49);
+	SetPeriodMultiplier(kPeriodMultiplier_2X);
+	SetRaw(m_centerPwm);
+
+	// TODO: Add Talon to Usage Reporting
+	nUsageReporting::report(nUsageReporting::kResourceType_Talon, GetChannel(), GetModuleNumber() - 1);
+	LiveWindow::GetInstance()->AddActuator("Talon", GetModuleNumber(), GetChannel(), this);
+}
+
+/**
+ * Constructor that assumes the default digital module.
+ * 
+ * @param channel The PWM channel on the digital module that the Talon is attached to.
+ */
+Talon::Talon(UINT32 channel) : SafePWM(channel)
+{
+	InitTalon();
+}
+
+/**
+ * Constructor that specifies the digital module.
+ * 
+ * @param moduleNumber The digital module (1 or 2).
+ * @param channel The PWM channel on the digital module that the Talon is attached to (1..10).
+ */
+Talon::Talon(UINT8 moduleNumber, UINT32 channel) : SafePWM(moduleNumber, channel)
+{
+	InitTalon();
+}
+
+Talon::~Talon()
+{
+}
+
+/**
+ * Set the PWM value.  
+ * 
+ * The PWM value is set using a range of -1.0 to 1.0, appropriately
+ * scaling the value for the FPGA.
+ * 
+ * @param speed The speed value between -1.0 and 1.0 to set.
+ * @param syncGroup Unused interface.
+ */
+void Talon::Set(float speed, UINT8 syncGroup)
+{
+	SetSpeed(speed);
+}
+
+/**
+ * Get the recently set value of the PWM.
+ * 
+ * @return The most recently set value for the PWM between -1.0 and 1.0.
+ */
+float Talon::Get()
+{
+	return GetSpeed();
+}
+
+/**
+ * Common interface for disabling a motor.
+ */
+void Talon::Disable()
+{
+	SetRaw(kPwmDisabled);
+}
+
+/**
+ * Write out the PID value as seen in the PIDOutput base object.
+ * 
+ * @param output Write out the PWM value as was found in the PIDController
+ */
+void Talon::PIDWrite(float output) 
+{
+	Set(output);
+}
+
diff --git a/aos/externals/WPILib/WPILib/Talon.h b/aos/externals/WPILib/WPILib/Talon.h
new file mode 100644
index 0000000..66f475e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/Talon.h
@@ -0,0 +1,34 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#ifndef Talon_H
+#define Talon_H
+
+#include "SafePWM.h"
+#include "SpeedController.h"
+#include "PIDOutput.h"
+
+/**
+ * CTRE Talon Speed Controller
+ */
+class Talon : public SafePWM, public SpeedController
+{
+public:
+	explicit Talon(UINT32 channel);
+	Talon(UINT8 moduleNumber, UINT32 channel);
+	virtual ~Talon();
+	virtual void Set(float value, UINT8 syncGroup=0);
+	virtual float Get();
+	virtual void Disable();
+
+	virtual void PIDWrite(float output);
+
+private:
+	void InitTalon();
+};
+
+#endif
+
diff --git a/aos/externals/WPILib/WPILib/Ultrasonic.cpp b/aos/externals/WPILib/WPILib/Ultrasonic.cpp
index 24cfb74..c896a32 100644
--- a/aos/externals/WPILib/WPILib/Ultrasonic.cpp
+++ b/aos/externals/WPILib/WPILib/Ultrasonic.cpp
@@ -13,6 +13,7 @@
 #include "Timer.h"
 #include "Utility.h"
 #include "WPIErrors.h"
+#include "LiveWindow/LiveWindow.h"
 
 const double Ultrasonic::kPingTime;	///< Time (sec) for the ping trigger pulse.
 const UINT32 Ultrasonic::kPriority;	///< Priority that the ultrasonic round robin task runs.
@@ -76,6 +77,7 @@
 	static int instances = 0;
 	instances++;
 	nUsageReporting::report(nUsageReporting::kResourceType_Ultrasonic, instances);
+	LiveWindow::GetInstance()->AddSensor("Ultrasonic", m_echoChannel->GetModuleForRouting(), m_echoChannel->GetChannel(), this);
 }
 
 /**
@@ -328,3 +330,31 @@
 {
 	return m_units;
 }
+
+void Ultrasonic::UpdateTable() {
+	if (m_table != NULL) {
+		m_table->PutNumber("Value", GetRangeInches());
+	}
+}
+
+void Ultrasonic::StartLiveWindowMode() {
+	
+}
+
+void Ultrasonic::StopLiveWindowMode() {
+	
+}
+
+std::string Ultrasonic::GetSmartDashboardType() {
+	return "Ultrasonic";
+}
+
+void Ultrasonic::InitTable(ITable *subTable) {
+	m_table = subTable;
+	UpdateTable();
+}
+
+ITable * Ultrasonic::GetTable() {
+	return m_table;
+}
+
diff --git a/aos/externals/WPILib/WPILib/Ultrasonic.h b/aos/externals/WPILib/WPILib/Ultrasonic.h
index 865e601..08a4788 100644
--- a/aos/externals/WPILib/WPILib/Ultrasonic.h
+++ b/aos/externals/WPILib/WPILib/Ultrasonic.h
@@ -10,6 +10,7 @@
 #include "SensorBase.h"
 #include "Task.h"
 #include "PIDSource.h"
+#include "LiveWindow/LiveWindowSendable.h"
 
 class Counter;
 class DigitalInput;
@@ -25,7 +26,7 @@
  * the echo is received. The time that the line is high determines the round trip distance
  * (time of flight).
  */
-class Ultrasonic: public SensorBase, public PIDSource
+class Ultrasonic: public SensorBase, public PIDSource, public LiveWindowSendable
 {
 public:
 	typedef enum {
@@ -52,6 +53,13 @@
 	void SetDistanceUnits(DistanceUnit units);
 	DistanceUnit GetDistanceUnits();
 
+	void UpdateTable();
+	void StartLiveWindowMode();
+	void StopLiveWindowMode();
+	std::string GetSmartDashboardType();
+	void InitTable(ITable *subTable);
+	ITable * GetTable();
+
 private:
 	void Initialize();
 
@@ -73,8 +81,9 @@
 	bool m_enabled;
 	Counter *m_counter;
 	Ultrasonic *m_nextSensor;
-	
 	DistanceUnit m_units;
+	
+	ITable *m_table;
 };
 
 #endif
diff --git a/aos/externals/WPILib/WPILib/Victor.cpp b/aos/externals/WPILib/WPILib/Victor.cpp
index 4dc71ed..68c649c 100644
--- a/aos/externals/WPILib/WPILib/Victor.cpp
+++ b/aos/externals/WPILib/WPILib/Victor.cpp
@@ -8,30 +8,30 @@
 
 #include "DigitalModule.h"
 #include "NetworkCommunication/UsageReporting.h"
+#include "LiveWindow/LiveWindow.h"
 
 /**
  * Common initialization code called by all constructors.
- * 
+ *
  * Note that the Victor uses the following bounds for PWM values.  These values were determined
- * empirically through experimentation during the 2008 beta testing of the new control system.
- * Testing during the beta period revealed a significant amount of variation between Victors.
- * The values below are chosen to ensure that teams using the default values should be able to
- * get "full power" with the maximum and minimum values.  For better performance, teams may wish
- * to measure these values on their own Victors and set the bounds to the particular values
- * measured for the actual Victors they were be using. 
- *   - 210 = full "forward"
- *   - 138 = the "high end" of the deadband range
- *   - 132 = center of the deadband range (off)
- *   - 126 = the "low end" of the deadband range
+ * empirically and optimized for the Victor 888. These values should work reasonably well for
+ * Victor 884 controllers as well but if users experience issues such as asymmetric behavior around
+ * the deadband or inability to saturate the controller in either direction, calibration is recommended.
+ * The calibration procedure can be found in the Victor 884 User Manual available from IFI.
+ * 
+ *   - 206 = full "forward"
+ *   - 131 = the "high end" of the deadband range
+ *   - 128 = center of the deadband range (off)
+ *   - 125 = the "low end" of the deadband range
  *   - 56 = full "reverse"
  */
-void Victor::InitVictor()
-{
+void Victor::InitVictor() {
 	// TODO: compute the appropriate values based on digital loop timing
-	SetBounds(210, 138, 132, 126, 56);
+	SetBounds(206, 131, 128, 125, 56);
 	SetPeriodMultiplier(kPeriodMultiplier_2X);
 	SetRaw(m_centerPwm);
 
+	LiveWindow::GetInstance()->AddActuator("Victor", GetModuleNumber(), GetChannel(), this);
 	nUsageReporting::report(nUsageReporting::kResourceType_Victor, GetChannel(), GetModuleNumber() - 1);
 }
 
diff --git a/aos/externals/WPILib/WPILib/Victor.h b/aos/externals/WPILib/WPILib/Victor.h
index 1821631..6aab0a9 100644
--- a/aos/externals/WPILib/WPILib/Victor.h
+++ b/aos/externals/WPILib/WPILib/Victor.h
@@ -14,7 +14,7 @@
 /**
  * IFI Victor Speed Controller
  */
-class Victor : public SafePWM, public SpeedController, public PIDOutput
+class Victor : public SafePWM, public SpeedController
 {
 public:
 	explicit Victor(UINT32 channel);
diff --git a/aos/externals/WPILib/WPILib/WPILib.h b/aos/externals/WPILib/WPILib/WPILib.h
index b1082cc..b6e9329 100644
--- a/aos/externals/WPILib/WPILib/WPILib.h
+++ b/aos/externals/WPILib/WPILib/WPILib.h
@@ -51,6 +51,7 @@
 #include "GenericHID.h"
 #include "Gyro.h"
 #include "HiTechnicCompass.h"
+#include "HiTechnicColorSensor.h"
 #include "I2C.h"
 #include "IterativeRobot.h"
 #include "InterruptableSensorBase.h"
@@ -58,7 +59,6 @@
 #include "Joystick.h"
 #include "Kinect.h"
 #include "KinectStick.h"
-#include "NetworkTables/NetworkTable.h"
 #include "Notifier.h"
 #include "PIDController.h"
 #include "PIDOutput.h"
@@ -74,13 +74,12 @@
 #include "Servo.h"
 #include "SimpleRobot.h"
 #include "SmartDashboard/SendableChooser.h"
-#include "SmartDashboard/SendableGyro.h"
-#include "SmartDashboard/SendablePIDController.h"
 #include "SmartDashboard/SmartDashboard.h"
 #include "Solenoid.h"
 #include "SpeedController.h"
 #include "SPI.h"
 #include "Synchronized.h"
+#include "Talon.h"
 #include "Task.h"
 #include "Timer.h"
 #include "Ultrasonic.h"
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp
new file mode 100644
index 0000000..36ba63d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp
@@ -0,0 +1,305 @@
+#include <map>
+#include "networktables/NetworkTable.h"
+#include <string>
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/thread/DefaultThreadManager.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "networktables2/util/StringCache.h"
+#include "networktables/NetworkTableProvider.h"
+#include "networktables/NetworkTableMode.h"
+#include "Synchronized.h"
+#include "tables/TableKeyNotDefinedException.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+#include "tables/ITableListener.h"
+#include "networktables/NetworkTableConnectionListenerAdapter.h"
+#include "networktables/NetworkTableKeyListenerAdapter.h"
+#include "networktables/NetworkTableListenerAdapter.h"
+#include "networktables/NetworkTableSubListenerAdapter.h"
+
+
+const char NetworkTable::PATH_SEPARATOR_CHAR = '/';
+const std::string NetworkTable::PATH_SEPARATOR("/");
+const int NetworkTable::DEFAULT_PORT = 1735;
+
+DefaultThreadManager NetworkTable::threadManager;
+NetworkTableProvider* NetworkTable::staticProvider = NULL;
+NetworkTableMode* NetworkTable::mode = &NetworkTableMode::Server;
+int NetworkTable::port = DEFAULT_PORT;
+std::string NetworkTable::ipAddress;
+ReentrantSemaphore NetworkTable::STATIC_LOCK;
+
+
+
+
+
+
+void NetworkTable::CheckInit(){
+	{ 
+		Synchronized sync(STATIC_LOCK);
+		if(staticProvider!=NULL)
+			throw new IllegalStateException("Network tables has already been initialized");
+	}
+}
+
+void NetworkTable::Initialize() {
+	CheckInit();
+	staticProvider = new NetworkTableProvider(*(mode->CreateNode(ipAddress.c_str(), port, threadManager)));
+}
+
+void NetworkTable::SetTableProvider(NetworkTableProvider* provider){
+	CheckInit();
+	staticProvider = provider;
+}
+
+void NetworkTable::SetClientMode(){
+	CheckInit();
+	mode = &NetworkTableMode::Server;
+}
+
+void NetworkTable::SetServerMode(){
+	CheckInit();
+	mode = &NetworkTableMode::Server;
+}
+
+void NetworkTable::SetTeam(int team){
+	char tmp[30];
+	sprintf(tmp, "%d.%d.%d.%d\n", 10, team/100, team%100, 2);
+	SetIPAddress(tmp);
+}
+
+void NetworkTable::SetIPAddress(const char* address){
+	CheckInit();
+	ipAddress = address;
+}
+
+NetworkTable* NetworkTable::GetTable(std::string key) {
+	if(staticProvider==NULL){
+		Initialize();
+	}
+	std::string tmp(PATH_SEPARATOR);
+	tmp+=key;
+	return (NetworkTable*)staticProvider->GetTable(tmp);
+}
+
+
+
+NetworkTable::NetworkTable(std::string _path, NetworkTableProvider& _provider) :
+		path(_path), entryCache(_path), absoluteKeyCache(_path), provider(_provider), node(provider.GetNode()) {
+}
+NetworkTable::~NetworkTable(){
+}
+
+bool NetworkTable::IsConnected() {
+	return node.IsConnected();
+}
+
+bool NetworkTable::IsServer() {
+	return node.IsServer();
+}
+
+
+void NetworkTable::AddConnectionListener(IRemoteConnectionListener* listener, bool immediateNotify) {
+	map<IRemoteConnectionListener*, NetworkTableConnectionListenerAdapter*>::iterator itr = connectionListenerMap.find(listener);
+	if(itr != connectionListenerMap.end()){
+		throw IllegalStateException("Cannot add the same listener twice");
+	}
+	else{
+		NetworkTableConnectionListenerAdapter* adapter = new NetworkTableConnectionListenerAdapter(this, listener);
+		connectionListenerMap[listener] = adapter;
+		node.AddConnectionListener(adapter, immediateNotify);
+	}
+}
+
+void NetworkTable::RemoveConnectionListener(IRemoteConnectionListener* listener) {
+	map<IRemoteConnectionListener*, NetworkTableConnectionListenerAdapter*>::iterator itr = connectionListenerMap.find(listener);
+	if(itr != connectionListenerMap.end()){
+		node.RemoveConnectionListener(itr->second);
+		delete itr->second;
+		connectionListenerMap.erase(itr);
+	}
+}
+
+
+void NetworkTable::AddTableListener(ITableListener* listener) {
+	AddTableListener(listener, false);
+}
+
+void NetworkTable::AddTableListener(ITableListener* listener, bool immediateNotify) {
+	std::string tmp(path);
+	tmp+=PATH_SEPARATOR;
+	NetworkTableListenerAdapter* adapter = new NetworkTableListenerAdapter(tmp, this, listener);
+	listenerMap.insert ( pair<ITableListener*,ITableListener*>(listener, adapter) );
+	node.AddTableListener(adapter, immediateNotify);
+}
+void NetworkTable::AddTableListener(std::string key, ITableListener* listener, bool immediateNotify) {
+	NetworkTableKeyListenerAdapter* adapter = new NetworkTableKeyListenerAdapter(key, absoluteKeyCache.Get(key), this, listener);
+	listenerMap.insert ( pair<ITableListener*,ITableListener*>(listener, adapter) );
+	node.AddTableListener(adapter, immediateNotify);
+}
+void NetworkTable::AddSubTableListener(ITableListener* listener) {
+	NetworkTableSubListenerAdapter* adapter = new NetworkTableSubListenerAdapter(path, this, listener);
+	listenerMap.insert ( pair<ITableListener*,ITableListener*>(listener, adapter) );
+	node.AddTableListener(adapter, true);
+}
+
+void NetworkTable::RemoveTableListener(ITableListener* listener) {
+	multimap<ITableListener*,ITableListener*>::iterator itr;
+	pair<multimap<ITableListener*,ITableListener*>::iterator,multimap<ITableListener*,ITableListener*>::iterator> itrs = listenerMap.equal_range(listener);
+	for (itr=itrs.first; itr!=itrs.second; ++itr){
+		node.RemoveTableListener(itr->second);
+		delete itr->second;
+	}
+	listenerMap.erase(itrs.first, itrs.second);
+}
+
+NetworkTableEntry* NetworkTable::GetEntry(std::string key){
+	{ 
+		Synchronized sync(LOCK);
+		return entryCache.Get(key);
+	}
+}
+
+
+NetworkTable* NetworkTable::GetSubTable(std::string key) {
+	{ 
+		Synchronized sync(LOCK);
+		return (NetworkTable*)provider.GetTable(absoluteKeyCache.Get(key));
+	}
+}
+
+
+bool NetworkTable::ContainsKey(std::string key) {
+	return node.ContainsKey(absoluteKeyCache.Get(key));
+}
+	
+bool NetworkTable::ContainsSubTable(std::string key){
+        std::string subtablePrefix(absoluteKeyCache.Get(key));
+        subtablePrefix+=PATH_SEPARATOR;
+	std::vector<std::string>* keys = node.GetEntryStore().keys();
+	for(unsigned int i = 0; i<keys->size(); ++i){
+		if(keys->at(i).compare(0, subtablePrefix.size(), subtablePrefix)==0){
+			delete keys;
+			return true;
+		}
+	}
+	delete keys;
+	return false;
+}
+
+
+void NetworkTable::PutNumber(std::string key, double value) {
+	EntryValue eValue;
+	eValue.f = value;
+	PutValue(key, &DefaultEntryTypes::DOUBLE, eValue);
+}
+
+
+double NetworkTable::GetNumber(std::string key) {
+	return node.GetDouble(absoluteKeyCache.Get(key));
+}
+
+
+double NetworkTable::GetNumber(std::string key, double defaultValue) {
+	try {
+		return node.GetDouble(absoluteKeyCache.Get(key));
+	} catch (TableKeyNotDefinedException& e) {
+		return defaultValue;
+	}
+}
+
+
+void NetworkTable::PutString(std::string key, std::string value) {
+	EntryValue eValue;
+	eValue.ptr = &value;
+	PutValue(key, &DefaultEntryTypes::STRING, eValue);
+}
+
+
+std::string NetworkTable::GetString(std::string key) {
+	return node.GetString(absoluteKeyCache.Get(key));
+}
+
+
+std::string NetworkTable::GetString(std::string key, std::string defaultValue) {
+	try {
+		return node.GetString(absoluteKeyCache.Get(key));
+	} catch (TableKeyNotDefinedException& e) {
+		return defaultValue;
+	}
+}
+
+
+void NetworkTable::PutBoolean(std::string key, bool value) {
+	EntryValue eValue;
+	eValue.b = value;
+	PutValue(key, &DefaultEntryTypes::BOOLEAN, eValue);
+}
+
+
+bool NetworkTable::GetBoolean(std::string key) {
+	return node.GetBoolean(absoluteKeyCache.Get(key));
+}
+
+
+bool NetworkTable::GetBoolean(std::string key, bool defaultValue) {
+	try {
+		return node.GetBoolean(absoluteKeyCache.Get(key));
+	} catch (TableKeyNotDefinedException& e) {
+		return defaultValue;
+	}
+}
+
+void NetworkTable::PutValue(std::string key, NetworkTableEntryType* type, EntryValue value){
+	NetworkTableEntry* entry = entryCache.Get(key);
+	if(entry!=NULL)
+		node.PutValue(entry, value);//TODO pass type along or do some kind of type check
+	else
+		node.PutValue(absoluteKeyCache.Get(key), type, value);
+}
+
+void NetworkTable::RetrieveValue(std::string key, ComplexData& externalValue) {
+	node.retrieveValue(absoluteKeyCache.Get(key), externalValue);
+}
+
+
+void NetworkTable::PutValue(std::string key, ComplexData& value){
+	EntryValue eValue;
+	eValue.ptr = &value;
+	PutValue(key, &value.GetType(), eValue);
+}
+
+
+EntryValue NetworkTable::GetValue(std::string key) {
+	return node.GetValue(absoluteKeyCache.Get(key));
+}
+
+EntryValue NetworkTable::GetValue(std::string key, EntryValue defaultValue) {
+	try {
+		return node.GetValue(absoluteKeyCache.Get(key));
+	} catch(TableKeyNotDefinedException& e){
+		return defaultValue;
+	}
+}
+
+
+
+
+
+
+//NetworkTableKeyCache
+NetworkTableKeyCache::NetworkTableKeyCache(std::string _path):path(_path){}
+NetworkTableKeyCache::~NetworkTableKeyCache(){}
+std::string NetworkTableKeyCache::Calc(const std::string& key){
+  std::string tmp(path);
+  tmp+=NetworkTable::PATH_SEPARATOR;
+  tmp+=key;
+  return tmp;
+}
+//Entry Cache
+EntryCache::EntryCache(std::string& _path):path(_path){}
+EntryCache::~EntryCache(){}
+
+NetworkTableEntry* EntryCache::Get(std::string& key){
+	return cache[key];
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTable.h b/aos/externals/WPILib/WPILib/networktables/NetworkTable.h
new file mode 100644
index 0000000..5e32891
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTable.h
@@ -0,0 +1,337 @@
+#ifndef _NETWORKTABLE_H_
+#define _NETWORKTABLE_H_
+
+class NetworkTable;
+class NetworkTableKeyCache;
+class EntryCache;
+
+#include <map>
+#include <string>
+#include "tables/ITable.h"
+#include "tables/IRemote.h"
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "networktables2/util/StringCache.h"
+#include "networktables/NetworkTableProvider.h"
+#include "networktables/NetworkTableMode.h"
+#include "networktables2/thread/DefaultThreadManager.h"
+#include "networktables/NetworkTableConnectionListenerAdapter.h"
+#include "networktables/NetworkTableListenerAdapter.h"
+#include "tables/IRemoteConnectionListener.h"
+
+
+
+using namespace std;
+
+
+
+class NetworkTableKeyCache: public StringCache{
+private:
+	const std::string path;
+
+public: 
+	NetworkTableKeyCache(std::string path);
+	~NetworkTableKeyCache();
+
+	std::string Calc(const std::string& key);
+};
+
+
+class EntryCache {
+private:
+	map<std::string, NetworkTableEntry*> cache;
+	std::string& path;
+public:
+	EntryCache(std::string& path);
+	~EntryCache();
+	
+	NetworkTableEntry* Get(std::string& key);
+};
+
+
+
+class NetworkTable : public ITable, IRemote {
+	
+private:
+	static DefaultThreadManager threadManager;
+	static NetworkTableProvider* staticProvider;
+	static NetworkTableMode* mode;
+	static int port;
+	static std::string ipAddress;
+	static ReentrantSemaphore STATIC_LOCK;
+	
+	
+	
+	std::string path;
+	EntryCache entryCache;
+	NetworkTableKeyCache absoluteKeyCache;
+	NetworkTableProvider& provider;
+	NetworkTableNode& node;
+	ReentrantSemaphore LOCK;
+	
+	
+	map<IRemoteConnectionListener*, NetworkTableConnectionListenerAdapter*> connectionListenerMap;
+	multimap<ITableListener*, ITableListener*> listenerMap;
+	
+	static void CheckInit();
+	
+	NetworkTableEntry* GetEntry(std::string key);
+	
+public:
+
+	static const char PATH_SEPARATOR_CHAR;
+	/**
+	 * The path separator for sub-tables and keys
+	 * 
+	 */
+	static const std::string PATH_SEPARATOR;
+	/**
+	 * The default port that network tables operates on
+	 */
+	static const int DEFAULT_PORT;
+	
+	/**
+	 * @throws IOException
+	 */
+	static void Initialize();
+	
+	/**
+	 * set the table provider for static network tables methods
+	 * This must be called before getTable
+	 */
+	static void SetTableProvider(NetworkTableProvider* provider);
+	
+	/**
+	 * set that network tables should be a client
+	 * This must be called before initalize or GetTable
+	 */
+	static void SetClientMode();
+	
+	/**
+	 * set that network tables should be a server
+	 * This must be called before initalize or GetTable
+	 */
+	static void SetServerMode();
+	
+	/**
+	 * set the team the robot is configured for (this will set the ip address that network tables will connect to in client mode)
+	 * This must be called before initalize or GetTable
+	 * @param team the team number
+	 */
+	static void SetTeam(int team);
+	/**
+	 * @param address the adress that network tables will connect to in client mode
+	 */
+	static void SetIPAddress(const char* address);
+	/**
+	 * Gets the table with the specified key. If the table does not exist, a new table will be created.<br>
+	 * This will automatically initialize network tables if it has not been already
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the network table requested
+	 */
+	static NetworkTable* GetTable(std::string key);
+	
+
+	NetworkTable(std::string path, NetworkTableProvider& provider);
+	virtual ~NetworkTable();
+	
+	bool IsConnected();
+
+	bool IsServer();
+	
+	
+	
+	
+	
+	
+	
+	void AddConnectionListener(IRemoteConnectionListener* listener, bool immediateNotify);
+
+	void RemoveConnectionListener(IRemoteConnectionListener* listener);
+	
+
+	void AddTableListener(ITableListener* listener);
+
+	
+	void AddTableListener(ITableListener* listener, bool immediateNotify);
+	void AddTableListener(std::string key, ITableListener* listener, bool immediateNotify);
+	void AddSubTableListener(ITableListener* listener);
+
+	void RemoveTableListener(ITableListener* listener);
+	
+	
+
+	/**
+	 * Returns the table at the specified key. If there is no table at the
+	 * specified key, it will create a new table
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the networktable to be returned
+	 */
+	NetworkTable* GetSubTable(std::string key);
+
+
+	/**
+	 * Checks the table and tells if it contains the specified key
+	 * 
+	 * @param key
+	 *            the key to be checked
+	 */
+	bool ContainsKey(std::string key);
+        
+	bool ContainsSubTable(std::string key);
+
+	/**
+	 * Maps the specified key to the specified value in this table. The key can
+	 * not be null. The value can be retrieved by calling the get method with a
+	 * key that is equal to the original key.
+	 * 
+	 * @param key
+	 *            the key
+	 * @param value
+	 *            the value
+	 */
+	void PutNumber(std::string key, double value);
+
+	/**
+	 * Returns the key that the name maps to.
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the key
+	 * @throws TableKeyNotDefinedException
+	 *             if the specified key is null
+	 */
+	double GetNumber(std::string key);
+
+	/**
+	 * Returns the key that the name maps to. If the key is null, it will return
+	 * the default value
+	 * 
+	 * @param key
+	 *            the key name
+	 * @param defaultValue
+	 *            the default value if the key is null
+	 * @return the key
+	 */
+	double GetNumber(std::string key, double defaultValue);
+
+	/**
+	 * Maps the specified key to the specified value in this table. The key can
+	 * not be null. The value can be retrieved by calling the get method with a
+	 * key that is equal to the original key.
+	 * 
+	 * @param key
+	 *            the key
+	 * @param value
+	 *            the value
+	 */
+	void PutString(std::string key, std::string value);
+
+	/**
+	 * Returns the key that the name maps to.
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the key
+	 * @throws TableKeyNotDefinedException
+	 *             if the specified key is null
+	 */
+	std::string GetString(std::string key);
+
+	/**
+	 * Returns the key that the name maps to. If the key is null, it will return
+	 * the default value
+	 * 
+	 * @param key
+	 *            the key name
+	 * @param defaultValue
+	 *            the default value if the key is null
+	 * @return the key
+	 */
+	std::string GetString(std::string key, std::string defaultValue);
+
+	/**
+	 * Maps the specified key to the specified value in this table. The key can
+	 * not be null. The value can be retrieved by calling the get method with a
+	 * key that is equal to the original key.
+	 * 
+	 * @param key
+	 *            the key
+	 * @param value
+	 *            the value
+	 */
+	void PutBoolean(std::string key, bool value);
+
+	/**
+	 * Returns the key that the name maps to.
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the key
+	 * @throws TableKeyNotDefinedException
+	 *             if the specified key is null
+	 */
+	bool GetBoolean(std::string key);
+
+	/**
+	 * Returns the key that the name maps to. If the key is null, it will return
+	 * the default value
+	 * 
+	 * @param key
+	 *            the key name
+	 * @param defaultValue
+	 *            the default value if the key is null
+	 * @return the key
+	 */
+	bool GetBoolean(std::string key, bool defaultValue);
+	
+
+	void PutValue(std::string key, NetworkTableEntryType* type, EntryValue value);
+	
+
+    void RetrieveValue(std::string key, ComplexData& externalValue);
+        
+	/**
+	 * Maps the specified key to the specified value in this table. The key can
+	 * not be null. The value can be retrieved by calling the get method with a
+	 * key that is equal to the original key.
+	 * 
+	 * @param key the key name
+	 * @param value the value to be put
+	 */
+	void PutValue(std::string key, ComplexData& value);
+	
+	/**
+	 * Returns the key that the name maps to.
+	 * NOTE: If the value is a double, it will return a Double object,
+	 * not a primitive.  To get the primitive, use GetDouble
+	 * 
+	 * @param key
+	 *            the key name
+	 * @return the key
+	 * @throws TableKeyNotDefinedException
+	 *             if the specified key is null
+	 */
+	EntryValue GetValue(std::string key);
+	
+	/**
+	 * Returns the key that the name maps to. If the key is null, it will return
+	 * the default value
+	 * NOTE: If the value is a double, it will return a Double object,
+	 * not a primitive.  To get the primitive, use GetDouble
+	 * 
+	 * @param key
+	 *            the key name
+	 * @param defaultValue
+	 *            the default value if the key is null
+	 * @return the key
+	 */
+	 EntryValue GetValue(std::string key, EntryValue defaultValue);
+
+};
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.cpp
new file mode 100644
index 0000000..ec06980
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.cpp
@@ -0,0 +1,21 @@
+/*
+ * NetworkTableConnectionListenerAdapter.cpp
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables/NetworkTableConnectionListenerAdapter.h"
+
+
+NetworkTableConnectionListenerAdapter::NetworkTableConnectionListenerAdapter(IRemote* _targetSource, IRemoteConnectionListener* _targetListener):
+			targetSource(_targetSource), targetListener(_targetListener){}
+
+void NetworkTableConnectionListenerAdapter::Connected(IRemote* remote) {
+	targetListener->Connected(targetSource);
+}
+
+void NetworkTableConnectionListenerAdapter::Disconnected(IRemote* remote) {
+	targetListener->Disconnected(targetSource);
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.h
new file mode 100644
index 0000000..fca9046
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.h
@@ -0,0 +1,30 @@
+/*
+ * NetworkTableConnectionListenerAdapter.h
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLECONNECTIONLISTENERADAPTER_H_
+#define NETWORKTABLECONNECTIONLISTENERADAPTER_H_
+
+
+class NetworkTableConnectionListenerAdapter;
+
+#include "tables/IRemote.h"
+#include "tables/IRemoteConnectionListener.h"
+
+
+class NetworkTableConnectionListenerAdapter : public IRemoteConnectionListener{
+private:
+	IRemote* targetSource;
+	IRemoteConnectionListener* targetListener;
+
+public:
+	NetworkTableConnectionListenerAdapter(IRemote* targetSource, IRemoteConnectionListener* targetListener);
+	void Connected(IRemote* remote);
+	void Disconnected(IRemote* remote);
+};
+
+
+#endif /* NETWORKTABLECONNECTIONLISTENERADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.cpp
new file mode 100644
index 0000000..f472571
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.cpp
@@ -0,0 +1,21 @@
+/*
+ * NetworkTableKeyListenerAdapter.cpp
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables/NetworkTableKeyListenerAdapter.h"
+
+
+
+NetworkTableKeyListenerAdapter::NetworkTableKeyListenerAdapter(std::string _relativeKey, std::string _fullKey, NetworkTable* _targetSource, ITableListener* _targetListener):
+		relativeKey(_relativeKey), fullKey(_fullKey), targetSource(_targetSource), targetListener(_targetListener){}
+
+NetworkTableKeyListenerAdapter::~NetworkTableKeyListenerAdapter(){}
+
+void NetworkTableKeyListenerAdapter::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
+	if(key==fullKey){
+		targetListener->ValueChanged(targetSource, relativeKey, value, isNew);
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.h
new file mode 100644
index 0000000..a7a332f
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.h
@@ -0,0 +1,34 @@
+/*
+ * NetworkTableKeyListenerAdapter.h
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLEKEYLISTENERADAPTER_H_
+#define NETWORKTABLEKEYLISTENERADAPTER_H_
+
+
+class NetworkTableKeyListenerAdapter;
+
+#include "tables/ITableListener.h"
+#include "tables/ITable.h"
+#include <string>
+#include "networktables/NetworkTable.h"
+
+
+
+class NetworkTableKeyListenerAdapter : public ITableListener{
+private:
+	std::string relativeKey;
+	std::string fullKey;
+	NetworkTable* targetSource;
+	ITableListener* targetListener;
+public:
+	NetworkTableKeyListenerAdapter(std::string relativeKey, std::string fullKey, NetworkTable* targetSource, ITableListener* targetListener);
+	virtual ~NetworkTableKeyListenerAdapter();
+    void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+};
+
+
+#endif /* NETWORKTABLEKEYLISTENERADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.cpp
new file mode 100644
index 0000000..9964e95
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.cpp
@@ -0,0 +1,26 @@
+/*
+ * NetworkTableListenerAdapter.cpp
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables/NetworkTableListenerAdapter.h"
+#include "networktables/NetworkTable.h"
+
+
+
+NetworkTableListenerAdapter::NetworkTableListenerAdapter(std::string _prefix, ITable* _targetSource, ITableListener* _targetListener) :
+	prefix(_prefix), targetSource(_targetSource), targetListener(_targetListener){}
+
+NetworkTableListenerAdapter::~NetworkTableListenerAdapter(){}
+
+void NetworkTableListenerAdapter::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {//TODO use string cache
+	if(key.compare(0,prefix.size(),prefix)==0){
+		std::string relativeKey = key.substr(prefix.length());
+		if(std::string::npos != relativeKey.find(NetworkTable::PATH_SEPARATOR_CHAR))
+			return;
+		targetListener->ValueChanged(targetSource, relativeKey, value, isNew);
+	}
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.h
new file mode 100644
index 0000000..5b0fd70
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.h
@@ -0,0 +1,30 @@
+/*
+ * NetworkTableListenerAdapter.h
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLELISTENERADAPTER_H_
+#define NETWORKTABLELISTENERADAPTER_H_
+
+class NetworkTableListenerAdapter;
+
+#include "tables/ITableListener.h"
+#include "tables/ITable.h"
+#include <string>
+
+
+class NetworkTableListenerAdapter : public ITableListener{
+private:
+	std::string prefix;
+	ITable* targetSource;
+	ITableListener* targetListener;
+public:
+	NetworkTableListenerAdapter(std::string prefix, ITable* targetSource, ITableListener* targetListener);
+	virtual ~NetworkTableListenerAdapter();
+    void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+};
+
+
+#endif /* NETWORKTABLELISTENERADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.cpp
new file mode 100644
index 0000000..75fca34
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.cpp
@@ -0,0 +1,31 @@
+/*
+ * NetworkTableMode.cpp
+ *
+ *  Created on: Oct 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include <string>
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/NetworkTableNode.h"
+#include "networktables2/server/NetworkTableServer.h"
+#include "networktables2/client/NetworkTableClient.h"
+#include "networktables2/stream/SocketServerStreamProvider.h"
+#include "networktables2/stream/SocketStreamFactory.h"
+#include "networktables/NetworkTableMode.h"
+
+
+NetworkTableServerMode NetworkTableMode::Server;
+NetworkTableClientMode NetworkTableMode::Client;
+
+NetworkTableServerMode::NetworkTableServerMode(){}
+NetworkTableClientMode::NetworkTableClientMode(){}
+
+NetworkTableNode* NetworkTableServerMode::CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager){
+	IOStreamProvider* streamProvider = new SocketServerStreamProvider(port);
+	return new NetworkTableServer(*streamProvider, *new NetworkTableEntryTypeManager(), threadManager);
+}
+NetworkTableNode* NetworkTableClientMode::CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager){
+	IOStreamFactory* streamFactory = new SocketStreamFactory(ipAddress, port);
+	return new NetworkTableClient(*streamFactory, *new NetworkTableEntryTypeManager(), threadManager);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h
new file mode 100644
index 0000000..ba22cb1
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h
@@ -0,0 +1,50 @@
+#ifndef _NETWORKTABLEMODE_H_
+#define _NETWORKTABLEMODE_H_
+
+
+class NetworkTableMode;
+class NetworkTableServerMode;
+class NetworkTableClientMode;
+
+#include <string>
+#include "networktables2/NetworkTableNode.h"
+#include "networktables2/thread/NTThreadManager.h"
+
+
+/**
+ * 
+ * Represents a different modes that network tables can be configured in
+ * 
+ * @author Mitchell
+ *
+ */
+class NetworkTableMode {
+public:
+	
+	/**
+	 * @param ipAddress the IP address configured by the user
+	 * @param port the port configured by the user
+	 * @param threadManager the thread manager that should be used for threads in the node
+	 * @return a new node that can back a network table
+	 * @throws IOException
+	 */
+	virtual NetworkTableNode* CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager) = 0;
+	
+	static NetworkTableServerMode Server;
+	static NetworkTableClientMode Client;
+};
+
+class NetworkTableServerMode : public NetworkTableMode{
+public:
+	NetworkTableServerMode();
+	virtual NetworkTableNode* CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager);
+};
+
+class NetworkTableClientMode : public NetworkTableMode{
+public:
+	NetworkTableClientMode();
+	virtual NetworkTableNode* CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager);
+};
+
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp
new file mode 100644
index 0000000..b7e94a3
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp
@@ -0,0 +1,42 @@
+#include <map>
+#include <string>
+
+#include "tables/ITableProvider.h"
+#include "networktables2/NetworkTableNode.h"
+#include "networktables/NetworkTable.h"
+
+
+#include "networktables/NetworkTableProvider.h"
+
+
+
+using namespace std;
+
+		
+
+NetworkTableProvider::NetworkTableProvider(NetworkTableNode& _node) : node(_node){}
+NetworkTableProvider::~NetworkTableProvider(){
+  while(tables.size()>0){
+    map<std::string, NetworkTable*>::iterator it = tables.begin();
+    delete it->second;
+    tables.erase(it);
+  }
+}
+
+ITable* NetworkTableProvider::GetRootTable(){
+	return GetTable("");
+}
+
+ITable* NetworkTableProvider::GetTable(std::string key){
+	if(tables.find(key) != tables.end())
+	{
+		return tables[key];
+	}
+	else
+	{
+		NetworkTable* table = new NetworkTable(key, *this);
+		tables[key] = table;
+		return table;
+	}
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.h
new file mode 100644
index 0000000..efb5615
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.h
@@ -0,0 +1,48 @@
+#ifndef _NETWORKTABLEPROVIDER_H_
+#define _NETWORKTABLEPROVIDER_H_
+
+
+class NetworkTableProvider;
+
+#include <string>
+
+#include "tables/ITableProvider.h"
+#include "networktables2/NetworkTableNode.h"
+#include "networktables/NetworkTable.h"
+
+using namespace std;
+
+class NetworkTableProvider : public ITableProvider
+{
+private:
+	NetworkTableNode& node;
+	map<std::string, NetworkTable*> tables;
+
+	/**
+	 * Create a new NetworkTableProvider for a given NetworkTableNode
+	 * @param node the node that handles the actual network table 
+	 */
+public:
+	NetworkTableProvider(NetworkTableNode& node);
+	virtual ~NetworkTableProvider();
+	
+	ITable* GetRootTable();
+
+	ITable* GetTable(std::string key);
+
+	/**
+	 * @return the Network Table node that backs the Tables returned by this provider
+	 */
+	NetworkTableNode& GetNode() {
+		return node;
+	};
+
+	/**
+	 * close the backing network table node
+	 */
+	void Close() {
+		node.Close();
+	};
+};
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.cpp
new file mode 100644
index 0000000..a2c97dd
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.cpp
@@ -0,0 +1,43 @@
+/*
+ * NetworkTableSubListenerAdapter.cpp
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables/NetworkTableSubListenerAdapter.h"
+
+
+
+	/**
+	 * Create a new adapter
+	 * @param prefix the prefix of the current table
+	 * @param targetSource the source that events passed to the target listener will appear to come from
+	 * @param targetListener the listener where events are forwarded to
+	 */
+NetworkTableSubListenerAdapter::NetworkTableSubListenerAdapter(std::string& _prefix, NetworkTable* _targetSource, ITableListener* _targetListener):
+	prefix(_prefix), targetSource(_targetSource), targetListener(_targetListener){}
+
+NetworkTableSubListenerAdapter::~NetworkTableSubListenerAdapter(){}
+
+	void NetworkTableSubListenerAdapter::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {//TODO use string cache
+            if(key.compare(0,prefix.size(),prefix)==0){
+                std::string relativeKey = key.substr(prefix.length()+1);
+                int endSubTable = -1;//TODO implement sub table listening better
+                for(unsigned int i = 0; i<relativeKey.length(); ++i){
+                    if(relativeKey.at(i)==NetworkTable::PATH_SEPARATOR_CHAR){//is sub table
+                        endSubTable = i;
+                        break;
+                    }
+                }
+                if(endSubTable!=-1){
+                    std::string subTableKey = relativeKey.substr(0, endSubTable);
+                    if(notifiedTables.find(subTableKey)==notifiedTables.end()){
+                        notifiedTables.insert(subTableKey);
+                        EntryValue eValue;
+                        eValue.ptr = targetSource->GetSubTable(subTableKey);
+                        targetListener->ValueChanged(targetSource, subTableKey, eValue, true);
+                    }
+                }
+            }
+	}
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.h
new file mode 100644
index 0000000..4796606
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.h
@@ -0,0 +1,38 @@
+/*
+ * NetworkTableSubListenerAdapter.h
+ *
+ *  Created on: Oct 17, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLESUBLISTENERADAPTER_H_
+#define NETWORKTABLESUBLISTENERADAPTER_H_
+
+
+class NetworkTableSubListenerAdapter;
+
+#include "tables/ITableListener.h"
+#include "tables/ITable.h"
+#include <string>
+#include <set>
+#include "networktables/NetworkTable.h"
+
+
+using namespace std;
+
+class NetworkTableSubListenerAdapter : public ITableListener{
+private:
+	std::string& prefix;
+	NetworkTable* targetSource;
+	ITableListener* targetListener;
+	set<std::string> notifiedTables;
+
+public:
+	NetworkTableSubListenerAdapter(std::string& prefix, NetworkTable* targetSource, ITableListener* targetListener);
+	virtual ~NetworkTableSubListenerAdapter();
+    void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
+};
+
+
+
+#endif /* NETWORKTABLESUBLISTENERADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.cpp b/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.cpp
new file mode 100644
index 0000000..86088ac
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.cpp
@@ -0,0 +1,197 @@
+/*
+ * AbstractNetworkTableEntryStore.cpp
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/AbstractNetworkTableEntryStore.h"
+#include "networktables2/TableKeyExistsWithDifferentTypeException.h"
+#include <map>
+#include <vector>
+
+
+	AbstractNetworkTableEntryStore::AbstractNetworkTableEntryStore(TableListenerManager& lstnManager): 
+			listenerManager(lstnManager){
+	}
+	
+	AbstractNetworkTableEntryStore::~AbstractNetworkTableEntryStore(){
+		LOCK.take();
+		std::map<std::string, NetworkTableEntry*>::iterator itr;
+		for(itr = namedEntries.begin(); itr != namedEntries.end();){
+		    delete itr->second;
+		    namedEntries.erase(itr++);
+		}
+	};
+	
+	/**
+	 * Get an entry based on it's name
+	 * @param name the name of the entry to look for
+	 * @return the entry or null if the entry does not exist
+	 */
+	NetworkTableEntry* AbstractNetworkTableEntryStore::GetEntry(std::string& name){
+		{ 
+			Synchronized sync(LOCK);
+			return namedEntries[name];//TODO check for not existing
+		}
+	}
+	
+	NetworkTableEntry* AbstractNetworkTableEntryStore::GetEntry(EntryId entryId){
+		{ 
+			Synchronized sync(LOCK);
+			return idEntries[entryId];//TODO check for not existing
+		}
+	}
+	
+	std::vector<std::string>* AbstractNetworkTableEntryStore::keys(){
+		{ 
+			Synchronized sync(LOCK);
+			std::vector<std::string>* keys = new std::vector<std::string>();
+			std::map<std::string, NetworkTableEntry*>::iterator itr;
+			
+			for(itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
+			{
+				std::string key = (*itr).first;
+				keys->push_back(key);
+			}
+			
+			return (keys);
+		}
+		
+	}
+	
+	/**
+	 * Remove all entries
+         * NOTE: This method should not be used with applications which cache entries which would lead to unknown results
+         * This method is for use in testing only
+	 */
+	void AbstractNetworkTableEntryStore::clearEntries(){
+		{ 
+			Synchronized sync(LOCK);
+			namedEntries.clear();
+			idEntries.clear();
+		}
+	}
+	
+	/**
+	 * clear the id's of all entries
+	 */
+	void AbstractNetworkTableEntryStore::clearIds(){
+		{ 
+			Synchronized sync(LOCK);
+			std::map<std::string, NetworkTableEntry*>::iterator itr;
+			idEntries.clear();
+			
+			for(itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
+			{
+				((NetworkTableEntry*)(*itr).second)->ClearId();
+			}
+		}
+	}
+	
+	void AbstractNetworkTableEntryStore::SetOutgoingReceiver(OutgoingEntryReceiver* receiver){
+		outgoingReceiver = receiver;
+	}
+	
+	void AbstractNetworkTableEntryStore::SetIncomingReceiver(OutgoingEntryReceiver* receiver){
+		incomingReceiver = receiver;
+	}
+	
+	/**
+	 * Stores the given value under the given name and queues it for 
+	 * transmission to the server.
+	 * 
+	 * @param name The name under which to store the given value.
+	 * @param type The type of the given value.
+	 * @param value The value to store.
+	 * @throws TableKeyExistsWithDifferentTypeException Thrown if an 
+	 *  entry already exists with the given name and is of a different type.
+	 */
+	void AbstractNetworkTableEntryStore::PutOutgoing(std::string& name, NetworkTableEntryType* type, EntryValue value){
+		{ 
+			Synchronized sync(LOCK);
+			std::map<std::string, NetworkTableEntry*>::iterator index = namedEntries.find(name);
+			NetworkTableEntry* tableEntry;
+			if(index == namedEntries.end() || namedEntries[name]==NULL)//if the name does not exist in the current entries
+			  {//TODO why doesn't find correctly detect that the entry does not exist
+				tableEntry = new NetworkTableEntry(name, type, value);
+				if(addEntry(tableEntry))
+				{
+					tableEntry->FireListener(listenerManager);
+					outgoingReceiver->offerOutgoingAssignment(tableEntry);
+				}
+			}
+			else
+			{
+				tableEntry = namedEntries[name];
+				if(tableEntry->GetType()->id != type->id){
+					throw TableKeyExistsWithDifferentTypeException(name, tableEntry->GetType());
+				}
+				
+				if(updateEntry(tableEntry, (SequenceNumber)(tableEntry->GetSequenceNumber() + 1), value)){
+					outgoingReceiver->offerOutgoingUpdate(tableEntry);
+				}
+				
+				tableEntry->FireListener(listenerManager);
+			}
+		}
+	}
+	
+	void AbstractNetworkTableEntryStore::PutOutgoing(NetworkTableEntry* tableEntry, EntryValue value){
+		{ 
+			Synchronized sync(LOCK);
+			if(updateEntry(tableEntry, (SequenceNumber)(tableEntry->GetSequenceNumber() + 1), value)){
+				outgoingReceiver->offerOutgoingUpdate(tableEntry);
+			}
+			
+			tableEntry->FireListener(listenerManager);
+		}
+	}
+	
+	void AbstractNetworkTableEntryStore::offerIncomingAssignment(NetworkTableEntry* entry){
+		{ 
+			Synchronized sync(LOCK);
+			std::map<std::string, NetworkTableEntry*>::iterator itr = namedEntries.find(entry->name);
+			NetworkTableEntry* tableEntry;
+			if(addEntry(entry)){
+				if(itr != namedEntries.end()){
+					tableEntry = namedEntries[entry->name];
+				}
+				else{
+					tableEntry = entry;
+				}
+				
+				tableEntry->FireListener(listenerManager);//if we didnt have a pointer, then the copy of the version in the list would call this method, however with the pointer we are updating the version in the list
+				incomingReceiver->offerOutgoingAssignment(tableEntry);
+			}
+			else
+			  delete entry;
+		}
+	}
+	
+	void AbstractNetworkTableEntryStore::offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber squenceNumber, EntryValue value){
+		{ 
+			Synchronized sync(LOCK);
+			if(updateEntry(entry, squenceNumber, value)){
+				entry->FireListener(listenerManager);
+				incomingReceiver->offerOutgoingUpdate(entry);
+			}
+		}
+	}
+	
+	/**
+	 * Called to say that a listener should notify the listener manager of all of the entries
+	 * @param listener
+	 * @param table 
+	 */
+	void AbstractNetworkTableEntryStore::notifyEntries(ITable* table, ITableListener* listener){
+		{ 
+			Synchronized sync(LOCK);
+			std::map<std::string, NetworkTableEntry*>::iterator itr;
+			for(itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
+			{
+				NetworkTableEntry* entry = namedEntries[(*itr).first];//this may seem odd, but its so we get the address of the list element, rather than the copy stored in the itr
+				listener->ValueChanged(table, (*itr).first, entry->GetValue(), true);
+			}
+		}
+	}
diff --git a/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.h b/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.h
new file mode 100644
index 0000000..593dc91
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.h
@@ -0,0 +1,78 @@
+/*
+ * AbstractNetworkTableEntryStore.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ABSTRACTNETWORKTABLEENTRYSTORE_H_
+#define ABSTRACTNETWORKTABLEENTRYSTORE_H_
+
+
+
+class TableListenerManager;
+class AbstractNetworkTableEntryStore;
+
+
+#include "Synchronized.h"
+#include <string>
+#include "NetworkTableEntry.h"
+#include "IncomingEntryReceiver.h"
+#include "OutgoingEntryReceiver.h"
+#include "type/NetworkTableEntryType.h"
+#include "tables/ITable.h"
+#include "tables/ITableListener.h"
+#include <map>
+#include <vector>
+
+
+
+class TableListenerManager{
+public:
+	virtual ~TableListenerManager(){}
+	virtual void FireTableListeners(std::string& name, EntryValue value, bool isNew) = 0;
+};
+
+class AbstractNetworkTableEntryStore : public IncomingEntryReceiver{
+protected:
+	std::map<EntryId,NetworkTableEntry*> idEntries;
+	std::map<std::string,NetworkTableEntry*> namedEntries;
+	TableListenerManager& listenerManager;
+
+	AbstractNetworkTableEntryStore(TableListenerManager& lstnManager);
+
+	OutgoingEntryReceiver* outgoingReceiver;
+	OutgoingEntryReceiver* incomingReceiver;
+
+
+	
+	virtual bool addEntry(NetworkTableEntry* entry) = 0;
+	virtual bool updateEntry(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value) = 0;
+	
+public:
+	virtual ~AbstractNetworkTableEntryStore();
+
+	ReentrantSemaphore LOCK;
+	NetworkTableEntry* GetEntry(EntryId entryId);
+	NetworkTableEntry* GetEntry(std::string& name);
+
+	std::vector<std::string>* keys();
+    void clearEntries();
+	void clearIds();
+
+	void SetOutgoingReceiver(OutgoingEntryReceiver* receiver);
+	void SetIncomingReceiver(OutgoingEntryReceiver* receiver);
+	
+	void PutOutgoing(std::string& name, NetworkTableEntryType* type, EntryValue value);
+	void PutOutgoing(NetworkTableEntry* tableEntry, EntryValue value);
+	
+
+	void offerIncomingAssignment(NetworkTableEntry* entry);
+	void offerIncomingUpdate(NetworkTableEntry* entry, EntryId sequenceNumber, EntryValue value);
+	
+	void notifyEntries(ITable* table, ITableListener* listener);
+
+};
+
+
+#endif /* ABSTRACTNETWORKTABLEENTRYSTORE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/FlushableOutgoingEntryReceiver.h b/aos/externals/WPILib/WPILib/networktables2/FlushableOutgoingEntryReceiver.h
new file mode 100644
index 0000000..c2acb8d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/FlushableOutgoingEntryReceiver.h
@@ -0,0 +1,25 @@
+/*
+ * FlushableOutgoingEntryReceiver.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef FLUSHABLEOUTGOINGENTRYRECEIVER_H_
+#define FLUSHABLEOUTGOINGENTRYRECEIVER_H_
+
+class FlushableOutgoingEntryReceiver;
+
+#include "OutgoingEntryReceiver.h"
+
+class FlushableOutgoingEntryReceiver : public OutgoingEntryReceiver
+{
+public:
+	virtual ~FlushableOutgoingEntryReceiver()
+	{
+	}
+	virtual void flush() = 0;
+	virtual void ensureAlive() = 0;
+};
+
+#endif /* FLUSHABLEOUTGOINGENTRYRECEIVER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/IncomingEntryReceiver.h b/aos/externals/WPILib/WPILib/networktables2/IncomingEntryReceiver.h
new file mode 100644
index 0000000..fe99e2b
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/IncomingEntryReceiver.h
@@ -0,0 +1,26 @@
+/*
+ * IncomingEntryReceiver.h
+ *
+ *  Created on: Sep 19, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef INCOMINGENTRYRECEIVER_H_
+#define INCOMINGENTRYRECEIVER_H_
+
+class IncomingEntryReceiver;
+
+#include "NetworkTableEntry.h"
+#include "tables/ITable.h"
+
+class IncomingEntryReceiver
+{
+public:
+	virtual ~IncomingEntryReceiver()
+	{
+	}
+	virtual void offerIncomingAssignment(NetworkTableEntry* entry) = 0;
+	virtual void offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber entrySequenceNumber, EntryValue value) = 0;
+};
+
+#endif /* INCOMINGENTRYRECEIVER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.cpp b/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.cpp
new file mode 100644
index 0000000..58872eb
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.cpp
@@ -0,0 +1,123 @@
+#include "networktables2/NetworkTableEntry.h"
+
+
+
+NetworkTableEntry::NetworkTableEntry(std::string& _name, NetworkTableEntryType* _type, EntryValue _value)
+  : name(_name), type(_type){
+	id = UNKNOWN_ID;
+	sequenceNumber = 0;
+	value = type->copyValue(_value);
+	m_isNew = true;
+	m_isDirty = false;
+}
+
+NetworkTableEntry::NetworkTableEntry(EntryId _id, std::string& _name, SequenceNumber _sequenceNumber, NetworkTableEntryType* _type, EntryValue _value)
+ :name(_name), type(_type){
+	id = _id;
+	sequenceNumber = _sequenceNumber;
+	value = type->copyValue(_value);
+	m_isNew = true;
+	m_isDirty = false;
+}
+
+NetworkTableEntry::~NetworkTableEntry(){
+  type->deleteValue(value);
+}
+
+EntryId NetworkTableEntry::GetId() {
+	return id;
+}
+
+EntryValue NetworkTableEntry::GetValue(){
+	return value;
+}
+
+NetworkTableEntryType* NetworkTableEntry::GetType(){
+	return type;
+}
+
+bool NetworkTableEntry::PutValue(SequenceNumber newSequenceNumber, EntryValue newValue) {
+	if( (sequenceNumber < newSequenceNumber && newSequenceNumber - sequenceNumber < HALF_OF_SEQUENCE_NUMBERS)
+			|| (sequenceNumber > newSequenceNumber && sequenceNumber - newSequenceNumber > HALF_OF_SEQUENCE_NUMBERS) ){
+	  EntryValue newValueCopy = type->copyValue(newValue);
+	  type->deleteValue(value);
+	  value = newValueCopy;
+	  sequenceNumber = newSequenceNumber;
+	  return true;
+	}
+	return false;
+}
+/**
+ * force a value and new sequence number upon an entry
+ * @param newSequenceNumber
+ * @param newValue
+ */
+void NetworkTableEntry::ForcePut(SequenceNumber newSequenceNumber, EntryValue newValue) {
+  EntryValue newValueCopy = type->copyValue(newValue);
+  type->deleteValue(value);
+  value = newValueCopy;
+  sequenceNumber = newSequenceNumber;
+}
+/**
+ * force a value and new sequence number upon an entry, Will also set the type of the entry
+ * @param newSequenceNumber
+ * @param type
+ * @param newValue
+ */
+void NetworkTableEntry::ForcePut(SequenceNumber newSequenceNumber, NetworkTableEntryType* newType, EntryValue newValue) {
+        type->deleteValue(value);
+	type = newType;
+        value = newType->copyValue(newValue);
+	sequenceNumber = newSequenceNumber;
+}
+
+
+void NetworkTableEntry::MakeDirty() {
+	m_isDirty = true;
+}
+void NetworkTableEntry::MakeClean() {
+	m_isDirty = false;
+}
+bool NetworkTableEntry::IsDirty(){
+	return m_isDirty;
+}
+
+/**
+ * Send the value of the entry over the output stream
+ * @param os
+ * @throws IOException
+ */
+void NetworkTableEntry::SendValue(DataIOStream& iostream){
+	type->sendValue(value, iostream);
+}
+
+/**
+ * @return the current sequence number of the entry
+ */
+SequenceNumber NetworkTableEntry::GetSequenceNumber() {
+	return sequenceNumber;
+}
+/**
+ * Sets the id of the entry
+ * @param id the id of the entry
+ * @throws IllegalStateException if the entry already has a known id
+ */
+void NetworkTableEntry::SetId(EntryId _id){
+	if(id!=UNKNOWN_ID)
+		throw IllegalStateException("Cannot set the Id of a table entry that already has a valid id");
+	id = _id;
+}
+/**
+ * clear the id of the entry to unknown
+ */
+void NetworkTableEntry::ClearId() {
+	id = UNKNOWN_ID;
+}
+
+void NetworkTableEntry::Send(NetworkTableConnection& connection) {
+	connection.sendEntryAssignment(*this);
+}
+void NetworkTableEntry::FireListener(TableListenerManager& listenerManager) {
+	listenerManager.FireTableListeners(name, value, m_isNew);
+	m_isNew = false;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.h b/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.h
new file mode 100644
index 0000000..d522e92
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.h
@@ -0,0 +1,81 @@
+#ifndef NETWORKTABLEENTRY_H_
+#define NETWORKTABLEENTRY_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+typedef uint16_t EntryId;
+typedef uint16_t SequenceNumber;
+class NetworkTableEntry;
+
+
+#include "connection/DataIOStream.h"
+#include "connection/NetworkTableConnection.h"
+#include "type/NetworkTableEntryType.h"
+#include "util/IllegalStateException.h"
+#include "AbstractNetworkTableEntryStore.h"
+#include <string>
+#include "tables/ITable.h"
+
+
+/**
+ * An entry in a network table
+ * 
+ * @author mwills
+ *
+ */
+class NetworkTableEntry {
+	
+
+public:
+	/**
+	 * the id that represents that an id is unknown for an entry
+	 */
+	static const EntryId UNKNOWN_ID = 0xFFFF;
+	/**
+	 * the name of the entry
+	 */
+	std::string name;
+	
+	NetworkTableEntry(std::string& name, NetworkTableEntryType* type, EntryValue value);
+	NetworkTableEntry(EntryId id, std::string& name, SequenceNumber sequenceNumber, NetworkTableEntryType* type, EntryValue value);
+	virtual ~NetworkTableEntry();
+
+	EntryId GetId();
+	EntryValue GetValue();
+	NetworkTableEntryType* GetType();
+	bool PutValue(SequenceNumber newSequenceNumber, EntryValue newValue);
+	void ForcePut(SequenceNumber newSequenceNumber, EntryValue newValue);
+	void ForcePut(SequenceNumber newSequenceNumber, NetworkTableEntryType* type, EntryValue newValue);
+	void MakeDirty();
+	void MakeClean();
+	bool IsDirty();
+	void SendValue(DataIOStream& iostream);
+	SequenceNumber GetSequenceNumber();
+	void SetId(EntryId id);
+	void ClearId();
+	void Send(NetworkTableConnection& connection);
+	void FireListener(TableListenerManager& listenerManager);
+	
+private:
+	EntryId id;
+	SequenceNumber sequenceNumber;
+	/**
+	 * the type of the entry
+	 */
+	NetworkTableEntryType* type;
+	EntryValue value;
+	volatile bool m_isNew;
+	volatile bool m_isDirty;
+
+	static const SequenceNumber HALF_OF_SEQUENCE_NUMBERS = 32768;
+
+	NetworkTableEntry& operator=(const NetworkTableEntry& other);
+};
+
+
+
+#endif /* NETWORKTABLEENTRY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/NetworkTableMessageType.h b/aos/externals/WPILib/WPILib/networktables2/NetworkTableMessageType.h
new file mode 100644
index 0000000..f54d2f0
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/NetworkTableMessageType.h
@@ -0,0 +1,43 @@
+/*
+ * NetworkTableMessageType.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLEMESSAGETYPE_H_
+#define NETWORKTABLEMESSAGETYPE_H_
+
+
+
+/**
+ * The definitions of all of the protocol message types
+ * 
+ * @author mwills
+ *
+ */
+enum NetworkTableMessageType{
+	/**
+	 * A keep alive message that the client sends
+	 */
+	KEEP_ALIVE = 0x00,
+	/**
+	 * a client hello message that a client sends
+	 */
+	CLIENT_HELLO = 0x01,
+	/**
+	 * a protocol version unsupported message that the server sends to a client
+	 */
+	PROTOCOL_VERSION_UNSUPPORTED = 0x02,
+	SERVER_HELLO_COMPLETE = 0x03,
+	/**
+	 * an entry assignment message
+	 */
+	ENTRY_ASSIGNMENT = 0x10,
+	/**
+	 * a field update message
+	 */
+	FIELD_UPDATE = 0x11,
+};
+
+#endif /* NETWORKTABLEMESSAGETYPE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.cpp b/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.cpp
new file mode 100644
index 0000000..316a61e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.cpp
@@ -0,0 +1,169 @@
+/*
+ * NetworkTableNode.cpp
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/NetworkTableNode.h"
+#include "networktables2/TableKeyExistsWithDifferentTypeException.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+#include "tables/TableKeyNotDefinedException.h"
+#include <algorithm>
+
+
+
+NetworkTableNode::NetworkTableNode(AbstractNetworkTableEntryStore& _entryStore):
+	entryStore(_entryStore){
+}
+
+NetworkTableNode::~NetworkTableNode(){}
+
+AbstractNetworkTableEntryStore& NetworkTableNode::GetEntryStore(){
+	return entryStore;
+}
+
+
+
+void NetworkTableNode::PutBoolean(std::string& name, bool value){
+	EntryValue eValue;
+	eValue.b = value;
+	PutValue(name, &DefaultEntryTypes::BOOLEAN, eValue);
+}
+bool NetworkTableNode::GetBoolean(std::string& name){
+	NetworkTableEntry* entry = entryStore.GetEntry(name);
+	if(entry==NULL)
+		throw TableKeyNotDefinedException(name);
+	return entry->GetValue().b;
+}
+
+void NetworkTableNode::PutDouble(std::string& name, double value){
+	EntryValue eValue;
+	eValue.f = value;
+	PutValue(name, &DefaultEntryTypes::DOUBLE, eValue);
+}
+double NetworkTableNode::GetDouble(std::string& name){
+	NetworkTableEntry* entry = entryStore.GetEntry(name);
+	if(entry==NULL)
+		throw TableKeyNotDefinedException(name);
+	return entry->GetValue().f;
+}
+
+void NetworkTableNode::PutString(std::string& name, std::string& value){
+	EntryValue eValue;
+	eValue.ptr = &value;
+	PutValue(name, &DefaultEntryTypes::STRING, eValue);
+}
+std::string& NetworkTableNode::GetString(std::string& name) {
+	NetworkTableEntry* entry = entryStore.GetEntry(name);
+	if(entry==NULL)
+		throw TableKeyNotDefinedException(name);
+	return *(std::string*)(entry->GetValue().ptr);
+}
+	
+void NetworkTableNode::PutComplex(std::string& name, ComplexData& value){
+	EntryValue eValue;
+	eValue.ptr = &value;
+	PutValue(name, &value.GetType(), eValue);
+}
+	
+void NetworkTableNode::retrieveValue(std::string& name, ComplexData& externalData){
+	{ 
+		Synchronized sync(entryStore.LOCK);
+		NetworkTableEntry* entry = entryStore.GetEntry(name);
+		if(entry==NULL)
+			throw TableKeyNotDefinedException(name);
+		NetworkTableEntryType* entryType = entry->GetType();
+		if(!entryType->isComplex())
+			throw TableKeyExistsWithDifferentTypeException(name, entryType, "Is not a complex data type");
+		ComplexEntryType* complexType = (ComplexEntryType*)entryType;
+		complexType->exportValue(name, entry->GetValue(), externalData);
+	}
+}
+
+
+void NetworkTableNode::PutValue(std::string& name, NetworkTableEntryType* type, EntryValue value){
+	if(type->isComplex()){
+		{ 
+			Synchronized sync(entryStore.LOCK);
+			ComplexData* complexData = (ComplexData*)value.ptr;
+			ComplexEntryType* entryType = (ComplexEntryType*)type;
+			NetworkTableEntry* entry = entryStore.GetEntry(name);
+			if(entry!=NULL)
+				entryStore.PutOutgoing(entry, entryType->internalizeValue(entry->name, *complexData, entry->GetValue()));
+			else{
+				EntryValue nullValue = {0};
+				entryStore.PutOutgoing(name, type, entryType->internalizeValue(name, *complexData, nullValue));
+			}
+		}
+	}
+	else
+		entryStore.PutOutgoing(name, type, value);
+}
+
+void NetworkTableNode::PutValue(NetworkTableEntry* entry, EntryValue value){
+	if(entry->GetType()->isComplex()){
+		{ 
+			Synchronized sync(entryStore.LOCK);
+			ComplexEntryType* entryType = (ComplexEntryType*)entry->GetType();
+			
+			entryStore.PutOutgoing(entry, entryType->internalizeValue(entry->name, *(ComplexData*)value.ptr, entry->GetValue()));
+		}
+	}
+	else
+		entryStore.PutOutgoing(entry, value);
+}
+
+EntryValue NetworkTableNode::GetValue(std::string& name){//TODO don't allow get of complex types
+	{ 
+		Synchronized sync(entryStore.LOCK);
+		NetworkTableEntry* entry = entryStore.GetEntry(name);
+		if(entry==NULL)
+			throw TableKeyNotDefinedException(name);
+		return entry->GetValue();
+	}
+}
+
+
+bool NetworkTableNode::ContainsKey(std::string& key){
+	return entryStore.GetEntry(key)!=NULL;
+}
+
+void NetworkTableNode::AddConnectionListener(IRemoteConnectionListener* listener, bool immediateNotify) {
+	remoteListeners.push_back(listener);
+	if(IsConnected())
+		listener->Connected(this);
+	else
+		listener->Disconnected(this);
+}
+void NetworkTableNode::RemoveConnectionListener(IRemoteConnectionListener* listener) {
+	std::vector<IRemoteConnectionListener*>::iterator listenerPosition = std::find(remoteListeners.begin(), remoteListeners.end(), listener);
+	if(listenerPosition!=remoteListeners.end())
+		remoteListeners.erase(listenerPosition);
+}
+void NetworkTableNode::FireConnectedEvent(){
+	for(unsigned int i = 0; i<remoteListeners.size(); ++i)
+		remoteListeners.at(i)->Connected(this);
+}
+void NetworkTableNode::FireDisconnectedEvent(){
+	for(unsigned int i = 0; i<remoteListeners.size(); ++i)
+		remoteListeners.at(i)->Disconnected(this);
+}
+
+
+void NetworkTableNode::AddTableListener(ITableListener* listener, bool immediateNotify) {
+	tableListeners.push_back(listener);
+	if(immediateNotify)
+		entryStore.notifyEntries(NULL, listener);
+}
+void NetworkTableNode::RemoveTableListener(ITableListener* listener) {
+	std::vector<ITableListener*>::iterator listenerPosition = std::find(tableListeners.begin(), tableListeners.end(), listener);
+	if(listenerPosition!=tableListeners.end())
+		tableListeners.erase(listenerPosition);
+}
+void NetworkTableNode::FireTableListeners(std::string& key, EntryValue value, bool isNew){
+	for(unsigned int i = 0; i<tableListeners.size(); ++i)
+		tableListeners.at(i)->ValueChanged(NULL, key, value, isNew);
+}
+
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.h b/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.h
new file mode 100644
index 0000000..a3bb6bf
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.h
@@ -0,0 +1,103 @@
+/*
+ * NetworkTableNode.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLENODE_H_
+#define NETWORKTABLENODE_H_
+
+
+class NetworkTableNode;
+
+#include "AbstractNetworkTableEntryStore.h"
+#include "client/ClientConnectionListenerManager.h"
+#include "type/NetworkTableEntryType.h"
+#include "type/ComplexData.h"
+#include "type/ComplexEntryType.h"
+#include "tables/IRemote.h"
+#include <string>
+#include <vector>
+
+
+/**
+ * represents a node (either a client or a server) in a network tables 2.0
+ * <br>
+ * implementers of the class must ensure that they call {@link #init(NetworkTableTransactionPool, AbstractNetworkTableEntryStore)} before calling any other methods on this class
+ * 
+ * @author Mitchell
+ *
+ */
+class NetworkTableNode : public TableListenerManager, public ClientConnectionListenerManager, public IRemote{
+
+protected:
+	AbstractNetworkTableEntryStore& entryStore;
+	NetworkTableNode(AbstractNetworkTableEntryStore& entryStore);
+	
+public:
+	/**
+	 * @return the entry store used by this node
+	 */
+	AbstractNetworkTableEntryStore& GetEntryStore();
+	virtual ~NetworkTableNode();
+
+	
+	
+	void PutBoolean(std::string& name, bool value);
+	bool GetBoolean(std::string& name);
+
+	void PutDouble(std::string& name, double value);
+	double GetDouble(std::string& name);
+
+	void PutString(std::string& name, std::string& value);
+	std::string& GetString(std::string& name);
+        
+    void PutComplex(std::string& name, ComplexData& value);
+        
+	void retrieveValue(std::string& name, ComplexData& externalData);
+	
+	/**
+	 * Put a value with a specific network table type
+	 * @param name the name of the entry to associate with the given value
+	 * @param type the type of the entry
+	 * @param value the actual value of the entry
+	 */
+	void PutValue(std::string& name, NetworkTableEntryType* type, EntryValue value);
+	void PutValue(NetworkTableEntry* entry, EntryValue value);
+	
+	EntryValue GetValue(std::string& name);
+	
+	
+	/**
+	 * @param key the key to check for existence
+	 * @return true if the table has the given key
+	 */
+	bool ContainsKey(std::string& key);
+
+	/**
+	 * close all networking activity related to this node
+	 */
+	virtual void Close() = 0;
+	
+private:
+	std::vector<IRemoteConnectionListener*> remoteListeners;
+public:
+	void AddConnectionListener(IRemoteConnectionListener* listener, bool immediateNotify);
+	void RemoveConnectionListener(IRemoteConnectionListener* listener);
+	void FireConnectedEvent();
+	void FireDisconnectedEvent();
+	
+
+private:
+	std::vector<ITableListener*> tableListeners;
+public:
+	void AddTableListener(ITableListener* listener, bool immediateNotify);
+	void RemoveTableListener(ITableListener* listener);
+	void FireTableListeners(std::string& key, EntryValue value, bool isNew);
+};
+
+
+
+
+#endif /* NETWORKTABLENODE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReceiver.h b/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReceiver.h
new file mode 100644
index 0000000..eff2daa
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReceiver.h
@@ -0,0 +1,34 @@
+/*
+ * OutgoingEntryReceiver.h
+ *
+ *  Created on: Sep 19, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef OUTGOINGENTRYRECEIVER_H_
+#define OUTGOINGENTRYRECEIVER_H_
+
+class OutgoingEntryReceiver;
+
+#include "NetworkTableEntry.h"
+
+class NetworkTableEntry;
+
+class OutgoingEntryReceiver
+{
+public:
+	virtual ~OutgoingEntryReceiver()
+	{
+	}
+	virtual void offerOutgoingAssignment(NetworkTableEntry* entry) = 0;
+	virtual void offerOutgoingUpdate(NetworkTableEntry* entry) = 0;
+};
+class OutgoingEntryReceiver_NULL_t : public OutgoingEntryReceiver {
+public:
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+};
+
+extern OutgoingEntryReceiver_NULL_t OutgoingEntryReceiver_NULL;
+
+#endif /* OUTGOINGENTRYRECEIVER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReciever.cpp b/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReciever.cpp
new file mode 100644
index 0000000..affefe3
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReciever.cpp
@@ -0,0 +1,13 @@
+/*
+ * OutgoingEntryReciever.cpp
+ *
+ *  Created on: Nov 3, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/OutgoingEntryReceiver.h"
+
+OutgoingEntryReceiver_NULL_t OutgoingEntryReceiver_NULL;
+
+void OutgoingEntryReceiver_NULL_t::offerOutgoingAssignment(NetworkTableEntry* entry){};
+void OutgoingEntryReceiver_NULL_t::offerOutgoingUpdate(NetworkTableEntry* entry){};
diff --git a/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.cpp b/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.cpp
new file mode 100644
index 0000000..f1ea5a8
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.cpp
@@ -0,0 +1,22 @@
+/*
+ * TableKeyExistsWithDifferentKeyException.cpp
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/TableKeyExistsWithDifferentTypeException.h"
+
+
+
+TableKeyExistsWithDifferentTypeException::TableKeyExistsWithDifferentTypeException(const std::string, NetworkTableEntryType* existingType) {
+	//TODO construct string this(existingKey, existingType, "");
+}
+
+TableKeyExistsWithDifferentTypeException::TableKeyExistsWithDifferentTypeException(const std::string, NetworkTableEntryType* existingType, const char* message) {
+	//TODO construct string super("Illegal put - key '" + existingKey + "' exists with type '" + existingType + "'. "+message);
+}
+
+TableKeyExistsWithDifferentTypeException::~TableKeyExistsWithDifferentTypeException() throw (){
+	//TODO delete message
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.h b/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.h
new file mode 100644
index 0000000..334ed16
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.h
@@ -0,0 +1,46 @@
+/*
+ * TableKeyExistsWithDifferentTypeException.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef TABLEKEYEXISTSWITHDIFFERENTTYPEEXCEPTION_H_
+#define TABLEKEYEXISTSWITHDIFFERENTTYPEEXCEPTION_H_
+
+
+class TableKeyExistsWithDifferentTypeException;
+
+
+#include <exception>
+#include "networktables2/type/NetworkTableEntryType.h"
+
+
+
+
+/**
+ * Throw to indicate that an attempt to put data to a table is illegal because
+ * the specified key exists with a different data type than the put data type.
+ * 
+ * @author Paul Malmsten <pmalmsten@gmail.com>
+ */
+class TableKeyExistsWithDifferentTypeException : public std::exception {
+public:
+    /**
+     * Creates a new TableKeyExistsWithDifferentTypeException
+     * 
+     * @param existingKey The name of the key which exists.
+     * @param existingType The type of the key which exists.
+     */
+    TableKeyExistsWithDifferentTypeException(const std::string existingKey, NetworkTableEntryType* existingType);
+    
+    TableKeyExistsWithDifferentTypeException(const std::string existingKey, NetworkTableEntryType* existingType, const char* message);
+
+    const char* what(){return "TableKeyExistsWithDifferentTypeException";};
+
+    virtual ~TableKeyExistsWithDifferentTypeException() throw ();
+};
+
+
+
+#endif /* TABLEKEYEXISTSWITHDIFFERENTTYPEEXCEPTION_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.cpp b/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.cpp
new file mode 100644
index 0000000..40ba0c7
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.cpp
@@ -0,0 +1,33 @@
+/*
+ * TransactionDirtier.cpp
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/TransactionDirtier.h"
+
+
+
+	TransactionDirtier::TransactionDirtier(OutgoingEntryReceiver& _continuingReceiver) : continuingReceiver(_continuingReceiver){
+	}
+
+
+
+	void TransactionDirtier::offerOutgoingAssignment(NetworkTableEntry* entry) {
+		if(entry->IsDirty())
+			return;
+		entry->MakeDirty();
+		continuingReceiver.offerOutgoingAssignment(entry);
+	}
+
+
+
+
+	void TransactionDirtier::offerOutgoingUpdate(NetworkTableEntry* entry) {
+		if(entry->IsDirty())
+			return;
+		entry->MakeDirty();
+		continuingReceiver.offerOutgoingUpdate(entry);
+	}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.h b/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.h
new file mode 100644
index 0000000..c92190f
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.h
@@ -0,0 +1,36 @@
+/*
+ * TransactionDirtier.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef TRANSACTIONDIRTIER_H_
+#define TRANSACTIONDIRTIER_H_
+
+
+class TransactionDirtier;
+
+
+#include "OutgoingEntryReceiver.h"
+
+
+
+/**
+ * A transaction receiver that marks all Table entries as dirty in the entry store. Entries will not be passed to the continuing receiver if they are already dirty
+ * 
+ * @author Mitchell
+ *
+ */
+class TransactionDirtier : public OutgoingEntryReceiver {
+private:
+	OutgoingEntryReceiver& continuingReceiver;
+	
+public:
+	TransactionDirtier(OutgoingEntryReceiver& continuingReceiver);
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+
+};
+
+#endif /* TRANSACTIONDIRTIER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/WriteManager.cpp b/aos/externals/WPILib/WPILib/networktables2/WriteManager.cpp
new file mode 100644
index 0000000..3f762bb
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/WriteManager.cpp
@@ -0,0 +1,127 @@
+/*
+ * WriteManager.cpp
+ *
+ *  Created on: Sep 25, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/WriteManager.h"
+#include "networktables2/util/System.h"
+#include <iostream>
+
+
+
+WriteManager::WriteManager(FlushableOutgoingEntryReceiver& _receiver, NTThreadManager& _threadManager, AbstractNetworkTableEntryStore& _entryStore, unsigned long _keepAliveDelay)
+	: receiver(_receiver), threadManager(_threadManager), entryStore(_entryStore), keepAliveDelay(_keepAliveDelay){
+	
+	thread = NULL;
+	lastWrite = 0;
+	
+	incomingAssignmentQueue = new std::queue<NetworkTableEntry*>();
+	incomingUpdateQueue = new std::queue<NetworkTableEntry*>();
+	outgoingAssignmentQueue = new std::queue<NetworkTableEntry*>();
+	outgoingUpdateQueue = new std::queue<NetworkTableEntry*>();
+}
+
+WriteManager::~WriteManager(){
+	transactionsLock.take();
+
+	stop();
+	
+	delete incomingAssignmentQueue;
+	delete incomingUpdateQueue;
+	delete outgoingAssignmentQueue;
+	delete outgoingUpdateQueue;
+}
+
+void WriteManager::start(){
+	if(thread!=NULL)
+		stop();
+	lastWrite = currentTimeMillis();
+	thread = threadManager.newBlockingPeriodicThread(this, "Write Manager Thread");
+}
+
+void WriteManager::stop(){
+  if(thread!=NULL){
+    thread->stop();
+    //delete thread;
+    thread = NULL;
+  }
+}
+
+
+void WriteManager::offerOutgoingAssignment(NetworkTableEntry* entry) {
+	{ 
+		Synchronized sync(transactionsLock);
+		((std::queue<NetworkTableEntry*>*)incomingAssignmentQueue)->push(entry);
+		
+		if(((std::queue<NetworkTableEntry*>*)incomingAssignmentQueue)->size()>=queueSize){
+			run();
+			writeWarning("assignment queue overflowed. decrease the rate at which you create new entries or increase the write buffer size");
+		}
+	}
+}
+
+
+void WriteManager::offerOutgoingUpdate(NetworkTableEntry* entry) {
+	{ 
+		Synchronized sync(transactionsLock);
+		((std::queue<NetworkTableEntry*>*)incomingUpdateQueue)->push(entry);
+		if(((std::queue<NetworkTableEntry*>*)incomingUpdateQueue)->size()>=queueSize){
+			run();
+			writeWarning("update queue overflowed. decrease the rate at which you update entries or increase the write buffer size");
+		}
+	}
+}
+
+
+void WriteManager::run() {
+	{
+		Synchronized sync(transactionsLock);
+		//swap the assignment and update queue
+		volatile std::queue<NetworkTableEntry*>* tmp = incomingAssignmentQueue;
+		incomingAssignmentQueue = outgoingAssignmentQueue;
+		outgoingAssignmentQueue = tmp;
+		
+		tmp = incomingUpdateQueue;
+		incomingUpdateQueue = outgoingUpdateQueue;
+		outgoingUpdateQueue = tmp;
+	}
+	
+	bool wrote = false;
+	NetworkTableEntry* entry;
+	
+	while(!((std::queue<NetworkTableEntry*>*)outgoingAssignmentQueue)->empty()){
+		entry = ((std::queue<NetworkTableEntry*>*)outgoingAssignmentQueue)->front();
+		((std::queue<NetworkTableEntry*>*)outgoingAssignmentQueue)->pop();
+		{
+			Synchronized sync(entryStore.LOCK);
+			entry->MakeClean();
+			wrote = true;
+			receiver.offerOutgoingAssignment(entry);
+		}
+	}
+	
+	while(!((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->empty()){
+		entry = ((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->front();
+		((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->pop();
+		{ 
+			Synchronized sync(entryStore.LOCK);
+			entry->MakeClean();
+			wrote = true;
+			receiver.offerOutgoingUpdate(entry);
+		}
+	}
+	
+	
+	
+	if(wrote){
+		receiver.flush();
+		lastWrite = currentTimeMillis();
+	}
+	else if(currentTimeMillis()-lastWrite>keepAliveDelay)
+		receiver.ensureAlive();
+	
+	sleep_ms(20);
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/WriteManager.h b/aos/externals/WPILib/WPILib/networktables2/WriteManager.h
new file mode 100644
index 0000000..ec3607a
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/WriteManager.h
@@ -0,0 +1,87 @@
+/*
+ * WriteManager.h
+ *
+ *  Created on: Sep 25, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef WRITEMANAGER_H_
+#define WRITEMANAGER_H_
+
+
+class WriteManager;
+
+
+#include "thread/PeriodicRunnable.h"
+#include "OutgoingEntryReceiver.h"
+#include "thread/NTThread.h"
+#include "thread/NTThreadManager.h"
+#include "FlushableOutgoingEntryReceiver.h"
+#include "NetworkTableEntry.h"
+#include <queue>
+#include "Synchronized.h"
+
+
+
+/**
+ * A write manager is a {@link IncomingEntryReceiver} that buffers transactions and then and then dispatches them to a flushable transaction receiver that is periodically offered all queued transaction and then flushed
+ * 
+ * @author Mitchell
+ *
+ */
+class WriteManager : public OutgoingEntryReceiver, public PeriodicRunnable{
+private:
+	const static size_t queueSize = 500;
+	
+	ReentrantSemaphore transactionsLock;
+	
+	NTThread* thread;
+	
+	FlushableOutgoingEntryReceiver& receiver;
+	NTThreadManager& threadManager;
+	AbstractNetworkTableEntryStore& entryStore;
+
+	unsigned long keepAliveDelay;
+	
+	volatile std::queue<NetworkTableEntry*>* incomingAssignmentQueue;
+	volatile std::queue<NetworkTableEntry*>* incomingUpdateQueue;
+	volatile std::queue<NetworkTableEntry*>* outgoingAssignmentQueue;
+	volatile std::queue<NetworkTableEntry*>* outgoingUpdateQueue;
+	
+	unsigned long lastWrite;
+
+
+public:
+	/**
+	 * Create a new Write manager
+	 * @param receiver
+	 * @param threadManager
+	 * @param transactionPool
+	 * @param entryStore
+	 */
+	WriteManager(FlushableOutgoingEntryReceiver& receiver, NTThreadManager& threadManager, AbstractNetworkTableEntryStore& entryStore, unsigned long keepAliveDelay);
+	virtual ~WriteManager();
+	/**
+	 * start the write thread
+	 */
+	void start();
+	/**
+	 * stop the write thread
+	 */
+	void stop();
+
+
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+
+
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+
+	
+	/**
+	 * the periodic method that sends all buffered transactions
+	 */
+	void run();
+
+};
+
+#endif /* WRITEMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.cpp b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.cpp
new file mode 100644
index 0000000..2e3a185
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.cpp
@@ -0,0 +1,209 @@
+/*
+ * ClientConnectionAdapter.cpp
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/client/ClientConnectionAdapter.h"
+#include "networktables2/connection/ConnectionMonitorThread.h"
+
+void ClientConnectionAdapter::gotoState(ClientConnectionState* newState){
+	{
+		Synchronized sync(LOCK);
+		if(connectionState!=newState){
+			fprintf(stdout, "%p entered connection state: %s\n",this, newState->toString());
+			fflush(stdout);
+			if(newState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
+				connectionListenerManager.FireConnectedEvent();
+			if(connectionState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
+				connectionListenerManager.FireDisconnectedEvent();
+			connectionState = newState;
+		}
+	}
+}
+/**
+ * @return the state of the connection
+ */
+ClientConnectionState* ClientConnectionAdapter::getConnectionState(){
+	return connectionState;
+}
+/**
+ * @return if the client is connected to the server
+ */
+bool ClientConnectionAdapter::isConnected() {
+	return getConnectionState()==&ClientConnectionState::IN_SYNC_WITH_SERVER;
+}
+
+/**
+ * Create a new ClientConnectionAdapter
+ * @param entryStore
+ * @param threadManager
+ * @param streamFactory
+ * @param transactionPool
+ * @param connectionListenerManager
+ */
+ClientConnectionAdapter::ClientConnectionAdapter(ClientNetworkTableEntryStore& _entryStore, NTThreadManager& _threadManager, IOStreamFactory& _streamFactory, ClientConnectionListenerManager& _connectionListenerManager, NetworkTableEntryTypeManager& _typeManager):
+	entryStore(_entryStore),
+	streamFactory(_streamFactory),
+	threadManager(_threadManager),
+	connectionListenerManager(_connectionListenerManager),
+	typeManager(_typeManager),
+    readThread(NULL),
+    connection(NULL){
+	connectionState = &ClientConnectionState::DISCONNECTED_FROM_SERVER;
+}
+ClientConnectionAdapter::~ClientConnectionAdapter(){
+  close();
+}
+
+
+/*
+ * Connection management
+ */
+/**
+ * Reconnect the client to the server (even if the client is not currently connected)
+ */
+void ClientConnectionAdapter::reconnect() {
+	{
+		Synchronized sync(LOCK);
+		close();//close the existing stream and monitor thread if needed
+		try{
+			IOStream* stream = streamFactory.createStream();
+			if(stream==NULL)
+				return;
+			connection = new NetworkTableConnection(stream, typeManager);
+			readThread = threadManager.newBlockingPeriodicThread(new ConnectionMonitorThread(*this, *connection), "Client Connection Reader Thread");
+			connection->sendClientHello();
+			gotoState(&ClientConnectionState::CONNECTED_TO_SERVER);
+		} catch(IOException& e){
+			close();//make sure to clean everything up if we fail to connect
+		}
+	}
+}
+
+/**
+ * Close the client connection
+ */
+void ClientConnectionAdapter::close() {
+	close(&ClientConnectionState::DISCONNECTED_FROM_SERVER);
+}
+/**
+ * Close the connection to the server and enter the given state
+ * @param newState
+ */
+void ClientConnectionAdapter::close(ClientConnectionState* newState) {
+	{
+		Synchronized sync(LOCK);
+		gotoState(newState);
+		if(readThread!=NULL){
+			readThread->stop();
+			readThread = NULL;
+		}
+		if(connection!=NULL){
+			connection->close();
+			connection = NULL;
+		}
+		entryStore.clearIds();
+	}
+}
+
+
+
+void ClientConnectionAdapter::badMessage(BadMessageException& e) {
+	close(new ClientConnectionState_Error(e));
+}
+
+void ClientConnectionAdapter::ioException(IOException& e) {
+	if(connectionState!=&ClientConnectionState::DISCONNECTED_FROM_SERVER)//will get io exception when on read thread connection is closed
+		reconnect();
+	//gotoState(new ClientConnectionState.Error(e));
+}
+
+NetworkTableEntry* ClientConnectionAdapter::GetEntry(EntryId id) {
+	return entryStore.GetEntry(id);
+}
+
+
+void ClientConnectionAdapter::keepAlive() {
+}
+
+void ClientConnectionAdapter::clientHello(ProtocolVersion protocolRevision) {
+	throw BadMessageException("A client should not receive a client hello message");
+}
+
+void ClientConnectionAdapter::protocolVersionUnsupported(ProtocolVersion protocolRevision) {
+	close();
+	gotoState(new ClientConnectionState_ProtocolUnsuppotedByServer(protocolRevision));
+}
+
+void ClientConnectionAdapter::serverHelloComplete() {
+	if (connectionState==&ClientConnectionState::CONNECTED_TO_SERVER) {
+		try {
+			gotoState(&ClientConnectionState::IN_SYNC_WITH_SERVER);
+			entryStore.sendUnknownEntries(*connection);
+		} catch (IOException& e) {
+			ioException(e);
+		}
+	}
+	else
+		throw BadMessageException("A client should only receive a server hello complete once and only after it has connected to the server");
+}
+
+
+void ClientConnectionAdapter::offerIncomingAssignment(NetworkTableEntry* entry) {
+	entryStore.offerIncomingAssignment(entry);
+}
+void ClientConnectionAdapter::offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value) {
+	entryStore.offerIncomingUpdate(entry, sequenceNumber, value);
+}
+
+void ClientConnectionAdapter::offerOutgoingAssignment(NetworkTableEntry* entry) {
+	try {
+		{
+			Synchronized sync(LOCK);
+			if(connection!=NULL && connectionState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
+				connection->sendEntryAssignment(*entry);
+		}
+	} catch(IOException& e){
+		ioException(e);
+	}
+}
+
+void ClientConnectionAdapter::offerOutgoingUpdate(NetworkTableEntry* entry) {
+	try {
+		{
+			Synchronized sync(LOCK);
+			if(connection!=NULL && connectionState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
+				connection->sendEntryUpdate(*entry);
+		}
+	} catch(IOException& e){
+		ioException(e);
+	}
+}
+void ClientConnectionAdapter::flush() {
+	{
+		Synchronized sync(LOCK);
+		if(connection!=NULL) {
+			try {
+				connection->flush();
+			} catch (IOException& e) {
+				ioException(e);
+			}
+		}
+	}
+}
+void ClientConnectionAdapter::ensureAlive() {
+	{
+		Synchronized sync(LOCK);
+		if(connection!=NULL) {
+			try {
+			  connection->sendKeepAlive();
+			} catch (IOException& e) {
+				ioException(e);
+			}
+		}
+		else
+			reconnect();//try to reconnect if not connected
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.h b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.h
new file mode 100644
index 0000000..4260d51
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.h
@@ -0,0 +1,115 @@
+/*
+ * ClientConnectionAdapter.h
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CLIENTCONNECTIONADAPTER_H_
+#define CLIENTCONNECTIONADAPTER_H_
+
+class ClientConnectionAdapter;
+
+#include "networktables2/connection/ConnectionAdapter.h"
+#include "networktables2/IncomingEntryReceiver.h"
+#include "networktables2/FlushableOutgoingEntryReceiver.h"
+#include "networktables2/client/ClientNetworkTableEntryStore.h"
+#include "networktables2/stream/IOStreamFactory.h"
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/thread/NTThread.h"
+#include "networktables2/client/ClientConnectionState.h"
+#include "networktables2/client/ClientConnectionListenerManager.h"
+
+
+/**
+ * Object that adapts messages from a server
+ * 
+ * @author Mitchell
+ *
+ */
+class ClientConnectionAdapter : public ConnectionAdapter, public IncomingEntryReceiver, public FlushableOutgoingEntryReceiver{
+private:
+	ClientNetworkTableEntryStore& entryStore;
+	IOStreamFactory& streamFactory;
+	NTThreadManager& threadManager;
+	
+	ClientConnectionState* connectionState;
+	ClientConnectionListenerManager& connectionListenerManager;
+	ReentrantSemaphore LOCK;
+	NetworkTableEntryTypeManager& typeManager;
+	NTThread* readThread;
+	NetworkTableConnection* connection;
+
+	void gotoState(ClientConnectionState* newState);
+	
+public:
+	/**
+	 * @return the state of the connection
+	 */
+	ClientConnectionState* getConnectionState();
+	/**
+	 * @return if the client is connected to the server
+	 */
+	bool isConnected();
+
+	/**
+	 * Create a new ClientConnectionAdapter
+	 * @param entryStore
+	 * @param threadManager
+	 * @param streamFactory
+	 * @param transactionPool
+	 * @param connectionListenerManager
+	 */
+	ClientConnectionAdapter(ClientNetworkTableEntryStore& entryStore, NTThreadManager& threadManager, IOStreamFactory& streamFactory, ClientConnectionListenerManager& connectionListenerManager, NetworkTableEntryTypeManager& typeManager);
+	virtual ~ClientConnectionAdapter();
+	
+	
+	/*
+	 * Connection management
+	 */
+	/**
+	 * Reconnect the client to the server (even if the client is not currently connected)
+	 */
+	void reconnect();
+	
+	/**
+	 * Close the client connection
+	 */
+	void close();
+	/**
+	 * Close the connection to the server and enter the given state
+	 * @param newState
+	 */
+	void close(ClientConnectionState* newState);
+	
+	
+
+	void badMessage(BadMessageException& e);
+
+	void ioException(IOException& e);
+	
+	NetworkTableEntry* GetEntry(EntryId id);
+	
+	
+	void keepAlive();
+
+	void clientHello(ProtocolVersion protocolRevision);
+
+	void protocolVersionUnsupported(ProtocolVersion protocolRevision);
+
+	void serverHelloComplete();
+
+
+	void offerIncomingAssignment(NetworkTableEntry* entry);
+	void offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value);
+
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+	void flush();
+	void ensureAlive();
+
+};
+
+
+#endif /* CLIENTCONNECTIONADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionListenerManager.h b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionListenerManager.h
new file mode 100644
index 0000000..7530594
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionListenerManager.h
@@ -0,0 +1,33 @@
+/*
+ * ClientConnectionListenerManager.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CLIENTCONNECTIONLISTENERMANAGER_H_
+#define CLIENTCONNECTIONLISTENERMANAGER_H_
+
+/**
+ * An object that manages connection listeners and fires events for other listeners
+ * 
+ * @author Mitchell
+ *
+ */
+class ClientConnectionListenerManager
+{
+public:
+	virtual ~ClientConnectionListenerManager()
+	{
+	}
+	/**
+	 * called when something is connected
+	 */
+	virtual void FireConnectedEvent() = 0;
+	/**
+	 * called when something is disconnected
+	 */
+	virtual void FireDisconnectedEvent() = 0;
+};
+
+#endif /* CLIENTCONNECTIONLISTENERMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.cpp b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.cpp
new file mode 100644
index 0000000..9012856
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.cpp
@@ -0,0 +1,77 @@
+/*
+ * ClientConnectionState.cpp
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+#include "networktables2/client/ClientConnectionState.h"
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+#include <stdlib.h>
+#include <memory>
+#include <cstring>
+
+/**
+ * indicates that the client is disconnected from the server
+ */
+ClientConnectionState ClientConnectionState::DISCONNECTED_FROM_SERVER("DISCONNECTED_FROM_SERVER");
+/**
+ * indicates that the client is connected to the server but has not yet begun communication
+ */
+ClientConnectionState ClientConnectionState::CONNECTED_TO_SERVER("CONNECTED_TO_SERVER");
+/**
+ * represents that the client has sent the hello to the server and is waiting for a response
+ */
+ClientConnectionState ClientConnectionState::SENT_HELLO_TO_SERVER("SENT_HELLO_TO_SERVER");
+/**
+ * represents that the client is now in sync with the server
+ */
+ClientConnectionState ClientConnectionState::IN_SYNC_WITH_SERVER("IN_SYNC_WITH_SERVER");
+
+
+	/**
+	 * Create a new protocol unsupported state
+	 * @param serverVersion
+	 */
+ClientConnectionState_ProtocolUnsuppotedByServer::ClientConnectionState_ProtocolUnsuppotedByServer(ProtocolVersion _serverVersion):
+		ClientConnectionState("PROTOCOL_UNSUPPORTED_BY_SERVER"),
+	serverVersion(_serverVersion){}
+/**
+ * @return the protocol version that the server reported it supports
+ */
+ProtocolVersion ClientConnectionState_ProtocolUnsuppotedByServer::getServerVersion(){
+	return serverVersion;
+}
+const char* ClientConnectionState_ProtocolUnsuppotedByServer::toString(){
+	return "PROTOCOL_UNSUPPORTED_BY_SERVER";
+	//return "PROTOCOL_UNSUPPORTED_BY_SERVER: Server Version: 0x"+Integer.toHexString(serverVersion);
+}
+
+/**
+ * Create a new error state
+ * @param e
+ */
+ClientConnectionState_Error::ClientConnectionState_Error(std::exception& _e):ClientConnectionState("CLIENT_ERROR"),e(_e){
+  strcpy(msg, "CLIENT_ERROR: ");
+  strcat(msg, e.what());
+}
+/**
+ * @return the exception that caused the client to enter an error state
+ */
+std::exception& ClientConnectionState_Error::getException(){
+	return e;
+}
+const char* ClientConnectionState_Error::toString(){
+  return msg;
+  //return "CLIENT_ERROR";
+	//return "CLIENT_ERROR: "+e.getClass()+": "+e.getMessage();
+}
+
+ClientConnectionState::ClientConnectionState(const char* _name){
+	name = _name;
+}
+const char* ClientConnectionState::toString(){
+	return name;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.h b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.h
new file mode 100644
index 0000000..fdb8e3e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.h
@@ -0,0 +1,99 @@
+/*
+ * ClientConnectionState.h
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CLIENTCONNECTIONSTATE_H_
+#define CLIENTCONNECTIONSTATE_H_
+
+
+class ClientConnectionState;
+class ClientConnectionState_Error;
+class ClientConnectionState_ProtocolUnsuppotedByServer;
+
+#include <exception>
+#include "networktables2/connection/NetworkTableConnection.h"
+
+/**
+ * Represents a state that the client is in
+ * 
+ * @author Mitchell
+ *
+ */
+class ClientConnectionState {
+public:
+	/**
+	 * indicates that the client is disconnected from the server
+	 */
+	static ClientConnectionState DISCONNECTED_FROM_SERVER;
+	/**
+	 * indicates that the client is connected to the server but has not yet begun communication
+	 */
+	static ClientConnectionState CONNECTED_TO_SERVER;
+	/**
+	 * represents that the client has sent the hello to the server and is waiting for a response
+	 */
+	static ClientConnectionState SENT_HELLO_TO_SERVER;
+	/**
+	 * represents that the client is now in sync with the server
+	 */
+	static ClientConnectionState IN_SYNC_WITH_SERVER;
+	
+	
+private:
+	const char* name;
+protected:
+	ClientConnectionState(const char* name);
+public:
+	virtual const char* toString();
+};
+
+
+
+/**
+ * Represents that a client received a message from the server indicating that the client's protocol revision is not supported by the server
+ * @author Mitchell
+ *
+ */
+class ClientConnectionState_ProtocolUnsuppotedByServer : public ClientConnectionState{
+private:
+	const ProtocolVersion serverVersion;
+public:
+	/**
+	 * Create a new protocol unsupported state
+	 * @param serverVersion
+	 */
+	ClientConnectionState_ProtocolUnsuppotedByServer(ProtocolVersion serverVersion);
+	/**
+	 * @return the protocol version that the server reported it supports
+	 */
+	ProtocolVersion getServerVersion();
+	const char* toString();
+};
+/**
+ * Represents that the client is in an error state
+ * 
+ * @author Mitchell
+ *
+ */
+class ClientConnectionState_Error : public ClientConnectionState{
+private:
+	std::exception& e;
+	char msg[100];
+public:
+	/**
+	 * Create a new error state
+	 * @param e
+	 */
+	ClientConnectionState_Error(std::exception& e);
+	/**
+	 * @return the exception that caused the client to enter an error state
+	 */
+	std::exception& getException();
+	virtual const char* toString();
+};
+
+
+#endif /* CLIENTCONNECTIONSTATE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.cpp b/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.cpp
new file mode 100644
index 0000000..ab2d4eb
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.cpp
@@ -0,0 +1,71 @@
+/*
+ * ClientNetworkTableEntryStore.cpp
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/client/ClientNetworkTableEntryStore.h"
+
+/**
+ * Create a new ClientNetworkTableEntryStore
+ * @param transactionPool
+ * @param listenerManager
+ */
+ClientNetworkTableEntryStore::ClientNetworkTableEntryStore(TableListenerManager& listenerManager): AbstractNetworkTableEntryStore(listenerManager) {}
+ClientNetworkTableEntryStore::~ClientNetworkTableEntryStore(){}
+
+bool ClientNetworkTableEntryStore::addEntry(NetworkTableEntry* newEntry){
+	{
+		Synchronized sync(LOCK);
+		NetworkTableEntry* entry = (NetworkTableEntry*)namedEntries[newEntry->name];
+
+		if(entry!=NULL){
+			if(entry->GetId()!=newEntry->GetId()){
+				idEntries.erase(entry->GetId());
+				if(newEntry->GetId()!=NetworkTableEntry::UNKNOWN_ID){
+					entry->SetId(newEntry->GetId());
+					idEntries[newEntry->GetId()] = entry;
+				}
+			}
+			
+			entry->ForcePut(newEntry->GetSequenceNumber(), newEntry->GetType(), newEntry->GetValue());
+		}
+		else{
+			if(newEntry->GetId()!=NetworkTableEntry::UNKNOWN_ID)
+				idEntries[newEntry->GetId()] = newEntry;
+			namedEntries[newEntry->name] = newEntry;
+		}
+	}
+	return true;
+}
+
+bool ClientNetworkTableEntryStore::updateEntry(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value) {
+	{ 
+		Synchronized sync(LOCK);
+		entry->ForcePut(sequenceNumber, value);
+		if(entry->GetId()==NetworkTableEntry::UNKNOWN_ID){
+			return false;
+		}
+		return true;
+	}
+}
+
+/**
+ * Send all unknown entries in the entry store to the given connection
+ * @param connection
+ * @throws IOException
+ */
+void ClientNetworkTableEntryStore::sendUnknownEntries(NetworkTableConnection& connection) {
+	{ 
+		Synchronized sync(LOCK);
+		std::map<std::string, NetworkTableEntry*>::iterator itr;
+		for(itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
+		{
+			NetworkTableEntry* entry = (*itr).second;
+			if(entry->GetId()==NetworkTableEntry::UNKNOWN_ID)
+				connection.sendEntryAssignment(*entry);
+		}
+		connection.flush();
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.h b/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.h
new file mode 100644
index 0000000..dacee43
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.h
@@ -0,0 +1,51 @@
+/*
+ * ClientNetworkTableEntryStore.h
+ *
+ *  Created on: Nov 2, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CLIENTNETWORKTABLEENTRYSTORE_H_
+#define CLIENTNETWORKTABLEENTRYSTORE_H_
+
+
+class ClientNetworkTableEntryStore;
+
+
+#include "networktables2/AbstractNetworkTableEntryStore.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "Synchronized.h"
+
+/**
+ * The entry store for a {@link NetworkTableClient}
+ * 
+ * @author Mitchell
+ *
+ */
+class ClientNetworkTableEntryStore : public AbstractNetworkTableEntryStore{
+
+public:
+	/**
+	 * Create a new ClientNetworkTableEntryStore
+	 * @param transactionPool
+	 * @param listenerManager
+	 */
+	ClientNetworkTableEntryStore(TableListenerManager& listenerManager);
+	virtual ~ClientNetworkTableEntryStore();
+	
+protected:
+	bool addEntry(NetworkTableEntry* newEntry);
+	bool updateEntry(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value);
+
+public:
+	/**
+	 * Send all unknown entries in the entry store to the given connection
+	 * @param connection
+	 * @throws IOException
+	 */
+	void sendUnknownEntries(NetworkTableConnection& connection);
+};
+
+
+
+#endif /* CLIENTNETWORKTABLEENTRYSTORE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.cpp b/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.cpp
new file mode 100644
index 0000000..8fb6a2d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.cpp
@@ -0,0 +1,50 @@
+/*
+ * NetworkTableClient.cpp
+ *
+ *  Created on: Nov 3, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/client/NetworkTableClient.h"
+#include "networktables2/TransactionDirtier.h"
+
+/**
+ * Create a new NetworkTable Client
+ * @param streamFactory
+ * @param threadManager
+ * @param transactionPool
+ */
+NetworkTableClient::NetworkTableClient(IOStreamFactory& streamFactory, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager):
+	NetworkTableNode(*new ClientNetworkTableEntryStore(*this)),
+	adapter((ClientNetworkTableEntryStore&)entryStore, threadManager, streamFactory, *this, typeManager),
+	writeManager(adapter, threadManager, GetEntryStore(), 1000){
+	
+	GetEntryStore().SetOutgoingReceiver(new TransactionDirtier(writeManager));
+	GetEntryStore().SetIncomingReceiver(&OutgoingEntryReceiver_NULL);
+	writeManager.start();
+}
+NetworkTableClient::~NetworkTableClient(){}
+
+/**
+ * force the client to disconnect and reconnect to the server again. Will connect if the client is currently disconnected
+ */
+void NetworkTableClient::reconnect() {
+	adapter.reconnect();
+}
+
+void NetworkTableClient::Close() {
+	adapter.close();
+}
+
+void NetworkTableClient::stop() {
+	writeManager.stop();
+	Close();
+}
+
+bool NetworkTableClient::IsConnected() {
+	return adapter.isConnected();
+}
+
+bool NetworkTableClient::IsServer() {
+	return false;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.h b/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.h
new file mode 100644
index 0000000..7303298
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.h
@@ -0,0 +1,54 @@
+/*
+ * NetworkTableClient.h
+ *
+ *  Created on: Nov 3, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLECLIENT_H_
+#define NETWORKTABLECLIENT_H_
+
+class NetworkTableClient;
+
+#include "networktables2/NetworkTableNode.h"
+#include "networktables2/client/ClientConnectionAdapter.h"
+#include "networktables2/WriteManager.h"
+
+/**
+ * A client node in NetworkTables 2.0
+ * 
+ * @author Mitchell
+ *
+ */
+class NetworkTableClient : public NetworkTableNode{
+private:
+	ClientConnectionAdapter adapter;
+	WriteManager writeManager;
+
+public:
+	/**
+	 * Create a new NetworkTable Client
+	 * @param streamFactory
+	 * @param threadManager
+	 * @param transactionPool
+	 */
+	NetworkTableClient(IOStreamFactory& streamFactory, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager);
+	~NetworkTableClient();
+
+	/**
+	 * force the client to disconnect and reconnect to the server again. Will connect if the client is currently disconnected
+	 */
+	void reconnect();
+
+	void Close();
+	
+	void stop();
+
+	bool IsConnected();
+
+	bool IsServer();
+
+};
+
+
+#endif /* NETWORKTABLECLIENT_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.cpp b/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.cpp
new file mode 100644
index 0000000..bba6e09
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.cpp
@@ -0,0 +1,23 @@
+/*
+ * BadMessageException.cpp
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/connection/BadMessageException.h"
+
+BadMessageException::BadMessageException(const char* msg)
+	: message(msg)
+{
+
+}
+
+BadMessageException::~BadMessageException() throw ()
+{
+}
+
+const char* BadMessageException::what()
+{
+	return message.c_str();
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.h b/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.h
new file mode 100644
index 0000000..5c5585a
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.h
@@ -0,0 +1,24 @@
+/*
+ * BadMessageException.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef BADMESSAGEEXCEPTION_H_
+#define BADMESSAGEEXCEPTION_H_
+
+#include <exception>
+#include <string>
+
+class BadMessageException : public std::exception
+{
+public:
+	BadMessageException(const char* message);
+	~BadMessageException() throw ();
+	const char* what();
+private:
+	std::string message;
+};
+
+#endif /* BADMESSAGEEXCEPTION_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionAdapter.h b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionAdapter.h
new file mode 100644
index 0000000..e8dc494
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionAdapter.h
@@ -0,0 +1,45 @@
+/*
+ * ConnectionAdapter.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CONNECTIONADAPTER_H_
+#define CONNECTIONADAPTER_H_
+
+class ConnectionAdapter;
+
+#include "../NetworkTableEntry.h"
+#include "BadMessageException.h"
+#include "networktables2/util/IOException.h"
+#include "tables/ITable.h"
+
+class ConnectionAdapter
+{
+public:
+	virtual ~ConnectionAdapter()
+	{
+	}
+	virtual void keepAlive() = 0;
+	virtual void clientHello(ProtocolVersion protocolRevision) = 0;
+	virtual void serverHelloComplete() = 0;
+	virtual void protocolVersionUnsupported(ProtocolVersion protocolRevision) = 0;
+	virtual void offerIncomingAssignment(NetworkTableEntry* newEntry) = 0;
+	virtual void offerIncomingUpdate(NetworkTableEntry* newEntry, SequenceNumber sequenceNumber, EntryValue value) = 0;
+	virtual NetworkTableEntry* GetEntry(EntryId) = 0;
+
+	/**
+	 * called if a bad message exception is thrown
+	 * @param e
+	 */
+	virtual void badMessage(BadMessageException& e) = 0;
+
+	/**
+	 * called if an io exception is thrown
+	 * @param e
+	 */
+	virtual void ioException(IOException& e) = 0;
+};
+
+#endif /* CONNECTIONADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.cpp b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.cpp
new file mode 100644
index 0000000..75ff177
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.cpp
@@ -0,0 +1,26 @@
+/*
+ * ConnectionMonitorThread.cpp
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/connection/ConnectionMonitorThread.h"
+#include "networktables2/connection/BadMessageException.h"
+
+
+ConnectionMonitorThread::ConnectionMonitorThread(ConnectionAdapter& _adapter, NetworkTableConnection& _connection) :
+	adapter(_adapter), connection(_connection) {
+}
+
+void ConnectionMonitorThread::run() {
+  
+	try{
+		connection.read(adapter);
+	} catch(BadMessageException& e){
+		adapter.badMessage(e);
+	} catch(IOException& e){
+		adapter.ioException(e);
+	}
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h
new file mode 100644
index 0000000..5068244
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h
@@ -0,0 +1,43 @@
+/*
+ * ConnectionMonitorThread.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef CONNECTIONMONITORTHREAD_H_
+#define CONNECTIONMONITORTHREAD_H_
+
+
+class ConnectionMonitorThread;
+
+#include "ConnectionAdapter.h"
+#include "NetworkTableConnection.h"
+#include "../thread/PeriodicRunnable.h"
+
+
+
+
+/**
+ * A periodic thread that repeatedly reads from a connection
+ * @author Mitchell
+ *
+ */
+class ConnectionMonitorThread : public PeriodicRunnable{
+private:
+	ConnectionAdapter& adapter;
+	NetworkTableConnection& connection;
+
+public:
+	/**
+	 * create a new monitor thread
+	 * @param adapter
+	 * @param connection
+	 */
+	ConnectionMonitorThread(ConnectionAdapter& adapter, NetworkTableConnection& connection);
+
+	void run();
+};
+
+
+#endif /* CONNECTIONMONITORTHREAD_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.cpp b/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.cpp
new file mode 100644
index 0000000..2152240
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.cpp
@@ -0,0 +1,64 @@
+#include "networktables2/connection/DataIOStream.h"
+
+//TODO remove this when alloca is solved
+#ifdef WIN32
+#include <malloc.h>
+#endif
+
+DataIOStream::DataIOStream(IOStream* _iostream) :
+	iostream(*_iostream)
+{
+}
+DataIOStream::~DataIOStream()
+{
+	close();
+	delete &iostream;
+}
+void DataIOStream::close()
+{
+	iostream.close();
+}
+
+void DataIOStream::writeByte(uint8_t b)
+{
+	iostream.write(&b, 1);
+}
+void DataIOStream::write2BytesBE(uint16_t s)
+{
+	writeByte((uint8_t)(s >> 8));
+	writeByte((uint8_t)s);
+}
+void DataIOStream::writeString(std::string& str)
+{
+	write2BytesBE(str.length());
+	iostream.write(str.c_str(), str.length());
+}
+void DataIOStream::flush()
+{
+	iostream.flush();
+}
+uint8_t DataIOStream::readByte()
+{
+	uint8_t value;
+	iostream.read(&value, 1);
+	return value;
+}
+uint16_t DataIOStream::read2BytesBE()
+{
+	uint16_t value;
+	value = readByte()<<8 | readByte();
+	return value;
+}
+std::string* DataIOStream::readString()
+{
+	
+	unsigned int byteLength = read2BytesBE();
+#ifndef WIN32
+	uint8_t bytes[byteLength+1];//FIXME figure out why this doesn't work on windows
+#else
+	uint8_t* bytes = (uint8_t*)alloca(byteLength+1);
+#endif
+	iostream.read(bytes, byteLength);
+	bytes[byteLength] = 0;
+	return new std::string((char*)bytes);//FIXME implement UTF-8 aware version
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.h b/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.h
new file mode 100644
index 0000000..bd52c93
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.h
@@ -0,0 +1,49 @@
+#ifndef DATAIOSTREAM_H_
+#define DATAIOSTREAM_H_
+
+#include <stdlib.h>
+#include "../stream/IOStream.h"
+#include <exception>
+#include <string>
+
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+#include <stdlib.h>
+#include <memory>
+
+//WindRiver is 3.4 GCC. Recent GCC can  do 0b01010101 style format, WR cannot
+
+#define TO_HEX__(n) 0x##n##LU // LU for unsigned long
+#define BINARY_LITERAL_VIA_HEX__(n) (((n & 0x00000001LU) ? 1 : 0)\
+	+ ((n & 0x00000010LU) ? 2 : 0) \
+	+ ((n & 0x00000100LU) ? 4 : 0) \
+	+ ((n & 0x00001000LU) ? 8 : 0) \
+	+ ((n & 0x00010000LU) ? 16 : 0) \
+	+ ((n & 0x00100000LU) ? 32 : 0) \
+	+ ((n & 0x01000000LU) ? 64 : 0) \
+	+ ((n & 0x10000000LU) ? 128 : 0))
+	
+#define b(n) ((unsigned char)BINARY_LITERAL_VIA_HEX__(TO_HEX__(n)))
+
+class DataIOStream{
+public:
+	DataIOStream(IOStream* stream);
+	virtual ~DataIOStream();
+	void writeByte(uint8_t b);
+	void write2BytesBE(uint16_t s);
+	void writeString(std::string& str);
+	void flush();
+	
+	uint8_t readByte();
+	uint16_t read2BytesBE();
+	std::string* readString();
+	
+	void close();
+//private:
+	IOStream& iostream;
+};
+
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp b/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp
new file mode 100644
index 0000000..d9dcc34
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp
@@ -0,0 +1,156 @@
+/**
+ * An abstraction for the NetworkTable protocol
+ * 
+ * @author mwills
+ *
+ */
+
+#include "networktables2/connection/NetworkTableConnection.h"
+#include "networktables2/connection/BadMessageException.h"
+
+
+NetworkTableConnection::NetworkTableConnection(IOStream* _ioStream, NetworkTableEntryTypeManager& _typeManager) :
+	ioStream(new DataIOStream(_ioStream)), typeManager(_typeManager) {
+	isValid = true;
+}
+NetworkTableConnection::~NetworkTableConnection(){
+	delete ioStream;
+}
+
+void NetworkTableConnection::close() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		if (isValid) {
+			isValid = false;
+			ioStream->close();
+		}
+	}
+}
+void NetworkTableConnection::flush() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		ioStream->flush();
+	}
+}
+
+void NetworkTableConnection::sendMessageHeader(
+		NetworkTableMessageType messageType) {
+	{
+		Synchronized sync(WRITE_LOCK);
+		ioStream->writeByte((uint8_t) messageType);
+	}
+}
+
+void NetworkTableConnection::sendKeepAlive() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(KEEP_ALIVE);
+		flush();
+	}
+}
+
+void NetworkTableConnection::sendClientHello() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(CLIENT_HELLO);
+		ioStream->write2BytesBE(PROTOCOL_REVISION);
+		flush();
+	}
+}
+void NetworkTableConnection::sendServerHelloComplete() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(SERVER_HELLO_COMPLETE);
+		flush();
+	}
+}
+
+void NetworkTableConnection::sendProtocolVersionUnsupported() {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(PROTOCOL_VERSION_UNSUPPORTED);
+		ioStream->write2BytesBE(PROTOCOL_REVISION);
+		flush();
+	}
+}
+
+void NetworkTableConnection::sendEntryAssignment(NetworkTableEntry& entry) {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(ENTRY_ASSIGNMENT);
+		ioStream->writeString(entry.name);
+		ioStream->writeByte(entry.GetType()->id);
+		ioStream->write2BytesBE(entry.GetId());
+		ioStream->write2BytesBE(entry.GetSequenceNumber());
+		entry.SendValue(*ioStream);
+	}
+}
+
+void NetworkTableConnection::sendEntryUpdate(NetworkTableEntry& entry) {
+	{
+		Synchronized sync(WRITE_LOCK);
+		sendMessageHeader(FIELD_UPDATE);
+		ioStream->write2BytesBE(entry.GetId());
+		ioStream->write2BytesBE(entry.GetSequenceNumber());
+		entry.SendValue(*ioStream);
+	}
+}
+
+void NetworkTableConnection::read(ConnectionAdapter& adapter) {
+	int messageType = ioStream->readByte();
+	switch (messageType) {
+	case KEEP_ALIVE:
+		adapter.keepAlive();
+		return;
+	case CLIENT_HELLO: {
+		uint16_t protocolRevision = ioStream->read2BytesBE();
+		adapter.clientHello(protocolRevision);
+		return;
+	}
+	case SERVER_HELLO_COMPLETE: {
+		adapter.serverHelloComplete();
+		return;
+	}
+	case PROTOCOL_VERSION_UNSUPPORTED: {
+		uint16_t protocolRevision = ioStream->read2BytesBE();
+		adapter.protocolVersionUnsupported(protocolRevision);
+		return;
+	}
+	case ENTRY_ASSIGNMENT: {
+		std::string* entryName = ioStream->readString();
+		TypeId typeId = ioStream->readByte();
+		NetworkTableEntryType* entryType = typeManager.GetType(typeId);
+		if (!entryType){
+			char exceptionMessageBuffer[50];
+			sprintf (exceptionMessageBuffer, "Unknown data type: %#x", typeId);
+			throw BadMessageException(exceptionMessageBuffer);
+		}
+		EntryId entryId = ioStream->read2BytesBE();
+		SequenceNumber entrySequenceNumber = ioStream->read2BytesBE();
+		EntryValue value = entryType->readValue(*ioStream);
+		adapter.offerIncomingAssignment(new NetworkTableEntry(entryId, *entryName, entrySequenceNumber, entryType, value));
+		entryType->deleteValue(value);
+		delete entryName;
+		return;
+	}
+	case FIELD_UPDATE: {
+		EntryId entryId = ioStream->read2BytesBE();
+		SequenceNumber entrySequenceNumber = ioStream->read2BytesBE();
+		NetworkTableEntry* entry = adapter.GetEntry(entryId);
+		if (!entry){
+			char exceptionMessageBuffer[50];
+			sprintf (exceptionMessageBuffer, "Received update for unknown entry id: %d", entryId);
+			throw BadMessageException(exceptionMessageBuffer);
+		}
+		EntryValue value = entry->GetType()->readValue(*ioStream);
+
+		adapter.offerIncomingUpdate(entry, entrySequenceNumber, value);
+		entry->GetType()->deleteValue(value);
+		return;
+	}
+	default:
+		char exceptionMessageBuffer[50];
+		sprintf (exceptionMessageBuffer, "Unknown Network Table Message Type: %d", messageType);
+		throw BadMessageException(exceptionMessageBuffer);
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.h b/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.h
new file mode 100644
index 0000000..08317e8
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.h
@@ -0,0 +1,56 @@
+/**
+ * An abstraction for the NetworkTable protocol
+ * 
+ * @author mwills
+ *
+ */
+
+
+#ifndef NETWORK_TABLE_CONNECTION_H_
+#define NETWORK_TABLE_CONNECTION_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "Synchronized.h"
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+class NetworkTableConnection;
+typedef uint16_t ProtocolVersion;
+
+#include "DataIOStream.h"
+#include "../NetworkTableEntry.h"
+#include "../type/NetworkTableEntryType.h"
+#include "../type/NetworkTableEntryTypeManager.h"
+#include "ConnectionAdapter.h"
+#include "../NetworkTableMessageType.h"
+
+
+class NetworkTableConnection{
+public:
+	static const ProtocolVersion PROTOCOL_REVISION = 0x0200;
+
+	NetworkTableConnection(IOStream* stream, NetworkTableEntryTypeManager& typeManager);
+	~NetworkTableConnection();
+	void close();
+	void flush();
+	void sendKeepAlive();
+	void sendClientHello();
+	void sendServerHelloComplete();
+	void sendProtocolVersionUnsupported();
+	void sendEntryAssignment(NetworkTableEntry& entry);
+	void sendEntryUpdate(NetworkTableEntry& entry);
+	void read(ConnectionAdapter& adapter);
+private:
+	ReentrantSemaphore WRITE_LOCK;
+	DataIOStream* const ioStream;
+	NetworkTableEntryTypeManager& typeManager;
+	bool isValid;
+
+	void sendMessageHeader(NetworkTableMessageType messageType);
+};
+
+
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.cpp b/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.cpp
new file mode 100644
index 0000000..fae14e5
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.cpp
@@ -0,0 +1,58 @@
+/*
+ * NetworkTableServer.cpp
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/NetworkTableServer.h"
+#include "networktables2/server/ServerNetworkTableEntryStore.h"
+#include <iostream>
+#include <limits.h>
+
+NetworkTableServer::NetworkTableServer(IOStreamProvider& _streamProvider, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager):
+		NetworkTableNode(*new ServerNetworkTableEntryStore(*this)),
+		streamProvider(_streamProvider),
+		connectionList(),
+		writeManager(connectionList, threadManager, GetEntryStore(), ULONG_MAX),
+		incomingStreamMonitor(streamProvider, (ServerNetworkTableEntryStore&)entryStore, *this, connectionList, typeManager, threadManager),
+                continuingReceiver(writeManager){
+	
+	GetEntryStore().SetIncomingReceiver(&continuingReceiver);
+	GetEntryStore().SetOutgoingReceiver(&continuingReceiver);
+	
+	incomingStreamMonitor.start();
+	writeManager.start();
+}
+/*NetworkTableServer::NetworkTableServer(IOStreamProvider& streamProvider){
+	this(streamProvider, new NetworkTableEntryTypeManager(), new DefaultThreadManager());
+}*/
+NetworkTableServer::~NetworkTableServer(){
+	Close();
+	delete &entryStore;
+}
+
+void NetworkTableServer::Close(){
+	try{
+		incomingStreamMonitor.stop();
+		writeManager.stop();
+		connectionList.closeAll();
+		streamProvider.close();
+	} catch (const std::exception& ex) {
+	    //TODO print stack trace?
+	}
+}
+
+void NetworkTableServer::OnNewConnection(ServerConnectionAdapter& connectionAdapter) {
+	connectionList.add(connectionAdapter);
+}
+
+
+bool NetworkTableServer::IsConnected() {
+	return true;
+}
+
+
+bool NetworkTableServer::IsServer() {
+	return true;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.h b/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.h
new file mode 100644
index 0000000..6af6870
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.h
@@ -0,0 +1,67 @@
+/*
+ * NetworkTableServer.h
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLESERVER_H_
+#define NETWORKTABLESERVER_H_
+
+
+class NetworkTableServer;
+
+#include "networktables2/TransactionDirtier.h"
+#include "networktables2/NetworkTableNode.h"
+#include "ServerIncomingStreamMonitor.h"
+#include "ServerIncomingConnectionListener.h"
+#include "networktables2/WriteManager.h"
+#include "networktables2/stream/IOStreamProvider.h"
+#include "ServerConnectionList.h"
+
+/**
+ * A server node in NetworkTables 2.0
+ * 
+ * @author Mitchell
+ *
+ */
+class NetworkTableServer : public NetworkTableNode, public ServerIncomingConnectionListener{
+private:
+	IOStreamProvider& streamProvider;
+	ServerConnectionList connectionList;
+	WriteManager writeManager;
+	ServerIncomingStreamMonitor incomingStreamMonitor;
+	TransactionDirtier continuingReceiver;
+
+  public:
+	/**
+	 * Create a NetworkTable Server
+	 * 
+	 * @param streamProvider
+	 * @param threadManager
+	 * @param transactionPool
+	 */
+	NetworkTableServer(IOStreamProvider& streamProvider, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager);
+	~NetworkTableServer();
+	/**
+	 * Create a NetworkTable Server
+	 * 
+	 * @param streamProvider
+	 */
+	NetworkTableServer(IOStreamProvider& streamProvider);
+	
+	void Close();
+
+	void OnNewConnection(ServerConnectionAdapter& connectionAdapter);
+
+	
+	bool IsConnected();
+
+	
+	bool IsServer();
+
+};
+
+
+
+#endif /* NETWORKTABLESERVER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerAdapterManager.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerAdapterManager.h
new file mode 100644
index 0000000..c6e967c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerAdapterManager.h
@@ -0,0 +1,34 @@
+/*
+ * ServerAdapterManager.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERADAPTERMANAGER_H_
+#define SERVERADAPTERMANAGER_H_
+
+class ServerAdapterManager;
+
+#include "ServerConnectionAdapter.h"
+
+/**
+ * A class that manages connections to a server
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerAdapterManager
+{
+public:
+	virtual ~ServerAdapterManager()
+	{
+	}
+	/**
+	 * Called when a connection adapter has been closed
+	 * @param connectionAdapter the adapter that was closed
+	 */
+	virtual void close(ServerConnectionAdapter& connectionAdapter, bool closeStream) = 0;
+};
+
+#endif /* SERVERADAPTERMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.cpp
new file mode 100644
index 0000000..34f262d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.cpp
@@ -0,0 +1,133 @@
+/*
+ * ServerConnectionAdapter.cpp
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/ServerConnectionAdapter.h"
+#include <stdio.h>
+
+
+void ServerConnectionAdapter::gotoState(ServerConnectionState* newState){
+	if(connectionState!=newState){
+	  fprintf(stdout, "%p entered connection state: %s\n",this, newState->toString());
+	  fflush(stdout);
+		connectionState = newState;
+	}
+}
+
+ServerConnectionAdapter::ServerConnectionAdapter(IOStream* stream, ServerNetworkTableEntryStore& _entryStore, IncomingEntryReceiver& _transactionReceiver, ServerAdapterManager& _adapterListener, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager) :
+	entryStore(_entryStore), transactionReceiver(_transactionReceiver), adapterListener(_adapterListener),
+	connection(stream, typeManager), monitorThread(*this, connection){
+        connectionState = &ServerConnectionState::CLIENT_DISCONNECTED;
+	gotoState(&ServerConnectionState::GOT_CONNECTION_FROM_CLIENT);
+	readThread = threadManager.newBlockingPeriodicThread(&monitorThread, "Server Connection Reader Thread");
+}
+
+ServerConnectionAdapter::~ServerConnectionAdapter(){
+  delete readThread;
+}
+
+
+void ServerConnectionAdapter::badMessage(BadMessageException& e) {
+  fprintf(stdout, "Bad message: %s\n", e.what());
+  fflush(stdout);
+	gotoState(new ServerConnectionState_Error(e));
+	adapterListener.close(*this, true);
+}
+
+void ServerConnectionAdapter::ioException(IOException& e) {
+  fprintf(stdout, "IOException message: %s\n", e.what());
+  fflush(stdout);
+	if(e.isEOF())
+		gotoState(&ServerConnectionState::CLIENT_DISCONNECTED);
+	else
+		gotoState(new ServerConnectionState_Error(e));
+	adapterListener.close(*this, false);
+}
+
+
+void ServerConnectionAdapter::shutdown(bool closeStream) {
+	readThread->stop();
+	if(closeStream)
+		connection.close();
+}
+
+void ServerConnectionAdapter::keepAlive() {
+	//just let it happen
+}
+
+void ServerConnectionAdapter::clientHello(ProtocolVersion protocolRevision) {
+	if(connectionState!=&ServerConnectionState::GOT_CONNECTION_FROM_CLIENT)
+		throw BadMessageException("A server should not receive a client hello after it has already connected/entered an error state");
+    if(protocolRevision!=NetworkTableConnection::PROTOCOL_REVISION){
+        connection.sendProtocolVersionUnsupported();
+        throw BadMessageException("Client Connected with bad protocol revision");
+    }
+    else{
+		entryStore.sendServerHello(connection);
+		gotoState(&ServerConnectionState::CONNECTED_TO_CLIENT);
+    }
+}
+
+void ServerConnectionAdapter::protocolVersionUnsupported(ProtocolVersion protocolRevision) {
+	throw BadMessageException("A server should not receive a protocol version unsupported message");
+}
+
+void ServerConnectionAdapter::serverHelloComplete() {
+	throw BadMessageException("A server should not receive a server hello complete message");
+}
+
+void ServerConnectionAdapter::offerIncomingAssignment(NetworkTableEntry* entry) {
+	transactionReceiver.offerIncomingAssignment(entry);
+}
+
+void ServerConnectionAdapter::offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value) {
+	transactionReceiver.offerIncomingUpdate(entry, sequenceNumber, value);
+}
+
+NetworkTableEntry* ServerConnectionAdapter::GetEntry(EntryId id) {
+	return entryStore.GetEntry(id);
+}
+
+void ServerConnectionAdapter::offerOutgoingAssignment(NetworkTableEntry* entry) {
+	try {
+		if(connectionState==&ServerConnectionState::CONNECTED_TO_CLIENT)
+			connection.sendEntryAssignment(*entry);
+	} catch (IOException& e) {
+		ioException(e);
+	}
+}
+void ServerConnectionAdapter::offerOutgoingUpdate(NetworkTableEntry* entry) {
+	try {
+		if(connectionState==&ServerConnectionState::CONNECTED_TO_CLIENT)
+			connection.sendEntryUpdate(*entry);
+	} catch (IOException& e) {
+		ioException(e);
+	}
+}
+
+
+void ServerConnectionAdapter::flush() {
+	try {
+		connection.flush();
+	} catch (IOException& e) {
+		ioException(e);
+	}
+}
+
+/**
+ * @return the state of the connection
+ */
+ServerConnectionState* ServerConnectionAdapter::getConnectionState() {
+	return connectionState;
+}
+
+void ServerConnectionAdapter::ensureAlive() {
+	try {
+		connection.sendKeepAlive();
+	} catch (IOException& e) {
+		ioException(e);
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.h
new file mode 100644
index 0000000..6db1e0b
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.h
@@ -0,0 +1,107 @@
+/*
+ * ServerConnectionAdapter.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERCONNECTIONADAPTER_H_
+#define SERVERCONNECTIONADAPTER_H_
+
+class ServerConnectionAdapter;
+
+#include "networktables2/connection/ConnectionMonitorThread.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "networktables2/connection/ConnectionAdapter.h"
+#include "networktables2/stream/IOStream.h"
+#include "networktables2/IncomingEntryReceiver.h"
+#include "networktables2/FlushableOutgoingEntryReceiver.h"
+#include "networktables2/server/ServerNetworkTableEntryStore.h"
+#include "networktables2/server/ServerAdapterManager.h"
+#include "networktables2/server/ServerConnectionState.h"
+#include "networktables2/thread/NTThread.h"
+#include "networktables2/thread/NTThreadManager.h"
+
+
+
+/**
+ * Object that adapts messages from a client to the server
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerConnectionAdapter : ConnectionAdapter, IncomingEntryReceiver, FlushableOutgoingEntryReceiver{
+private:
+	ServerNetworkTableEntryStore& entryStore;
+	IncomingEntryReceiver& transactionReceiver;
+	ServerAdapterManager& adapterListener;
+public:
+	/**
+	 * the connection this adapter uses
+	 */
+	NetworkTableConnection connection;
+private:
+	NTThread* readThread;
+	ConnectionMonitorThread monitorThread;
+private:
+
+	ServerConnectionState* connectionState;
+
+	void gotoState(ServerConnectionState* newState);
+
+public:
+	/**
+	 * Create a server connection adapter for a given stream
+	 * 
+	 * @param stream
+	 * @param transactionPool
+	 * @param entryStore
+	 * @param transactionReceiver
+	 * @param adapterListener
+	 * @param threadManager
+	 */
+	ServerConnectionAdapter(IOStream* stream, ServerNetworkTableEntryStore& entryStore, IncomingEntryReceiver& transactionReceiver, ServerAdapterManager& adapterListener, NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager);
+	virtual ~ServerConnectionAdapter();
+
+	void badMessage(BadMessageException& e);
+	
+	void ioException(IOException& e);
+	
+	
+	/**
+	 * stop the read thread and close the stream
+	 */
+	void shutdown(bool closeStream);
+
+	void keepAlive();
+
+	void clientHello(ProtocolVersion protocolRevision);
+
+	void protocolVersionUnsupported(ProtocolVersion protocolRevision);
+
+	void serverHelloComplete();
+
+	void offerIncomingAssignment(NetworkTableEntry* entry);
+
+	void offerIncomingUpdate(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value);
+
+	NetworkTableEntry* GetEntry(EntryId id);
+
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+	
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+
+
+	void flush();
+
+	/**
+	 * @return the state of the connection
+	 */
+	ServerConnectionState* getConnectionState();
+
+	void ensureAlive();
+
+};
+
+
+#endif /* SERVERCONNECTIONADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp
new file mode 100644
index 0000000..c774577
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp
@@ -0,0 +1,83 @@
+/*
+ * ServerConnectionList.cpp
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/ServerConnectionList.h"
+#include <algorithm>
+#include <stdio.h>
+
+
+
+ServerConnectionList::ServerConnectionList()
+{
+}
+ServerConnectionList::~ServerConnectionList()
+{
+	connectionsLock.take();
+	closeAll();
+}
+
+void ServerConnectionList::add(ServerConnectionAdapter& connection)
+{ 
+	Synchronized sync(connectionsLock);
+	connections.push_back(&connection);
+}
+
+void ServerConnectionList::close(ServerConnectionAdapter& connectionAdapter, bool closeStream)
+{ 
+	Synchronized sync(connectionsLock);
+	std::vector<ServerConnectionAdapter*>::iterator connectionPosition = std::find(connections.begin(), connections.end(), &connectionAdapter);
+	if (connectionPosition != connections.end() && (*connectionPosition)==&connectionAdapter)
+	{
+		fprintf(stdout, "Close: %p\n", &connectionAdapter);
+		fflush(stdout);
+		connections.erase(connectionPosition);
+		connectionAdapter.shutdown(closeStream);
+		delete &connectionAdapter;
+	}
+}
+
+void ServerConnectionList::closeAll()
+{ 
+	Synchronized sync(connectionsLock);
+	while(connections.size() > 0)
+	{
+		close(*connections[0], true);
+	}
+}
+
+void ServerConnectionList::offerOutgoingAssignment(NetworkTableEntry* entry)
+{ 
+	Synchronized sync(connectionsLock);
+	for(unsigned int i = 0; i < connections.size(); ++i)
+	{
+		connections[i]->offerOutgoingAssignment(entry);
+	}
+}
+void ServerConnectionList::offerOutgoingUpdate(NetworkTableEntry* entry)
+{ 
+	Synchronized sync(connectionsLock);
+	for(unsigned int i = 0; i < connections.size(); ++i)
+	{
+		connections[i]->offerOutgoingUpdate(entry);
+	}
+}
+void ServerConnectionList::flush()
+{ 
+	Synchronized sync(connectionsLock);
+	for(unsigned int i = 0; i < connections.size(); ++i)
+	{
+		connections[i]->flush();
+	}
+}
+void ServerConnectionList::ensureAlive()
+{ 
+	Synchronized sync(connectionsLock);
+	for(unsigned int i = 0; i < connections.size(); ++i)
+	{
+		connections[i]->ensureAlive();
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.h
new file mode 100644
index 0000000..fb6573c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.h
@@ -0,0 +1,59 @@
+/*
+ * ServerConnectionList.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERCONNECTIONLIST_H_
+#define SERVERCONNECTIONLIST_H_
+
+
+
+class ServerConnectionList;
+
+
+#include "networktables2/FlushableOutgoingEntryReceiver.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "ServerAdapterManager.h"
+#include "ServerConnectionAdapter.h"
+#include <vector>
+
+
+
+/**
+ * A list of connections that the server currently has
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerConnectionList : public FlushableOutgoingEntryReceiver, public ServerAdapterManager{
+private:
+	ReentrantSemaphore connectionsLock;
+	std::vector<ServerConnectionAdapter*> connections;
+	
+public:
+	ServerConnectionList();
+	virtual ~ServerConnectionList();
+	/**
+	 * Add a connection to the list
+	 * @param connection
+	 */
+	void add(ServerConnectionAdapter& connection);
+	
+	
+	void close(ServerConnectionAdapter& connectionAdapter, bool closeStream);
+	/**
+	 * close all connections and remove them
+	 */
+	void closeAll();
+	
+	void offerOutgoingAssignment(NetworkTableEntry* entry);
+	void offerOutgoingUpdate(NetworkTableEntry* entry);
+	void flush();
+	void ensureAlive();
+};
+
+
+
+#endif /* SERVERCONNECTIONLIST_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.cpp
new file mode 100644
index 0000000..2e48450
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.cpp
@@ -0,0 +1,31 @@
+/*
+ * ServerConnectionState.cpp
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/ServerConnectionState.h"
+
+ServerConnectionState ServerConnectionState::GOT_CONNECTION_FROM_CLIENT("GOT_CONNECTION_FROM_CLIENT");
+
+ServerConnectionState ServerConnectionState::CONNECTED_TO_CLIENT("CONNECTED_TO_CLIENT");
+
+ServerConnectionState ServerConnectionState::CLIENT_DISCONNECTED("CLIENT_DISCONNECTED");
+	
+
+ServerConnectionState::ServerConnectionState(const char* _name):name(_name){
+}
+const char* ServerConnectionState::toString(){
+	return name;
+}
+
+ServerConnectionState_Error::ServerConnectionState_Error(std::exception& _e):ServerConnectionState("SERVER_ERROR"),e(_e){
+}
+const char* ServerConnectionState_Error::toString(){
+	return "SERVER_ERROR";
+	//TODO return "SERVER_ERROR: "+e.getClass()+": "+e.what();
+}
+std::exception& ServerConnectionState_Error::getException(){
+	return e;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.h
new file mode 100644
index 0000000..438ce32
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.h
@@ -0,0 +1,75 @@
+/*
+ * ServerConnectionState.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERCONNECTIONSTATE_H_
+#define SERVERCONNECTIONSTATE_H_
+
+class ServerConnectionState;
+class ServerConnectionState_Error;
+
+#include <exception>
+
+
+
+/**
+ * Represents the state of a connection to the server
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerConnectionState
+{
+public:
+	/**
+	 * represents that the server has received the connection from the client but has not yet received the client hello
+	 */
+	static ServerConnectionState GOT_CONNECTION_FROM_CLIENT;
+	/**
+	 * represents that the client is in a connected non-error state
+	 */
+	static ServerConnectionState CONNECTED_TO_CLIENT;
+	/**
+	 * represents that the client has disconnected from the server
+	 */
+	static ServerConnectionState CLIENT_DISCONNECTED;
+
+private:
+	const char* name;
+protected:
+	ServerConnectionState(const char* name);
+public:
+	virtual const char* toString();
+	virtual ~ServerConnectionState()
+	{
+	}
+};
+
+/**
+ * Represents that the client is in an error state
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerConnectionState_Error : public ServerConnectionState
+{
+private:
+	std::exception& e;
+public:
+	/**
+	 * Create a new error state
+	 * @param e
+	 */
+	ServerConnectionState_Error(std::exception& e);
+
+	virtual const char* toString();
+	/**
+	 * @return the exception that caused the client connection to enter an error state
+	 */
+	std::exception& getException();
+};
+
+#endif /* SERVERCONNECTIONSTATE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingConnectionListener.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingConnectionListener.h
new file mode 100644
index 0000000..0ec2fe7
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingConnectionListener.h
@@ -0,0 +1,32 @@
+/*
+ * ServerIncomingConnectionListener.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERINCOMINGCONNECTIONLISTENER_H_
+#define SERVERINCOMINGCONNECTIONLISTENER_H_
+
+#include "ServerConnectionAdapter.h"
+
+/**
+ * Listener for new incoming server connections
+ * @author Mitchell
+ *
+ */
+class ServerIncomingConnectionListener
+{
+public:
+	virtual ~ServerIncomingConnectionListener()
+	{
+	}
+	/**
+	 * 
+	 * Called on create of a new connection
+	 * @param connectionAdapter the server connection adapter
+	 */
+	virtual void OnNewConnection(ServerConnectionAdapter& connectionAdapter) = 0;
+};
+
+#endif /* SERVERINCOMINGCONNECTIONLISTENER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.cpp
new file mode 100644
index 0000000..139439a
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.cpp
@@ -0,0 +1,57 @@
+/*
+ * ServerIncomingStreamMonitor.cpp
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/ServerIncomingStreamMonitor.h"
+#include "networktables2/stream/IOStream.h"
+
+ServerIncomingStreamMonitor::ServerIncomingStreamMonitor(IOStreamProvider& _streamProvider, ServerNetworkTableEntryStore& _entryStore,
+		ServerIncomingConnectionListener& _incomingListener, ServerAdapterManager& _adapterListener, NetworkTableEntryTypeManager& _typeManager,
+		NTThreadManager& _threadManager) :
+	streamProvider(_streamProvider), entryStore(_entryStore), incomingListener(_incomingListener), adapterListener(_adapterListener),
+			typeManager(_typeManager), threadManager(_threadManager), monitorThread(NULL)
+{
+}
+
+/**
+ * Start the monitor thread
+ */
+void ServerIncomingStreamMonitor::start()
+{
+	if (monitorThread != NULL)
+		stop();
+	monitorThread = threadManager.newBlockingPeriodicThread(this, "Server Incoming Stream Monitor Thread");
+}
+/**
+ * Stop the monitor thread
+ */
+void ServerIncomingStreamMonitor::stop()
+{
+	if (monitorThread != NULL)
+	{
+		monitorThread->stop();
+		delete monitorThread;
+		monitorThread = NULL;
+	}
+}
+
+void ServerIncomingStreamMonitor::run()
+{
+	try
+	{
+		IOStream* newStream = streamProvider.accept();
+		if(newStream != NULL)
+		{
+			ServerConnectionAdapter* connectionAdapter = new ServerConnectionAdapter(newStream, entryStore, entryStore, adapterListener, typeManager, threadManager);
+			incomingListener.OnNewConnection(*connectionAdapter);
+		}
+	}
+	catch (IOException& e)
+	{
+		//could not get a new stream for some reason. ignore and continue
+	}
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h
new file mode 100644
index 0000000..f81ff4e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h
@@ -0,0 +1,76 @@
+/*
+ * ServerIncomingStreamMonitor.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERINCOMINGSTREAMMONITOR_H_
+#define SERVERINCOMINGSTREAMMONITOR_H_
+
+
+class ServerIncomingStreamMonitor;
+
+
+#include "networktables2/thread/PeriodicRunnable.h"
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/thread/NTThread.h"
+#include "networktables2/stream/IOStreamProvider.h"
+#include "networktables2/server/ServerIncomingConnectionListener.h"
+#include "networktables2/server/ServerNetworkTableEntryStore.h"
+#include "networktables2/server/ServerAdapterManager.h"
+#include "networktables2/server/ServerConnectionAdapter.h"
+
+
+
+/**
+ * Thread that monitors for incoming connections
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerIncomingStreamMonitor : PeriodicRunnable{
+private:
+	IOStreamProvider& streamProvider;
+	ServerNetworkTableEntryStore& entryStore;
+	ServerIncomingConnectionListener& incomingListener;
+
+	ServerAdapterManager& adapterListener;
+	NetworkTableEntryTypeManager& typeManager;
+	NTThreadManager& threadManager;
+	NTThread* monitorThread;
+	
+public:
+	/**
+	 * Create a new incoming stream monitor
+	 * @param streamProvider the stream provider to retrieve streams from
+	 * @param entryStore the entry store for the server
+	 * @param transactionPool transaction pool for the server
+	 * @param incomingListener the listener that is notified of new connections
+	 * @param adapterListener the listener that will listen to adapter events
+	 * @param threadManager the thread manager used to create the incoming thread and provided to the Connection Adapters
+	 */
+	ServerIncomingStreamMonitor(IOStreamProvider& streamProvider, ServerNetworkTableEntryStore& entryStore,
+			ServerIncomingConnectionListener& incomingListener,
+			ServerAdapterManager& adapterListener,
+			NetworkTableEntryTypeManager& typeManager, NTThreadManager& threadManager);
+	
+	/**
+	 * Start the monitor thread
+	 */
+	void start();
+	/**
+	 * Stop the monitor thread
+	 */
+	void stop();
+	
+	void run();
+	
+	
+	
+};
+
+
+
+
+#endif /* SERVERINCOMINGSTREAMMONITOR_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp
new file mode 100644
index 0000000..2427d90
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp
@@ -0,0 +1,56 @@
+/*
+ * ServerNetworkTableEntryStore.cpp
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/server/ServerNetworkTableEntryStore.h"
+
+ServerNetworkTableEntryStore::ServerNetworkTableEntryStore(TableListenerManager& _listenerManager) :
+	AbstractNetworkTableEntryStore(_listenerManager)
+{
+	nextId = (EntryId)0;
+}
+ServerNetworkTableEntryStore::~ServerNetworkTableEntryStore()
+{
+}
+
+bool ServerNetworkTableEntryStore::addEntry(NetworkTableEntry* newEntry)
+{
+	Synchronized sync(LOCK);
+	NetworkTableEntry* entry = namedEntries[newEntry->name];
+	
+	if (entry == NULL)
+	{
+		newEntry->SetId(nextId++);
+		idEntries[newEntry->GetId()] = newEntry;
+		namedEntries[newEntry->name] = newEntry;
+		return true;
+	}
+	return false;
+}
+
+bool ServerNetworkTableEntryStore::updateEntry(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value)
+{
+	Synchronized sync(LOCK);
+	return entry->PutValue(sequenceNumber, value);
+}
+
+/**
+ * Send all entries in the entry store as entry assignments in a single transaction
+ * @param connection
+ * @throws IOException
+ */
+void ServerNetworkTableEntryStore::sendServerHello(NetworkTableConnection& connection)
+{
+	Synchronized sync(LOCK);
+	std::map<std::string, NetworkTableEntry*>::iterator itr;
+	for (itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
+	{
+		NetworkTableEntry* entry = itr->second;
+		connection.sendEntryAssignment(*entry);
+	}
+	connection.sendServerHelloComplete();
+	connection.flush();
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h
new file mode 100644
index 0000000..8a9cead
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h
@@ -0,0 +1,55 @@
+/*
+ * ServerNetworkTableEntryStore.h
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SERVERNETWORKTABLEENTRYSTORE_H_
+#define SERVERNETWORKTABLEENTRYSTORE_H_
+
+
+class ServerNetworkTableEntryStore;
+
+
+#include "networktables2/AbstractNetworkTableEntryStore.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "Synchronized.h"
+
+
+
+/**
+ * The entry store for a {@link NetworkTableServer}
+ * 
+ * @author Mitchell
+ *
+ */
+class ServerNetworkTableEntryStore : public AbstractNetworkTableEntryStore{
+private:
+	EntryId nextId;
+public:
+	/**
+	 * Create a new Server entry store
+	 * @param transactionPool the transaction pool
+	 * @param listenerManager the listener manager that fires events from this entry store
+	 */
+	ServerNetworkTableEntryStore(TableListenerManager& listenerManager);
+	virtual ~ServerNetworkTableEntryStore();
+	
+protected:
+	bool addEntry(NetworkTableEntry* newEntry);
+
+	bool updateEntry(NetworkTableEntry* entry, SequenceNumber sequenceNumber, EntryValue value);
+	
+public:
+	/**
+	 * Send all entries in the entry store as entry assignments in a single transaction
+	 * @param connection
+	 * @throws IOException
+	 */
+	void sendServerHello(NetworkTableConnection& connection);
+};
+
+
+
+#endif /* SERVERNETWORKTABLEENTRYSTORE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.cpp b/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.cpp
new file mode 100644
index 0000000..35d3c41
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.cpp
@@ -0,0 +1,70 @@
+/*
+ * FDIOStream.cpp
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/stream/FDIOStream.h"
+#include "networktables2/util/IOException.h"
+#include "networktables2/util/EOFException.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#ifdef _WRS_KERNEL
+#include <iolib.h>
+#else
+#include <unistd.h>
+#endif
+#include <stdio.h>
+
+
+FDIOStream::FDIOStream(int _fd){
+  fd = _fd;
+  //	f = fdopen(_fd, "rbwb");
+  //	if(f==NULL)
+  //		throw IOException("Could not open stream from file descriptor", errno);
+}
+FDIOStream::~FDIOStream(){
+	close();
+}
+
+int FDIOStream::read(void* ptr, int numbytes){
+	if(numbytes==0)
+		return 0;
+	char* bufferPointer = (char*)ptr;
+	int totalRead = 0;
+	while (totalRead < numbytes) {
+		int numRead = ::read(fd, bufferPointer, numbytes-totalRead);
+		if(numRead == 0){
+			throw EOFException();
+		}
+		else if (numRead < 0) {
+			perror("read error: ");
+			fflush(stderr);
+			throw IOException("Error on FDIO read");
+		}
+		bufferPointer += numRead;
+		totalRead += numRead;
+	}
+	return totalRead;
+}
+int FDIOStream::write(const void* ptr, int numbytes){
+  int numWrote = ::write(fd, (char*)ptr, numbytes);//TODO: this is bad
+  //int numWrote = fwrite(ptr, 1, numbytes, f);
+  if(numWrote==numbytes)
+    return numWrote;
+  perror("write error: ");
+  fflush(stderr);
+  throw IOException("Could not write all bytes to fd stream");
+	
+}
+void FDIOStream::flush(){
+  //if(fflush(f)==EOF)
+  //  throw EOFException();
+}
+void FDIOStream::close(){
+  //fclose(f);//ignore any errors closing
+  ::close(fd);
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.h b/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.h
new file mode 100644
index 0000000..df8048a
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.h
@@ -0,0 +1,36 @@
+/*
+ * FDIOStream.h
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef FDIOSTREAM_H_
+#define FDIOSTREAM_H_
+
+
+
+class FDIOStream;
+
+
+#include "IOStream.h"
+#include <stdio.h>
+
+
+
+class FDIOStream : public IOStream{
+private:
+    //FILE* f;
+    int fd;
+public:
+	FDIOStream(int fd);
+	virtual ~FDIOStream();
+	int read(void* ptr, int numbytes);
+	int write(const void* ptr, int numbytes);
+	void flush();
+	void close();
+};
+
+
+
+#endif /* FDIOSTREAM_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/IOStream.h b/aos/externals/WPILib/WPILib/networktables2/stream/IOStream.h
new file mode 100644
index 0000000..7f08b54
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/IOStream.h
@@ -0,0 +1,25 @@
+/*
+ * IOStream.h
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IOSTREAM_H_
+#define IOSTREAM_H_
+
+class IOStream;
+
+class IOStream
+{
+public:
+	virtual ~IOStream()
+	{
+	}
+	virtual int read(void* ptr, int numbytes) = 0;
+	virtual int write(const void* ptr, int numbytes) = 0;
+	virtual void flush() = 0;
+	virtual void close() = 0;
+};
+
+#endif /* IOSTREAM_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamFactory.h b/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamFactory.h
new file mode 100644
index 0000000..537e201
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamFactory.h
@@ -0,0 +1,32 @@
+/*
+ * IOStreamFactory.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IOSTREAMFACTORY_H_
+#define IOSTREAMFACTORY_H_
+
+#include "IOStream.h"
+
+/**
+ * A factory that will create the same IOStream. A stream returned by this factory should be closed before calling createStream again
+ * 
+ * @author Mitchell
+ *
+ */
+class IOStreamFactory
+{
+public:
+	virtual ~IOStreamFactory()
+	{
+	}
+	/**
+	 * @return create a new stream
+	 * @throws IOException
+	 */
+	virtual IOStream* createStream() = 0;
+};
+
+#endif /* IOSTREAMFACTORY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamProvider.h b/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamProvider.h
new file mode 100644
index 0000000..138b690
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamProvider.h
@@ -0,0 +1,38 @@
+/*
+ * IOStreamProvider.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IOSTREAMPROVIDER_H_
+#define IOSTREAMPROVIDER_H_
+
+#include "IOStream.h"
+
+/**
+ * An object that will provide the IOStream of clients to a NetworkTable Server
+ * 
+ * @author mwills
+ *
+ */
+class IOStreamProvider
+{
+public:
+	virtual ~IOStreamProvider()
+	{
+	}
+	/**
+	 * 
+	 * @return a new IOStream normally from a server
+	 * @throws IOException
+	 */
+	virtual IOStream* accept() = 0;
+	/**
+	 * Close the source of the IOStreams. {@link #accept()} should not be called after this is called
+	 * @throws IOException
+	 */
+	virtual void close() = 0;
+};
+
+#endif /* IOSTREAMPROVIDER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.cpp b/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.cpp
new file mode 100644
index 0000000..8450cda
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.cpp
@@ -0,0 +1,126 @@
+/*
+ * SocketServerStreamProvider.cpp
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/stream/SocketServerStreamProvider.h"
+#include "networktables2/stream/FDIOStream.h"
+#include "networktables2/util/IOException.h"
+
+#include <strings.h>
+#include <cstring>
+#include <errno.h>
+#ifdef _WRS_KERNEL
+#include <inetLib.h>
+#include <selectLib.h>
+#include <sockLib.h>
+#include <taskLib.h>
+#include <usrLib.h>
+#include <ioLib.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#else
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+#ifdef WIN32
+#include <windows.h>
+#include <winsock.h>
+#include <winsock2.h>
+#include <wininet.h>
+#include <ws2tcpip.h>
+#else
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#endif
+#endif
+
+#ifndef ERROR
+#define ERROR -1
+#endif
+
+#if defined(WIN32) || defined(_WRS_KERNEL)
+typedef int addrlen_t;
+#else
+typedef socklen_t addrlen_t;
+#endif
+
+
+SocketServerStreamProvider::SocketServerStreamProvider(int port){
+	struct sockaddr_in serverAddr;
+	int sockAddrSize = sizeof(serverAddr);
+	memset(&serverAddr, 0, sockAddrSize);
+
+#ifdef _WRS_KERNEL
+	serverAddr.sin_len = (u_char)sockAddrSize;
+#endif
+	serverAddr.sin_family = AF_INET;
+	serverAddr.sin_port = htons(port);
+	serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+
+	if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
+	{
+		throw IOException("Error creating server socket", errno);
+	}
+
+	// Set the TCP socket so that it can be reused if it is in the wait state.
+	int reuseAddr = 1;
+	setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuseAddr, sizeof(reuseAddr));
+
+	// Bind socket to local address.
+	if (bind(serverSocket, (struct sockaddr *)&serverAddr, sockAddrSize) == ERROR)
+	{
+		::close(serverSocket);
+		throw IOException("Could not bind server socket", errno);
+	}
+
+	if (listen(serverSocket, 1) == ERROR)
+	{
+		::close(serverSocket);
+		throw IOException("Could not listen on server socket", errno);
+	}
+}
+SocketServerStreamProvider::~SocketServerStreamProvider(){
+	close();
+}
+
+
+IOStream* SocketServerStreamProvider::accept(){
+	struct timeval timeout;
+	// Check for a shutdown once per second
+	timeout.tv_sec = 1;
+	timeout.tv_usec = 0;
+	while (true)
+	{
+		fd_set fdSet;
+
+		FD_ZERO(&fdSet);
+		FD_SET(serverSocket, &fdSet);
+		if (select(FD_SETSIZE, &fdSet, NULL, NULL, &timeout) > 0)
+		{
+			if (FD_ISSET(serverSocket, &fdSet))
+			{
+				struct sockaddr clientAddr = {0};
+				addrlen_t clientAddrSize = 0;
+				int connectedSocket = ::accept(serverSocket, &clientAddr, &clientAddrSize);
+				if (connectedSocket == ERROR)
+					return NULL;
+				
+				int on = 1;
+				setsockopt(connectedSocket, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on));
+				
+				return new FDIOStream(connectedSocket);
+			}
+		}
+	}
+	return NULL;
+}
+
+void SocketServerStreamProvider::close(){
+	::close(serverSocket);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.h b/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.h
new file mode 100644
index 0000000..6efe5fd
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.h
@@ -0,0 +1,33 @@
+/*
+ * SocketServerStreamProvider.h
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SOCKETSERVERSTREAMPROVIDER_H_
+#define SOCKETSERVERSTREAMPROVIDER_H_
+
+
+class SocketServerStreamProvider;
+
+#include "IOStream.h"
+#include "IOStreamProvider.h"
+
+
+
+
+class SocketServerStreamProvider : public IOStreamProvider{
+private:
+	int serverSocket;
+public:
+	SocketServerStreamProvider(int port);
+	virtual ~SocketServerStreamProvider();
+	IOStream* accept();
+	void close();
+};
+
+
+
+
+#endif /* SOCKETSERVERSTREAMPROVIDER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.cpp b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.cpp
new file mode 100644
index 0000000..c3ac85c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.cpp
@@ -0,0 +1,67 @@
+/*
+ * SocketStreamFactory.cpp
+ *
+ *  Created on: Nov 3, 2012
+ *      Author: Mitchell Wills
+ */
+
+
+#include <cstring>
+#ifdef _WRS_KERNEL
+#else
+	#include <stdlib.h>
+	#include <stdio.h>
+	#include <sys/types.h>
+	#include <unistd.h>
+	#ifdef WIN32
+	   #include <winsock.h>
+	   #include <winsock2.h>
+	#else
+		#include <sys/socket.h>
+		#include <sys/un.h>
+                #include <netdb.h>
+		#include <netinet/in.h>
+		#include <netinet/tcp.h>
+	#endif
+#endif
+#include "networktables2/stream/FDIOStream.h"
+#include "networktables2/stream/SocketStreamFactory.h"
+
+
+SocketStreamFactory::SocketStreamFactory(const char* _host, int _port):host(_host), port(_port){}
+
+SocketStreamFactory::~SocketStreamFactory(){}
+
+IOStream* SocketStreamFactory::createStream(){
+#ifdef _WRS_KERNEL
+	//crio client not supported
+	return NULL;
+#else
+    struct sockaddr_in serv_addr;
+    struct hostent *server;
+
+    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
+    if (sockfd < 0){
+        //error("ERROR opening socket");
+        return NULL;
+    }
+    server = gethostbyname(host);
+    if (server == NULL) {
+        //fprintf(stderr,"ERROR, no such host\n");
+        return NULL;
+    }
+	memset(&serv_addr, 0, sizeof(serv_addr));
+    serv_addr.sin_family = AF_INET;
+    memcpy(&serv_addr.sin_addr.s_addr, server->h_addr, server->h_length);
+    serv_addr.sin_port = htons(port);
+    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) {
+        //error("ERROR connecting");
+    	return NULL;
+    }//TODO close fd if an error occured
+
+	int on = 1;
+	setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on));
+
+	return new FDIOStream(sockfd);
+#endif
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.h b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.h
new file mode 100644
index 0000000..756a69c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.h
@@ -0,0 +1,36 @@
+/*
+ * SocketStreamFactory.h
+ *
+ *  Created on: Nov 3, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SOCKETSTREAMFACTORY_H_
+#define SOCKETSTREAMFACTORY_H_
+
+class SocketStreamFactory;
+
+#include "networktables2/stream/IOStreamFactory.h"
+#include <string>
+
+/**
+ * 
+ * @author mwills
+ *
+ */
+class SocketStreamFactory : public IOStreamFactory{
+private:
+	const char* host;
+	const int port;
+
+public:
+	SocketStreamFactory(const char* host, int port);
+	virtual ~SocketStreamFactory();
+
+	IOStream* createStream();
+
+};
+
+
+
+#endif /* SOCKETSTREAMFACTORY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.cpp b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.cpp
new file mode 100644
index 0000000..6eaf65a
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.cpp
@@ -0,0 +1,21 @@
+/*
+ * SocketStreams.cpp
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/stream/SocketStreams.h"
+#include "networktables2/stream/SocketStreamFactory.h"
+#include "networktables2/stream/SocketServerStreamProvider.h"
+
+
+
+IOStreamFactory& SocketStreams::newStreamFactory(const char* host, int port){
+	return *new SocketStreamFactory(host, port);
+}
+
+IOStreamProvider& SocketStreams::newStreamProvider(int port){
+	return *new SocketServerStreamProvider(port);
+}
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.h b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.h
new file mode 100644
index 0000000..daa2376
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.h
@@ -0,0 +1,48 @@
+/*
+ * SocketStreams.h
+ *
+ *  Created on: Sep 27, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef SOCKETSTREAMS_H_
+#define SOCKETSTREAMS_H_
+
+
+class SocketStreams;
+
+
+#include "IOStreamFactory.h"
+#include "IOStreamProvider.h"
+
+
+
+/**
+ * Static factory for socket stream factories and providers
+ * 
+ * @author Mitchell
+ *
+ */
+class SocketStreams {
+public:
+	/**
+	 * Create a new IOStream factory 
+	 * @param host
+	 * @param port
+	 * @return a IOStreamFactory that will create Socket Connections on the given host and port
+	 * @throws IOException
+	 */
+	static IOStreamFactory& newStreamFactory(const char* host, int port);
+
+	/**
+	 * Create a new IOStream provider
+	 * @param port
+	 * @return an IOStreamProvider for a socket server on the given port
+	 * @throws IOException
+	 */
+	static IOStreamProvider& newStreamProvider(int port);
+};
+
+
+
+#endif /* SOCKETSTREAMS_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManager.h b/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManager.h
new file mode 100644
index 0000000..a793405
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManager.h
@@ -0,0 +1,42 @@
+/*
+ * DefaultThreadManager.h
+ *
+ *  Created on: Sep 21, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef DEFAULTTHREADMANAGER_H_
+#define DEFAULTTHREADMANAGER_H_
+
+class DefaultThreadManager;
+class PeriodicNTThread;
+
+#include "networktables2/thread/PeriodicRunnable.h"
+#include "networktables2/thread/NTThreadManager.h"
+#include "networktables2/thread/NTThread.h"
+#include "Task.h"
+
+
+
+
+class DefaultThreadManager : public NTThreadManager{
+	virtual NTThread* newBlockingPeriodicThread(PeriodicRunnable* r, const char* name);
+};
+
+class PeriodicNTThread : public NTThread {
+private:
+	const char* name;
+	Task* thread;
+	PeriodicRunnable* r;
+	bool run;
+	int _taskMain();
+	static int taskMain(PeriodicNTThread* o);
+public:
+	PeriodicNTThread(PeriodicRunnable* r, const char* name);
+	virtual ~PeriodicNTThread();
+	virtual void stop();
+	virtual bool isRunning();
+};
+
+
+#endif /* DEFAULTTHREADMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManger.cpp b/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManger.cpp
new file mode 100644
index 0000000..bc95344
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManger.cpp
@@ -0,0 +1,50 @@
+/*
+ * DefaultThreadManger.cpp
+ *
+ *  Created on: Sep 21, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/thread/DefaultThreadManager.h"
+#include <stdio.h>
+
+
+PeriodicNTThread::PeriodicNTThread(PeriodicRunnable* _r, const char* _name) : 
+			name(_name), thread(new Task(name, (FUNCPTR)PeriodicNTThread::taskMain)), r(_r), run(true){
+	fprintf(stdout, "Starting task: %s\n", name);
+	fflush(stdout);
+	thread->Start((UINT32)this);
+}
+
+PeriodicNTThread::~PeriodicNTThread(){
+	//TODO somehow do this async
+	//delete thread;
+}
+int PeriodicNTThread::taskMain(PeriodicNTThread* o){//static wrapper
+	return o->_taskMain();
+}
+int PeriodicNTThread::_taskMain(){
+	try {
+		while(run){
+			r->run();
+		}
+	} catch (...) {
+		fprintf(stdout, "Task exited with uncaught exception %s\n", name);
+		fflush(stdout);
+		return 1;
+	}
+	fprintf(stdout, "Task exited normally: %s\n", name);
+	fflush(stdout);
+	return 0;
+}
+void PeriodicNTThread::stop() {
+	run = false;
+	//TODO thread->Stop();
+}
+bool PeriodicNTThread::isRunning() {
+	return thread->IsReady();
+}
+
+NTThread* DefaultThreadManager::newBlockingPeriodicThread(PeriodicRunnable* r, const char* name) {
+	return new PeriodicNTThread(r, name);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/thread/NTThread.h b/aos/externals/WPILib/WPILib/networktables2/thread/NTThread.h
new file mode 100644
index 0000000..3b6e018
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/thread/NTThread.h
@@ -0,0 +1,34 @@
+/*
+ * NTThread.h
+ *
+ *  Created on: Sep 21, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NTTHREAD_H_
+#define NTTHREAD_H_
+
+/**
+ * Represents a thread in the network tables system
+ * @author mwills
+ *
+ */
+class NTThread
+{
+public:
+	virtual ~NTThread()
+	{
+	}
+	;
+	/**
+	 * stop the thread
+	 */
+	virtual void stop() = 0;
+
+	/**
+	 * @return true if the thread is running
+	 */
+	virtual bool isRunning() = 0;
+};
+
+#endif /* NTTHREAD_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/thread/NTThreadManager.h b/aos/externals/WPILib/WPILib/networktables2/thread/NTThreadManager.h
new file mode 100644
index 0000000..a5c8698
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/thread/NTThreadManager.h
@@ -0,0 +1,36 @@
+/*
+ * NTThreadManager.h
+ *
+ *  Created on: Sep 21, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NTTHREADMANAGER_H_
+#define NTTHREADMANAGER_H_
+
+class NTThreadManager;
+
+#include "NTThread.h"
+#include "networktables2/thread/PeriodicRunnable.h"
+
+/**
+ * A thread manager that can be used to obtain new threads
+ * 
+ * @author Mitchell
+ *
+ */
+class NTThreadManager
+{
+public:
+	virtual ~NTThreadManager()
+	{
+	}
+	/**
+	 * @param r
+	 * @param name the name of the thread
+	 * @return a thread that will run the provided runnable repeatedly with the assumption that the runnable will block
+	 */
+	virtual NTThread* newBlockingPeriodicThread(PeriodicRunnable* r, const char* name) = 0;
+};
+
+#endif /* NTTHREADMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/thread/PeriodicRunnable.h b/aos/externals/WPILib/WPILib/networktables2/thread/PeriodicRunnable.h
new file mode 100644
index 0000000..fadb8c2
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/thread/PeriodicRunnable.h
@@ -0,0 +1,31 @@
+/*
+ * PeriodicRunnable.h
+ *
+ *  Created on: Sep 21, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef PERIODICRUNNABLE_H_
+#define PERIODICRUNNABLE_H_
+
+/**
+ * A runnable where the run method will be called periodically 
+ * 
+ * @author Mitchell
+ *
+ */
+class PeriodicRunnable
+{
+public:
+	virtual ~PeriodicRunnable()
+	{
+	}
+	/**
+	 * the method that will be called periodically on a thread
+	 * 
+	 * @throws InterruptedException thrown when the thread is supposed to be interrupted and stop (implementers should always let this exception fall through)
+	 */
+	virtual void run() = 0;
+};
+
+#endif /* PERIODICRUNNABLE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.cpp b/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.cpp
new file mode 100644
index 0000000..386fff5
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.cpp
@@ -0,0 +1,72 @@
+/*
+ * ArrayData.cpp
+ *
+ *  Created on: Nov 14, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/ArrayData.h"
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+#include <cstring>
+#include <stdlib.h>
+#include <memory>
+
+ArrayData::ArrayData(ArrayEntryType& type) : ComplexData(type), m_data_type(type){
+	m_size = 0;
+	data = NULL;
+}
+
+EntryValue ArrayData::_get(unsigned int index){//TODO bounds checking
+	return data[index];
+}
+
+void ArrayData::_set(unsigned int index, EntryValue value){//TODO bounds checking
+	m_data_type.deleteElement(data[index]);
+	data[index] = m_data_type.copyElement(value);
+}
+
+void ArrayData::_add(EntryValue value){
+	setSize(size()+1);
+	data[size()-1] = m_data_type.copyElement(value);
+}
+
+void ArrayData::remove(unsigned int index){
+	//if(index<0 || index>=size())
+	//	throw IndexOutOfBoundsException();//TODO bounds check
+	m_data_type.deleteElement(data[index]);
+	EntryValue nullValue = {0};
+	data[index] = nullValue;
+	if(index < size()-1){
+		memcpy(data+index, data+index+1, (size()-index-1) * sizeof(EntryValue));
+	}
+	setSize(size()-1);
+}
+void ArrayData::setSize(unsigned int newSize){
+	if(newSize==m_size)//TODO bound check greater than max size
+		return;
+	EntryValue* newArray = (EntryValue*)malloc(newSize*sizeof(EntryValue));//TODO cache arrays
+	if(newSize<m_size){
+		memcpy(newArray, data, newSize * sizeof(EntryValue));
+		for(unsigned int i = newSize; i<m_size; ++i)
+			m_data_type.deleteElement(data[i]);
+	}
+	else{
+	  if(data!=NULL)
+		memcpy(newArray, data, m_size * sizeof(EntryValue));
+	  else
+	    m_size = 0;//ensure that the current size is actually 0 otherwise will end up with uninitialized values in the array
+	  EntryValue nullValue = {0};
+	  for(unsigned int i = m_size; i<newSize; ++i)
+	    newArray[i] = nullValue;
+	}
+	if(data!=NULL)
+		free(data);
+	data = newArray;
+	m_size = newSize;
+}
+unsigned int ArrayData::size(){
+	return m_size;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.h b/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.h
new file mode 100644
index 0000000..4cb733e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.h
@@ -0,0 +1,88 @@
+/*
+ * ArrayData.h
+ *
+ *  Created on: Nov 14, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ARRAYDATA_H_
+#define ARRAYDATA_H_
+
+class ArrayData;
+
+#include "ArrayEntryType.h"
+#include "ComplexData.h"
+#include "networktables2/NetworkTableEntry.h"
+
+/**
+ * Defines the internal representation for an array. 
+ */
+class ArrayData : public ComplexData{
+private:
+    ArrayEntryType& m_data_type;
+    unsigned int m_size;
+    EntryValue* data;
+public:
+    /**
+     * Creates a new ArrayData of the given type.
+     * 
+     * @param type The ArrayEntryType representing the type
+     * 	information that this ArrayData should satisfy.
+     */
+    ArrayData(ArrayEntryType& type);
+    
+protected:
+    /**
+     * Gets the value stored at the specified index.
+     * 
+     * @param index The array index to retrieve.
+     */
+    EntryValue _get(unsigned int index);
+    
+    /**
+     * Updates the value stored at the specified index.
+     * 
+     * The value currently stored at the given index is deleted.
+     * 
+     * @param index The array index to update.
+     * @param value The value to store. This value must have
+     * 	the same type as the ArrayEntryType indicates.
+     */
+    void _set(unsigned int index, EntryValue value);
+    
+    /**
+     * Appends the given value to the end of this array.
+     * 
+     * @param value The value to store. This value must have
+     * 	the same type as the ArrayEntryType indicates.
+     */
+    void _add(EntryValue value);
+    
+public:
+    /**
+     * Removes and deletes the value stored at the specified index.
+     * 
+     * @param index The index of the value to remove.
+     */
+    void remove(unsigned int index);
+    
+    /**
+     * Sets the new size of this array data structure.
+     * 
+     * @param size The new size that this array should assume.
+     */
+    void setSize(unsigned int size);
+    
+    /**
+     * Gets the current size of this array data structure.
+     * 
+     * @return The current number of elements that this array may contain.
+     */
+    unsigned int size();
+
+    friend class ArrayEntryType;
+};
+
+
+
+#endif /* ARRAYDATA_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.cpp b/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.cpp
new file mode 100644
index 0000000..719a738
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.cpp
@@ -0,0 +1,107 @@
+/*
+ * ArrayEntryType.cpp
+ *
+ *  Created on: Nov 14, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/ArrayEntryType.h"
+
+ArrayEntryType::ArrayEntryType(TypeId id, NetworkTableEntryType& elementType)
+	: ComplexEntryType(id, "Array"), m_elementType(elementType){ //TODO super(id, "Array of [" + elementType.name + "]");
+}
+
+EntryValue ArrayEntryType::copyElement(EntryValue value){
+  return m_elementType.copyValue(value);
+}
+void ArrayEntryType::deleteElement(EntryValue value){
+  m_elementType.deleteValue(value);
+}
+
+
+void ArrayEntryType::sendValue(EntryValue value, DataIOStream& os) {
+	ArrayEntryData* dataArray = (ArrayEntryData*) value.ptr;
+	/*if (dataArray->length > 255) {//TODO throw better exception
+		throw IOException("Cannot write " + value + " as " + name + ". Arrays have a max length of 255 values");
+	}*/
+	os.writeByte(dataArray->length);
+	for (int i = 0; i < dataArray->length; ++i) {
+		m_elementType.sendValue(dataArray->array[i], os);
+	}
+}
+
+EntryValue ArrayEntryType::readValue(DataIOStream& is) {
+	uint8_t length = is.readByte();
+	EntryValue* array = (EntryValue*)malloc(length*sizeof(EntryValue));//TODO cache object arrays
+	for (int i = 0; i < length; ++i) {
+		array[i] = m_elementType.readValue(is);
+	}
+	
+	ArrayEntryData* dataArray = (ArrayEntryData*)malloc(sizeof(ArrayEntryData));
+	dataArray->length = length;
+	dataArray->array = array;
+	
+	EntryValue eValue;
+	eValue.ptr = dataArray;
+	return eValue;
+}
+
+EntryValue ArrayEntryType::copyValue(EntryValue value){
+	ArrayEntryData* otherDataArray = (ArrayEntryData*) value.ptr;
+
+	EntryValue* array = (EntryValue*)malloc(otherDataArray->length*sizeof(EntryValue));//TODO cache object arrays
+	for (int i = 0; i < otherDataArray->length; ++i) {
+		array[i] = m_elementType.copyValue(otherDataArray->array[i]);
+	}
+	
+	ArrayEntryData* dataArray = (ArrayEntryData*)malloc(sizeof(ArrayEntryData));
+	dataArray->length = otherDataArray->length;
+	dataArray->array = array;
+	
+	EntryValue eValue;
+	eValue.ptr = dataArray;
+	return eValue;
+}
+void ArrayEntryType::deleteValue(EntryValue value){
+	ArrayEntryData* dataArray = (ArrayEntryData*) value.ptr;
+	if(dataArray!=NULL){
+	  for (int i = 0; i < dataArray->length; ++i) {
+	    m_elementType.deleteValue(dataArray->array[i]);
+	  }
+	  free(dataArray->array);
+	  free(dataArray);
+	}
+}
+
+EntryValue ArrayEntryType::internalizeValue(std::string& key, ComplexData& externalRepresentation, EntryValue currentInteralValue) {
+	// TODO: Argument 'key' appears unused.
+	ArrayData& externalArrayData = (ArrayData&)externalRepresentation;
+	ArrayEntryData* internalArray = (ArrayEntryData*) currentInteralValue.ptr;
+	if(internalArray != NULL && internalArray->length==externalArrayData.size()){
+		for(int i = 0; i<internalArray->length; ++i){
+			m_elementType.deleteValue(internalArray->array[i]);
+			internalArray->array[i] = m_elementType.copyValue(externalArrayData._get(i));
+		}
+		return currentInteralValue;
+	}
+	else{
+		internalArray = (ArrayEntryData*)malloc(sizeof(ArrayEntryData));
+		internalArray->array = (EntryValue*)malloc(externalArrayData.size()*sizeof(EntryValue));//TODO cache object arrays
+		internalArray->length = externalArrayData.size();
+		for (int i = 0; i < internalArray->length; ++i) {
+			internalArray->array[i] = m_elementType.copyValue(externalArrayData._get(i));
+		}
+		EntryValue eValue;
+		eValue.ptr = internalArray;
+		return eValue;
+	}
+}
+
+void ArrayEntryType::exportValue(std::string& key, EntryValue internalData, ComplexData& externalRepresentation) {
+	ArrayEntryData* internalArray = (ArrayEntryData*) internalData.ptr;
+	ArrayData& externalArrayData = (ArrayData&)externalRepresentation;
+	externalArrayData.setSize(internalArray->length);
+	for(int i = 0; i<internalArray->length; ++i){
+		externalArrayData._set(i, m_elementType.copyValue(internalArray->array[i]));
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h b/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h
new file mode 100644
index 0000000..0a188a0
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h
@@ -0,0 +1,103 @@
+/*
+ * ArrayEntryType.h
+ *
+ *  Created on: Nov 14, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ARRAYENTRYTYPE_H_
+#define ARRAYENTRYTYPE_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+class ArrayEntryType;
+
+#include "ArrayData.h"
+#include "ComplexEntryType.h"
+
+struct ArrayEntryData{
+	uint8_t length;
+	EntryValue* array;
+};
+/**
+ * Represents the size and contents of an array.
+ */
+typedef struct ArrayEntryData ArrayEntryData;
+
+/**
+ * Represents the type of an array entry value.
+ */
+class ArrayEntryType : public ComplexEntryType {//TODO allow for array of complex type
+private:
+    NetworkTableEntryType& m_elementType;
+    
+public:
+    /**
+     * Creates a new ArrayEntryType.
+     * 
+     * @param id The ID which identifies this type to other nodes on
+     * 	across the network.
+     * @param elementType The type of the elements this array contains.
+     */
+    ArrayEntryType(TypeId id, NetworkTableEntryType& elementType);
+
+    /**
+     * Creates a copy of an value which is of the type contained by
+     * this array.
+     * 
+     * @param value The element, of this array's contained type, to
+     * 	copy.
+     * @return A copy of the given value.
+     */
+	EntryValue copyElement(EntryValue value);
+	
+	/**
+	 * Deletes a entry value which is of the type contained by
+	 * this array.
+	 * 
+	 * After calling this method, the given entry value is
+	 * no longer valid.
+	 * 
+	 * @param value The value to delete.
+	 */
+	void deleteElement(EntryValue value);
+	
+	/**
+	 * See {@link NetworkTableEntryType}::sendValue
+	 */
+	void sendValue(EntryValue value, DataIOStream& os);
+
+	/**
+	 * See {@link NetworkTableEntryType}::readValue
+	 */
+	EntryValue readValue(DataIOStream& is);
+	
+	/**
+	 * See {@link NetworkTableEntryType}::copyValue
+	 */    
+	EntryValue copyValue(EntryValue value);
+	
+	/**
+	 * See {@link NetworkTableEntryType}::deleteValue
+	 */
+	void deleteValue(EntryValue value);
+	
+	/**
+	 * See {@link ComplexEntryType}::internalizeValue
+	 */
+	EntryValue internalizeValue(std::string& key, ComplexData& externalRepresentation, EntryValue currentInteralValue);
+
+	/**
+	 * See {@link ComplexEntryType}::exportValue
+	 */
+	void exportValue(std::string& key, EntryValue internalData, ComplexData& externalRepresentation);
+    
+    
+    
+};
+
+#endif /* ARRAYENTRYTYPE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.cpp b/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.cpp
new file mode 100644
index 0000000..1cac713
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.cpp
@@ -0,0 +1,32 @@
+/*
+ * BooleanArray.cpp
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/BooleanArray.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+
+
+const TypeId BooleanArray::BOOLEAN_ARRAY_RAW_ID = 0x10;
+ArrayEntryType BooleanArray::TYPE(BOOLEAN_ARRAY_RAW_ID, DefaultEntryTypes::BOOLEAN);
+
+BooleanArray::BooleanArray() : ArrayData(TYPE) {
+}
+
+bool BooleanArray::get(int index){
+	return _get(index).b;
+}
+
+void BooleanArray::set(int index, bool value){
+	EntryValue eValue;
+	eValue.b = value;
+	_set(index, eValue);
+}
+
+void BooleanArray::add(bool value){
+	EntryValue eValue;
+	eValue.b = value;
+	_add(eValue);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.h b/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.h
new file mode 100644
index 0000000..2f078c8
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.h
@@ -0,0 +1,31 @@
+/*
+ * BooleanArray.h
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef BOOLEANARRAY_H_
+#define BOOLEANARRAY_H_
+
+#include "networktables2/type/ArrayData.h"
+#include "networktables2/type/ArrayEntryType.h"
+
+//TODO: BooleanArray appears unused; replace with namespace?
+class BooleanArray : public ArrayData{
+
+public:
+	static const TypeId BOOLEAN_ARRAY_RAW_ID;
+    static ArrayEntryType TYPE;
+
+
+    BooleanArray();
+
+    bool get(int index);
+    void set(int index, bool value);
+    void add(bool value);
+};
+
+
+
+#endif /* BOOLEANARRAY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.cpp b/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.cpp
new file mode 100644
index 0000000..5473362
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.cpp
@@ -0,0 +1,15 @@
+/*
+ * ComplexData.cpp
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/ComplexData.h"
+
+
+ComplexData::ComplexData(ComplexEntryType& _type) : type(_type){}
+	
+ComplexEntryType& ComplexData::GetType() {
+	return type;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.h b/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.h
new file mode 100644
index 0000000..629fc35
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.h
@@ -0,0 +1,42 @@
+/*
+ * ComplexData.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef COMPLEXDATA_H_
+#define COMPLEXDATA_H_
+
+
+class ComplexData;
+
+
+//#include "ComplexEntryType.h" can't do this cause it causes order of definition issues
+class ComplexEntryType;
+
+/**
+ * Base class for non-primitive data structures.
+ */
+class ComplexData{
+private:
+	ComplexEntryType& type;
+public:
+	/**
+	 * Creates a new ComplexData of the given type.
+	 * 
+	 * @param type The type of this data structure.
+	 */
+	ComplexData(ComplexEntryType& type);
+	    
+	/**
+	 * Gets the type of this data structure.
+	 * 
+	 * @return The type of this data structure.
+	 */
+	ComplexEntryType& GetType();
+
+};
+
+
+#endif /* COMPLEXDATA_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp b/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp
new file mode 100644
index 0000000..0d78a1b
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp
@@ -0,0 +1,15 @@
+/*
+ * ComplexEntryType.cpp
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/ComplexEntryType.h"
+
+
+ComplexEntryType::ComplexEntryType(TypeId id, const char* name) : NetworkTableEntryType(id, name){}
+
+bool ComplexEntryType::isComplex(){
+	return true;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.h b/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.h
new file mode 100644
index 0000000..0955c91
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.h
@@ -0,0 +1,54 @@
+/*
+ * ComplexEntryType.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef COMPLEXENTRYTYPE_H_
+#define COMPLEXENTRYTYPE_H_
+
+class ComplexEntryType;
+
+#include "networktables2/type/NetworkTableEntryType.h"
+
+/**
+ * Represents a non-primitive data type (i.e. not a string, double, 
+ * or boolean).
+ */
+class ComplexEntryType : public NetworkTableEntryType
+{
+protected:
+	ComplexEntryType(TypeId id, const char* name);
+public:
+	virtual ~ComplexEntryType()
+	{
+	}
+	
+	/**
+	 * See {@link NetworkTableEntryType}::isComplex.
+	 */
+	virtual bool isComplex();
+	
+	/**
+	 * Updates the internal representation for an entry of this type with the
+	 * given value.
+	 * 
+	 * @param key The name of the field to update.
+	 * @param externalRepresentation The existing data structure to update.
+	 * @param currentInternalValue The value to update the external representation with.
+	 */
+	virtual EntryValue internalizeValue(std::string& key, ComplexData& externalRepresentation, EntryValue currentInteralValue) = 0;
+	
+	/**
+	 * Updates the given external representation for an entry of this type with
+	 * the given internal value.
+	 * 
+	 * @param key The name of the field to export.
+	 * @param internalData The current value to reference.
+	 * @param externalRepresentation The external representation to update.
+	 */
+	virtual void exportValue(std::string& key, EntryValue internalData, ComplexData& externalRepresentation) = 0;
+};
+
+#endif /* COMPLEXENTRYTYPE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.cpp b/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.cpp
new file mode 100644
index 0000000..1f3951c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.cpp
@@ -0,0 +1,85 @@
+/*
+ * DefaultEntryTypes.cpp
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/DefaultEntryTypes.h"
+#include "networktables2/type/NetworkTableEntryType.h"
+#include "networktables2/connection/DataIOStream.h"
+#include "networktables2/type/BooleanArray.h"
+#include "networktables2/type/NumberArray.h"
+#include "networktables2/type/StringArray.h"
+
+
+DefaultEntryTypes::BOOLEAN_t DefaultEntryTypes::BOOLEAN;
+DefaultEntryTypes::DOUBLE_t DefaultEntryTypes::DOUBLE;
+DefaultEntryTypes::STRING_t DefaultEntryTypes::STRING;
+
+DefaultEntryTypes::BOOLEAN_t::BOOLEAN_t() : NetworkTableEntryType(BOOLEAN_RAW_ID, "Boolean"){}
+void DefaultEntryTypes::BOOLEAN_t::sendValue(EntryValue value, DataIOStream& os) {
+	os.writeByte(value.b);
+}
+EntryValue DefaultEntryTypes::BOOLEAN_t::readValue(DataIOStream& is) {
+	EntryValue value;
+	value.b = (is.readByte()!=0);
+	return value;
+}
+	
+DefaultEntryTypes::DOUBLE_t::DOUBLE_t() : NetworkTableEntryType(DOUBLE_RAW_ID, "Double"){}
+void DefaultEntryTypes::DOUBLE_t::sendValue(EntryValue eValue, DataIOStream& os) {
+	uint64_t value = *reinterpret_cast<uint64_t*>(&eValue.f);
+	for(int i = 0; i<8; ++i){
+		os.writeByte((value>>56)&0xFF);
+		value<<=8;
+	}
+}
+EntryValue DefaultEntryTypes::DOUBLE_t::readValue(DataIOStream& is) {
+	uint64_t value;
+	
+	for(int i = 0; i<8; ++i){
+		value<<=8;
+		value |= (is.readByte()&0xFF);
+	}
+	
+	EntryValue eValue;
+	eValue.f = *reinterpret_cast<double*>(&value);
+	return eValue;
+}
+	
+DefaultEntryTypes::STRING_t::STRING_t() : NetworkTableEntryType(STRING_RAW_ID, "String"){}
+void DefaultEntryTypes::STRING_t::sendValue(EntryValue value, DataIOStream& os) {
+	os.writeString(*(std::string*)value.ptr);
+}
+EntryValue DefaultEntryTypes::STRING_t::readValue(DataIOStream& is) {
+	EntryValue value;
+	value.ptr = is.readString();
+	return value;
+}
+EntryValue DefaultEntryTypes::STRING_t::copyValue(EntryValue value){
+  if(value.ptr==NULL)
+    return value;
+	EntryValue newValue;
+	newValue.ptr = new std::string(*((std::string*)value.ptr));
+	return newValue;
+}
+void DefaultEntryTypes::STRING_t::deleteValue(EntryValue value){
+  if(value.ptr!=NULL)
+    delete (std::string*)value.ptr;
+}
+
+
+
+void DefaultEntryTypes::registerTypes(NetworkTableEntryTypeManager* manager){
+	manager->RegisterType(BOOLEAN);
+	manager->RegisterType(DOUBLE);
+	manager->RegisterType(STRING);
+	manager->RegisterType(BooleanArray::TYPE);
+	manager->RegisterType(NumberArray::TYPE);
+	manager->RegisterType(StringArray::TYPE);
+}
+
+
+
+
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.h b/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.h
new file mode 100644
index 0000000..677ffd1
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.h
@@ -0,0 +1,100 @@
+/*
+ * DefaultEntryTypes.h
+ *
+ *  Created on: Sep 24, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef DEFAULTENTRYTYPES_H_
+#define DEFAULTENTRYTYPES_H_
+
+class DefaultEntryTypes;
+
+#include "NetworkTableEntryTypeManager.h"
+
+
+
+static const TypeId BOOLEAN_RAW_ID = 0x00;
+static const TypeId DOUBLE_RAW_ID = 0x01;
+static const TypeId STRING_RAW_ID = 0x02;
+
+class DefaultEntryTypes{
+private:
+	/**
+	 * a boolean entry type
+	 */
+	class BOOLEAN_t : public NetworkTableEntryType{
+	public:
+		BOOLEAN_t();
+		/**
+		 * See {@link NetworkTableEntryType}::sendValue
+		 */
+		virtual void sendValue(EntryValue value, DataIOStream& os);
+		
+		/**
+		 * See {@link NetworkTableEntryType}::readValue
+		 */
+		virtual EntryValue readValue(DataIOStream& is);
+	};
+	/**
+	 * a double floating point entry type
+	 */
+	class DOUBLE_t : public NetworkTableEntryType{
+	public:
+		DOUBLE_t();
+		
+		/**
+		 * See {@link NetworkTableEntryType}::sendValue
+		 */
+		virtual void sendValue(EntryValue value, DataIOStream& os);
+		
+		/**
+		 * See {@link NetworkTableEntryType}::sendValue
+		 */
+		virtual EntryValue readValue(DataIOStream& is);
+	};
+	/**
+	 * a string entry type
+	 */
+	class STRING_t : public NetworkTableEntryType{
+	public:
+		STRING_t();
+		
+		/**
+		 * See {@link NetworkTableEntryType}::sendValue
+		 */
+		virtual void sendValue(EntryValue value, DataIOStream& os);
+		
+		/**
+		 * See {@link NetworkTableEntryType}::sendValue
+		 */
+		virtual EntryValue readValue(DataIOStream& is);
+		
+		/**
+		 * See {@link NetworkTableEntryType}::copyValue
+		 */
+		virtual EntryValue copyValue(EntryValue value);
+		
+		/**
+		 * See {@link NetworkTableEntryType}::deleteValue
+		 */
+		virtual void deleteValue(EntryValue value);
+	};
+public:
+	/**
+	 * Registers the set of default entry types with the given 
+	 * entry type manager.
+	 * 
+	 * @param typeManager The entry type manager to update. Pointer must not be null.
+	 */
+	static void registerTypes(NetworkTableEntryTypeManager* typeManager);
+	
+	static BOOLEAN_t BOOLEAN;
+	static DOUBLE_t DOUBLE;
+	static STRING_t STRING;
+};
+
+
+
+
+#endif /* DEFAULTENTRYTYPES_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.cpp b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.cpp
new file mode 100644
index 0000000..15a027c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.cpp
@@ -0,0 +1,25 @@
+/*
+ * NetworkTableEntryType.cpp
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/NetworkTableEntryType.h"
+
+
+NetworkTableEntryType::NetworkTableEntryType(TypeId _id, const char* _name) : id(_id), name(_name){
+}
+NetworkTableEntryType::~NetworkTableEntryType(){
+}
+
+  EntryValue NetworkTableEntryType::copyValue(EntryValue value){
+    return value;
+  }  
+  void NetworkTableEntryType::deleteValue(EntryValue value){
+  }
+
+
+bool NetworkTableEntryType::isComplex(){
+	return false;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.h b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.h
new file mode 100644
index 0000000..b86914d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.h
@@ -0,0 +1,92 @@
+/*
+ * NetworkTableEntryType.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLEENTRYTYPE_H_
+#define NETWORKTABLEENTRYTYPE_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#ifndef _WRS_KERNEL
+#include <stdint.h>
+#endif
+
+/**
+ * An ID which identifies a type to other nodes on the network.
+ */
+typedef uint8_t TypeId;
+class NetworkTableEntryType;
+
+#define MAX_NUM_TABLE_ENTRY_TYPES 256
+
+#include <string>
+#include "networktables2/connection/DataIOStream.h"
+#include "networktables2/NetworkTableEntry.h"
+#include "tables/ITable.h"
+
+/**
+ * Represents the type associated with a network tables value.
+ */
+class NetworkTableEntryType{
+public:
+	const TypeId id;
+	const char* name;
+	
+	/**
+	 * Determines whether this data type is complex (i.e. it does not
+	 * represent a number, string, or boolean).
+	 * 
+	 * @return True of this type is complex. False otherwise.
+	 */
+	virtual bool isComplex();
+	
+	/**
+	 * Serializes the given value on the given output stream.
+	 * 
+	 * @param value The value to serialize.
+	 * @param os The output stream to use.
+	 */
+	virtual void sendValue(EntryValue value, DataIOStream& os) = 0;
+	
+	/**
+	 * Unserializes the a value of this type from the given
+	 * input stream.
+	 * 
+	 * @param is The input stream to read from.
+	 * @return The unserialized value.
+	 */
+	virtual EntryValue readValue(DataIOStream& is) = 0;
+	
+	/**
+	 * Creates a copy of the given value of this type.
+	 * 
+	 * @param value The value to copy.
+	 * @return A copy of the given value of this type.
+	 */
+	virtual EntryValue copyValue(EntryValue value);
+	
+	/**
+	 * Deletes a value of this type.
+	 * 
+	 * After calling this function, the given value is
+	 * no longer valid.
+	 * 
+	 * @param value The value to delete.
+	 */
+	virtual void deleteValue(EntryValue value);
+	virtual ~NetworkTableEntryType();
+protected:
+	/**
+	 * Creates a new NetworkTablesEntryType.
+	 * 
+	 * @param id The numeric ID associated with this type. This ID
+	 * 	represents this data type to other nodes on the network.
+	 * @param name The string name associated with this type.
+	 */
+	NetworkTableEntryType(TypeId id, const char* name);
+};
+
+#endif /* NETWORKTABLEENTRYTYPE_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.cpp b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.cpp
new file mode 100644
index 0000000..f214541
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.cpp
@@ -0,0 +1,25 @@
+/*
+ * NetworkTableEntryTypeManager.cpp
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/NetworkTableEntryTypeManager.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+
+
+NetworkTableEntryType* NetworkTableEntryTypeManager::GetType(TypeId id){
+	return entryTypes[id];
+}
+
+void NetworkTableEntryTypeManager::RegisterType(NetworkTableEntryType& type){
+	entryTypes[type.id] = &type;
+}
+
+NetworkTableEntryTypeManager::NetworkTableEntryTypeManager(){
+	for(int i = 0; i<MAX_NUM_TABLE_ENTRY_TYPES; ++i)
+		entryTypes[i] = NULL;
+	
+	DefaultEntryTypes::registerTypes(this);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.h b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.h
new file mode 100644
index 0000000..bbfce50
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.h
@@ -0,0 +1,47 @@
+/*
+ * NetworkTableEntryTypeManager.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NETWORKTABLEENTRYTYPEMANAGER_H_
+#define NETWORKTABLEENTRYTYPEMANAGER_H_
+
+class NetworkTableEntryTypeManager;
+
+#include "NetworkTableEntryType.h"
+
+class NetworkTableEntryTypeManager
+{
+private:
+	NetworkTableEntryType* entryTypes[MAX_NUM_TABLE_ENTRY_TYPES];
+public:
+	/**
+	 * Creates a new NetworkTableEntryTypeManager, with the default
+	 * types registered under their respective TypeID's, and all other
+	 * TypeID's null.
+	 */
+	NetworkTableEntryTypeManager();
+	
+	/**
+	 * Retrieves the entry type associated with the given
+	 * type id, if one exists.
+	 * 
+	 * @param type The identifier by which to retrieve a type.
+	 * @return The NetworkTableEntryType associated with the given
+	 * 	type identifier, if one exists. Otherwise, null.
+	 */
+	NetworkTableEntryType* GetType(TypeId type);
+	
+	/**
+	 * Registers the given NetworkTableEntryType with this type
+	 * manager, such that is is returned by subsequent calls
+	 * to GetType with the appropriate ID.
+	 * 
+	 * @param type The type to register.
+	 */
+	void RegisterType(NetworkTableEntryType& type);
+};
+
+#endif /* NETWORKTABLEENTRYTYPEMANAGER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.cpp b/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.cpp
new file mode 100644
index 0000000..5ff4517
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.cpp
@@ -0,0 +1,32 @@
+/*
+ * NumberArray.cpp
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/NumberArray.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+
+
+const TypeId NumberArray::NUMBER_ARRAY_RAW_ID = 0x11;
+ArrayEntryType NumberArray::TYPE(NUMBER_ARRAY_RAW_ID, DefaultEntryTypes::DOUBLE);
+
+NumberArray::NumberArray() : ArrayData(TYPE) {
+}
+
+double NumberArray::get(int index){
+	return _get(index).f;
+}
+
+void NumberArray::set(int index, double value){
+	EntryValue eValue;
+	eValue.f = value;
+	_set(index, eValue);
+}
+
+void NumberArray::add(double value){
+	EntryValue eValue;
+	eValue.f = value;
+	_add(eValue);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.h b/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.h
new file mode 100644
index 0000000..de735de
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.h
@@ -0,0 +1,31 @@
+/*
+ * NumberArray.h
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef NUMBERARRAY_H_
+#define NUMBERARRAY_H_
+
+#include "networktables2/type/ArrayData.h"
+#include "networktables2/type/ArrayEntryType.h"
+
+//TODO: NumberArray appears unused; replace with namespace?
+class NumberArray : public ArrayData{
+
+public:
+	static const TypeId NUMBER_ARRAY_RAW_ID;
+    static ArrayEntryType TYPE;
+
+
+    NumberArray();
+    
+    double get(int index);
+    void set(int index, double value);
+    void add(double value);
+};
+
+
+
+#endif /* NUMBERARRAY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/StringArray.cpp b/aos/externals/WPILib/WPILib/networktables2/type/StringArray.cpp
new file mode 100644
index 0000000..954906c
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/StringArray.cpp
@@ -0,0 +1,32 @@
+/*
+ * StringArray
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/type/StringArray.h"
+#include "networktables2/type/DefaultEntryTypes.h"
+
+
+const TypeId StringArray::STRING_ARRAY_RAW_ID = 0x12;
+ArrayEntryType StringArray::TYPE(STRING_ARRAY_RAW_ID, DefaultEntryTypes::STRING);
+
+StringArray::StringArray() : ArrayData(TYPE) {
+}
+
+std::string StringArray::get(int index){
+	return *(std::string*)_get(index).ptr;
+}
+
+void StringArray::set(int index, std::string value){
+	EntryValue eValue;
+	eValue.ptr = &value;
+	_set(index, eValue);
+}
+
+void StringArray::add(std::string value){
+	EntryValue eValue;
+	eValue.ptr = &value;
+	_add(eValue);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/StringArray.h b/aos/externals/WPILib/WPILib/networktables2/type/StringArray.h
new file mode 100644
index 0000000..97c5e95
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/type/StringArray.h
@@ -0,0 +1,30 @@
+/*
+ * StringArray.h
+ *
+ *  Created on: Nov 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef STRINGARRAY_H_
+#define STRINGARRAY_H_
+
+
+#include "networktables2/type/ArrayData.h"
+#include "networktables2/type/ArrayEntryType.h"
+
+//TODO: StringArray appears unused; replace with namespace?
+class StringArray : public ArrayData{
+
+public:
+	static const TypeId STRING_ARRAY_RAW_ID;
+    static ArrayEntryType TYPE;
+
+
+    StringArray();
+    
+    std::string get(int index);
+    void set(int index, std::string value);
+    void add(std::string value);
+};
+
+#endif /* STRINGARRAY_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/EOFException.cpp b/aos/externals/WPILib/WPILib/networktables2/util/EOFException.cpp
new file mode 100644
index 0000000..71eefc6
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/EOFException.cpp
@@ -0,0 +1,14 @@
+/*
+ * EOFException.cpp
+ *
+ *  Created on: Oct 1, 2012
+ *      Author: Mitchell Wills
+ */
+#include "networktables2/util/EOFException.h"
+
+EOFException::EOFException() : IOException("End of File"){}
+EOFException::~EOFException() throw(){}
+
+bool EOFException::isEOF(){
+	return true;
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/EOFException.h b/aos/externals/WPILib/WPILib/networktables2/util/EOFException.h
new file mode 100644
index 0000000..daa82d9
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/EOFException.h
@@ -0,0 +1,35 @@
+/*
+ * EOFException.h
+ *
+ *  Created on: Oct 1, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef EOFEXCEPTION_H_
+#define EOFEXCEPTION_H_
+
+#include "IOException.h"
+
+
+/**
+ * Indicates that an EOF was encountered during an I/O operation,
+ * and therefore the operation could not be completed. 
+ */
+class EOFException : public IOException{
+public:
+	/**
+	 * Creates an EOFException.
+	 */
+	EOFException();
+	virtual ~EOFException() throw ();
+	
+	/**
+	 * Implements {@link IOException}::isEOF() 
+	 */
+	virtual bool isEOF();
+};
+
+
+
+
+#endif /* EOFEXCEPTION_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/IOException.cpp b/aos/externals/WPILib/WPILib/networktables2/util/IOException.cpp
new file mode 100644
index 0000000..e44b581
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/IOException.cpp
@@ -0,0 +1,24 @@
+/*
+ * IOException.cpp
+ *
+ *  Created on: Oct 1, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/util/IOException.h"
+#include <stdlib.h>
+#include <string.h>
+
+
+IOException::IOException(const char* msg) : message(strdup(msg)), errorValue(0){}
+IOException::IOException(const char* msg, int _errorValue) : message(strdup(msg)), errorValue(_errorValue){}
+
+const char* IOException::what(){
+	return message;
+}
+
+bool IOException::isEOF(){return false;}
+
+IOException::~IOException() throw (){
+	free((void*)message);
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/IOException.h b/aos/externals/WPILib/WPILib/networktables2/util/IOException.h
new file mode 100644
index 0000000..001f329
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/IOException.h
@@ -0,0 +1,56 @@
+/*
+ * IOException.h
+ *
+ *  Created on: Oct 1, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IOEXCEPTION_H_
+#define IOEXCEPTION_H_
+
+#include <exception>
+
+/**
+ * Inidcates that an unrecoverable I/O failure occured.
+ */
+class IOException : public std::exception{
+public:
+	/**
+	 * Creates a new IOException with the given message.
+	 * 
+	 * @param message The message to associate with this exception.
+	 */
+	IOException(const char* message);
+	
+	/**
+	 * Creates a new IOException with the given message and
+	 * error value.
+	 * 
+	 * @param message The message to associate with this exception.
+	 * @param errorValue The integer code to associate with this exception.
+	 */
+	IOException(const char* message, int errorValue);
+	
+	/**
+	 * Gets the message associated with this exception.
+	 * 
+	 * @return The message associated with this exception.
+	 */
+	const char* what();
+	
+	/**
+	 * Determines whether this exception indicates that an EOF
+	 * was encountered.
+	 * 
+	 * @return True if this exception indicates that an EOF was encountered.
+	 * 	False otherwise.
+	 */
+	virtual bool isEOF();
+	virtual ~IOException() throw ();
+private:
+	const char* message;
+	int errorValue;
+};
+
+
+#endif /* IOEXCEPTION_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.cpp b/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.cpp
new file mode 100644
index 0000000..fd2ad6e
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.cpp
@@ -0,0 +1,16 @@
+/*
+ * IllegalStateException.cpp
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/util/IllegalStateException.h"
+
+IllegalStateException::IllegalStateException(const char* msg) 
+	: message(msg)
+{
+}
+IllegalStateException::~IllegalStateException() throw ()
+{	
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.h b/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.h
new file mode 100644
index 0000000..44136e6
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.h
@@ -0,0 +1,23 @@
+/*
+ * IllegalStateException.h
+ *
+ *  Created on: Sep 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ILLEGALSTATEEXCEPTION_H_
+#define ILLEGALSTATEEXCEPTION_H_
+
+#include <exception>
+#include <string>
+
+class IllegalStateException : public std::exception{
+public:
+	IllegalStateException(const char* message);
+	const char* what(){return message.c_str();};
+	~IllegalStateException() throw ();
+private:
+	std::string message;
+};
+
+#endif /* ILLEGALSTATEEXCEPTION_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/StringCache.cpp b/aos/externals/WPILib/WPILib/networktables2/util/StringCache.cpp
new file mode 100644
index 0000000..be66609
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/StringCache.cpp
@@ -0,0 +1,27 @@
+/*
+ * StringCache.cpp
+ *
+ *  Created on: Oct 16, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include <map>
+#include "networktables2/util/StringCache.h"
+
+using namespace std;
+
+StringCache::StringCache(){
+}
+StringCache::~StringCache(){
+}
+
+std::string& StringCache::Get(const std::string& input){
+	map<std::string, std::string>::iterator itr = cache.find(input);
+	if(itr != cache.end()){
+	   return itr->second;
+	}
+	else{
+		cache[input] = Calc(input);
+		return cache[input];
+	}
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/StringCache.h b/aos/externals/WPILib/WPILib/networktables2/util/StringCache.h
new file mode 100644
index 0000000..4406e5d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/StringCache.h
@@ -0,0 +1,39 @@
+#ifndef _STRINGCACHE_H_
+#define _STRINGCACHE_H_
+
+#include <map>
+#include <string>
+
+using namespace std;
+
+/**
+ * A simple cache that allows for caching the mapping of one string to another calculated one
+ * 
+ * @author Mitchell
+ *
+ */
+class StringCache {
+private:
+	map<std::string, std::string> cache;
+
+	
+	/**
+	 * @param input
+	 * @return the value for a given input
+	 */
+public:
+	StringCache();
+	virtual ~StringCache();
+	
+	
+	std::string& Get(const std::string& input);
+	
+	/**
+	 * Will only be called if a value has not already been calculated
+	 * @param input
+	 * @return the calculated value for a given input
+	 */
+	virtual std::string Calc(const std::string& input) = 0;
+};
+
+#endif
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/System.cpp b/aos/externals/WPILib/WPILib/networktables2/util/System.cpp
new file mode 100644
index 0000000..30b3c90
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/System.cpp
@@ -0,0 +1,26 @@
+/*
+ * System.cpp
+ *
+ *  Created on: Sep 26, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "networktables2/util/System.h"
+#include "semLib.h"
+#include <stdio.h>
+#include <sysLib.h> // for sysClkRateGet
+#include <usrLib.h> // for taskDelay
+
+void sleep_ms(unsigned long ms){
+	taskDelay((INT32)((double)sysClkRateGet() * ms / 1000));
+}
+unsigned long currentTimeMillis(){
+	struct timespec tp;
+	clock_gettime(CLOCK_REALTIME,&tp);
+	return tp.tv_sec*1000 + tp.tv_nsec/1000;
+}
+void writeWarning(const char* message){
+	fprintf(stderr, "%s\n", message);
+	fflush(stderr);
+	//TODO implement write warning with wpilib error stuff
+}
diff --git a/aos/externals/WPILib/WPILib/networktables2/util/System.h b/aos/externals/WPILib/WPILib/networktables2/util/System.h
new file mode 100644
index 0000000..50cd788
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/networktables2/util/System.h
@@ -0,0 +1,37 @@
+/*
+ * System.h
+ * 
+ * For some platform specific code related to the system
+ *
+ *  Created on: Sep 25, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef TIME_H_
+#define TIME_H_
+
+/**
+ * Causes the current thread to sleep at least the
+ * given number of milliseconds.
+ * 
+ * @param ms The number of milliseconds to sleep.
+ */
+void sleep_ms(unsigned long ms);
+
+/**
+ * Retrieves the current time in milliseconds.
+ * 
+ * @return The current time in milliseconds.
+ */
+unsigned long currentTimeMillis();
+
+/**
+ * Writes a warning message to the standard error
+ * stream.
+ * 
+ * @param message The string message to write.
+ */
+void writeWarning(const char* message);
+
+
+#endif /* TIME_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/IRemote.h b/aos/externals/WPILib/WPILib/tables/IRemote.h
new file mode 100644
index 0000000..78d3a47
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/IRemote.h
@@ -0,0 +1,55 @@
+/*
+ * IRemote.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IREMOTE_H_
+#define IREMOTE_H_
+
+class IRemote;
+
+
+#include "IRemoteConnectionListener.h"
+
+
+
+/**
+ * Represents an object that has a remote connection
+ * 
+ * @author Mitchell
+ *
+ */
+class IRemote {
+public:
+	/**
+	 * Register an object to listen for connection and disconnection events
+	 * 
+	 * @param listener the listener to be register
+	 * @param immediateNotify if the listener object should be notified of the current connection state
+	 */
+	virtual void AddConnectionListener(IRemoteConnectionListener* listener, bool immediateNotify) = 0;
+
+	/**
+	 * Unregister a listener from connection events
+	 * 
+	 * @param listener the listener to be unregistered
+	 */
+	virtual void RemoveConnectionListener(IRemoteConnectionListener* listener) = 0;
+	
+	/**
+	 * Get the current state of the objects connection
+	 * @return the current connection state
+	 */
+	virtual bool IsConnected() = 0;
+	
+	/**
+	 * If the object is acting as a server
+	 * @return if the object is a server
+	 */
+	virtual bool IsServer() = 0;
+};
+
+
+#endif /* IREMOTE_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/IRemoteConnectionListener.h b/aos/externals/WPILib/WPILib/tables/IRemoteConnectionListener.h
new file mode 100644
index 0000000..438b3dd
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/IRemoteConnectionListener.h
@@ -0,0 +1,40 @@
+/*
+ * IRemoteConnectionListener.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef IREMOTECONNECTIONLISTENER_H_
+#define IREMOTECONNECTIONLISTENER_H_
+
+
+class IRemoteConnectionListener;
+
+#include "IRemote.h"
+
+
+
+/**
+ * A listener that listens for connection changes in a {@link IRemote} object
+ * 
+ * @author Mitchell
+ *
+ */
+class IRemoteConnectionListener {
+public:
+	/**
+	 * Called when an IRemote is connected
+	 * @param remote the object that connected
+	 */
+	virtual void Connected(IRemote* remote) = 0;
+	/**
+	 * Called when an IRemote is disconnected
+	 * @param remote the object that disconnected
+	 */
+	virtual void Disconnected(IRemote* remote) = 0;
+};
+
+
+
+#endif /* IREMOTECONNECTIONLISTENER_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/ITable.h b/aos/externals/WPILib/WPILib/tables/ITable.h
new file mode 100644
index 0000000..29385be
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/ITable.h
@@ -0,0 +1,194 @@
+/*
+ * ITable.h
+ *
+ *  Created on: Sep 19, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ITABLE_H_
+#define ITABLE_H_
+
+
+class ITable;
+union EntryValue{
+	void* ptr;
+	bool b;
+	double f;
+};
+typedef union EntryValue EntryValue;
+
+
+#include <string>
+#include "networktables2/type/ComplexData.h"
+#include "ITableListener.h"
+
+
+class ITable {
+public:
+
+	/**
+	 * Determines whether the given key is in this table.
+	 * 
+	 * @param key the key to search for
+	 * @return true if the table as a value assigned to the given key
+	 */
+	virtual bool ContainsKey(std::string key) = 0;
+
+	/**
+	 * Determines whether there exists a non-empty subtable for this key
+	 * in this table.
+	 * 
+	 * @param key the key to search for
+	 * @return true if there is a subtable with the key which contains at least one key/subtable of its own
+	 */
+	virtual bool ContainsSubTable(std::string key) = 0;
+	
+    /**
+     * Gets the subtable in this table for the given name.
+     * 
+     * @param key the name of the table relative to this one
+     * @return a sub table relative to this one
+     */
+	virtual ITable* GetSubTable(std::string key) = 0;
+	
+    
+	/**
+	 * Gets the value associated with a key as an object
+	 * 
+	 * @param key the key of the value to look up
+	 * @return the value associated with the given key
+	 * @throws TableKeyNotDefinedException if there is no value associated with the given key
+	 */
+    virtual EntryValue GetValue(std::string key) = 0;
+	/**
+	 * Put a value in the table
+	 * 
+	 * @param key the key to be assigned to
+	 * @param value the value that will be assigned
+	 * @throws IllegalArgumentException when the value is not supported by the table
+	 */
+	virtual void PutValue(std::string key, ComplexData& value) = 0;
+        
+	virtual void RetrieveValue(std::string key, ComplexData& externalValue) = 0;
+	
+	
+
+	/**
+	 * Put a number in the table
+	 * 
+	 * @param key the key to be assigned to
+	 * @param value the value that will be assigned
+	 */
+    virtual void PutNumber(std::string key, double value) = 0;
+	/**
+	 * Gets the number associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @return the value associated with the given key 
+	 * @throws TableKeyNotDefinedException if there is no value associated with the given key
+	 */
+	virtual double GetNumber(std::string key) = 0;
+	/**
+	 * Gets the number associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @param defaultValue the value to be returned if no value is found
+	 * @return the value associated with the given key or the given default value if there is no value associated with the key
+	 */
+	virtual double GetNumber(std::string key, double defaultValue) = 0;
+
+	/**
+	 * Put a std::string& in the table
+	 * 
+	 * @param key the key to be assigned to
+	 * @param value the value that will be assigned
+	 */
+	virtual void PutString(std::string key, std::string value) = 0;
+	
+	/**
+	 * Gets the string associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @return the value associated with the given key 
+	 * @throws TableKeyNotDefinedException if there is no value associated with the given key
+	 */
+	virtual std::string GetString(std::string key) = 0;
+	
+	/**
+	 * Gets the string associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @param defaultValue the value to be returned if no value is found
+	 * @return the value associated with the given key or the given default value if there is no value associated with the key
+	 */
+	virtual std::string GetString(std::string key, std::string defaultValue) = 0;
+
+	/**
+	 * Put a boolean in the table
+	 * 
+	 * @param key the key to be assigned to
+	 * @param value the value that will be assigned
+	 */
+	virtual void PutBoolean(std::string key, bool value) = 0;
+	
+	/**
+	 * Gets the boolean associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @return the value associated with the given key 
+	 * @throws TableKeyNotDefinedException if there is no value associated with the given key
+	 */
+	virtual bool GetBoolean(std::string key) = 0;
+	
+	/**
+	 * Gets the boolean associated with the given name.
+	 * 
+	 * @param key the key to look up
+	 * @param defaultValue the value to be returned if no value is found
+	 * @return the value associated with the given key or the given default value if there is no value associated with the key
+	 */
+	virtual bool GetBoolean(std::string key, bool defaultValue) = 0;
+	
+	/**
+	 * Add a listener for changes to the table
+	 * 
+	 * @param listener the listener to add
+	 */
+	virtual void AddTableListener(ITableListener* listener) = 0;
+	
+	/**
+	 * Add a listener for changes to the table
+	 * 
+	 * @param listener the listener to add
+	 * @param immediateNotify if true then this listener will be notified of all current entries (marked as new)
+	 */
+	virtual void AddTableListener(ITableListener* listener, bool immediateNotify) = 0;
+	
+	/**
+	 * Add a listener for changes to a specific key the table
+	 * 
+	 * @param key the key to listen for
+	 * @param listener the listener to add
+	 * @param immediateNotify if true then this listener will be notified of all current entries (marked as new)
+	 */
+	virtual void AddTableListener(std::string key, ITableListener* listener, bool immediateNotify) = 0;
+	
+	/**
+	 * This will immediately notify the listener of all current sub tables
+	 * 
+	 * @param listener
+	 */
+	virtual void AddSubTableListener(ITableListener* listener) = 0;
+	
+	/**
+	 * Remove a listener from receiving table events
+	 * 
+	 * @param listener the listener to be removed
+	 */
+	virtual void RemoveTableListener(ITableListener* listener) = 0;
+        
+
+};
+
+
+#endif /* ITABLE_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/ITableListener.h b/aos/externals/WPILib/WPILib/tables/ITableListener.h
new file mode 100644
index 0000000..bb82462
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/ITableListener.h
@@ -0,0 +1,41 @@
+/*
+ * ITableListener.h
+ *
+ *  Created on: Sep 19, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ITABLELISTENER_H_
+#define ITABLELISTENER_H_
+
+
+class ITableListener;
+
+
+#include "ITable.h"
+
+
+
+
+/**
+ * A listener that listens to changes in values in a {@link ITable}
+ * 
+ * @author Mitchell
+ *
+ */
+class ITableListener {
+ public:
+    /**
+     * Called when a key-value pair is changed in a {@link ITable}
+     * WARNING: If a new key-value is put in this method value changed will immediatly be called which could lead to recursive code
+     * @param source the table the key-value pair exists in
+     * @param key the key associated with the value that changed
+     * @param value the new value
+     * @param isNew true if the key did not previously exist in the table, otherwise it is false
+     */
+    virtual void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) = 0;
+};
+
+
+
+#endif /* ITABLELISTENER_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/ITableProvider.h b/aos/externals/WPILib/WPILib/tables/ITableProvider.h
new file mode 100644
index 0000000..eb64106
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/ITableProvider.h
@@ -0,0 +1,32 @@
+/*
+ * ITableProvider.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef ITABLEPROVIDER_H_
+#define ITABLEPROVIDER_H_
+
+
+class ITableProvider;
+
+#include "tables/ITable.h"
+
+
+/**
+ * A simple interface to provide tables
+ * 
+ * @author Mitchell
+ *
+ */
+class ITableProvider {
+	/**
+	 * Get a table by name
+	 * @param name the name of the table
+	 * @return a Table with the given name
+	 */
+	virtual ITable* GetTable(std::string name) = 0;
+};
+
+#endif /* ITABLEPROVIDER_H_ */
diff --git a/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.cpp b/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.cpp
new file mode 100644
index 0000000..2a8ffcc
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.cpp
@@ -0,0 +1,24 @@
+/*
+ * TableKeyNotDefinedException.cpp
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#include "tables/TableKeyNotDefinedException.h"
+#include <stdlib.h>
+#include <cstring>
+
+
+#define MESSAGE_PREFIX "Unkown Table Key: "
+TableKeyNotDefinedException::TableKeyNotDefinedException(const std::string key):
+msg(MESSAGE_PREFIX + key){
+
+}
+
+const char* TableKeyNotDefinedException::what(){
+	return msg.c_str();
+}
+
+TableKeyNotDefinedException::~TableKeyNotDefinedException() throw(){
+}
diff --git a/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.h b/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.h
new file mode 100644
index 0000000..510cd8d
--- /dev/null
+++ b/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.h
@@ -0,0 +1,40 @@
+/*
+ * TableKeyNotDefinedException.h
+ *
+ *  Created on: Sep 22, 2012
+ *      Author: Mitchell Wills
+ */
+
+#ifndef TABLEKEYNOTDEFINEDEXCEPTION_H_
+#define TABLEKEYNOTDEFINEDEXCEPTION_H_
+
+
+class TableKeyNotDefinedException;
+
+
+#include <exception>
+#include <string>
+
+
+/**
+ * An exception throw when the lookup a a key-value fails in a {@link ITable}
+ * 
+ * @author Mitchell
+ *
+ */
+class TableKeyNotDefinedException : public std::exception {
+public:
+	/**
+	 * @param key the key that was not defined in the table
+	 */
+	TableKeyNotDefinedException(const std::string key);
+	~TableKeyNotDefinedException() throw();
+	const char* what();
+private:
+	const std::string msg;
+};
+
+
+
+
+#endif /* TABLEKEYNOTDEFINEDEXCEPTION_H_ */