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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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="$(shell svnversion -n ..)"' $(DEFINES) -o %OutFile% -c %InFile%"/>
- <stringAttribute key="BLD::Info|Tool|C++-Compiler|cmd|PPC604diab" value="echo "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%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 "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32sfdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC32sfgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC403diab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC403gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405diab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405sfdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC405sfgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440diab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440sfdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC440sfgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC603diab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC603gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC604diab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC604gnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXsfdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC85XXsfgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC860sfdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|PPC860sfgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arppc %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMLINUXdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMLINUXgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arpentium %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMNTdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMNTgnu" value="echo "building $@";%archiverprefix% $(TOOL_PATH)arpentium %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMSPARCSOLARISdiab" value="echo "building $@";%archiverprefix% $(TOOL_PATH)dar %ToolFlags% %OutFile% %Objects%"/>
- <stringAttribute key="BLD::Info|Tool|Librarian|cmd|SIMSPARCSOLARISgnu" value="echo "building $@";%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 "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32sfdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC32sfgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC403diab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC403gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405diab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405sfdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC405sfgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440diab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440sfdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC440sfgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC603diab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC603gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC604diab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC604gnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXsfdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC85XXsfgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC860sfdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|PPC860sfgnu" value="echo "building $@";rm -f %OutFile%;nmppc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMLINUXdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMLINUXgnu" value="echo "building $@";rm -f %OutFile%;nmpentium %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMNTdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMNTgnu" value="echo "building $@";rm -f %OutFile%;nmpentium %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c pentium > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMSPARCSOLARISdiab" value="echo "building $@";rm -f %OutFile%;ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c sparc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Linker|cmd|SIMSPARCSOLARISgnu" value="echo "building $@";rm -f %OutFile%;nmsparc %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c sparc > $(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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";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 "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32gnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32sfdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPCFS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC32sfgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC403diab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC403FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC403gnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405diab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405gnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405sfdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC405FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC405sfgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440diab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC440FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440gnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440sfdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC440FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC440sfgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC603diab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC603FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";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) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC604diab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC604FH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC604gnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXsfdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPCE500FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC85XXsfgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC860sfdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tPPC860FS:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|PPC860sfgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMLINUXdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMLINUXgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMNTdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tX86LH:vxworks63 -X -r5 -f 0x90,1,1 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMNTgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccpentium -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMSPARCSOLARISdiab" value="echo "building $@";%linkerprefix% $(TOOL_PATH)dld -tSPARCFH:vxworks63 -X -r5 %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi"/>
- <stringAttribute key="BLD::Info|Tool|Partial Image Linker|cmd|SIMSPARCSOLARISgnu" value="echo "building $@";%linkerprefix% $(TOOL_PATH)ccsparc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";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="$(shell svnversion -n ..)"' $(DEFINES) -o %OutFile% -c %InFile%"/>
- <stringAttribute key="BLD::Info|Tool|C-Compiler|cmd|PPC603gnu" value="echo "building $@";%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_ */