remove all the crio, bbb, and 2014 code
This also meant upgrading to clang-3.5 from llvm.org to try to get it to
build code for the roboRIO.
Change-Id: I44df4af4e9e04296ee7934cc787da3101b1ac449
diff --git a/aos/README.txt b/aos/README.txt
index 7bf0144..e0f9377 100644
--- a/aos/README.txt
+++ b/aos/README.txt
@@ -10,9 +10,8 @@
the .config files are for building linux kernels
linux/ has code that only runs on linux systems
-crio/ has code that only runs on the crio
-common/ is where stuff that runs on both the crio and linux is
+common/ is where stuff that runs on all platforms is
common/input/ is where the framework code for reading stuff into the queues system is
common/output/ is where the framework for writing things out of the queues system is
common/messages is where the c++ wrappers for "queues" are
diff --git a/aos/build/aos.gyp b/aos/build/aos.gyp
index 1187d05..648718c 100644
--- a/aos/build/aos.gyp
+++ b/aos/build/aos.gyp
@@ -1,9 +1,4 @@
# This file has all of the aos targets.
-# For the cRIO, shared_library means to build a .out file, NOT a shared library.
-# This means that depending on shared libraries doesn't work very well.
-# Shared libraries don't seem to be supported by the powerpc-wrs-vxworks
-# tools and gyp doesn't like a static_library that depends only on
-# other static_librarys.
{
'targets': [
# A target for things used by the logging implementation (except die) to
diff --git a/aos/build/aos.gypi b/aos/build/aos.gypi
index 6cae0e4..3ffe5c0 100644
--- a/aos/build/aos.gypi
+++ b/aos/build/aos.gypi
@@ -22,32 +22,20 @@
],
},
'conditions': [
- ['PLATFORM=="crio"', {
- 'make_global_settings': [
- ['CC', '<!(readlink -f <(AOS)/build/crio_cc)'],
- ['CXX', '<!(readlink -f <(AOS)/build/crio_cxx)'],
- ],
- }
- ], ['PLATFORM=="linux-arm-gcc_frc"', {
+ ['PLATFORM=="linux-arm-gcc_frc"', {
'make_global_settings': [
['CC', '<(ccache)<!(which arm-frc-linux-gnueabi-gcc-4.9)'],
['CXX', '<(ccache)<!(which arm-frc-linux-gnueabi-g++-4.9)'],
],
},
- ], ['PLATFORM=="linux-arm-gcc"', {
- 'make_global_settings': [
- ['CC', '<(ccache)<!(which arm-linux-gnueabihf-gcc-4.7)'],
- ['CXX', '<(ccache)<!(which arm-linux-gnueabihf-g++-4.7)'],
- ],
- },
- ], ['PLATFORM=="linux-arm-clang"', {
+ ], ['PLATFORM=="linux-arm-clang_frc"', {
'variables': {
'arm-clang-symlinks': '<!(realpath -s <(AOS)/build/arm-clang-symlinks)',
'arm-clang-sysroot': '<(arm-clang-symlinks)/sysroot',
# Flags that should be passed to all compile/link/etc commands.
'platflags': [
- '-target', 'armv7a-linux-gnueabihf',
- '-mfloat-abi=hard',
+ '-target', 'armv7a-frc-linux-gnueabi',
+ '-mfloat-abi=softfp',
'--sysroot=<(arm-clang-sysroot)',
# TODO(brians): See if it will run with this enabled.
@@ -63,18 +51,21 @@
'<@(platflags)',
],
'cflags_cc': [
- '-isystem', '<(arm-clang-sysroot)/usr/include/c++/4.7.2',
- '-isystem', '<(arm-clang-sysroot)/usr/include/c++/4.7.2/arm-linux-gnueabihf',
+ '-isystem', '<(arm-clang-sysroot)/include/c++/4.9.1',
+ '-isystem', '<(arm-clang-sysroot)/include/c++/4.9.1/arm-frc-linux-gnueabi',
],
'ldflags': [
'<@(platflags)',
+ '-L', '/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.1',
+ #'-L', '<(arm-clang-sysroot)/other_lib/',
+ #'-nostartfiles',
],
},
},
], ['PLATFORM=="linux-amd64-clang"', {
'make_global_settings': [
- ['CC', '<(ccache)/opt/clang-3.5/bin/clang'],
- ['CXX', '<(ccache)/opt/clang-3.5/bin/clang++'],
+ ['CC', '<(ccache)<!(which clang)'],
+ ['CXX', '<(ccache)<!(which clang++)'],
],
},
], ['PLATFORM=="linux-amd64-gcc"', {
@@ -153,13 +144,21 @@
'__STDC_CONSTANT_MACROS',
'__STDC_LIMIT_MACROS',
'AOS_COMPILER_<!(echo <(FULL_COMPILER) | sed \'s/\./_/g\')',
+ '_FILE_OFFSET_BITS=64',
],
'ldflags': [
'-pipe',
+ '-pthread',
+ ],
+ 'libraries': [
+ '-lm',
+ '-lrt',
],
'cflags': [
'-pipe',
+ '-pthread',
+
'-Wall',
'-Wextra',
'-Wswitch-enum',
@@ -178,6 +177,9 @@
'cflags_c': [
'-std=gnu99',
],
+ 'cflags_cc': [
+ '-std=gnu++11',
+ ],
'include_dirs': [
'<(DEPTH)',
],
@@ -217,15 +219,7 @@
'ldflags': [
'-O3',
],
- 'conditions': [['PLATFORM=="crio"', {
-# Copied from stuff that I think started with the supplied Makefiles.
- 'cflags': [
- '-fstrength-reduce',
- '-fno-builtin',
- '-fno-strict-aliasing',
- ],
- }],
- ['ARCHITECTURE=="amd64"', {
+ 'conditions': [['ARCHITECTURE=="amd64"', {
'cflags': [
'-fstack-protector-all',
],
@@ -244,17 +238,7 @@
],
}
],
- ['ARCHITECTURE=="arm" and FULL_COMPILER!="gcc_frc"', {
- 'cflags': [
- '-mcpu=cortex-a8',
- '-mfpu=neon',
- ],
- 'ldflags': [
- '-mcpu=cortex-a8',
- '-mfpu=neon',
- ],
- }],
- ['ARCHITECTURE=="arm" and FULL_COMPILER=="gcc_frc"', {
+ ['ARCHITECTURE=="arm"', {
'cflags': [
'-mcpu=cortex-a9',
'-mfpu=neon',
@@ -266,95 +250,31 @@
'-mfloat-abi=softfp',
],
}],
- ['PLATFORM=="crio"', {
- 'target_conditions': [
- ['_type=="shared_library"', {
- 'ldflags': [
- '-r',
- '-nostdlib',
- '-Wl,-X',
- ],
- }
- ],
- ],
- 'ldflags': [
- '-mcpu=603e',
- '-mstrict-align',
- '-mlongcall',
- ],
- 'cflags': [
- # The Freescale MPC5200B (cRIO-FRC) and MPC5125 (cRIO-FRC II) both
- # have MPC603e cores according to Freescale docs.
- '-mcpu=603e',
- '-mstrict-align',
- '-mlongcall',
- '-isystem', '<(aos_abs)/../output/downloaded/gccdist/WindRiver/gnu/3.4.4-vxworks-6.3/x86-win32/lib/gcc/powerpc-wrs-vxworks/3.4.4/include/',
- '-isystem', '<(aos_abs)/../output/downloaded/gccdist/WindRiver/vxworks-6.3/target/h/',
- '-isystem', '<(aos_abs)/../output/downloaded/gccdist/WindRiver/gnu/3.4.4-vxworks-6.3/x86-win32/include/c++/3.4.4/',
- '-isystem', '<(aos_abs)/../output/downloaded/gccdist/WindRiver/gnu/3.4.4-vxworks-6.3/x86-win32/include/c++/3.4.4/powerpc-wrs-vxworks/',
- '-isystem', '<(WIND_BASE)/target/h',
- '-isystem', '<(WIND_BASE)/target/h/wrn/coreip',
- ],
- 'cflags_cc': [
- '-std=gnu++0x',
- ],
- 'defines': [
- 'CPU=PPC603',
- 'TOOL_FAMILY=gnu',
- 'TOOL=gnu',
- '_WRS_KERNEL',
- '__PPC__',
-# Prevent the vxworks system headers from being dumb and #defining min and max.
- 'NOMINMAX',
- ],
- }, { # 'PLATFORM!="crio"'
- 'target_conditions': [
+ ['COMPILER=="gcc"', {
+ 'cflags': [
+ '-Wunused-local-typedefs',
+ ],
+ 'defines': [
+ '__has_feature(n)=0'
+ ],
+ }], ['COMPILER=="clang"', {
+ 'cflags': [
+ '-fcolor-diagnostics',
+ '-fmessage-length=80',
+ '-fmacro-backtrace-limit=0',
+ ],
+ 'defines': [
+ # This tells clang's optimizer the same thing.
+ '__builtin_assume_aligned(p, a)=({ const typeof(p) my_p_ = (p); ((((uintptr_t)my_p_ % (a)) == 0u) ? my_p_ : (__builtin_unreachable(), (my_p_))); })',
+ ],
+ }],
+ ],
+ 'target_conditions': [
# Default to putting outputs into rsync_dir.
- ['no_rsync==0 and _type!="static_library"', {
- 'product_dir': '<(rsync_dir)',
- },
- ],
- ],
- 'ldflags': [
- '-pthread',
- ],
- 'cflags': [
- '-pthread',
- ],
- 'cflags_cc': [
- '-std=gnu++11',
- ],
- 'defines': [
- '_FILE_OFFSET_BITS=64',
- ],
- 'libraries': [
- '-lm',
- '-lrt',
- ],
- 'conditions': [
- ['COMPILER=="gcc"', {
- 'cflags': [
- '-Wunused-local-typedefs',
- ],
- 'defines': [
- '__has_feature(n)=0'
- ],
- },
- ], ['COMPILER=="clang"', {
- 'cflags': [
- '-fcolor-diagnostics',
- '-fmessage-length=80',
- '-fmacro-backtrace-limit=0',
- ],
- 'defines': [
- # This tells clang's optimizer the same thing.
- '__builtin_assume_aligned(p, a)=({ const typeof(p) my_p_ = (p); ((((uintptr_t)my_p_ % (a)) == 0u) ? my_p_ : (__builtin_unreachable(), (my_p_))); })',
- ],
- },
- ],
- ],
- }
- ]
+ ['no_rsync==0 and _type!="static_library"', {
+ 'product_dir': '<(rsync_dir)',
+ },
+ ],
],
},
}
diff --git a/aos/build/aos_all.gyp b/aos/build/aos_all.gyp
index 3d02b84..d67a11d 100644
--- a/aos/build/aos_all.gyp
+++ b/aos/build/aos_all.gyp
@@ -17,7 +17,6 @@
'<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:raw_queue_test',
'<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:ipc_stress_test',
'<(AOS)/linux_code/starter/starter.gyp:starter_exe',
- '<(AOS)/linux_code/starter/starter.gyp:netconsole',
'<(AOS)/linux_code/linux_code.gyp:complex_thread_local_test',
'<(AOS)/linux_code/linux_code.gyp:dump_rtprio',
],
diff --git a/aos/build/arm-clang-symlinks/bin/as b/aos/build/arm-clang-symlinks/bin/as
index 0e8bd12..f5bd4f8 120000
--- a/aos/build/arm-clang-symlinks/bin/as
+++ b/aos/build/arm-clang-symlinks/bin/as
@@ -1 +1 @@
-/usr/arm-linux-gnueabihf/bin/as
\ No newline at end of file
+/usr/bin/arm-frc-linux-gnueabi-as
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/bin/clang b/aos/build/arm-clang-symlinks/bin/clang
index 6e5b0eb..c456250 120000
--- a/aos/build/arm-clang-symlinks/bin/clang
+++ b/aos/build/arm-clang-symlinks/bin/clang
@@ -1 +1 @@
-/opt/clang-3.5/bin/clang
\ No newline at end of file
+/usr/bin/clang
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/bin/clang++ b/aos/build/arm-clang-symlinks/bin/clang++
index 3237b82..2932265 120000
--- a/aos/build/arm-clang-symlinks/bin/clang++
+++ b/aos/build/arm-clang-symlinks/bin/clang++
@@ -1 +1 @@
-/opt/clang-3.5/bin/clang++
\ No newline at end of file
+/usr/bin/clang++
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/bin/ld b/aos/build/arm-clang-symlinks/bin/ld
index 5981fc6..a12d1ed 120000
--- a/aos/build/arm-clang-symlinks/bin/ld
+++ b/aos/build/arm-clang-symlinks/bin/ld
@@ -1 +1 @@
-/usr/arm-linux-gnueabihf/bin/ld.gold
\ No newline at end of file
+/usr/bin/arm-frc-linux-gnueabi-ld
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/more_libs/libc.so b/aos/build/arm-clang-symlinks/more_libs/libc.so
new file mode 100644
index 0000000..188a467
--- /dev/null
+++ b/aos/build/arm-clang-symlinks/more_libs/libc.so
@@ -0,0 +1,5 @@
+/* GNU ld script
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+OUTPUT_FORMAT(elf32-littlearm)
+GROUP ( /home/brian/Desktop/git_frc971/2014/trunk/src/aos/build/arm-clang-symlinks/sysroot/lib/libc.so.6 /home/brian/Desktop/git_frc971/2014/trunk/src/aos/build/arm-clang-symlinks/sysroot/usr/lib/libc_nonshared.a AS_NEEDED ( /home/brian/Desktop/git_frc971/2014/trunk/src/aos/build/arm-clang-symlinks/sysroot/lib/ld-linux.so.3 ) )
diff --git a/aos/build/arm-clang-symlinks/more_libs/libpthread.so b/aos/build/arm-clang-symlinks/more_libs/libpthread.so
new file mode 100644
index 0000000..a7c99bf
--- /dev/null
+++ b/aos/build/arm-clang-symlinks/more_libs/libpthread.so
@@ -0,0 +1,5 @@
+/* GNU ld script
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+OUTPUT_FORMAT(elf32-littlearm)
+GROUP ( /home/brian/Desktop/git_frc971/2014/trunk/src/aos/build/arm-clang-symlinks/sysroot/lib/libpthread.so.0 /home/brian/Desktop/git_frc971/2014/trunk/src/aos/build/arm-clang-symlinks/sysroot/usr/lib/libpthread_nonshared.a )
diff --git a/aos/build/arm-clang-symlinks/other_lib b/aos/build/arm-clang-symlinks/other_lib
new file mode 120000
index 0000000..4603144
--- /dev/null
+++ b/aos/build/arm-clang-symlinks/other_lib
@@ -0,0 +1 @@
+/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/4.9.1
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/sysroot/include b/aos/build/arm-clang-symlinks/sysroot/include
new file mode 120000
index 0000000..f4878ac
--- /dev/null
+++ b/aos/build/arm-clang-symlinks/sysroot/include
@@ -0,0 +1 @@
+/usr/arm-frc-linux-gnueabi/include
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/sysroot/lib b/aos/build/arm-clang-symlinks/sysroot/lib
index aa3bc5b..5a01f30 120000
--- a/aos/build/arm-clang-symlinks/sysroot/lib
+++ b/aos/build/arm-clang-symlinks/sysroot/lib
@@ -1 +1 @@
-/usr/lib/gcc/arm-linux-gnueabihf/4.7
\ No newline at end of file
+/usr/arm-frc-linux-gnueabi/lib
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/sysroot/usr b/aos/build/arm-clang-symlinks/sysroot/usr
new file mode 120000
index 0000000..5d4ffd7
--- /dev/null
+++ b/aos/build/arm-clang-symlinks/sysroot/usr
@@ -0,0 +1 @@
+/usr/arm-frc-linux-gnueabi/usr
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/sysroot/usr/include b/aos/build/arm-clang-symlinks/sysroot/usr/include
deleted file mode 120000
index 60bd24d..0000000
--- a/aos/build/arm-clang-symlinks/sysroot/usr/include
+++ /dev/null
@@ -1 +0,0 @@
-/usr/arm-linux-gnueabihf/include
\ No newline at end of file
diff --git a/aos/build/arm-clang-symlinks/sysroot/usr/lib b/aos/build/arm-clang-symlinks/sysroot/usr/lib
deleted file mode 120000
index a9253d6..0000000
--- a/aos/build/arm-clang-symlinks/sysroot/usr/lib
+++ /dev/null
@@ -1 +0,0 @@
-/usr/arm-linux-gnueabihf/lib
\ No newline at end of file
diff --git a/aos/build/build.py b/aos/build/build.py
index acca25f..39559b3 100755
--- a/aos/build/build.py
+++ b/aos/build/build.py
@@ -377,86 +377,6 @@
' '.join(not_found))
exit(1)
-class CRIOProcessor(Processor):
- """A Processor subclass for building cRIO code."""
-
- class Platform(Processor.Platform):
- def __init__(self, debug, wind_base):
- super(CRIOProcessor.Platform, self).__init__()
-
- self.__debug = debug
- self.__wind_base = wind_base
-
- def __repr__(self):
- return 'CRIOProcessor.Platform(debug=%s)' % self.debug()
- def __str__(self):
- return 'crio%s' % ('-debug' if self.debug() else '')
-
- def outname(self):
- return 'crio-debug' if self.debug() else 'crio'
- def os(self):
- return 'vxworks'
- def gyp_platform(self):
- return 'crio'
- def architecture(self):
- return 'ppc'
- def compiler(self):
- return 'gcc'
- def sanitizer(self):
- return 'none'
- def debug(self):
- return self.__debug
- def wind_base(self):
- return self.__wind_base
-
- # TODO(brians): test this
- def deploy(self, dry_run):
- self.do_deploy(dry_run,
- ('ncftpput', get_ip('robot'), '/',
- os.path.join(self.outdir(), 'lib',
- 'FRC_UserProgram.out')))
-
- def build_env(self):
- return {'WIND_BASE': self.wind_base()}
-
- def __init__(self):
- super(CRIOProcessor, self).__init__()
-
- if 'WIND_BASE' in os.environ:
- self.__wind_base = os.environ['WIND_BASE']
- else:
- self.__wind_base = '/usr/local/powerpc-wrs-vxworks/wind_base'
-
- def parse_platforms(self, platforms_string):
- if platforms_string is None or platforms_string == 'crio':
- return (CRIOProcessor.Platform(False, self.wind_base()),)
- elif string == 'crio-debug' or string == 'debug':
- return (CRIOProcessor.Platform(True, self.wind_base()),)
- else:
- raise Processor.UnknownPlatform(
- '"%s" not recognized as a cRIO platform.' % platforms_string)
-
- def wind_base(self):
- return self.__wind_base
-
- def extra_gyp_flags(self):
- return ('-DWIND_BASE=%s' % self.wind_base(),)
-
- def modify_ninja_file(self, ninja_file):
- subprocess.check_call(
- ('sed', '-i',
- 's/nm -gD/nm/g', ninja_file),
- stdin=open(os.devnull, 'r'))
-
- def download_externals(self, _):
- call_download_externals('crio')
-
- def check_installed(self, platforms, is_deploy):
- packages = ('powerpc-wrs-vxworks', 'tcl')
- if is_deploy:
- packages += ('ncftp',)
- self.do_check_installed(packages)
-
class PrimeProcessor(Processor):
"""A Processor subclass for building prime code."""
@@ -511,7 +431,7 @@
def deploy(self, dry_run):
# Downloads code to the prime in a way that avoids clashing too badly with
# starter (like the naive download everything one at a time).
- if self.compiler() == 'gcc_frc':
+ if self.compiler().endswith('_frc'):
device = 'roboRIO'
else:
device = 'prime'
@@ -550,11 +470,11 @@
''.join(mv_cmd).format(TMPDIR=TEMP_DIR, TO_DIR=TARGET_DIR)))
def build_env(self):
- OTHER_SYSROOT = '/opt/clang-3.5/'
+ OTHER_SYSROOT = '/usr/lib/llvm-3.5'
SYMBOLIZER_PATH = OTHER_SYSROOT + 'bin/llvm-symbolizer'
r = {}
if self.compiler() == 'clang' or self.compiler() == 'gcc_4.8':
- r['LD_LIBRARY_PATH'] = OTHER_SYSROOT + 'lib64'
+ r['LD_LIBRARY_PATH'] = OTHER_SYSROOT + 'lib'
if self.sanitizer() == 'address':
r['ASAN_SYMBOLIZER_PATH'] = SYMBOLIZER_PATH
r['ASAN_OPTIONS'] = \
@@ -570,7 +490,7 @@
r['CCACHE_DIR'] = os.path.abspath(os.path.join(aos_path(), '..', 'output',
'ccache_dir'))
r['CCACHE_HASHDIR'] = 'yes'
- if self.compiler() == 'clang':
+ if self.compiler().startswith('clang'):
# clang doesn't like being run directly on the preprocessed files.
r['CCACHE_CPP2'] = 'yes'
# Without this, ccache slows down because of the generated header files.
@@ -586,7 +506,7 @@
return r
ARCHITECTURES = ('arm', 'amd64')
- COMPILERS = ('clang', 'gcc', 'gcc_4.8', 'gcc_frc')
+ COMPILERS = ('clang', 'gcc', 'gcc_frc')
SANITIZERS = ('address', 'undefined', 'integer', 'memory', 'thread', 'none')
SANITIZER_TEST_WARNINGS = {
'memory': (True,
@@ -603,14 +523,14 @@
for architecture in PrimeProcessor.ARCHITECTURES:
for compiler in PrimeProcessor.COMPILERS:
for debug in [True, False]:
- if ((architecture == 'arm' and compiler == 'gcc_4.8') or
- (architecture == 'amd64' and compiler == 'gcc_frc')):
+ if ((architecture == 'arm' and not compiler.endswith('_frc')) or
+ (architecture == 'amd64' and compiler.endswith('_frc'))):
# We don't have a compiler to use here.
continue
platforms.append(
self.Platform(architecture, compiler, debug, 'none'))
for sanitizer in PrimeProcessor.SANITIZERS:
- for compiler in ('gcc_4.8', 'clang'):
+ for compiler in ('clang',):
if compiler == 'gcc_4.8' and (sanitizer == 'undefined' or
sanitizer == 'integer' or
sanitizer == 'memory'):
@@ -630,12 +550,8 @@
if warning[0]:
default_platforms -= self.select_platforms(sanitizer=sanitizer)
elif is_deploy:
- if get_ip_base() == '10.99.71':
- compiler = 'gcc_frc'
- else:
- compiler = 'clang'
default_platforms = self.select_platforms(architecture='arm',
- compiler=compiler,
+ compiler='gcc_frc',
debug=False)
else:
default_platforms = self.select_platforms(debug=False)
@@ -732,7 +648,8 @@
if platform.architecture() == 'arm':
packages.add('gcc-4.7-arm-linux-gnueabihf')
packages.add('g++-4.7-arm-linux-gnueabihf')
- if platform.compiler() == 'clang' or platform.compiler() == 'gcc_4.8':
+ if (platform.compiler() == 'clang' or platform.compiler() == 'gcc_4.8' or
+ platform.compiler() == 'clang_frc'):
packages.add('clang-3.5')
if platform.compiler() == 'gcc_4.8':
packages.add('libcloog-isl3:amd64')
@@ -847,7 +764,7 @@
if len(r) > 1:
r[-1] = 'and ' + r[-1]
return ', '.join(r)
-
+
class Arguments(object):
def __init__(self):
self.jobs = os.sysconf('SC_NPROCESSORS_ONLN') + 2
@@ -890,9 +807,7 @@
else:
args.platform = arg
- if args.processor == 'crio':
- processor = CRIOProcessor()
- elif args.processor == 'prime':
+ if args.processor == 'prime':
processor = PrimeProcessor(args.action_name == 'tests',
args.action_name == 'deploy')
elif args.processor == 'bot3_prime':
@@ -1018,7 +933,7 @@
'-DSANITIZER=%s' % platform.sanitizer(),
'-DEXTERNALS_EXTRA=%s' %
('-fPIE' if platform.sanitizer() in PrimeProcessor.PIE_SANITIZERS
- else ('_frc' if platform.compiler() == 'gcc_frc' else ''))) +
+ else ('_frc' if platform.compiler().endswith('_frc') else ''))) +
processor.extra_gyp_flags() + (args.main_gyp,),
stdin=subprocess.PIPE)
gyp.communicate(("""
diff --git a/aos/build/crio_cc b/aos/build/crio_cc
deleted file mode 100755
index 442d3fe..0000000
--- a/aos/build/crio_cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# This is a helper script that gets called as a replacement for gcc. It just
-# passes all arguments on unless it is being called as a shared linker.
-
-[ $1 != '-shared' ] && exec powerpc-wrs-vxworks-gcc "$@"
-exec $(dirname $0)/crio_link_out "$@"
diff --git a/aos/build/crio_cxx b/aos/build/crio_cxx
deleted file mode 100755
index ea68e58..0000000
--- a/aos/build/crio_cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# This is a helper script that gets called as a replacement for g++. It just
-# passes all arguments on unless it is being called as a shared linker.
-
-[ $1 != '-shared' ] && exec powerpc-wrs-vxworks-g++ "$@"
-exec $(dirname $0)/crio_link_out "$@"
diff --git a/aos/build/crio_link_out b/aos/build/crio_link_out
deleted file mode 100755
index 0630341..0000000
--- a/aos/build/crio_link_out
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-#set -x
-
-set -e
-
-# This is a helper script that compiles .out files for the cRIO. It gets called
-# by the gcc and g++ wrapper scripts if they detect that the tool is being used
-# as a shared linker.
-
-# All the flags except -shared.
-INPUTS_FLAGS=`echo "$@" | sed 's/-shared//g'`
-# The arguments after any -o flags.
-OUTPUT=`echo ${INPUTS_FLAGS} | awk \
- 'BEGIN { RS=" " }; output { print ; output = 0 }; /-o/ { output = 1 }'`
-# All arguments that don't start with a - and aren't ${OUTPUT}.
-INPUTS=`echo ${INPUTS_FLAGS} | awk \
- 'BEGIN { RS=" " }; /-Wl,--no-whole-archive/ { output = 0 }; \
- output { print }; \
- /-Wl,--whole-archive/ { output = 1 }'`
-TEMPDIR=`dirname ${OUTPUT}`
-AOS=`dirname $0`/..
-powerpc-wrs-vxworks-nm ${INPUTS} | \
- tclsh ${WIND_BASE}/host/resource/hutils/tcl/munch.tcl -c ppc > \
- ${TEMPDIR}/ctdt.c
-powerpc-wrs-vxworks-gcc -I${AOS}/.. -c ${TEMPDIR}/ctdt.c -o ${TEMPDIR}/ctdt.o
-powerpc-wrs-vxworks-g++ ${INPUTS_FLAGS} ${TEMPDIR}/ctdt.o
-ln -f ${OUTPUT} `echo ${OUTPUT} | sed 's/lib\([A-Za-z0-9_]*\)\.so$/\1.out/'`
diff --git a/aos/build/download_externals.sh b/aos/build/download_externals.sh
index 674dc3a..50eec85 100755
--- a/aos/build/download_externals.sh
+++ b/aos/build/download_externals.sh
@@ -26,7 +26,6 @@
export CXXFLAGS="-mcpu=cortex-a8 -mfpu=neon"
export OBJDUMP=${CROSS_COMPILE}objdump
CONFIGURE_FLAGS="--host=arm-linux-gnueabihf CC=${CC} CXX=${CXX} CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" OBJDUMP=${OBJDUMP}"
- IS_CRIO=0
elif [ "$1" == "arm_frc" ]; then
COMPILED=${EXTERNALS}/../compiled-arm_frc
@@ -40,7 +39,6 @@
CONFIGURE_FLAGS="--host=arm-frc-linux-gnueabi CC=${CC} CXX=${CXX} CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" OBJDUMP=${OBJDUMP}"
elif [ "$1" == "amd64" ]; then
COMPILED=${EXTERNALS}/../compiled-amd64
- IS_CRIO=0
elif [ "$1" == "amd64-fPIE" ]; then
COMPILED=${EXTERNALS}/../compiled-amd64-fPIE
@@ -49,9 +47,6 @@
ALL_LDFLAGS="-fPIE"
export LDFLAGS=${ALL_LDFLAGS}
CONFIGURE_FLAGS="CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" LDFLAGS=\"${LDFLAGS}\""
- IS_CRIO=0
-elif [ "$1" == "crio" ]; then
- IS_CRIO=1
else
echo "Unknown platform $1 to download externals for." 1>&2
exit 1
@@ -68,24 +63,12 @@
# get gyp
[ -d ${GYP_DIR} ] || ( svn co http://gyp.googlecode.com/svn/trunk -r ${GYP_REVISION} ${GYP_DIR} && patch -p1 -d ${GYP_DIR} < ${AOS}/externals/gyp.patch )
-# get gccdist
-GCCDIST=${EXTERNALS}/gccdist
-[ -f ${GCCDIST}.zip ] || wget ftp://ftp.ni.com/pub/devzone/tut/updated_vxworks63gccdist.zip -O ${GCCDIST}.zip
-[ -d ${GCCDIST} ] || ( cd ${EXTERNALS} && unzip -q ${GCCDIST}.zip )
-
# get eigen
EIGEN_VERSION=3.2.1
EIGEN_DIR=${EXTERNALS}/eigen-${EIGEN_VERSION}
[ -f ${EIGEN_DIR}.tar.bz2 ] || wget http://bitbucket.org/eigen/eigen/get/${EIGEN_VERSION}.tar.bz2 -O ${EIGEN_DIR}.tar.bz2
[ -d ${EIGEN_DIR} ] || ( mkdir ${EIGEN_DIR} && tar --strip-components=1 -C ${EIGEN_DIR} -xf ${EIGEN_DIR}.tar.bz2 )
-# get the LLVM Compiler-RT source
-COMPILER_RT_TAG=RELEASE_32/final
-COMPILER_RT_VERSION=`echo ${COMPILER_RT_TAG} | sed s:/:_:`
-COMPILER_RT_DIR=${EXTERNALS}/compiler-rt-${COMPILER_RT_VERSION}
-COMPILER_RT_URL=http://llvm.org/svn/llvm-project/compiler-rt/tags/${COMPILER_RT_TAG}
-[ -d ${COMPILER_RT_DIR} ] || svn checkout ${COMPILER_RT_URL} ${COMPILER_RT_DIR}
-
# get gtest
GTEST_VERSION=1.6.0
GTEST_DIR=${EXTERNALS}/gtest-${GTEST_VERSION}-p2
@@ -93,8 +76,6 @@
[ -f ${GTEST_ZIP} ] || wget http://googletest.googlecode.com/files/gtest-${GTEST_VERSION}.zip -O ${GTEST_ZIP}
[ -d ${GTEST_DIR} ] || ( unzip ${GTEST_ZIP} -d ${TMPDIR} && mv ${TMPDIR}/gtest-${GTEST_VERSION} ${GTEST_DIR} && cd ${GTEST_DIR} && patch -p1 < ${AOS}/externals/gtest.patch )
-[[ ${IS_CRIO} -eq 1 ]] && exit 0
-
# get and build libjpeg
LIBJPEG_VERSION=8d
LIBJPEG_DIR=${COMPILED}/jpeg-${LIBJPEG_VERSION}
@@ -195,14 +176,6 @@
--prefix=$(readlink -f ${LIBCDD_PREFIX}) \
&& make gmpdir=${GMP_PREFIX} && make install"
-# download stm32flash
-STM32FLASH_COMMIT=8399fbe1baf2b7d097746786458021d92895d71b
-STM32FLASH_DIR=${EXTERNALS}/stm32flash-${STM32FLASH_COMMIT}
-STM32FLASH_URL=https://git.gitorious.org/stm32flash/stm32flash.git
-[ -d ${STM32FLASH_DIR} ] || ( mkdir ${STM32FLASH_DIR} && \
- git clone ${STM32FLASH_URL} ${STM32FLASH_DIR}/stm32flash && \
- cd ${STM32FLASH_DIR}/stm32flash && git checkout ${STM32FLASH_COMMIT} )
-
# get and build libunwind
LIBUNWIND_VERSION=1.1
LIBUNWIND_TAR=${EXTERNALS}/libunwind-${LIBUNWIND_VERSION}.tar.gz
diff --git a/aos/build/externals.gyp b/aos/build/externals.gyp
index ae5a038..de00669 100644
--- a/aos/build/externals.gyp
+++ b/aos/build/externals.gyp
@@ -46,54 +46,6 @@
},
},
{
- 'target_name': 'WPILib',
- 'type': 'static_library',
- 'sources': [
- '<!@(find <(AOS)/externals/WPILib/WPILib/ -name *.cpp)',
- ],
- 'cflags!': [
- '-Werror',
- '-ggdb3',
- '-O0'
- ],
- 'cflags': [
- '-ggdb1',
- '-O3'
- ],
- 'include_dirs': [
- '<(AOS)/externals/WPILib',
- '<(AOS)/externals/WPILib/WPILib',
- ],
- 'direct_dependent_settings': {
- 'cflags': [
- '-isystem', '<(AOS)/externals/WPILib',
- '-isystem', '<(AOS)/externals/WPILib/WPILib',
- ],
- },
- },
- {
- 'target_name': 'WPILib-NetworkRobotValues',
- 'type': 'static_library',
- 'sources': [
- '<(AOS)/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.cpp'
- ],
- 'include_dirs': [
- '<(AOS)/externals/WPILib',
- ],
- 'defines': [
- # Clang doesn't like having register in the hton* macros.
- 'register=',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(AOS)/externals/WPILib',
- ],
- 'defines': [
- 'register=',
- ],
- },
- },
- {
'target_name': 'opencv',
'type': 'none',
'link_settings': {
@@ -205,26 +157,5 @@
'include_dirs': ['<(compiled_abs)/'],
},
},
- {
- 'target_name': 'stm32flash',
- 'type': 'static_library',
- 'sources': [
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/init.c',
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/parsers/hex.c',
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/serial_common.c',
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/serial_platform.c',
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/utils.c',
- '<(externals)/stm32flash-<(stm32flash_commit)/stm32flash/stm32.c',
- ],
- 'cflags': [
- '-Wno-error',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': ['<(externals_abs)/stm32flash-<(stm32flash_commit)'],
- },
- },
- ],
- 'includes': [
- 'libgcc-additions/libgcc-additions.gypi',
],
}
diff --git a/aos/build/libgcc-additions/README b/aos/build/libgcc-additions/README
deleted file mode 100644
index 6a9a665..0000000
--- a/aos/build/libgcc-additions/README
+++ /dev/null
@@ -1,26 +0,0 @@
-This directory contains the stuff necessary to deal with the fact that the
- libgcc.a from the old GCC that the cRIO has doesn't have all of the functions
- that newer GCCs expect from it.
-
-[extra functions necessary for 4.5.2]
-I generated this diff with `powerpc-wrs-vxworks-nm \
- gccdist/WindRiver/gnu/3.4.4-vxworks-6.3/x86-win32/lib/gcc/powerpc-wrs-vxworks/3.4.4/libgcc.a \
- | fgrep '000 T' | awk ' { print $NF }'` (and using the same command with the
- gccdist.a from the 4.5.2 GCC.
- I then gave the outputs from both of those to diff and edited out by hand the
- functions that just moved.
-__powisf2
-__powidf2
-__mulsc3
-__muldc3
-__divsc3
-__divdc3
-__bswapsi2
-__bswapdi2
-__floatundisf
-__floatundidf
-__eprintf
-
-eprintf looks like it's not needed.
-Compiler-RT thinks that bswapsi2 and bswapdi2 are only needed on arm, so it
- only has arm assembly for them.
diff --git a/aos/build/libgcc-additions/_bswapdi2.o b/aos/build/libgcc-additions/_bswapdi2.o
deleted file mode 100644
index 8bc6f56..0000000
--- a/aos/build/libgcc-additions/_bswapdi2.o
+++ /dev/null
Binary files differ
diff --git a/aos/build/libgcc-additions/_bswapsi2.o b/aos/build/libgcc-additions/_bswapsi2.o
deleted file mode 100644
index 4700ad8..0000000
--- a/aos/build/libgcc-additions/_bswapsi2.o
+++ /dev/null
Binary files differ
diff --git a/aos/build/libgcc-additions/libgcc-additions.gypi b/aos/build/libgcc-additions/libgcc-additions.gypi
deleted file mode 100644
index afa81f6..0000000
--- a/aos/build/libgcc-additions/libgcc-additions.gypi
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- 'targets': [
- {
- 'target_name': 'libgcc-4.5.2',
- 'type': 'static_library',
- 'variables': {
- 'compiler-rt': '<(externals)/compiler-rt-<(compiler_rt_version)',
- },
- 'include_dirs': [
- '<(compiler-rt)/lib',
- ],
- 'defines': [
- '_YUGA_BIG_ENDIAN=1',
- '_YUGA_LITTLE_ENDIAN=0',
- 'UINT64_C(c)=c##ULL',
- ],
- 'sources': [
- '<(compiler-rt)/lib/powisf2.c',
- '<(compiler-rt)/lib/powidf2.c',
- '<(compiler-rt)/lib/mulsc3.c',
- '<(compiler-rt)/lib/muldc3.c',
- '<(compiler-rt)/lib/divsc3.c',
- '<(compiler-rt)/lib/divdc3.c',
- #'<(compiler-rt)/lib/bswapsi2.c',
- '_bswapsi2.o',
- #'<(compiler-rt)/lib/bswapdi2.c',
- '_bswapdi2.o',
- '<(compiler-rt)/lib/floatundisf.c',
- '<(compiler-rt)/lib/floatundidf.c',
-
- 'libm.c',
- ],
- },
- ],
-}
diff --git a/aos/build/libgcc-additions/libm.c b/aos/build/libgcc-additions/libm.c
deleted file mode 100644
index ce04ce5..0000000
--- a/aos/build/libgcc-additions/libm.c
+++ /dev/null
@@ -1,47 +0,0 @@
-// Some of the Compiler-RT implementations we use want to use functions from
-// libm. However, GCC provides builtins for them, so they don't need to show up
-// in <math.h> Unfortunately, those GCC builtins seem to (sometimes, at least)
-// just emit calls to the functions themselves, so we have our own
-// implementations here. They might not be as fast as they could be, but they
-// are correct as far as I can tell.
-
-#include <stdint.h>
-
-double fmax(double a, double b) {
- if (__builtin_isnan(a)) return b;
- if (__builtin_isnan(b)) return a;
- if (a > b) return a;
- return b;
-}
-float fmaxf(float a, float b) {
- if (__builtin_isnan(a)) return b;
- if (__builtin_isnan(b)) return a;
- if (a > b) return a;
- return b;
-}
-
-double scalbn(double x, int exp) {
- return x * (2 << exp);
-}
-float scalbnf(float x, int exp) {
- return x * (2 << exp);
-}
-
-float logbf(float x) {
- union {
- float f;
- int32_t d;
- } converter;
- converter.f = x;
- int32_t ix = converter.d & 0x7fffffff;
- int32_t rix;
-
- if (ix == 0) {
- return (float)-1.0 / __builtin_fabsf(x);
- } else if (ix >= 0x7f800000) {
- return x * x;
- } else if (__builtin_expect((rix = ix >> 23) == 0, 0)) {
- rix -= __builtin_clz(ix) - 9;
- }
- return (float)(rix - 127);
-}
diff --git a/aos/build/queues/compiler.rb b/aos/build/queues/compiler.rb
index 864d1c6..52c0005 100644
--- a/aos/build/queues/compiler.rb
+++ b/aos/build/queues/compiler.rb
@@ -60,7 +60,7 @@
end
def format_pipeline(output)
read_in, write_in = IO.pipe()
- child = Process.spawn('/opt/clang-3.5/bin/clang-format --style=google',
+ child = Process.spawn('/usr/bin/clang-format-3.5 --style=google',
{:in=>read_in, write_in=>:close,
:out=>output.fileno})
read_in.close
diff --git a/aos/common/common.gyp b/aos/common/common.gyp
index 9a63e48..693f717 100644
--- a/aos/common/common.gyp
+++ b/aos/common/common.gyp
@@ -118,25 +118,12 @@
'sources': [
'queue.cc',
],
- 'conditions': [
- ['PLATFORM=="crio"', {
- 'dependencies': [
- '<(EXTERNALS):WPILib',
- ],
- },
- {
- 'dependencies': [
- '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:queue',
- ],
- 'export_dependent_settings': [
- '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:queue',
- ],
- }]
- ],
'dependencies': [
+ '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:queue',
'time',
],
'export_dependent_settings': [
+ '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:queue',
'time',
],
},
@@ -253,26 +240,16 @@
{
'target_name': 'mutex',
'type': 'static_library',
- 'conditions': [
- ['PLATFORM=="crio"', {
- 'sources': [
- '<(AOS)/crio/shared_libs/mutex.cpp',
- ],
- }, {
- 'sources': [
- '<(AOS)/linux_code/ipc_lib/mutex.cpp',
- ],
- 'dependencies': [
- '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:aos_sync',
- ],
- 'export_dependent_settings': [
- '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:aos_sync',
- ],
- }],
+ 'sources': [
+ '<(AOS)/linux_code/ipc_lib/mutex.cpp',
],
'dependencies': [
+ '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:aos_sync',
'<(AOS)/build/aos.gyp:logging_interface',
],
+ 'export_dependent_settings': [
+ '<(AOS)/linux_code/ipc_lib/ipc_lib.gyp:aos_sync',
+ ],
},
{
'target_name': 'mutex_test',
diff --git a/aos/common/controls/output_check.q b/aos/common/controls/output_check.q
index 76f5cd7..e7c8190 100644
--- a/aos/common/controls/output_check.q
+++ b/aos/common/controls/output_check.q
@@ -7,7 +7,7 @@
double pulse_length;
};
-// Each message here represents a value that was sent to the cRIO.
+// Each message here represents a value that was sent out.
// The sent timestamp of the message is when the value was sent.
queue OutputCheck output_check_sent;
diff --git a/aos/common/debugging-tips.txt b/aos/common/debugging-tips.txt
index 718f7d9..b9a50f3 100644
--- a/aos/common/debugging-tips.txt
+++ b/aos/common/debugging-tips.txt
@@ -12,8 +12,7 @@
[Startup]
Low level startup errors often end up in
/tmp/aos_fatal_error.* under linux. Also helpful are the /tmp/starter*_std*
- files (if the standard start scripts are being used) and
- aos/crio/bin/netconsole.sh for reading cRIO stdout and stderr.
+ files (if the standard start scripts are being used).
If lots of the /tmp/starter_*std* files (with different numbers) are being
created, that means that starter_exe is dying constantly.
diff --git a/aos/common/input/input.gyp b/aos/common/input/input.gyp
index 7d5af30..5674ce7 100644
--- a/aos/common/input/input.gyp
+++ b/aos/common/input/input.gyp
@@ -7,11 +7,9 @@
'driver_station_data.cc',
],
'dependencies': [
- '<(EXTERNALS):WPILib-NetworkRobotValues',
'<(AOS)/common/messages/messages.gyp:robot_state',
],
'export_dependent_settings': [
- '<(EXTERNALS):WPILib-NetworkRobotValues',
'<(AOS)/common/messages/messages.gyp:robot_state',
],
},
diff --git a/aos/config/README.txt b/aos/config/README.txt
deleted file mode 100644
index 4732bb3..0000000
--- a/aos/config/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-[FILES]
-
-fitpc_kernel.config is a kernel configuration file for a fit-pc2
- it is currently for kernel version 3.2.21
- directions to use
- download the 3.2.21 vanilla kernel source and the 3.2.21 rt patch
- extract the kernel source and apply the patch
- if on a 64-bit x86 machine, create a 32-bit chroot to build in
- make sure fakeroot and kernel-package are installed
- in the linux-x.x.x directory: fakeroot make-kpkg --jobs=4 kernel_image
diff --git a/aos/config/fitpc_kernel.config b/aos/config/fitpc_kernel.config
deleted file mode 100644
index e4d8700..0000000
--- a/aos/config/fitpc_kernel.config
+++ /dev/null
@@ -1,3798 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.2.21 Kernel Configuration
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_INSTRUCTION_DECODER=y
-CONFIG_OUTPUT_FORMAT="elf32-i386"
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-# CONFIG_NEED_DMA_MAP_STATE is not set
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
-CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
-CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_KTIME_SCALAR=y
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_BZIP2=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_XZ is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_FHANDLE is not set
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_WATCH=y
-CONFIG_AUDIT_TREE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_SPARSE_IRQ=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_PREEMPT_RCU=y
-CONFIG_PREEMPT_RCU=y
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_BOOST is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=17
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-# CONFIG_RESOURCE_COUNTERS is not set
-# CONFIG_CGROUP_PERF is not set
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_CFS_BANDWIDTH is not set
-# CONFIG_RT_GROUP_SCHED is not set
-# CONFIG_BLK_CGROUP is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_SLAB=y
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
-# CONFIG_JUMP_LABEL is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_KRETPROBES=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_OPTPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
-CONFIG_HAVE_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_PERF_EVENTS_NMI=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-CONFIG_BLK_DEV_INTEGRITY=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_SPIN_UNLOCK is not set
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_READ_UNLOCK is not set
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_WRITE_UNLOCK is not set
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
-CONFIG_SMP=y
-# CONFIG_X86_MPPARSE is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_EXTENDED_PLATFORM is not set
-# CONFIG_X86_32_IRIS is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MELAN is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MCORE2 is not set
-CONFIG_MATOM=y
-# CONFIG_X86_GENERIC is not set
-CONFIG_X86_INTERNODE_CACHE_SHIFT=6
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
-CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=5
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_CYRIX_32=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_CPU_SUP_TRANSMETA_32=y
-CONFIG_CPU_SUP_UMC_32=y
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
-CONFIG_PREEMPT=y
-CONFIG_PREEMPT_RT_BASE=y
-# CONFIG_PREEMPT_NONE is not set
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT__LL is not set
-# CONFIG_PREEMPT_RTB is not set
-CONFIG_PREEMPT_RT_FULL=y
-CONFIG_PREEMPT_COUNT=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-# CONFIG_X86_MCE_AMD is not set
-# CONFIG_X86_ANCIENT_MCE is not set
-CONFIG_X86_MCE_THRESHOLD=y
-# CONFIG_X86_MCE_INJECT is not set
-CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-# CONFIG_MICROCODE_AMD is not set
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
-CONFIG_X86_CPUID=m
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
-CONFIG_NEED_NODE_MEMMAP_SIZE=y
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_HAVE_MEMBLOCK=y
-# CONFIG_MEMORY_HOTPLUG is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
-# CONFIG_CLEANCACHE is not set
-# CONFIG_HIGHPTE is not set
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW=64
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-CONFIG_X86_PAT=y
-CONFIG_ARCH_USES_PG_UNCACHED=y
-CONFIG_ARCH_RANDOM=y
-# CONFIG_EFI is not set
-# CONFIG_SECCOMP is not set
-CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-CONFIG_HZ_1000=y
-CONFIG_HZ=1000
-CONFIG_SCHED_HRTICK=y
-CONFIG_KEXEC=y
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x1000000
-CONFIG_RELOCATABLE=y
-CONFIG_X86_NEED_RELOCS=y
-CONFIG_PHYSICAL_ALIGN=0x1000000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-
-#
-# Power management and ACPI options
-#
-# CONFIG_SUSPEND is not set
-# CONFIG_HIBERNATION is not set
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_PROCFS=y
-# CONFIG_ACPI_PROCFS_POWER is not set
-# CONFIG_ACPI_EC_DEBUGFS is not set
-# CONFIG_ACPI_PROC_EVENT is not set
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=y
-# CONFIG_ACPI_FAN is not set
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=y
-# CONFIG_ACPI_IPMI is not set
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-CONFIG_ACPI_SBS=m
-# CONFIG_ACPI_HED is not set
-# CONFIG_ACPI_CUSTOM_METHOD is not set
-# CONFIG_ACPI_APEI is not set
-CONFIG_SFI=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=m
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-
-#
-# x86 CPU frequency scaling drivers
-#
-# CONFIG_X86_PCC_CPUFREQ is not set
-CONFIG_X86_ACPI_CPUFREQ=m
-# CONFIG_X86_POWERNOW_K6 is not set
-# CONFIG_X86_POWERNOW_K7 is not set
-# CONFIG_X86_POWERNOW_K8 is not set
-# CONFIG_X86_GX_SUSPMOD is not set
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
-# CONFIG_X86_SPEEDSTEP_ICH is not set
-# CONFIG_X86_SPEEDSTEP_SMI is not set
-# CONFIG_X86_P4_CLOCKMOD is not set
-# CONFIG_X86_CPUFREQ_NFORCE2 is not set
-# CONFIG_X86_LONGRUN is not set
-# CONFIG_X86_LONGHAUL is not set
-# CONFIG_X86_E_POWERSAVER is not set
-
-#
-# shared options
-#
-# CONFIG_X86_SPEEDSTEP_LIB is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-CONFIG_INTEL_IDLE=y
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_PCIEPORTBUS=y
-# CONFIG_HOTPLUG_PCI_PCIE is not set
-CONFIG_PCIEAER=y
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIEAER_INJECT is not set
-CONFIG_PCIEASPM=y
-# CONFIG_PCIEASPM_DEBUG is not set
-CONFIG_PCIE_PME=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-# CONFIG_PCI_DEBUG is not set
-# CONFIG_PCI_STUB is not set
-CONFIG_HT_IRQ=y
-CONFIG_PCI_ATS=y
-CONFIG_PCI_IOV=y
-# CONFIG_PCI_PRI is not set
-# CONFIG_PCI_PASID is not set
-CONFIG_PCI_IOAPIC=y
-CONFIG_PCI_LABEL=y
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-# CONFIG_OLPC is not set
-# CONFIG_ALIX is not set
-CONFIG_AMD_NB=y
-# CONFIG_PCCARD is not set
-CONFIG_HOTPLUG_PCI=m
-CONFIG_HOTPLUG_PCI_FAKE=m
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI=y
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
-# CONFIG_RAPIDIO is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_ROUTE_CLASSID=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-# CONFIG_NET_IPGRE_DEMUX is not set
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_TCP_MD5SIG=y
-CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-CONFIG_IPV6_OPTIMISTIC_DAD=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=y
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set
-CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_NETLABEL is not set
-CONFIG_NETWORK_SECMARK=y
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_BROADCAST=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-# CONFIG_NF_CONNTRACK_SNMP is not set
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-CONFIG_NETFILTER_XT_CONNMARK=m
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
-# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
-# CONFIG_NETFILTER_XT_TARGET_CT is not set
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HL=m
-# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-# CONFIG_NETFILTER_XT_TARGET_TEE is not set
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_SECMARK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-# CONFIG_NETFILTER_XT_MATCH_CPU is not set
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-# CONFIG_IP_VS_PROTO_SCTP is not set
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_NFCT=y
-# CONFIG_IP_VS_PE_SIP is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-
-#
-# DECnet: Netfilter Configuration
-#
-CONFIG_DECNET_NF_GRABULATOR=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-CONFIG_IP_DCCP_CCID3=y
-# CONFIG_IP_DCCP_CCID3_DEBUG is not set
-CONFIG_IP_DCCP_TFRC_LIB=y
-
-#
-# DCCP Kernel Hacking
-#
-# CONFIG_IP_DCCP_DEBUG is not set
-# CONFIG_NET_DCCPPROBE is not set
-CONFIG_IP_SCTP=m
-# CONFIG_NET_SCTPPROBE is not set
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_RDS=m
-CONFIG_RDS_TCP=m
-# CONFIG_RDS_DEBUG is not set
-CONFIG_TIPC=m
-CONFIG_TIPC_ADVANCED=y
-CONFIG_TIPC_PORTS=8191
-CONFIG_TIPC_LOG=0
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-# CONFIG_L2TP is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-CONFIG_X25=m
-CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-# CONFIG_NET_SCH_SFB is not set
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_QFQ is not set
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_CLS_CGROUP=y
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-# CONFIG_NET_ACT_CSUM is not set
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-CONFIG_DCB=y
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_NET_TCPPROBE is not set
-CONFIG_NET_DROP_MONITOR=y
-# CONFIG_HAMRADIO is not set
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-# CONFIG_CAN_GW is not set
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-# CONFIG_CAN_SLCAN is not set
-CONFIG_CAN_DEV=m
-CONFIG_CAN_CALC_BITTIMING=y
-# CONFIG_CAN_MCP251X is not set
-# CONFIG_PCH_CAN is not set
-CONFIG_CAN_SJA1000=m
-CONFIG_CAN_SJA1000_PLATFORM=m
-CONFIG_CAN_EMS_PCI=m
-# CONFIG_CAN_PEAK_PCI is not set
-CONFIG_CAN_KVASER_PCI=m
-# CONFIG_CAN_PLX_PCI is not set
-# CONFIG_CAN_C_CAN is not set
-
-#
-# CAN USB interfaces
-#
-CONFIG_CAN_EMS_USB=m
-# CONFIG_CAN_ESD_USB2 is not set
-# CONFIG_CAN_SOFTING is not set
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-CONFIG_ACT200L_DONGLE=m
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-# CONFIG_TOSHIBA_FIR is not set
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
-# CONFIG_BT is not set
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-# CONFIG_RXKAD is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_CFG80211=m
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-# CONFIG_WIRELESS_EXT_SYSFS is not set
-CONFIG_LIB80211=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_RFKILL_REGULATOR is not set
-CONFIG_NET_9P=m
-# CONFIG_NET_9P_DEBUG is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-# CONFIG_DEVTMPFS_MOUNT is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=m
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_TESTS is not set
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-# CONFIG_SM_FTL is not set
-CONFIG_MTD_OOPS=m
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-# CONFIG_MTD_AMD76XROM is not set
-# CONFIG_MTD_ICHXROM is not set
-# CONFIG_MTD_ESB2ROM is not set
-# CONFIG_MTD_CK804XROM is not set
-# CONFIG_MTD_SCB2_FLASH is not set
-CONFIG_MTD_NETtel=m
-# CONFIG_MTD_L440GX is not set
-CONFIG_MTD_PCI=m
-# CONFIG_MTD_GPIO_ADDR is not set
-CONFIG_MTD_INTEL_VR_NOR=m
-CONFIG_MTD_PLATRAM=m
-# CONFIG_MTD_LATCH_ADDR is not set
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-# CONFIG_MTD_PMC551_BUGFIX is not set
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_DATAFLASH=m
-# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-# CONFIG_MTD_DATAFLASH_OTP is not set
-CONFIG_MTD_M25P80=m
-CONFIG_M25PXX_USE_FAST_READ=y
-CONFIG_MTD_SST25L=m
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0x0
-CONFIG_MTD_NAND_ECC=m
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_DENALI is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_RICOH is not set
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-CONFIG_MTD_NAND_CAFE=m
-# CONFIG_MTD_NAND_CS553X is not set
-CONFIG_MTD_NAND_NANDSIM=m
-CONFIG_MTD_NAND_PLATFORM=m
-CONFIG_MTD_ALAUDA=m
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-CONFIG_MTD_ONENAND_GENERIC=m
-# CONFIG_MTD_ONENAND_OTP is not set
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
-CONFIG_MTD_ONENAND_SIM=m
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
-# CONFIG_PARPORT is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG_MESSAGES is not set
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=m
-CONFIG_BLK_CPQ_DA=m
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=m
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_IBM_ASM is not set
-CONFIG_HWLAT_DETECTOR=m
-# CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
-CONFIG_SGI_IOC4=m
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-# CONFIG_ICS932S401 is not set
-CONFIG_ENCLOSURE_SERVICES=m
-# CONFIG_HP_ILO is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_TI_DAC7512 is not set
-# CONFIG_VMWARE_BALLOON is not set
-# CONFIG_BMP085 is not set
-# CONFIG_PCH_PHUB is not set
-# CONFIG_USB_SWITCH_FSA9480 is not set
-CONFIG_C2PORT=m
-CONFIG_C2PORT_DURAMAR_2150=m
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_AT25=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
-CONFIG_EEPROM_93CX6=m
-# CONFIG_EEPROM_93XX46 is not set
-CONFIG_CB710_CORE=m
-# CONFIG_CB710_DEBUG is not set
-CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-# CONFIG_IWMC3200TOP is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-# CONFIG_TI_ST is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-# CONFIG_SCSI_ENCLOSURE is not set
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-CONFIG_ISCSI_BOOT_SYSFS=y
-# CONFIG_SCSI_CXGB3_ISCSI is not set
-# CONFIG_SCSI_CXGB4_ISCSI is not set
-CONFIG_SCSI_BNX2_ISCSI=m
-# CONFIG_SCSI_BNX2X_FCOE is not set
-# CONFIG_BE2ISCSI is not set
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_HPSA=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_MVSAS=m
-# CONFIG_SCSI_MVSAS_DEBUG is not set
-# CONFIG_SCSI_MVSAS_TASKLET is not set
-# CONFIG_SCSI_MVUMI is not set
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_ARCMSR=m
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_BUSLOGIC=m
-# CONFIG_SCSI_FLASHPOINT is not set
-CONFIG_VMWARE_PVSCSI=m
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
-CONFIG_FCOE=m
-CONFIG_FCOE_FNIC=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-# CONFIG_SCSI_ISCI is not set
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-# CONFIG_SCSI_INIA100 is not set
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_QLA_FC=m
-CONFIG_SCSI_QLA_ISCSI=m
-CONFIG_SCSI_LPFC=m
-# CONFIG_SCSI_LPFC_DEBUG_FS is not set
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-# CONFIG_SCSI_NSP32 is not set
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_PMCRAID=m
-CONFIG_SCSI_PM8001=m
-CONFIG_SCSI_SRP=m
-CONFIG_SCSI_BFA_FC=m
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_SCSI_OSD_INITIATOR=m
-CONFIG_SCSI_OSD_ULD=m
-CONFIG_SCSI_OSD_DPRINT_SENSE=1
-# CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-CONFIG_SATA_AHCI=m
-# CONFIG_SATA_AHCI_PLATFORM is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_SATA_ACARD_AHCI is not set
-# CONFIG_SATA_SIL24 is not set
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_SX4 is not set
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-
-#
-# PATA SFF controllers with BMDMA
-#
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-# CONFIG_PATA_ARASAN_CF is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_ATP867X is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CS5535 is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NINJA32 is not set
-# CONFIG_PATA_NS87415 is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RDC is not set
-# CONFIG_PATA_SC1200 is not set
-CONFIG_PATA_SCH=y
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_TOSHIBA is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-
-#
-# PIO-only SFF controllers
-#
-# CONFIG_PATA_CMD640_PCI is not set
-CONFIG_PATA_MPIIX=m
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_RZ1000 is not set
-
-#
-# Generic fallback / legacy drivers
-#
-# CONFIG_PATA_ACPI is not set
-CONFIG_ATA_GENERIC=y
-# CONFIG_PATA_LEGACY is not set
-# CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_FIREWIRE=m
-CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
-CONFIG_FIREWIRE_SBP2=m
-CONFIG_FIREWIRE_NET=m
-# CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-# CONFIG_BONDING is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_NET_FC is not set
-CONFIG_MII=y
-CONFIG_IFB=m
-# CONFIG_MACVLAN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_ARCNET is not set
-# CONFIG_ATM_DRIVERS is not set
-
-#
-# CAIF transport drivers
-#
-CONFIG_ETHERNET=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_ADAPTEC is not set
-# CONFIG_NET_VENDOR_ALTEON is not set
-# CONFIG_NET_VENDOR_AMD is not set
-# CONFIG_NET_VENDOR_ATHEROS is not set
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2X is not set
-# CONFIG_NET_VENDOR_BROCADE is not set
-# CONFIG_NET_VENDOR_CHELSIO is not set
-# CONFIG_NET_VENDOR_CISCO is not set
-# CONFIG_DNET is not set
-# CONFIG_NET_VENDOR_DEC is not set
-# CONFIG_NET_VENDOR_DLINK is not set
-# CONFIG_NET_VENDOR_EMULEX is not set
-# CONFIG_NET_VENDOR_EXAR is not set
-# CONFIG_NET_VENDOR_HP is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_IP1000 is not set
-# CONFIG_JME is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MELLANOX is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
-# CONFIG_NET_VENDOR_MYRI is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_NVIDIA is not set
-# CONFIG_NET_VENDOR_OKI is not set
-# CONFIG_ETHOC is not set
-# CONFIG_NET_PACKET_ENGINE is not set
-# CONFIG_NET_VENDOR_QLOGIC is not set
-CONFIG_NET_VENDOR_REALTEK=y
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-CONFIG_R8169=y
-# CONFIG_NET_VENDOR_RDC is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SILAN is not set
-# CONFIG_NET_VENDOR_SIS is not set
-# CONFIG_SFC is not set
-# CONFIG_NET_VENDOR_SMSC is not set
-# CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_SUN is not set
-# CONFIG_NET_VENDOR_TEHUTI is not set
-# CONFIG_NET_VENDOR_TI is not set
-# CONFIG_NET_VENDOR_VIA is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_NET_SB1000 is not set
-CONFIG_PHYLIB=m
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-# CONFIG_MICREL_PHY is not set
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_TR is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-# CONFIG_USB_NET_SMSC75XX is not set
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_NET_CX82310_ETH is not set
-# CONFIG_USB_NET_KALMIA is not set
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-# CONFIG_USB_SIERRA_NET is not set
-# CONFIG_USB_VL600 is not set
-# CONFIG_WLAN is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_VMXNET3 is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=y
-CONFIG_INPUT_SPARSEKMAP=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=y
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-CONFIG_KEYBOARD_LKKBD=m
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-CONFIG_MOUSE_PS2_ELANTECH=y
-CONFIG_MOUSE_PS2_SENTELIC=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-CONFIG_INPUT_JOYSTICK=y
-# CONFIG_JOYSTICK_ANALOG is not set
-# CONFIG_JOYSTICK_A3D is not set
-CONFIG_JOYSTICK_ADI=m
-# CONFIG_JOYSTICK_COBRA is not set
-# CONFIG_JOYSTICK_GF2K is not set
-# CONFIG_JOYSTICK_GRIP is not set
-# CONFIG_JOYSTICK_GRIP_MP is not set
-# CONFIG_JOYSTICK_GUILLEMOT is not set
-# CONFIG_JOYSTICK_INTERACT is not set
-CONFIG_JOYSTICK_SIDEWINDER=m
-CONFIG_JOYSTICK_TMDC=m
-# CONFIG_JOYSTICK_IFORCE is not set
-# CONFIG_JOYSTICK_WARRIOR is not set
-# CONFIG_JOYSTICK_MAGELLAN is not set
-# CONFIG_JOYSTICK_SPACEORB is not set
-# CONFIG_JOYSTICK_SPACEBALL is not set
-# CONFIG_JOYSTICK_STINGER is not set
-# CONFIG_JOYSTICK_TWIDJOY is not set
-# CONFIG_JOYSTICK_ZHENHUA is not set
-# CONFIG_JOYSTICK_AS5011 is not set
-# CONFIG_JOYSTICK_JOYDUMP is not set
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-CONFIG_GAMEPORT=m
-# CONFIG_GAMEPORT_NS558 is not set
-# CONFIG_GAMEPORT_L4 is not set
-# CONFIG_GAMEPORT_EMU10K1 is not set
-# CONFIG_GAMEPORT_FM801 is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_SYNCLINK is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-# CONFIG_NOZOMI is not set
-# CONFIG_ISI is not set
-CONFIG_N_HDLC=m
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-# CONFIG_DEVKMEM is not set
-CONFIG_STALDRV=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_MAX3100=m
-# CONFIG_SERIAL_MAX3107 is not set
-# CONFIG_SERIAL_MFD_HSU is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_JSM=m
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_PCH_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_TIMERIOMEM=y
-CONFIG_HW_RANDOM_INTEL=y
-# CONFIG_HW_RANDOM_AMD is not set
-CONFIG_HW_RANDOM_GEODE=y
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_NVRAM=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-# CONFIG_SONYPI is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-CONFIG_HPET=y
-CONFIG_HPET_MMAP=y
-CONFIG_HANGCHECK_TIMER=m
-# CONFIG_TCG_TPM is not set
-CONFIG_TELCLOCK=m
-CONFIG_DEVPORT=y
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-CONFIG_I2C_ISCH=y
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-
-#
-# ACPI drivers
-#
-CONFIG_I2C_SCMI=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PCI is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_INTEL_MID is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-# CONFIG_I2C_EG20T is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_SCx200_ACB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-CONFIG_SPI_BITBANG=m
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_OC_TINY is not set
-# CONFIG_SPI_PXA2XX is not set
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_TOPCLIFF_PCH is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_SPIDEV is not set
-CONFIG_SPI_TLE62X0=m
-
-#
-# PPS support
-#
-CONFIG_PPS=m
-# CONFIG_PPS_DEBUG is not set
-
-#
-# PPS clients support
-#
-# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-# CONFIG_PTP_1588_CLOCK is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_DEBUG_GPIO is not set
-# CONFIG_GPIO_SYSFS is not set
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-# CONFIG_GPIO_SCH is not set
-# CONFIG_GPIO_VX855 is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-# CONFIG_GPIO_LANGWELL is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2780 is not set
-CONFIG_BATTERY_DS2782=m
-# CONFIG_BATTERY_BQ20Z75 is not set
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_BATTERY_BQ27X00_I2C=y
-CONFIG_BATTERY_BQ27X00_PLATFORM=y
-CONFIG_BATTERY_MAX17040=m
-# CONFIG_BATTERY_MAX17042 is not set
-CONFIG_CHARGER_PCF50633=m
-# CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_GPIO is not set
-CONFIG_HWMON=y
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-# CONFIG_SENSORS_AD7314 is not set
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADCXX=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-# CONFIG_SENSORS_ADT7411 is not set
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7475=m
-# CONFIG_SENSORS_ASC7621 is not set
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_K10TEMP=m
-# CONFIG_SENSORS_FAM15H_POWER is not set
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-# CONFIG_SENSORS_DS620 is not set
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-# CONFIG_SENSORS_GPIO_FAN is not set
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-# CONFIG_SENSORS_JC42 is not set
-# CONFIG_SENSORS_LINEAGE is not set
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM70=m
-# CONFIG_SENSORS_LM73 is not set
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-# CONFIG_SENSORS_LTC4151 is not set
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-# CONFIG_SENSORS_LTC4261 is not set
-CONFIG_SENSORS_LM95241=m
-# CONFIG_SENSORS_LM95245 is not set
-CONFIG_SENSORS_MAX1111=m
-# CONFIG_SENSORS_MAX16065 is not set
-CONFIG_SENSORS_MAX1619=m
-# CONFIG_SENSORS_MAX1668 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-CONFIG_SENSORS_MAX6650=m
-# CONFIG_SENSORS_NTC_THERMISTOR is not set
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-# CONFIG_PMBUS is not set
-# CONFIG_SENSORS_SHT15 is not set
-# CONFIG_SENSORS_SHT21 is not set
-CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
-CONFIG_SENSORS_DME1737=m
-# CONFIG_SENSORS_EMC1403 is not set
-# CONFIG_SENSORS_EMC2103 is not set
-# CONFIG_SENSORS_EMC6W201 is not set
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-CONFIG_SENSORS_ADS7828=m
-# CONFIG_SENSORS_ADS7871 is not set
-# CONFIG_SENSORS_AMC6821 is not set
-CONFIG_SENSORS_THMC50=m
-# CONFIG_SENSORS_TMP102 is not set
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_VIA_CPUTEMP=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-# CONFIG_SENSORS_W83795 is not set
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
-
-#
-# ACPI drivers
-#
-# CONFIG_SENSORS_ACPI_POWER is not set
-CONFIG_SENSORS_ATK0110=m
-CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_F71808E_WDT=m
-# CONFIG_SP5100_TCO is not set
-CONFIG_SC520_WDT=m
-CONFIG_SBC_FITPC2_WATCHDOG=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-CONFIG_ITCO_VENDOR_SUPPORT=y
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_HPWDT_NMI_DECODING=y
-CONFIG_SC1200_WDT=m
-CONFIG_PC87413_WDT=m
-# CONFIG_NV_TCO is not set
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-# CONFIG_SBC7240_WDT is not set
-CONFIG_CPU5_WDT=m
-CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_B43_PCI_BRIDGE is not set
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
-CONFIG_HTC_PASIC3=m
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-CONFIG_MFD_WM8400=m
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_MFD_CS5535 is not set
-# CONFIG_MFD_TIMBERDALE is not set
-CONFIG_LPC_SCH=y
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-# CONFIG_MFD_VX855 is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-CONFIG_REGULATOR_USERSPACE_CONSUMER=m
-# CONFIG_REGULATOR_GPIO is not set
-CONFIG_REGULATOR_BQ24022=m
-CONFIG_REGULATOR_MAX1586=m
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-CONFIG_REGULATOR_WM8400=m
-CONFIG_REGULATOR_PCF50633=m
-CONFIG_REGULATOR_LP3971=m
-# CONFIG_REGULATOR_LP3972 is not set
-CONFIG_REGULATOR_TPS65023=m
-CONFIG_REGULATOR_TPS6507X=m
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-# CONFIG_MEDIA_CONTROLLER is not set
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2_COMMON=y
-# CONFIG_DVB_CORE is not set
-CONFIG_VIDEO_MEDIA=y
-
-#
-# Multimedia drivers
-#
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
-CONFIG_RC_MAP=m
-CONFIG_IR_NEC_DECODER=m
-CONFIG_IR_RC5_DECODER=m
-CONFIG_IR_RC6_DECODER=m
-CONFIG_IR_JVC_DECODER=m
-CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
-CONFIG_IR_MCE_KBD_DECODER=m
-CONFIG_IR_LIRC_CODEC=m
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_ENE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_ITE_CIR is not set
-# CONFIG_IR_FINTEK is not set
-# CONFIG_IR_NUVOTON is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_IR_WINBOND_CIR is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=y
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=y
-CONFIG_MEDIA_TUNER_TDA8290=y
-CONFIG_MEDIA_TUNER_TDA827X=y
-CONFIG_MEDIA_TUNER_TDA18271=y
-CONFIG_MEDIA_TUNER_TDA9887=y
-CONFIG_MEDIA_TUNER_TEA5761=y
-CONFIG_MEDIA_TUNER_TEA5767=y
-CONFIG_MEDIA_TUNER_MT20XX=y
-CONFIG_MEDIA_TUNER_XC2028=y
-CONFIG_MEDIA_TUNER_XC5000=y
-CONFIG_MEDIA_TUNER_XC4000=y
-CONFIG_MEDIA_TUNER_MC44S803=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEOBUF2_CORE=m
-CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_DMA_CONTIG=m
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Audio decoders, processors and mixers
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# RDS decoders
-#
-CONFIG_VIDEO_SAA6588=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-
-#
-# Camera sensor devices
-#
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_MT9V011=m
-
-#
-# Flash devices
-#
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-
-#
-# Miscelaneous helper chips
-#
-CONFIG_VIDEO_M52790=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_RC=y
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-# CONFIG_VIDEO_TIMBERDALE is not set
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_FB_IVTV=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_SOC_CAMERA=m
-# CONFIG_SOC_CAMERA_IMX074 is not set
-CONFIG_SOC_CAMERA_MT9M001=m
-CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
-# CONFIG_SOC_CAMERA_MT9T112 is not set
-CONFIG_SOC_CAMERA_MT9V022=m
-# CONFIG_SOC_CAMERA_RJ54N1 is not set
-CONFIG_SOC_CAMERA_TW9910=m
-CONFIG_SOC_CAMERA_PLATFORM=m
-# CONFIG_SOC_CAMERA_OV2640 is not set
-# CONFIG_SOC_CAMERA_OV5642 is not set
-# CONFIG_SOC_CAMERA_OV6650 is not set
-CONFIG_SOC_CAMERA_OV772X=m
-# CONFIG_SOC_CAMERA_OV9640 is not set
-# CONFIG_SOC_CAMERA_OV9740 is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=y
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GL860=m
-# CONFIG_USB_GSPCA_BENQ is not set
-CONFIG_USB_GSPCA_CONEX=m
-# CONFIG_USB_GSPCA_CPIA1 is not set
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_JEILINJ=m
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_MR97310A=m
-# CONFIG_USB_GSPCA_NW80X is not set
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-# CONFIG_USB_GSPCA_OV534_9 is not set
-CONFIG_USB_GSPCA_PAC207=m
-# CONFIG_USB_GSPCA_PAC7302 is not set
-CONFIG_USB_GSPCA_PAC7311=m
-# CONFIG_USB_GSPCA_SE401 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-CONFIG_USB_GSPCA_SN9C20X=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-CONFIG_USB_GSPCA_SQ905=m
-CONFIG_USB_GSPCA_SQ905C=m
-# CONFIG_USB_GSPCA_SQ930X is not set
-CONFIG_USB_GSPCA_STK014=m
-# CONFIG_USB_GSPCA_STV0680 is not set
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-# CONFIG_USB_GSPCA_TOPRO is not set
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_RC=y
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-# CONFIG_VIDEO_TM6000 is not set
-CONFIG_VIDEO_USBVISION=m
-CONFIG_USB_ET61X251=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-# CONFIG_RADIO_ADAPTERS is not set
-
-#
-# Graphics support
-#
-# CONFIG_AGP is not set
-CONFIG_VGA_ARB=y
-CONFIG_VGA_ARB_MAX_GPUS=16
-# CONFIG_VGA_SWITCHEROO is not set
-# CONFIG_DRM is not set
-# CONFIG_STUB_POULSBO is not set
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=y
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-# CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_VIA is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_CARMINE is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_SM501 is not set
-# CONFIG_FB_SMSCUFX is not set
-# CONFIG_FB_UDL is not set
-CONFIG_FB_VIRTUAL=m
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_MB862XX is not set
-# CONFIG_FB_BROADSHEET is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
-CONFIG_BACKLIGHT_PROGEAR=m
-# CONFIG_BACKLIGHT_APPLE is not set
-# CONFIG_BACKLIGHT_SAHARA is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_PCF50633 is not set
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_LOGO is not set
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=y
-# CONFIG_HID_ACRUX is not set
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-CONFIG_HID_EZKEY=y
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_KEYTOUCH is not set
-CONFIG_HID_KYE=y
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_TWINHAN is not set
-CONFIG_HID_KENSINGTON=y
-# CONFIG_HID_LCPOWER is not set
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_LOGITECH_DJ=m
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-# CONFIG_LOGIG940_FF is not set
-CONFIG_LOGIWHEELS_FF=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_SAMSUNG is not set
-CONFIG_HID_SONY=m
-# CONFIG_HID_SPEEDLINK is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_TOPSEED is not set
-CONFIG_HID_THRUSTMASTER=m
-CONFIG_THRUSTMASTER_FF=y
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_XHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_DWC3 is not set
-CONFIG_USB_MON=y
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-# CONFIG_USB_XHCI_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_WHCI_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=y
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_WDM is not set
-CONFIG_USB_TMC=y
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-# CONFIG_USB_UAS is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-# CONFIG_USB_SERIAL_QCAUX is not set
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_WWAN=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
-# CONFIG_USB_SERIAL_ZIO is not set
-# CONFIG_USB_SERIAL_SSU100 is not set
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-CONFIG_USB_LEGOTOWER=m
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-CONFIG_USB_CYPRESS_CY7C63=m
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-# CONFIG_USB_IOWARRIOR is not set
-CONFIG_USB_TEST=m
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_YUREX is not set
-# CONFIG_USB_ATM is not set
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_UWB is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PCI=y
-# CONFIG_MMC_RICOH_MMC is not set
-CONFIG_MMC_SDHCI_PLTFM=m
-# CONFIG_MMC_WBSD is not set
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_CB710=m
-CONFIG_MMC_VIA_SDMMC=m
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-CONFIG_LEDS_PCA9532=m
-# CONFIG_LEDS_PCA9532_GPIO is not set
-# CONFIG_LEDS_GPIO is not set
-CONFIG_LEDS_LP3944=m
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_DAC124S085=m
-# CONFIG_LEDS_REGULATOR is not set
-CONFIG_LEDS_BD2802=m
-# CONFIG_LEDS_INTEL_SS4200 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_DELL_NETBOOKS is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-# CONFIG_LEDS_TRIGGER_GPIO is not set
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-CONFIG_ACCESSIBILITY=y
-CONFIG_A11Y_BRAILLE_CONSOLE=y
-# CONFIG_INFINIBAND is not set
-CONFIG_EDAC=y
-
-#
-# Reporting subsystems
-#
-# CONFIG_EDAC_DEBUG is not set
-CONFIG_EDAC_MM_EDAC=m
-# CONFIG_EDAC_AMD76X is not set
-# CONFIG_EDAC_E7XXX is not set
-CONFIG_EDAC_E752X=m
-# CONFIG_EDAC_I82875P is not set
-CONFIG_EDAC_I82975X=m
-CONFIG_EDAC_I3000=m
-CONFIG_EDAC_I3200=m
-CONFIG_EDAC_X38=m
-CONFIG_EDAC_I5400=m
-# CONFIG_EDAC_I7CORE is not set
-# CONFIG_EDAC_I82860 is not set
-# CONFIG_EDAC_R82600 is not set
-CONFIG_EDAC_I5000=m
-CONFIG_EDAC_I5100=m
-# CONFIG_EDAC_I7300 is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-# CONFIG_RTC_DRV_DS3232 is not set
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-# CONFIG_RTC_DRV_ISL12022 is not set
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-# CONFIG_RTC_DRV_M41T80_WDT is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_M41T93 is not set
-CONFIG_RTC_DRV_M41T94=m
-CONFIG_RTC_DRV_DS1305=m
-CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_R9701=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
-CONFIG_RTC_DRV_PCF2123=m
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=y
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-# CONFIG_RTC_DRV_MSM6242 is not set
-CONFIG_RTC_DRV_BQ4802=m
-# CONFIG_RTC_DRV_RP5C01 is not set
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-# CONFIG_TIMB_DMA is not set
-# CONFIG_PCH_DMA is not set
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_ASYNC_TX_DMA=y
-# CONFIG_DMATEST is not set
-CONFIG_DCA=m
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-# CONFIG_UIO_CIF is not set
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-# CONFIG_UIO_AEC is not set
-# CONFIG_UIO_SERCOS3 is not set
-# CONFIG_UIO_PCI_GENERIC is not set
-# CONFIG_UIO_NETX is not set
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_PCI is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-CONFIG_STAGING=y
-# CONFIG_ET131X is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_USBIP_CORE is not set
-# CONFIG_ECHO is not set
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_RTS_PSTOR is not set
-# CONFIG_RTS5139 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VME_BUS is not set
-# CONFIG_DX_SEP is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
-# CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_ACNTSA=m
-CONFIG_SPEAKUP_SYNTH_ACNTPC=m
-CONFIG_SPEAKUP_SYNTH_APOLLO=m
-CONFIG_SPEAKUP_SYNTH_AUDPTR=m
-CONFIG_SPEAKUP_SYNTH_BNS=m
-CONFIG_SPEAKUP_SYNTH_DECTLK=m
-CONFIG_SPEAKUP_SYNTH_DECEXT=m
-# CONFIG_SPEAKUP_SYNTH_DECPC is not set
-CONFIG_SPEAKUP_SYNTH_DTLK=m
-CONFIG_SPEAKUP_SYNTH_KEYPC=m
-CONFIG_SPEAKUP_SYNTH_LTLK=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_SPEAKUP_SYNTH_SPKOUT=m
-CONFIG_SPEAKUP_SYNTH_TXPRT=m
-CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_STAGING_MEDIA is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-# CONFIG_ACER_WMI is not set
-# CONFIG_ACERHDF is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_DELL_LAPTOP is not set
-# CONFIG_DELL_WMI is not set
-# CONFIG_DELL_WMI_AIO is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_TC1100_WMI is not set
-# CONFIG_HP_ACCEL is not set
-# CONFIG_HP_WMI is not set
-# CONFIG_PANASONIC_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_INTEL_MENLOW is not set
-# CONFIG_EEEPC_LAPTOP is not set
-# CONFIG_ASUS_WMI is not set
-CONFIG_ACPI_WMI=m
-# CONFIG_MSI_WMI is not set
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_TOPSTAR_LAPTOP is not set
-# CONFIG_ACPI_TOSHIBA is not set
-# CONFIG_TOSHIBA_BT_RFKILL is not set
-# CONFIG_ACPI_CMPC is not set
-# CONFIG_INTEL_IPS is not set
-# CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
-# CONFIG_MXM_WMI is not set
-# CONFIG_SAMSUNG_Q10 is not set
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_I8253=y
-CONFIG_CLKEVT_I8253=y
-CONFIG_I8253_LOCK=y
-CONFIG_CLKBLD_I8253=y
-CONFIG_IOMMU_SUPPORT=y
-# CONFIG_INTEL_IOMMU is not set
-# CONFIG_VIRT_DRIVERS is not set
-# CONFIG_HYPERV is not set
-# CONFIG_PM_DEVFREQ is not set
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-# CONFIG_DMI_SYSFS is not set
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=y
-# CONFIG_SIGMA is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_XFS_FS=y
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_RT=y
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-# CONFIG_MISC_FILESYSTEMS is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ASCII=y
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-CONFIG_DLM_DEBUG=y
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MAGIC_SYSRQ_FORCE_PRINTK is not set
-CONFIG_STRIP_ASM_SYMS=y
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-CONFIG_RCU_CPU_STALL_VERBOSE=y
-# CONFIG_KPROBES_SANITY_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_TRACING=y
-CONFIG_GENERIC_TRACER=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_PREEMPT_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_MISSED_TIMER_OFFSETS_HIST is not set
-# CONFIG_FTRACE_SYSCALLS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_KPROBE_EVENT=y
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_MMIOTRACE is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_KMEMCHECK is not set
-# CONFIG_TEST_KSTRTOX is not set
-CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
-# CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_RODATA=y
-# CONFIG_DEBUG_RODATA_TEST is not set
-# CONFIG_DEBUG_SET_MODULE_RONX is not set
-# CONFIG_DEBUG_NX_TEST is not set
-CONFIG_DOUBLEFAULT=y
-# CONFIG_IOMMU_STRESS is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-# CONFIG_X86_DECODER_SELFTEST is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DEBUG_BOOT_PARAMS is not set
-# CONFIG_CPA_DEBUG is not set
-CONFIG_OPTIMIZE_INLINING=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-# CONFIG_SECURITY_NETWORK is not set
-# CONFIG_SECURITY_PATH is not set
-# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
-# CONFIG_IMA is not set
-# CONFIG_EVM is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_NULL=m
-# CONFIG_CRYPTO_PCRYPT is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_AUTHENC=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_VMAC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_GHASH=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_AES_NI_INTEL is not set
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_BLOWFISH_COMMON=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-# CONFIG_CRYPTO_SALSA20_586 is not set
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-# CONFIG_CRYPTO_DEV_GEODE is not set
-# CONFIG_CRYPTO_DEV_HIFN_795X is not set
-CONFIG_HAVE_KVM=y
-# CONFIG_VIRTUALIZATION is not set
-CONFIG_BINARY_PRINTF=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-# CONFIG_CRC8 is not set
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
-CONFIG_CPU_RMAP=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
diff --git a/aos/config/starter b/aos/config/starter
deleted file mode 100755
index cb869a4..0000000
--- a/aos/config/starter
+++ /dev/null
@@ -1,160 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: starter
-# Required-Start: $remote_fs $syslog sshd $all
-# Required-Stop: $remote_fs $syslog
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: AOS Startup Code
-# Description: Starts up all of the AOS-related things (FRC robot code).
-### END INIT INFO
-# pam_limits
-
-# Author: Spartan Robotics <spartanrobotics.org>
-
-# Install by placing in /etc/init.d/ and then `update-rc.d starter defaults`.
-
-# Do NOT "set -e"
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="FRC robot code"
-NAME=starter
-DAEMON=/home/driver/robot_code/bin/$NAME.sh
-DAEMON_ARGS="/home/driver/robot_code/bin/start_list.txt"
-PIDFILE=/tmp/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-VERBOSE=yes
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
- # Return
- # 0 if daemon has been started
- # 1 if daemon was already running
- # 2 if daemon could not be started
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
- || return 1
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
- $DAEMON_ARGS \
- || return 2
- # Add code here, if necessary, that waits for the process to be ready
- # to handle requests from services started subsequently which depend
- # on this one. As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
- # Return
- # 0 if daemon has been stopped
- # 1 if daemon was already stopped
- # 2 if daemon could not be stopped
- # other if a failure occurred
- start-stop-daemon --stop --quiet --retry=INT/10/KILL/5 --pidfile $PIDFILE
- RETVAL="$?"
- [ "$RETVAL" = 2 ] && return 2
- # Wait for children to finish too if this is a daemon that forks
- # and if the daemon is only ever run from this initscript.
- # If the above conditions are not satisfied then add some other code
- # that waits for the process to drop all resources that could be
- # needed by services started subsequently. A last resort is to
- # sleep for some time.
- #start-stop-daemon --stop --quiet --oknodo --retry=INT/10/KILL/5
- #[ "$?" = 2 ] && return 2
- sleep 5
- # Many daemons don't delete their pidfiles when they exit.
- rm -f $PIDFILE
- return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
- #
- # If the daemon can reload its configuration without
- # restarting (for example, when it is sent a SIGHUP),
- # then implement that here.
- #
- start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
- return 0
-}
-
-case "$1" in
- start)
- [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
- do_start
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
- ;;
- stop)
- [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
- ;;
- status)
- status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
- ;;
- #reload|force-reload)
- #
- # If do_reload() is not implemented then leave this commented out
- # and leave 'force-reload' as an alias for 'restart'.
- #
- #log_daemon_msg "Reloading $DESC" "$NAME"
- #do_reload
- #log_end_msg $?
- #;;
- restart|force-reload)
- #
- # If the "reload" option is implemented then remove the
- # 'force-reload' alias
- #
- log_daemon_msg "Restarting $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1)
- do_start
- case "$?" in
- 0) log_end_msg 0 ;;
- 1) log_end_msg 1 ;; # Old process is still running
- *) log_end_msg 1 ;; # Failed to start
- esac
- ;;
- *)
- # Failed to stop
- log_end_msg 1
- ;;
- esac
- ;;
- *)
- #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
- echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
- exit 3
- ;;
-esac
-
-:
diff --git a/aos/crio/README.txt b/aos/crio/README.txt
deleted file mode 100644
index 82f1b09..0000000
--- a/aos/crio/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-see ../README.txt for stuff affecting crio and linux code
-There isn't much cRIO code left any more... At this point, we're basically
-removing all of the #ifdeffed etc stuff in aos/common/ because the code is
-nowhere close to compiling for the cRIO by now and it makes it harder to see
-everything else.
-
-[NOTES]
-The assumption that sizeof(pointers) == sizeof(int) == sizeof(UINT32) == sizeof(uint32_t) == 4 is all over the crio code. The vxworks apis use UINT32 to pass user-defined arguments, and just passing pointers through those makes the code a lot simpler.
diff --git a/aos/crio/crio.gyp b/aos/crio/crio.gyp
deleted file mode 100644
index 9b5d57e..0000000
--- a/aos/crio/crio.gyp
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- 'targets': [
- {
- 'target_name': 'ip',
- 'type': 'static_library',
- 'sources': [
- 'ip.cc',
- ],
- },
- ],
-}
diff --git a/aos/crio/ip.cc b/aos/crio/ip.cc
deleted file mode 100644
index 9230365..0000000
--- a/aos/crio/ip.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "aos/crio/ip.h"
-
-#include <ifLib.h>
-#include <stdio.h>
-
-namespace aos {
-namespace util {
-
-// 4-slot cRIO: motfec0
-// 8-slot cRIO port 1: fec0
-// `ifShow` will show you all of the ones on a given cRIO
-const char *const kCrioNetInterfaces[] = {"fec0", "motfec0"};
-in_addr GetOwnIPAddress() {
- char buffer[INET_ADDR_LEN];
- in_addr r;
- while (true) {
- for (size_t i = 0;
- i < sizeof(kCrioNetInterfaces) / sizeof(kCrioNetInterfaces[0]); ++i) {
- if (ifAddrGet(const_cast<char *>(kCrioNetInterfaces[i]), buffer) == OK) {
- if (inet_aton(buffer, &r) == OK) {
- return r;
- } else {
- buffer[sizeof(buffer) - 1] = '\0';
- printf("inet_aton('%s', %p) failed\n", buffer, &r);
- }
- }
- }
- }
-}
-
-} // namespace util
-} // namespace aos
diff --git a/aos/crio/ip.h b/aos/crio/ip.h
deleted file mode 100644
index f9cf430..0000000
--- a/aos/crio/ip.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef AOS_CRIO_IP_H_
-#define AOS_CRIO_IP_H_
-
-#include <inetLib.h>
-#include <stdint.h>
-
-namespace aos {
-namespace util {
-
-// Retrieves the IP address of this cRIO and stores it in *address.
-// Loops infinitely until it succeeds.
-in_addr GetOwnIPAddress();
-
-} // namespace util
-} // namespace aos
-
-#endif // AOS_CRIO_IP_H_
diff --git a/aos/externals/WPILib/Makefile b/aos/externals/WPILib/Makefile
deleted file mode 100644
index fe999c8..0000000
--- a/aos/externals/WPILib/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-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:
- rm -f *.out WPILib/*.o WPILib/*/*.o *.d
-
-deploy: all
- ncftpput robot /ni-rt/system/ wpilib.out
-
-wpilibupdate.exe:
- wget http://firstforge.wpi.edu/sf/frs/do/downloadFile/projects.wpilib/frs.2012_update_for_c.frc_update_3111/frs1405?dl=1 -O wpilibupdate.exe
-
-WPILib: wpilibupdate.exe
- mkdir wpilibinstaller
- cd wpilibinstaller
- unzip wpilibupdate.exe -d wpilibinstaller/ | tee wpilibinstaller/unziplog.txt
- cat wpilibinstaller/unziplog.txt | grep "inflating: wpilibinstaller/.*\.zip" | sed "s/.*\(wpilibinstaller\/.*\.zip\).*/\1/" | xargs -I '{}' cp '{}' ./
- #cat wpilibinstaller/unziplog.txt | grep "inflating: wpilibinstaller/.*\.zip" | sed "s/.*wpilibinstaller\/\(.*\.zip\).*/\1/" | xargs -I '{}' ln -s '{}' ./WPILib.zip
- unzip -a WPILib*.zip
- rm -r wpilibinstaller
- rm -f wpilib_page1.url wpilib_page2.url wpilib_page3.url
-
-WPILib.a: wpilibupdate.exe
- unzip wpilibupdate.exe
- cp vxworks-6.3/target/lib/WPILib.a ./
-
diff --git a/aos/externals/WPILib/WPILib/ADXL345_I2C.cpp b/aos/externals/WPILib/WPILib/ADXL345_I2C.cpp
deleted file mode 100644
index 9cce2c2..0000000
--- a/aos/externals/WPILib/WPILib/ADXL345_I2C.cpp
+++ /dev/null
@@ -1,94 +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 "ADXL345_I2C.h"
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "I2C.h"
-
-const uint8_t ADXL345_I2C::kAddress;
-const uint8_t ADXL345_I2C::kPowerCtlRegister;
-const uint8_t ADXL345_I2C::kDataFormatRegister;
-const uint8_t ADXL345_I2C::kDataRegister;
-constexpr double ADXL345_I2C::kGsPerLSB;
-
-/**
- * Constructor.
- *
- * @param moduleNumber The digital module that the sensor is plugged into (1 or 2).
- * @param range The range (+ or -) that the accelerometer will measure.
- */
-ADXL345_I2C::ADXL345_I2C(uint8_t moduleNumber, ADXL345_I2C::DataFormat_Range range)
- : m_i2c (NULL)
-{
- DigitalModule *module = DigitalModule::GetInstance(moduleNumber);
- if (module)
- {
- m_i2c = module->GetI2C(kAddress);
-
- // Turn on the measurements
- m_i2c->Write(kPowerCtlRegister, kPowerCtl_Measure);
- // Specify the data format to read
- m_i2c->Write(kDataFormatRegister, kDataFormat_FullRes | (uint8_t)range);
-
- nUsageReporting::report(nUsageReporting::kResourceType_ADXL345, nUsageReporting::kADXL345_I2C, moduleNumber - 1);
- }
-}
-
-/**
- * Destructor.
- */
-ADXL345_I2C::~ADXL345_I2C()
-{
- delete m_i2c;
- m_i2c = NULL;
-}
-
-/**
- * Get the acceleration of one axis in Gs.
- *
- * @param axis The axis to read from.
- * @return Acceleration of the ADXL345 in Gs.
- */
-double ADXL345_I2C::GetAcceleration(ADXL345_I2C::Axes axis)
-{
- int16_t rawAccel = 0;
- if(m_i2c)
- {
- m_i2c->Read(kDataRegister + (uint8_t)axis, sizeof(rawAccel), (uint8_t *)&rawAccel);
-
- // Sensor is little endian... swap bytes
- rawAccel = ((rawAccel >> 8) & 0xFF) | (rawAccel << 8);
- }
- return rawAccel * kGsPerLSB;
-}
-
-/**
- * Get the acceleration of all axes in Gs.
- *
- * @return Acceleration measured on all axes of the ADXL345 in Gs.
- */
-ADXL345_I2C::AllAxes ADXL345_I2C::GetAccelerations()
-{
- AllAxes data = {0.0, 0.0, 0.0};
- int16_t rawData[3];
- if (m_i2c)
- {
- m_i2c->Read(kDataRegister, sizeof(rawData), (uint8_t*)rawData);
-
- // Sensor is little endian... swap bytes
- for (int32_t i=0; i<3; i++)
- {
- rawData[i] = ((rawData[i] >> 8) & 0xFF) | (rawData[i] << 8);
- }
-
- data.XAxis = rawData[0] * kGsPerLSB;
- data.YAxis = rawData[1] * kGsPerLSB;
- data.ZAxis = rawData[2] * kGsPerLSB;
- }
- return data;
-}
-
diff --git a/aos/externals/WPILib/WPILib/ADXL345_I2C.h b/aos/externals/WPILib/WPILib/ADXL345_I2C.h
deleted file mode 100644
index 8110ee2..0000000
--- a/aos/externals/WPILib/WPILib/ADXL345_I2C.h
+++ /dev/null
@@ -1,53 +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 __ADXL345_I2C_h__
-#define __ADXL345_I2C_h__
-
-#include "SensorBase.h"
-
-class I2C;
-
-/**
- * ADXL345 Accelerometer on I2C.
- *
- * This class alows access to a Analog Devices ADXL345 3-axis accelerometer on an I2C bus.
- * This class assumes the default (not alternate) sensor address of 0x3A (8-bit address).
- */
-class ADXL345_I2C : public SensorBase
-{
-protected:
- static const uint8_t kAddress = 0x3A;
- static const uint8_t kPowerCtlRegister = 0x2D;
- static const uint8_t kDataFormatRegister = 0x31;
- static const uint8_t kDataRegister = 0x32;
- static constexpr double kGsPerLSB = 0.00390625;
- enum PowerCtlFields {kPowerCtl_Link=0x20, kPowerCtl_AutoSleep=0x10, kPowerCtl_Measure=0x08, kPowerCtl_Sleep=0x04};
- enum DataFormatFields {kDataFormat_SelfTest=0x80, kDataFormat_SPI=0x40, kDataFormat_IntInvert=0x20,
- kDataFormat_FullRes=0x08, kDataFormat_Justify=0x04};
-
-public:
- enum DataFormat_Range {kRange_2G=0x00, kRange_4G=0x01, kRange_8G=0x02, kRange_16G=0x03};
- enum Axes {kAxis_X=0x00, kAxis_Y=0x02, kAxis_Z=0x04};
- struct AllAxes
- {
- double XAxis;
- double YAxis;
- double ZAxis;
- };
-
-public:
- explicit ADXL345_I2C(uint8_t moduleNumber, DataFormat_Range range=kRange_2G);
- virtual ~ADXL345_I2C();
- virtual double GetAcceleration(Axes axis);
- virtual AllAxes GetAccelerations();
-
-protected:
- I2C* m_i2c;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/ADXL345_SPI.cpp b/aos/externals/WPILib/WPILib/ADXL345_SPI.cpp
deleted file mode 100644
index 8d279b0..0000000
--- a/aos/externals/WPILib/WPILib/ADXL345_SPI.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 "ADXL345_SPI.h"
-#include "DigitalInput.h"
-#include "DigitalOutput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "SPI.h"
-
-const uint8_t ADXL345_SPI::kPowerCtlRegister;
-const uint8_t ADXL345_SPI::kDataFormatRegister;
-const uint8_t ADXL345_SPI::kDataRegister;
-constexpr double ADXL345_SPI::kGsPerLSB;
-
-/**
- * Constructor.
- *
- * @param clk The GPIO the clock signal is wired to.
- * @param mosi The GPIO the MOSI (Master Out Slave In) signal is wired to.
- * @param miso The GPIO the MISO (Master In Slave Out) signal is wired to.
- * @param cs The GPIO the CS (Chip Select) signal is wired to.
- * @param range The range (+ or -) that the accelerometer will measure.
- */
-ADXL345_SPI::ADXL345_SPI(DigitalOutput &clk, DigitalOutput &mosi, DigitalInput &miso,
- DigitalOutput &cs, DataFormat_Range range)
- : m_clk (NULL)
- , m_mosi (NULL)
- , m_miso (NULL)
- , m_cs (NULL)
- , m_spi (NULL)
-{
- Init(&clk, &mosi, &miso, &cs, range);
-}
-
-/**
- * Constructor.
- *
- * @param clk The GPIO the clock signal is wired to.
- * @param mosi The GPIO the MOSI (Master Out Slave In) signal is wired to.
- * @param miso The GPIO the MISO (Master In Slave Out) signal is wired to.
- * @param cs The GPIO the CS (Chip Select) signal is wired to.
- * @param range The range (+ or -) that the accelerometer will measure.
- */
-ADXL345_SPI::ADXL345_SPI(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso,
- DigitalOutput *cs, DataFormat_Range range)
- : m_clk (NULL)
- , m_mosi (NULL)
- , m_miso (NULL)
- , m_cs (NULL)
- , m_spi (NULL)
-{
- Init(clk, mosi, miso, cs, range);
-}
-
-/**
- * Constructor.
- *
- * @param moduleNumber The digital module with the sensor attached.
- * @param clk The GPIO the clock signal is wired to.
- * @param mosi The GPIO the MOSI (Master Out Slave In) signal is wired to.
- * @param miso The GPIO the MISO (Master In Slave Out) signal is wired to.
- * @param cs The GPIO the CS (Chip Select) signal is wired to.
- * @param range The range (+ or -) that the accelerometer will measure.
- */
-ADXL345_SPI::ADXL345_SPI(uint8_t moduleNumber, uint32_t clk, uint32_t mosi, uint32_t miso,
- uint32_t cs, ADXL345_SPI::DataFormat_Range range)
- : m_clk (NULL)
- , m_mosi (NULL)
- , m_miso (NULL)
- , m_cs (NULL)
- , m_spi (NULL)
-{
- m_clk = new DigitalOutput(moduleNumber, clk);
- m_mosi = new DigitalOutput(moduleNumber, mosi);
- m_miso = new DigitalInput(moduleNumber, miso);
- m_cs = new DigitalOutput(moduleNumber, cs);
- Init(m_clk, m_mosi, m_miso, m_cs, range);
-}
-
-/**
- * Internal common init function.
- */
-void ADXL345_SPI::Init(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso,
- DigitalOutput *cs, DataFormat_Range range)
-{
- if (clk != NULL && mosi != NULL && miso != NULL && cs != NULL)
- {
- m_spi = new SPI(clk, mosi, miso);
- m_spi->SetMSBFirst();
- m_spi->SetSampleDataOnRising();
- m_spi->SetSlaveSelect(cs, SPI::kChipSelect, false);
- m_spi->SetClockActiveLow();
- // 8-bit address and 8-bit data
- m_spi->SetBitsPerWord(16);
- m_spi->ApplyConfig();
- m_spi->ClearReceivedData();
-
- // Turn on the measurements
- m_spi->Write((kPowerCtlRegister << 8) | kPowerCtl_Measure);
- m_spi->Read();
- // Specify the data format to read
- m_spi->Write((kDataFormatRegister << 8) | kDataFormat_FullRes | (uint8_t)(range & 0x03));
- m_spi->Read();
-
- // 8-bit address and 16-bit data
- m_spi->SetBitsPerWord(24);
- m_spi->ApplyConfig();
-
- nUsageReporting::report(nUsageReporting::kResourceType_ADXL345, nUsageReporting::kADXL345_SPI);
- }
-}
-
-/**
- * Destructor.
- */
-ADXL345_SPI::~ADXL345_SPI()
-{
- delete m_spi;
- m_spi = NULL;
- delete m_cs;
- m_cs = NULL;
- delete m_miso;
- m_miso = NULL;
- delete m_mosi;
- m_mosi = NULL;
- delete m_clk;
- m_clk = NULL;
-}
-
-/**
- * Get the acceleration of one axis in Gs.
- *
- * @param axis The axis to read from.
- * @return Acceleration of the ADXL345 in Gs.
- */
-double ADXL345_SPI::GetAcceleration(ADXL345_SPI::Axes axis)
-{
- int16_t rawAccel = 0;
- if(m_spi)
- {
- m_spi->Write(((kAddress_Read | kAddress_MultiByte | kDataRegister) + (uint8_t)axis) << 16);
- rawAccel = (uint16_t)m_spi->Read();
-
- // Sensor is little endian... swap bytes
- rawAccel = ((rawAccel >> 8) & 0xFF) | (rawAccel << 8);
- }
- return rawAccel * kGsPerLSB;
-}
-
-/**
- * Get the acceleration of all axes in Gs.
- *
- * @return Acceleration measured on all axes of the ADXL345 in Gs.
- */
-ADXL345_SPI::AllAxes ADXL345_SPI::GetAccelerations()
-{
- AllAxes data = {0.0, 0.0, 0.0};
- int16_t rawData[3];
- if (m_spi)
- {
- SPI::tFrameMode mode;
- bool activeLow;
-
- // Backup original settings.
- DigitalOutput *cs = m_spi->GetSlaveSelect(&mode, &activeLow);
- uint32_t bitsPerWord = m_spi->GetBitsPerWord();
-
- // Initialize the chip select to inactive.
- cs->Set(activeLow);
-
- // Control the chip select manually.
- m_spi->SetSlaveSelect(NULL);
- // 8-bit address
- m_spi->SetBitsPerWord(8);
- m_spi->ApplyConfig();
-
- // Assert chip select.
- cs->Set(!activeLow);
-
- // Select the data address.
- m_spi->Write(kAddress_Read | kAddress_MultiByte | kDataRegister);
- m_spi->Read();
-
- // 16-bits for each axis
- m_spi->SetBitsPerWord(16);
- m_spi->ApplyConfig();
-
- for (int32_t i=0; i<3; i++)
- {
- // SPI Interface can't read enough data in a single transaction to read all axes at once.
- rawData[i] = (uint16_t)m_spi->Read(true);
- // Sensor is little endian... swap bytes
- rawData[i] = ((rawData[i] >> 8) & 0xFF) | (rawData[i] << 8);
- }
-
- // Deassert chip select.
- cs->Set(activeLow);
-
- // Restore original settings.
- m_spi->SetSlaveSelect(cs, mode, activeLow);
- m_spi->SetBitsPerWord(bitsPerWord);
- m_spi->ApplyConfig();
-
- data.XAxis = rawData[0] * kGsPerLSB;
- data.YAxis = rawData[1] * kGsPerLSB;
- data.ZAxis = rawData[2] * kGsPerLSB;
- }
- return data;
-}
-
diff --git a/aos/externals/WPILib/WPILib/ADXL345_SPI.h b/aos/externals/WPILib/WPILib/ADXL345_SPI.h
deleted file mode 100644
index 3e8a308..0000000
--- a/aos/externals/WPILib/WPILib/ADXL345_SPI.h
+++ /dev/null
@@ -1,67 +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 __ADXL345_SPI_h__
-#define __ADXL345_SPI_h__
-
-#include "SensorBase.h"
-
-class DigitalInput;
-class DigitalOutput;
-class SPI;
-
-/**
- * ADXL345 Accelerometer on SPI.
- *
- * This class alows access to an Analog Devices ADXL345 3-axis accelerometer via SPI.
- * This class assumes the sensor is wired in 4-wire SPI mode.
- */
-class ADXL345_SPI : public SensorBase
-{
-protected:
- static const uint8_t kPowerCtlRegister = 0x2D;
- static const uint8_t kDataFormatRegister = 0x31;
- static const uint8_t kDataRegister = 0x32;
- static constexpr double kGsPerLSB = 0.00390625;
- enum SPIAddressFields {kAddress_Read=0x80, kAddress_MultiByte=0x40};
- enum PowerCtlFields {kPowerCtl_Link=0x20, kPowerCtl_AutoSleep=0x10, kPowerCtl_Measure=0x08, kPowerCtl_Sleep=0x04};
- enum DataFormatFields {kDataFormat_SelfTest=0x80, kDataFormat_SPI=0x40, kDataFormat_IntInvert=0x20,
- kDataFormat_FullRes=0x08, kDataFormat_Justify=0x04};
-
-public:
- enum DataFormat_Range {kRange_2G=0x00, kRange_4G=0x01, kRange_8G=0x02, kRange_16G=0x03};
- enum Axes {kAxis_X=0x00, kAxis_Y=0x02, kAxis_Z=0x04};
- struct AllAxes
- {
- double XAxis;
- double YAxis;
- double ZAxis;
- };
-
-public:
- ADXL345_SPI(DigitalOutput &clk, DigitalOutput &mosi, DigitalInput &miso,
- DigitalOutput &cs, DataFormat_Range range=kRange_2G);
- ADXL345_SPI(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso,
- DigitalOutput *cs, DataFormat_Range range=kRange_2G);
- ADXL345_SPI(uint8_t moduleNumber, uint32_t clk, uint32_t mosi, uint32_t miso, uint32_t cs,
- DataFormat_Range range=kRange_2G);
- virtual ~ADXL345_SPI();
- virtual double GetAcceleration(Axes axis);
- virtual AllAxes GetAccelerations();
-
-protected:
- void Init(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso,
- DigitalOutput *cs, DataFormat_Range range);
-
- DigitalOutput *m_clk;
- DigitalOutput *m_mosi;
- DigitalInput *m_miso;
- DigitalOutput *m_cs;
- SPI* m_spi;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Accelerometer.cpp b/aos/externals/WPILib/WPILib/Accelerometer.cpp
deleted file mode 100644
index 94bf6fa..0000000
--- a/aos/externals/WPILib/WPILib/Accelerometer.cpp
+++ /dev/null
@@ -1,156 +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 "AnalogModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-/**
- * Common function for initializing the accelerometer.
- */
-void Accelerometer::InitAccelerometer()
-{
- m_table = NULL;
- 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);
-}
-
-/**
- * Create a new instance of an accelerometer.
- *
- * The accelerometer is assumed to be in the first analog module in the given analog channel. The
- * constructor allocates desired analog channel.
- */
-Accelerometer::Accelerometer(uint32_t channel)
-{
- m_analogChannel = new AnalogChannel(channel);
- m_allocatedChannel = true;
- InitAccelerometer();
-}
-
-/**
- * Create new instance of accelerometer.
- *
- * Make a new instance of the accelerometer given a module and channel. The constructor allocates
- * the desired analog channel from the specified module
- *
- * @param moduleNumber The analog module (1 or 2).
- * @param channel The analog channel (1..8)
- */
-Accelerometer::Accelerometer(uint8_t moduleNumber, uint32_t channel)
-{
- m_analogChannel = new AnalogChannel(moduleNumber, channel);
- m_allocatedChannel = true;
- InitAccelerometer();
-}
-
-/**
- * Create a new instance of Accelerometer from an existing AnalogChannel.
- * Make a new instance of accelerometer given an AnalogChannel. This is particularly
- * useful if the port is going to be read as an analog channel as well as through
- * the Accelerometer class.
- */
-Accelerometer::Accelerometer(AnalogChannel *channel)
-{
- if (channel == NULL)
- {
- wpi_setWPIError(NullParameter);
- }
- else
- {
- m_analogChannel = channel;
- InitAccelerometer();
- }
- m_allocatedChannel = false;
-}
-
-/**
- * Delete the analog components used for the accelerometer.
- */
-Accelerometer::~Accelerometer()
-{
- if (m_allocatedChannel)
- {
- delete m_analogChannel;
- }
-}
-
-/**
- * Return the acceleration in Gs.
- *
- * The acceleration is returned units of Gs.
- *
- * @return The current acceleration of the sensor in Gs.
- */
-float Accelerometer::GetAcceleration()
-{
- return (m_analogChannel->GetAverageVoltage() - m_zeroGVoltage) / m_voltsPerG;
-}
-
-/**
- * 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 sensitivity The sensitivity of accelerometer in Volts per G.
- */
-void Accelerometer::SetSensitivity(float sensitivity)
-{
- m_voltsPerG = 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 zero The zero G voltage.
- */
-void Accelerometer::SetZero(float zero)
-{
- m_zeroGVoltage = zero;
-}
-
-/**
- * Get the Acceleration for the PID Source parent.
- *
- * @return The current acceleration in Gs.
- */
-double Accelerometer::PIDGet()
-{
- 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
deleted file mode 100644
index 10605a2..0000000
--- a/aos/externals/WPILib/WPILib/Accelerometer.h
+++ /dev/null
@@ -1,51 +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 ACCELEROMETER_H_
-#define ACCELEROMETER_H_
-
-#include "AnalogChannel.h"
-#include "SensorBase.h"
-#include "PIDSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-/**
- * Handle operation of the accelerometer.
- * The accelerometer reads acceleration directly through the sensor. Many sensors have
- * 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, public LiveWindowSendable {
-public:
- explicit Accelerometer(uint32_t channel);
- Accelerometer(uint8_t moduleNumber, uint32_t channel);
- explicit Accelerometer(AnalogChannel *channel);
- virtual ~Accelerometer();
-
- float GetAcceleration();
- void SetSensitivity(float sensitivity);
- void SetZero(float zero);
- double PIDGet();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- void InitAccelerometer();
-
- AnalogChannel *m_analogChannel;
- 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
deleted file mode 100644
index d8b55ff..0000000
--- a/aos/externals/WPILib/WPILib/AnalogChannel.cpp
+++ /dev/null
@@ -1,483 +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 "AnalogChannel.h"
-#include "AnalogModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-static Resource *channels = NULL;
-
-const uint8_t AnalogChannel::kAccumulatorModuleNumber;
-const uint32_t AnalogChannel::kAccumulatorNumChannels;
-const uint32_t AnalogChannel::kAccumulatorChannels[] = {1, 2};
-
-/**
- * Common initialization.
- */
-void AnalogChannel::InitChannel(uint8_t moduleNumber, uint32_t channel)
-{
- m_table = NULL;
- char buf[64];
- Resource::CreateResourceObject(&channels, kAnalogModules * kAnalogChannels);
- if (!CheckAnalogModule(moduleNumber))
- {
- snprintf(buf, 64, "Analog Module %d", moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckAnalogChannel(channel))
- {
- snprintf(buf, 64, "Analog Channel %d", channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
-
- snprintf(buf, 64, "Analog Input %d (Module: %d)", channel, moduleNumber);
- if (channels->Allocate((moduleNumber - 1) * kAnalogChannels +
- channel - 1, buf, this) == ~0ul)
- {
- return;
- }
- m_channel = channel;
- m_module = AnalogModule::GetInstance(moduleNumber);
- if (IsAccumulatorChannel())
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_accumulator = tAccumulator::create(channel - 1, &localStatus);
- wpi_setError(localStatus);
- m_accumulatorOffset=0;
- }
- else
- {
- m_accumulator = NULL;
- }
- m_shouldUseVoltageForPID = false;
- LiveWindow::GetInstance()->AddSensor("AnalogChannel",channel, GetModuleNumber(), this);
- nUsageReporting::report(nUsageReporting::kResourceType_AnalogChannel, channel, GetModuleNumber() - 1);
-}
-
-/**
- * Construct an analog channel on a specified module.
- *
- * @param moduleNumber The analog module (1 or 2).
- * @param channel The channel number to represent.
- */
-AnalogChannel::AnalogChannel(uint8_t moduleNumber, uint32_t channel)
-{
- InitChannel(moduleNumber, channel);
-}
-
-/**
- * Construct an analog channel on the default module.
- *
- * @param channel The channel number to represent.
- */
-AnalogChannel::AnalogChannel(uint32_t channel)
-{
- InitChannel(GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Channel destructor.
- */
-AnalogChannel::~AnalogChannel()
-{
- channels->Free((m_module->GetNumber() - 1) * kAnalogChannels + m_channel - 1,
- this);
-}
-
-/**
- * Get the analog module that this channel is on.
- * @return A pointer to the AnalogModule that this channel is on.
- */
-AnalogModule *AnalogChannel::GetModule()
-{
- if (StatusIsFatal()) return NULL;
- return m_module;
-}
-
-/**
- * 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.
- * @return A sample straight from this channel on the module.
- */
-int16_t AnalogChannel::GetValue()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetValue(m_channel);
-}
-
-/**
- * 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.
- * @return A sample from the oversample and average engine for this channel.
- */
-int32_t AnalogChannel::GetAverageValue()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetAverageValue(m_channel);
-}
-
-/**
- * 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().
- * @return A scaled sample straight from this channel on the module.
- */
-float AnalogChannel::GetVoltage()
-{
- if (StatusIsFatal()) return 0.0f;
- return m_module->GetVoltage(m_channel);
-}
-
-/**
- * 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.
- * @return A scaled sample from the output of the oversample and average engine for this channel.
- */
-float AnalogChannel::GetAverageVoltage()
-{
- if (StatusIsFatal()) return 0.0f;
- return m_module->GetAverageVoltage(m_channel);
-}
-
-/**
- * Get the factory scaling least significant bit weight constant.
- * The least significant bit weight constant for the channel that was calibrated in
- * manufacturing and stored in an eeprom in the module.
- *
- * Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)
- *
- * @return Least significant bit weight.
- */
-uint32_t AnalogChannel::GetLSBWeight()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetLSBWeight(m_channel);
-}
-
-/**
- * Get the factory scaling offset constant.
- * The offset constant for the channel that was calibrated in manufacturing and stored
- * in an eeprom in the module.
- *
- * Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)
- *
- * @return Offset constant.
- */
-int32_t AnalogChannel::GetOffset()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetOffset(m_channel);
-}
-
-/**
- * Get the channel number.
- * @return The channel number.
- */
-uint32_t AnalogChannel::GetChannel()
-{
- if (StatusIsFatal()) return 0;
- return m_channel;
-}
-
-/**
- * Get the module number.
- * @return The module number.
- */
-uint8_t AnalogChannel::GetModuleNumber()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetNumber();
-}
-
-/**
- * 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 bits Number of bits of averaging.
- */
-void AnalogChannel::SetAverageBits(uint32_t bits)
-{
- if (StatusIsFatal()) return;
- m_module->SetAverageBits(m_channel, 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.
- *
- * @return Number of bits of averaging previously configured.
- */
-uint32_t AnalogChannel::GetAverageBits()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetAverageBits(m_channel);
-}
-
-/**
- * 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 bits Number of bits of oversampling.
- */
-void AnalogChannel::SetOversampleBits(uint32_t bits)
-{
- if (StatusIsFatal()) return;
- m_module->SetOversampleBits(m_channel, 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.
- *
- * @return Number of bits of oversampling previously configured.
- */
-uint32_t AnalogChannel::GetOversampleBits()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetOversampleBits(m_channel);
-}
-
-/**
- * Is the channel attached to an accumulator.
- *
- * @return The analog channel is attached to an accumulator.
- */
-bool AnalogChannel::IsAccumulatorChannel()
-{
- if (StatusIsFatal()) return false;
- if(m_module->GetNumber() != kAccumulatorModuleNumber) return false;
- for (uint32_t i=0; i<kAccumulatorNumChannels; i++)
- {
- if (m_channel == kAccumulatorChannels[i]) return true;
- }
- return false;
-}
-
-/**
- * Initialize the accumulator.
- */
-void AnalogChannel::InitAccumulator()
-{
- if (StatusIsFatal()) return;
- m_accumulatorOffset = 0;
- SetAccumulatorCenter(0);
- ResetAccumulator();
-}
-
-
-/**
- * Set an inital value for the accumulator.
- *
- * This will be added to all values returned to the user.
- * @param initialValue The value that the accumulator should start from when reset.
- */
-void AnalogChannel::SetAccumulatorInitialValue(int64_t initialValue)
-{
- if (StatusIsFatal()) return;
- m_accumulatorOffset = initialValue;
-}
-
-/**
- * Resets the accumulator to the initial value.
- */
-void AnalogChannel::ResetAccumulator()
-{
- if (StatusIsFatal()) return;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_accumulator->strobeReset(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set the center value of the accumulator.
- *
- * The center value is subtracted from each A/D value before it is added to the accumulator. This
- * is used for the center value of devices like gyros and accelerometers to make integration work
- * and to take the device offset into account when integrating.
- *
- * This center value is based on the output of the oversampled and averaged source from channel 1.
- * Because of this, any non-zero oversample bits will affect the size of the value for this field.
- */
-void AnalogChannel::SetAccumulatorCenter(int32_t center)
-{
- if (StatusIsFatal()) return;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_accumulator->writeCenter(center, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set the accumulator's deadband.
- */
-void AnalogChannel::SetAccumulatorDeadband(int32_t deadband)
-{
- if (StatusIsFatal()) return;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_accumulator->writeDeadband(deadband, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Read the accumulated value.
- *
- * Read the value that has been accumulating on channel 1.
- * The accumulator is attached after the oversample and average engine.
- *
- * @return The 64-bit value accumulated since the last Reset().
- */
-int64_t AnalogChannel::GetAccumulatorValue()
-{
- if (StatusIsFatal()) return 0;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return 0;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- int64_t value = m_accumulator->readOutput_Value(&localStatus) + m_accumulatorOffset;
- wpi_setError(localStatus);
- return value;
-}
-
-/**
- * Read the number of accumulated values.
- *
- * Read the count of the accumulated values since the accumulator was last Reset().
- *
- * @return The number of times samples from the channel were accumulated.
- */
-uint32_t AnalogChannel::GetAccumulatorCount()
-{
- if (StatusIsFatal()) return 0;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return 0;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t count = m_accumulator->readOutput_Count(&localStatus);
- wpi_setError(localStatus);
- return count;
-}
-
-
-/**
- * Read the accumulated value and the number of accumulated values atomically.
- *
- * This function reads the value and count from the FPGA atomically.
- * This can be used for averaging.
- *
- * @param value Pointer to the 64-bit accumulated output.
- * @param count Pointer to the number of accumulation cycles.
- */
-void AnalogChannel::GetAccumulatorOutput(int64_t *value, uint32_t *count)
-{
- if (StatusIsFatal()) return;
- if (m_accumulator == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- if (value == NULL || count == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- tAccumulator::tOutput output = m_accumulator->readOutput(&localStatus);
- *value = output.Value + m_accumulatorOffset;
- *count = output.Count;
- wpi_setError(localStatus);
-}
-
-/**
- * Set whether to use voltage or value for PIDGet.
- * This method determines whether PIDGet should use average voltage
- * or value for PIDControllers for a particular channel. This is to
- * preserve compatibility with existng programs and is likely to change
- * in favor of voltage for 2015 and beyond.
- * @param shouldUseVoltageForPID true if voltage should be used for PIDGet.
- */
-void AnalogChannel::SetVoltageForPID(bool shouldUseVoltageForPID) {
- m_shouldUseVoltageForPID = shouldUseVoltageForPID;
-}
-
-/**
- * Get the Average value for the PID Source base object.
- *
- * @return The average voltage.
- */
-double AnalogChannel::PIDGet()
-{
- if (StatusIsFatal()) return 0.0;
- if (m_shouldUseVoltageForPID) {
- return GetAverageVoltage();
- } else {
- 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
deleted file mode 100644
index 153640a..0000000
--- a/aos/externals/WPILib/WPILib/AnalogChannel.h
+++ /dev/null
@@ -1,90 +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 ANALOG_CHANNEL_H_
-#define ANALOG_CHANNEL_H_
-
-#include "ChipObject.h"
-#include "SensorBase.h"
-#include "PIDSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class AnalogModule;
-
-/**
- * Analog channel class.
- *
- * Each analog channel is read from hardware as a 12-bit number representing -10V to 10V.
- *
- * Connected to each analog channel is an averaging and oversampling engine. This engine accumulates
- * the specified ( by SetAverageBits() and SetOversampleBits() ) number of samples before returning a new
- * value. This is not a sliding window average. The only difference between the oversampled samples and
- * the averaged samples is that the oversampled samples are simply accumulated effectively increasing the
- * 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, public LiveWindowSendable
-{
-public:
- static const uint8_t kAccumulatorModuleNumber = 1;
- static const uint32_t kAccumulatorNumChannels = 2;
- static const uint32_t kAccumulatorChannels[kAccumulatorNumChannels];
-
- AnalogChannel(uint8_t moduleNumber, uint32_t channel);
- explicit AnalogChannel(uint32_t channel);
- virtual ~AnalogChannel();
-
- AnalogModule *GetModule();
-
- int16_t GetValue();
- int32_t GetAverageValue();
-
- float GetVoltage();
- float GetAverageVoltage();
-
- uint8_t GetModuleNumber();
- uint32_t GetChannel();
-
- void SetAverageBits(uint32_t bits);
- uint32_t GetAverageBits();
- void SetOversampleBits(uint32_t bits);
- uint32_t GetOversampleBits();
-
- uint32_t GetLSBWeight();
- int32_t GetOffset();
-
- bool IsAccumulatorChannel();
- void InitAccumulator();
- void SetAccumulatorInitialValue(int64_t value);
- void ResetAccumulator();
- void SetAccumulatorCenter(int32_t center);
- void SetAccumulatorDeadband(int32_t deadband);
- int64_t GetAccumulatorValue();
- uint32_t GetAccumulatorCount();
- void GetAccumulatorOutput(int64_t *value, uint32_t *count);
- void SetVoltageForPID(bool shouldUseVoltageForPID);
-
- double PIDGet();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- void InitChannel(uint8_t moduleNumber, uint32_t channel);
- uint32_t m_channel;
- AnalogModule *m_module;
- tAccumulator *m_accumulator;
- int64_t m_accumulatorOffset;
- bool m_shouldUseVoltageForPID;
-
- ITable *m_table;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/AnalogModule.cpp b/aos/externals/WPILib/WPILib/AnalogModule.cpp
deleted file mode 100644
index 9fd829b..0000000
--- a/aos/externals/WPILib/WPILib/AnalogModule.cpp
+++ /dev/null
@@ -1,418 +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 "AnalogModule.h"
-#include "Synchronized.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-#include "NetworkCommunication/AICalibration.h"
-
-const long AnalogModule::kTimebase; ///< 40 MHz clock
-const long AnalogModule::kDefaultOversampleBits;
-const long AnalogModule::kDefaultAverageBits;
-constexpr float AnalogModule::kDefaultSampleRate;
-// Needs to be global since the protected resource spans both module singletons.
-ReentrantSemaphore AnalogModule::m_registerWindowSemaphore;
-
-/**
- * Get an instance of an Analog Module.
- *
- * Singleton analog module creation where a module is allocated on the first use
- * and the same module is returned on subsequent uses.
- *
- * @param moduleNumber The analog module to get (1 or 2).
- * @return A pointer to the AnalogModule.
- */
-AnalogModule* AnalogModule::GetInstance(uint8_t moduleNumber)
-{
- if (CheckAnalogModule(moduleNumber))
- {
- return (AnalogModule*)GetModule(nLoadOut::kModuleType_Analog, moduleNumber);
- }
-
- // If this wasn't caught before now, make sure we say what's wrong before we crash
- char buf[64];
- snprintf(buf, 64, "Analog Module %d", moduleNumber);
- wpi_setGlobalWPIErrorWithContext(ModuleIndexOutOfRange, buf);
-
- return NULL;
-}
-
-/**
- * Create a new instance of an analog module.
- *
- * Create an instance of the analog module object. Initialize all the parameters
- * to reasonable values on start.
- * Setting a global value on an analog module can be done only once unless subsequent
- * values are set the previously set value.
- * Analog modules are a singleton, so the constructor is never called outside of this class.
- *
- * @param moduleNumber The analog module to create (1 or 2).
- */
-AnalogModule::AnalogModule(uint8_t moduleNumber)
- : Module(nLoadOut::kModuleType_Analog, moduleNumber)
- , m_module (NULL)
- , m_sampleRateSet (false)
- , m_numChannelsToActivate (0)
-{
- AddToSingletonList();
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_module = tAI::create(m_moduleNumber - 1, &localStatus);
- wpi_setError(localStatus);
- SetNumChannelsToActivate(kAnalogChannels);
- SetSampleRate(kDefaultSampleRate);
-
- for (uint32_t i = 0; i < kAnalogChannels; i++)
- {
- m_module->writeScanList(i, i, &localStatus);
- wpi_setError(localStatus);
- SetAverageBits(i + 1, kDefaultAverageBits);
- SetOversampleBits(i + 1, kDefaultOversampleBits);
- }
-}
-
-/**
- * Destructor for AnalogModule.
- */
-AnalogModule::~AnalogModule()
-{
- delete m_module;
-}
-
-/**
- * Set the sample rate on the module.
- *
- * This is a global setting for the module and effects all channels.
- *
- * @param samplesPerSecond The number of samples per channel per second.
- */
-void AnalogModule::SetSampleRate(float samplesPerSecond)
-{
- // TODO: This will change when variable size scan lists are implemented.
- // TODO: Need float comparison with epsilon.
- //wpi_assert(!sampleRateSet || GetSampleRate() == samplesPerSecond);
- m_sampleRateSet = true;
-
- // Compute the convert rate
- uint32_t ticksPerSample = (uint32_t)((float)kTimebase / samplesPerSecond);
- uint32_t ticksPerConversion = ticksPerSample / GetNumChannelsToActivate();
- // ticksPerConversion must be at least 80
- if (ticksPerConversion < 80)
- {
- wpi_setWPIError(SampleRateTooHigh);
- ticksPerConversion = 80;
- }
-
- // Atomically set the scan size and the convert rate so that the sample rate is constant
- tAI::tConfig config;
- config.ScanSize = GetNumChannelsToActivate();
- config.ConvertRate = ticksPerConversion;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_module->writeConfig(config, &localStatus);
- wpi_setError(localStatus);
-
- // Indicate that the scan size has been commited to hardware.
- SetNumChannelsToActivate(0);
-}
-
-/**
- * Get the current sample rate on the module.
- *
- * This assumes one entry in the scan list.
- * This is a global setting for the module and effects all channels.
- *
- * @return Sample rate.
- */
-float AnalogModule::GetSampleRate()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t ticksPerConversion = m_module->readLoopTiming(&localStatus);
- wpi_setError(localStatus);
- uint32_t ticksPerSample = ticksPerConversion * GetNumActiveChannels();
- return (float)kTimebase / (float)ticksPerSample;
-}
-
-/**
- * Return the number of channels on the module in use.
- *
- * @return Active channels.
- */
-uint32_t AnalogModule::GetNumActiveChannels()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t scanSize = m_module->readConfig_ScanSize(&localStatus);
- wpi_setError(localStatus);
- if (scanSize == 0)
- return 8;
- return scanSize;
-}
-
-/**
- * Get the number of active channels.
- *
- * This is an internal function to allow the atomic update of both the
- * number of active channels and the sample rate.
- *
- * When the number of channels changes, use the new value. Otherwise,
- * return the curent value.
- *
- * @return Value to write to the active channels field.
- */
-uint32_t AnalogModule::GetNumChannelsToActivate()
-{
- if(m_numChannelsToActivate == 0) return GetNumActiveChannels();
- return m_numChannelsToActivate;
-}
-
-/**
- * Set the number of active channels.
- *
- * Store the number of active channels to set. Don't actually commit to hardware
- * until SetSampleRate().
- *
- * @param channels Number of active channels.
- */
-void AnalogModule::SetNumChannelsToActivate(uint32_t channels)
-{
- m_numChannelsToActivate = channels;
-}
-
-/**
- * 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 Analog channel to configure.
- * @param bits Number of bits to average.
- */
-void AnalogModule::SetAverageBits(uint32_t channel, uint32_t bits)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_module->writeAverageBits(channel - 1, bits, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Get the number of averaging bits.
- *
- * 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 Channel to address.
- * @return Bits to average.
- */
-uint32_t AnalogModule::GetAverageBits(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t result = m_module->readAverageBits(channel - 1, &localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * 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 Analog channel to configure.
- * @param bits Number of bits to oversample.
- */
-void AnalogModule::SetOversampleBits(uint32_t channel, uint32_t bits)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_module->writeOversampleBits(channel - 1, bits, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Get the number of oversample bits.
- *
- * 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 Channel to address.
- * @return Bits to oversample.
- */
-uint32_t AnalogModule::GetOversampleBits(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t result = m_module->readOversampleBits(channel - 1, &localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Get a sample straight from the channel on this 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.
- *
- * @return A sample straight from the channel on this module.
- */
-int16_t AnalogModule::GetValue(uint32_t channel)
-{
- int16_t value;
- CheckAnalogChannel(channel);
-
- tAI::tReadSelect readSelect;
- readSelect.Channel = channel - 1;
- readSelect.Module = m_moduleNumber - 1;
- readSelect.Averaged = false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
-
- {
- Synchronized sync(m_registerWindowSemaphore);
- m_module->writeReadSelect(readSelect, &localStatus);
- m_module->strobeLatchOutput(&localStatus);
- value = (int16_t) m_module->readOutput(&localStatus);
- }
-
- wpi_setError(localStatus);
- return value;
-}
-
-/**
- * Get a sample from the output of the oversample and average engine for the 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 Channel number to read.
- * @return A sample from the oversample and average engine for the channel.
- */
-int32_t AnalogModule::GetAverageValue(uint32_t channel)
-{
- int32_t value;
- CheckAnalogChannel(channel);
-
- tAI::tReadSelect readSelect;
- readSelect.Channel = channel - 1;
- readSelect.Module = m_moduleNumber - 1;
- readSelect.Averaged = true;
- tRioStatusCode localStatus = NiFpga_Status_Success;
-
- {
- Synchronized sync(m_registerWindowSemaphore);
- m_module->writeReadSelect(readSelect, &localStatus);
- m_module->strobeLatchOutput(&localStatus);
- value = m_module->readOutput(&localStatus);
- }
-
- wpi_setError(localStatus);
- return value;
-}
-
-/**
- * Convert a voltage to a raw value for a specified channel.
- *
- * This process depends on the calibration of each channel, so the channel
- * must be specified.
- *
- * @todo This assumes raw values. Oversampling not supported as is.
- *
- * @param channel The channel to convert for.
- * @param voltage The voltage to convert.
- * @return The raw value for the channel.
- */
-int32_t AnalogModule::VoltsToValue(int32_t channel, float voltage)
-{
- if (voltage > 10.0)
- {
- voltage = 10.0;
- wpi_setWPIError(VoltageOutOfRange);
- }
- if (voltage < -10.0)
- {
- voltage = -10.0;
- wpi_setWPIError(VoltageOutOfRange);
- }
- uint32_t LSBWeight = GetLSBWeight(channel);
- int32_t offset = GetOffset(channel);
- int32_t value = (int32_t) ((voltage + offset * 1.0e-9) / (LSBWeight * 1.0e-9));
- return value;
-}
-
-/**
- * Get a scaled sample straight from the channel on this module.
- *
- * The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().
- *
- * @param channel The channel to read.
- * @return A scaled sample straight from the channel on this module.
- */
-float AnalogModule::GetVoltage(uint32_t channel)
-{
- int16_t value = GetValue(channel);
- uint32_t LSBWeight = GetLSBWeight(channel);
- int32_t offset = GetOffset(channel);
- float voltage = LSBWeight * 1.0e-9 * value - offset * 1.0e-9;
- return voltage;
-}
-
-/**
- * Get a scaled sample from the output of the oversample and average engine for the 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 to read.
- * @return A scaled sample from the output of the oversample and average engine for the channel.
- */
-float AnalogModule::GetAverageVoltage(uint32_t channel)
-{
- int32_t value = GetAverageValue(channel);
- uint32_t LSBWeight = GetLSBWeight(channel);
- int32_t offset = GetOffset(channel);
- uint32_t oversampleBits = GetOversampleBits(channel);
- float voltage = ((LSBWeight * 1.0e-9 * value) / (float)(1 << oversampleBits)) - offset * 1.0e-9;
- return voltage;
-}
-
-/**
- * Get the factory scaling least significant bit weight constant.
- * The least significant bit weight constant for the channel that was calibrated in
- * manufacturing and stored in an eeprom in the module.
- *
- * Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)
- *
- * @param channel The channel to get calibration data for.
- * @return Least significant bit weight.
- */
-uint32_t AnalogModule::GetLSBWeight(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t lsbWeight = FRC_NetworkCommunication_nAICalibration_getLSBWeight(m_module->getSystemIndex(), channel - 1, (int32_t*)&localStatus);
- wpi_setError(localStatus);
- return lsbWeight;
-}
-
-/**
- * Get the factory scaling offset constant.
- * The offset constant for the channel that was calibrated in manufacturing and stored
- * in an eeprom in the module.
- *
- * Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)
- *
- * @param channel The channel to get calibration data for.
- * @return Offset constant.
- */
-int32_t AnalogModule::GetOffset(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- int32_t offset = FRC_NetworkCommunication_nAICalibration_getOffset(m_module->getSystemIndex(), channel - 1, (int32_t*)&localStatus);
- wpi_setError(localStatus);
- return offset;
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/AnalogModule.h b/aos/externals/WPILib/WPILib/AnalogModule.h
deleted file mode 100644
index 9b98c60..0000000
--- a/aos/externals/WPILib/WPILib/AnalogModule.h
+++ /dev/null
@@ -1,62 +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 ANALOG_MODULE_H_
-#define ANALOG_MODULE_H_
-
-#include "ChipObject.h"
-#include "Module.h"
-
-/**
- * Analog Module class.
- * Each module can independently sample its channels at a configurable rate.
- * There is a 64-bit hardware accumulator associated with channel 1 on each module.
- * The accumulator is attached to the output of the oversample and average engine so that the center
- * value can be specified in higher resolution resulting in less error.
- */
-class AnalogModule: public Module
-{
- friend class Module;
-
-public:
- static const long kTimebase = 40000000; ///< 40 MHz clock
- static const long kDefaultOversampleBits = 0;
- static const long kDefaultAverageBits = 7;
- static constexpr float kDefaultSampleRate = 50000.0;
-
- void SetSampleRate(float samplesPerSecond);
- float GetSampleRate();
- void SetAverageBits(uint32_t channel, uint32_t bits);
- uint32_t GetAverageBits(uint32_t channel);
- void SetOversampleBits(uint32_t channel, uint32_t bits);
- uint32_t GetOversampleBits(uint32_t channel);
- int16_t GetValue(uint32_t channel);
- int32_t GetAverageValue(uint32_t channel);
- float GetAverageVoltage(uint32_t channel);
- float GetVoltage(uint32_t channel);
- uint32_t GetLSBWeight(uint32_t channel);
- int32_t GetOffset(uint32_t channel);
- int32_t VoltsToValue(int32_t channel, float voltage);
-
- static AnalogModule* GetInstance(uint8_t moduleNumber);
-
-protected:
- explicit AnalogModule(uint8_t moduleNumber);
- virtual ~AnalogModule();
-
-private:
- static ReentrantSemaphore m_registerWindowSemaphore;
-
- uint32_t GetNumActiveChannels();
- uint32_t GetNumChannelsToActivate();
- void SetNumChannelsToActivate(uint32_t channels);
-
- tAI *m_module;
- bool m_sampleRateSet;
- uint32_t m_numChannelsToActivate;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/AnalogPotentiometer.cpp b/aos/externals/WPILib/WPILib/AnalogPotentiometer.cpp
deleted file mode 100644
index fc43ce4..0000000
--- a/aos/externals/WPILib/WPILib/AnalogPotentiometer.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-#include "AnalogPotentiometer.h"
-
-/**
- * Class for reading analog potentiometers. Analog potentiometers read
- * in an analog voltage that corresponds to a position. Usually the
- * position is either degrees or meters. However, if no conversion is
- * given it remains volts.
- *
- */
- void AnalogPotentiometer::InitPot(int slot, int channel, double scale, double offset) {
- m_module = slot;
- m_channel = channel;
- m_scale = scale;
- m_offset = offset;
- m_analog_channel = new AnalogChannel(slot, channel);
- }
-
- /**
- * AnalogPotentiometer constructor.
- *
- * Use the scaling and offset values so that the output produces
- * meaningful values. I.E: you have a 270 degree potentiometer and
- * you want the output to be degrees with the halfway point as 0
- * degrees. The scale value is 270.0(degrees)/5.0(volts) and the
- * offset is -135.0 since the halfway point after scaling is 135
- * degrees.
- *
- * @param slot The analog module this potentiometer is plugged into.
- * @param channel The analog channel this potentiometer is plugged into.
- * @param scale The scaling to multiply the voltage by to get a meaningful unit.
- * @param offset The offset to add to the scaled value for controlling the zero value
- */
- AnalogPotentiometer::AnalogPotentiometer(int slot, int channel, double scale, double offset) {
- InitPot(slot, channel, scale, offset);
- }
-
- /**
- * AnalogPotentiometer constructor.
- *
- * Use the scaling and offset values so that the output produces
- * meaningful values. I.E: you have a 270 degree potentiometer and
- * you want the output to be degrees with the halfway point as 0
- * degrees. The scale value is 270.0(degrees)/5.0(volts) and the
- * offset is -135.0 since the halfway point after scaling is 135
- * degrees.
- *
- * @param channel The analog channel this potentiometer is plugged into.
- * @param scale The scaling to multiply the voltage by to get a meaningful unit.
- * @param offset The offset to add to the scaled value for controlling the zero value
- */
- AnalogPotentiometer::AnalogPotentiometer(int channel, double scale, double offset) {
- InitPot(1, channel, scale, offset);
- }
-
- /**
- * AnalogPotentiometer constructor.
- *
- * Use the scaling and offset values so that the output produces
- * meaningful values. I.E: you have a 270 degree potentiometer and
- * you want the output to be degrees with the halfway point as 0
- * degrees. The scale value is 270.0(degrees)/5.0(volts) and the
- * offset is -135.0 since the halfway point after scaling is 135
- * degrees.
- *
- * @param channel The analog channel this potentiometer is plugged into.
- * @param scale The scaling to multiply the voltage by to get a meaningful unit.
- */
- AnalogPotentiometer::AnalogPotentiometer(int channel, double scale) {
- InitPot(1, channel, scale, 0);
- }
-
- /**
- * AnalogPotentiometer constructor.
- *
- * @param channel The analog channel this potentiometer is plugged into.
- */
- AnalogPotentiometer::AnalogPotentiometer(int channel) {
- InitPot(1, channel, 1, 0);
- }
-
- /**
- * Get the current reading of the potentiomere.
- *
- * @return The current position of the potentiometer.
- */
- double AnalogPotentiometer::Get() {
- return m_analog_channel->GetVoltage() * m_scale + m_offset;
- }
-
-
- /**
- * Implement the PIDSource interface.
- *
- * @return The current reading.
- */
- double AnalogPotentiometer::PIDGet() {
- return Get();
- }
-
- /*
- * Live Window code, only does anything if live window is activated.
- */
- std::string AnalogPotentiometer::GetSmartDashboardType(){
- return "Analog Input";
- }
-
- ITable *m_table;
-
- /**
- * {@inheritDoc}
- */
- void AnalogPotentiometer::InitTable(ITable *subtable) {
- m_table = subtable;
- UpdateTable();
- }
-
- /**
- * {@inheritDoc}
- */
- void AnalogPotentiometer::UpdateTable() {
- if (m_table != NULL) {
- m_table->PutNumber("Value", Get());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- ITable * AnalogPotentiometer::GetTable(){
- return m_table;
- }
-
- /**
- * Analog Channels don't have to do anything special when entering the LiveWindow.
- * {@inheritDoc}
- */
- void AnalogPotentiometer::StartLiveWindowMode() {}
-
- /**
- * Analog Channels don't have to do anything special when exiting the LiveWindow.
- * {@inheritDoc}
- */
- void AnalogPotentiometer::StopLiveWindowMode() {}
-
diff --git a/aos/externals/WPILib/WPILib/AnalogPotentiometer.h b/aos/externals/WPILib/WPILib/AnalogPotentiometer.h
deleted file mode 100644
index 1c42255..0000000
--- a/aos/externals/WPILib/WPILib/AnalogPotentiometer.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _ANALOG_POTENTIOMETER_H
-#define _ANALOG_POTENTIOMETER_H
-
-#include "Interfaces/Potentiometer.h"
-#include "LiveWindow/LiveWindowSendable.h"
-#include "AnalogChannel.h"
-
-/**
- * Class for reading analog potentiometers. Analog potentiometers read
- * in an analog voltage that corresponds to a position. Usually the
- * position is either degrees or meters. However, if no conversion is
- * given it remains volts.
- *
- * @author Alex Henning
- */
-class AnalogPotentiometer : public Potentiometer, public LiveWindowSendable {
-private:
- int m_module, m_channel;
- double m_scale, m_offset;
- AnalogChannel *m_analog_channel;
- void InitPot(int slot, int channel, double scale, double offset);
- ITable *m_table;
-public:
- AnalogPotentiometer(int slot, int channel, double scale, double offset);
- AnalogPotentiometer(int channel, double scale, double offset);
- AnalogPotentiometer(int channel, double scale);
- AnalogPotentiometer(int channel);
- double Get();
- double PIDGet();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subtable);
- void UpdateTable();
- ITable * GetTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/AnalogTrigger.cpp b/aos/externals/WPILib/WPILib/AnalogTrigger.cpp
deleted file mode 100644
index fff2365..0000000
--- a/aos/externals/WPILib/WPILib/AnalogTrigger.cpp
+++ /dev/null
@@ -1,199 +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 "AnalogTrigger.h"
-
-#include "AnalogChannel.h"
-#include "AnalogModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-
-static Resource *triggers = NULL;
-
-/**
- * Initialize an analog trigger from a slot and channel.
- * This is the common code for the two constructors that use a slot and channel.
- */
-void AnalogTrigger::InitTrigger(uint8_t moduleNumber, uint32_t channel)
-{
- Resource::CreateResourceObject(&triggers, tAnalogTrigger::kNumSystems);
- uint32_t index = triggers->Allocate("Analog Trigger", this);
- if (index == ~0ul)
- {
- return;
- }
- m_index = (uint8_t)index;
- m_channel = channel;
- m_analogModule = AnalogModule::GetInstance(moduleNumber);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_trigger = tAnalogTrigger::create(m_index, &localStatus);
- m_trigger->writeSourceSelect_Channel(m_channel - 1, &localStatus);
- m_trigger->writeSourceSelect_Module(moduleNumber - 1, &localStatus);
- wpi_setError(localStatus);
-
- nUsageReporting::report(nUsageReporting::kResourceType_AnalogTrigger, m_channel, moduleNumber - 1);
-}
-
-/**
- * Constructor for an analog trigger given a channel number.
- * The default module is used in this case.
- *
- * @param channel The analog channel (1..8).
- */
-AnalogTrigger::AnalogTrigger(uint32_t channel)
-{
- InitTrigger(GetDefaultAnalogModule(), channel);
-}
-
-/**
- * Constructor for an analog trigger given both the slot and channel.
- *
- * @param moduleNumber The analog module (1 or 2).
- * @param channel The analog channel (1..8).
- */
-AnalogTrigger::AnalogTrigger(uint8_t moduleNumber, uint32_t channel)
-{
- InitTrigger(moduleNumber, channel);
-}
-
-/**
- * Construct an analog trigger given an analog channel.
- * This should be used in the case of sharing an analog channel between the trigger
- * and an analog input object.
- */
-AnalogTrigger::AnalogTrigger(AnalogChannel *channel)
-{
- InitTrigger(channel->GetModuleNumber(), channel->GetChannel());
-}
-
-AnalogTrigger::~AnalogTrigger()
-{
- triggers->Free(m_index, this);
- delete m_trigger;
-}
-
-/**
- * Set the upper and lower limits of the analog trigger.
- * The limits are given in ADC codes. If oversampling is used, the units must be scaled
- * appropriately.
- */
-void AnalogTrigger::SetLimitsRaw(int32_t lower, int32_t upper)
-{
- if (StatusIsFatal()) return;
- if (lower > upper)
- {
- wpi_setWPIError(AnalogTriggerLimitOrderError);
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_trigger->writeLowerLimit(lower, &localStatus);
- m_trigger->writeUpperLimit(upper, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set the upper and lower limits of the analog trigger.
- * The limits are given as floating point voltage values.
- */
-void AnalogTrigger::SetLimitsVoltage(float lower, float upper)
-{
- if (StatusIsFatal()) return;
- if (lower > upper)
- {
- wpi_setWPIError(AnalogTriggerLimitOrderError);
- }
- // TODO: This depends on the averaged setting. Only raw values will work as is.
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_trigger->writeLowerLimit(m_analogModule->VoltsToValue(m_channel, lower), &localStatus);
- m_trigger->writeUpperLimit(m_analogModule->VoltsToValue(m_channel, upper), &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Configure the analog trigger to use the averaged vs. raw values.
- * If the value is true, then the averaged value is selected for the analog trigger, otherwise
- * the immediate value is used.
- */
-void AnalogTrigger::SetAveraged(bool useAveragedValue)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (m_trigger->readSourceSelect_Filter(&localStatus) != 0)
- wpi_setWPIErrorWithContext(IncompatibleMode, "Hardware does not support average and filtering at the same time.");
- m_trigger->writeSourceSelect_Averaged(useAveragedValue, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Configure the analog trigger to use a filtered value.
- * The analog trigger will operate with a 3 point average rejection filter. This is designed to
- * help with 360 degree pot applications for the period where the pot crosses through zero.
- */
-void AnalogTrigger::SetFiltered(bool useFilteredValue)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (m_trigger->readSourceSelect_Averaged(&localStatus) != 0)
- wpi_setWPIErrorWithContext(IncompatibleMode, "Hardware does not support average and filtering at the same time.");
- m_trigger->writeSourceSelect_Filter(useFilteredValue, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Return the index of the analog trigger.
- * This is the FPGA index of this analog trigger instance.
- * @return The index of the analog trigger.
- */
-uint32_t AnalogTrigger::GetIndex()
-{
- if (StatusIsFatal()) return ~0ul;
- return m_index;
-}
-
-/**
- * Return the InWindow output of the analog trigger.
- * True if the analog input is between the upper and lower limits.
- * @return The InWindow output of the analog trigger.
- */
-bool AnalogTrigger::GetInWindow()
-{
- if (StatusIsFatal()) return false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool result = m_trigger->readOutput_InHysteresis(m_index, &localStatus) != 0;
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Return the TriggerState output of the analog trigger.
- * True if above upper limit.
- * False if below lower limit.
- * If in Hysteresis, maintain previous state.
- * @return The TriggerState output of the analog trigger.
- */
-bool AnalogTrigger::GetTriggerState()
-{
- if (StatusIsFatal()) return false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool result = m_trigger->readOutput_OverLimit(m_index, &localStatus) != 0;
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Creates an AnalogTriggerOutput object.
- * Gets an output object that can be used for routing.
- * Caller is responsible for deleting the AnalogTriggerOutput object.
- * @param type An enum of the type of output object to create.
- * @return A pointer to a new AnalogTriggerOutput object.
- */
-AnalogTriggerOutput *AnalogTrigger::CreateOutput(AnalogTriggerOutput::Type type)
-{
- if (StatusIsFatal()) return NULL;
- return new AnalogTriggerOutput(this, type);
-}
-
diff --git a/aos/externals/WPILib/WPILib/AnalogTrigger.h b/aos/externals/WPILib/WPILib/AnalogTrigger.h
deleted file mode 100644
index d4b1a4b..0000000
--- a/aos/externals/WPILib/WPILib/AnalogTrigger.h
+++ /dev/null
@@ -1,44 +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 ANALOG_TRIGGER_H_
-#define ANALOG_TRIGGER_H_
-
-#include "AnalogTriggerOutput.h"
-#include "SensorBase.h"
-
-class AnalogChannel;
-class AnalogModule;
-
-class AnalogTrigger: public SensorBase
-{
- friend class AnalogTriggerOutput;
-public:
- AnalogTrigger(uint8_t moduleNumber, uint32_t channel);
- explicit AnalogTrigger(uint32_t channel);
- explicit AnalogTrigger(AnalogChannel *channel);
- virtual ~AnalogTrigger();
-
- void SetLimitsVoltage(float lower, float upper);
- void SetLimitsRaw(int32_t lower, int32_t upper);
- void SetAveraged(bool useAveragedValue);
- void SetFiltered(bool useFilteredValue);
- uint32_t GetIndex();
- bool GetInWindow();
- bool GetTriggerState();
- AnalogTriggerOutput *CreateOutput(AnalogTriggerOutput::Type type);
-
-private:
- void InitTrigger(uint8_t moduleNumber, uint32_t channel);
-
- uint8_t m_index;
- tAnalogTrigger *m_trigger;
- AnalogModule *m_analogModule;
- uint32_t m_channel;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/AnalogTriggerOutput.cpp b/aos/externals/WPILib/WPILib/AnalogTriggerOutput.cpp
deleted file mode 100644
index 415e3f9..0000000
--- a/aos/externals/WPILib/WPILib/AnalogTriggerOutput.cpp
+++ /dev/null
@@ -1,79 +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 "AnalogTriggerOutput.h"
-#include "AnalogTrigger.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-
-/**
- * Create an object that represents one of the four outputs from an analog trigger.
- *
- * Because this class derives from DigitalSource, it can be passed into routing functions
- * for Counter, Encoder, etc.
- *
- * @param trigger A pointer to the trigger for which this is an output.
- * @param outputType An enum that specifies the output on the trigger to represent.
- */
-AnalogTriggerOutput::AnalogTriggerOutput(AnalogTrigger *trigger, AnalogTriggerOutput::Type outputType)
- : m_trigger (trigger)
- , m_outputType (outputType)
-{
- nUsageReporting::report(nUsageReporting::kResourceType_AnalogTriggerOutput, trigger->GetIndex(), outputType);
-}
-
-AnalogTriggerOutput::~AnalogTriggerOutput()
-{
-}
-
-/**
- * Get the state of the analog trigger output.
- * @return The state of the analog trigger output.
- */
-bool AnalogTriggerOutput::Get()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool result = false;
- switch(m_outputType)
- {
- case kInWindow:
- result = m_trigger->m_trigger->readOutput_InHysteresis(m_trigger->m_index, &localStatus);
- break;
- case kState:
- result = m_trigger->m_trigger->readOutput_OverLimit(m_trigger->m_index, &localStatus);
- break;
- case kRisingPulse:
- case kFallingPulse:
- wpi_setWPIError(AnalogTriggerPulseOutputError);
- return false;
- }
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * @return The value to be written to the channel field of a routing mux.
- */
-uint32_t AnalogTriggerOutput::GetChannelForRouting()
-{
- return (m_trigger->m_index << 2) + m_outputType;
-}
-
-/**
- * @return The value to be written to the module field of a routing mux.
- */
-uint32_t AnalogTriggerOutput::GetModuleForRouting()
-{
- return m_trigger->m_index >> 2;
-}
-
-/**
- * @return The value to be written to the module field of a routing mux.
- */
-bool AnalogTriggerOutput::GetAnalogTriggerForRouting()
-{
- return true;
-}
diff --git a/aos/externals/WPILib/WPILib/AnalogTriggerOutput.h b/aos/externals/WPILib/WPILib/AnalogTriggerOutput.h
deleted file mode 100644
index 83e4450..0000000
--- a/aos/externals/WPILib/WPILib/AnalogTriggerOutput.h
+++ /dev/null
@@ -1,64 +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 ANALOG_TRIGGER_OUTPUT_H_
-#define ANALOG_TRIGGER_OUTPUT_H_
-
-#include "DigitalSource.h"
-
-class AnalogTrigger;
-
-/**
- * Class to represent a specific output from an analog trigger.
- * This class is used to get the current output value and also as a DigitalSource
- * to provide routing of an output to digital subsystems on the FPGA such as
- * Counter, Encoder, and Interrupt.
- *
- * The TriggerState output indicates the primary output value of the trigger. If the analog
- * signal is less than the lower limit, the output is false. If the analog value is greater
- * than the upper limit, then the output is true. If the analog value is in between, then
- * the trigger output state maintains its most recent value.
- *
- * The InWindow output indicates whether or not the analog signal is inside the range defined
- * by the limits.
- *
- * The RisingPulse and FallingPulse outputs detect an instantaneous transition from above the
- * upper limit to below the lower limit, and vise versa. These pulses represent a rollover
- * condition of a sensor and can be routed to an up / down couter or to interrupts. Because
- * the outputs generate a pulse, they cannot be read directly. To help ensure that a rollover
- * condition is not missed, there is an average rejection filter available that operates on the
- * upper 8 bits of a 12 bit number and selects the nearest outlyer of 3 samples. This will reject
- * a sample that is (due to averaging or sampling) errantly between the two limits. This filter
- * will fail if more than one sample in a row is errantly in between the two limits. You may see
- * this problem if attempting to use this feature with a mechanical rollover sensor, such as a
- * 360 degree no-stop potentiometer without signal conditioning, because the rollover transition
- * is not sharp / clean enough. Using the averaging engine may help with this, but rotational speeds of
- * the sensor will then be limited.
- */
-class AnalogTriggerOutput: public DigitalSource
-{
- friend class AnalogTrigger;
-public:
- // kRisingPulse and kFallingPulse don't seem to work with RequestInterrupts.
- typedef enum {kInWindow=0, kState=1, kRisingPulse=2, kFallingPulse=3} Type;
-
- virtual ~AnalogTriggerOutput();
- bool Get();
-
- // DigitalSource interface
- virtual uint32_t GetChannelForRouting();
- virtual uint32_t GetModuleForRouting();
- virtual bool GetAnalogTriggerForRouting();
-protected:
- AnalogTriggerOutput(AnalogTrigger *trigger, Type outputType);
-
-private:
- AnalogTrigger *m_trigger;
- Type m_outputType;
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Base.h b/aos/externals/WPILib/WPILib/Base.h
deleted file mode 100644
index eb11f96..0000000
--- a/aos/externals/WPILib/WPILib/Base.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 _BASE_H
-#define _BASE_H
-
-// If don't have C++11, define constexpr as const for WindRiver
-#if __cplusplus < 201103L
-#define constexpr const
-#endif
-
-// A macro to disallow the copy constructor and operator= functions
-// This should be used in the private: declarations for a class
-#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
- TypeName(const TypeName&); \
- void operator=(const TypeName&)
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.cpp b/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.cpp
deleted file mode 100644
index b2122ff..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.cpp
+++ /dev/null
@@ -1,20 +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 "Buttons/AnalogIOButton.h"
-#include "DriverStation.h"
-
-const double AnalogIOButton::kThreshold = 0.5;
-
-AnalogIOButton::AnalogIOButton(int port) :
- m_port(port)
-{
-}
-
-bool AnalogIOButton::Get()
-{
- return DriverStation::GetInstance()->GetEnhancedIO().GetAnalogIn(m_port) < kThreshold;
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h b/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.h
deleted file mode 100644
index 9b867e6..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/AnalogIOButton.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 __ANALOG_IO_BUTTON_H__
-#define __ANALOG_IO_BUTTON_H__
-
-#include "Buttons/Button.h"
-
-class AnalogIOButton : public Trigger
-{
-public:
- static const double kThreshold;
-
- AnalogIOButton(int port);
- virtual ~AnalogIOButton() {}
- virtual bool Get();
-
-private:
- int m_port;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Buttons/Button.cpp b/aos/externals/WPILib/WPILib/Buttons/Button.cpp
deleted file mode 100644
index 020cb94..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/Button.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Button.h"
-
-/**
- * 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);
-}
-
-/**
- * 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);
-}
-
-/**
- * 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);
-}
-
-/**
- * Cancels the specificed command when the button is pressed
- * @param The command to be canceled
- */
-void Button::CancelWhenPressed(Command *command) {
- CancelWhenActive(command);
-}
-
-/**
- * Toggle the specified command when the button is pressed
- * @param The command to be toggled
- */
-void Button::ToggleWhenPressed(Command *command) {
- ToggleWhenActive(command);
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/Button.h b/aos/externals/WPILib/WPILib/Buttons/Button.h
deleted file mode 100644
index c491111..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/Button.h
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __BUTTON_H__
-#define __BUTTON_H__
-
-#include "Buttons/Trigger.h"
-#include "Commands/Command.h"
-
-/**
- * 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:
- virtual void WhenPressed(Command *command);
- virtual void WhileHeld(Command *command);
- virtual void WhenReleased(Command *command);
- virtual void CancelWhenPressed(Command *command);
- virtual void ToggleWhenPressed(Command *command);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp
deleted file mode 100644
index e7f71b9..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Buttons/ButtonScheduler.h"
-
-#include "Commands/Scheduler.h"
-
-ButtonScheduler::ButtonScheduler(bool last, Trigger *button, Command *orders) :
- m_pressedLast(last),
- m_button(button),
- m_command(orders)
-{
-}
-
-void ButtonScheduler::Start()
-{
- Scheduler::GetInstance()->AddButton(this);
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h
deleted file mode 100644
index 96d0a0e..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ButtonScheduler.h
+++ /dev/null
@@ -1,27 +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 __BUTTON_SCHEDULER_H__
-#define __BUTTON_SCHEDULER_H__
-
-class Trigger;
-class Command;
-
-class ButtonScheduler
-{
-public:
- ButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~ButtonScheduler() {}
- virtual void Execute() = 0;
- void Start();
-
-protected:
- bool m_pressedLast;
- Trigger *m_button;
- Command *m_command;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.cpp
deleted file mode 100644
index 5562158..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.cpp
+++ /dev/null
@@ -1,29 +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 "Buttons/CancelButtonScheduler.h"
-
-#include "Buttons/Button.h"
-#include "Commands/Command.h"
-
-CancelButtonScheduler::CancelButtonScheduler(bool last, Trigger *button, Command *orders) :
- ButtonScheduler(last, button, orders)
-{
- pressedLast = m_button->Grab();
-}
-
-void CancelButtonScheduler::Execute()
-{
- if (m_button->Grab()) {
- if (!pressedLast) {
- pressedLast = true;
- m_command->Cancel();
- }
- } else {
- pressedLast = false;
- }
-}
-
diff --git a/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.h
deleted file mode 100644
index 0491213..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/CancelButtonScheduler.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 __CANCEL_BUTTON_SCHEDULER_H__
-#define __CANCEL_BUTTON_SCHEDULER_H__
-
-#include "Buttons/ButtonScheduler.h"
-
-class Trigger;
-class Command;
-
-class CancelButtonScheduler : public ButtonScheduler
-{
-public:
- CancelButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~CancelButtonScheduler() {}
- virtual void Execute();
-private:
- bool pressedLast;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.cpp b/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.cpp
deleted file mode 100644
index 8bb39be..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.cpp
+++ /dev/null
@@ -1,20 +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 "Buttons/DigitalIOButton.h"
-#include "DriverStation.h"
-
-const bool DigitalIOButton::kActiveState = false;
-
-DigitalIOButton::DigitalIOButton(int port) :
- m_port(port)
-{
-}
-
-bool DigitalIOButton::Get()
-{
- return DriverStation::GetInstance()->GetEnhancedIO().GetDigital(m_port) == kActiveState;
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.h b/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.h
deleted file mode 100644
index 6482c75..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/DigitalIOButton.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 __DIGITAL_IO_BUTTON_H__
-#define __DIGITAL_IO_BUTTON_H__
-
-#include "Buttons/Button.h"
-
-class DigitalIOButton: public Button
-{
-public:
- static const bool kActiveState;
-
- DigitalIOButton(int port);
- virtual ~DigitalIOButton() {}
-
- virtual bool Get();
-
-private:
- int m_port;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp
deleted file mode 100644
index fbe4a9f..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Buttons/HeldButtonScheduler.h"
-
-#include "Buttons/Button.h"
-#include "Commands/Command.h"
-
-HeldButtonScheduler::HeldButtonScheduler(bool last, Trigger *button, Command *orders) :
- ButtonScheduler(last, button, orders)
-{
-}
-
-void HeldButtonScheduler::Execute()
-{
- if (m_button->Grab())
- {
- m_pressedLast = true;
- m_command->Start();
- }
- else
- {
- if (m_pressedLast)
- {
- m_pressedLast = false;
- m_command->Cancel();
- }
- }
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h
deleted file mode 100644
index 3bca0d5..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/HeldButtonScheduler.h
+++ /dev/null
@@ -1,23 +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 __HELD_BUTTON_SCHEDULER_H__
-#define __HELD_BUTTON_SCHEDULER_H__
-
-#include "Buttons/ButtonScheduler.h"
-
-class Trigger;
-class Command;
-
-class HeldButtonScheduler : public ButtonScheduler
-{
-public:
- HeldButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~HeldButtonScheduler() {}
- virtual void Execute();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/InternalButton.cpp b/aos/externals/WPILib/WPILib/Buttons/InternalButton.cpp
deleted file mode 100644
index 0bd322d..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/InternalButton.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Buttons/InternalButton.h"
-
-InternalButton::InternalButton() :
- m_pressed(false),
- m_inverted(false)
-{
-}
-
-InternalButton::InternalButton(bool inverted) :
- m_pressed(inverted),
- m_inverted(inverted)
-{
-}
-
-void InternalButton::SetInverted(bool inverted)
-{
- m_inverted = inverted;
-}
-
-void InternalButton::SetPressed(bool pressed)
-{
- m_pressed = pressed;
-}
-
-bool InternalButton::Get()
-{
- return m_pressed ^ m_inverted;
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/InternalButton.h b/aos/externals/WPILib/WPILib/Buttons/InternalButton.h
deleted file mode 100644
index e61cf0a..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/InternalButton.h
+++ /dev/null
@@ -1,29 +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 __INTERNAL_BUTTON_H__
-#define __INTERNAL_BUTTON_H__
-
-#include "Buttons/Button.h"
-
-class InternalButton : public Button
-{
-public:
- InternalButton();
- InternalButton(bool inverted);
- virtual ~InternalButton() {}
-
- void SetInverted(bool inverted);
- void SetPressed(bool pressed);
-
- virtual bool Get();
-
-private:
- bool m_pressed;
- bool m_inverted;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/JoystickButton.cpp b/aos/externals/WPILib/WPILib/Buttons/JoystickButton.cpp
deleted file mode 100644
index 3dace65..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/JoystickButton.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Buttons/JoystickButton.h"
-
-JoystickButton::JoystickButton(GenericHID *joystick, int buttonNumber) :
- m_joystick(joystick),
- m_buttonNumber(buttonNumber)
-{
-}
-
-bool JoystickButton::Get()
-{
- return m_joystick->GetRawButton(m_buttonNumber);
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/JoystickButton.h b/aos/externals/WPILib/WPILib/Buttons/JoystickButton.h
deleted file mode 100644
index cb5f0c4..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/JoystickButton.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 __JOYSTICK_BUTTON_H__
-#define __JOYSTICK_BUTTON_H__
-
-#include "GenericHID.h"
-#include "Buttons/Button.h"
-
-class JoystickButton : public Button
-{
-public:
- JoystickButton(GenericHID *joystick, int buttonNumber);
- virtual ~JoystickButton() {}
-
- virtual bool Get();
-
-private:
- GenericHID *m_joystick;
- int m_buttonNumber;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp b/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp
deleted file mode 100644
index 5b67c2a..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.cpp
+++ /dev/null
@@ -1,29 +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 "Buttons/NetworkButton.h"
-#include "networktables/NetworkTable.h"
-
-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(ITable *table, const char *field) :
- m_netTable(table),
- m_field(field)
-{
-}
-
-bool NetworkButton::Get()
-{
- /*if (m_netTable->isConnected())
- return m_netTable->GetBoolean(m_field.c_str());
- else
- 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
deleted file mode 100644
index 874a768..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/NetworkButton.h
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __NETWORK_BUTTON_H__
-#define __NETWORK_BUTTON_H__
-
-#include "Buttons/Button.h"
-#include <string>
-
-class NetworkButton : public Button
-{
-public:
- NetworkButton(const char *tableName, const char *field);
- NetworkButton(ITable* table, const char *field);
- virtual ~NetworkButton() {}
-
- virtual bool Get();
-
-private:
- 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
deleted file mode 100644
index 3cf25ba..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.cpp
+++ /dev/null
@@ -1,31 +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 "Buttons/PressedButtonScheduler.h"
-
-#include "Buttons/Button.h"
-#include "Commands/Command.h"
-
-PressedButtonScheduler::PressedButtonScheduler(bool last, Trigger *button, Command *orders) :
- ButtonScheduler(last, button, orders)
-{
-}
-
-void PressedButtonScheduler::Execute()
-{
- if (m_button->Grab())
- {
- if (!m_pressedLast)
- {
- m_pressedLast = true;
- m_command->Start();
- }
- }
- else
- {
- m_pressedLast = false;
- }
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h
deleted file mode 100644
index a69320b..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/PressedButtonScheduler.h
+++ /dev/null
@@ -1,23 +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 __PRESSED_BUTTON_SCHEDULER_H__
-#define __PRESSED_BUTTON_SCHEDULER_H__
-
-#include "Buttons/ButtonScheduler.h"
-
-class Trigger;
-class Command;
-
-class PressedButtonScheduler : public ButtonScheduler
-{
-public:
- PressedButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~PressedButtonScheduler() {}
- virtual void Execute();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp
deleted file mode 100644
index 8715573..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.cpp
+++ /dev/null
@@ -1,31 +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 "Buttons/ReleasedButtonScheduler.h"
-
-#include "Buttons/Button.h"
-#include "Commands/Command.h"
-
-ReleasedButtonScheduler::ReleasedButtonScheduler(bool last, Trigger *button, Command *orders) :
- ButtonScheduler(last, button, orders)
-{
-}
-
-void ReleasedButtonScheduler::Execute()
-{
- if (m_button->Grab())
- {
- m_pressedLast = true;
- }
- else
- {
- if (m_pressedLast)
- {
- m_pressedLast = false;
- m_command->Start();
- }
- }
-}
diff --git a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h
deleted file mode 100644
index 198a1d3..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ReleasedButtonScheduler.h
+++ /dev/null
@@ -1,23 +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 __RELEASED_BUTTON_SCHEDULER_H__
-#define __RELEASED_BUTTON_SCHEDULER_H__
-
-#include "Buttons/ButtonScheduler.h"
-
-class Trigger;
-class Command;
-
-class ReleasedButtonScheduler : public ButtonScheduler
-{
-public:
- ReleasedButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~ReleasedButtonScheduler() {}
- virtual void Execute();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.cpp b/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.cpp
deleted file mode 100644
index ed72160..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Buttons/ToggleButtonScheduler.h"
-
-#include "Buttons/Button.h"
-#include "Commands/Command.h"
-
-ToggleButtonScheduler::ToggleButtonScheduler(bool last, Trigger *button,
- Command *orders) :
- ButtonScheduler(last, button, orders) {
- pressedLast = m_button->Grab();
-}
-
-void ToggleButtonScheduler::Execute() {
- if (m_button->Grab()) {
- if (!pressedLast) {
- pressedLast = true;
- if (m_command->IsRunning()) {
- m_command->Cancel();
- } else {
- m_command->Start();
- }
- }
- } else {
- pressedLast = false;
- }
-}
-
diff --git a/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.h b/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.h
deleted file mode 100644
index e0987e5..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/ToggleButtonScheduler.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 __TOGGLE_BUTTON_SCHEDULER_H__
-#define __TOGGLE_BUTTON_SCHEDULER_H__
-
-#include "Buttons/ButtonScheduler.h"
-
-class Trigger;
-class Command;
-
-class ToggleButtonScheduler : public ButtonScheduler
-{
-public:
- ToggleButtonScheduler(bool last, Trigger *button, Command *orders);
- virtual ~ToggleButtonScheduler() {}
- virtual void Execute();
-private:
- bool pressedLast;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp b/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp
deleted file mode 100644
index 55b865b..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/Trigger.cpp
+++ /dev/null
@@ -1,75 +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 "Buttons/Button.h"
-
-#include "Buttons/HeldButtonScheduler.h"
-#include "Buttons/PressedButtonScheduler.h"
-#include "Buttons/ReleasedButtonScheduler.h"
-#include "Buttons/ToggleButtonScheduler.h"
-#include "Buttons/CancelButtonScheduler.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();
-}
-
-void Trigger::CancelWhenActive(Command *command) {
- CancelButtonScheduler *cbs = new CancelButtonScheduler(Grab(), this, command);
- cbs->Start();
-}
-
-void Trigger::ToggleWhenActive(Command *command) {
- ToggleButtonScheduler *tbs = new ToggleButtonScheduler(Grab(), this, command);
- tbs->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
deleted file mode 100644
index 509fc82..0000000
--- a/aos/externals/WPILib/WPILib/Buttons/Trigger.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 __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);
- void CancelWhenActive(Command *command);
- void ToggleWhenActive(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/CAN/JaguarCANDriver.h b/aos/externals/WPILib/WPILib/CAN/JaguarCANDriver.h
deleted file mode 100644
index 171dcd6..0000000
--- a/aos/externals/WPILib/WPILib/CAN/JaguarCANDriver.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2009. 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. */
-/*----------------------------------------------------------------------------*/
-
-// JaguarCANDriver.h
-//
-// Defines the API for building a CAN Interface Plugin to support
-// PWM-cable-free CAN motor control on FRC robots. This allows you
-// to connect any CAN interface to the secure Jaguar CAN driver.
-//
-
-#ifndef __JaguarCANDriver_h__
-#define __JaguarCANDriver_h__
-
-#include <vxWorks.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- void FRC_NetworkCommunication_JaguarCANDriver_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status);
- void FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // __JaguarCANDriver_h__
diff --git a/aos/externals/WPILib/WPILib/CAN/can_proto.h b/aos/externals/WPILib/WPILib/CAN/can_proto.h
deleted file mode 100644
index 5113b02..0000000
--- a/aos/externals/WPILib/WPILib/CAN/can_proto.h
+++ /dev/null
@@ -1,428 +0,0 @@
-//*****************************************************************************
-//
-// can_proto.h - Definitions for the CAN protocol used to communicate with the
-// BDC motor controller.
-//
-// Copyright (c) 2008 Texas Instruments Incorporated. All rights reserved.
-// TI Information - Selective Disclosure
-//
-//*****************************************************************************
-
-#ifndef __CAN_PROTO_H__
-#define __CAN_PROTO_H__
-
-//*****************************************************************************
-//
-// The masks of the fields that are used in the message identifier.
-//
-//*****************************************************************************
-#define CAN_MSGID_FULL_M 0x1fffffff
-#define CAN_MSGID_DEVNO_M 0x0000003f
-#define CAN_MSGID_API_M 0x0000ffc0
-#define CAN_MSGID_MFR_M 0x00ff0000
-#define CAN_MSGID_DTYPE_M 0x1f000000
-#define CAN_MSGID_DEVNO_S 0
-#define CAN_MSGID_API_S 6
-#define CAN_MSGID_MFR_S 16
-#define CAN_MSGID_DTYPE_S 24
-
-//*****************************************************************************
-//
-// The Reserved device number values in the Message Id.
-//
-//*****************************************************************************
-#define CAN_MSGID_DEVNO_BCAST 0x00000000
-
-//*****************************************************************************
-//
-// The Reserved system control API numbers in the Message Id.
-//
-//*****************************************************************************
-#define CAN_MSGID_API_SYSHALT 0x00000000
-#define CAN_MSGID_API_SYSRST 0x00000040
-#define CAN_MSGID_API_DEVASSIGN 0x00000080
-#define CAN_MSGID_API_DEVQUERY 0x000000c0
-#define CAN_MSGID_API_HEARTBEAT 0x00000140
-#define CAN_MSGID_API_SYNC 0x00000180
-#define CAN_MSGID_API_UPDATE 0x000001c0
-#define CAN_MSGID_API_FIRMVER 0x00000200
-#define CAN_MSGID_API_ENUMERATE 0x00000240
-#define CAN_MSGID_API_SYSRESUME 0x00000280
-
-//*****************************************************************************
-//
-// The 32 bit values associated with the CAN_MSGID_API_STATUS request.
-//
-//*****************************************************************************
-#define CAN_STATUS_CODE_M 0x0000ffff
-#define CAN_STATUS_MFG_M 0x00ff0000
-#define CAN_STATUS_DTYPE_M 0x1f000000
-#define CAN_STATUS_CODE_S 0
-#define CAN_STATUS_MFG_S 16
-#define CAN_STATUS_DTYPE_S 24
-
-//*****************************************************************************
-//
-// The Reserved manufacturer identifiers in the Message Id.
-//
-//*****************************************************************************
-#define CAN_MSGID_MFR_NI 0x00010000
-#define CAN_MSGID_MFR_LM 0x00020000
-#define CAN_MSGID_MFR_DEKA 0x00030000
-
-//*****************************************************************************
-//
-// The Reserved device type identifiers in the Message Id.
-//
-//*****************************************************************************
-#define CAN_MSGID_DTYPE_BCAST 0x00000000
-#define CAN_MSGID_DTYPE_ROBOT 0x01000000
-#define CAN_MSGID_DTYPE_MOTOR 0x02000000
-#define CAN_MSGID_DTYPE_RELAY 0x03000000
-#define CAN_MSGID_DTYPE_GYRO 0x04000000
-#define CAN_MSGID_DTYPE_ACCEL 0x05000000
-#define CAN_MSGID_DTYPE_USONIC 0x06000000
-#define CAN_MSGID_DTYPE_GEART 0x07000000
-#define CAN_MSGID_DTYPE_UPDATE 0x1f000000
-
-//*****************************************************************************
-//
-// LM Motor Control API Classes API Class and ID masks.
-//
-//*****************************************************************************
-#define CAN_MSGID_API_CLASS_M 0x0000fc00
-#define CAN_MSGID_API_ID_M 0x000003c0
-
-//*****************************************************************************
-//
-// LM Motor Control API Classes in the Message Id for non-broadcast.
-// These are the upper 6 bits of the API field, the lower 4 bits determine
-// the APIId.
-//
-//*****************************************************************************
-#define CAN_API_MC_VOLTAGE 0x00000000
-#define CAN_API_MC_SPD 0x00000400
-#define CAN_API_MC_VCOMP 0x00000800
-#define CAN_API_MC_POS 0x00000c00
-#define CAN_API_MC_ICTRL 0x00001000
-#define CAN_API_MC_STATUS 0x00001400
-#define CAN_API_MC_PSTAT 0x00001800
-#define CAN_API_MC_CFG 0x00001c00
-#define CAN_API_MC_ACK 0x00002000
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Control Voltage API definitions.
-//
-//*****************************************************************************
-#define LM_API_VOLT (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_VOLTAGE)
-#define LM_API_VOLT_EN (LM_API_VOLT | (0 << CAN_MSGID_API_S))
-#define LM_API_VOLT_DIS (LM_API_VOLT | (1 << CAN_MSGID_API_S))
-#define LM_API_VOLT_SET (LM_API_VOLT | (2 << CAN_MSGID_API_S))
-#define LM_API_VOLT_SET_RAMP (LM_API_VOLT | (3 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_VOLT_T_EN (LM_API_VOLT | (4 << CAN_MSGID_API_S))
-#define LM_API_VOLT_T_SET (LM_API_VOLT | (5 << CAN_MSGID_API_S))
-#define LM_API_VOLT_T_SET_NO_ACK \
- (LM_API_VOLT | (7 << CAN_MSGID_API_S))
-//##### FIRST END #####
-#define LM_API_VOLT_SET_NO_ACK (LM_API_VOLT | (8 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Control API definitions for LM_API_VOLT_SET_RAMP.
-//
-//*****************************************************************************
-#define LM_API_VOLT_RAMP_DIS 0
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Control API definitions for CAN_MSGID_API_SYNC.
-//
-//*****************************************************************************
-#define LM_API_SYNC_PEND_NOW 0
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Speed Control API definitions.
-//
-//*****************************************************************************
-#define LM_API_SPD (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_SPD)
-#define LM_API_SPD_EN (LM_API_SPD | (0 << CAN_MSGID_API_S))
-#define LM_API_SPD_DIS (LM_API_SPD | (1 << CAN_MSGID_API_S))
-#define LM_API_SPD_SET (LM_API_SPD | (2 << CAN_MSGID_API_S))
-#define LM_API_SPD_PC (LM_API_SPD | (3 << CAN_MSGID_API_S))
-#define LM_API_SPD_IC (LM_API_SPD | (4 << CAN_MSGID_API_S))
-#define LM_API_SPD_DC (LM_API_SPD | (5 << CAN_MSGID_API_S))
-#define LM_API_SPD_REF (LM_API_SPD | (6 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_SPD_T_EN (LM_API_SPD | (7 << CAN_MSGID_API_S))
-#define LM_API_SPD_T_SET (LM_API_SPD | (8 << CAN_MSGID_API_S))
-#define LM_API_SPD_T_SET_NO_ACK (LM_API_SPD | (10 << CAN_MSGID_API_S))
-//##### FIRST END #####
-#define LM_API_SPD_SET_NO_ACK (LM_API_SPD | (11 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris Motor Control Voltage Compensation Control API definitions.
-//
-//*****************************************************************************
-#define LM_API_VCOMP (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_VCOMP)
-#define LM_API_VCOMP_EN (LM_API_VCOMP | (0 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_DIS (LM_API_VCOMP | (1 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_SET (LM_API_VCOMP | (2 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_IN_RAMP (LM_API_VCOMP | (3 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_COMP_RAMP (LM_API_VCOMP | (4 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_VCOMP_T_EN (LM_API_VCOMP | (5 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_T_SET (LM_API_VCOMP | (6 << CAN_MSGID_API_S))
-#define LM_API_VCOMP_T_SET_NO_ACK \
- (LM_API_VCOMP | (8 << CAN_MSGID_API_S))
-//##### FIRST END #####
-#define LM_API_VCOMP_SET_NO_ACK (LM_API_VCOMP | (9 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Position Control API definitions.
-//
-//*****************************************************************************
-#define LM_API_POS (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_POS)
-#define LM_API_POS_EN (LM_API_POS | (0 << CAN_MSGID_API_S))
-#define LM_API_POS_DIS (LM_API_POS | (1 << CAN_MSGID_API_S))
-#define LM_API_POS_SET (LM_API_POS | (2 << CAN_MSGID_API_S))
-#define LM_API_POS_PC (LM_API_POS | (3 << CAN_MSGID_API_S))
-#define LM_API_POS_IC (LM_API_POS | (4 << CAN_MSGID_API_S))
-#define LM_API_POS_DC (LM_API_POS | (5 << CAN_MSGID_API_S))
-#define LM_API_POS_REF (LM_API_POS | (6 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_POS_T_EN (LM_API_POS | (7 << CAN_MSGID_API_S))
-#define LM_API_POS_T_SET (LM_API_POS | (8 << CAN_MSGID_API_S))
-#define LM_API_POS_T_SET_NO_ACK (LM_API_POS | (10 << CAN_MSGID_API_S))
-//##### FIRST END #####
-#define LM_API_POS_SET_NO_ACK (LM_API_POS | (11 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Current Control API definitions.
-//
-//*****************************************************************************
-#define LM_API_ICTRL (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_ICTRL)
-#define LM_API_ICTRL_EN (LM_API_ICTRL | (0 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_DIS (LM_API_ICTRL | (1 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_SET (LM_API_ICTRL | (2 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_PC (LM_API_ICTRL | (3 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_IC (LM_API_ICTRL | (4 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_DC (LM_API_ICTRL | (5 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_ICTRL_T_EN (LM_API_ICTRL | (6 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_T_SET (LM_API_ICTRL | (7 << CAN_MSGID_API_S))
-#define LM_API_ICTRL_T_SET_NO_ACK \
- (LM_API_ICTRL | (9 << CAN_MSGID_API_S))
-//##### FIRST END #####
-#define LM_API_ICTRL_SET_NO_ACK (LM_API_ICTRL | (10 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Firmware Update API definitions.
-//
-//*****************************************************************************
-#define LM_API_UPD (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_UPDATE)
-#define LM_API_UPD_PING (LM_API_UPD | (0 << CAN_MSGID_API_S))
-#define LM_API_UPD_DOWNLOAD (LM_API_UPD | (1 << CAN_MSGID_API_S))
-#define LM_API_UPD_SEND_DATA (LM_API_UPD | (2 << CAN_MSGID_API_S))
-#define LM_API_UPD_RESET (LM_API_UPD | (3 << CAN_MSGID_API_S))
-#define LM_API_UPD_ACK (LM_API_UPD | (4 << CAN_MSGID_API_S))
-#define LM_API_HWVER (LM_API_UPD | (5 << CAN_MSGID_API_S))
-#define LM_API_UPD_REQUEST (LM_API_UPD | (6 << CAN_MSGID_API_S))
-//##### FIRST BEGIN #####
-#define LM_API_UNTRUST_EN (LM_API_UPD | (11 << CAN_MSGID_API_S))
-#define LM_API_TRUST_EN (LM_API_UPD | (12 << CAN_MSGID_API_S))
-#define LM_API_TRUST_HEARTBEAT (LM_API_UPD | (13 << CAN_MSGID_API_S))
-//##### FIRST END #####
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Status API definitions.
-//
-//*****************************************************************************
-#define LM_API_STATUS (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_STATUS)
-#define LM_API_STATUS_VOLTOUT (LM_API_STATUS | (0 << CAN_MSGID_API_S))
-#define LM_API_STATUS_VOLTBUS (LM_API_STATUS | (1 << CAN_MSGID_API_S))
-#define LM_API_STATUS_CURRENT (LM_API_STATUS | (2 << CAN_MSGID_API_S))
-#define LM_API_STATUS_TEMP (LM_API_STATUS | (3 << CAN_MSGID_API_S))
-#define LM_API_STATUS_POS (LM_API_STATUS | (4 << CAN_MSGID_API_S))
-#define LM_API_STATUS_SPD (LM_API_STATUS | (5 << CAN_MSGID_API_S))
-#define LM_API_STATUS_LIMIT (LM_API_STATUS | (6 << CAN_MSGID_API_S))
-#define LM_API_STATUS_FAULT (LM_API_STATUS | (7 << CAN_MSGID_API_S))
-#define LM_API_STATUS_POWER (LM_API_STATUS | (8 << CAN_MSGID_API_S))
-#define LM_API_STATUS_CMODE (LM_API_STATUS | (9 << CAN_MSGID_API_S))
-#define LM_API_STATUS_VOUT (LM_API_STATUS | (10 << CAN_MSGID_API_S))
-#define LM_API_STATUS_STKY_FLT (LM_API_STATUS | (11 << CAN_MSGID_API_S))
-#define LM_API_STATUS_FLT_COUNT (LM_API_STATUS | (12 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// These definitions are used with the byte that is returned from
-// the status request for LM_API_STATUS_LIMIT.
-//
-//*****************************************************************************
-#define LM_STATUS_LIMIT_FWD 0x01
-#define LM_STATUS_LIMIT_REV 0x02
-#define LM_STATUS_LIMIT_SFWD 0x04
-#define LM_STATUS_LIMIT_SREV 0x08
-#define LM_STATUS_LIMIT_STKY_FWD \
- 0x10
-#define LM_STATUS_LIMIT_STKY_REV \
- 0x20
-#define LM_STATUS_LIMIT_STKY_SFWD \
- 0x40
-#define LM_STATUS_LIMIT_STKY_SREV \
- 0x80
-
-//*****************************************************************************
-//
-// LM Motor Control status codes returned due to the CAN_STATUS_CODE_M field.
-//
-//*****************************************************************************
-#define LM_STATUS_FAULT_ILIMIT 0x01
-#define LM_STATUS_FAULT_TLIMIT 0x02
-#define LM_STATUS_FAULT_VLIMIT 0x04
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Configuration API definitions.
-//
-//*****************************************************************************
-#define LM_API_CFG (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_CFG)
-#define LM_API_CFG_NUM_BRUSHES (LM_API_CFG | (0 << CAN_MSGID_API_S))
-#define LM_API_CFG_ENC_LINES (LM_API_CFG | (1 << CAN_MSGID_API_S))
-#define LM_API_CFG_POT_TURNS (LM_API_CFG | (2 << CAN_MSGID_API_S))
-#define LM_API_CFG_BRAKE_COAST (LM_API_CFG | (3 << CAN_MSGID_API_S))
-#define LM_API_CFG_LIMIT_MODE (LM_API_CFG | (4 << CAN_MSGID_API_S))
-#define LM_API_CFG_LIMIT_FWD (LM_API_CFG | (5 << CAN_MSGID_API_S))
-#define LM_API_CFG_LIMIT_REV (LM_API_CFG | (6 << CAN_MSGID_API_S))
-#define LM_API_CFG_MAX_VOUT (LM_API_CFG | (7 << CAN_MSGID_API_S))
-#define LM_API_CFG_FAULT_TIME (LM_API_CFG | (8 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The Stellaris ACK API definition.
-//
-//*****************************************************************************
-#define LM_API_ACK (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_ACK)
-
-//*****************************************************************************
-//
-// The 8 bit values that can be returned by a call to LM_API_STATUS_HWVER.
-//
-//*****************************************************************************
-#define LM_HWVER_UNKNOWN 0x00
-#define LM_HWVER_JAG_1_0 0x01
-#define LM_HWVER_JAG_2_0 0x02
-
-//*****************************************************************************
-//
-// The 8 bit values that can be returned by a call to LM_API_STATUS_CMODE.
-//
-//*****************************************************************************
-#define LM_STATUS_CMODE_VOLT 0x00
-#define LM_STATUS_CMODE_CURRENT 0x01
-#define LM_STATUS_CMODE_SPEED 0x02
-#define LM_STATUS_CMODE_POS 0x03
-#define LM_STATUS_CMODE_VCOMP 0x04
-
-//*****************************************************************************
-//
-// The values that can specified as the position or speed reference. Not all
-// values are valid for each reference; if an invalid reference is set, then
-// none will be selected.
-//
-//*****************************************************************************
-#define LM_REF_ENCODER 0x00
-#define LM_REF_POT 0x01
-#define LM_REF_INV_ENCODER 0x02
-#define LM_REF_QUAD_ENCODER 0x03
-#define LM_REF_NONE 0xff
-
-//*****************************************************************************
-//
-// The flags that are used to indicate the currently active fault sources.
-//
-//*****************************************************************************
-#define LM_FAULT_CURRENT 0x01
-#define LM_FAULT_TEMP 0x02
-#define LM_FAULT_VBUS 0x04
-#define LM_FAULT_GATE_DRIVE 0x08
-#define LM_FAULT_COMM 0x10
-
-//*****************************************************************************
-//
-// The Stellaris Motor Class Periodic Status API definitions.
-//
-//*****************************************************************************
-#define LM_API_PSTAT (CAN_MSGID_MFR_LM | CAN_MSGID_DTYPE_MOTOR | \
- CAN_API_MC_PSTAT)
-#define LM_API_PSTAT_PER_EN_S0 (LM_API_PSTAT | (0 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_PER_EN_S1 (LM_API_PSTAT | (1 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_PER_EN_S2 (LM_API_PSTAT | (2 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_PER_EN_S3 (LM_API_PSTAT | (3 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_CFG_S0 (LM_API_PSTAT | (4 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_CFG_S1 (LM_API_PSTAT | (5 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_CFG_S2 (LM_API_PSTAT | (6 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_CFG_S3 (LM_API_PSTAT | (7 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_DATA_S0 (LM_API_PSTAT | (8 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_DATA_S1 (LM_API_PSTAT | (9 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_DATA_S2 (LM_API_PSTAT | (10 << CAN_MSGID_API_S))
-#define LM_API_PSTAT_DATA_S3 (LM_API_PSTAT | (11 << CAN_MSGID_API_S))
-
-//*****************************************************************************
-//
-// The values that can be used to configure the data the Periodic Status
-// Message bytes. Bytes of a multi-byte data values are encoded as
-// little-endian, therefore B0 is the least significant byte.
-//
-//*****************************************************************************
-#define LM_PSTAT_END 0
-#define LM_PSTAT_VOLTOUT_B0 1
-#define LM_PSTAT_VOLTOUT_B1 2
-#define LM_PSTAT_VOLTBUS_B0 3
-#define LM_PSTAT_VOLTBUS_B1 4
-#define LM_PSTAT_CURRENT_B0 5
-#define LM_PSTAT_CURRENT_B1 6
-#define LM_PSTAT_TEMP_B0 7
-#define LM_PSTAT_TEMP_B1 8
-#define LM_PSTAT_POS_B0 9
-#define LM_PSTAT_POS_B1 10
-#define LM_PSTAT_POS_B2 11
-#define LM_PSTAT_POS_B3 12
-#define LM_PSTAT_SPD_B0 13
-#define LM_PSTAT_SPD_B1 14
-#define LM_PSTAT_SPD_B2 15
-#define LM_PSTAT_SPD_B3 16
-#define LM_PSTAT_LIMIT_NCLR 17
-#define LM_PSTAT_LIMIT_CLR 18
-#define LM_PSTAT_FAULT 19
-#define LM_PSTAT_STKY_FLT_NCLR 20
-#define LM_PSTAT_STKY_FLT_CLR 21
-#define LM_PSTAT_VOUT_B0 22
-#define LM_PSTAT_VOUT_B1 23
-#define LM_PSTAT_FLT_COUNT_CURRENT \
- 24
-#define LM_PSTAT_FLT_COUNT_TEMP 25
-#define LM_PSTAT_FLT_COUNT_VOLTBUS \
- 26
-#define LM_PSTAT_FLT_COUNT_GATE 27
-#define LM_PSTAT_FLT_COUNT_COMM 28
-#define LM_PSTAT_CANSTS 29
-#define LM_PSTAT_CANERR_B0 30
-#define LM_PSTAT_CANERR_B1 31
-
-#endif // __CAN_PROTO_H__
diff --git a/aos/externals/WPILib/WPILib/CANJaguar.cpp b/aos/externals/WPILib/WPILib/CANJaguar.cpp
deleted file mode 100644
index bafa8a1..0000000
--- a/aos/externals/WPILib/WPILib/CANJaguar.cpp
+++ /dev/null
@@ -1,1276 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2009. 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 "CANJaguar.h"
-#define tNIRIO_i32 int
-#include "ChipObject/NiFpga.h"
-#include "CAN/JaguarCANDriver.h"
-#include "CAN/can_proto.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include <stdio.h>
-#include "LiveWindow/LiveWindow.h"
-
-#define swap16(x) ( (((x)>>8) &0x00FF) \
- | (((x)<<8) &0xFF00) )
-#define swap32(x) ( (((x)>>24)&0x000000FF) \
- | (((x)>>8) &0x0000FF00) \
- | (((x)<<8) &0x00FF0000) \
- | (((x)<<24)&0xFF000000) )
-
-#define kFullMessageIDMask (CAN_MSGID_API_M | CAN_MSGID_MFR_M | CAN_MSGID_DTYPE_M)
-
-const int32_t CANJaguar::kControllerRate;
-constexpr double CANJaguar::kApproxBusVoltage;
-
-/**
- * Common initialization code called by all constructors.
- */
-void CANJaguar::InitCANJaguar()
-{
- m_table = NULL;
- m_transactionSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
- if (m_deviceNumber < 1 || m_deviceNumber > 63)
- {
- char buf[256];
- snprintf(buf, 256, "device number \"%d\" must be between 1 and 63", m_deviceNumber);
- wpi_setWPIErrorWithContext(ParameterOutOfRange, buf);
- return;
- }
- uint32_t fwVer = GetFirmwareVersion();
- if (StatusIsFatal())
- return;
- // 3330 was the first shipping RDK firmware version for the Jaguar
- if (fwVer >= 3330 || fwVer < 101)
- {
- char buf[256];
- if (fwVer < 3330)
- {
- snprintf(buf, 256, "Jag #%d firmware (%d) is too old (must be at least version 101 of the FIRST approved firmware)", m_deviceNumber, fwVer);
- }
- else
- {
- snprintf(buf, 256, "Jag #%d firmware (%d) is not FIRST approved (must be at least version 101 of the FIRST approved firmware)", m_deviceNumber, fwVer);
- }
- wpi_setWPIErrorWithContext(JaguarVersionError, buf);
- return;
- }
- switch (m_controlMode)
- {
- case kPercentVbus:
- case kVoltage:
- // No additional configuration required... start enabled.
- EnableControl();
- break;
- default:
- break;
- }
- m_safetyHelper = new MotorSafetyHelper(this);
-
- nUsageReporting::report(nUsageReporting::kResourceType_CANJaguar, m_deviceNumber, m_controlMode);
- LiveWindow::GetInstance()->AddActuator("CANJaguar", m_deviceNumber, 0, this);
-}
-
-/**
- * Constructor
- *
- * @param deviceNumber The the address of the Jaguar on the CAN bus.
- */
-CANJaguar::CANJaguar(uint8_t deviceNumber, ControlMode controlMode)
- : m_deviceNumber (deviceNumber)
- , m_controlMode (controlMode)
- , m_transactionSemaphore (NULL)
- , m_maxOutputVoltage (kApproxBusVoltage)
- , m_safetyHelper (NULL)
-{
- InitCANJaguar();
-}
-
-CANJaguar::~CANJaguar()
-{
- delete m_safetyHelper;
- m_safetyHelper = NULL;
- semDelete(m_transactionSemaphore);
- m_transactionSemaphore = NULL;
-}
-
-/**
- * Set the output set-point value.
- *
- * The scale and the units depend on the mode the Jaguar is in.
- * In PercentVbus Mode, the outputValue is from -1.0 to 1.0 (same as PWM Jaguar).
- * In Voltage Mode, the outputValue is in Volts.
- * In Current Mode, the outputValue is in Amps.
- * In Speed Mode, the outputValue is in Rotations/Minute.
- * In Position Mode, the outputValue is in Rotations.
- *
- * @param outputValue The set-point to sent to the motor controller.
- * @param syncGroup The update group to add this Set() to, pending UpdateSyncGroup(). If 0, update immediately.
- */
-void CANJaguar::Set(float outputValue, uint8_t syncGroup)
-{
- uint32_t messageID;
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- if (m_safetyHelper && !m_safetyHelper->IsAlive())
- {
- EnableControl();
- }
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- {
- messageID = LM_API_VOLT_T_SET;
- if (outputValue > 1.0) outputValue = 1.0;
- if (outputValue < -1.0) outputValue = -1.0;
- dataSize = packPercentage(dataBuffer, outputValue);
- }
- break;
- case kSpeed:
- {
- messageID = LM_API_SPD_T_SET;
- dataSize = packFXP16_16(dataBuffer, outputValue);
- }
- break;
- case kPosition:
- {
- messageID = LM_API_POS_T_SET;
- dataSize = packFXP16_16(dataBuffer, outputValue);
- }
- break;
- case kCurrent:
- {
- messageID = LM_API_ICTRL_T_SET;
- dataSize = packFXP8_8(dataBuffer, outputValue);
- }
- break;
- case kVoltage:
- {
- messageID = LM_API_VCOMP_T_SET;
- dataSize = packFXP8_8(dataBuffer, outputValue);
- }
- break;
- default:
- return;
- }
- if (syncGroup != 0)
- {
- dataBuffer[dataSize] = syncGroup;
- dataSize++;
- }
- setTransaction(messageID, dataBuffer, dataSize);
- if (m_safetyHelper) m_safetyHelper->Feed();
-}
-
-/**
- * Get the recently set outputValue setpoint.
- *
- * The scale and the units depend on the mode the Jaguar is in.
- * In PercentVbus Mode, the outputValue is from -1.0 to 1.0 (same as PWM Jaguar).
- * In Voltage Mode, the outputValue is in Volts.
- * In Current Mode, the outputValue is in Amps.
- * In Speed Mode, the outputValue is in Rotations/Minute.
- * In Position Mode, the outputValue is in Rotations.
- *
- * @return The most recently set outputValue setpoint.
- */
-float CANJaguar::Get()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- getTransaction(LM_API_VOLT_SET, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackPercentage(dataBuffer);
- }
- break;
- case kSpeed:
- getTransaction(LM_API_SPD_SET, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kPosition:
- getTransaction(LM_API_POS_SET, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kCurrent:
- getTransaction(LM_API_ICTRL_SET, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- break;
- case kVoltage:
- getTransaction(LM_API_VCOMP_SET, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- break;
- }
- return 0.0;
-}
-
-/**
- * Common interface for disabling a motor.
- *
- * @deprecated Call DisableControl instead.
- */
-void CANJaguar::Disable()
-{
- DisableControl();
-}
-
-/**
- * Write out the PID value as seen in the PIDOutput base object.
- *
- * @deprecated Call Set instead.
- *
- * @param output Write out the PercentVbus value as was computed by the PIDController
- */
-void CANJaguar::PIDWrite(float output)
-{
- if (m_controlMode == kPercentVbus)
- {
- Set(output);
- }
- else
- {
- wpi_setWPIErrorWithContext(IncompatibleMode, "PID only supported in PercentVbus mode");
- }
-}
-
-uint8_t CANJaguar::packPercentage(uint8_t *buffer, double value)
-{
- int16_t intValue = (int16_t)(value * 32767.0);
- *((int16_t*)buffer) = swap16(intValue);
- return sizeof(int16_t);
-}
-
-uint8_t CANJaguar::packFXP8_8(uint8_t *buffer, double value)
-{
- int16_t intValue = (int16_t)(value * 256.0);
- *((int16_t*)buffer) = swap16(intValue);
- return sizeof(int16_t);
-}
-
-uint8_t CANJaguar::packFXP16_16(uint8_t *buffer, double value)
-{
- int32_t intValue = (int32_t)(value * 65536.0);
- *((int32_t*)buffer) = swap32(intValue);
- return sizeof(int32_t);
-}
-
-uint8_t CANJaguar::packint16_t(uint8_t *buffer, int16_t value)
-{
- *((int16_t*)buffer) = swap16(value);
- return sizeof(int16_t);
-}
-
-uint8_t CANJaguar::packint32_t(uint8_t *buffer, int32_t value)
-{
- *((int32_t*)buffer) = swap32(value);
- return sizeof(int32_t);
-}
-
-double CANJaguar::unpackPercentage(uint8_t *buffer)
-{
- int16_t value = *((int16_t*)buffer);
- value = swap16(value);
- return value / 32767.0;
-}
-
-double CANJaguar::unpackFXP8_8(uint8_t *buffer)
-{
- int16_t value = *((int16_t*)buffer);
- value = swap16(value);
- return value / 256.0;
-}
-
-double CANJaguar::unpackFXP16_16(uint8_t *buffer)
-{
- int32_t value = *((int32_t*)buffer);
- value = swap32(value);
- return value / 65536.0;
-}
-
-int16_t CANJaguar::unpackint16_t(uint8_t *buffer)
-{
- int16_t value = *((int16_t*)buffer);
- return swap16(value);
-}
-
-int32_t CANJaguar::unpackint32_t(uint8_t *buffer)
-{
- int32_t value = *((int32_t*)buffer);
- return swap32(value);
-}
-
-/**
- * Send a message on the CAN bus through the CAN driver in FRC_NetworkCommunication
- *
- * Trusted messages require a 2-byte token at the beginning of the data payload.
- * If the message being sent is trusted, make space for the token.
- *
- * @param messageID The messageID to be used on the CAN bus
- * @param data The up to 8 bytes of data to be sent with the message
- * @param dataSize Specify how much of the data in "data" to send
- * @return Status of send call
- */
-int32_t CANJaguar::sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize)
-{
- static const uint32_t kTrustedMessages[] = {
- LM_API_VOLT_T_EN, LM_API_VOLT_T_SET, LM_API_SPD_T_EN, LM_API_SPD_T_SET,
- LM_API_VCOMP_T_EN, LM_API_VCOMP_T_SET, LM_API_POS_T_EN, LM_API_POS_T_SET,
- LM_API_ICTRL_T_EN, LM_API_ICTRL_T_SET};
- int32_t status=0;
-
- for (uint8_t i=0; i<(sizeof(kTrustedMessages)/sizeof(kTrustedMessages[0])); i++)
- {
- if ((kFullMessageIDMask & messageID) == kTrustedMessages[i])
- {
- uint8_t dataBuffer[8];
- dataBuffer[0] = 0;
- dataBuffer[1] = 0;
- // Make sure the data will still fit after adjusting for the token.
- if (dataSize > 6)
- {
- // TODO: I would rather this not have to set the global error
- wpi_setGlobalWPIErrorWithContext(ParameterOutOfRange, "dataSize > 6");
- return 0;
- }
- for (uint8_t j=0; j < dataSize; j++)
- {
- dataBuffer[j + 2] = data[j];
- }
- FRC_NetworkCommunication_JaguarCANDriver_sendMessage(messageID, dataBuffer, dataSize + 2, &status);
- return status;
- }
- }
- FRC_NetworkCommunication_JaguarCANDriver_sendMessage(messageID, data, dataSize, &status);
- return status;
-}
-
-/**
- * Receive a message from the CAN bus through the CAN driver in FRC_NetworkCommunication
- *
- * @param messageID The messageID to read from the CAN bus
- * @param data The up to 8 bytes of data that was received with the message
- * @param dataSize Indicates how much data was received
- * @param timeout Specify how long to wait for a message (in seconds)
- * @return Status of receive call
- */
-int32_t CANJaguar::receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, float timeout)
-{
- int32_t status = 0;
- FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(messageID, data, dataSize,
- (uint32_t)(timeout * 1000), &status);
- return status;
-}
-
-/**
- * Execute a transaction with a Jaguar that sets some property.
- *
- * Jaguar always acks when it receives a message. If we don't wait for an ack,
- * the message object in the Jaguar could get overwritten before it is handled.
- *
- * @param messageID The messageID to be used on the CAN bus (device number is added internally)
- * @param data The up to 8 bytes of data to be sent with the message
- * @param dataSize Specify how much of the data in "data" to send
- */
-void CANJaguar::setTransaction(uint32_t messageID, const uint8_t *data, uint8_t dataSize)
-{
- uint32_t ackMessageID = LM_API_ACK | m_deviceNumber;
- int32_t localStatus = 0;
-
- // If there was an error on this object and it wasn't a timeout, refuse to talk to the device
- // Call ClearError() on the object to try again
- if (StatusIsFatal() && GetError().GetCode() != -44087)
- return;
-
- // Make sure we don't have more than one transaction with the same Jaguar outstanding.
- semTake(m_transactionSemaphore, WAIT_FOREVER);
-
- // Throw away any stale acks.
- receiveMessage(&ackMessageID, NULL, 0, 0.0f);
- // Send the message with the data.
- localStatus = sendMessage(messageID | m_deviceNumber, data, dataSize);
- wpi_setErrorWithContext(localStatus, "sendMessage");
- // Wait for an ack.
- localStatus = receiveMessage(&ackMessageID, NULL, 0);
- wpi_setErrorWithContext(localStatus, "receiveMessage");
-
- // Transaction complete.
- semGive(m_transactionSemaphore);
-}
-
-/**
- * Execute a transaction with a Jaguar that gets some property.
- *
- * Jaguar always generates a message with the same message ID when replying.
- *
- * @param messageID The messageID to read from the CAN bus (device number is added internally)
- * @param data The up to 8 bytes of data that was received with the message
- * @param dataSize Indicates how much data was received
- */
-void CANJaguar::getTransaction(uint32_t messageID, uint8_t *data, uint8_t *dataSize)
-{
- uint32_t targetedMessageID = messageID | m_deviceNumber;
- int32_t localStatus = 0;
-
- // If there was an error on this object and it wasn't a timeout, refuse to talk to the device
- // Call ClearError() on the object to try again
- if (StatusIsFatal() && GetError().GetCode() != -44087)
- {
- if (dataSize != NULL)
- *dataSize = 0;
- return;
- }
-
- // Make sure we don't have more than one transaction with the same Jaguar outstanding.
- semTake(m_transactionSemaphore, WAIT_FOREVER);
-
- // Throw away any stale responses.
- receiveMessage(&targetedMessageID, NULL, 0, 0.0f);
- // Send the message requesting data.
- localStatus = sendMessage(targetedMessageID, NULL, 0);
- wpi_setErrorWithContext(localStatus, "sendMessage");
- // Caller may have set bit31 for remote frame transmission so clear invalid bits[31-29]
- targetedMessageID &= 0x1FFFFFFF;
- // Wait for the data.
- localStatus = receiveMessage(&targetedMessageID, data, dataSize);
- wpi_setErrorWithContext(localStatus, "receiveMessage");
-
- // Transaction complete.
- semGive(m_transactionSemaphore);
-}
-
-/**
- * Set the reference source device for speed controller mode.
- *
- * Choose encoder as the source of speed feedback when in speed control mode.
- *
- * @param reference Specify a SpeedReference.
- */
-void CANJaguar::SetSpeedReference(SpeedReference reference)
-{
- uint8_t dataBuffer[8];
-
- dataBuffer[0] = reference;
- setTransaction(LM_API_SPD_REF, dataBuffer, sizeof(uint8_t));
-}
-
-/**
- * Get the reference source device for speed controller mode.
- *
- * @return A SpeedReference indicating the currently selected reference device for speed controller mode.
- */
-CANJaguar::SpeedReference CANJaguar::GetSpeedReference()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_SPD_REF, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t))
- {
- return (SpeedReference)*dataBuffer;
- }
- return kSpeedRef_None;
-}
-
-/**
- * Set the reference source device for position controller mode.
- *
- * Choose between using and encoder and using a potentiometer
- * as the source of position feedback when in position control mode.
- *
- * @param reference Specify a PositionReference.
- */
-void CANJaguar::SetPositionReference(PositionReference reference)
-{
- uint8_t dataBuffer[8];
-
- dataBuffer[0] = reference;
- setTransaction(LM_API_POS_REF, dataBuffer, sizeof(uint8_t));
-}
-
-/**
- * Get the reference source device for position controller mode.
- *
- * @return A PositionReference indicating the currently selected reference device for position controller mode.
- */
-CANJaguar::PositionReference CANJaguar::GetPositionReference()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_POS_REF, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t))
- {
- return (PositionReference)*dataBuffer;
- }
- return kPosRef_None;
-}
-
-/**
- * Set the P, I, and D constants for the closed loop modes.
- *
- * @param p The proportional gain of the Jaguar's PID controller.
- * @param i The integral gain of the Jaguar's PID controller.
- * @param d The differential gain of the Jaguar's PID controller.
- */
-void CANJaguar::SetPID(double p, double i, double d)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- case kVoltage:
- wpi_setWPIErrorWithContext(IncompatibleMode, "PID constants only apply in Speed, Position, and Current mode");
- break;
- case kSpeed:
- dataSize = packFXP16_16(dataBuffer, p);
- setTransaction(LM_API_SPD_PC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, i);
- setTransaction(LM_API_SPD_IC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, d);
- setTransaction(LM_API_SPD_DC, dataBuffer, dataSize);
- break;
- case kPosition:
- dataSize = packFXP16_16(dataBuffer, p);
- setTransaction(LM_API_POS_PC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, i);
- setTransaction(LM_API_POS_IC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, d);
- setTransaction(LM_API_POS_DC, dataBuffer, dataSize);
- break;
- case kCurrent:
- dataSize = packFXP16_16(dataBuffer, p);
- setTransaction(LM_API_ICTRL_PC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, i);
- setTransaction(LM_API_ICTRL_IC, dataBuffer, dataSize);
- dataSize = packFXP16_16(dataBuffer, d);
- setTransaction(LM_API_ICTRL_DC, dataBuffer, dataSize);
- break;
- }
-}
-
-/**
- * Get the Proportional gain of the controller.
- *
- * @return The proportional gain.
- */
-double CANJaguar::GetP()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- case kVoltage:
- wpi_setWPIErrorWithContext(IncompatibleMode, "PID constants only apply in Speed, Position, and Current mode");
- break;
- case kSpeed:
- getTransaction(LM_API_SPD_PC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kPosition:
- getTransaction(LM_API_POS_PC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kCurrent:
- getTransaction(LM_API_ICTRL_PC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- }
- return 0.0;
-}
-
-/**
- * Get the Intregral gain of the controller.
- *
- * @return The integral gain.
- */
-double CANJaguar::GetI()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- case kVoltage:
- wpi_setWPIErrorWithContext(IncompatibleMode, "PID constants only apply in Speed, Position, and Current mode");
- break;
- case kSpeed:
- getTransaction(LM_API_SPD_IC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kPosition:
- getTransaction(LM_API_POS_IC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kCurrent:
- getTransaction(LM_API_ICTRL_IC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- }
- return 0.0;
-}
-
-/**
- * Get the Differential gain of the controller.
- *
- * @return The differential gain.
- */
-double CANJaguar::GetD()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- case kVoltage:
- wpi_setWPIErrorWithContext(IncompatibleMode, "PID constants only apply in Speed, Position, and Current mode");
- break;
- case kSpeed:
- getTransaction(LM_API_SPD_DC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kPosition:
- getTransaction(LM_API_POS_DC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- case kCurrent:
- getTransaction(LM_API_ICTRL_DC, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- break;
- }
- return 0.0;
-}
-
-/**
- * Enable the closed loop controller.
- *
- * Start actually controlling the output based on the feedback.
- * If starting a position controller with an encoder reference,
- * use the encoderInitialPosition parameter to initialize the
- * encoder state.
- *
- * @param encoderInitialPosition Encoder position to set if position with encoder reference. Ignored otherwise.
- */
-void CANJaguar::EnableControl(double encoderInitialPosition)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize = 0;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- setTransaction(LM_API_VOLT_T_EN, dataBuffer, dataSize);
- break;
- case kSpeed:
- setTransaction(LM_API_SPD_T_EN, dataBuffer, dataSize);
- break;
- case kPosition:
- dataSize = packFXP16_16(dataBuffer, encoderInitialPosition);
- setTransaction(LM_API_POS_T_EN, dataBuffer, dataSize);
- break;
- case kCurrent:
- setTransaction(LM_API_ICTRL_T_EN, dataBuffer, dataSize);
- break;
- case kVoltage:
- setTransaction(LM_API_VCOMP_T_EN, dataBuffer, dataSize);
- break;
- }
-}
-
-/**
- * Disable the closed loop controller.
- *
- * Stop driving the output based on the feedback.
- */
-void CANJaguar::DisableControl()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize = 0;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- setTransaction(LM_API_VOLT_DIS, dataBuffer, dataSize);
- break;
- case kSpeed:
- setTransaction(LM_API_SPD_DIS, dataBuffer, dataSize);
- break;
- case kPosition:
- setTransaction(LM_API_POS_DIS, dataBuffer, dataSize);
- break;
- case kCurrent:
- setTransaction(LM_API_ICTRL_DIS, dataBuffer, dataSize);
- break;
- case kVoltage:
- setTransaction(LM_API_VCOMP_DIS, dataBuffer, dataSize);
- break;
- }
-}
-
-/**
- * Change the control mode of this Jaguar object.
- *
- * After changing modes, configure any PID constants or other settings needed
- * and then EnableControl() to actually change the mode on the Jaguar.
- *
- * @param controlMode The new mode.
- */
-void CANJaguar::ChangeControlMode(ControlMode controlMode)
-{
- // Disable the previous mode
- DisableControl();
-
- // Update the local mode
- m_controlMode = controlMode;
-
- nUsageReporting::report(nUsageReporting::kResourceType_CANJaguar, m_deviceNumber, m_controlMode);
-}
-
-/**
- * Get the active control mode from the Jaguar.
- *
- * Ask the Jag what mode it is in.
- *
- * @return ControlMode that the Jag is in.
- */
-CANJaguar::ControlMode CANJaguar::GetControlMode()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_CMODE, dataBuffer, &dataSize);
- if (dataSize == sizeof(int8_t))
- {
- return (ControlMode)dataBuffer[0];
- }
- return kPercentVbus;
-}
-
-/**
- * Get the voltage at the battery input terminals of the Jaguar.
- *
- * @return The bus voltage in Volts.
- */
-float CANJaguar::GetBusVoltage()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_VOLTBUS, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the voltage being output from the motor terminals of the Jaguar.
- *
- * @return The output voltage in Volts.
- */
-float CANJaguar::GetOutputVoltage()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- // Read the volt out which is in Volts units.
- getTransaction(LM_API_STATUS_VOUT, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the current through the motor terminals of the Jaguar.
- *
- * @return The output current in Amps.
- */
-float CANJaguar::GetOutputCurrent()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_CURRENT, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the internal temperature of the Jaguar.
- *
- * @return The temperature of the Jaguar in degrees Celsius.
- */
-float CANJaguar::GetTemperature()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_TEMP, dataBuffer, &dataSize);
- if (dataSize == sizeof(int16_t))
- {
- return unpackFXP8_8(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the position of the encoder or potentiometer.
- *
- * @return The position of the motor in rotations based on the configured feedback.
- */
-double CANJaguar::GetPosition()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_POS, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the speed of the encoder.
- *
- * @return The speed of the motor in RPM based on the configured feedback.
- */
-double CANJaguar::GetSpeed()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_SPD, dataBuffer, &dataSize);
- if (dataSize == sizeof(int32_t))
- {
- return unpackFXP16_16(dataBuffer);
- }
- return 0.0;
-}
-
-/**
- * Get the status of the forward limit switch.
- *
- * @return The motor is allowed to turn in the forward direction when true.
- */
-bool CANJaguar::GetForwardLimitOK()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_LIMIT, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t))
- {
- return (*dataBuffer & kForwardLimit) != 0;
- }
- return 0;
-}
-
-/**
- * Get the status of the reverse limit switch.
- *
- * @return The motor is allowed to turn in the reverse direction when true.
- */
-bool CANJaguar::GetReverseLimitOK()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_LIMIT, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t))
- {
- return (*dataBuffer & kReverseLimit) != 0;
- }
- return 0;
-}
-
-/**
- * Get the status of any faults the Jaguar has detected.
- *
- * @return A bit-mask of faults defined by the "Faults" enum.
- */
-uint16_t CANJaguar::GetFaults()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_FAULT, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint16_t))
- {
- return unpackint16_t(dataBuffer);
- }
- return 0;
-}
-
-/**
- * Check if the Jaguar's power has been cycled since this was last called.
- *
- * This should return true the first time called after a Jaguar power up,
- * and false after that.
- *
- * @return The Jaguar was power cycled since the last call to this function.
- */
-bool CANJaguar::GetPowerCycled()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_STATUS_POWER, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t))
- {
- bool powerCycled = (*dataBuffer != 0);
-
- // Clear the power cycled bit now that we've accessed it
- if (powerCycled)
- {
- dataBuffer[0] = 1;
- setTransaction(LM_API_STATUS_POWER, dataBuffer, sizeof(uint8_t));
- }
-
- return powerCycled;
- }
- return 0;
-}
-
-/**
- * Set the maximum voltage change rate.
- *
- * When in PercentVbus or Voltage output mode, the rate at which the voltage changes can
- * be limited to reduce current spikes. Set this to 0.0 to disable rate limiting.
- *
- * @param rampRate The maximum rate of voltage change in Percent Voltage mode in V/s.
- */
-void CANJaguar::SetVoltageRampRate(double rampRate)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- switch(m_controlMode)
- {
- case kPercentVbus:
- dataSize = packPercentage(dataBuffer, rampRate / (m_maxOutputVoltage * kControllerRate));
- setTransaction(LM_API_VOLT_SET_RAMP, dataBuffer, dataSize);
- break;
- case kVoltage:
- dataSize = packFXP8_8(dataBuffer, rampRate / kControllerRate);
- setTransaction(LM_API_VCOMP_IN_RAMP, dataBuffer, dataSize);
- break;
- default:
- return;
- }
-}
-
-/**
- * Get the version of the firmware running on the Jaguar.
- *
- * @return The firmware version. 0 if the device did not respond.
- */
-uint32_t CANJaguar::GetFirmwareVersion()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- // Set the MSB to tell the 2CAN that this is a remote message.
- getTransaction(0x80000000 | CAN_MSGID_API_FIRMVER, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint32_t))
- {
- return unpackint32_t(dataBuffer);
- }
- return 0;
-}
-
-/**
- * Get the version of the Jaguar hardware.
- *
- * @return The hardware version. 1: Jaguar, 2: Black Jaguar
- */
-uint8_t CANJaguar::GetHardwareVersion()
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- getTransaction(LM_API_HWVER, dataBuffer, &dataSize);
- if (dataSize == sizeof(uint8_t)+sizeof(uint8_t))
- {
- if (*dataBuffer == m_deviceNumber)
- {
- return *(dataBuffer+1);
- }
- }
- // Assume Gray Jag if there is no response
- return LM_HWVER_JAG_1_0;
-}
-
-/**
- * Configure what the controller does to the H-Bridge when neutral (not driving the output).
- *
- * This allows you to override the jumper configuration for brake or coast.
- *
- * @param mode Select to use the jumper setting or to override it to coast or brake.
- */
-void CANJaguar::ConfigNeutralMode(NeutralMode mode)
-{
- uint8_t dataBuffer[8];
-
- dataBuffer[0] = mode;
- setTransaction(LM_API_CFG_BRAKE_COAST, dataBuffer, sizeof(uint8_t));
-}
-
-/**
- * Configure how many codes per revolution are generated by your encoder.
- *
- * @param codesPerRev The number of counts per revolution in 1X mode.
- */
-void CANJaguar::ConfigEncoderCodesPerRev(uint16_t codesPerRev)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- dataSize = packint16_t(dataBuffer, codesPerRev);
- setTransaction(LM_API_CFG_ENC_LINES, dataBuffer, dataSize);
-}
-
-/**
- * Configure the number of turns on the potentiometer.
- *
- * There is no special support for continuous turn potentiometers.
- * Only integer numbers of turns are supported.
- *
- * @param turns The number of turns of the potentiometer
- */
-void CANJaguar::ConfigPotentiometerTurns(uint16_t turns)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- dataSize = packint16_t(dataBuffer, turns);
- setTransaction(LM_API_CFG_POT_TURNS, dataBuffer, dataSize);
-}
-
-/**
- * Configure Soft Position Limits when in Position Controller mode.
- *
- * When controlling position, you can add additional limits on top of the limit switch inputs
- * that are based on the position feedback. If the position limit is reached or the
- * switch is opened, that direction will be disabled.
- *
- * @param forwardLimitPosition The position that if exceeded will disable the forward direction.
- * @param reverseLimitPosition The position that if exceeded will disable the reverse direction.
- */
-void CANJaguar::ConfigSoftPositionLimits(double forwardLimitPosition, double reverseLimitPosition)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- dataSize = packFXP16_16(dataBuffer, forwardLimitPosition);
- dataBuffer[dataSize++] = forwardLimitPosition > reverseLimitPosition;
- setTransaction(LM_API_CFG_LIMIT_FWD, dataBuffer, dataSize);
-
- dataSize = packFXP16_16(dataBuffer, reverseLimitPosition);
- dataBuffer[dataSize++] = forwardLimitPosition <= reverseLimitPosition;
- setTransaction(LM_API_CFG_LIMIT_REV, dataBuffer, dataSize);
-
- dataBuffer[0] = kLimitMode_SoftPositionLimits;
- setTransaction(LM_API_CFG_LIMIT_MODE, dataBuffer, sizeof(uint8_t));
-}
-
-/**
- * Disable Soft Position Limits if previously enabled.
- *
- * Soft Position Limits are disabled by default.
- */
-void CANJaguar::DisableSoftPositionLimits()
-{
- uint8_t dataBuffer[8];
-
- dataBuffer[0] = kLimitMode_SwitchInputsOnly;
- setTransaction(LM_API_CFG_LIMIT_MODE, dataBuffer, sizeof(uint8_t));
-}
-
-/**
- * Configure the maximum voltage that the Jaguar will ever output.
- *
- * This can be used to limit the maximum output voltage in all modes so that
- * motors which cannot withstand full bus voltage can be used safely.
- *
- * @param voltage The maximum voltage output by the Jaguar.
- */
-void CANJaguar::ConfigMaxOutputVoltage(double voltage)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- m_maxOutputVoltage = voltage;
- dataSize = packFXP8_8(dataBuffer, voltage);
- setTransaction(LM_API_CFG_MAX_VOUT, dataBuffer, dataSize);
-}
-
-/**
- * Configure how long the Jaguar waits in the case of a fault before resuming operation.
- *
- * Faults include over temerature, over current, and bus under voltage.
- * The default is 3.0 seconds, but can be reduced to as low as 0.5 seconds.
- *
- * @param faultTime The time to wait before resuming operation, in seconds.
- */
-void CANJaguar::ConfigFaultTime(float faultTime)
-{
- uint8_t dataBuffer[8];
- uint8_t dataSize;
-
- // Message takes ms
- dataSize = packint16_t(dataBuffer, (int16_t)(faultTime * 1000.0));
- setTransaction(LM_API_CFG_FAULT_TIME, dataBuffer, dataSize);
-}
-
-/**
- * Update all the motors that have pending sets in the syncGroup.
- *
- * @param syncGroup A bitmask of groups to generate synchronous output.
- */
-void CANJaguar::UpdateSyncGroup(uint8_t syncGroup)
-{
- sendMessage(CAN_MSGID_API_SYNC, &syncGroup, sizeof(syncGroup));
-}
-
-
-void CANJaguar::SetExpiration(float timeout)
-{
- if (m_safetyHelper) m_safetyHelper->SetExpiration(timeout);
-}
-
-float CANJaguar::GetExpiration()
-{
- if (!m_safetyHelper) return 0.0;
- return m_safetyHelper->GetExpiration();
-}
-
-bool CANJaguar::IsAlive()
-{
- if (!m_safetyHelper) return false;
- return m_safetyHelper->IsAlive();
-}
-
-bool CANJaguar::IsSafetyEnabled()
-{
- if (!m_safetyHelper) return false;
- return m_safetyHelper->IsSafetyEnabled();
-}
-
-void CANJaguar::SetSafetyEnabled(bool enabled)
-{
- if (m_safetyHelper) m_safetyHelper->SetSafetyEnabled(enabled);
-}
-
-void CANJaguar::GetDescription(char *desc)
-{
- snprintf(desc, 64, "CANJaguar ID %d", m_deviceNumber);
-}
-
-/**
- * Common interface for stopping the motor
- * Part of the MotorSafety interface
- *
- * @deprecated Call DisableControl instead.
- */
-void CANJaguar::StopMotor()
-{
- 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() {
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void CANJaguar::StopLiveWindowMode() {
- if (m_table != NULL) {
- 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
deleted file mode 100644
index 55ec1b0..0000000
--- a/aos/externals/WPILib/WPILib/CANJaguar.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2009. 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 CANJAGUAR_H
-#define CANJAGUAR_H
-
-#include "ErrorBase.h"
-#include "MotorSafety.h"
-#include "MotorSafetyHelper.h"
-#include "PIDOutput.h"
-#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 SpeedController,
- public ErrorBase,
- public LiveWindowSendable,
- public ITableListener
-{
-public:
- // The internal PID control loop in the Jaguar runs at 1kHz.
- static const int32_t kControllerRate = 1000;
- static constexpr double kApproxBusVoltage = 12.0;
-
- typedef enum {kPercentVbus, kCurrent, kSpeed, kPosition, kVoltage} ControlMode;
- typedef enum {kCurrentFault = 1, kTemperatureFault = 2, kBusVoltageFault = 4, kGateDriverFault = 8} Faults;
- typedef enum {kForwardLimit = 1, kReverseLimit = 2} Limits;
- typedef enum {kPosRef_QuadEncoder = 0, kPosRef_Potentiometer = 1, kPosRef_None = 0xFF} PositionReference;
- typedef enum {kSpeedRef_Encoder = 0, kSpeedRef_InvEncoder = 2, kSpeedRef_QuadEncoder = 3, kSpeedRef_None = 0xFF} SpeedReference;
- typedef enum {kNeutralMode_Jumper = 0, kNeutralMode_Brake = 1, kNeutralMode_Coast = 2} NeutralMode;
- typedef enum {kLimitMode_SwitchInputsOnly = 0, kLimitMode_SoftPositionLimits = 1} LimitMode;
-
- explicit CANJaguar(uint8_t deviceNumber, ControlMode controlMode = kPercentVbus);
- virtual ~CANJaguar();
-
- // SpeedController interface
- virtual float Get();
- virtual void Set(float value, uint8_t syncGroup=0);
- virtual void Disable();
-
- // PIDOutput interface
- virtual void PIDWrite(float output);
-
- // Other Accessors
- void SetSpeedReference(SpeedReference reference);
- SpeedReference GetSpeedReference();
- void SetPositionReference(PositionReference reference);
- PositionReference GetPositionReference();
- void SetPID(double p, double i, double d);
- double GetP();
- double GetI();
- double GetD();
- void EnableControl(double encoderInitialPosition = 0.0);
- void DisableControl();
- void ChangeControlMode(ControlMode controlMode);
- ControlMode GetControlMode();
- float GetBusVoltage();
- float GetOutputVoltage();
- float GetOutputCurrent();
- float GetTemperature();
- double GetPosition();
- double GetSpeed();
- bool GetForwardLimitOK();
- bool GetReverseLimitOK();
- uint16_t GetFaults();
- bool GetPowerCycled();
- void SetVoltageRampRate(double rampRate);
- virtual uint32_t GetFirmwareVersion();
- uint8_t GetHardwareVersion();
- void ConfigNeutralMode(NeutralMode mode);
- void ConfigEncoderCodesPerRev(uint16_t codesPerRev);
- void ConfigPotentiometerTurns(uint16_t turns);
- void ConfigSoftPositionLimits(double forwardLimitPosition, double reverseLimitPosition);
- void DisableSoftPositionLimits();
- void ConfigMaxOutputVoltage(double voltage);
- void ConfigFaultTime(float faultTime);
-
- static void UpdateSyncGroup(uint8_t syncGroup);
-
- void SetExpiration(float timeout);
- float GetExpiration();
- bool IsAlive();
- void StopMotor();
- bool IsSafetyEnabled();
- void SetSafetyEnabled(bool enabled);
- void GetDescription(char *desc);
-
-protected:
- uint8_t packPercentage(uint8_t *buffer, double value);
- uint8_t packFXP8_8(uint8_t *buffer, double value);
- uint8_t packFXP16_16(uint8_t *buffer, double value);
- uint8_t packint16_t(uint8_t *buffer, int16_t value);
- uint8_t packint32_t(uint8_t *buffer, int32_t value);
- double unpackPercentage(uint8_t *buffer);
- double unpackFXP8_8(uint8_t *buffer);
- double unpackFXP16_16(uint8_t *buffer);
- int16_t unpackint16_t(uint8_t *buffer);
- int32_t unpackint32_t(uint8_t *buffer);
- virtual void setTransaction(uint32_t messageID, const uint8_t *data, uint8_t dataSize);
- virtual void getTransaction(uint32_t messageID, uint8_t *data, uint8_t *dataSize);
-
- static int32_t sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize);
- static int32_t receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, float timeout = 0.02);
-
- uint8_t m_deviceNumber;
- ControlMode m_controlMode;
- SEM_ID m_transactionSemaphore;
- double m_maxOutputVoltage;
-
- 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();
-};
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/ChipObject.h b/aos/externals/WPILib/WPILib/ChipObject.h
deleted file mode 100644
index 607af92..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject.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 __ChipObject_h__
-#define __ChipObject_h__
-
-#include <vxWorks.h>
-#include "ChipObject/NiRio.h"
-
-#include "ChipObject/tAccumulator.h"
-#include "ChipObject/tAI.h"
-#include "ChipObject/tAlarm.h"
-#include "ChipObject/tAnalogTrigger.h"
-#include "ChipObject/tCounter.h"
-#include "ChipObject/tDIO.h"
-#include "ChipObject/tDMA.h"
-//#include "ChipObject/tDMAManager.h"
-#include "ChipObject/tEncoder.h"
-#include "ChipObject/tGlobal.h"
-#include "ChipObject/tInterrupt.h"
-#include "ChipObject/tInterruptManager.h"
-#include "ChipObject/tSolenoid.h"
-#include "ChipObject/tSPI.h"
-#include "ChipObject/tWatchdog.h"
-
-using namespace nFPGA;
-using namespace nFRC_2012_1_6_4;
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/ChipObject/Makefile b/aos/externals/WPILib/WPILib/ChipObject/Makefile
deleted file mode 100644
index bc19164..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/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/ChipObject/NiFpga.h b/aos/externals/WPILib/WPILib/ChipObject/NiFpga.h
deleted file mode 100644
index c5f2bce..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/NiFpga.h
+++ /dev/null
@@ -1,2311 +0,0 @@
-/*
- * FPGA Interface C API 2.0 header file.
- *
- * Copyright (c) 2011,
- * National Instruments Corporation.
- * All rights reserved.
- */
-
-#ifndef __NiFpga_h__
-#define __NiFpga_h__
-
-/*
- * Determine platform details.
- */
-#if defined(_M_IX86) \
- || defined(_M_X64) \
- || defined(i386) \
- || defined(__i386__) \
- || defined(__amd64__) \
- || defined(__amd64) \
- || defined(__x86_64__) \
- || defined(__x86_64) \
- || defined(__i386) \
- || defined(_X86_) \
- || defined(__THW_INTEL__) \
- || defined(__I86__) \
- || defined(__INTEL__) \
- || defined(__X86__) \
- || defined(__386__) \
- || defined(__I86__) \
- || defined(M_I386) \
- || defined(M_I86) \
- || defined(_M_I386) \
- || defined(_M_I86)
- #if defined(_WIN32) \
- || defined(_WIN64) \
- || defined(__WIN32__) \
- || defined(__TOS_WIN__) \
- || defined(__WINDOWS__) \
- || defined(_WINDOWS) \
- || defined(__WINDOWS_386__) \
- || defined(__CYGWIN__)
- /* Either Windows or Phar Lap ETS. */
- #define NiFpga_Windows 1
- #elif defined(__linux) \
- || defined(__linux__) \
- || defined(__gnu_linux__) \
- || defined(linux)
- #define NiFpga_Linux 1
- #else
- #error Unsupported OS.
- #endif
-#elif defined(__powerpc) \
- || defined(__powerpc__) \
- || defined(__POWERPC__) \
- || defined(__ppc__) \
- || defined(__PPC) \
- || defined(_M_PPC) \
- || defined(_ARCH_PPC) \
- || defined(__PPC__) \
- || defined(__ppc)
- #if defined(__vxworks)
- #define NiFpga_VxWorks 1
- #else
- #error Unsupported OS.
- #endif
-#else
- #error Unsupported architecture.
-#endif
-
-/*
- * Determine compiler.
- */
-#if defined(_MSC_VER)
- #define NiFpga_Msvc 1
-#elif defined(__GNUC__)
- #define NiFpga_Gcc 1
-#elif defined(_CVI_) && !defined(_TPC_)
- #define NiFpga_Cvi 1
- /* Enables CVI Library Protection Errors. */
- #pragma EnableLibraryRuntimeChecking
-#else
- /* Unknown compiler. */
-#endif
-
-/*
- * Determine compliance with different C/C++ language standards.
- */
-#if defined(__cplusplus)
- #define NiFpga_Cpp 1
- #if __cplusplus >= 199707L
- #define NiFpga_Cpp98 1
- #endif
-#endif
-#if defined(__STDC__)
- #define NiFpga_C89 1
- #if defined(__STDC_VERSION__)
- #define NiFpga_C90 1
- #if __STDC_VERSION__ >= 199409L
- #define NiFpga_C94 1
- #if __STDC_VERSION__ >= 199901L
- #define NiFpga_C99 1
- #endif
- #endif
- #endif
-#endif
-
-/*
- * Determine ability to inline functions.
- */
-#if NiFpga_Cpp || NiFpga_C99
- /* The inline keyword exists in C++ and C99. */
- #define NiFpga_Inline inline
-#elif NiFpga_Msvc
- /* Visual C++ (at least since 6.0) also supports an alternate keyword. */
- #define NiFpga_Inline __inline
-#elif NiFpga_Gcc
- /* GCC (at least since 2.95.2) also supports an alternate keyword. */
- #define NiFpga_Inline __inline__
-#elif !defined(NiFpga_Inline)
- /*
- * Disable inlining if inline support is unknown. To manually enable
- * inlining, #define the following macro before #including NiFpga.h:
- *
- * #define NiFpga_Inline inline
- */
- #define NiFpga_Inline
-#endif
-
-/*
- * Define exact-width integer types, if they have not already been defined.
- */
-#if NiFpga_ExactWidthIntegerTypesDefined \
- || defined(_STDINT) \
- || defined(_STDINT_H) \
- || defined(_STDINT_H_) \
- || defined(_INTTYPES_H) \
- || defined(_INTTYPES_H_) \
- || defined(_SYS_STDINT_H) \
- || defined(_SYS_STDINT_H_) \
- || defined(_SYS_INTTYPES_H) \
- || defined(_SYS_INTTYPES_H_) \
- || defined(_STDINT_H_INCLUDED) \
- || defined(BOOST_CSTDINT_HPP) \
- || defined(_MSC_STDINT_H_) \
- || defined(_PSTDINT_H_INCLUDED)
- /* Assume that exact-width integer types have already been defined. */
-#elif NiFpga_VxWorks
- #include <vxWorks.h>
-#elif NiFpga_C99 \
- || NiFpga_Gcc /* GCC (at least since 3.0) has a stdint.h. */ \
- || defined(HAVE_STDINT_H)
- /* Assume that stdint.h can be included. */
- #include <stdint.h>
-#elif NiFpga_Msvc \
- || NiFpga_Cvi
- /* Manually define exact-width integer types. */
- typedef signed char int8_t;
- typedef unsigned char uint8_t;
- typedef short int16_t;
- typedef unsigned short uint16_t;
- typedef int int32_t;
- typedef unsigned int uint32_t;
- typedef __int64 int64_t;
- typedef unsigned __int64 uint64_t;
-#else
- /*
- * Exact-width integer types must be defined by the user, and the following
- * macro must be #defined, before #including NiFpga.h:
- *
- * #define NiFpga_ExactWidthIntegerTypesDefined 1
- */
- #error Exact-width integer types must be defined by the user. See comment.
-#endif
-
-/* Included for definition of size_t. */
-#include <stddef.h>
-
-#if NiFpga_Cpp
-extern "C" {
-#endif
-
-/**
- * A boolean value; either NiFpga_False or NiFpga_True.
- */
-typedef uint8_t NiFpga_Bool;
-
-/**
- * Represents a false condition.
- */
-static const NiFpga_Bool NiFpga_False = 0;
-
-/**
- * Represents a true condition.
- */
-static const NiFpga_Bool NiFpga_True = 1;
-
-/**
- * Represents the resulting status of a function call through its return value.
- * 0 is success, negative values are errors, and positive values are warnings.
- */
-typedef int32_t NiFpga_Status;
-
-/**
- * No errors or warnings.
- */
-static const NiFpga_Status NiFpga_Status_Success = 0;
-
-/**
- * The timeout expired before the FIFO operation could complete.
- */
-static const NiFpga_Status NiFpga_Status_FifoTimeout = -50400;
-
-/**
- * A memory allocation failed. Try again after rebooting.
- */
-static const NiFpga_Status NiFpga_Status_MemoryFull = -52000;
-
-/**
- * An unexpected software error occurred.
- */
-static const NiFpga_Status NiFpga_Status_SoftwareFault = -52003;
-
-/**
- * A parameter to a function was not valid. This could be a NULL pointer, a bad
- * value, etc.
- */
-static const NiFpga_Status NiFpga_Status_InvalidParameter = -52005;
-
-/**
- * A required resource was not found. The NiFpga.* library, the RIO resource,
- * or some other resource may be missing, or the NiFpga.* library may not be
- * the required minimum version.
- */
-static const NiFpga_Status NiFpga_Status_ResourceNotFound = -52006;
-
-/**
- * A required resource was not properly initialized. This could occur if
- * NiFpga_Initialize was not called or a required NiFpga_IrqContext was not
- * reserved.
- */
-static const NiFpga_Status NiFpga_Status_ResourceNotInitialized = -52010;
-
-/**
- * The FPGA is already running.
- */
-static const NiFpga_Status NiFpga_Status_FpgaAlreadyRunning = -61003;
-
-/**
- * The bitfile was not compiled for the specified resource's device type.
- */
-static const NiFpga_Status NiFpga_Status_DeviceTypeMismatch = -61024;
-
-/**
- * An error was detected in the communication between the host computer and the
- * FPGA target.
- */
-static const NiFpga_Status NiFpga_Status_CommunicationTimeout = -61046;
-
-/**
- * The timeout expired before any of the IRQs were asserted.
- */
-static const NiFpga_Status NiFpga_Status_IrqTimeout = -61060;
-
-/**
- * The specified bitfile is invalid or corrupt.
- */
-static const NiFpga_Status NiFpga_Status_CorruptBitfile = -61070;
-
-/**
- * The FIFO depth is invalid. It was either 0, greater than the amount of
- * available memory in the host computer, or greater than the maximum size
- * allowed by the hardware.
- */
-static const NiFpga_Status NiFpga_Status_BadDepth = -61072;
-
-/**
- * The number of FIFO elements is invalid. Either the number is greater than
- * the depth of the host memory DMA FIFO, or more elements were requested for
- * release than had been acquired.
- */
-static const NiFpga_Status NiFpga_Status_BadReadWriteCount = -61073;
-
-/**
- * A hardware clocking error occurred. A derived clock lost lock with its base
- * clock during the execution of the LabVIEW FPGA VI. If any base clocks with
- * derived clocks are referencing an external source, make sure that the
- * external source is connected and within the supported frequency, jitter,
- * accuracy, duty cycle, and voltage specifications. Also verify that the
- * characteristics of the base clock match the configuration specified in the
- * FPGA Base Clock Properties. If all base clocks with derived clocks are
- * generated from free-running, on-board sources, please contact National
- * Instruments technical support at ni.com/support.
- */
-static const NiFpga_Status NiFpga_Status_ClockLostLock = -61083;
-
-/**
- * Operation could not be performed because the FPGA is busy. Stop all the
- * activities on the FPGA before requesting this operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusy = -61141;
-
-/**
- * Operation could not be performed because the FPGA is busy operating in FPGA
- * Interface C API mode. Stop all the activities on the FPGA before requesting
- * this operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterfaceCApi = -61200;
-
-/**
- * The chassis is in Scan Interface programming mode. In order to run FPGA VIs,
- * you must go to the chassis properties page, select FPGA programming mode,
- * and deploy settings.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyScanInterface = -61201;
-
-/**
- * Operation could not be performed because the FPGA is busy operating in FPGA
- * Interface mode. Stop all the activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterface = -61202;
-
-/**
- * Operation could not be performed because the FPGA is busy operating in
- * Interactive mode. Stop all the activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyInteractive = -61203;
-
-/**
- * Operation could not be performed because the FPGA is busy operating in
- * Emulation mode. Stop all the activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyEmulation = -61204;
-
-/**
- * An unexpected internal error occurred.
- */
-static const NiFpga_Status NiFpga_Status_InternalError = -61499;
-
-/**
- * Access to the remote system was denied. Use MAX to check the Remote Device
- * Access settings under Software>>NI-RIO>>NI-RIO Settings on the remote system.
- */
-static const NiFpga_Status NiFpga_Status_AccessDenied = -63033;
-
-/**
- * A connection could not be established to the specified remote device. Ensure
- * that the device is on and accessible over the network, that NI-RIO software
- * is installed, and that the RIO server is running and properly configured.
- */
-static const NiFpga_Status NiFpga_Status_RpcConnectionError = -63040;
-
-/**
- * The RPC session is invalid. The target may have reset or been rebooted. Check
- * the network connection and retry the operation.
- */
-static const NiFpga_Status NiFpga_Status_RpcSessionError = -63043;
-
-/**
- * A Read FIFO or Write FIFO function was called while the host had acquired
- * elements of the FIFO. Release all acquired elements before reading or
- * writing.
- */
-static const NiFpga_Status NiFpga_Status_FifoElementsCurrentlyAcquired = -63083;
-
-/**
- * The bitfile could not be read.
- */
-static const NiFpga_Status NiFpga_Status_BitfileReadError = -63101;
-
-/**
- * The specified signature does not match the signature of the bitfile. If the
- * bitfile has been recompiled, regenerate the C API and rebuild the
- * application.
- */
-static const NiFpga_Status NiFpga_Status_SignatureMismatch = -63106;
-
-/**
- * Either the supplied resource name is invalid as a RIO resource name, or the
- * device was not found. Use MAX to find the proper resource name for the
- * intended device.
- */
-static const NiFpga_Status NiFpga_Status_InvalidResourceName = -63192;
-
-/**
- * The requested feature is not supported.
- */
-static const NiFpga_Status NiFpga_Status_FeatureNotSupported = -63193;
-
-/**
- * The NI-RIO software on the remote system is not compatible with the local
- * NI-RIO software. Upgrade the NI-RIO software on the remote system.
- */
-static const NiFpga_Status NiFpga_Status_VersionMismatch = -63194;
-
-/**
- * The session is invalid or has been closed.
- */
-static const NiFpga_Status NiFpga_Status_InvalidSession = -63195;
-
-/**
- * The maximum number of open FPGA sessions has been reached. Close some open
- * sessions.
- */
-static const NiFpga_Status NiFpga_Status_OutOfHandles = -63198;
-
-/**
- * Tests whether a status is an error.
- *
- * @param status status to check for an error
- * @return whether the status was an error
- */
-static NiFpga_Inline NiFpga_Bool NiFpga_IsError(const NiFpga_Status status)
-{
- return status < NiFpga_Status_Success;
-}
-
-/**
- * Tests whether a status is not an error. Success and warnings are not errors.
- *
- * @param status status to check for an error
- * @return whether the status was a success or warning
- */
-static NiFpga_Inline NiFpga_Bool NiFpga_IsNotError(const NiFpga_Status status)
-{
- return status >= NiFpga_Status_Success;
-}
-
-/**
- * Conditionally sets the status to a new value. The previous status is
- * preserved unless the new status is more of an error, which means that
- * warnings and errors overwrite successes, and errors overwrite warnings. New
- * errors do not overwrite older errors, and new warnings do not overwrite
- * older warnings.
- *
- * @param status status to conditionally set
- * @param newStatus new status value that may be set
- * @return the resulting status
- */
-static NiFpga_Inline NiFpga_Status NiFpga_MergeStatus(
- NiFpga_Status* const status,
- const NiFpga_Status newStatus)
-{
- if (!status)
- {
- return NiFpga_Status_InvalidParameter;
- }
- if (NiFpga_IsNotError(*status)
- && (*status == NiFpga_Status_Success || NiFpga_IsError(newStatus)))
- {
- *status = newStatus;
- }
- return *status;
-}
-
-/**
- * This macro evaluates the expression only if the status is not an error. The
- * expression must evaluate to an NiFpga_Status, such as a call to any NiFpga_*
- * function, because the status will be set to the returned status if the
- * expression is evaluated.
- *
- * You can use this macro to mimic status chaining in LabVIEW, where the status
- * does not have to be explicitly checked after each call. Such code may look
- * like the following example.
- *
- * NiFpga_Status status = NiFpga_Status_Success;
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- *
- * @param status status to check for an error
- * @param expression expression to call if the incoming status is not an error
- */
-#define NiFpga_IfIsNotError(status, expression) \
- if (NiFpga_IsNotError(status)) \
- { \
- NiFpga_MergeStatus(&status, (expression)); \
- }
-
-/**
- * You must call this function before all other function calls. This function
- * loads the NiFpga library so that all the other functions will work. If this
- * function succeeds, you must call NiFpga_Finalize after all other function
- * calls.
- *
- * @warning This function is not thread safe.
- *
- * @return result of the call
- */
-NiFpga_Status NiFpga_Initialize(void);
-
-/**
- * You must call this function after all other function calls if
- * NiFpga_Initialize succeeds. This function unloads the NiFpga library.
- *
- * @warning This function is not thread safe.
- *
- * @return result of the call
- */
-NiFpga_Status NiFpga_Finalize(void);
-
-/**
- * A handle to an FPGA session.
- */
-typedef uint32_t NiFpga_Session;
-
-/**
- * Attributes that NiFpga_Open accepts.
- */
-typedef enum
-{
- NiFpga_OpenAttribute_NoRun = 1
-} NiFpga_OpenAttribute;
-
-/**
- * Opens a session to the FPGA. This call ensures that the contents of the
- * bitfile are programmed to the FPGA. The FPGA runs unless the
- * NiFpga_OpenAttribute_NoRun attribute is used.
- *
- * Because different operating systems have different default current working
- * directories for applications, you must pass an absolute path for the bitfile
- * parameter. If you pass only the filename instead of an absolute path, the
- * operating system may not be able to locate the bitfile. For example, the
- * default current working directories are C:\ni-rt\system\ for Phar Lap ETS and
- * /c/ for VxWorks. Because the generated *_Bitfile constant is a #define to a
- * string literal, you can use C/C++ string-literal concatenation to form an
- * absolute path. For example, if the bitfile is in the root directory of a
- * Phar Lap ETS system, pass the following for the bitfile parameter.
- *
- * "C:\\" NiFpga_MyApplication_Bitfile
- *
- * @param bitfile path to the bitfile
- * @param signature signature of the bitfile
- * @param resource RIO resource string to open ("RIO0" or "rio://mysystem/RIO")
- * @param attribute bitwise OR of any NiFpga_OpenAttributes, or 0
- * @param session outputs the session handle, which must be closed when no
- * longer needed
- * @return result of the call
- */
-NiFpga_Status NiFpga_Open(const char* bitfile,
- const char* signature,
- const char* resource,
- uint32_t attribute,
- NiFpga_Session* session);
-
-/**
- * Attributes that NiFpga_Close accepts.
- */
-typedef enum
-{
- NiFpga_CloseAttribute_NoResetIfLastSession = 1
-} NiFpga_CloseAttribute;
-
-/**
- * Closes the session to the FPGA. The FPGA resets unless either another session
- * is still open or you use the NiFpga_CloseAttribute_NoResetIfLastSession
- * attribute.
- *
- * @param session handle to a currently open session
- * @param attribute bitwise OR of any NiFpga_CloseAttributes, or 0
- * @return result of the call
- */
-NiFpga_Status NiFpga_Close(NiFpga_Session session,
- uint32_t attribute);
-
-/**
- * Attributes that NiFpga_Run accepts.
- */
-typedef enum
-{
- NiFpga_RunAttribute_WaitUntilDone = 1
-} NiFpga_RunAttribute;
-
-/**
- * Runs the FPGA VI on the target. If you use NiFpga_RunAttribute_WaitUntilDone,
- * NiFpga_Run blocks the thread until the FPGA finishes running (if ever).
- *
- * @param session handle to a currently open session
- * @param attribute bitwise OR of any NiFpga_RunAttributes, or 0
- * @return result of the call
- */
-NiFpga_Status NiFpga_Run(NiFpga_Session session,
- uint32_t attribute);
-
-/**
- * Aborts the FPGA VI.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Abort(NiFpga_Session session);
-
-/**
- * Resets the FPGA VI.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Reset(NiFpga_Session session);
-
-/**
- * Re-downloads the FPGA bitstream to the target.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Download(NiFpga_Session session);
-
-/**
- * Reads a boolean value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadBool(NiFpga_Session session,
- uint32_t indicator,
- NiFpga_Bool* value);
-
-/**
- * Reads a signed 8-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI8(NiFpga_Session session,
- uint32_t indicator,
- int8_t* value);
-
-/**
- * Reads an unsigned 8-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU8(NiFpga_Session session,
- uint32_t indicator,
- uint8_t* value);
-
-/**
- * Reads a signed 16-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI16(NiFpga_Session session,
- uint32_t indicator,
- int16_t* value);
-
-/**
- * Reads an unsigned 16-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU16(NiFpga_Session session,
- uint32_t indicator,
- uint16_t* value);
-
-/**
- * Reads a signed 32-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI32(NiFpga_Session session,
- uint32_t indicator,
- int32_t* value);
-
-/**
- * Reads an unsigned 32-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU32(NiFpga_Session session,
- uint32_t indicator,
- uint32_t* value);
-
-/**
- * Reads a signed 64-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI64(NiFpga_Session session,
- uint32_t indicator,
- int64_t* value);
-
-/**
- * Reads an unsigned 64-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU64(NiFpga_Session session,
- uint32_t indicator,
- uint64_t* value);
-
-/**
- * Writes a boolean value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteBool(NiFpga_Session session,
- uint32_t control,
- NiFpga_Bool value);
-
-/**
- * Writes a signed 8-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI8(NiFpga_Session session,
- uint32_t control,
- int8_t value);
-
-/**
- * Writes an unsigned 8-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU8(NiFpga_Session session,
- uint32_t control,
- uint8_t value);
-
-/**
- * Writes a signed 16-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI16(NiFpga_Session session,
- uint32_t control,
- int16_t value);
-
-/**
- * Writes an unsigned 16-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU16(NiFpga_Session session,
- uint32_t control,
- uint16_t value);
-
-/**
- * Writes a signed 32-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI32(NiFpga_Session session,
- uint32_t control,
- int32_t value);
-
-/**
- * Writes an unsigned 32-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU32(NiFpga_Session session,
- uint32_t control,
- uint32_t value);
-
-/**
- * Writes a signed 64-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI64(NiFpga_Session session,
- uint32_t control,
- int64_t value);
-
-/**
- * Writes an unsigned 64-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU64(NiFpga_Session session,
- uint32_t control,
- uint64_t value);
-
-/**
- * Reads an entire array of boolean values from a given array indicator or
- * control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayBool(NiFpga_Session session,
- uint32_t indicator,
- NiFpga_Bool* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 8-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI8(NiFpga_Session session,
- uint32_t indicator,
- int8_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 8-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU8(NiFpga_Session session,
- uint32_t indicator,
- uint8_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 16-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI16(NiFpga_Session session,
- uint32_t indicator,
- int16_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 16-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU16(NiFpga_Session session,
- uint32_t indicator,
- uint16_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 32-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI32(NiFpga_Session session,
- uint32_t indicator,
- int32_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 32-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU32(NiFpga_Session session,
- uint32_t indicator,
- uint32_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 64-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI64(NiFpga_Session session,
- uint32_t indicator,
- int64_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 64-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU64(NiFpga_Session session,
- uint32_t indicator,
- uint64_t* array,
- size_t size);
-
-/**
- * Writes an entire array of boolean values to a given array control or
- * indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayBool(NiFpga_Session session,
- uint32_t control,
- const NiFpga_Bool* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 8-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI8(NiFpga_Session session,
- uint32_t control,
- const int8_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 8-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU8(NiFpga_Session session,
- uint32_t control,
- const uint8_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 16-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI16(NiFpga_Session session,
- uint32_t control,
- const int16_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 16-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU16(NiFpga_Session session,
- uint32_t control,
- const uint16_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 32-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI32(NiFpga_Session session,
- uint32_t control,
- const int32_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 32-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU32(NiFpga_Session session,
- uint32_t control,
- const uint32_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 64-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI64(NiFpga_Session session,
- uint32_t control,
- const int64_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 64-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU64(NiFpga_Session session,
- uint32_t control,
- const uint64_t* array,
- size_t size);
-
-/**
- * Enumeration of all 32 possible IRQs. Multiple IRQs can be bitwise ORed
- * together like this:
- *
- * NiFpga_Irq_3 | NiFpga_Irq_23
- */
-typedef enum
-{
- NiFpga_Irq_0 = 1 << 0,
- NiFpga_Irq_1 = 1 << 1,
- NiFpga_Irq_2 = 1 << 2,
- NiFpga_Irq_3 = 1 << 3,
- NiFpga_Irq_4 = 1 << 4,
- NiFpga_Irq_5 = 1 << 5,
- NiFpga_Irq_6 = 1 << 6,
- NiFpga_Irq_7 = 1 << 7,
- NiFpga_Irq_8 = 1 << 8,
- NiFpga_Irq_9 = 1 << 9,
- NiFpga_Irq_10 = 1 << 10,
- NiFpga_Irq_11 = 1 << 11,
- NiFpga_Irq_12 = 1 << 12,
- NiFpga_Irq_13 = 1 << 13,
- NiFpga_Irq_14 = 1 << 14,
- NiFpga_Irq_15 = 1 << 15,
- NiFpga_Irq_16 = 1 << 16,
- NiFpga_Irq_17 = 1 << 17,
- NiFpga_Irq_18 = 1 << 18,
- NiFpga_Irq_19 = 1 << 19,
- NiFpga_Irq_20 = 1 << 20,
- NiFpga_Irq_21 = 1 << 21,
- NiFpga_Irq_22 = 1 << 22,
- NiFpga_Irq_23 = 1 << 23,
- NiFpga_Irq_24 = 1 << 24,
- NiFpga_Irq_25 = 1 << 25,
- NiFpga_Irq_26 = 1 << 26,
- NiFpga_Irq_27 = 1 << 27,
- NiFpga_Irq_28 = 1 << 28,
- NiFpga_Irq_29 = 1 << 29,
- NiFpga_Irq_30 = 1 << 30,
- NiFpga_Irq_31 = 1U << 31
-} NiFpga_Irq;
-
-/**
- * Represents an infinite timeout.
- */
-static const uint32_t NiFpga_InfiniteTimeout = 0xFFFFFFFF;
-
-/**
- * See NiFpga_ReserveIrqContext for more information.
- */
-typedef void* NiFpga_IrqContext;
-
-/**
- * IRQ contexts are single-threaded; only one thread can wait with a particular
- * context at any given time. Clients must reserve as many contexts as the
- * application requires.
- *
- * If a context is successfully reserved (the returned status is not an error),
- * it must be unreserved later. Otherwise a memory leak will occur.
- *
- * @param session handle to a currently open session
- * @param context outputs the IRQ context
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReserveIrqContext(NiFpga_Session session,
- NiFpga_IrqContext* context);
-
-/**
- * Unreserves an IRQ context obtained from NiFpga_ReserveIrqContext.
- *
- * @param session handle to a currently open session
- * @param context IRQ context to unreserve
- * @return result of the call
- */
-NiFpga_Status NiFpga_UnreserveIrqContext(NiFpga_Session session,
- NiFpga_IrqContext context);
-
-/**
- * This is a blocking function that stops the calling thread until the FPGA
- * asserts any IRQ in the irqs parameter, or until the function call times out.
- * Before calling this function, you must use NiFpga_ReserveIrqContext to
- * reserve an IRQ context. No other threads can use the same context when this
- * function is called.
- *
- * You can use the irqsAsserted parameter to determine which IRQs were asserted
- * for each function call.
- *
- * @param session handle to a currently open session
- * @param context IRQ context with which to wait
- * @param irqs bitwise OR of NiFpga_Irqs
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param irqsAsserted if non-NULL, outputs bitwise OR of IRQs that were
- * asserted
- * @param timedOut if non-NULL, outputs whether the timeout expired
- * @return result of the call
- */
-NiFpga_Status NiFpga_WaitOnIrqs(NiFpga_Session session,
- NiFpga_IrqContext context,
- uint32_t irqs,
- uint32_t timeout,
- uint32_t* irqsAsserted,
- NiFpga_Bool* timedOut);
-
-/**
- * Acknowledges an IRQ or set of IRQs.
- *
- * @param session handle to a currently open session
- * @param irqs bitwise OR of NiFpga_Irqs
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcknowledgeIrqs(NiFpga_Session session,
- uint32_t irqs);
-
-/**
- * Specifies the depth of the host memory part of the DMA FIFO. This method is
- * optional. In order to see the actual depth configured, use
- * NiFpga_ConfigureFifo2.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to configure
- * @param depth requested number of elements in the host memory part of the
- * DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ConfigureFifo(NiFpga_Session session,
- uint32_t fifo,
- size_t depth);
-
-/**
- * Specifies the depth of the host memory part of the DMA FIFO. This method is
- * optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to configure
- * @param requestedDepth requested number of elements in the host memory part
- * of the DMA FIFO
- * @param actualDepth if non-NULL, outputs the actual number of elements in the
- * host memory part of the DMA FIFO, which may be more than
- * the requested number
- * @return result of the call
- */
-NiFpga_Status NiFpga_ConfigureFifo2(NiFpga_Session session,
- uint32_t fifo,
- size_t requestedDepth,
- size_t* actualDepth);
-/**
- * Starts a FIFO. This method is optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to start
- * @return result of the call
- */
-NiFpga_Status NiFpga_StartFifo(NiFpga_Session session,
- uint32_t fifo);
-
-/**
- * Stops a FIFO. This method is optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to stop
- * @return result of the call
- */
-NiFpga_Status NiFpga_StopFifo(NiFpga_Session session,
- uint32_t fifo);
-
-/**
- * Reads from a target-to-host FIFO of booleans.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoBool(NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI8(NiFpga_Session session,
- uint32_t fifo,
- int8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU8(NiFpga_Session session,
- uint32_t fifo,
- uint8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI16(NiFpga_Session session,
- uint32_t fifo,
- int16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU16(NiFpga_Session session,
- uint32_t fifo,
- uint16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI32(NiFpga_Session session,
- uint32_t fifo,
- int32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU32(NiFpga_Session session,
- uint32_t fifo,
- uint32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI64(NiFpga_Session session,
- uint32_t fifo,
- int64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU64(NiFpga_Session session,
- uint32_t fifo,
- uint64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of booleans.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoBool(NiFpga_Session session,
- uint32_t fifo,
- const NiFpga_Bool* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI8(NiFpga_Session session,
- uint32_t fifo,
- const int8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU8(NiFpga_Session session,
- uint32_t fifo,
- const uint8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI16(NiFpga_Session session,
- uint32_t fifo,
- const int16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU16(NiFpga_Session session,
- uint32_t fifo,
- const uint16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI32(NiFpga_Session session,
- uint32_t fifo,
- const int32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU32(NiFpga_Session session,
- uint32_t fifo,
- const uint32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI64(NiFpga_Session session,
- uint32_t fifo,
- const int64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU64(NiFpga_Session session,
- uint32_t fifo,
- const uint64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of booleans.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsBool(
- NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 8-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI8(
- NiFpga_Session session,
- uint32_t fifo,
- int8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 8-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU8(
- NiFpga_Session session,
- uint32_t fifo,
- uint8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 16-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI16(
- NiFpga_Session session,
- uint32_t fifo,
- int16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 16-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU16(
- NiFpga_Session session,
- uint32_t fifo,
- uint16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 32-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI32(
- NiFpga_Session session,
- uint32_t fifo,
- int32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 32-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU32(
- NiFpga_Session session,
- uint32_t fifo,
- uint32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 64-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI64(
- NiFpga_Session session,
- uint32_t fifo,
- int64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 64-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU64(
- NiFpga_Session session,
- uint32_t fifo,
- uint64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of booleans.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsBool(
- NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 8-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI8(
- NiFpga_Session session,
- uint32_t fifo,
- int8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 8-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU8(
- NiFpga_Session session,
- uint32_t fifo,
- uint8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 16-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI16(
- NiFpga_Session session,
- uint32_t fifo,
- int16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 16-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU16(
- NiFpga_Session session,
- uint32_t fifo,
- uint16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 32-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI32(
- NiFpga_Session session,
- uint32_t fifo,
- int32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 32-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU32(
- NiFpga_Session session,
- uint32_t fifo,
- uint32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 64-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI64(
- NiFpga_Session session,
- uint32_t fifo,
- int64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 64-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested reqested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU64(
- NiFpga_Session session,
- uint32_t fifo,
- uint64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Releases previously acquired FIFO elements.
- *
- * The FPGA target cannot read elements acquired by the host. Therefore, the
- * host must release elements after acquiring them. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO from which to release elements
- * @param elements number of elements to release
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReleaseFifoElements(NiFpga_Session session,
- uint32_t fifo,
- size_t elements);
-
-/**
- * Gets an endpoint reference to a peer-to-peer FIFO.
- *
- * @param session handle to a currently open session
- * @param fifo peer-to-peer FIFO
- * @param endpoint outputs the endpoint reference
- * @return result of the call
- */
-NiFpga_Status NiFpga_GetPeerToPeerFifoEndpoint(NiFpga_Session session,
- uint32_t fifo,
- uint32_t* endpoint);
-
-#if NiFpga_Cpp
-}
-#endif
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/ChipObject/NiRio.h b/aos/externals/WPILib/WPILib/ChipObject/NiRio.h
deleted file mode 100644
index c0dc29e..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/NiRio.h
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __NiRio_h__
-#define __NiRio_h__
-
-#include "NiFpga.h"
-typedef NiFpga_Status tRioStatusCode;
-
-#endif // __NiRio_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/chipObjectAliases.h b/aos/externals/WPILib/WPILib/ChipObject/chipObjectAliases.h
deleted file mode 100644
index 2b2bb48..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/chipObjectAliases.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __chipObjectAliases_h__
-#define __chipObjectAliases_h__
-
-#define nInvariantFPGANamespace nFRC_C0EF_1_1_0
-#define nRuntimeFPGANamespace nFRC_2012_1_6_4
-
-#endif // __chipObjectAliases_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/fpgainterfacecapi/NiFpga.h b/aos/externals/WPILib/WPILib/ChipObject/fpgainterfacecapi/NiFpga.h
deleted file mode 100644
index 8e8f88d..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/fpgainterfacecapi/NiFpga.h
+++ /dev/null
@@ -1,2435 +0,0 @@
-/*
- * FPGA Interface C API 13.0 header file.
- *
- * Copyright (c) 2013,
- * National Instruments Corporation.
- * All rights reserved.
- */
-
-#ifndef __NiFpga_h__
-#define __NiFpga_h__
-
-/*
- * Determine platform details.
- */
-#if defined(_M_IX86) \
- || defined(_M_X64) \
- || defined(_M_AMD64) \
- || defined(i386) \
- || defined(__i386) \
- || defined(__i386__) \
- || defined(__i486__) \
- || defined(__i586__) \
- || defined(__i686__) \
- || defined(__amd64__) \
- || defined(__amd64) \
- || defined(__x86_64__) \
- || defined(__x86_64) \
- || defined(__IA32__) \
- || defined(_X86_) \
- || defined(__THW_INTEL__) \
- || defined(__I86__) \
- || defined(__INTEL__) \
- || defined(__X86__) \
- || defined(__386__) \
- || defined(__I86__) \
- || defined(M_I386) \
- || defined(M_I86) \
- || defined(_M_I386) \
- || defined(_M_I86)
- #if defined(_WIN32) \
- || defined(_WIN64) \
- || defined(__WIN32__) \
- || defined(__TOS_WIN__) \
- || defined(__WINDOWS__) \
- || defined(_WINDOWS) \
- || defined(__WINDOWS_386__) \
- || defined(__CYGWIN__)
- /* Either Windows or Phar Lap ETS. */
- #define NiFpga_Windows 1
- #elif defined(__linux__) \
- || defined(__linux) \
- || defined(linux) \
- || defined(__gnu_linux__)
- #define NiFpga_Linux 1
- #else
- #error Unsupported OS.
- #endif
-#elif defined(__powerpc) \
- || defined(__powerpc__) \
- || defined(__POWERPC__) \
- || defined(__ppc__) \
- || defined(__PPC) \
- || defined(_M_PPC) \
- || defined(_ARCH_PPC) \
- || defined(__PPC__) \
- || defined(__ppc)
- #if defined(__vxworks)
- #define NiFpga_VxWorks 1
- #else
- #error Unsupported OS.
- #endif
-#elif defined(__arm__) \
- || defined(__thumb__) \
- || defined(__TARGET_ARCH_ARM) \
- || defined(__TARGET_ARCH_THUMB) \
- || defined(_ARM) \
- || defined(_M_ARM) \
- || defined(_M_ARMT)
- #if defined(__linux__) \
- || defined(__linux) \
- || defined(linux) \
- || defined(__gnu_linux__)
- #define NiFpga_Linux 1
- #else
- #error Unsupported OS.
- #endif
-#else
- #error Unsupported architecture.
-#endif
-
-/*
- * Determine compiler.
- */
-#if defined(_MSC_VER)
- #define NiFpga_Msvc 1
-#elif defined(__GNUC__)
- #define NiFpga_Gcc 1
-#elif defined(_CVI_) && !defined(_TPC_)
- #define NiFpga_Cvi 1
- /* Enables CVI Library Protection Errors. */
- #pragma EnableLibraryRuntimeChecking
-#else
- /* Unknown compiler. */
-#endif
-
-/*
- * Determine compliance with different C/C++ language standards.
- */
-#if defined(__cplusplus)
- #define NiFpga_Cpp 1
- #if __cplusplus >= 199707L
- #define NiFpga_Cpp98 1
- #if __cplusplus >= 201103L
- #define NiFpga_Cpp11 1
- #endif
- #endif
-#endif
-#if defined(__STDC__)
- #define NiFpga_C89 1
- #if defined(__STDC_VERSION__)
- #define NiFpga_C90 1
- #if __STDC_VERSION__ >= 199409L
- #define NiFpga_C94 1
- #if __STDC_VERSION__ >= 199901L
- #define NiFpga_C99 1
- #if __STDC_VERSION__ >= 201112L
- #define NiFpga_C11 1
- #endif
- #endif
- #endif
- #endif
-#endif
-
-/*
- * Determine ability to inline functions.
- */
-#if NiFpga_Cpp || NiFpga_C99
- /* The inline keyword exists in C++ and C99. */
- #define NiFpga_Inline inline
-#elif NiFpga_Msvc
- /* Visual C++ (at least since 6.0) also supports an alternate keyword. */
- #define NiFpga_Inline __inline
-#elif NiFpga_Gcc
- /* GCC (at least since 2.95.2) also supports an alternate keyword. */
- #define NiFpga_Inline __inline__
-#elif !defined(NiFpga_Inline)
- /*
- * Disable inlining if inline support is unknown. To manually enable
- * inlining, #define the following macro before #including NiFpga.h:
- *
- * #define NiFpga_Inline inline
- */
- #define NiFpga_Inline
-#endif
-
-/*
- * Define exact-width integer types, if they have not already been defined.
- */
-#if NiFpga_ExactWidthIntegerTypesDefined \
- || defined(_STDINT) \
- || defined(_STDINT_H) \
- || defined(_STDINT_H_) \
- || defined(_INTTYPES_H) \
- || defined(_INTTYPES_H_) \
- || defined(_SYS_STDINT_H) \
- || defined(_SYS_STDINT_H_) \
- || defined(_SYS_INTTYPES_H) \
- || defined(_SYS_INTTYPES_H_) \
- || defined(_STDINT_H_INCLUDED) \
- || defined(_MSC_STDINT_H_) \
- || defined(_PSTDINT_H_INCLUDED)
- /* Assume that exact-width integer types have already been defined. */
-#elif NiFpga_VxWorks
- /* VxWorks (at least 6.3 and earlier) did not have stdint.h. */
- #include <types/vxTypes.h>
-#elif NiFpga_C99 \
- || NiFpga_Gcc /* GCC (at least since 3.0) has a stdint.h. */ \
- || defined(HAVE_STDINT_H)
- /* Assume that stdint.h can be included. */
- #include <stdint.h>
-#elif NiFpga_Msvc \
- || NiFpga_Cvi
- /* Manually define exact-width integer types. */
- typedef signed char int8_t;
- typedef unsigned char uint8_t;
- typedef short int16_t;
- typedef unsigned short uint16_t;
- typedef int int32_t;
- typedef unsigned int uint32_t;
- typedef __int64 int64_t;
- typedef unsigned __int64 uint64_t;
-#else
- /*
- * Exact-width integer types must be defined by the user, and the following
- * macro must be #defined, before #including NiFpga.h:
- *
- * #define NiFpga_ExactWidthIntegerTypesDefined 1
- */
- #error Exact-width integer types must be defined by the user. See comment.
-#endif
-
-/* Included for definition of size_t. */
-#include <stddef.h>
-
-#if NiFpga_Cpp
-extern "C"
-{
-#endif
-
-/**
- * A boolean value; either NiFpga_False or NiFpga_True.
- */
-typedef uint8_t NiFpga_Bool;
-
-/**
- * Represents a false condition.
- */
-static const NiFpga_Bool NiFpga_False = 0;
-
-/**
- * Represents a true condition.
- */
-static const NiFpga_Bool NiFpga_True = 1;
-
-/**
- * Represents the resulting status of a function call through its return value.
- * 0 is success, negative values are errors, and positive values are warnings.
- */
-typedef int32_t NiFpga_Status;
-
-/**
- * No errors or warnings.
- */
-static const NiFpga_Status NiFpga_Status_Success = 0;
-
-/**
- * The timeout expired before the FIFO operation could complete.
- */
-static const NiFpga_Status NiFpga_Status_FifoTimeout = -50400;
-
-/**
- * A memory allocation failed. Try again after rebooting.
- */
-static const NiFpga_Status NiFpga_Status_MemoryFull = -52000;
-
-/**
- * An unexpected software error occurred.
- */
-static const NiFpga_Status NiFpga_Status_SoftwareFault = -52003;
-
-/**
- * A parameter to a function was not valid. This could be a NULL pointer, a bad
- * value, etc.
- */
-static const NiFpga_Status NiFpga_Status_InvalidParameter = -52005;
-
-/**
- * A required resource was not found. The NiFpga.* library, the RIO resource, or
- * some other resource may be missing.
- */
-static const NiFpga_Status NiFpga_Status_ResourceNotFound = -52006;
-
-/**
- * A required resource was not properly initialized. This could occur if
- * NiFpga_Initialize was not called or a required NiFpga_IrqContext was not
- * reserved.
- */
-static const NiFpga_Status NiFpga_Status_ResourceNotInitialized = -52010;
-
-/**
- * The FPGA is already running.
- */
-static const NiFpga_Status NiFpga_Status_FpgaAlreadyRunning = -61003;
-
-/**
- * An error occurred downloading the VI to the FPGA device. Verify that
- * the target is connected and powered and that the resource of the target
- * is properly configured.
- */
-static const NiFpga_Status NiFpga_Status_DownloadError = -61018;
-
-/**
- * The bitfile was not compiled for the specified resource's device type.
- */
-static const NiFpga_Status NiFpga_Status_DeviceTypeMismatch = -61024;
-
-/**
- * An error was detected in the communication between the host computer and the
- * FPGA target.
- */
-static const NiFpga_Status NiFpga_Status_CommunicationTimeout = -61046;
-
-/**
- * The timeout expired before any of the IRQs were asserted.
- */
-static const NiFpga_Status NiFpga_Status_IrqTimeout = -61060;
-
-/**
- * The specified bitfile is invalid or corrupt.
- */
-static const NiFpga_Status NiFpga_Status_CorruptBitfile = -61070;
-
-/**
- * The requested FIFO depth is invalid. It is either 0 or an amount not
- * supported by the hardware.
- */
-static const NiFpga_Status NiFpga_Status_BadDepth = -61072;
-
-/**
- * The number of FIFO elements is invalid. Either the number is greater than the
- * depth of the host memory DMA FIFO, or more elements were requested for
- * release than had been acquired.
- */
-static const NiFpga_Status NiFpga_Status_BadReadWriteCount = -61073;
-
-/**
- * A hardware clocking error occurred. A derived clock lost lock with its base
- * clock during the execution of the LabVIEW FPGA VI. If any base clocks with
- * derived clocks are referencing an external source, make sure that the
- * external source is connected and within the supported frequency, jitter,
- * accuracy, duty cycle, and voltage specifications. Also verify that the
- * characteristics of the base clock match the configuration specified in the
- * FPGA Base Clock Properties. If all base clocks with derived clocks are
- * generated from free-running, on-board sources, please contact National
- * Instruments technical support at ni.com/support.
- */
-static const NiFpga_Status NiFpga_Status_ClockLostLock = -61083;
-
-/**
- * The operation could not be performed because the FPGA is busy. Stop all
- * activities on the FPGA before requesting this operation. If the target is in
- * Scan Interface programming mode, put it in FPGA Interface programming mode.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusy = -61141;
-
-/**
- * The operation could not be performed because the FPGA is busy operating in
- * FPGA Interface C API mode. Stop all activities on the FPGA before requesting
- * this operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterfaceCApi = -61200;
-
-/**
- * The chassis is in Scan Interface programming mode. In order to run FPGA VIs,
- * you must go to the chassis properties page, select FPGA programming mode, and
- * deploy settings.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyScanInterface = -61201;
-
-/**
- * The operation could not be performed because the FPGA is busy operating in
- * FPGA Interface mode. Stop all activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyFpgaInterface = -61202;
-
-/**
- * The operation could not be performed because the FPGA is busy operating in
- * Interactive mode. Stop all activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyInteractive = -61203;
-
-/**
- * The operation could not be performed because the FPGA is busy operating in
- * Emulation mode. Stop all activities on the FPGA before requesting this
- * operation.
- */
-static const NiFpga_Status NiFpga_Status_FpgaBusyEmulation = -61204;
-
-/**
- * LabVIEW FPGA does not support the Reset method for bitfiles that allow
- * removal of implicit enable signals in single-cycle Timed Loops.
- */
-static const NiFpga_Status NiFpga_Status_ResetCalledWithImplicitEnableRemoval = -61211;
-
-/**
- * LabVIEW FPGA does not support the Abort method for bitfiles that allow
- * removal of implicit enable signals in single-cycle Timed Loops.
- */
-static const NiFpga_Status NiFpga_Status_AbortCalledWithImplicitEnableRemoval = -61212;
-
-/**
- * LabVIEW FPGA does not support Close and Reset if Last Reference for bitfiles
- * that allow removal of implicit enable signals in single-cycle Timed Loops.
- * Pass the NiFpga_CloseAttribute_NoResetIfLastSession attribute to NiFpga_Close
- * instead of 0.
- */
-static const NiFpga_Status NiFpga_Status_CloseAndResetCalledWithImplicitEnableRemoval = -61213;
-
-/**
- * For bitfiles that allow removal of implicit enable signals in single-cycle
- * Timed Loops, LabVIEW FPGA does not support this method prior to running the
- * bitfile.
- */
-static const NiFpga_Status NiFpga_Status_ImplicitEnableRemovalButNotYetRun = -61214;
-
-/**
- * Bitfiles that allow removal of implicit enable signals in single-cycle Timed
- * Loops can run only once. Download the bitfile again before re-running the VI.
- */
-static const NiFpga_Status NiFpga_Status_RunAfterStoppedCalledWithImplicitEnableRemoval = -61215;
-
-/**
- * A gated clock has violated the handshaking protocol. If you are using
- * external gated clocks, ensure that they follow the required clock gating
- * protocol. If you are generating your clocks internally, please contact
- * National Instruments Technical Support.
- */
-static const NiFpga_Status NiFpga_Status_GatedClockHandshakingViolation = -61216;
-
-/**
- * The number of elements requested must be less than or equal to the number of
- * unacquired elements left in the host memory DMA FIFO. There are currently
- * fewer unacquired elements left in the FIFO than are being requested. Release
- * some acquired elements before acquiring more elements.
- */
-static const NiFpga_Status NiFpga_Status_ElementsNotPermissibleToBeAcquired = -61219;
-
-/**
- * An unexpected internal error occurred.
- */
-static const NiFpga_Status NiFpga_Status_InternalError = -61499;
-
-/**
- * The NI-RIO driver was unable to allocate memory for a FIFO. This can happen
- * when the combined depth of all DMA FIFOs exceeds the maximum depth for the
- * controller, or when the controller runs out of system memory. You may be able
- * to reconfigure the controller with a greater maximum FIFO depth. For more
- * information, refer to the NI KnowledgeBase article 65OF2ERQ.
- */
-static const NiFpga_Status NiFpga_Status_TotalDmaFifoDepthExceeded = -63003;
-
-/**
- * Access to the remote system was denied. Use MAX to check the Remote Device
- * Access settings under Software>>NI-RIO>>NI-RIO Settings on the remote system.
- */
-static const NiFpga_Status NiFpga_Status_AccessDenied = -63033;
-
-/**
- * The NI-RIO software on the host is not compatible with the software on the
- * target. Upgrade the NI-RIO software on the host in order to connect to this
- * target.
- */
-static const NiFpga_Status NiFpga_Status_HostVersionMismatch = -63038;
-
-/**
- * A connection could not be established to the specified remote device. Ensure
- * that the device is on and accessible over the network, that NI-RIO software
- * is installed, and that the RIO server is running and properly configured.
- */
-static const NiFpga_Status NiFpga_Status_RpcConnectionError = -63040;
-
-/**
- * The RPC session is invalid. The target may have reset or been rebooted. Check
- * the network connection and retry the operation.
- */
-static const NiFpga_Status NiFpga_Status_RpcSessionError = -63043;
-
-/**
- * The operation could not complete because another session is accessing the
- * FIFO. Close the other session and retry.
- */
-static const NiFpga_Status NiFpga_Status_FifoReserved = -63082;
-
-/**
- * A Configure FIFO, Stop FIFO, Read FIFO, or Write FIFO function was called
- * while the host had acquired elements of the FIFO. Release all acquired
- * elements before configuring, stopping, reading, or writing.
- */
-static const NiFpga_Status NiFpga_Status_FifoElementsCurrentlyAcquired = -63083;
-
-/**
- * A function was called using a misaligned address. The address must be a
- * multiple of the size of the datatype.
- */
-static const NiFpga_Status NiFpga_Status_MisalignedAccess = -63084;
-
-/**
- * The FPGA Read/Write Control Function is accessing a control or indicator
- * with data that exceeds the maximum size supported on the current target.
- * Refer to the hardware documentation for the limitations on data types for
- * this target.
- */
-static const NiFpga_Status NiFpga_Status_ControlOrIndicatorTooLarge = -63085;
-
-/**
- * A valid .lvbitx bitfile is required. If you are using a valid .lvbitx
- * bitfile, the bitfile may not be compatible with the software you are using.
- * Determine which version of LabVIEW was used to make the bitfile, update your
- * software to that version or later, and try again.
- */
-static const NiFpga_Status NiFpga_Status_BitfileReadError = -63101;
-
-/**
- * The specified signature does not match the signature of the bitfile. If the
- * bitfile has been recompiled, regenerate the C API and rebuild the
- * application.
- */
-static const NiFpga_Status NiFpga_Status_SignatureMismatch = -63106;
-
-/**
- * The bitfile you are trying to use is not compatible with the version of
- * NI-RIO installed on the target and/or the host. Determine which versions of
- * NI-RIO and LabVIEW were used to make the bitfile, update the software on the
- * target and host to that version or later, and try again.
- */
-static const NiFpga_Status NiFpga_Status_IncompatibleBitfile = -63107;
-
-/**
- * Either the supplied resource name is invalid as a RIO resource name, or the
- * device was not found. Use MAX to find the proper resource name for the
- * intended device.
- */
-static const NiFpga_Status NiFpga_Status_InvalidResourceName = -63192;
-
-/**
- * The requested feature is not supported.
- */
-static const NiFpga_Status NiFpga_Status_FeatureNotSupported = -63193;
-
-/**
- * The NI-RIO software on the target system is not compatible with this
- * software. Upgrade the NI-RIO software on the target system.
- */
-static const NiFpga_Status NiFpga_Status_VersionMismatch = -63194;
-
-/**
- * The session is invalid or has been closed.
- */
-static const NiFpga_Status NiFpga_Status_InvalidSession = -63195;
-
-/**
- * The maximum number of open FPGA sessions has been reached. Close some open
- * sessions.
- */
-static const NiFpga_Status NiFpga_Status_OutOfHandles = -63198;
-
-/**
- * Tests whether a status is an error.
- *
- * @param status status to check for an error
- * @return whether the status was an error
- */
-static NiFpga_Inline NiFpga_Bool NiFpga_IsError(const NiFpga_Status status)
-{
- return status < NiFpga_Status_Success;
-}
-
-/**
- * Tests whether a status is not an error. Success and warnings are not errors.
- *
- * @param status status to check for an error
- * @return whether the status was a success or warning
- */
-static NiFpga_Inline NiFpga_Bool NiFpga_IsNotError(const NiFpga_Status status)
-{
- return status >= NiFpga_Status_Success;
-}
-
-/**
- * Conditionally sets the status to a new value. The previous status is
- * preserved unless the new status is more of an error, which means that
- * warnings and errors overwrite successes, and errors overwrite warnings. New
- * errors do not overwrite older errors, and new warnings do not overwrite
- * older warnings.
- *
- * @param status status to conditionally set
- * @param newStatus new status value that may be set
- * @return the resulting status
- */
-static NiFpga_Inline NiFpga_Status NiFpga_MergeStatus(
- NiFpga_Status* const status,
- const NiFpga_Status newStatus)
-{
- if (!status)
- return NiFpga_Status_InvalidParameter;
- if (NiFpga_IsNotError(*status)
- && (*status == NiFpga_Status_Success || NiFpga_IsError(newStatus)))
- *status = newStatus;
- return *status;
-}
-
-/**
- * This macro evaluates the expression only if the status is not an error. The
- * expression must evaluate to an NiFpga_Status, such as a call to any NiFpga_*
- * function, because the status will be set to the returned status if the
- * expression is evaluated.
- *
- * You can use this macro to mimic status chaining in LabVIEW, where the status
- * does not have to be explicitly checked after each call. Such code may look
- * like the following example.
- *
- * NiFpga_Status status = NiFpga_Status_Success;
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- * NiFpga_IfIsNotError(status, NiFpga_WriteU32(...));
- *
- * @param status status to check for an error
- * @param expression expression to call if the incoming status is not an error
- */
-#define NiFpga_IfIsNotError(status, expression) \
- if (NiFpga_IsNotError(status)) \
- NiFpga_MergeStatus(&status, (expression)); \
-
-/**
- * You must call this function before all other function calls. This function
- * loads the NiFpga library so that all the other functions will work. If this
- * function succeeds, you must call NiFpga_Finalize after all other function
- * calls.
- *
- * @warning This function is not thread safe.
- *
- * @return result of the call
- */
-NiFpga_Status NiFpga_Initialize(void);
-
-/**
- * You must call this function after all other function calls if
- * NiFpga_Initialize succeeds. This function unloads the NiFpga library.
- *
- * @warning This function is not thread safe.
- *
- * @return result of the call
- */
-NiFpga_Status NiFpga_Finalize(void);
-
-/**
- * A handle to an FPGA session.
- */
-typedef uint32_t NiFpga_Session;
-
-/**
- * Attributes that NiFpga_Open accepts.
- */
-typedef enum
-{
- NiFpga_OpenAttribute_NoRun = 1
-} NiFpga_OpenAttribute;
-
-/**
- * Opens a session to the FPGA. This call ensures that the contents of the
- * bitfile are programmed to the FPGA. The FPGA runs unless the
- * NiFpga_OpenAttribute_NoRun attribute is used.
- *
- * Because different operating systems have different default current working
- * directories for applications, you must pass an absolute path for the bitfile
- * parameter. If you pass only the filename instead of an absolute path, the
- * operating system may not be able to locate the bitfile. For example, the
- * default current working directories are C:\ni-rt\system\ for Phar Lap ETS and
- * /c/ for VxWorks. Because the generated *_Bitfile constant is a #define to a
- * string literal, you can use C/C++ string-literal concatenation to form an
- * absolute path. For example, if the bitfile is in the root directory of a
- * Phar Lap ETS system, pass the following for the bitfile parameter.
- *
- * "C:\\" NiFpga_MyApplication_Bitfile
- *
- * @param bitfile path to the bitfile
- * @param signature signature of the bitfile
- * @param resource RIO resource string to open ("RIO0" or "rio://mysystem/RIO")
- * @param attribute bitwise OR of any NiFpga_OpenAttributes, or 0
- * @param session outputs the session handle, which must be closed when no
- * longer needed
- * @return result of the call
- */
-NiFpga_Status NiFpga_Open(const char* bitfile,
- const char* signature,
- const char* resource,
- uint32_t attribute,
- NiFpga_Session* session);
-
-/**
- * Attributes that NiFpga_Close accepts.
- */
-typedef enum
-{
- NiFpga_CloseAttribute_NoResetIfLastSession = 1
-} NiFpga_CloseAttribute;
-
-/**
- * Closes the session to the FPGA. The FPGA resets unless either another session
- * is still open or you use the NiFpga_CloseAttribute_NoResetIfLastSession
- * attribute.
- *
- * @param session handle to a currently open session
- * @param attribute bitwise OR of any NiFpga_CloseAttributes, or 0
- * @return result of the call
- */
-NiFpga_Status NiFpga_Close(NiFpga_Session session,
- uint32_t attribute);
-
-/**
- * Attributes that NiFpga_Run accepts.
- */
-typedef enum
-{
- NiFpga_RunAttribute_WaitUntilDone = 1
-} NiFpga_RunAttribute;
-
-/**
- * Runs the FPGA VI on the target. If you use NiFpga_RunAttribute_WaitUntilDone,
- * NiFpga_Run blocks the thread until the FPGA finishes running.
- *
- * @param session handle to a currently open session
- * @param attribute bitwise OR of any NiFpga_RunAttributes, or 0
- * @return result of the call
- */
-NiFpga_Status NiFpga_Run(NiFpga_Session session,
- uint32_t attribute);
-
-/**
- * Aborts the FPGA VI.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Abort(NiFpga_Session session);
-
-/**
- * Resets the FPGA VI.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Reset(NiFpga_Session session);
-
-/**
- * Re-downloads the FPGA bitstream to the target.
- *
- * @param session handle to a currently open session
- * @return result of the call
- */
-NiFpga_Status NiFpga_Download(NiFpga_Session session);
-
-/**
- * Reads a boolean value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadBool(NiFpga_Session session,
- uint32_t indicator,
- NiFpga_Bool* value);
-
-/**
- * Reads a signed 8-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI8(NiFpga_Session session,
- uint32_t indicator,
- int8_t* value);
-
-/**
- * Reads an unsigned 8-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU8(NiFpga_Session session,
- uint32_t indicator,
- uint8_t* value);
-
-/**
- * Reads a signed 16-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI16(NiFpga_Session session,
- uint32_t indicator,
- int16_t* value);
-
-/**
- * Reads an unsigned 16-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU16(NiFpga_Session session,
- uint32_t indicator,
- uint16_t* value);
-
-/**
- * Reads a signed 32-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI32(NiFpga_Session session,
- uint32_t indicator,
- int32_t* value);
-
-/**
- * Reads an unsigned 32-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU32(NiFpga_Session session,
- uint32_t indicator,
- uint32_t* value);
-
-/**
- * Reads a signed 64-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadI64(NiFpga_Session session,
- uint32_t indicator,
- int64_t* value);
-
-/**
- * Reads an unsigned 64-bit integer value from a given indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param value outputs the value that was read
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadU64(NiFpga_Session session,
- uint32_t indicator,
- uint64_t* value);
-
-/**
- * Writes a boolean value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteBool(NiFpga_Session session,
- uint32_t control,
- NiFpga_Bool value);
-
-/**
- * Writes a signed 8-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI8(NiFpga_Session session,
- uint32_t control,
- int8_t value);
-
-/**
- * Writes an unsigned 8-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU8(NiFpga_Session session,
- uint32_t control,
- uint8_t value);
-
-/**
- * Writes a signed 16-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI16(NiFpga_Session session,
- uint32_t control,
- int16_t value);
-
-/**
- * Writes an unsigned 16-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU16(NiFpga_Session session,
- uint32_t control,
- uint16_t value);
-
-/**
- * Writes a signed 32-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI32(NiFpga_Session session,
- uint32_t control,
- int32_t value);
-
-/**
- * Writes an unsigned 32-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU32(NiFpga_Session session,
- uint32_t control,
- uint32_t value);
-
-/**
- * Writes a signed 64-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteI64(NiFpga_Session session,
- uint32_t control,
- int64_t value);
-
-/**
- * Writes an unsigned 64-bit integer value to a given control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param value value to write
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteU64(NiFpga_Session session,
- uint32_t control,
- uint64_t value);
-
-/**
- * Reads an entire array of boolean values from a given array indicator or
- * control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayBool(NiFpga_Session session,
- uint32_t indicator,
- NiFpga_Bool* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 8-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI8(NiFpga_Session session,
- uint32_t indicator,
- int8_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 8-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU8(NiFpga_Session session,
- uint32_t indicator,
- uint8_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 16-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI16(NiFpga_Session session,
- uint32_t indicator,
- int16_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 16-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU16(NiFpga_Session session,
- uint32_t indicator,
- uint16_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 32-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI32(NiFpga_Session session,
- uint32_t indicator,
- int32_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 32-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU32(NiFpga_Session session,
- uint32_t indicator,
- uint32_t* array,
- size_t size);
-
-/**
- * Reads an entire array of signed 64-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayI64(NiFpga_Session session,
- uint32_t indicator,
- int64_t* array,
- size_t size);
-
-/**
- * Reads an entire array of unsigned 64-bit integer values from a given array
- * indicator or control.
- *
- * @warning The size passed must be the exact number of elements in the
- * indicator or control.
- *
- * @param session handle to a currently open session
- * @param indicator indicator or control from which to read
- * @param array outputs the entire array that was read
- * @param size exact number of elements in the indicator or control
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadArrayU64(NiFpga_Session session,
- uint32_t indicator,
- uint64_t* array,
- size_t size);
-
-/**
- * Writes an entire array of boolean values to a given array control or
- * indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayBool(NiFpga_Session session,
- uint32_t control,
- const NiFpga_Bool* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 8-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI8(NiFpga_Session session,
- uint32_t control,
- const int8_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 8-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU8(NiFpga_Session session,
- uint32_t control,
- const uint8_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 16-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI16(NiFpga_Session session,
- uint32_t control,
- const int16_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 16-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU16(NiFpga_Session session,
- uint32_t control,
- const uint16_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 32-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI32(NiFpga_Session session,
- uint32_t control,
- const int32_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 32-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU32(NiFpga_Session session,
- uint32_t control,
- const uint32_t* array,
- size_t size);
-
-/**
- * Writes an entire array of signed 64-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayI64(NiFpga_Session session,
- uint32_t control,
- const int64_t* array,
- size_t size);
-
-/**
- * Writes an entire array of unsigned 64-bit integer values to a given array
- * control or indicator.
- *
- * @warning The size passed must be the exact number of elements in the
- * control or indicator.
- *
- * @param session handle to a currently open session
- * @param control control or indicator to which to write
- * @param array entire array to write
- * @param size exact number of elements in the control or indicator
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteArrayU64(NiFpga_Session session,
- uint32_t control,
- const uint64_t* array,
- size_t size);
-
-/**
- * Enumeration of all 32 possible IRQs. Multiple IRQs can be bitwise ORed
- * together like this:
- *
- * NiFpga_Irq_3 | NiFpga_Irq_23
- */
-typedef enum
-{
- NiFpga_Irq_0 = 1 << 0,
- NiFpga_Irq_1 = 1 << 1,
- NiFpga_Irq_2 = 1 << 2,
- NiFpga_Irq_3 = 1 << 3,
- NiFpga_Irq_4 = 1 << 4,
- NiFpga_Irq_5 = 1 << 5,
- NiFpga_Irq_6 = 1 << 6,
- NiFpga_Irq_7 = 1 << 7,
- NiFpga_Irq_8 = 1 << 8,
- NiFpga_Irq_9 = 1 << 9,
- NiFpga_Irq_10 = 1 << 10,
- NiFpga_Irq_11 = 1 << 11,
- NiFpga_Irq_12 = 1 << 12,
- NiFpga_Irq_13 = 1 << 13,
- NiFpga_Irq_14 = 1 << 14,
- NiFpga_Irq_15 = 1 << 15,
- NiFpga_Irq_16 = 1 << 16,
- NiFpga_Irq_17 = 1 << 17,
- NiFpga_Irq_18 = 1 << 18,
- NiFpga_Irq_19 = 1 << 19,
- NiFpga_Irq_20 = 1 << 20,
- NiFpga_Irq_21 = 1 << 21,
- NiFpga_Irq_22 = 1 << 22,
- NiFpga_Irq_23 = 1 << 23,
- NiFpga_Irq_24 = 1 << 24,
- NiFpga_Irq_25 = 1 << 25,
- NiFpga_Irq_26 = 1 << 26,
- NiFpga_Irq_27 = 1 << 27,
- NiFpga_Irq_28 = 1 << 28,
- NiFpga_Irq_29 = 1 << 29,
- NiFpga_Irq_30 = 1 << 30,
- NiFpga_Irq_31 = 1U << 31
-} NiFpga_Irq;
-
-/**
- * Represents an infinite timeout.
- */
-static const uint32_t NiFpga_InfiniteTimeout = 0xFFFFFFFF;
-
-/**
- * See NiFpga_ReserveIrqContext for more information.
- */
-typedef void* NiFpga_IrqContext;
-
-/**
- * IRQ contexts are single-threaded; only one thread can wait with a particular
- * context at any given time. Clients must reserve as many contexts as the
- * application requires.
- *
- * If a context is successfully reserved (the returned status is not an error),
- * it must be unreserved later. Otherwise a memory leak will occur.
- *
- * @param session handle to a currently open session
- * @param context outputs the IRQ context
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReserveIrqContext(NiFpga_Session session,
- NiFpga_IrqContext* context);
-
-/**
- * Unreserves an IRQ context obtained from NiFpga_ReserveIrqContext.
- *
- * @param session handle to a currently open session
- * @param context IRQ context to unreserve
- * @return result of the call
- */
-NiFpga_Status NiFpga_UnreserveIrqContext(NiFpga_Session session,
- NiFpga_IrqContext context);
-
-/**
- * This is a blocking function that stops the calling thread until the FPGA
- * asserts any IRQ in the irqs parameter, or until the function call times out.
- * Before calling this function, you must use NiFpga_ReserveIrqContext to
- * reserve an IRQ context. No other threads can use the same context when this
- * function is called.
- *
- * You can use the irqsAsserted parameter to determine which IRQs were asserted
- * for each function call.
- *
- * @param session handle to a currently open session
- * @param context IRQ context with which to wait
- * @param irqs bitwise OR of NiFpga_Irqs
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param irqsAsserted if non-NULL, outputs bitwise OR of IRQs that were
- * asserted
- * @param timedOut if non-NULL, outputs whether the timeout expired
- * @return result of the call
- */
-NiFpga_Status NiFpga_WaitOnIrqs(NiFpga_Session session,
- NiFpga_IrqContext context,
- uint32_t irqs,
- uint32_t timeout,
- uint32_t* irqsAsserted,
- NiFpga_Bool* timedOut);
-
-/**
- * Acknowledges an IRQ or set of IRQs.
- *
- * @param session handle to a currently open session
- * @param irqs bitwise OR of NiFpga_Irqs
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcknowledgeIrqs(NiFpga_Session session,
- uint32_t irqs);
-
-/**
- * Specifies the depth of the host memory part of the DMA FIFO. This method is
- * optional. In order to see the actual depth configured, use
- * NiFpga_ConfigureFifo2.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to configure
- * @param depth requested number of elements in the host memory part of the
- * DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ConfigureFifo(NiFpga_Session session,
- uint32_t fifo,
- size_t depth);
-
-/**
- * Specifies the depth of the host memory part of the DMA FIFO. This method is
- * optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to configure
- * @param requestedDepth requested number of elements in the host memory part
- * of the DMA FIFO
- * @param actualDepth if non-NULL, outputs the actual number of elements in the
- * host memory part of the DMA FIFO, which may be more than
- * the requested number
- * @return result of the call
- */
-NiFpga_Status NiFpga_ConfigureFifo2(NiFpga_Session session,
- uint32_t fifo,
- size_t requestedDepth,
- size_t* actualDepth);
-
-/**
- * Starts a FIFO. This method is optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to start
- * @return result of the call
- */
-NiFpga_Status NiFpga_StartFifo(NiFpga_Session session,
- uint32_t fifo);
-
-/**
- * Stops a FIFO. This method is optional.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO to stop
- * @return result of the call
- */
-NiFpga_Status NiFpga_StopFifo(NiFpga_Session session,
- uint32_t fifo);
-
-/**
- * Reads from a target-to-host FIFO of booleans.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoBool(NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI8(NiFpga_Session session,
- uint32_t fifo,
- int8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU8(NiFpga_Session session,
- uint32_t fifo,
- uint8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI16(NiFpga_Session session,
- uint32_t fifo,
- int16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU16(NiFpga_Session session,
- uint32_t fifo,
- uint16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI32(NiFpga_Session session,
- uint32_t fifo,
- int32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU32(NiFpga_Session session,
- uint32_t fifo,
- uint32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of signed 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoI64(NiFpga_Session session,
- uint32_t fifo,
- int64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Reads from a target-to-host FIFO of unsigned 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param data outputs the data that was read
- * @param numberOfElements number of elements to read
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReadFifoU64(NiFpga_Session session,
- uint32_t fifo,
- uint64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* elementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of booleans.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoBool(NiFpga_Session session,
- uint32_t fifo,
- const NiFpga_Bool* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI8(NiFpga_Session session,
- uint32_t fifo,
- const int8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 8-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU8(NiFpga_Session session,
- uint32_t fifo,
- const uint8_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI16(NiFpga_Session session,
- uint32_t fifo,
- const int16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 16-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU16(NiFpga_Session session,
- uint32_t fifo,
- const uint16_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI32(NiFpga_Session session,
- uint32_t fifo,
- const int32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 32-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU32(NiFpga_Session session,
- uint32_t fifo,
- const uint32_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of signed 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoI64(NiFpga_Session session,
- uint32_t fifo,
- const int64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Writes to a host-to-target FIFO of unsigned 64-bit integers.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param data data to write
- * @param numberOfElements number of elements to write
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param emptyElementsRemaining if non-NULL, outputs the number of empty
- * elements remaining in the host memory part of
- * the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_WriteFifoU64(NiFpga_Session session,
- uint32_t fifo,
- const uint64_t* data,
- size_t numberOfElements,
- uint32_t timeout,
- size_t* emptyElementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of booleans.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsBool(
- NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 8-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI8(
- NiFpga_Session session,
- uint32_t fifo,
- int8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 8-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU8(
- NiFpga_Session session,
- uint32_t fifo,
- uint8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 16-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI16(
- NiFpga_Session session,
- uint32_t fifo,
- int16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 16-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU16(
- NiFpga_Session session,
- uint32_t fifo,
- uint16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 32-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI32(
- NiFpga_Session session,
- uint32_t fifo,
- int32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 32-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU32(
- NiFpga_Session session,
- uint32_t fifo,
- uint32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of signed 64-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsI64(
- NiFpga_Session session,
- uint32_t fifo,
- int64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for reading from a target-to-host FIFO of unsigned 64-bit
- * integers.
- *
- * Acquiring, reading, and releasing FIFO elements prevents the need to copy
- * the contents of elements from the host memory buffer to a separate
- * user-allocated buffer before reading. The FPGA target cannot write to
- * elements acquired by the host. Therefore, the host must release elements
- * after reading them. The number of elements acquired may differ from the
- * number of elements requested if, for example, the number of elements
- * requested reaches the end of the host memory buffer. Always release all
- * acquired elements before closing the session. Do not attempt to access FIFO
- * elements after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo target-to-host FIFO from which to read
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoReadElementsU64(
- NiFpga_Session session,
- uint32_t fifo,
- uint64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of booleans.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsBool(
- NiFpga_Session session,
- uint32_t fifo,
- NiFpga_Bool** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 8-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI8(
- NiFpga_Session session,
- uint32_t fifo,
- int8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 8-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU8(
- NiFpga_Session session,
- uint32_t fifo,
- uint8_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 16-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI16(
- NiFpga_Session session,
- uint32_t fifo,
- int16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 16-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU16(
- NiFpga_Session session,
- uint32_t fifo,
- uint16_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 32-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI32(
- NiFpga_Session session,
- uint32_t fifo,
- int32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 32-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU32(
- NiFpga_Session session,
- uint32_t fifo,
- uint32_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of signed 64-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsI64(
- NiFpga_Session session,
- uint32_t fifo,
- int64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Acquires elements for writing to a host-to-target FIFO of unsigned 64-bit
- * integers.
- *
- * Acquiring, writing, and releasing FIFO elements prevents the need to write
- * first into a separate user-allocated buffer and then copy the contents of
- * elements to the host memory buffer. The FPGA target cannot read elements
- * acquired by the host. Therefore, the host must release elements after
- * writing to them. The number of elements acquired may differ from the number
- * of elements requested if, for example, the number of elements requested
- * reaches the end of the host memory buffer. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo host-to-target FIFO to which to write
- * @param elements outputs a pointer to the elements acquired
- * @param elementsRequested requested number of elements
- * @param timeout timeout in milliseconds, or NiFpga_InfiniteTimeout
- * @param elementsAcquired actual number of elements acquired, which may be
- * less than the requested number
- * @param elementsRemaining if non-NULL, outputs the number of elements
- * remaining in the host memory part of the DMA FIFO
- * @return result of the call
- */
-NiFpga_Status NiFpga_AcquireFifoWriteElementsU64(
- NiFpga_Session session,
- uint32_t fifo,
- uint64_t** elements,
- size_t elementsRequested,
- uint32_t timeout,
- size_t* elementsAcquired,
- size_t* elementsRemaining);
-
-/**
- * Releases previously acquired FIFO elements.
- *
- * The FPGA target cannot read elements acquired by the host. Therefore, the
- * host must release elements after acquiring them. Always release all acquired
- * elements before closing the session. Do not attempt to access FIFO elements
- * after the elements are released or the session is closed.
- *
- * @param session handle to a currently open session
- * @param fifo FIFO from which to release elements
- * @param elements number of elements to release
- * @return result of the call
- */
-NiFpga_Status NiFpga_ReleaseFifoElements(NiFpga_Session session,
- uint32_t fifo,
- size_t elements);
-
-/**
- * Gets an endpoint reference to a peer-to-peer FIFO.
- *
- * @param session handle to a currently open session
- * @param fifo peer-to-peer FIFO
- * @param endpoint outputs the endpoint reference
- * @return result of the call
- */
-NiFpga_Status NiFpga_GetPeerToPeerFifoEndpoint(NiFpga_Session session,
- uint32_t fifo,
- uint32_t* endpoint);
-
-#if NiFpga_Cpp
-}
-#endif
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/ChipObject/printFpgaVersion.h b/aos/externals/WPILib/WPILib/ChipObject/printFpgaVersion.h
deleted file mode 100644
index 044e0ef..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/printFpgaVersion.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __printFPGAVersion_h__
-#define __printFPGAVersion_h__
-
-namespace nFPGA
-{
-
-template<typename ttGlobal>
-inline void printFPGAVersion(ttGlobal &global)
-{
- tRioStatusCode cleanStatus=0;
- uint32_t hardwareGuid[4];
- tSystemInterface &system = *global.getSystemInterface();
- system.getHardwareFpgaSignature(hardwareGuid, &cleanStatus);
- const uint32_t *softwareGuid = system.getExpectedFPGASignature();
- printf("FPGA Hardware GUID: 0x");
- for(int i=0; i<4; i++)
- {
- printf("%08X", hardwareGuid[i]);
- }
- printf("\n");
- printf("FPGA Software GUID: 0x");
- for(int i=0; i<4; i++)
- {
- printf("%08X", softwareGuid[i]);
- }
- printf("\n");
- uint16_t fpgaHardwareVersion = global.readVersion(&cleanStatus);
- uint16_t fpgaSoftwareVersion = system.getExpectedFPGAVersion();
- printf("FPGA Hardware Version: %X\n", fpgaHardwareVersion);
- printf("FPGA Software Version: %X\n", fpgaSoftwareVersion);
- uint32_t fpgaHardwareRevision = global.readRevision(&cleanStatus);
- uint32_t fpgaSoftwareRevision = system.getExpectedFPGARevision();
- printf("FPGA Hardware Revision: %X.%X.%X\n", (fpgaHardwareRevision >> 20) & 0xFFF, (fpgaHardwareRevision >> 12) & 0xFF, fpgaHardwareRevision & 0xFFF);
- printf("FPGA Software Revision: %X.%X.%X\n", (fpgaSoftwareRevision >> 20) & 0xFFF, (fpgaSoftwareRevision >> 12) & 0xFF, fpgaSoftwareRevision & 0xFFF);
-}
-
-}
-
-#endif // __tSystemInterface_h__
-
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tAI.h b/aos/externals/WPILib/WPILib/ChipObject/tAI.h
deleted file mode 100644
index 6316af6..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tAI.h
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_AI_h__
-#define __nFRC_2012_1_6_4_AI_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tAI
-{
-public:
- tAI(){}
- virtual ~tAI(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tAI* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 2,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Channel : 3;
- unsigned Module : 1;
- unsigned Averaged : 1;
-#else
- unsigned Averaged : 1;
- unsigned Module : 1;
- unsigned Channel : 3;
-#endif
- };
- struct{
- unsigned value : 5;
- };
- } tReadSelect;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned ScanSize : 3;
- unsigned ConvertRate : 26;
-#else
- unsigned ConvertRate : 26;
- unsigned ScanSize : 3;
-#endif
- };
- struct{
- unsigned value : 29;
- };
- } tConfig;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ScanSize(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ConvertRate(unsigned int value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_ScanSize(tRioStatusCode *status) = 0;
- virtual unsigned int readConfig_ConvertRate(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tLoopTiming_IfaceConstants;
-
- virtual unsigned int readLoopTiming(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumOversampleBitsElements = 8,
- } tOversampleBits_IfaceConstants;
-
- virtual void writeOversampleBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readOversampleBits(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumAverageBitsElements = 8,
- } tAverageBits_IfaceConstants;
-
- virtual void writeAverageBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readAverageBits(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumScanListElements = 8,
- } tScanList_IfaceConstants;
-
- virtual void writeScanList(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readScanList(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
-
- typedef enum
- {
- } tOutput_IfaceConstants;
-
- virtual signed int readOutput(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tLatchOutput_IfaceConstants;
-
- virtual void strobeLatchOutput(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReadSelect_IfaceConstants;
-
- virtual void writeReadSelect(tReadSelect value, tRioStatusCode *status) = 0;
- virtual void writeReadSelect_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeReadSelect_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeReadSelect_Averaged(bool value, tRioStatusCode *status) = 0;
- virtual tReadSelect readReadSelect(tRioStatusCode *status) = 0;
- virtual unsigned char readReadSelect_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readReadSelect_Module(tRioStatusCode *status) = 0;
- virtual bool readReadSelect_Averaged(tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tAI(const tAI&);
- void operator=(const tAI&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_AI_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tAccumulator.h b/aos/externals/WPILib/WPILib/ChipObject/tAccumulator.h
deleted file mode 100644
index d182882..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tAccumulator.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Accumulator_h__
-#define __nFRC_2012_1_6_4_Accumulator_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tAccumulator
-{
-public:
- tAccumulator(){}
- virtual ~tAccumulator(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tAccumulator* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 2,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
- signed long long Value;
- unsigned Count : 32;
- };
- struct{
- unsigned value : 32;
- unsigned value2 : 32;
- unsigned value3 : 32;
- };
- } tOutput;
-
-
- typedef enum
- {
- } tOutput_IfaceConstants;
-
- virtual tOutput readOutput(tRioStatusCode *status) = 0;
- virtual signed long long readOutput_Value(tRioStatusCode *status) = 0;
- virtual unsigned int readOutput_Count(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tCenter_IfaceConstants;
-
- virtual void writeCenter(signed int value, tRioStatusCode *status) = 0;
- virtual signed int readCenter(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tDeadband_IfaceConstants;
-
- virtual void writeDeadband(signed int value, tRioStatusCode *status) = 0;
- virtual signed int readDeadband(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReset_IfaceConstants;
-
- virtual void strobeReset(tRioStatusCode *status) = 0;
-
-
-
-
-
-private:
- tAccumulator(const tAccumulator&);
- void operator=(const tAccumulator&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Accumulator_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tAlarm.h b/aos/externals/WPILib/WPILib/ChipObject/tAlarm.h
deleted file mode 100644
index a1c2f51..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tAlarm.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Alarm_h__
-#define __nFRC_2012_1_6_4_Alarm_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tAlarm
-{
-public:
- tAlarm(){}
- virtual ~tAlarm(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tAlarm* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
-
-
-
- typedef enum
- {
- } tEnable_IfaceConstants;
-
- virtual void writeEnable(bool value, tRioStatusCode *status) = 0;
- virtual bool readEnable(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTriggerTime_IfaceConstants;
-
- virtual void writeTriggerTime(unsigned int value, tRioStatusCode *status) = 0;
- virtual unsigned int readTriggerTime(tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tAlarm(const tAlarm&);
- void operator=(const tAlarm&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Alarm_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tAnalogTrigger.h b/aos/externals/WPILib/WPILib/ChipObject/tAnalogTrigger.h
deleted file mode 100644
index 4fabd9c..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tAnalogTrigger.h
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_AnalogTrigger_h__
-#define __nFRC_2012_1_6_4_AnalogTrigger_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tAnalogTrigger
-{
-public:
- tAnalogTrigger(){}
- virtual ~tAnalogTrigger(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tAnalogTrigger* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 8,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned InHysteresis : 1;
- unsigned OverLimit : 1;
- unsigned Rising : 1;
- unsigned Falling : 1;
-#else
- unsigned Falling : 1;
- unsigned Rising : 1;
- unsigned OverLimit : 1;
- unsigned InHysteresis : 1;
-#endif
- };
- struct{
- unsigned value : 4;
- };
- } tOutput;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Channel : 3;
- unsigned Module : 1;
- unsigned Averaged : 1;
- unsigned Filter : 1;
- unsigned FloatingRollover : 1;
- signed RolloverLimit : 8;
-#else
- signed RolloverLimit : 8;
- unsigned FloatingRollover : 1;
- unsigned Filter : 1;
- unsigned Averaged : 1;
- unsigned Module : 1;
- unsigned Channel : 3;
-#endif
- };
- struct{
- unsigned value : 15;
- };
- } tSourceSelect;
-
-
- typedef enum
- {
- } tSourceSelect_IfaceConstants;
-
- virtual void writeSourceSelect(tSourceSelect value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_Averaged(bool value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_Filter(bool value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_FloatingRollover(bool value, tRioStatusCode *status) = 0;
- virtual void writeSourceSelect_RolloverLimit(signed short value, tRioStatusCode *status) = 0;
- virtual tSourceSelect readSourceSelect(tRioStatusCode *status) = 0;
- virtual unsigned char readSourceSelect_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readSourceSelect_Module(tRioStatusCode *status) = 0;
- virtual bool readSourceSelect_Averaged(tRioStatusCode *status) = 0;
- virtual bool readSourceSelect_Filter(tRioStatusCode *status) = 0;
- virtual bool readSourceSelect_FloatingRollover(tRioStatusCode *status) = 0;
- virtual signed short readSourceSelect_RolloverLimit(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tUpperLimit_IfaceConstants;
-
- virtual void writeUpperLimit(signed int value, tRioStatusCode *status) = 0;
- virtual signed int readUpperLimit(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tLowerLimit_IfaceConstants;
-
- virtual void writeLowerLimit(signed int value, tRioStatusCode *status) = 0;
- virtual signed int readLowerLimit(tRioStatusCode *status) = 0;
-
-
-
- typedef enum
- {
- kNumOutputElements = 8,
- } tOutput_IfaceConstants;
-
- virtual tOutput readOutput(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readOutput_InHysteresis(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readOutput_OverLimit(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readOutput_Rising(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readOutput_Falling(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tAnalogTrigger(const tAnalogTrigger&);
- void operator=(const tAnalogTrigger&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_AnalogTrigger_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tCounter.h b/aos/externals/WPILib/WPILib/ChipObject/tCounter.h
deleted file mode 100644
index 200ffb3..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tCounter.h
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Counter_h__
-#define __nFRC_2012_1_6_4_Counter_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tCounter
-{
-public:
- tCounter(){}
- virtual ~tCounter(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tCounter* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 8,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Direction : 1;
- signed Value : 31;
-#else
- signed Value : 31;
- unsigned Direction : 1;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tOutput;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned UpSource_Channel : 4;
- unsigned UpSource_Module : 1;
- unsigned UpSource_AnalogTrigger : 1;
- unsigned DownSource_Channel : 4;
- unsigned DownSource_Module : 1;
- unsigned DownSource_AnalogTrigger : 1;
- unsigned IndexSource_Channel : 4;
- unsigned IndexSource_Module : 1;
- unsigned IndexSource_AnalogTrigger : 1;
- unsigned IndexActiveHigh : 1;
- unsigned UpRisingEdge : 1;
- unsigned UpFallingEdge : 1;
- unsigned DownRisingEdge : 1;
- unsigned DownFallingEdge : 1;
- unsigned Mode : 2;
- unsigned PulseLengthThreshold : 6;
- unsigned Enable : 1;
-#else
- unsigned Enable : 1;
- unsigned PulseLengthThreshold : 6;
- unsigned Mode : 2;
- unsigned DownFallingEdge : 1;
- unsigned DownRisingEdge : 1;
- unsigned UpFallingEdge : 1;
- unsigned UpRisingEdge : 1;
- unsigned IndexActiveHigh : 1;
- unsigned IndexSource_AnalogTrigger : 1;
- unsigned IndexSource_Module : 1;
- unsigned IndexSource_Channel : 4;
- unsigned DownSource_AnalogTrigger : 1;
- unsigned DownSource_Module : 1;
- unsigned DownSource_Channel : 4;
- unsigned UpSource_AnalogTrigger : 1;
- unsigned UpSource_Module : 1;
- unsigned UpSource_Channel : 4;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Period : 23;
- signed Count : 8;
- unsigned Stalled : 1;
-#else
- unsigned Stalled : 1;
- signed Count : 8;
- unsigned Period : 23;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tTimerOutput;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned StallPeriod : 24;
- unsigned AverageSize : 7;
- unsigned UpdateWhenEmpty : 1;
-#else
- unsigned UpdateWhenEmpty : 1;
- unsigned AverageSize : 7;
- unsigned StallPeriod : 24;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tTimerConfig;
-
-
- typedef enum
- {
- } tOutput_IfaceConstants;
-
- virtual tOutput readOutput(tRioStatusCode *status) = 0;
- virtual bool readOutput_Direction(tRioStatusCode *status) = 0;
- virtual signed int readOutput_Value(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_UpSource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_UpSource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_UpSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DownSource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DownSource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DownSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_UpRisingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_UpFallingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DownRisingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DownFallingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Mode(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_PulseLengthThreshold(unsigned short value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_UpSource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_UpSource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_UpSource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_DownSource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_DownSource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_DownSource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0;
- virtual bool readConfig_UpRisingEdge(tRioStatusCode *status) = 0;
- virtual bool readConfig_UpFallingEdge(tRioStatusCode *status) = 0;
- virtual bool readConfig_DownRisingEdge(tRioStatusCode *status) = 0;
- virtual bool readConfig_DownFallingEdge(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_Mode(tRioStatusCode *status) = 0;
- virtual unsigned short readConfig_PulseLengthThreshold(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTimerOutput_IfaceConstants;
-
- virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0;
- virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0;
- virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0;
- virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReset_IfaceConstants;
-
- virtual void strobeReset(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTimerConfig_IfaceConstants;
-
- virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0;
- virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0;
- virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0;
- virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0;
- virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0;
-
-
-
-
-
-private:
- tCounter(const tCounter&);
- void operator=(const tCounter&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Counter_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tDIO.h b/aos/externals/WPILib/WPILib/ChipObject/tDIO.h
deleted file mode 100644
index d9852c9..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tDIO.h
+++ /dev/null
@@ -1,330 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_DIO_h__
-#define __nFRC_2012_1_6_4_DIO_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tDIO
-{
-public:
- tDIO(){}
- virtual ~tDIO(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tDIO* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 2,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Period : 16;
- unsigned MinHigh : 16;
-#else
- unsigned MinHigh : 16;
- unsigned Period : 16;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tPWMConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned RelayFwd : 8;
- unsigned RelayRev : 8;
- unsigned I2CHeader : 4;
-#else
- unsigned I2CHeader : 4;
- unsigned RelayRev : 8;
- unsigned RelayFwd : 8;
-#endif
- };
- struct{
- unsigned value : 20;
- };
- } tSlowValue;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Transaction : 1;
- unsigned Done : 1;
- unsigned Aborted : 1;
- unsigned DataReceivedHigh : 24;
-#else
- unsigned DataReceivedHigh : 24;
- unsigned Aborted : 1;
- unsigned Done : 1;
- unsigned Transaction : 1;
-#endif
- };
- struct{
- unsigned value : 27;
- };
- } tI2CStatus;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Address : 8;
- unsigned BytesToRead : 3;
- unsigned BytesToWrite : 3;
- unsigned DataToSendHigh : 16;
- unsigned BitwiseHandshake : 1;
-#else
- unsigned BitwiseHandshake : 1;
- unsigned DataToSendHigh : 16;
- unsigned BytesToWrite : 3;
- unsigned BytesToRead : 3;
- unsigned Address : 8;
-#endif
- };
- struct{
- unsigned value : 31;
- };
- } tI2CConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned PeriodPower : 4;
- unsigned OutputSelect_0 : 4;
- unsigned OutputSelect_1 : 4;
- unsigned OutputSelect_2 : 4;
- unsigned OutputSelect_3 : 4;
-#else
- unsigned OutputSelect_3 : 4;
- unsigned OutputSelect_2 : 4;
- unsigned OutputSelect_1 : 4;
- unsigned OutputSelect_0 : 4;
- unsigned PeriodPower : 4;
-#endif
- };
- struct{
- unsigned value : 20;
- };
- } tDO_PWMConfig;
-
-
- typedef enum
- {
- kNumFilterSelectElements = 16,
- } tFilterSelect_IfaceConstants;
-
- virtual void writeFilterSelect(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readFilterSelect(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tI2CDataToSend_IfaceConstants;
-
- virtual void writeI2CDataToSend(unsigned int value, tRioStatusCode *status) = 0;
- virtual unsigned int readI2CDataToSend(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tDO_IfaceConstants;
-
- virtual void writeDO(unsigned short value, tRioStatusCode *status) = 0;
- virtual unsigned short readDO(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumFilterPeriodElements = 3,
- } tFilterPeriod_IfaceConstants;
-
- virtual void writeFilterPeriod(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readFilterPeriod(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tOutputEnable_IfaceConstants;
-
- virtual void writeOutputEnable(unsigned short value, tRioStatusCode *status) = 0;
- virtual unsigned short readOutputEnable(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tPulse_IfaceConstants;
-
- virtual void writePulse(unsigned short value, tRioStatusCode *status) = 0;
- virtual unsigned short readPulse(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tSlowValue_IfaceConstants;
-
- virtual void writeSlowValue(tSlowValue value, tRioStatusCode *status) = 0;
- virtual void writeSlowValue_RelayFwd(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeSlowValue_RelayRev(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeSlowValue_I2CHeader(unsigned char value, tRioStatusCode *status) = 0;
- virtual tSlowValue readSlowValue(tRioStatusCode *status) = 0;
- virtual unsigned char readSlowValue_RelayFwd(tRioStatusCode *status) = 0;
- virtual unsigned char readSlowValue_RelayRev(tRioStatusCode *status) = 0;
- virtual unsigned char readSlowValue_I2CHeader(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tI2CStatus_IfaceConstants;
-
- virtual tI2CStatus readI2CStatus(tRioStatusCode *status) = 0;
- virtual unsigned char readI2CStatus_Transaction(tRioStatusCode *status) = 0;
- virtual bool readI2CStatus_Done(tRioStatusCode *status) = 0;
- virtual bool readI2CStatus_Aborted(tRioStatusCode *status) = 0;
- virtual unsigned int readI2CStatus_DataReceivedHigh(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tI2CDataReceived_IfaceConstants;
-
- virtual unsigned int readI2CDataReceived(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tDI_IfaceConstants;
-
- virtual unsigned short readDI(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tPulseLength_IfaceConstants;
-
- virtual void writePulseLength(unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readPulseLength(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumPWMPeriodScaleElements = 10,
- } tPWMPeriodScale_IfaceConstants;
-
- virtual void writePWMPeriodScale(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readPWMPeriodScale(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumDO_PWMDutyCycleElements = 4,
- } tDO_PWMDutyCycle_IfaceConstants;
-
- virtual void writeDO_PWMDutyCycle(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMDutyCycle(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tBFL_IfaceConstants;
-
- virtual void writeBFL(bool value, tRioStatusCode *status) = 0;
- virtual bool readBFL(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tI2CConfig_IfaceConstants;
-
- virtual void writeI2CConfig(tI2CConfig value, tRioStatusCode *status) = 0;
- virtual void writeI2CConfig_Address(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeI2CConfig_BytesToRead(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeI2CConfig_BytesToWrite(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeI2CConfig_DataToSendHigh(unsigned short value, tRioStatusCode *status) = 0;
- virtual void writeI2CConfig_BitwiseHandshake(bool value, tRioStatusCode *status) = 0;
- virtual tI2CConfig readI2CConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readI2CConfig_Address(tRioStatusCode *status) = 0;
- virtual unsigned char readI2CConfig_BytesToRead(tRioStatusCode *status) = 0;
- virtual unsigned char readI2CConfig_BytesToWrite(tRioStatusCode *status) = 0;
- virtual unsigned short readI2CConfig_DataToSendHigh(tRioStatusCode *status) = 0;
- virtual bool readI2CConfig_BitwiseHandshake(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tDO_PWMConfig_IfaceConstants;
-
- virtual void writeDO_PWMConfig(tDO_PWMConfig value, tRioStatusCode *status) = 0;
- virtual void writeDO_PWMConfig_PeriodPower(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeDO_PWMConfig_OutputSelect_0(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeDO_PWMConfig_OutputSelect_1(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeDO_PWMConfig_OutputSelect_2(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeDO_PWMConfig_OutputSelect_3(unsigned char value, tRioStatusCode *status) = 0;
- virtual tDO_PWMConfig readDO_PWMConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMConfig_PeriodPower(tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMConfig_OutputSelect_0(tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMConfig_OutputSelect_1(tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMConfig_OutputSelect_2(tRioStatusCode *status) = 0;
- virtual unsigned char readDO_PWMConfig_OutputSelect_3(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tI2CStart_IfaceConstants;
-
- virtual void strobeI2CStart(tRioStatusCode *status) = 0;
-
-
-
- typedef enum
- {
- } tLoopTiming_IfaceConstants;
-
- virtual unsigned short readLoopTiming(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tPWMConfig_IfaceConstants;
-
- virtual void writePWMConfig(tPWMConfig value, tRioStatusCode *status) = 0;
- virtual void writePWMConfig_Period(unsigned short value, tRioStatusCode *status) = 0;
- virtual void writePWMConfig_MinHigh(unsigned short value, tRioStatusCode *status) = 0;
- virtual tPWMConfig readPWMConfig(tRioStatusCode *status) = 0;
- virtual unsigned short readPWMConfig_Period(tRioStatusCode *status) = 0;
- virtual unsigned short readPWMConfig_MinHigh(tRioStatusCode *status) = 0;
-
-
-
- typedef enum
- {
- kNumPWMValueRegisters = 10,
- } tPWMValue_IfaceConstants;
-
- virtual void writePWMValue(unsigned char reg_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readPWMValue(unsigned char reg_index, tRioStatusCode *status) = 0;
-
-
-
-private:
- tDIO(const tDIO&);
- void operator=(const tDIO&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_DIO_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tDMA.h b/aos/externals/WPILib/WPILib/ChipObject/tDMA.h
deleted file mode 100644
index c46cad2..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tDMA.h
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_DMA_h__
-#define __nFRC_2012_1_6_4_DMA_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tDMA
-{
-public:
- tDMA(){}
- virtual ~tDMA(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tDMA* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Pause : 1;
- unsigned Enable_AI0_Low : 1;
- unsigned Enable_AI0_High : 1;
- unsigned Enable_AIAveraged0_Low : 1;
- unsigned Enable_AIAveraged0_High : 1;
- unsigned Enable_AI1_Low : 1;
- unsigned Enable_AI1_High : 1;
- unsigned Enable_AIAveraged1_Low : 1;
- unsigned Enable_AIAveraged1_High : 1;
- unsigned Enable_Accumulator0 : 1;
- unsigned Enable_Accumulator1 : 1;
- unsigned Enable_DI : 1;
- unsigned Enable_AnalogTriggers : 1;
- unsigned Enable_Counters_Low : 1;
- unsigned Enable_Counters_High : 1;
- unsigned Enable_CounterTimers_Low : 1;
- unsigned Enable_CounterTimers_High : 1;
- unsigned Enable_Encoders : 1;
- unsigned Enable_EncoderTimers : 1;
- unsigned ExternalClock : 1;
-#else
- unsigned ExternalClock : 1;
- unsigned Enable_EncoderTimers : 1;
- unsigned Enable_Encoders : 1;
- unsigned Enable_CounterTimers_High : 1;
- unsigned Enable_CounterTimers_Low : 1;
- unsigned Enable_Counters_High : 1;
- unsigned Enable_Counters_Low : 1;
- unsigned Enable_AnalogTriggers : 1;
- unsigned Enable_DI : 1;
- unsigned Enable_Accumulator1 : 1;
- unsigned Enable_Accumulator0 : 1;
- unsigned Enable_AIAveraged1_High : 1;
- unsigned Enable_AIAveraged1_Low : 1;
- unsigned Enable_AI1_High : 1;
- unsigned Enable_AI1_Low : 1;
- unsigned Enable_AIAveraged0_High : 1;
- unsigned Enable_AIAveraged0_Low : 1;
- unsigned Enable_AI0_High : 1;
- unsigned Enable_AI0_Low : 1;
- unsigned Pause : 1;
-#endif
- };
- struct{
- unsigned value : 20;
- };
- } tConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned ExternalClockSource_Channel : 4;
- unsigned ExternalClockSource_Module : 1;
- unsigned ExternalClockSource_AnalogTrigger : 1;
- unsigned RisingEdge : 1;
- unsigned FallingEdge : 1;
-#else
- unsigned FallingEdge : 1;
- unsigned RisingEdge : 1;
- unsigned ExternalClockSource_AnalogTrigger : 1;
- unsigned ExternalClockSource_Module : 1;
- unsigned ExternalClockSource_Channel : 4;
-#endif
- };
- struct{
- unsigned value : 8;
- };
- } tExternalTriggers;
-
-
-
- typedef enum
- {
- } tRate_IfaceConstants;
-
- virtual void writeRate(unsigned int value, tRioStatusCode *status) = 0;
- virtual unsigned int readRate(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Pause(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AI0_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AI0_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AIAveraged0_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AIAveraged0_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AI1_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AI1_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AIAveraged1_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AIAveraged1_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_Accumulator0(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_Accumulator1(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_DI(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_AnalogTriggers(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_Counters_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_Counters_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_CounterTimers_Low(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_CounterTimers_High(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_Encoders(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable_EncoderTimers(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ExternalClock(bool value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual bool readConfig_Pause(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AI0_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AI0_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AIAveraged0_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AIAveraged0_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AI1_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AI1_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AIAveraged1_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AIAveraged1_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_Accumulator0(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_Accumulator1(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_DI(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_AnalogTriggers(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_Counters_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_Counters_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_CounterTimers_Low(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_CounterTimers_High(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_Encoders(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable_EncoderTimers(tRioStatusCode *status) = 0;
- virtual bool readConfig_ExternalClock(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- kNumExternalTriggersElements = 4,
- } tExternalTriggers_IfaceConstants;
-
- virtual void writeExternalTriggers(unsigned char bitfield_index, tExternalTriggers value, tRioStatusCode *status) = 0;
- virtual void writeExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0;
- virtual void writeExternalTriggers_RisingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0;
- virtual void writeExternalTriggers_FallingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0;
- virtual tExternalTriggers readExternalTriggers(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual unsigned char readExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual unsigned char readExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readExternalTriggers_RisingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0;
- virtual bool readExternalTriggers_FallingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tDMA(const tDMA&);
- void operator=(const tDMA&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_DMA_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tDMAManager.h b/aos/externals/WPILib/WPILib/ChipObject/tDMAManager.h
deleted file mode 100644
index ce292b1..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tDMAManager.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Class for handling DMA transters.
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __tDMAManager_h__
-#define __tDMAManager_h__
-
-#include "tSystem.h"
-
-namespace nFPGA
-{
-// TODO: Implement DMA Manager
-/*
-class tDMAManager : public tSystem
-{
-public:
- tDMAManager(tNIRIO_u32 dmaChannel, tNIRIO_u32 hostBufferSize, tRioStatusCode *status);
- ~tDMAManager();
- void start(tRioStatusCode *status);
- void stop(tRioStatusCode *status);
- bool isStarted() {return _started;}
- void read(
- tNIRIO_u32* buf,
- tNIRIO_u32 num,
- tNIRIO_u32 timeout,
- tNIRIO_u32* read,
- tNIRIO_u32* remaining,
- tRioStatusCode *status);
- void write(
- tNIRIO_u32* buf,
- tNIRIO_u32 num,
- tNIRIO_u32 timeout,
- tNIRIO_u32* remaining,
- tRioStatusCode *status);
-private:
- bool _started;
- tNIRIO_u32 _dmaChannel;
- tNIRIO_u32 _hostBufferSize;
- tDMAChannelDescriptor const *_dmaChannelDescriptor;
-
-};
-*/
-}
-
-
-#endif // __tDMAManager_h__
-
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tEncoder.h b/aos/externals/WPILib/WPILib/ChipObject/tEncoder.h
deleted file mode 100644
index 0b68067..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tEncoder.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Encoder_h__
-#define __nFRC_2012_1_6_4_Encoder_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tEncoder
-{
-public:
- tEncoder(){}
- virtual ~tEncoder(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tEncoder* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 4,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Direction : 1;
- signed Value : 31;
-#else
- signed Value : 31;
- unsigned Direction : 1;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tOutput;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned ASource_Channel : 4;
- unsigned ASource_Module : 1;
- unsigned ASource_AnalogTrigger : 1;
- unsigned BSource_Channel : 4;
- unsigned BSource_Module : 1;
- unsigned BSource_AnalogTrigger : 1;
- unsigned IndexSource_Channel : 4;
- unsigned IndexSource_Module : 1;
- unsigned IndexSource_AnalogTrigger : 1;
- unsigned IndexActiveHigh : 1;
- unsigned Reverse : 1;
- unsigned Enable : 1;
-#else
- unsigned Enable : 1;
- unsigned Reverse : 1;
- unsigned IndexActiveHigh : 1;
- unsigned IndexSource_AnalogTrigger : 1;
- unsigned IndexSource_Module : 1;
- unsigned IndexSource_Channel : 4;
- unsigned BSource_AnalogTrigger : 1;
- unsigned BSource_Module : 1;
- unsigned BSource_Channel : 4;
- unsigned ASource_AnalogTrigger : 1;
- unsigned ASource_Module : 1;
- unsigned ASource_Channel : 4;
-#endif
- };
- struct{
- unsigned value : 21;
- };
- } tConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Period : 23;
- signed Count : 8;
- unsigned Stalled : 1;
-#else
- unsigned Stalled : 1;
- signed Count : 8;
- unsigned Period : 23;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tTimerOutput;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned StallPeriod : 24;
- unsigned AverageSize : 7;
- unsigned UpdateWhenEmpty : 1;
-#else
- unsigned UpdateWhenEmpty : 1;
- unsigned AverageSize : 7;
- unsigned StallPeriod : 24;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tTimerConfig;
-
-
- typedef enum
- {
- } tOutput_IfaceConstants;
-
- virtual tOutput readOutput(tRioStatusCode *status) = 0;
- virtual bool readOutput_Direction(tRioStatusCode *status) = 0;
- virtual signed int readOutput_Value(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ASource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ASource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ASource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_BSource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_BSource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_BSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Reverse(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_ASource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_ASource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_ASource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_BSource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_BSource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_BSource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0;
- virtual bool readConfig_Reverse(tRioStatusCode *status) = 0;
- virtual bool readConfig_Enable(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTimerOutput_IfaceConstants;
-
- virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0;
- virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0;
- virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0;
- virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReset_IfaceConstants;
-
- virtual void strobeReset(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTimerConfig_IfaceConstants;
-
- virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0;
- virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0;
- virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0;
- virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0;
- virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0;
-
-
-
-
-
-private:
- tEncoder(const tEncoder&);
- void operator=(const tEncoder&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Encoder_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tGlobal.h b/aos/externals/WPILib/WPILib/ChipObject/tGlobal.h
deleted file mode 100644
index 2dbbbe7..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tGlobal.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Global_h__
-#define __nFRC_2012_1_6_4_Global_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tGlobal
-{
-public:
- tGlobal(){}
- virtual ~tGlobal(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tGlobal* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
-
-
-
- typedef enum
- {
- } tVersion_IfaceConstants;
-
- virtual unsigned short readVersion(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tLocalTime_IfaceConstants;
-
- virtual unsigned int readLocalTime(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tFPGA_LED_IfaceConstants;
-
- virtual void writeFPGA_LED(bool value, tRioStatusCode *status) = 0;
- virtual bool readFPGA_LED(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tRevision_IfaceConstants;
-
- virtual unsigned int readRevision(tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tGlobal(const tGlobal&);
- void operator=(const tGlobal&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Global_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tInterrupt.h b/aos/externals/WPILib/WPILib/ChipObject/tInterrupt.h
deleted file mode 100644
index 519f6b3..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tInterrupt.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Interrupt_h__
-#define __nFRC_2012_1_6_4_Interrupt_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tInterrupt
-{
-public:
- tInterrupt(){}
- virtual ~tInterrupt(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tInterrupt* create(unsigned char sys_index, tRioStatusCode *status);
- virtual unsigned char getSystemIndex() = 0;
-
-
- typedef enum
- {
- kNumSystems = 8,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned Source_Channel : 4;
- unsigned Source_Module : 1;
- unsigned Source_AnalogTrigger : 1;
- unsigned RisingEdge : 1;
- unsigned FallingEdge : 1;
- unsigned WaitForAck : 1;
-#else
- unsigned WaitForAck : 1;
- unsigned FallingEdge : 1;
- unsigned RisingEdge : 1;
- unsigned Source_AnalogTrigger : 1;
- unsigned Source_Module : 1;
- unsigned Source_Channel : 4;
-#endif
- };
- struct{
- unsigned value : 9;
- };
- } tConfig;
-
-
- typedef enum
- {
- } tTimeStamp_IfaceConstants;
-
- virtual unsigned int readTimeStamp(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Source_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Source_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_Source_AnalogTrigger(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_RisingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_FallingEdge(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_WaitForAck(bool value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_Source_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_Source_Module(tRioStatusCode *status) = 0;
- virtual bool readConfig_Source_AnalogTrigger(tRioStatusCode *status) = 0;
- virtual bool readConfig_RisingEdge(tRioStatusCode *status) = 0;
- virtual bool readConfig_FallingEdge(tRioStatusCode *status) = 0;
- virtual bool readConfig_WaitForAck(tRioStatusCode *status) = 0;
-
-
-
-
-
-private:
- tInterrupt(const tInterrupt&);
- void operator=(const tInterrupt&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Interrupt_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tInterruptManager.h b/aos/externals/WPILib/WPILib/ChipObject/tInterruptManager.h
deleted file mode 100644
index b8fb361..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tInterruptManager.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Class for handling interrupts.
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __tInterruptManager_h__
-#define __tInterruptManager_h__
-
-#include "tSystem.h"
-
-namespace ni
-{
- namespace dsc
- {
- namespace osdep
- {
- class CriticalSection;
- }
- }
-}
-
-namespace nFPGA
-{
-
-typedef void (*tInterruptHandler)(uint32_t interruptAssertedMask, void *param);
-
-class tInterruptManager : public tSystem
-{
-public:
- tInterruptManager(uint32_t interruptMask, bool watcher, tRioStatusCode *status);
- ~tInterruptManager();
- void registerHandler(tInterruptHandler handler, void *param, tRioStatusCode *status);
- uint32_t watch(int32_t timeoutInMs, tRioStatusCode *status);
- void enable(tRioStatusCode *status);
- void disable(tRioStatusCode *status);
- bool isEnabled(tRioStatusCode *status);
-private:
- class tInterruptThread;
- friend class tInterruptThread;
- void handler();
- static int handlerWrapper(tInterruptManager *pInterrupt);
-
- void acknowledge(tRioStatusCode *status);
- void reserve(tRioStatusCode *status);
- void unreserve(tRioStatusCode *status);
- tInterruptHandler _handler;
- uint32_t _interruptMask;
- tInterruptThread *_thread;
- NiFpga_IrqContext _rioContext;
- bool _watcher;
- bool _enabled;
- void *_userParam;
-
- // maintain the interrupts that are already dealt with.
- static uint32_t _globalInterruptMask;
- static ni::dsc::osdep::CriticalSection *_globalInterruptMaskSemaphore;
-};
-
-}
-
-
-#endif // __tInterruptManager_h__
-
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tSPI.h b/aos/externals/WPILib/WPILib/ChipObject/tSPI.h
deleted file mode 100644
index c74ec9b..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tSPI.h
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_SPI_h__
-#define __nFRC_2012_1_6_4_SPI_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tSPI
-{
-public:
- tSPI(){}
- virtual ~tSPI(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tSPI* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned ReceivedDataOverflow : 1;
- unsigned Idle : 1;
-#else
- unsigned Idle : 1;
- unsigned ReceivedDataOverflow : 1;
-#endif
- };
- struct{
- unsigned value : 2;
- };
- } tStatus;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned BusBitWidth : 8;
- unsigned ClockHalfPeriodDelay : 8;
- unsigned MSBfirst : 1;
- unsigned DataOnFalling : 1;
- unsigned LatchFirst : 1;
- unsigned LatchLast : 1;
- unsigned FramePolarity : 1;
- unsigned WriteOnly : 1;
- unsigned ClockPolarity : 1;
-#else
- unsigned ClockPolarity : 1;
- unsigned WriteOnly : 1;
- unsigned FramePolarity : 1;
- unsigned LatchLast : 1;
- unsigned LatchFirst : 1;
- unsigned DataOnFalling : 1;
- unsigned MSBfirst : 1;
- unsigned ClockHalfPeriodDelay : 8;
- unsigned BusBitWidth : 8;
-#endif
- };
- struct{
- unsigned value : 23;
- };
- } tConfig;
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned SCLK_Channel : 4;
- unsigned SCLK_Module : 1;
- unsigned MOSI_Channel : 4;
- unsigned MOSI_Module : 1;
- unsigned MISO_Channel : 4;
- unsigned MISO_Module : 1;
- unsigned SS_Channel : 4;
- unsigned SS_Module : 1;
-#else
- unsigned SS_Module : 1;
- unsigned SS_Channel : 4;
- unsigned MISO_Module : 1;
- unsigned MISO_Channel : 4;
- unsigned MOSI_Module : 1;
- unsigned MOSI_Channel : 4;
- unsigned SCLK_Module : 1;
- unsigned SCLK_Channel : 4;
-#endif
- };
- struct{
- unsigned value : 20;
- };
- } tChannels;
-
-
-
- typedef enum
- {
- } tStatus_IfaceConstants;
-
- virtual tStatus readStatus(tRioStatusCode *status) = 0;
- virtual bool readStatus_ReceivedDataOverflow(tRioStatusCode *status) = 0;
- virtual bool readStatus_Idle(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReceivedData_IfaceConstants;
-
- virtual unsigned int readReceivedData(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tDataToLoad_IfaceConstants;
-
- virtual void writeDataToLoad(unsigned int value, tRioStatusCode *status) = 0;
- virtual unsigned int readDataToLoad(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tConfig_IfaceConstants;
-
- virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0;
- virtual void writeConfig_BusBitWidth(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ClockHalfPeriodDelay(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeConfig_MSBfirst(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_DataOnFalling(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_LatchFirst(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_LatchLast(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_FramePolarity(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_WriteOnly(bool value, tRioStatusCode *status) = 0;
- virtual void writeConfig_ClockPolarity(bool value, tRioStatusCode *status) = 0;
- virtual tConfig readConfig(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_BusBitWidth(tRioStatusCode *status) = 0;
- virtual unsigned char readConfig_ClockHalfPeriodDelay(tRioStatusCode *status) = 0;
- virtual bool readConfig_MSBfirst(tRioStatusCode *status) = 0;
- virtual bool readConfig_DataOnFalling(tRioStatusCode *status) = 0;
- virtual bool readConfig_LatchFirst(tRioStatusCode *status) = 0;
- virtual bool readConfig_LatchLast(tRioStatusCode *status) = 0;
- virtual bool readConfig_FramePolarity(tRioStatusCode *status) = 0;
- virtual bool readConfig_WriteOnly(tRioStatusCode *status) = 0;
- virtual bool readConfig_ClockPolarity(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tClearReceivedData_IfaceConstants;
-
- virtual void strobeClearReceivedData(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReceivedElements_IfaceConstants;
-
- virtual unsigned short readReceivedElements(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tLoad_IfaceConstants;
-
- virtual void strobeLoad(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReset_IfaceConstants;
-
- virtual void strobeReset(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tChannels_IfaceConstants;
-
- virtual void writeChannels(tChannels value, tRioStatusCode *status) = 0;
- virtual void writeChannels_SCLK_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_SCLK_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_MOSI_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_MOSI_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_MISO_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_MISO_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_SS_Channel(unsigned char value, tRioStatusCode *status) = 0;
- virtual void writeChannels_SS_Module(unsigned char value, tRioStatusCode *status) = 0;
- virtual tChannels readChannels(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_SCLK_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_SCLK_Module(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_MOSI_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_MOSI_Module(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_MISO_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_MISO_Module(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_SS_Channel(tRioStatusCode *status) = 0;
- virtual unsigned char readChannels_SS_Module(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tAvailableToLoad_IfaceConstants;
-
- virtual unsigned short readAvailableToLoad(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tReadReceivedData_IfaceConstants;
-
- virtual void strobeReadReceivedData(tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tSPI(const tSPI&);
- void operator=(const tSPI&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_SPI_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tSolenoid.h b/aos/externals/WPILib/WPILib/ChipObject/tSolenoid.h
deleted file mode 100644
index 67c9a40..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tSolenoid.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Solenoid_h__
-#define __nFRC_2012_1_6_4_Solenoid_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tSolenoid
-{
-public:
- tSolenoid(){}
- virtual ~tSolenoid(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tSolenoid* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
-
-
-
- typedef enum
- {
- kNumDO7_0Elements = 2,
- } tDO7_0_IfaceConstants;
-
- virtual void writeDO7_0(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0;
- virtual unsigned char readDO7_0(unsigned char bitfield_index, tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tSolenoid(const tSolenoid&);
- void operator=(const tSolenoid&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Solenoid_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tSystem.h b/aos/externals/WPILib/WPILib/ChipObject/tSystem.h
deleted file mode 100644
index eb55be1..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tSystem.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Base class for generated chip objects
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __tSystem_h__
-#define __tSystem_h__
-
-#include "fpgainterfacecapi/NiFpga.h"
-typedef NiFpga_Status tRioStatusCode;
-
-#define FRC_FPGA_PRELOAD_BITFILE
-
-typedef uint32_t NiFpga_Session;
-
-namespace nFPGA
-{
-
-class tSystem
-{
-public:
- tSystem(tRioStatusCode *status);
- ~tSystem();
- void getFpgaGuid(uint32_t *guid_ptr, tRioStatusCode *status);
-
-protected:
- static NiFpga_Session _DeviceHandle;
-
-#ifdef FRC_FPGA_PRELOAD_BITFILE
- void NiFpga_SharedOpen_common(const char* bitfile);
- NiFpga_Status NiFpga_SharedOpen(const char* bitfile,
- const char* signature,
- const char* resource,
- uint32_t attribute,
- NiFpga_Session* session);
- NiFpga_Status NiFpgaLv_SharedOpen(const char* const bitfile,
- const char* const apiSignature,
- const char* const resource,
- const uint32_t attribute,
- NiFpga_Session* const session);
-private:
- static char *_FileName;
- static char *_Bitfile;
-#endif
-};
-
-}
-
-#endif // __tSystem_h__
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tSystemInterface.h b/aos/externals/WPILib/WPILib/ChipObject/tSystemInterface.h
deleted file mode 100644
index d5008e1..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tSystemInterface.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-
-#ifndef __tSystemInterface_h__
-#define __tSystemInterface_h__
-
-namespace nFPGA
-{
-
-class tSystemInterface
-{
-public:
- tSystemInterface(){}
- virtual ~tSystemInterface(){}
-
- virtual uint16_t getExpectedFPGAVersion()=0;
- virtual uint32_t getExpectedFPGARevision()=0;
- virtual uint32_t * getExpectedFPGASignature()=0;
- virtual void getHardwareFpgaSignature(uint32_t *guid_ptr, tRioStatusCode *status)=0;
- virtual uint32_t getLVHandle(tRioStatusCode *status)=0;
- virtual uint32_t getHandle()=0;
-};
-
-}
-
-#endif // __tSystemInterface_h__
-
diff --git a/aos/externals/WPILib/WPILib/ChipObject/tWatchdog.h b/aos/externals/WPILib/WPILib/ChipObject/tWatchdog.h
deleted file mode 100644
index d4a4cba..0000000
--- a/aos/externals/WPILib/WPILib/ChipObject/tWatchdog.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) National Instruments 2008. All Rights Reserved.
-// Do Not Edit... this file is generated!
-
-#ifndef __nFRC_2012_1_6_4_Watchdog_h__
-#define __nFRC_2012_1_6_4_Watchdog_h__
-
-#include "tSystemInterface.h"
-
-namespace nFPGA
-{
-namespace nFRC_2012_1_6_4
-{
-
-class tWatchdog
-{
-public:
- tWatchdog(){}
- virtual ~tWatchdog(){}
-
- virtual tSystemInterface* getSystemInterface() = 0;
- static tWatchdog* create(tRioStatusCode *status);
-
- typedef enum
- {
- kNumSystems = 1,
- } tIfaceConstants;
-
- typedef
- union{
- struct{
-#ifdef __vxworks
- unsigned SystemActive : 1;
- unsigned Alive : 1;
- unsigned SysDisableCount : 15;
- unsigned DisableCount : 15;
-#else
- unsigned DisableCount : 15;
- unsigned SysDisableCount : 15;
- unsigned Alive : 1;
- unsigned SystemActive : 1;
-#endif
- };
- struct{
- unsigned value : 32;
- };
- } tStatus;
-
-
-
- typedef enum
- {
- } tStatus_IfaceConstants;
-
- virtual tStatus readStatus(tRioStatusCode *status) = 0;
- virtual bool readStatus_SystemActive(tRioStatusCode *status) = 0;
- virtual bool readStatus_Alive(tRioStatusCode *status) = 0;
- virtual unsigned short readStatus_SysDisableCount(tRioStatusCode *status) = 0;
- virtual unsigned short readStatus_DisableCount(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tKill_IfaceConstants;
-
- virtual void strobeKill(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tFeed_IfaceConstants;
-
- virtual void strobeFeed(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tTimer_IfaceConstants;
-
- virtual unsigned int readTimer(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tExpiration_IfaceConstants;
-
- virtual void writeExpiration(unsigned int value, tRioStatusCode *status) = 0;
- virtual unsigned int readExpiration(tRioStatusCode *status) = 0;
-
-
- typedef enum
- {
- } tImmortal_IfaceConstants;
-
- virtual void writeImmortal(bool value, tRioStatusCode *status) = 0;
- virtual bool readImmortal(tRioStatusCode *status) = 0;
-
-
-
-
-private:
- tWatchdog(const tWatchdog&);
- void operator=(const tWatchdog&);
-};
-
-}
-}
-
-#endif // __nFRC_2012_1_6_4_Watchdog_h__
diff --git a/aos/externals/WPILib/WPILib/Commands/Command.cpp b/aos/externals/WPILib/WPILib/Commands/Command.cpp
deleted file mode 100644
index 42adcd6..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Command.cpp
+++ /dev/null
@@ -1,475 +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 "Commands/Command.h"
-#include "Commands/CommandGroup.h"
-#include "Commands/Scheduler.h"
-#include "DriverStation.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-
-static const char *kName = "name";
-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;
- m_initialized = false;
- m_running = false;
- m_interruptible = true;
- m_canceled = false;
- m_runWhenDisabled = false;
- m_parent = NULL;
- if (name == NULL)
- {
- // Don't have a way to find the subclass name like java, so use the address
- char buf[32];
- snprintf(buf, 32, "Command_%p", this);
- m_name = buf;
- }
- else
- {
- m_name = name;
- }
- m_table = NULL;
-}
-
-/**
- * Creates a new command.
- * The name of this command will be default.
- */
-Command::Command()
-{
- InitCommand(NULL, -1.0);
-}
-
-/**
- * Creates a new command with the given name and no timeout.
- * @param name the name for this command
- */
-Command::Command(const char *name)
-{
- if (name == NULL)
- wpi_setWPIErrorWithContext(NullParameter, "name");
- InitCommand(name, -1.0);
-}
-
-/**
- * Creates a new command with the given timeout and a default name.
- * @param timeout the time (in seconds) before this command "times out"
- * @see Command#isTimedOut() isTimedOut()
- */
-Command::Command(double timeout)
-{
- if (timeout < 0.0)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "timeout < 0.0");
- InitCommand(NULL, timeout);
-}
-
-/**
- * Creates a new command with the given name and timeout.
- * @param name the name of the command
- * @param timeout the time (in seconds) before this command "times out"
- * @see Command#isTimedOut() isTimedOut()
- */
-Command::Command(const char *name, double timeout)
-{
- if (name == NULL)
- wpi_setWPIErrorWithContext(NullParameter, "name");
- if (timeout < 0.0)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "timeout < 0.0");
- InitCommand(name, timeout);
-}
-
-Command::~Command()
-{//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;
-}
-
-/**
- * Sets the timeout of this command.
- * @param timeout the timeout (in seconds)
- * @see Command#isTimedOut() isTimedOut()
- */
-void Command::SetTimeout(double timeout)
-{
- if (timeout < 0.0)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "timeout < 0.0");
- else
- m_timeout = timeout;
-}
-
-/**
- * Returns the time since this command was initialized (in seconds).
- * This function will work even if there is no specified timeout.
- * @return the time since this command was initialized (in seconds).
- */
-double Command::TimeSinceInitialized()
-{
- if (m_startTime < 0.0)
- return 0.0;
- else
- return Timer::GetFPGATimestamp() - m_startTime;
-}
-
-/**
- * This method specifies that the given {@link Subsystem} is used by this command.
- * This method is crucial to the functioning of the Command System in general.
- *
- * <p>Note that the recommended way to call this method is in the constructor.</p>
- *
- * @param subsystem the {@link Subsystem} required
- * @see Subsystem
- */
-void Command::Requires(Subsystem *subsystem)
-{
- if (!AssertUnlocked("Can not add new requirement to command"))
- return;
-
- if (subsystem != NULL)
- m_requirements.insert(subsystem);
- else
- wpi_setWPIErrorWithContext(NullParameter, "subsystem");
-}
-
-/**
- * Called when the command has been removed.
- * This will call {@link Command#interrupted() interrupted()} or {@link Command#end() end()}.
- */
-void Command::Removed()
-{
- if (m_initialized)
- {
- if (IsCanceled())
- {
- Interrupted();
- _Interrupted();
- }
- else
- {
- End();
- _End();
- }
- }
- m_initialized = false;
- m_canceled = false;
- m_running = false;
- if (m_table != NULL)
- m_table->PutBoolean(kRunning, false);
-}
-
-/**
- * Starts up the command. Gets the command ready to start.
- * <p>Note that the command will eventually start, however it will not necessarily
- * do so immediately, and may in fact be canceled before initialize is even called.</p>
- */
-void Command::Start()
-{
- LockChanges();
- if (m_parent != NULL)
- wpi_setWPIErrorWithContext(CommandIllegalUse, "Can not start a command that is part of a command group");
-
- Scheduler::GetInstance()->AddCommand(this);
-}
-
-/**
- * The run method is used internally to actually run the commands.
- * @return whether or not the command should stay within the {@link Scheduler}.
- */
-bool Command::Run()
-{
- if (!m_runWhenDisabled && m_parent == NULL && DriverStation::GetInstance()->IsDisabled())
- Cancel();
-
- if (IsCanceled())
- return false;
-
- if (!m_initialized)
- {
- m_initialized = true;
- StartTiming();
- _Initialize();
- Initialize();
- }
- _Execute();
- Execute();
- return !IsFinished();
-}
-
-void Command::_Initialize()
-{
-}
-
-void Command::_Interrupted()
-{
-}
-
-void Command::_Execute()
-{
-}
-
-void Command::_End()
-{
-}
-
-/**
- * Called to indicate that the timer should start.
- * This is called right before {@link Command#initialize() initialize()} is, inside the
- * {@link Command#run() run()} method.
- */
-void Command::StartTiming()
-{
- m_startTime = Timer::GetFPGATimestamp();
-}
-
-/**
- * Returns whether or not the {@link Command#timeSinceInitialized() timeSinceInitialized()}
- * method returns a number which is greater than or equal to the timeout for the command.
- * If there is no timeout, this will always return false.
- * @return whether the time has expired
- */
-bool Command::IsTimedOut()
-{
- return m_timeout != -1 && TimeSinceInitialized() >= m_timeout;
-}
-
-/**
- * Returns the requirements (as an std::set of {@link Subsystem Subsystems} pointers) of this command
- * @return the requirements (as an std::set of {@link Subsystem Subsystems} pointers) of this command
- */
-Command::SubsystemSet Command::GetRequirements()
-{
- return m_requirements;
-}
-
-/**
- * Prevents further changes from being made
- */
-void Command::LockChanges()
-{
- m_locked = true;
-}
-
-/**
- * If changes are locked, then this will generate a CommandIllegalUse error.
- * @param message the message to report on error (it is appended by a default message)
- * @return true if assert passed, false if assert failed
- */
-bool Command::AssertUnlocked(const char *message)
-{
- if (m_locked)
- {
- char buf[128];
- snprintf(buf, 128, "%s after being started or being added to a command group", message);
- wpi_setWPIErrorWithContext(CommandIllegalUse, buf);
- return false;
- }
- return true;
-}
-
-/**
- * Sets the parent of this command. No actual change is made to the group.
- * @param parent the parent
- */
-void Command::SetParent(CommandGroup *parent)
-{
- if (parent == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "parent");
- }
- else if (m_parent != NULL)
- {
- wpi_setWPIErrorWithContext(CommandIllegalUse, "Can not give command to a command group after already being put in a command group");
- }
- else
- {
- LockChanges();
- m_parent = parent;
- if (m_table != NULL)
- {
- m_table->PutBoolean(kIsParented, true);
- }
- }
-}
-
-/**
- * This is used internally to mark that the command has been started.
- * The lifecycle of a command is:
- *
- * startRunning() is called.
- * run() is called (multiple times potentially)
- * removed() is called
- *
- * It is very important that startRunning and removed be called in order or some assumptions
- * of the code will be broken.
- */
-void Command::StartRunning()
-{
- m_running = true;
- m_startTime = -1;
- if (m_table != NULL)
- m_table->PutBoolean(kRunning, true);
-}
-
-/**
- * Returns whether or not the command is running.
- * This may return true even if the command has just been canceled, as it may
- * not have yet called {@link Command#interrupted()}.
- * @return whether or not the command is running
- */
-bool Command::IsRunning()
-{
- return m_running;
-}
-
-/**
- * This will cancel the current command.
- * <p>This will cancel the current command eventually. It can be called multiple times.
- * And it can be called when the command is not running. If the command is running though,
- * then the command will be marked as canceled and eventually removed.</p>
- * <p>A command can not be canceled
- * if it is a part of a command group, you must cancel the command group instead.</p>
- */
-void Command::Cancel()
-{
- if (m_parent != NULL)
- wpi_setWPIErrorWithContext(CommandIllegalUse, "Can not cancel a command that is part of a command group");
-
- _Cancel();
-}
-
-/**
- * This works like cancel(), except that it doesn't throw an exception if it is a part
- * of a command group. Should only be called by the parent command group.
- */
-void Command::_Cancel()
-{
- if (IsRunning())
- m_canceled = true;
-}
-
-/**
- * Returns whether or not this has been canceled.
- * @return whether or not this has been canceled
- */
-bool Command::IsCanceled()
-{
- return m_canceled;
-}
-
-/**
- * Returns whether or not this command can be interrupted.
- * @return whether or not this command can be interrupted
- */
-bool Command::IsInterruptible()
-{
- return m_interruptible;
-}
-
-/**
- * Sets whether or not this command can be interrupted.
- * @param interruptible whether or not this command can be interrupted
- */
-void Command::SetInterruptible(bool interruptible)
-{
- m_interruptible = interruptible;
-}
-
-/**
- * Checks if the command requires the given {@link Subsystem}.
- * @param system the system
- * @return whether or not the subsystem is required (false if given NULL)
- */
-bool Command::DoesRequire(Subsystem *system)
-{
- return m_requirements.count(system) > 0;
-}
-
-/**
- * Returns the {@link CommandGroup} that this command is a part of.
- * Will return null if this {@link Command} is not in a group.
- * @return the {@link CommandGroup} that this command is a part of (or null if not in group)
- */
-CommandGroup *Command::GetGroup()
-{
- return m_parent;
-}
-
-/**
- * Sets whether or not this {@link Command} should run when the robot is disabled.
- *
- * <p>By default a command will not run when the robot is disabled, and will in fact be canceled.</p>
- * @param run whether or not this command should run when the robot is disabled
- */
-void Command::SetRunWhenDisabled(bool run)
-{
- m_runWhenDisabled = run;
-}
-
-/**
- * Returns whether or not this {@link Command} will run when the robot is disabled, or if it will cancel itself.
- * @return whether or not this {@link Command} will run when the robot is disabled, or if it will cancel itself
- */
-bool Command::WillRunWhenDisabled()
-{
- return m_runWhenDisabled;
-}
-
-std::string Command::GetName()
-{
- return m_name;
-}
-
-std::string Command::GetSmartDashboardType()
-{
- return "Command";
-}
-
-void Command::InitTable(ITable* table)
-{
- 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(ITable* source, const std::string& key, EntryValue value, bool isNew)
-{
- 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
deleted file mode 100644
index 5a9a77f..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Command.h
+++ /dev/null
@@ -1,164 +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 __COMMAND_H__
-#define __COMMAND_H__
-
-#include "ErrorBase.h"
-#include "SmartDashboard/NamedSendable.h"
-#include <set>
-#include <string>
-
-class CommandGroup;
-class Subsystem;
-
-/**
- * The Command class is at the very core of the entire command framework.
- * Every command can be started with a call to {@link Command#Start() Start()}.
- * Once a command is started it will call {@link Command#Initialize() Initialize()}, and then
- * will repeatedly call {@link Command#Execute() Execute()} until the {@link Command#IsFinished() IsFinished()}
- * returns true. Once it does, {@link Command#End() End()} will be called.
- *
- * <p>However, if at any point while it is running {@link Command#Cancel() Cancel()} is called, then
- * the command will be stopped and {@link Command#Interrupted() Interrupted()} will be called.</p>
- *
- * <p>If a command uses a {@link Subsystem}, then it should specify that it does so by
- * calling the {@link Command#Requires(Subsystem) Requires(...)} method
- * in its constructor. Note that a Command may have multiple requirements, and
- * {@link Command#Requires(Subsystem) Requires(...)} should be
- * called for each one.</p>
- *
- * <p>If a command is running and a new command with shared requirements is started,
- * then one of two things will happen. If the active command is interruptible,
- * then {@link Command#Cancel() Cancel()} will be called and the command will be removed
- * to make way for the new one. If the active command is not interruptible, the
- * other one will not even be started, and the active one will continue functioning.</p>
- *
- * @see CommandGroup
- * @see Subsystem
- */
-class Command : public ErrorBase, public NamedSendable, public ITableListener
-{
- friend class CommandGroup;
- friend class Scheduler;
-public:
- Command();
- Command(const char *name);
- Command(double timeout);
- Command(const char *name, double timeout);
- virtual ~Command();
- double TimeSinceInitialized();
- void Requires(Subsystem *s);
- bool IsCanceled();
- void Start();
- bool Run();
- void Cancel();
- bool IsRunning();
- bool IsInterruptible();
- void SetInterruptible(bool interruptible);
- bool DoesRequire(Subsystem *subsystem);
- typedef std::set<Subsystem *> SubsystemSet;
- SubsystemSet GetRequirements();
- CommandGroup *GetGroup();
- void SetRunWhenDisabled(bool run);
- bool WillRunWhenDisabled();
- int GetID();
-
-
-protected:
- void SetTimeout(double timeout);
- bool IsTimedOut();
- bool AssertUnlocked(const char *message);
- void SetParent(CommandGroup *parent);
- /**
- * The initialize method is called the first time this Command is run after
- * being started.
- */
- virtual void Initialize() = 0;
- /**
- * The execute method is called repeatedly until this Command either finishes
- * or is canceled.
- */
- virtual void Execute() = 0;
- /**
- * Returns whether this command is finished.
- * If it is, then the command will be removed
- * and {@link Command#end() end()} will be called.
- *
- * <p>It may be useful for a team to reference the {@link Command#isTimedOut() isTimedOut()} method
- * for time-sensitive commands.</p>
- * @return whether this command is finished.
- * @see Command#isTimedOut() isTimedOut()
- */
- virtual bool IsFinished() = 0;
- /**
- * Called when the command ended peacefully. This is where you may want
- * to wrap up loose ends, like shutting off a motor that was being used
- * in the command.
- */
- virtual void End() = 0;
- /**
- * Called when the command ends because somebody called {@link Command#cancel() cancel()}
- * or another command shared the same requirements as this one, and booted
- * it out.
- *
- * <p>This is where you may want
- * to wrap up loose ends, like shutting off a motor that was being used
- * in the command.</p>
- *
- * <p>Generally, it is useful to simply call the {@link Command#end() end()} method
- * within this method</p>
- */
- virtual void Interrupted() = 0;
- virtual void _Initialize();
- virtual void _Interrupted();
- virtual void _Execute();
- virtual void _End();
- virtual void _Cancel();
-
-private:
- void InitCommand(const char *name, double timeout);
- void LockChanges();
- /*synchronized*/ void Removed();
- void StartRunning();
- void StartTiming();
-
- /** The name of this command */
- std::string m_name;
- /** The time since this command was initialized */
- double m_startTime;
- /** The time (in seconds) before this command "times out" (or -1 if no timeout) */
- double m_timeout;
- /** Whether or not this command has been initialized */
- bool m_initialized;
- /** The requirements (or null if no requirements) */
- SubsystemSet m_requirements;
- /** Whether or not it is running */
- bool m_running;
- /** Whether or not it is interruptible*/
- bool m_interruptible;
- /** Whether or not it has been canceled */
- bool m_canceled;
- /** Whether or not it has been locked */
- bool m_locked;
- /** Whether this command should run when the robot is disabled */
- bool m_runWhenDisabled;
- /** The {@link CommandGroup} this is in */
- CommandGroup *m_parent;
- 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/CommandGroup.cpp b/aos/externals/WPILib/WPILib/Commands/CommandGroup.cpp
deleted file mode 100644
index b1decd3..0000000
--- a/aos/externals/WPILib/WPILib/Commands/CommandGroup.cpp
+++ /dev/null
@@ -1,383 +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 "Commands/CommandGroup.h"
-#include "WPIErrors.h"
-
-/**
- * Creates a new {@link CommandGroup CommandGroup}.
- */
-CommandGroup::CommandGroup()
-{
- m_currentCommandIndex = -1;
-}
-
-/**
- * Creates a new {@link CommandGroup CommandGroup} with the given name.
- * @param name the name for this command group
- */
-CommandGroup::CommandGroup(const char *name) :
- Command(name)
-{
- m_currentCommandIndex = -1;
-}
-
-CommandGroup::~CommandGroup()
-{
-}
-
-/**
- * Adds a new {@link Command Command} to the group. The {@link Command Command} will be started after
- * all the previously added {@link Command Commands}.
- *
- * <p>Note that any requirements the given {@link Command Command} has will be added to the
- * group. For this reason, a {@link Command Command's} requirements can not be changed after
- * being added to a group.</p>
- *
- * <p>It is recommended that this method be called in the constructor.</p>
- *
- * @param command The {@link Command Command} to be added
- */
-void CommandGroup::AddSequential(Command *command)
-{
- if (command == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "command");
- return;
- }
- if (!AssertUnlocked("Cannot add new command to command group"))
- return;
-
- command->SetParent(this);
-
- m_commands.push_back(CommandGroupEntry(command, CommandGroupEntry::kSequence_InSequence));
- // Iterate through command->GetRequirements() and call Requires() on each required subsystem
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++)
- Requires(*iter);
-}
-
-/**
- * Adds a new {@link Command Command} to the group with a given timeout.
- * The {@link Command Command} will be started after all the previously added commands.
- *
- * <p>Once the {@link Command Command} is started, it will be run until it finishes or the time
- * expires, whichever is sooner. Note that the given {@link Command Command} will have no
- * knowledge that it is on a timer.</p>
- *
- * <p>Note that any requirements the given {@link Command Command} has will be added to the
- * group. For this reason, a {@link Command Command's} requirements can not be changed after
- * being added to a group.</p>
- *
- * <p>It is recommended that this method be called in the constructor.</p>
- *
- * @param command The {@link Command Command} to be added
- * @param timeout The timeout (in seconds)
- */
-void CommandGroup::AddSequential(Command *command, double timeout)
-{
- if (command == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "command");
- return;
- }
- if (!AssertUnlocked("Cannot add new command to command group"))
- return;
- if (timeout < 0.0)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "timeout < 0.0");
- return;
- }
-
- command->SetParent(this);
-
- m_commands.push_back(CommandGroupEntry(command, CommandGroupEntry::kSequence_InSequence, timeout));
- // Iterate through command->GetRequirements() and call Requires() on each required subsystem
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++)
- Requires(*iter);
-}
-
-/**
- * Adds a new child {@link Command} to the group. The {@link Command} will be started after
- * all the previously added {@link Command Commands}.
- *
- * <p>Instead of waiting for the child to finish, a {@link CommandGroup} will have it
- * run at the same time as the subsequent {@link Command Commands}. The child will run until either
- * it finishes, a new child with conflicting requirements is started, or
- * the main sequence runs a {@link Command} with conflicting requirements. In the latter
- * two cases, the child will be canceled even if it says it can't be
- * interrupted.</p>
- *
- * <p>Note that any requirements the given {@link Command Command} has will be added to the
- * group. For this reason, a {@link Command Command's} requirements can not be changed after
- * being added to a group.</p>
- *
- * <p>It is recommended that this method be called in the constructor.</p>
- *
- * @param command The command to be added
- */
-void CommandGroup::AddParallel(Command *command)
-{
- if (command == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "command");
- return;
- }
- if (!AssertUnlocked("Cannot add new command to command group"))
- return;
-
- command->SetParent(this);
-
- m_commands.push_back(CommandGroupEntry(command, CommandGroupEntry::kSequence_BranchChild));
- // Iterate through command->GetRequirements() and call Requires() on each required subsystem
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++)
- Requires(*iter);
-}
-
-/**
- * Adds a new child {@link Command} to the group with the given timeout. The {@link Command} will be started after
- * all the previously added {@link Command Commands}.
- *
- * <p>Once the {@link Command Command} is started, it will run until it finishes, is interrupted,
- * or the time expires, whichever is sooner. Note that the given {@link Command Command} will have no
- * knowledge that it is on a timer.</p>
- *
- * <p>Instead of waiting for the child to finish, a {@link CommandGroup} will have it
- * run at the same time as the subsequent {@link Command Commands}. The child will run until either
- * it finishes, the timeout expires, a new child with conflicting requirements is started, or
- * the main sequence runs a {@link Command} with conflicting requirements. In the latter
- * two cases, the child will be canceled even if it says it can't be
- * interrupted.</p>
- *
- * <p>Note that any requirements the given {@link Command Command} has will be added to the
- * group. For this reason, a {@link Command Command's} requirements can not be changed after
- * being added to a group.</p>
- *
- * <p>It is recommended that this method be called in the constructor.</p>
- *
- * @param command The command to be added
- * @param timeout The timeout (in seconds)
- */
-void CommandGroup::AddParallel(Command *command, double timeout)
-{
- if (command == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "command");
- return;
- }
- if (!AssertUnlocked("Cannot add new command to command group"))
- return;
- if (timeout < 0.0)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "timeout < 0.0");
- return;
- }
-
- command->SetParent(this);
-
- m_commands.push_back(CommandGroupEntry(command, CommandGroupEntry::kSequence_BranchChild, timeout));
- // Iterate through command->GetRequirements() and call Requires() on each required subsystem
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++)
- Requires(*iter);
-}
-
-void CommandGroup::_Initialize()
-{
- m_currentCommandIndex = -1;
-}
-
-void CommandGroup::_Execute()
-{
- CommandGroupEntry entry;
- Command *cmd = NULL;
- bool firstRun = false;
-
- if (m_currentCommandIndex == -1)
- {
- firstRun = true;
- m_currentCommandIndex = 0;
- }
-
- while ((unsigned)m_currentCommandIndex < m_commands.size())
- {
- if (cmd != NULL)
- {
- if (entry.IsTimedOut())
- cmd->_Cancel();
-
- if (cmd->Run())
- {
- break;
- }
- else
- {
- cmd->Removed();
- m_currentCommandIndex++;
- firstRun = true;
- cmd = NULL;
- continue;
- }
- }
-
- entry = m_commands[m_currentCommandIndex];
- cmd = NULL;
-
- switch (entry.m_state)
- {
- case CommandGroupEntry::kSequence_InSequence:
- cmd = entry.m_command;
- if (firstRun)
- {
- cmd->StartRunning();
- CancelConflicts(cmd);
- firstRun = false;
- }
- break;
-
- case CommandGroupEntry::kSequence_BranchPeer:
- m_currentCommandIndex++;
- entry.m_command->Start();
- break;
-
- case CommandGroupEntry::kSequence_BranchChild:
- m_currentCommandIndex++;
- CancelConflicts(entry.m_command);
- entry.m_command->StartRunning();
- m_children.push_back(entry);
- break;
- }
- }
-
- // Run Children
- CommandList::iterator iter = m_children.begin();
- for (; iter != m_children.end();)
- {
- entry = *iter;
- Command *child = entry.m_command;
- if (entry.IsTimedOut())
- child->_Cancel();
-
- if (!child->Run())
- {
- child->Removed();
- iter = m_children.erase(iter);
- }
- else
- {
- iter++;
- }
- }
-}
-
-void CommandGroup::_End()
-{
- // Theoretically, we don't have to check this, but we do if teams override the IsFinished method
- if (m_currentCommandIndex != -1 && (unsigned)m_currentCommandIndex < m_commands.size())
- {
- Command *cmd = m_commands[m_currentCommandIndex].m_command;
- cmd->_Cancel();
- cmd->Removed();
- }
-
- CommandList::iterator iter = m_children.begin();
- for (; iter != m_children.end(); iter++)
- {
- Command *cmd = iter->m_command;
- cmd->_Cancel();
- cmd->Removed();
- }
- m_children.clear();
-}
-
-void CommandGroup::_Interrupted()
-{
- _End();
-}
-
-// Can be overwritten by teams
-void CommandGroup::Initialize()
-{
-}
-
-// Can be overwritten by teams
-void CommandGroup::Execute()
-{
-}
-
-// Can be overwritten by teams
-void CommandGroup::End()
-{
-}
-
-// Can be overwritten by teams
-void CommandGroup::Interrupted()
-{
-}
-
-bool CommandGroup::IsFinished()
-{
- return (unsigned)m_currentCommandIndex >= m_commands.size() && m_children.empty();
-}
-
-bool CommandGroup::IsInterruptible()
-{
- if (!Command::IsInterruptible())
- return false;
-
- if (m_currentCommandIndex != -1 && (unsigned)m_currentCommandIndex < m_commands.size())
- {
- Command *cmd = m_commands[m_currentCommandIndex].m_command;
- if (!cmd->IsInterruptible())
- return false;
- }
-
- CommandList::iterator iter = m_children.begin();
- for (; iter != m_children.end(); iter++)
- {
- if (!iter->m_command->IsInterruptible())
- return false;
- }
-
- return true;
-}
-
-void CommandGroup::CancelConflicts(Command *command)
-{
- CommandList::iterator childIter = m_children.begin();
- for (; childIter != m_children.end();)
- {
- Command *child = childIter->m_command;
- bool erased = false;
-
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator requirementIter = requirements.begin();
- for (; requirementIter != requirements.end(); requirementIter++)
- {
- if (child->DoesRequire(*requirementIter))
- {
- child->_Cancel();
- child->Removed();
- childIter = m_children.erase(childIter);
- erased = true;
- break;
- }
- }
- if (!erased)
- childIter++;
- }
-}
-
-int CommandGroup::GetSize()
-{
- return m_children.size();
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/CommandGroup.h b/aos/externals/WPILib/WPILib/Commands/CommandGroup.h
deleted file mode 100644
index 87c299f..0000000
--- a/aos/externals/WPILib/WPILib/Commands/CommandGroup.h
+++ /dev/null
@@ -1,71 +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 __COMMAND_GROUP_H__
-#define __COMMAND_GROUP_H__
-
-#include "Commands/Command.h"
-#include "Commands/CommandGroupEntry.h"
-#include <list>
-#include <vector>
-
-/**
- * A {@link CommandGroup} is a list of commands which are executed in sequence.
- *
- * <p>Commands in a {@link CommandGroup} are added using the {@link CommandGroup#AddSequential(Command) AddSequential(...)} method
- * and are called sequentially.
- * {@link CommandGroup CommandGroups} are themselves {@link Command Commands}
- * and can be given to other {@link CommandGroup CommandGroups}.</p>
- *
- * <p>{@link CommandGroup CommandGroups} will carry all of the requirements of their {@link Command subcommands}. Additional
- * requirements can be specified by calling {@link CommandGroup#Requires(Subsystem) Requires(...)}
- * normally in the constructor.</P>
- *
- * <p>CommandGroups can also execute commands in parallel, simply by adding them
- * using {@link CommandGroup#AddParallel(Command) AddParallel(...)}.</p>
- *
- * @see Command
- * @see Subsystem
- */
-class CommandGroup : public Command
-{
-public:
- CommandGroup();
- CommandGroup(const char *name);
- virtual ~CommandGroup();
-
- void AddSequential(Command *command);
- void AddSequential(Command *command, double timeout);
- void AddParallel(Command *command);
- void AddParallel(Command *command, double timeout);
- bool IsInterruptible();
- int GetSize();
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
- virtual void _Initialize();
- virtual void _Interrupted();
- virtual void _Execute();
- virtual void _End();
-
-private:
- void CancelConflicts(Command *command);
-
- typedef std::vector<CommandGroupEntry> CommandVector;
- /** The commands in this group (stored in entries) */
- CommandVector m_commands;
- typedef std::list<CommandGroupEntry> CommandList;
- /** The active children in this group (stored in entries) */
- CommandList m_children;
- /** The current command, -1 signifies that none have been run */
- int m_currentCommandIndex;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.cpp b/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.cpp
deleted file mode 100644
index 1448257..0000000
--- a/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.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 "Commands/CommandGroupEntry.h"
-
-#include "Commands/Command.h"
-
-CommandGroupEntry::CommandGroupEntry() :
- m_timeout(-1.0),
- m_command(NULL),
- m_state(kSequence_InSequence)
-{
-}
-
-CommandGroupEntry::CommandGroupEntry(Command *command, Sequence state) :
- m_timeout(-1.0),
- m_command(command),
- m_state(state)
-{
-}
-
-CommandGroupEntry::CommandGroupEntry(Command *command, Sequence state, double timeout) :
- m_timeout(timeout),
- m_command(command),
- m_state(state)
-{
-}
-
-bool CommandGroupEntry::IsTimedOut()
-{
- if (m_timeout < 0.0)
- return false;
- double time = m_command->TimeSinceInitialized();
- if (time == 0.0)
- return false;
- return time >= m_timeout;
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.h b/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.h
deleted file mode 100644
index d2be6a8..0000000
--- a/aos/externals/WPILib/WPILib/Commands/CommandGroupEntry.h
+++ /dev/null
@@ -1,27 +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 __COMMAND_GROUP_ENTRY_H__
-#define __COMMAND_GROUP_ENTRY_H__
-
-class Command;
-
-class CommandGroupEntry
-{
-public:
- typedef enum {kSequence_InSequence, kSequence_BranchPeer, kSequence_BranchChild} Sequence;
-
- CommandGroupEntry();
- CommandGroupEntry(Command *command, Sequence state);
- CommandGroupEntry(Command *command, Sequence state, double timeout);
- bool IsTimedOut();
-
- double m_timeout;
- Command *m_command;
- Sequence m_state;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp b/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp
deleted file mode 100644
index 19da02d..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PIDCommand.cpp
+++ /dev/null
@@ -1,106 +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 "Commands/PIDCommand.h"
-
-#include "PIDController.h"
-#include "float.h"
-
-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_controller = new PIDController(p, i, d, this, this);
-}
-
-PIDCommand::PIDCommand(const char *name, double p, double i, double d, double period) :
- Command(name)
-{
- m_controller = new PIDController(p, i, d, this, this, period);
-}
-
-PIDCommand::PIDCommand(double p, double i, double d)
-{
- m_controller = new PIDController(p, i, d, this, this);
-}
-
-PIDCommand::PIDCommand(double p, double i, double d, double period)
-{
- m_controller = new PIDController(p, i, d, this, this, period);
-}
-
-PIDCommand::~PIDCommand()
-{
- delete m_controller;
-}
-
-void PIDCommand::_Initialize()
-{
- m_controller->Enable();
-}
-
-void PIDCommand::_End()
-{
- m_controller->Disable();
-}
-
-void PIDCommand::_Interrupted()
-{
- _End();
-}
-
-void PIDCommand::SetSetpointRelative(double deltaSetpoint)
-{
- SetSetpoint(GetSetpoint() + deltaSetpoint);
-}
-
-void PIDCommand::PIDWrite(float output)
-{
- UsePIDOutput(output);
-}
-
-double PIDCommand::PIDGet()
-{
- return ReturnPIDInput();
-}
-
-PIDController *PIDCommand::GetPIDController()
-{
- return m_controller;
-}
-
-void PIDCommand::SetSetpoint(double setpoint)
-{
- m_controller->SetSetpoint(setpoint);
-}
-
-double PIDCommand::GetSetpoint()
-{
- return m_controller->GetSetpoint();
-}
-
-double PIDCommand::GetPosition()
-{
- return ReturnPIDInput();
-}
-
-std::string PIDCommand::GetSmartDashboardType(){
- return "PIDCommand";
-}
-void PIDCommand::InitTable(ITable* table){
- m_controller->InitTable(table);
- Command::InitTable(table);
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/PIDCommand.h b/aos/externals/WPILib/WPILib/Commands/PIDCommand.h
deleted file mode 100644
index be44f06..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PIDCommand.h
+++ /dev/null
@@ -1,56 +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 __PID_COMMAND_H__
-#define __PID_COMMAND_H__
-
-#include "Commands/Command.h"
-#include "PIDSource.h"
-#include "PIDOutput.h"
-
-class PIDController;
-
-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);
-
- // PIDOutput interface
- virtual void PIDWrite(float output);
-
- // PIDSource interface
- virtual double PIDGet();
-protected:
- PIDController *GetPIDController();
- virtual void _Initialize();
- virtual void _Interrupted();
- virtual void _End();
- void SetSetpoint(double setpoint);
- double GetSetpoint();
- double GetPosition();
-
- virtual double ReturnPIDInput() = 0;
- virtual void UsePIDOutput(double output) = 0;
-
-private:
- /** The internal {@link PIDController} */
- 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
deleted file mode 100644
index b093725..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.cpp
+++ /dev/null
@@ -1,237 +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 "Commands/PIDSubsystem.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_controller = new PIDController(p, i, d, this, this);
-}
-
-/**
- * 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_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_controller = new PIDController(p, i, d, 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.
- * @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_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()
-{
- 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();
-}
-
-
-/**
- * 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::PIDWrite(float output)
-{
- UsePIDOutput(output);
-}
-
-double PIDSubsystem::PIDGet()
-{
- 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
deleted file mode 100644
index 6b9d138..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PIDSubsystem.h
+++ /dev/null
@@ -1,70 +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 __PID_SUBSYSTEM_H__
-#define __PID_SUBSYSTEM_H__
-
-#include "Commands/Subsystem.h"
-#include "PIDController.h"
-#include "PIDSource.h"
-#include "PIDOutput.h"
-
-/**
- * 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 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 f);
- PIDSubsystem(double p, double i, double d, double f, double period);
- virtual ~PIDSubsystem();
-
- void Enable();
- void Disable();
-
- // PIDOutput interface
- virtual void PIDWrite(float output);
-
- // PIDSource interface
- virtual double PIDGet();
- void SetSetpoint(double setpoint);
- void SetSetpointRelative(double deltaSetpoint);
- void SetInputRange(float minimumInput, float maximumInput);
- double GetSetpoint();
- double GetPosition();
-
- virtual void SetAbsoluteTolerance(float absValue);
- virtual void SetPercentTolerance(float percent);
- virtual bool OnTarget();
-
-protected:
- PIDController *GetPIDController();
-
- virtual double ReturnPIDInput() = 0;
- virtual void UsePIDOutput(double output) = 0;
-
-private:
- /** The internal {@link PIDController} */
- PIDController *m_controller;
-
-public:
- virtual void InitTable(ITable* table);
- virtual std::string GetSmartDashboardType();
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Commands/PrintCommand.cpp b/aos/externals/WPILib/WPILib/Commands/PrintCommand.cpp
deleted file mode 100644
index 4a84996..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PrintCommand.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Commands/PrintCommand.h"
-#include "stdio.h"
-#include <sstream>
-
-PrintCommand::PrintCommand(const char *message) :
- Command(((std::stringstream&)(std::stringstream("Print \"") << message << "\"")).str().c_str())
-{
- m_message = message;
-}
-
-void PrintCommand::Initialize()
-{
- printf(m_message.c_str());
-}
-
-void PrintCommand::Execute()
-{
-}
-
-bool PrintCommand::IsFinished()
-{
- return true;
-}
-
-void PrintCommand::End()
-{
-}
-
-void PrintCommand::Interrupted()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/PrintCommand.h b/aos/externals/WPILib/WPILib/Commands/PrintCommand.h
deleted file mode 100644
index b6342f5..0000000
--- a/aos/externals/WPILib/WPILib/Commands/PrintCommand.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 __PRINT_COMMAND_H__
-#define __PRINT_COMMAND_H__
-
-#include "Commands/Command.h"
-#include <string>
-
-class PrintCommand : public Command
-{
-public:
- PrintCommand(const char *message);
- virtual ~PrintCommand() {}
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
-
-private:
- std::string m_message;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp b/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp
deleted file mode 100644
index 3f63180..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Scheduler.cpp
+++ /dev/null
@@ -1,288 +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 "Commands/Scheduler.h"
-
-#include "Buttons/ButtonScheduler.h"
-#include "Commands/Subsystem.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <iostream>
-#include <set>
-#include <semLib.h>
-#include <algorithm>
-
-Scheduler *Scheduler::_instance = NULL;
-
-Scheduler::Scheduler() :
- 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);
-
- m_table = NULL;
- m_enabled = true;
-}
-
-Scheduler::~Scheduler() {
- semTake(m_additionsLock, WAIT_FOREVER);
- semDelete(m_additionsLock);
-
- semTake(m_buttonsLock, WAIT_FOREVER);
- semDelete(m_buttonsLock);
-}
-
-/**
- * Returns the {@link Scheduler}, creating it if one does not exist.
- * @return the {@link Scheduler}
- */
-Scheduler *Scheduler::GetInstance() {
- if (_instance == NULL)
- _instance = new Scheduler();
- return _instance;
-}
-
-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) {
- Synchronized sync(m_buttonsLock);
- m_buttons.push_back(button);
-}
-
-void Scheduler::ProcessCommandAddition(Command *command) {
- if (command == NULL)
- return;
-
- // Check to make sure no adding during 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()) {
- // Check that the requirements can be had
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter;
- for (iter = requirements.begin(); iter != requirements.end(); iter++) {
- Subsystem *lock = *iter;
- if (lock->GetCurrentCommand() != NULL
- && !lock->GetCurrentCommand()->IsInterruptible())
- return;
- }
-
- // Give it the requirements
- m_adding = true;
- for (iter = requirements.begin(); iter != requirements.end(); iter++) {
- Subsystem *lock = *iter;
- if (lock->GetCurrentCommand() != NULL) {
- lock->GetCurrentCommand()->Cancel();
- Remove(lock->GetCurrentCommand());
- }
- lock->SetCurrentCommand(command);
- }
- m_adding = false;
-
- m_commands.insert(command);
-
- command->StartRunning();
- m_runningCommandsChanged = true;
- }
-}
-
-/**
- * Runs a single iteration of the loop. This method should be called often in order to have a functioning
- * {@link Command} system. The loop has five stages:
- *
- * <ol>
- * <li> Poll the Buttons </li>
- * <li> Execute/Remove the Commands </li>
- * <li> Send values to SmartDashboard </li>
- * <li> Add Commands </li>
- * <li> Add Defaults </li>
- * </ol>
- */
-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++) {
- (*rButtonIter)->Execute();
- }
- }
-
- m_runningCommandsChanged = false;
-
- // Loop through the commands
- CommandSet::iterator commandIter = m_commands.begin();
- for (; commandIter != m_commands.end();) {
- Command *command = *commandIter;
- // Increment before potentially removing to keep the iterator valid
- commandIter++;
- if (!command->Run()) {
- Remove(command);
- m_runningCommandsChanged = true;
- }
- }
-
- // Add the new things
- {
- Synchronized sync(m_additionsLock);
- CommandVector::iterator additionsIter = m_additions.begin();
- for (; additionsIter != m_additions.end(); additionsIter++) {
- ProcessCommandAddition(*additionsIter);
- }
- m_additions.clear();
- }
-
- // Add in the defaults
- Command::SubsystemSet::iterator subsystemIter = m_subsystems.begin();
- for (; subsystemIter != m_subsystems.end(); subsystemIter++) {
- Subsystem *lock = *subsystemIter;
- if (lock->GetCurrentCommand() == NULL) {
- ProcessCommandAddition(lock->GetDefaultCommand());
- }
- lock->ConfirmCommand();
- }
-
- UpdateTable();
-}
-
-/**
- * Registers a {@link Subsystem} to this {@link Scheduler}, so that the {@link Scheduler} might know
- * 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) {
- wpi_setWPIErrorWithContext(NullParameter, "subsystem");
- return;
- }
- m_subsystems.insert(subsystem);
-}
-
-/**
- * Removes the {@link Command} from the {@link Scheduler}.
- * @param command the command to remove
- */
-void Scheduler::Remove(Command *command) {
- if (command == NULL) {
- wpi_setWPIErrorWithContext(NullParameter, "command");
- return;
- }
-
- if (!m_commands.erase(command))
- return;
-
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++) {
- Subsystem *lock = *iter;
- lock->SetCurrentCommand(NULL);
- }
-
- command->Removed();
-}
-
-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
deleted file mode 100644
index 3547e2b..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Scheduler.h
+++ /dev/null
@@ -1,70 +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 __SCHEDULER_H__
-#define __SCHEDULER_H__
-
-#include "Commands/Command.h"
-#include "ErrorBase.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 Subsystem;
-
-class Scheduler : public ErrorBase, public NamedSendable
-{
-public:
- static Scheduler *GetInstance();
-
- 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();
- virtual ~Scheduler();
-
- void ProcessCommandAddition(Command *command);
-
- static Scheduler *_instance;
- Command::SubsystemSet m_subsystems;
- SEM_ID m_buttonsLock;
- typedef std::vector<ButtonScheduler *> ButtonVector;
- ButtonVector m_buttons;
- typedef std::vector<Command *> CommandVector;
- SEM_ID m_additionsLock;
- CommandVector m_additions;
- 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/StartCommand.cpp b/aos/externals/WPILib/WPILib/Commands/StartCommand.cpp
deleted file mode 100644
index 4e04514..0000000
--- a/aos/externals/WPILib/WPILib/Commands/StartCommand.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 "Commands/StartCommand.h"
-
-StartCommand::StartCommand(Command *commandToStart) :
- Command("StartCommand")
-{
- m_commandToFork = commandToStart;
-}
-
-void StartCommand::Initialize()
-{
- m_commandToFork->Start();
-}
-
-void StartCommand::Execute()
-{
-}
-
-void StartCommand::End()
-{
-}
-
-void StartCommand::Interrupted()
-{
-}
-
-bool StartCommand::IsFinished()
-{
- return true;
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/StartCommand.h b/aos/externals/WPILib/WPILib/Commands/StartCommand.h
deleted file mode 100644
index 1ea6dcf..0000000
--- a/aos/externals/WPILib/WPILib/Commands/StartCommand.h
+++ /dev/null
@@ -1,29 +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 __START_COMMAND_H__
-#define __START_COMMAND_H__
-
-#include "Commands/Command.h"
-
-class StartCommand : public Command
-{
-public:
- StartCommand(Command *commandToStart);
- virtual ~StartCommand() {}
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
-
-private:
- Command *m_commandToFork;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp b/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp
deleted file mode 100644
index bdc0da8..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Subsystem.cpp
+++ /dev/null
@@ -1,179 +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 "Commands/Subsystem.h"
-
-#include "Commands/Command.h"
-#include "Commands/Scheduler.h"
-#include "WPIErrors.h"
-
-/**
- * Creates a subsystem with the given name
- * @param name the name of the subsystem
- */
-Subsystem::Subsystem(const char *name) :
- 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
- * This is meant to be the place to call SetDefaultCommand in a subsystem and will be called
- * on all the subsystems by the CommandBase method before the program starts running by using
- * the list of all registered Subsystems inside the Scheduler.
- *
- * This should be overridden by a Subsystem that has a default Command
- */
-void Subsystem::InitDefaultCommand() {
-
-}
-
-/**
- * Sets the default command. If this is not called or is called with null,
- * then there will be no default command for the subsystem.
- *
- * <p><b>WARNING:</b> This should <b>NOT</b> be called in a constructor if the subsystem is a
- * singleton.</p>
- *
- * @param command the default command (or null if there should be none)
- */
-void Subsystem::SetDefaultCommand(Command *command)
-{
- if (command == NULL)
- {
- m_defaultCommand = NULL;
- }
- else
- {
- bool found = false;
- Command::SubsystemSet requirements = command->GetRequirements();
- Command::SubsystemSet::iterator iter = requirements.begin();
- for (; iter != requirements.end(); iter++)
- {
- if (*iter == this)
- {
- found = true;
- break;
- }
- }
-
- if (!found)
- {
- wpi_setWPIErrorWithContext(CommandIllegalUse, "A default command must require the subsystem");
- return;
- }
-
- m_defaultCommand = command;
- }
- 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);
- }
- }
-}
-
-/**
- * Returns the default command (or null if there is none).
- * @return the default command
- */
-Command *Subsystem::GetDefaultCommand()
-{
- if (!m_initializedDefaultCommand) {
- m_initializedDefaultCommand = true;
- InitDefaultCommand();
- }
- return m_defaultCommand;
-}
-
-/**
- * Sets the current command
- * @param command the new current command
- */
-void Subsystem::SetCurrentCommand(Command *command)
-{
- m_currentCommand = command;
- m_currentCommandChanged = true;
-}
-
-/**
- * Returns the command which currently claims this subsystem.
- * @return the command which currently claims this subsystem
- */
-Command *Subsystem::GetCurrentCommand()
-{
- return m_currentCommand;
-}
-
-/**
- * Call this to alert Subsystem that the current command is actually the command.
- * Sometimes, the {@link Subsystem} is told that it has no command while the {@link Scheduler}
- * is going through the loop, only to be soon after given a new one. This will avoid that situation.
- */
-void Subsystem::ConfirmCommand()
-{
- if (m_currentCommandChanged) {
- if (m_table != NULL)
- {
- if (m_currentCommand != NULL)
- {
- m_table->PutBoolean("hasCommand", true);
- m_table->PutString("command", m_currentCommand->GetName());
- }
- else
- {
- m_table->PutBoolean("hasCommand", false);
- }
- }
- m_currentCommandChanged = false;
- }
-}
-
-
-
-std::string Subsystem::GetName()
-{
- return m_name;
-}
-
-std::string Subsystem::GetSmartDashboardType()
-{
- return "Subsystem";
-}
-
-void Subsystem::InitTable(ITable* table)
-{
- 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
deleted file mode 100644
index 1bc1fd2..0000000
--- a/aos/externals/WPILib/WPILib/Commands/Subsystem.h
+++ /dev/null
@@ -1,48 +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 __SUBSYSTEM_H__
-#define __SUBSYSTEM_H__
-
-#include "ErrorBase.h"
-#include "SmartDashboard/NamedSendable.h"
-#include <string>
-
-
-class Command;
-
-class Subsystem : public ErrorBase, public NamedSendable
-{
- friend class Scheduler;
-public:
- Subsystem(const char *name);
- virtual ~Subsystem() {}
-
- void SetDefaultCommand(Command *command);
- Command *GetDefaultCommand();
- void SetCurrentCommand(Command *command);
- Command *GetCurrentCommand();
- virtual void InitDefaultCommand();
-
-private:
- void ConfirmCommand();
-
- 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/Commands/WaitCommand.cpp b/aos/externals/WPILib/WPILib/Commands/WaitCommand.cpp
deleted file mode 100644
index 508db04..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitCommand.cpp
+++ /dev/null
@@ -1,39 +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 "Commands/WaitCommand.h"
-#include <sstream>
-
-WaitCommand::WaitCommand(double timeout) :
- Command(((std::stringstream&)(std::stringstream("Wait(") << timeout << ")")).str().c_str(), timeout)
-{
-}
-
-WaitCommand::WaitCommand(const char *name, double timeout) :
- Command(name, timeout)
-{
-}
-
-void WaitCommand::Initialize()
-{
-}
-
-void WaitCommand::Execute()
-{
-}
-
-bool WaitCommand::IsFinished()
-{
- return IsTimedOut();
-}
-
-void WaitCommand::End()
-{
-}
-
-void WaitCommand::Interrupted()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/WaitCommand.h b/aos/externals/WPILib/WPILib/Commands/WaitCommand.h
deleted file mode 100644
index 036bae8..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitCommand.h
+++ /dev/null
@@ -1,27 +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 __WAIT_COMMAND_H__
-#define __WAIT_COMMAND_H__
-
-#include "Commands/Command.h"
-
-class WaitCommand : public Command
-{
-public:
- WaitCommand(double timeout);
- WaitCommand(const char *name, double timeout);
- virtual ~WaitCommand() {}
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/WaitForChildren.cpp b/aos/externals/WPILib/WPILib/Commands/WaitForChildren.cpp
deleted file mode 100644
index e168513..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitForChildren.cpp
+++ /dev/null
@@ -1,39 +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 "Commands/WaitForChildren.h"
-#include "Commands/CommandGroup.h"
-
-WaitForChildren::WaitForChildren(double timeout) :
- Command("WaitForChildren", timeout)
-{
-}
-
-WaitForChildren::WaitForChildren(const char *name, double timeout) :
- Command(name, timeout)
-{
-}
-
-void WaitForChildren::Initialize()
-{
-}
-
-void WaitForChildren::Execute()
-{
-}
-
-void WaitForChildren::End()
-{
-}
-
-void WaitForChildren::Interrupted()
-{
-}
-
-bool WaitForChildren::IsFinished()
-{
- return GetGroup() == NULL || GetGroup()->GetSize() == 0;
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/WaitForChildren.h b/aos/externals/WPILib/WPILib/Commands/WaitForChildren.h
deleted file mode 100644
index 2f4e3ea..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitForChildren.h
+++ /dev/null
@@ -1,27 +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 __WAIT_FOR_CHILDREN_H__
-#define __WAIT_FOR_CHILDREN_H__
-
-#include "Commands/Command.h"
-
-class WaitForChildren : public Command
-{
-public:
- WaitForChildren(double timeout);
- WaitForChildren(const char *name, double timeout);
- virtual ~WaitForChildren() {}
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.cpp b/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.cpp
deleted file mode 100644
index 3d521b8..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.cpp
+++ /dev/null
@@ -1,51 +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 "Commands/WaitUntilCommand.h"
-#include "DriverStation.h"
-#include "Timer.h"
-
-/**
- * A {@link WaitCommand} will wait until a certain match time before finishing.
- * This will wait until the game clock reaches some value, then continue to the
- * next command.
- * @see CommandGroup
- */
-WaitUntilCommand::WaitUntilCommand(double time) :
- Command("WaitUntilCommand", time)
-{
- m_time = time;
-}
-
-WaitUntilCommand::WaitUntilCommand(const char *name, double time) :
- Command(name, time)
-{
- m_time = time;
-}
-
-void WaitUntilCommand::Initialize()
-{
-}
-
-void WaitUntilCommand::Execute()
-{
-}
-
-/**
- * Check if we've reached the actual finish time.
- */
-bool WaitUntilCommand::IsFinished()
-{
- return DriverStation::GetInstance()->GetMatchTime() >= m_time;
-}
-
-void WaitUntilCommand::End()
-{
-}
-
-void WaitUntilCommand::Interrupted()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.h b/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.h
deleted file mode 100644
index b816ccf..0000000
--- a/aos/externals/WPILib/WPILib/Commands/WaitUntilCommand.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 __WAIT_UNTIL_COMMAND_H__
-#define __WAIT_UNTIL_COMMAND_H__
-
-#include "Commands/Command.h"
-
-class WaitUntilCommand : public Command
-{
-public:
- WaitUntilCommand(double time);
- WaitUntilCommand(const char *name, double time);
- virtual ~WaitUntilCommand() {}
-
-protected:
- virtual void Initialize();
- virtual void Execute();
- virtual bool IsFinished();
- virtual void End();
- virtual void Interrupted();
-
-private:
- double m_time;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Compressor.cpp b/aos/externals/WPILib/WPILib/Compressor.cpp
deleted file mode 100644
index 0c973f1..0000000
--- a/aos/externals/WPILib/WPILib/Compressor.cpp
+++ /dev/null
@@ -1,195 +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 "DigitalInput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-
-/**
- * Internal task.
- *
- * Task which checks the compressor pressure switch and operates the relay as necessary
- * depending on the pressure.
- *
- * Do not call this function directly.
- */
-static void CompressorChecker(Compressor *c)
-{
- while (1)
- {
- if (c->Enabled())
- {
- c->SetRelayValue( c->GetPressureSwitchValue() == 0 ? Relay::kOn : Relay::kOff );
- }
- else
- {
- c->SetRelayValue(Relay::kOff);
- }
- Wait(0.5);
- }
-}
-
-/**
- * Initialize the Compressor object.
- * This method is the common initialization code for all the constructors for the Compressor
- * object. It takes the relay channel and pressure switch channel and spawns a task that polls the
- * compressor and sensor.
- *
- * You MUST start the compressor by calling the Start() method.
- */
-void Compressor::InitCompressor(uint8_t pressureSwitchModuleNumber,
- uint32_t pressureSwitchChannel,
- uint8_t compresssorRelayModuleNumber,
- uint32_t compressorRelayChannel)
-{
- m_table = NULL;
- m_enabled = false;
- m_pressureSwitch = new DigitalInput(pressureSwitchModuleNumber, pressureSwitchChannel);
- m_relay = new Relay(compresssorRelayModuleNumber, compressorRelayChannel, Relay::kForwardOnly);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Compressor, 0);
-
- if (!m_task.Start((int32_t)this))
- {
- wpi_setWPIError(CompressorTaskError);
- }
-}
-
-/**
- * Compressor constructor.
- * Given a fully specified relay channel and pressure switch channel, initialize the Compressor object.
- *
- * You MUST start the compressor by calling the Start() method.
- *
- * @param pressureSwitchModuleNumber The digital module that the pressure switch is attached to.
- * @param pressureSwitchChannel The GPIO channel that the pressure switch is attached to.
- * @param compresssorRelayModuleNumber The digital module that the compressor relay is attached to.
- * @param compressorRelayChannel The relay channel that the compressor relay is attached to.
- */
-Compressor::Compressor(uint8_t pressureSwitchModuleNumber,
- uint32_t pressureSwitchChannel,
- uint8_t compresssorRelayModuleNumber,
- uint32_t compressorRelayChannel)
- : m_task ("Compressor", (FUNCPTR)CompressorChecker)
-{
- InitCompressor(pressureSwitchModuleNumber,
- pressureSwitchChannel,
- compresssorRelayModuleNumber,
- compressorRelayChannel);
-}
-
-/**
- * Compressor constructor.
- * Given a relay channel and pressure switch channel (both in the default digital module), initialize
- * the Compressor object.
- *
- * You MUST start the compressor by calling the Start() method.
- *
- * @param pressureSwitchChannel The GPIO channel that the pressure switch is attached to.
- * @param compressorRelayChannel The relay channel that the compressor relay is attached to.
- */
-Compressor::Compressor(uint32_t pressureSwitchChannel, uint32_t compressorRelayChannel)
- : m_task ("Compressor", (FUNCPTR)CompressorChecker)
-{
- InitCompressor(GetDefaultDigitalModule(),
- pressureSwitchChannel,
- GetDefaultDigitalModule(),
- compressorRelayChannel);
-}
-
-/**
- * Delete the Compressor object.
- * Delete the allocated resources for the compressor and kill the compressor task that is polling
- * the pressure switch.
- */
-Compressor::~Compressor()
-{
- delete m_pressureSwitch;
- delete m_relay;
-}
-
-/**
- * Operate the relay for the compressor.
- * Change the value of the relay output that is connected to the compressor motor.
- * This is only intended to be called by the internal polling thread.
- */
-void Compressor::SetRelayValue(Relay::Value relayValue)
-{
- m_relay->Set(relayValue);
-}
-
-/**
- * Get the pressure switch value.
- * Read the pressure switch digital input.
- *
- * @return The current state of the pressure switch.
- */
-uint32_t Compressor::GetPressureSwitchValue()
-{
- return m_pressureSwitch->Get();
-}
-
-/**
- * Start the compressor.
- * This method will allow the polling loop to actually operate the compressor. The
- * is stopped by default and won't operate until starting it.
- */
-void Compressor::Start()
-{
- m_enabled = true;
-}
-
-/**
- * Stop the compressor.
- * This method will stop the compressor from turning on.
- */
-void Compressor::Stop()
-{
- m_enabled = false;
-}
-
-/**
- * Get the state of the enabled flag.
- * Return the state of the enabled flag for the compressor and pressure switch
- * combination.
- *
- * @return The state of the compressor thread's enable flag.
- */
-bool Compressor::Enabled()
-{
- 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
deleted file mode 100644
index cd68af4..0000000
--- a/aos/externals/WPILib/WPILib/Compressor.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 COMPRESSOR_H_
-#define COMPRESSOR_H_
-
-#define COMPRESSOR_PRIORITY 90
-
-#include "SensorBase.h"
-#include "Relay.h"
-#include "Task.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class DigitalInput;
-
-/**
- * Compressor object.
- * The Compressor object is designed to handle the operation of the compressor, pressure sensor and
- * relay for a FIRST robot pneumatics system. The Compressor object starts a task which runs in the
- * backround and periodically polls the pressure sensor and operates the relay that controls the
- * compressor.
- */
-class Compressor: public SensorBase, public LiveWindowSendable
-{
-public:
- Compressor(uint32_t pressureSwitchChannel, uint32_t compressorRelayChannel);
- Compressor(uint8_t pressureSwitchModuleNumber, uint32_t pressureSwitchChannel,
- uint8_t compresssorRelayModuleNumber, uint32_t compressorRelayChannel);
- ~Compressor();
-
- void Start();
- void Stop();
- bool Enabled();
- uint32_t 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_t pressureSwitchModuleNumber, uint32_t pressureSwitchChannel,
- uint8_t compresssorRelayModuleNumber, uint32_t compressorRelayChannel);
-
- DigitalInput *m_pressureSwitch;
- 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
deleted file mode 100644
index 84f8857..0000000
--- a/aos/externals/WPILib/WPILib/Controller.h
+++ /dev/null
@@ -1,35 +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 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
deleted file mode 100644
index bf77743..0000000
--- a/aos/externals/WPILib/WPILib/Counter.cpp
+++ /dev/null
@@ -1,726 +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 "Counter.h"
-#include "AnalogTrigger.h"
-#include "DigitalInput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-
-static Resource *counters = NULL;
-
-/**
- * Create an instance of a counter object.
- * This creates a ChipObject counter and initializes status variables appropriately
- */
-void Counter::InitCounter(Mode mode)
-{
- m_table = NULL;
- Resource::CreateResourceObject(&counters, tCounter::kNumSystems);
- uint32_t index = counters->Allocate("Counter", this);
- if (index == ~0ul)
- {
- return;
- }
- m_index = index;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter = tCounter::create(m_index, &localStatus);
- m_counter->writeConfig_Mode(mode, &localStatus);
- m_upSource = NULL;
- m_downSource = NULL;
- m_allocatedUpSource = false;
- m_allocatedDownSource = false;
- m_counter->writeTimerConfig_AverageSize(1, &localStatus);
- wpi_setError(localStatus);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Counter, index, mode);
-}
-
-/**
- * Create an instance of a counter where no sources are selected.
- * Then they all must be selected by calling functions to specify the upsource and the downsource
- * independently.
- */
-Counter::Counter() :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
-}
-
-/**
- * Create an instance of a counter from a Digital Input.
- * This is used if an existing digital input is to be shared by multiple other objects such
- * as encoders.
- */
-Counter::Counter(DigitalSource *source) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(source);
- ClearDownSource();
-}
-
-Counter::Counter(DigitalSource &source) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(&source);
- ClearDownSource();
-}
-
-/**
- * Create an instance of a Counter object.
- * Create an up-Counter instance given a channel. The default digital module is assumed.
- */
-Counter::Counter(uint32_t channel) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(channel);
- ClearDownSource();
-}
-
-/**
- * Create an instance of a Counter object.
- * Create an instance of an up-Counter given a digital module and a channel.
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The channel in the digital module
- */
-Counter::Counter(uint8_t moduleNumber, uint32_t channel) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(moduleNumber, channel);
- ClearDownSource();
-}
-
-/**
- * Create an instance of a Counter object.
- * Create an instance of a simple up-Counter given an analog trigger.
- * Use the trigger state output from the analog trigger.
- */
-Counter::Counter(AnalogTrigger *trigger) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(trigger->CreateOutput(AnalogTriggerOutput::kState));
- ClearDownSource();
- m_allocatedUpSource = true;
-}
-
-Counter::Counter(AnalogTrigger &trigger) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- InitCounter();
- SetUpSource(trigger.CreateOutput(AnalogTriggerOutput::kState));
- ClearDownSource();
- m_allocatedUpSource = true;
-}
-
-Counter::Counter(EncodingType encodingType, DigitalSource *upSource, DigitalSource *downSource, bool inverted) :
- m_upSource(NULL),
- m_downSource(NULL),
- m_counter(NULL)
-{
- if (encodingType != k1X && encodingType != k2X)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Counter only supports 1X and 2X quadrature decoding.");
- return;
- }
- InitCounter(kExternalDirection);
- SetUpSource(upSource);
- SetDownSource(downSource);
- tRioStatusCode localStatus = NiFpga_Status_Success;
-
- if (encodingType == k1X)
- {
- SetUpSourceEdge(true, false);
- m_counter->writeTimerConfig_AverageSize(1, &localStatus);
- }
- else
- {
- SetUpSourceEdge(true, true);
- m_counter->writeTimerConfig_AverageSize(2, &localStatus);
- }
-
- wpi_setError(localStatus);
- SetDownSourceEdge(inverted, true);
-}
-
-/**
- * Delete the Counter object.
- */
-Counter::~Counter()
-{
- SetUpdateWhenEmpty(true);
- if (m_allocatedUpSource)
- {
- delete m_upSource;
- m_upSource = NULL;
- }
- if (m_allocatedDownSource)
- {
- delete m_downSource;
- m_downSource = NULL;
- }
- delete m_counter;
- m_counter = NULL;
- counters->Free(m_index, this);
-}
-
-/**
- * Set the up source for the counter as digital input channel and slot.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The digital channel (1..14).
- */
-void Counter::SetUpSource(uint8_t moduleNumber, uint32_t channel)
-{
- if (StatusIsFatal()) return;
- SetUpSource(new DigitalInput(moduleNumber, channel));
- m_allocatedUpSource = true;
-}
-
-/**
- * Set the upsource for the counter as a digital input channel.
- * The slot will be the default digital module slot.
- */
-void Counter::SetUpSource(uint32_t channel)
-{
- if (StatusIsFatal()) return;
- SetUpSource(GetDefaultDigitalModule(), channel);
- m_allocatedUpSource = true;
-}
-
-/**
- * Set the up counting source to be an analog trigger.
- * @param analogTrigger The analog trigger object that is used for the Up Source
- * @param triggerType The analog trigger output that will trigger the counter.
- */
-void Counter::SetUpSource(AnalogTrigger *analogTrigger, AnalogTriggerOutput::Type triggerType)
-{
- if (StatusIsFatal()) return;
- SetUpSource(analogTrigger->CreateOutput(triggerType));
- m_allocatedUpSource = true;
-}
-
-/**
- * Set the up counting source to be an analog trigger.
- * @param analogTrigger The analog trigger object that is used for the Up Source
- * @param triggerType The analog trigger output that will trigger the counter.
- */
-void Counter::SetUpSource(AnalogTrigger &analogTrigger, AnalogTriggerOutput::Type triggerType)
-{
- SetUpSource(&analogTrigger, triggerType);
-}
-
-/**
- * Set the source object that causes the counter to count up.
- * Set the up counting DigitalSource.
- */
-void Counter::SetUpSource(DigitalSource *source)
-{
- if (StatusIsFatal()) return;
- if (m_allocatedUpSource)
- {
- delete m_upSource;
- m_upSource = NULL;
- m_allocatedUpSource = false;
- }
- m_upSource = source;
- if (m_upSource->StatusIsFatal())
- {
- CloneError(m_upSource);
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_UpSource_Module(source->GetModuleForRouting(), &localStatus);
- m_counter->writeConfig_UpSource_Channel(source->GetChannelForRouting(), &localStatus);
- m_counter->writeConfig_UpSource_AnalogTrigger(source->GetAnalogTriggerForRouting(), &localStatus);
-
- if(m_counter->readConfig_Mode(&localStatus) == kTwoPulse ||
- m_counter->readConfig_Mode(&localStatus) == kExternalDirection)
- {
- SetUpSourceEdge(true, false);
- }
- m_counter->strobeReset(&localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Set the source object that causes the counter to count up.
- * Set the up counting DigitalSource.
- */
-void Counter::SetUpSource(DigitalSource &source)
-{
- SetUpSource(&source);
-}
-
-/**
- * Set the edge sensitivity on an up counting source.
- * Set the up source to either detect rising edges or falling edges.
- */
-void Counter::SetUpSourceEdge(bool risingEdge, bool fallingEdge)
-{
- if (StatusIsFatal()) return;
- if (m_upSource == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "Must set non-NULL UpSource before setting UpSourceEdge");
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_UpRisingEdge(risingEdge, &localStatus);
- m_counter->writeConfig_UpFallingEdge(fallingEdge, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Disable the up counting source to the counter.
- */
-void Counter::ClearUpSource()
-{
- if (StatusIsFatal()) return;
- if (m_allocatedUpSource)
- {
- delete m_upSource;
- m_upSource = NULL;
- m_allocatedUpSource = false;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool state = m_counter->readConfig_Enable(&localStatus);
- m_counter->writeConfig_Enable(false, &localStatus);
- m_counter->writeConfig_UpFallingEdge(false, &localStatus);
- m_counter->writeConfig_UpRisingEdge(false, &localStatus);
- // Index 0 of digital is always 0.
- m_counter->writeConfig_UpSource_Channel(0, &localStatus);
- m_counter->writeConfig_UpSource_AnalogTrigger(false, &localStatus);
- m_counter->writeConfig_Enable(state, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set the down counting source to be a digital input channel.
- * The slot will be set to the default digital module slot.
- */
-void Counter::SetDownSource(uint32_t channel)
-{
- if (StatusIsFatal()) return;
- SetDownSource(new DigitalInput(channel));
- m_allocatedDownSource = true;
-}
-
-/**
- * Set the down counting source to be a digital input slot and channel.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The digital channel (1..14).
- */
-void Counter::SetDownSource(uint8_t moduleNumber, uint32_t channel)
-{
- if (StatusIsFatal()) return;
- SetDownSource(new DigitalInput(moduleNumber, channel));
- m_allocatedDownSource = true;
-}
-
-/**
- * Set the down counting source to be an analog trigger.
- * @param analogTrigger The analog trigger object that is used for the Down Source
- * @param triggerType The analog trigger output that will trigger the counter.
- */
-void Counter::SetDownSource(AnalogTrigger *analogTrigger, AnalogTriggerOutput::Type triggerType)
-{
- if (StatusIsFatal()) return;
- SetDownSource(analogTrigger->CreateOutput(triggerType));
- m_allocatedDownSource = true;
-}
-
-/**
- * Set the down counting source to be an analog trigger.
- * @param analogTrigger The analog trigger object that is used for the Down Source
- * @param triggerType The analog trigger output that will trigger the counter.
- */
-void Counter::SetDownSource(AnalogTrigger &analogTrigger, AnalogTriggerOutput::Type triggerType)
-{
- SetDownSource(&analogTrigger, triggerType);
-}
-
-/**
- * Set the source object that causes the counter to count down.
- * Set the down counting DigitalSource.
- */
-void Counter::SetDownSource(DigitalSource *source)
-{
- if (StatusIsFatal()) return;
- if (m_allocatedDownSource)
- {
- delete m_downSource;
- m_downSource = NULL;
- m_allocatedDownSource = false;
- }
- m_downSource = source;
- if (m_downSource->StatusIsFatal())
- {
- CloneError(m_downSource);
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- unsigned char mode = m_counter->readConfig_Mode(&localStatus);
- if (mode != kTwoPulse && mode != kExternalDirection)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Counter only supports DownSource in TwoPulse and ExternalDirection modes.");
- return;
- }
- m_counter->writeConfig_DownSource_Module(source->GetModuleForRouting(), &localStatus);
- m_counter->writeConfig_DownSource_Channel(source->GetChannelForRouting(), &localStatus);
- m_counter->writeConfig_DownSource_AnalogTrigger(source->GetAnalogTriggerForRouting(), &localStatus);
-
- SetDownSourceEdge(true, false);
- m_counter->strobeReset(&localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Set the source object that causes the counter to count down.
- * Set the down counting DigitalSource.
- */
-void Counter::SetDownSource(DigitalSource &source)
-{
- SetDownSource(&source);
-}
-
-/**
- * Set the edge sensitivity on a down counting source.
- * Set the down source to either detect rising edges or falling edges.
- */
-void Counter::SetDownSourceEdge(bool risingEdge, bool fallingEdge)
-{
- if (StatusIsFatal()) return;
- if (m_downSource == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "Must set non-NULL DownSource before setting DownSourceEdge");
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_DownRisingEdge(risingEdge, &localStatus);
- m_counter->writeConfig_DownFallingEdge(fallingEdge, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Disable the down counting source to the counter.
- */
-void Counter::ClearDownSource()
-{
- if (StatusIsFatal()) return;
- if (m_allocatedDownSource)
- {
- delete m_downSource;
- m_downSource = NULL;
- m_allocatedDownSource = false;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool state = m_counter->readConfig_Enable(&localStatus);
- m_counter->writeConfig_Enable(false, &localStatus);
- m_counter->writeConfig_DownFallingEdge(false, &localStatus);
- m_counter->writeConfig_DownRisingEdge(false, &localStatus);
- // Index 0 of digital is always 0.
- m_counter->writeConfig_DownSource_Channel(0, &localStatus);
- m_counter->writeConfig_DownSource_AnalogTrigger(false, &localStatus);
- m_counter->writeConfig_Enable(state, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set standard up / down counting mode on this counter.
- * Up and down counts are sourced independently from two inputs.
- */
-void Counter::SetUpDownCounterMode()
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Mode(kTwoPulse, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set external direction mode on this counter.
- * Counts are sourced on the Up counter input.
- * The Down counter input represents the direction to count.
- */
-void Counter::SetExternalDirectionMode()
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Mode(kExternalDirection, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set Semi-period mode on this counter.
- * Counts up on both rising and falling edges.
- */
-void Counter::SetSemiPeriodMode(bool highSemiPeriod)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Mode(kSemiperiod, &localStatus);
- m_counter->writeConfig_UpRisingEdge(highSemiPeriod, &localStatus);
- SetUpdateWhenEmpty(false);
- wpi_setError(localStatus);
-}
-
-/**
- * Configure the counter to count in up or down based on the length of the input pulse.
- * This mode is most useful for direction sensitive gear tooth sensors.
- * @param threshold The pulse length beyond which the counter counts the opposite direction. Units are seconds.
- */
-void Counter::SetPulseLengthMode(float threshold)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Mode(kPulseLength, &localStatus);
- m_counter->writeConfig_PulseLengthThreshold((uint32_t)(threshold * 1.0e6) * kSystemClockTicksPerMicrosecond, &localStatus);
- wpi_setError(localStatus);
-}
-
-
- /**
- * Get the Samples to Average which specifies the number of samples of the timer to
- * average when calculating the period. Perform averaging to account for
- * mechanical imperfections or as oversampling to increase resolution.
- * @return SamplesToAverage The number of samples being averaged (from 1 to 127)
- */
- int Counter::GetSamplesToAverage()
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- return m_counter->readTimerConfig_AverageSize(&localStatus);
- wpi_setError(localStatus);
- }
-
-/**
- * Set the Samples to Average which specifies the number of samples of the timer to
- * average when calculating the period. Perform averaging to account for
- * mechanical imperfections or as oversampling to increase resolution.
- * @param samplesToAverage The number of samples to average from 1 to 127.
- */
- void Counter::SetSamplesToAverage (int samplesToAverage) {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (samplesToAverage < 1 || samplesToAverage > 127)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Average counter values must be between 1 and 127");
- }
- m_counter->writeTimerConfig_AverageSize(samplesToAverage, &localStatus);
- wpi_setError(localStatus);
- }
-
-/**
- * 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.
- */
-void Counter::Start()
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Enable(1, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * 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.
- */
-int32_t Counter::Get()
-{
- if (StatusIsFatal()) return 0;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- int32_t value = m_counter->readOutput_Value(&localStatus);
- wpi_setError(localStatus);
- return value;
-}
-
-/**
- * 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.
- */
-void Counter::Reset()
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->strobeReset(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Stop the Counter.
- * Stops the counting but doesn't effect the current value.
- */
-void Counter::Stop()
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeConfig_Enable(0, &localStatus);
- wpi_setError(localStatus);
-}
-
-/*
- * 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.
- * @returns The period of the last two pulses in units of seconds.
- */
-double Counter::GetPeriod()
-{
- if (StatusIsFatal()) return 0.0;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- tCounter::tTimerOutput output = m_counter->readTimerOutput(&localStatus);
- double period;
- if (output.Stalled)
- {
- // Return infinity
- double zero = 0.0;
- period = 1.0 / zero;
- }
- else
- {
- // output.Period is a fixed point number that counts by 2 (24 bits, 25 integer bits)
- period = (double)(output.Period << 1) / (double)output.Count;
- }
- wpi_setError(localStatus);
- return period * 1.0e-6;
-}
-
-/**
- * Set the maximum period where the device is still considered "moving".
- * Sets the maximum period where the device is considered moving. This value is used to determine
- * the "stopped" state of the counter using the GetStopped method.
- * @param maxPeriod The maximum period where the counted device is considered moving in
- * seconds.
- */
-void Counter::SetMaxPeriod(double maxPeriod)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeTimerConfig_StallPeriod((uint32_t)(maxPeriod * 1.0e6), &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Select whether you want to continue updating the event timer output when there are no samples captured.
- * The output of the event timer has a buffer of periods that are averaged and posted to
- * a register on the FPGA. When the timer detects that the event source has stopped
- * (based on the MaxPeriod) the buffer of samples to be averaged is emptied. If you
- * enable the update when empty, you will be notified of the stopped source and the event
- * time will report 0 samples. If you disable update when empty, the most recent average
- * will remain on the output until a new sample is acquired. You will never see 0 samples
- * output (except when there have been no events since an FPGA reset) and you will likely not
- * see the stopped bit become true (since it is updated at the end of an average and there are
- * no samples to average).
- */
-void Counter::SetUpdateWhenEmpty(bool enabled)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_counter->writeTimerConfig_UpdateWhenEmpty(enabled, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Determine if the clock is stopped.
- * Determine if the clocked input is stopped based on the MaxPeriod value set using the
- * SetMaxPeriod method. If the clock exceeds the MaxPeriod, then the device (and counter) are
- * assumed to be stopped and it returns true.
- * @return Returns true if the most recent counter period exceeds the MaxPeriod value set by
- * SetMaxPeriod.
- */
-bool Counter::GetStopped()
-{
- if (StatusIsFatal()) return false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- return m_counter->readTimerOutput_Stalled(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * The last direction the counter value changed.
- * @return The last direction the counter value changed.
- */
-bool Counter::GetDirection()
-{
- if (StatusIsFatal()) return false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool value = m_counter->readOutput_Direction(&localStatus);
- wpi_setError(localStatus);
- return value;
-}
-
-/**
- * Set the Counter to return reversed sensing on the direction.
- * This allows counters to change the direction they are counting in the case of 1X and 2X
- * quadrature encoding only. Any other counter mode isn't supported.
- * @param reverseDirection true if the value counted should be negated.
- */
-void Counter::SetReverseDirection(bool reverseDirection)
-{
- if (StatusIsFatal()) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (m_counter->readConfig_Mode(&localStatus) == kExternalDirection)
- {
- if (reverseDirection)
- SetDownSourceEdge(true, true);
- else
- SetDownSourceEdge(false, true);
- }
- 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
deleted file mode 100644
index fff1328..0000000
--- a/aos/externals/WPILib/WPILib/Counter.h
+++ /dev/null
@@ -1,96 +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 CPPCOUNTER_H_
-#define CPPCOUNTER_H_
-
-#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.
- * This is a general purpose class for counting repetitive events. It can return the number
- * 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, public LiveWindowSendable
-{
-public:
- typedef enum {kTwoPulse=0, kSemiperiod=1, kPulseLength=2, kExternalDirection=3} Mode;
-
- Counter();
- explicit Counter(uint32_t channel);
- Counter(uint8_t moduleNumber, uint32_t channel);
- explicit Counter(DigitalSource *source);
- explicit Counter(DigitalSource &source);
- explicit Counter(AnalogTrigger *trigger);
- explicit Counter(AnalogTrigger &trigger);
- Counter(EncodingType encodingType, DigitalSource *upSource, DigitalSource *downSource, bool inverted);
- virtual ~Counter();
-
- void SetUpSource(uint32_t channel);
- void SetUpSource(uint8_t moduleNumber, uint32_t channel);
- void SetUpSource(AnalogTrigger *analogTrigger, AnalogTriggerOutput::Type triggerType);
- void SetUpSource(AnalogTrigger &analogTrigger, AnalogTriggerOutput::Type triggerType);
- void SetUpSource(DigitalSource *source);
- void SetUpSource(DigitalSource &source);
- void SetUpSourceEdge(bool risingEdge, bool fallingEdge);
- void ClearUpSource();
-
- void SetDownSource(uint32_t channel);
- void SetDownSource(uint8_t moduleNumber, uint32_t channel);
- void SetDownSource(AnalogTrigger *analogTrigger, AnalogTriggerOutput::Type triggerType);
- void SetDownSource(AnalogTrigger &analogTrigger, AnalogTriggerOutput::Type triggerType);
- void SetDownSource(DigitalSource *source);
- void SetDownSource(DigitalSource &source);
- void SetDownSourceEdge(bool risingEdge, bool fallingEdge);
- void ClearDownSource();
-
- void SetUpDownCounterMode();
- void SetExternalDirectionMode();
- void SetSemiPeriodMode(bool highSemiPeriod);
- void SetPulseLengthMode(float threshold);
-
- void SetReverseDirection(bool reverseDirection);
-
- // CounterBase interface
- void Start();
- int32_t Get();
- void Reset();
- void Stop();
- double GetPeriod();
- void SetMaxPeriod(double maxPeriod);
- void SetUpdateWhenEmpty(bool enabled);
- bool GetStopped();
- bool GetDirection();
- void SetSamplesToAverage(int samplesToAverage);
- int GetSamplesToAverage();
- uint32_t GetIndex() {return m_index;}
-
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- virtual std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-protected:
- DigitalSource *m_upSource; ///< What makes the counter count up.
- DigitalSource *m_downSource; ///< What makes the counter count down.
- tCounter *m_counter; ///< The FPGA counter object.
-private:
- void InitCounter(Mode mode = kTwoPulse);
-
- bool m_allocatedUpSource; ///< Was the upSource allocated locally?
- bool m_allocatedDownSource; ///< Was the downSource allocated locally?
- uint32_t m_index; ///< The index of this counter.
-
- ITable *m_table;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/CounterBase.h b/aos/externals/WPILib/WPILib/CounterBase.h
deleted file mode 100644
index 4354e42..0000000
--- a/aos/externals/WPILib/WPILib/CounterBase.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 CPPCOUNTER_BASE_H_
-#define CPPCOUNTER_BASE_H_
-
-/**
- * Interface for counting the number of ticks on a digital input channel.
- * Encoders, Gear tooth sensors, and counters should all subclass this so it can be used to
- * build more advanced classes for control and driving.
- */
-class CounterBase
-{
-public:
- typedef enum {k1X, k2X, k4X} EncodingType;
-
- virtual ~CounterBase() {}
- virtual void Start() = 0;
- virtual int32_t Get() = 0;
- virtual void Reset() = 0;
- virtual void Stop() = 0;
- virtual double GetPeriod() = 0;
- virtual void SetMaxPeriod(double maxPeriod) = 0;
- virtual bool GetStopped() = 0;
- virtual bool GetDirection() = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Dashboard.cpp b/aos/externals/WPILib/WPILib/Dashboard.cpp
deleted file mode 100644
index b21cd7c..0000000
--- a/aos/externals/WPILib/WPILib/Dashboard.cpp
+++ /dev/null
@@ -1,399 +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 "Dashboard.h"
-#include "DriverStation.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <strLib.h>
-
-const int32_t Dashboard::kMaxDashboardDataSize;
-
-/**
- * Dashboard contructor.
- *
- * This is only called once when the DriverStation constructor is called.
- */
-Dashboard::Dashboard(SEM_ID statusDataSem)
- : m_userStatusData (NULL)
- , m_userStatusDataSize (0)
- , m_localBuffer (NULL)
- , m_localPrintBuffer (NULL)
- , m_packPtr (NULL)
- , m_printSemaphore (0)
- , m_statusDataSemaphore (statusDataSem)
-{
- m_userStatusData = new char[kMaxDashboardDataSize];
- m_localBuffer = new char[kMaxDashboardDataSize];
- m_localPrintBuffer = new char[kLocalPrintBufferSize];
- m_localPrintBuffer[0] = 0;
- m_packPtr = m_localBuffer;
- m_printSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
-}
-
-/**
- * Dashboard destructor.
- *
- * Called only when the DriverStation class is destroyed.
- */
-Dashboard::~Dashboard()
-{
- semDelete(m_printSemaphore);
- m_packPtr = NULL;
- delete [] m_localPrintBuffer;
- m_localPrintBuffer = NULL;
- delete [] m_localBuffer;
- m_localBuffer = NULL;
- delete [] m_userStatusData;
- m_userStatusData = NULL;
-}
-
-/**
- * Pack a signed 8-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddI8(int8_t value)
-{
- if (!ValidateAdd(sizeof(int8_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kI8);
-}
-
-/**
- * Pack a signed 16-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddI16(int16_t value)
-{
- if (!ValidateAdd(sizeof(int16_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kI16);
-}
-
-/**
- * Pack a signed 32-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddI32(int32_t value)
-{
- if (!ValidateAdd(sizeof(int32_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kI32);
-}
-
-/**
- * Pack an unsigned 8-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddU8(uint8_t value)
-{
- if (!ValidateAdd(sizeof(uint8_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kU8);
-}
-
-/**
- * Pack an unsigned 16-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddU16(uint16_t value)
-{
- if (!ValidateAdd(sizeof(uint16_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kU16);
-}
-
-/**
- * Pack an unsigned 32-bit int into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddU32(uint32_t value)
-{
- if (!ValidateAdd(sizeof(uint32_t))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kU32);
-}
-
-/**
- * Pack a 32-bit floating point number into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddFloat(float value)
-{
- if (!ValidateAdd(sizeof(float))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kFloat);
-}
-
-/**
- * Pack a 64-bit floating point number into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddDouble(double value)
-{
- if (!ValidateAdd(sizeof(double))) return;
- memcpy(m_packPtr, (char*)&value, sizeof(value));
- m_packPtr += sizeof(value);
- AddedElement(kDouble);
-}
-
-/**
- * Pack a boolean into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddBoolean(bool value)
-{
- if (!ValidateAdd(sizeof(char))) return;
- *m_packPtr = value ? 1 : 0;
- m_packPtr += sizeof(char);
- AddedElement(kBoolean);
-}
-
-/**
- * Pack a NULL-terminated string of 8-bit characters into the dashboard data structure.
- * @param value Data to be packed into the structure.
- */
-void Dashboard::AddString(char* value)
-{
- AddString(value, strlen(value));
-}
-
-/**
- * Pack a string of 8-bit characters of specified length into the dashboard data structure.
- * @param value Data to be packed into the structure.
- * @param length The number of bytes in the string to pack.
- */
-void Dashboard::AddString(char* value, int32_t length)
-{
- if (!ValidateAdd(length + sizeof(length))) return;
- memcpy(m_packPtr, (char*)&length, sizeof(length));
- m_packPtr += sizeof(length);
- memcpy(m_packPtr, value, length);
- m_packPtr += length;
- AddedElement(kString);
-}
-
-/**
- * Start an array in the packed dashboard data structure.
- *
- * After calling AddArray(), call the appropriate Add method for each element of the array.
- * Make sure you call the same add each time. An array must contain elements of the same type.
- * You can use clusters inside of arrays to make each element of the array contain a structure of values.
- * You can also nest arrays inside of other arrays.
- * Every call to AddArray() must have a matching call to FinalizeArray().
- */
-void Dashboard::AddArray()
-{
- if (!ValidateAdd(sizeof(int32_t))) return;
- m_complexTypeStack.push(kArray);
- m_arrayElementCount.push_back(0);
- m_arraySizePtr.push_back((int32_t*)m_packPtr);
- m_packPtr += sizeof(int32_t);
-}
-
-/**
- * Indicate the end of an array packed into the dashboard data structure.
- *
- * After packing data into the array, call FinalizeArray().
- * Every call to AddArray() must have a matching call to FinalizeArray().
- */
-void Dashboard::FinalizeArray()
-{
- if (m_complexTypeStack.top() != kArray)
- {
- wpi_setWPIError(MismatchedComplexTypeClose);
- return;
- }
- m_complexTypeStack.pop();
- *(m_arraySizePtr.back()) = m_arrayElementCount.back();
- m_arraySizePtr.pop_back();
- if (m_arrayElementCount.back() != 0)
- {
- m_expectedArrayElementType.pop_back();
- }
- m_arrayElementCount.pop_back();
- AddedElement(kOther);
-}
-
-/**
- * Start a cluster in the packed dashboard data structure.
- *
- * After calling AddCluster(), call the appropriate Add method for each element of the cluster.
- * You can use clusters inside of arrays to make each element of the array contain a structure of values.
- * Every call to AddCluster() must have a matching call to FinalizeCluster().
- */
-void Dashboard::AddCluster()
-{
- m_complexTypeStack.push(kCluster);
-}
-
-/**
- * Indicate the end of a cluster packed into the dashboard data structure.
- *
- * After packing data into the cluster, call FinalizeCluster().
- * Every call to AddCluster() must have a matching call to FinalizeCluster().
- */
-void Dashboard::FinalizeCluster()
-{
- if (m_complexTypeStack.top() != kCluster)
- {
- wpi_setWPIError(MismatchedComplexTypeClose);
- return;
- }
- m_complexTypeStack.pop();
- AddedElement(kOther);
-}
-
-/**
- * Print a string to the UserData text on the Dashboard.
- *
- * This will add text to the buffer to send to the dashboard.
- * You must call Finalize() periodically to actually send the buffer to the dashboard if you are not using the packed dashboard data.
- */
-void Dashboard::Printf(const char *writeFmt, ...)
-{
- va_list args;
- int32_t size;
-
- // Check if the buffer has already been used for packing.
- if (m_packPtr != m_localBuffer)
- {
- wpi_setWPIError(DashboardDataCollision);
- return;
- }
- va_start (args, writeFmt);
- {
- Synchronized sync(m_printSemaphore);
- vsnprintf(m_localPrintBuffer + strlen(m_localPrintBuffer), kLocalPrintBufferSize - strlen(m_localPrintBuffer), writeFmt, args);
- size = strlen(m_localPrintBuffer);
- }
- if (size > kMaxDashboardDataSize)
- {
- wpi_setWPIError(DashboardDataOverflow);
- }
-
- va_end (args);
-}
-
-/**
- * Indicate that the packing is complete and commit the buffer to the DriverStation.
- *
- * The packing of the dashboard packet is complete.
- * If you are not using the packed dashboard data, you can call Finalize() to commit the Printf() buffer and the error string buffer.
- * In effect, you are packing an empty structure.
- * Prepares a packet to go to the dashboard...
- * @return The total size of the data packed into the userData field of the status packet.
- */
-int32_t Dashboard::Finalize()
-{
- if (!m_complexTypeStack.empty())
- {
- wpi_setWPIError(MismatchedComplexTypeClose);
- return 0;
- }
-
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_Dashboard, 0);
- reported = true;
- }
-
- Synchronized sync(m_statusDataSemaphore);
-
- // Sequence number
- DriverStation::GetInstance()->IncrementUpdateNumber();
-
- // Packed Dashboard Data
- m_userStatusDataSize = m_packPtr - m_localBuffer;
- memcpy(m_userStatusData, m_localBuffer, m_userStatusDataSize);
- m_packPtr = m_localBuffer;
-
- return m_userStatusDataSize;
-}
-
-/**
- * Called by the DriverStation class to retrieve buffers, sizes, etc. for writing
- * to the NetworkCommunication task.
- * This function is called while holding the m_statusDataSemaphore.
- */
-void Dashboard::GetStatusBuffer(char **userStatusData, int32_t* userStatusDataSize)
-{
- // User printed strings
- if (m_localPrintBuffer[0] != 0)
- {
- // Sequence number
- DriverStation::GetInstance()->IncrementUpdateNumber();
-
- int32_t printSize;
- Synchronized syncPrint(m_printSemaphore);
- printSize = strlen(m_localPrintBuffer);
- m_userStatusDataSize = printSize;
- memcpy(m_userStatusData, m_localPrintBuffer, m_userStatusDataSize);
- m_localPrintBuffer[0] = 0;
- }
-
- *userStatusData = m_userStatusData;
- *userStatusDataSize = m_userStatusDataSize;
-}
-
-/**
- * Validate that the data being packed will fit in the buffer.
- */
-bool Dashboard::ValidateAdd(int32_t size)
-{
- if ((m_packPtr - m_localBuffer) + size > kMaxDashboardDataSize)
- {
- wpi_setWPIError(DashboardDataOverflow);
- return false;
- }
- // Make sure printf is not being used at the same time.
- if (m_localPrintBuffer[0] != 0)
- {
- wpi_setWPIError(DashboardDataCollision);
- return false;
- }
- return true;
-}
-
-/**
- * Check for consistent types when adding elements to an array and keep track of the number of elements in the array.
- */
-void Dashboard::AddedElement(Type type)
-{
- if(IsArrayRoot())
- {
- if (m_arrayElementCount.back() == 0)
- {
- m_expectedArrayElementType.push_back(type);
- }
- else
- {
- if (type != m_expectedArrayElementType.back())
- {
- wpi_setWPIError(InconsistentArrayValueAdded);
- }
- }
- m_arrayElementCount.back() = m_arrayElementCount.back() + 1;
- }
-}
-
-/**
- * If the top of the type stack an array?
- */
-bool Dashboard::IsArrayRoot()
-{
- return !m_complexTypeStack.empty() && m_complexTypeStack.top() == kArray;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Dashboard.h b/aos/externals/WPILib/WPILib/Dashboard.h
deleted file mode 100644
index bcd8f7b..0000000
--- a/aos/externals/WPILib/WPILib/Dashboard.h
+++ /dev/null
@@ -1,76 +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 __DASHBOARD_H__
-#define __DASHBOARD_H__
-
-#include "DashboardBase.h"
-#include "NetworkCommunication/FRCComm.h"
-#include <stack>
-#include <vector>
-#include <vxWorks.h>
-
-/**
- * Pack data into the "user data" field that gets sent to the dashboard laptop
- * via the driver station.
- */
-class Dashboard : public DashboardBase
-{
-public:
- explicit Dashboard(SEM_ID statusDataSemaphore);
- virtual ~Dashboard();
-
- enum Type {kI8, kI16, kI32, kU8, kU16, kU32, kFloat, kDouble, kBoolean, kString, kOther};
- enum ComplexType {kArray, kCluster};
-
- void AddI8(int8_t value);
- void AddI16(int16_t value);
- void AddI32(int32_t value);
- void AddU8(uint8_t value);
- void AddU16(uint16_t value);
- void AddU32(uint32_t value);
- void AddFloat(float value);
- void AddDouble(double value);
- void AddBoolean(bool value);
- void AddString(char* value);
- void AddString(char* value, int32_t length);
-
- void AddArray();
- void FinalizeArray();
- void AddCluster();
- void FinalizeCluster();
-
- void Printf(const char *writeFmt, ...);
-
- int32_t Finalize();
- void GetStatusBuffer(char** userStatusData, int32_t* userStatusDataSize);
- void Flush() {}
-private:
- static const int32_t kMaxDashboardDataSize = USER_STATUS_DATA_SIZE - sizeof(uint32_t) * 3 - sizeof(uint8_t); // 13 bytes needed for 3 size parameters and the sequence number
- static const size_t kLocalPrintBufferSize = kMaxDashboardDataSize * 2;
-
- // Usage Guidelines...
- DISALLOW_COPY_AND_ASSIGN(Dashboard);
-
- bool ValidateAdd(int32_t size);
- void AddedElement(Type type);
- bool IsArrayRoot();
-
- char *m_userStatusData;
- int32_t m_userStatusDataSize;
- char *m_localBuffer;
- char *m_localPrintBuffer;
- char *m_packPtr;
- std::vector<Type> m_expectedArrayElementType;
- std::vector<int32_t> m_arrayElementCount;
- std::vector<int32_t*> m_arraySizePtr;
- std::stack<ComplexType> m_complexTypeStack;
- SEM_ID m_printSemaphore;
- SEM_ID m_statusDataSemaphore;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DashboardBase.h b/aos/externals/WPILib/WPILib/DashboardBase.h
deleted file mode 100644
index 18a54d8..0000000
--- a/aos/externals/WPILib/WPILib/DashboardBase.h
+++ /dev/null
@@ -1,24 +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 __DASHBOARDBASE_H__
-#define __DASHBOARDBASE_H__
-
-#include <vxWorks.h>
-#include "ErrorBase.h"
-
-class DashboardBase : public ErrorBase {
-public:
- virtual void GetStatusBuffer(char** userStatusData, int32_t* userStatusDataSize) = 0;
- virtual void Flush() = 0;
- virtual ~DashboardBase() {}
-protected:
- DashboardBase() {}
-private:
- DISALLOW_COPY_AND_ASSIGN(DashboardBase);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/DigitalInput.cpp b/aos/externals/WPILib/WPILib/DigitalInput.cpp
deleted file mode 100644
index 0caaba7..0000000
--- a/aos/externals/WPILib/WPILib/DigitalInput.cpp
+++ /dev/null
@@ -1,141 +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 "DigitalInput.h"
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-
-/**
- * Create an instance of a DigitalInput.
- * Creates a digital input given a slot and channel. Common creation routine
- * for all constructors.
- */
-void DigitalInput::InitDigitalInput(uint8_t moduleNumber, uint32_t channel)
-{
- m_table = NULL;
- char buf[64];
- if (!CheckDigitalModule(moduleNumber))
- {
- snprintf(buf, 64, "Digital Module %d", moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckDigitalChannel(channel))
- {
- snprintf(buf, 64, "Digital Channel %d", channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
- m_channel = channel;
- m_module = DigitalModule::GetInstance(moduleNumber);
- m_module->AllocateDIO(channel, true);
-
- nUsageReporting::report(nUsageReporting::kResourceType_DigitalInput, channel, moduleNumber - 1);
-}
-
-/**
- * Create an instance of a Digital Input class.
- * Creates a digital input given a channel and uses the default module.
- *
- * @param channel The digital channel (1..14).
- */
-DigitalInput::DigitalInput(uint32_t channel)
-{
- InitDigitalInput(GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Create an instance of a Digital Input class.
- * Creates a digital input given an channel and module.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The digital channel (1..14).
- */
-DigitalInput::DigitalInput(uint8_t moduleNumber, uint32_t channel)
-{
- InitDigitalInput(moduleNumber, channel);
-}
-
-/**
- * Free resources associated with the Digital Input class.
- */
-DigitalInput::~DigitalInput()
-{
- if (StatusIsFatal()) return;
- m_module->FreeDIO(m_channel);
-}
-
-/*
- * Get the value from a digital input channel.
- * Retrieve the value of a single digital input channel from the FPGA.
- */
-uint32_t DigitalInput::Get()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetDIO(m_channel);
-}
-
-/**
- * @return The GPIO channel number that this object represents.
- */
-uint32_t DigitalInput::GetChannel()
-{
- return m_channel;
-}
-
-/**
- * @return The value to be written to the channel field of a routing mux.
- */
-uint32_t DigitalInput::GetChannelForRouting()
-{
- return DigitalModule::RemapDigitalChannel(GetChannel() - 1);
-}
-
-/**
- * @return The value to be written to the module field of a routing mux.
- */
-uint32_t DigitalInput::GetModuleForRouting()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetNumber() - 1;
-}
-
-/**
- * @return The value to be written to the analog trigger field of a routing mux.
- */
-bool DigitalInput::GetAnalogTriggerForRouting()
-{
- return false;
-}
-
-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
deleted file mode 100644
index b9d77f7..0000000
--- a/aos/externals/WPILib/WPILib/DigitalInput.h
+++ /dev/null
@@ -1,52 +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 DIGITAL_INPUT_H_
-#define DIGITAL_INPUT_H_
-
-class DigitalModule;
-
-#include "DigitalSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-/**
- * Class to read a digital input.
- * This class will read digital inputs and return the current value on the channel. Other devices
- * such as encoders, gear tooth sensors, etc. that are implemented elsewhere will automatically
- * 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, public LiveWindowSendable {
-public:
- explicit DigitalInput(uint32_t channel);
- DigitalInput(uint8_t moduleNumber, uint32_t channel);
- virtual ~DigitalInput();
- uint32_t Get();
- uint32_t GetChannel();
-
- // Digital Source Interface
- virtual uint32_t GetChannelForRouting();
- virtual uint32_t GetModuleForRouting();
- virtual bool GetAnalogTriggerForRouting();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- void InitDigitalInput(uint8_t moduleNumber, uint32_t channel);
- uint32_t m_channel;
- DigitalModule *m_module;
- bool m_lastValue;
-
- ITable *m_table;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DigitalModule.cpp b/aos/externals/WPILib/WPILib/DigitalModule.cpp
deleted file mode 100644
index 61fa6f6..0000000
--- a/aos/externals/WPILib/WPILib/DigitalModule.cpp
+++ /dev/null
@@ -1,570 +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 "I2C.h"
-#include "PWM.h"
-#include "Resource.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <math.h>
-#include <taskLib.h>
-
-static Resource *DIOChannels = NULL;
-static Resource *DO_PWMGenerators[tDIO::kNumSystems] = {NULL};
-
-/**
- * Get an instance of an Digital Module.
- * Singleton digital module creation where a module is allocated on the first use
- * and the same module is returned on subsequent uses.
- *
- * @param moduleNumber The digital module to get (1 or 2).
- */
-DigitalModule* DigitalModule::GetInstance(uint8_t moduleNumber)
-{
- if (CheckDigitalModule(moduleNumber))
- {
- return (DigitalModule *)GetModule(nLoadOut::kModuleType_Digital, moduleNumber);
- }
-
- // If this wasn't caught before now, make sure we say what's wrong before we crash
- char buf[64];
- snprintf(buf, 64, "Digital Module %d", moduleNumber);
- wpi_setGlobalWPIErrorWithContext(ModuleIndexOutOfRange, buf);
-
- return NULL;
-}
-
-/**
- * Create a new instance of an digital module.
- * Create an instance of the digital module object. Initialize all the parameters
- * to reasonable values on start.
- * Setting a global value on an digital module can be done only once unless subsequent
- * values are set the previously set value.
- * Digital modules are a singleton, so the constructor is never called outside of this class.
- *
- * @param moduleNumber The digital module to create (1 or 2).
- */
-DigitalModule::DigitalModule(uint8_t moduleNumber)
- : Module(nLoadOut::kModuleType_Digital, moduleNumber)
- , m_fpgaDIO (NULL)
-{
- Resource::CreateResourceObject(&DIOChannels, tDIO::kNumSystems * kDigitalChannels);
- Resource::CreateResourceObject(&DO_PWMGenerators[m_moduleNumber - 1], tDIO::kNumDO_PWMDutyCycleElements);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaDIO = tDIO::create(m_moduleNumber - 1, &localStatus);
- wpi_setError(localStatus);
-
- // Make sure that the 9403 IONode has had a chance to initialize before continuing.
- while(m_fpgaDIO->readLoopTiming(&localStatus) == 0) taskDelay(1);
-
- if (m_fpgaDIO->readLoopTiming(&localStatus) != kExpectedLoopTiming)
- {
- char err[128];
- snprintf(err, sizeof(err), "DIO LoopTiming: %d, expecting: %lu\n", m_fpgaDIO->readLoopTiming(&localStatus), kExpectedLoopTiming);
- wpi_setWPIErrorWithContext(LoopTimingError, err);
- }
-
- //Calculate the length, in ms, of one DIO loop
- double loopTime = m_fpgaDIO->readLoopTiming(&localStatus)/(kSystemClockTicksPerMicrosecond*1e3);
-
- m_fpgaDIO->writePWMConfig_Period((uint16_t) (PWM::kDefaultPwmPeriod/loopTime + .5), &localStatus);
- m_fpgaDIO->writePWMConfig_MinHigh((uint16_t) ((PWM::kDefaultPwmCenter-PWM::kDefaultPwmStepsDown*loopTime)/loopTime + .5), &localStatus);
-
- // Ensure that PWM output values are set to OFF
- for (uint32_t pwm_index = 1; pwm_index <= kPwmChannels; pwm_index++)
- {
- SetPWM(pwm_index, PWM::kPwmDisabled);
- SetPWMPeriodScale(pwm_index, 3); // Set all to 4x by default.
- }
-
- // Turn off all relay outputs.
- m_fpgaDIO->writeSlowValue_RelayFwd(0, &localStatus);
- m_fpgaDIO->writeSlowValue_RelayRev(0, &localStatus);
- wpi_setError(localStatus);
-
- // Create a semaphore to protect changes to the digital output values
- m_digitalSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
-
- // Create a semaphore to protect changes to the relay values
- m_relaySemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
-
- // Create a semaphore to protect changes to the DO PWM config
- m_doPwmSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
-
- AddToSingletonList();
-}
-
-DigitalModule::~DigitalModule()
-{
- semDelete(m_doPwmSemaphore);
- m_doPwmSemaphore = NULL;
- semDelete(m_relaySemaphore);
- m_relaySemaphore = NULL;
- semDelete(m_digitalSemaphore);
- m_digitalSemaphore = NULL;
- delete m_fpgaDIO;
-}
-
-/**
- * Set a PWM channel to the desired value. The values range from 0 to 255 and the period is controlled
- * by the PWM Period and MinHigh registers.
- *
- * @param channel The PWM channel to set.
- * @param value The PWM value to set.
- */
-void DigitalModule::SetPWM(uint32_t channel, uint8_t value)
-{
- CheckPWMChannel(channel);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaDIO->writePWMValue(channel - 1, value, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Get a value from a PWM channel. The values range from 0 to 255.
- *
- * @param channel The PWM channel to read from.
- * @return The raw PWM value.
- */
-uint8_t DigitalModule::GetPWM(uint32_t channel)
-{
- CheckPWMChannel(channel);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- return m_fpgaDIO->readPWMValue(channel - 1, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set how how often the PWM signal is squelched, thus scaling the period.
- *
- * @param channel The PWM channel to configure.
- * @param squelchMask The 2-bit mask of outputs to squelch.
- */
-void DigitalModule::SetPWMPeriodScale(uint32_t channel, uint32_t squelchMask)
-{
- CheckPWMChannel(channel);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaDIO->writePWMPeriodScale(channel - 1, squelchMask, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Set the state of a relay.
- * Set the state of a relay output to be forward. Relays have two outputs and each is
- * independently set to 0v or 12v.
- */
-void DigitalModule::SetRelayForward(uint32_t channel, bool on)
-{
- SetRelaysForward(1 << (channel - 1), on ? 0xFF : 0x00);
-}
-
-/**
- * Set the state of a relay.
- * Set the state of a relay output to be reverse. Relays have two outputs and each is
- * independently set to 0v or 12v.
- */
-void DigitalModule::SetRelayReverse(uint32_t channel, bool on)
-{
- SetRelaysReverse(1 << (channel - 1), on ? 0xFF : 0x00);
-}
-
-/**
- * Set the state of multiple relays at the same time.
- * For both parameters, 0b100000000 is channel 1 and 0b00000001 is channel 8.
- * @param mask which relays to set
- * @param values what to set the relays to
- */
-void DigitalModule::SetRelaysForward(uint8_t mask, uint8_t values) {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_relaySemaphore);
- uint8_t current = m_fpgaDIO->readSlowValue_RelayFwd(&localStatus);
- // Clearr all of the bits that we're messing with first.
- current &= ~mask;
- // Then set only the ones that are supposed to be set.
- current |= (mask & values);
- m_fpgaDIO->writeSlowValue_RelayFwd(current, &localStatus);
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Set the state of multiple relays at the same time.
- * For both parameters, 0b100000000 is channel 1 and 0b00000001 is channel 8.
- * @param mask which relays to set
- * @param values what to set the relays to
- */
-void DigitalModule::SetRelaysReverse(uint8_t mask, uint8_t values) {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_relaySemaphore);
- uint8_t current = m_fpgaDIO->readSlowValue_RelayRev(&localStatus);
- // Clearr all of the bits that we're messing with first.
- current &= ~mask;
- // Then set only the ones that are supposed to be set.
- current |= (mask & values);
- m_fpgaDIO->writeSlowValue_RelayRev(current, &localStatus);
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Get the current state of the forward relay channel
- */
-bool DigitalModule::GetRelayForward(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t forwardRelays = m_fpgaDIO->readSlowValue_RelayFwd(&localStatus);
- wpi_setError(localStatus);
- return (forwardRelays & (1 << (channel - 1))) != 0;
-}
-
-/**
- * Get the current state of all of the forward relay channels on this module.
- */
-uint8_t DigitalModule::GetRelayForward()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t forwardRelays = m_fpgaDIO->readSlowValue_RelayFwd(&localStatus);
- wpi_setError(localStatus);
- return forwardRelays;
-}
-
-/**
- * Get the current state of the reverse relay channel
- */
-bool DigitalModule::GetRelayReverse(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t reverseRelays = m_fpgaDIO->readSlowValue_RelayRev(&localStatus);
- wpi_setError(localStatus);
- return (reverseRelays & (1 << (channel - 1))) != 0;
-
-}
-
-/**
- * Get the current state of all of the reverse relay channels on this module.
- */
-uint8_t DigitalModule::GetRelayReverse()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t reverseRelays = m_fpgaDIO->readSlowValue_RelayRev(&localStatus);
- wpi_setError(localStatus);
- return reverseRelays;
-}
-
-
-/**
- * Allocate Digital I/O channels.
- * Allocate channels so that they are not accidently reused. Also the direction is set at the
- * time of the allocation.
- *
- * @param channel The Digital I/O channel
- * @param input If true open as input; if false open as output
- * @return Was successfully allocated
- */
-bool DigitalModule::AllocateDIO(uint32_t channel, bool input)
-{
- char buf[64];
- snprintf(buf, 64, "DIO %d (Module %d)", channel, m_moduleNumber);
- if (DIOChannels->Allocate(kDigitalChannels * (m_moduleNumber - 1) +
- channel - 1, buf, this) == ~0ul) return false;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_digitalSemaphore);
- uint32_t bitToSet = 1 << (RemapDigitalChannel(channel - 1));
- uint32_t outputEnable = m_fpgaDIO->readOutputEnable(&localStatus);
- uint32_t outputEnableValue;
- if (input)
- {
- outputEnableValue = outputEnable & (~bitToSet); // clear the bit for read
- }
- else
- {
- outputEnableValue = outputEnable | bitToSet; // set the bit for write
- }
- m_fpgaDIO->writeOutputEnable(outputEnableValue, &localStatus);
- }
- wpi_setError(localStatus);
- return true;
-}
-
-/**
- * Free the resource associated with a digital I/O channel.
- *
- * @param channel The Digital I/O channel to free
- */
-void DigitalModule::FreeDIO(uint32_t channel)
-{
- DIOChannels->Free(kDigitalChannels * (m_moduleNumber - 1) + channel - 1,
- this);
-}
-
-/**
- * Write multiple digital I/O bits to the FPGA at the same time.
- * For both parameters, 0x0001 is channel 16 and 0x8000 is channel 1.
- *
- * @param mask Which bits to modify.
- * @param values What to set all of the bits in mask to.
- */
-void DigitalModule::SetDIOs(uint16_t mask, uint16_t values) {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_digitalSemaphore);
- uint16_t current = m_fpgaDIO->readDO(&localStatus);
- // Clear all of the bits that we're messing with first.
- current &= ~mask;
- // Then set only the ones that are supposed to be set.
- current |= (mask & values);
- m_fpgaDIO->writeDO(current, &localStatus);
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Write a digital I/O bit to the FPGA.
- * Set a single value on a digital I/O channel.
- *
- * @param channel The Digital I/O channel
- * @param value The state to set the digital channel (if it is configured as an output)
- */
-void DigitalModule::SetDIO(uint32_t channel, bool value)
-{
- SetDIOs(1 << RemapDigitalChannel(channel - 1), value ? 0xFFFF : 0x0000);
-}
-
-/**
- * Read a digital I/O bit from the FPGA.
- * Get a single value from a digital I/O channel.
- *
- * @param channel The digital I/O channel
- * @return The state of the specified channel
- */
-bool DigitalModule::GetDIO(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t currentDIO = m_fpgaDIO->readDI(&localStatus);
- wpi_setError(localStatus);
-
- //Shift 00000001 over channel-1 places.
- //AND it against the currentDIO
- //if it == 0, then return false
- //else return true
- return ((currentDIO >> RemapDigitalChannel(channel - 1)) & 1) != 0;
-}
-
-/**
- * Read the state of all the Digital I/O lines from the FPGA
- * These are not remapped to logical order. They are still in hardware order.
- */
-uint16_t DigitalModule::GetDIO()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t currentDIO = m_fpgaDIO->readDI(&localStatus);
- wpi_setError(localStatus);
- return currentDIO;
-}
-
-/**
- * Read the direction of a the Digital I/O lines
- * A 1 bit means output and a 0 bit means input.
- *
- * @param channel The digital I/O channel
- * @return The direction of the specified channel
- */
-bool DigitalModule::GetDIODirection(uint32_t channel)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t currentOutputEnable = m_fpgaDIO->readOutputEnable(&localStatus);
- wpi_setError(localStatus);
-
- //Shift 00000001 over channel-1 places.
- //AND it against the currentOutputEnable
- //if it == 0, then return false
- //else return true
- return ((currentOutputEnable >> RemapDigitalChannel(channel - 1)) & 1) != 0;
-}
-
-/**
- * Read the direction of all the Digital I/O lines from the FPGA
- * A 1 bit means output and a 0 bit means input.
- * These are not remapped to logical order. They are still in hardware order.
- */
-uint16_t DigitalModule::GetDIODirection()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t currentOutputEnable = m_fpgaDIO->readOutputEnable(&localStatus);
- wpi_setError(localStatus);
- return currentOutputEnable;
-}
-
-/**
- * Generate a single pulse.
- * Write a pulse to the specified digital output channel. There can only be a single pulse going at any time.
- *
- * @param channel The Digital Output channel that the pulse should be output on
- * @param pulseLength The active length of the pulse (in seconds)
- */
-void DigitalModule::Pulse(uint32_t channel, float pulseLength)
-{
- uint16_t mask = 1 << RemapDigitalChannel(channel - 1);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaDIO->writePulseLength((uint8_t)(1.0e9 * pulseLength / (m_fpgaDIO->readLoopTiming(&localStatus) * 25)), &localStatus);
- m_fpgaDIO->writePulse(mask, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Check a DIO line to see if it is currently generating a pulse.
- *
- * @return A pulse is in progress
- */
-bool DigitalModule::IsPulsing(uint32_t channel)
-{
- uint16_t mask = 1 << RemapDigitalChannel(channel - 1);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint16_t pulseRegister = m_fpgaDIO->readPulse(&localStatus);
- wpi_setError(localStatus);
- return (pulseRegister & mask) != 0;
-}
-
-/**
- * Check if any DIO line is currently generating a pulse.
- *
- * @return A pulse on some line is in progress
- */
-bool DigitalModule::IsPulsing()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint16_t pulseRegister = m_fpgaDIO->readPulse(&localStatus);
- wpi_setError(localStatus);
- return pulseRegister != 0;
-}
-
-/**
- * Allocate a DO PWM Generator.
- * Allocate PWM generators so that they are not accidentally reused.
- *
- * @return PWM Generator refnum
- */
-uint32_t DigitalModule::AllocateDO_PWM()
-{
- char buf[64];
- snprintf(buf, 64, "DO_PWM (Module: %d)", m_moduleNumber);
- return DO_PWMGenerators[(m_moduleNumber - 1)]->Allocate(buf, this);
-}
-
-/**
- * Free the resource associated with a DO PWM generator.
- *
- * @param pwmGenerator The pwmGen to free that was allocated with AllocateDO_PWM()
- */
-void DigitalModule::FreeDO_PWM(uint32_t pwmGenerator)
-{
- if (pwmGenerator == ~0ul) return;
- DO_PWMGenerators[(m_moduleNumber - 1)]->Free(pwmGenerator, this);
-}
-
-/**
- * Change the frequency of the DO PWM generator.
- *
- * The valid range is from 0.6 Hz to 19 kHz. The frequency resolution is logarithmic.
- *
- * @param rate The frequency to output all digital output PWM signals on this module.
- */
-void DigitalModule::SetDO_PWMRate(float rate)
-{
- // Currently rounding in the log rate domain... heavy weight toward picking a higher freq.
- // TODO: Round in the linear rate domain.
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t pwmPeriodPower = (uint8_t)(log(1.0 / (m_fpgaDIO->readLoopTiming(&localStatus) * 0.25E-6 * rate))/log(2.0) + 0.5);
- m_fpgaDIO->writeDO_PWMConfig_PeriodPower(pwmPeriodPower, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Configure which DO channel the PWM signal is output on
- *
- * @param pwmGenerator The generator index reserved by AllocateDO_PWM()
- * @param channel The Digital Output channel to output on
- */
-void DigitalModule::SetDO_PWMOutputChannel(uint32_t pwmGenerator, uint32_t channel)
-{
- if (pwmGenerator == ~0ul) return;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- switch(pwmGenerator)
- {
- case 0:
- m_fpgaDIO->writeDO_PWMConfig_OutputSelect_0(RemapDigitalChannel(channel - 1), &localStatus);
- break;
- case 1:
- m_fpgaDIO->writeDO_PWMConfig_OutputSelect_1(RemapDigitalChannel(channel - 1), &localStatus);
- break;
- case 2:
- m_fpgaDIO->writeDO_PWMConfig_OutputSelect_2(RemapDigitalChannel(channel - 1), &localStatus);
- break;
- case 3:
- m_fpgaDIO->writeDO_PWMConfig_OutputSelect_3(RemapDigitalChannel(channel - 1), &localStatus);
- break;
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Configure the duty-cycle of the PWM generator
- *
- * @param pwmGenerator The generator index reserved by AllocateDO_PWM()
- * @param dutyCycle The percent duty cycle to output [0..1].
- */
-void DigitalModule::SetDO_PWMDutyCycle(uint32_t pwmGenerator, float dutyCycle)
-{
- if (pwmGenerator == ~0ul) return;
- if (dutyCycle > 1.0) dutyCycle = 1.0;
- if (dutyCycle < 0.0) dutyCycle = 0.0;
- float rawDutyCycle = 256.0 * dutyCycle;
- if (rawDutyCycle > 255.5) rawDutyCycle = 255.5;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_doPwmSemaphore);
- uint8_t pwmPeriodPower = m_fpgaDIO->readDO_PWMConfig_PeriodPower(&localStatus);
- if (pwmPeriodPower < 4)
- {
- // The resolution of the duty cycle drops close to the highest frequencies.
- rawDutyCycle = rawDutyCycle / pow(2.0, 4 - pwmPeriodPower);
- }
- m_fpgaDIO->writeDO_PWMDutyCycle(pwmGenerator, (uint8_t)rawDutyCycle, &localStatus);
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Get the loop timing of the Digital Module
- *
- * @return The loop time
- */
-uint16_t DigitalModule::GetLoopTiming()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint16_t timing = m_fpgaDIO->readLoopTiming(&localStatus);
- wpi_setError(localStatus);
-
- return timing;
-}
-
-/**
- * Return a pointer to an I2C object for this digital module
- * The caller is responsible for deleting the pointer.
- *
- * @param address The address of the device on the I2C bus
- * @return A pointer to an I2C object to talk to the device at address
- */
-I2C* DigitalModule::GetI2C(uint32_t address)
-{
- return new I2C(this, address);
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/DigitalModule.h b/aos/externals/WPILib/WPILib/DigitalModule.h
deleted file mode 100644
index 86189b9..0000000
--- a/aos/externals/WPILib/WPILib/DigitalModule.h
+++ /dev/null
@@ -1,70 +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 DIGITAL_MODULE_H_
-#define DIGITAL_MODULE_H_
-
-#include "Module.h"
-#include "ChipObject.h"
-
-class I2C;
-
-const uint32_t kExpectedLoopTiming = 260;
-
-class DigitalModule: public Module
-{
- friend class I2C;
- friend class Module;
-
-protected:
- explicit DigitalModule(uint8_t moduleNumber);
- virtual ~DigitalModule();
-
-public:
- void SetPWM(uint32_t channel, uint8_t value);
- uint8_t GetPWM(uint32_t channel);
- void SetPWMPeriodScale(uint32_t channel, uint32_t squelchMask);
- void SetRelayForward(uint32_t channel, bool on);
- void SetRelayReverse(uint32_t channel, bool on);
- void SetRelaysForward(uint8_t mask, uint8_t values);
- void SetRelaysReverse(uint8_t mask, uint8_t values);
- bool GetRelayForward(uint32_t channel);
- uint8_t GetRelayForward();
- bool GetRelayReverse(uint32_t channel);
- uint8_t GetRelayReverse();
- bool AllocateDIO(uint32_t channel, bool input);
- void FreeDIO(uint32_t channel);
- void SetDIOs(uint16_t mask, uint16_t values);
- void SetDIO(uint32_t channel, bool value);
- bool GetDIO(uint32_t channel);
- uint16_t GetDIO();
- bool GetDIODirection(uint32_t channel);
- uint16_t GetDIODirection();
- void Pulse(uint32_t channel, float pulseLength);
- bool IsPulsing(uint32_t channel);
- bool IsPulsing();
- uint32_t AllocateDO_PWM();
- void FreeDO_PWM(uint32_t pwmGenerator);
- void SetDO_PWMRate(float rate);
- void SetDO_PWMDutyCycle(uint32_t pwmGenerator, float dutyCycle);
- void SetDO_PWMOutputChannel(uint32_t pwmGenerator, uint32_t channel);
- uint16_t GetLoopTiming();
-
- I2C* GetI2C(uint32_t address);
-
- static DigitalModule* GetInstance(uint8_t moduleNumber);
- static uint8_t RemapDigitalChannel(uint32_t channel) { return 15 - channel; }; // TODO: Need channel validation
- static uint8_t UnmapDigitalChannel(uint32_t channel) { return 15 - channel; }; // TODO: Need channel validation
-
-private:
- SEM_ID m_digitalSemaphore;
- SEM_ID m_relaySemaphore;
- SEM_ID m_doPwmSemaphore;
- tDIO *m_fpgaDIO;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DigitalOutput.cpp b/aos/externals/WPILib/WPILib/DigitalOutput.cpp
deleted file mode 100644
index 06b9c48..0000000
--- a/aos/externals/WPILib/WPILib/DigitalOutput.cpp
+++ /dev/null
@@ -1,314 +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 "DigitalOutput.h"
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-
-extern Resource *interruptsResource;
-
-/**
- * Create an instance of a DigitalOutput.
- * Creates a digital output given a slot and channel. Common creation routine
- * for all constructors.
- */
-void DigitalOutput::InitDigitalOutput(uint8_t moduleNumber, uint32_t channel)
-{
- m_table = NULL;
- char buf[64];
- if (!CheckDigitalModule(moduleNumber))
- {
- snprintf(buf, 64, "Digital Module %d", moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckDigitalChannel(channel))
- {
- snprintf(buf, 64, "Digital Channel %d", channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
- m_channel = channel;
- m_pwmGenerator = ~0ul;
- m_module = DigitalModule::GetInstance(moduleNumber);
- m_module->AllocateDIO(m_channel, false);
-
- nUsageReporting::report(nUsageReporting::kResourceType_DigitalOutput, channel, moduleNumber - 1);
-}
-
-/**
- * Create an instance of a digital output.
- * Create a digital output given a channel. The default module is used.
- *
- * @param channel The digital channel (1..14).
- */
-DigitalOutput::DigitalOutput(uint32_t channel)
-{
- InitDigitalOutput(GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Create an instance of a digital output.
- * Create an instance of a digital output given a module number and channel.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The digital channel (1..14).
- */
-DigitalOutput::DigitalOutput(uint8_t moduleNumber, uint32_t channel)
-{
- InitDigitalOutput(moduleNumber, channel);
-}
-
-/**
- * Free the resources associated with a digital output.
- */
-DigitalOutput::~DigitalOutput()
-{
- if (StatusIsFatal()) return;
- // Disable the PWM in case it was running.
- DisablePWM();
- m_module->FreeDIO(m_channel);
-}
-
-/**
- * Set the value of a digital output.
- * Set the value of a digital output to either one (true) or zero (false).
- */
-void DigitalOutput::Set(uint32_t value)
-{
- if (StatusIsFatal()) return;
- m_module->SetDIO(m_channel, value);
-}
-
-/**
- * @return The GPIO channel number that this object represents.
- */
-uint32_t DigitalOutput::GetChannel()
-{
- return m_channel;
-}
-
-/**
- * Output a single pulse on the digital output line.
- * Send a single pulse on the digital output line where the pulse diration is specified in seconds.
- * Maximum pulse length is 0.0016 seconds.
- * @param length The pulselength in seconds
- */
-void DigitalOutput::Pulse(float length)
-{
- if (StatusIsFatal()) return;
- m_module->Pulse(m_channel, length);
-}
-
-/**
- * Determine if the pulse is still going.
- * Determine if a previously started pulse is still going.
- */
-bool DigitalOutput::IsPulsing()
-{
- if (StatusIsFatal()) return false;
- return m_module->IsPulsing(m_channel);
-}
-
-/**
- * Change the PWM frequency of the PWM output on a Digital Output line.
- *
- * The valid range is from 0.6 Hz to 19 kHz. The frequency resolution is logarithmic.
- *
- * There is only one PWM frequency per digital module.
- *
- * @param rate The frequency to output all digital output PWM signals on this module.
- */
-void DigitalOutput::SetPWMRate(float rate)
-{
- if (StatusIsFatal()) return;
- m_module->SetDO_PWMRate(rate);
-}
-
-/**
- * Enable a PWM Output on this line.
- *
- * Allocate one of the 4 DO PWM generator resources from this module.
- *
- * Supply the initial duty-cycle to output so as to avoid a glitch when first starting.
- *
- * The resolution of the duty cycle is 8-bit for low frequencies (1kHz or less)
- * but is reduced the higher the frequency of the PWM signal is.
- *
- * @param initialDutyCycle The duty-cycle to start generating. [0..1]
- */
-void DigitalOutput::EnablePWM(float initialDutyCycle)
-{
- if (StatusIsFatal()) return;
- if (m_pwmGenerator != ~0ul) return;
- m_pwmGenerator = m_module->AllocateDO_PWM();
- m_module->SetDO_PWMDutyCycle(m_pwmGenerator, initialDutyCycle);
- m_module->SetDO_PWMOutputChannel(m_pwmGenerator, m_channel);
-}
-
-/**
- * Change this line from a PWM output back to a static Digital Output line.
- *
- * Free up one of the 4 DO PWM generator resources that were in use.
- */
-void DigitalOutput::DisablePWM()
-{
- if (StatusIsFatal()) return;
- // Disable the output by routing to a dead bit.
- m_module->SetDO_PWMOutputChannel(m_pwmGenerator, kDigitalChannels);
- m_module->FreeDO_PWM(m_pwmGenerator);
- m_pwmGenerator = ~0ul;
-}
-
-/**
- * Change the duty-cycle that is being generated on the line.
- *
- * The resolution of the duty cycle is 8-bit for low frequencies (1kHz or less)
- * but is reduced the higher the frequency of the PWM signal is.
- *
- * @param dutyCycle The duty-cycle to change to. [0..1]
- */
-void DigitalOutput::UpdateDutyCycle(float dutyCycle)
-{
- if (StatusIsFatal()) return;
- m_module->SetDO_PWMDutyCycle(m_pwmGenerator, dutyCycle);
-}
-
-/**
- * @return The value to be written to the channel field of a routing mux.
- */
-uint32_t DigitalOutput::GetChannelForRouting()
-{
- return DigitalModule::RemapDigitalChannel(GetChannel() - 1);
-}
-
-/**
- * @return The value to be written to the module field of a routing mux.
- */
-uint32_t DigitalOutput::GetModuleForRouting()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetNumber() - 1;
-}
-
-/**
- * @return The value to be written to the analog trigger field of a routing mux.
- */
-bool DigitalOutput::GetAnalogTriggerForRouting()
-{
- return false;
-}
-
-/**
- * Request interrupts asynchronously on this digital output.
- * @param handler The address of the interrupt handler function of type tInterruptHandler that
- * will be called whenever there is an interrupt on the digitial output port.
- * Request interrupts in synchronus mode where the user program interrupt handler will be
- * called when an interrupt occurs.
- * The default is interrupt on rising edges only.
- */
-void DigitalOutput::RequestInterrupts(tInterruptHandler handler, void *param)
-{
- if (StatusIsFatal()) return;
- uint32_t index = interruptsResource->Allocate("Sync Interrupt", this);
- if (index == ~0ul)
- {
- return;
- }
- m_interruptIndex = index;
-
- // Creates a manager too
- AllocateInterrupts(false);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_interrupt->writeConfig_WaitForAck(false, &localStatus);
- m_interrupt->writeConfig_Source_AnalogTrigger(GetAnalogTriggerForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Channel(GetChannelForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Module(GetModuleForRouting(), &localStatus);
- SetUpSourceEdge(true, false);
-
- m_manager->registerHandler(handler, param, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Request interrupts synchronously on this digital output.
- * Request interrupts in synchronus mode where the user program will have to explicitly
- * wait for the interrupt to occur.
- * The default is interrupt on rising edges only.
- */
-void DigitalOutput::RequestInterrupts()
-{
- if (StatusIsFatal()) return;
- uint32_t index = interruptsResource->Allocate("Sync Interrupt", this);
- if (index == ~0ul)
- {
- return;
- }
- m_interruptIndex = index;
-
- AllocateInterrupts(true);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_interrupt->writeConfig_Source_AnalogTrigger(GetAnalogTriggerForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Channel(GetChannelForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Module(GetModuleForRouting(), &localStatus);
- SetUpSourceEdge(true, false);
- wpi_setError(localStatus);
-}
-
-void DigitalOutput::SetUpSourceEdge(bool risingEdge, bool fallingEdge)
-{
- if (StatusIsFatal()) return;
- if (m_interrupt == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "You must call RequestInterrupts before SetUpSourceEdge");
- return;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (m_interrupt != NULL)
- {
- m_interrupt->writeConfig_RisingEdge(risingEdge, &localStatus);
- m_interrupt->writeConfig_FallingEdge(fallingEdge, &localStatus);
- }
- 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() {
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void DigitalOutput::StopLiveWindowMode() {
- if (m_table != NULL) {
- 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
deleted file mode 100644
index 749027d..0000000
--- a/aos/externals/WPILib/WPILib/DigitalOutput.h
+++ /dev/null
@@ -1,63 +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 DIGITAL_OUTPUT_H_
-#define DIGITAL_OUTPUT_H_
-
-#include "DigitalSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-#include "tables/ITableListener.h"
-
-class DigitalModule;
-
-/**
- * Class to write to digital outputs.
- * 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, public ITableListener, public LiveWindowSendable
-{
-public:
- explicit DigitalOutput(uint32_t channel);
- DigitalOutput(uint8_t moduleNumber, uint32_t channel);
- virtual ~DigitalOutput();
- void Set(uint32_t value);
- uint32_t GetChannel();
- void Pulse(float length);
- bool IsPulsing();
- void SetPWMRate(float rate);
- void EnablePWM(float initialDutyCycle);
- void DisablePWM();
- void UpdateDutyCycle(float dutyCycle);
-
- // Digital Source Interface
- virtual uint32_t GetChannelForRouting();
- virtual uint32_t GetModuleForRouting();
- virtual bool GetAnalogTriggerForRouting();
- virtual void RequestInterrupts(tInterruptHandler handler, void *param);
- 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_t moduleNumber, uint32_t channel);
-
- uint32_t m_channel;
- uint32_t m_pwmGenerator;
- DigitalModule *m_module;
-
- ITable *m_table;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/DigitalSource.cpp b/aos/externals/WPILib/WPILib/DigitalSource.cpp
deleted file mode 100644
index 00244e4..0000000
--- a/aos/externals/WPILib/WPILib/DigitalSource.cpp
+++ /dev/null
@@ -1,104 +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 "DigitalSource.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-
-Resource *interruptsResource = NULL;
-
-DigitalSource::DigitalSource()
-{
- Resource::CreateResourceObject(&interruptsResource, tInterrupt::kNumSystems);
-}
-
-/**
- * DigitalSource destructor.
- */
-DigitalSource::~DigitalSource()
-{
- if (m_manager != NULL)
- {
- delete m_manager;
- delete m_interrupt;
- interruptsResource->Free(m_interruptIndex, this);
- }
-}
-
-/**
- * Request interrupts asynchronously on this digital input.
- * @param handler The address of the interrupt handler function of type tInterruptHandler that
- * will be called whenever there is an interrupt on the digitial input port.
- * Request interrupts in synchronus mode where the user program interrupt handler will be
- * called when an interrupt occurs.
- * The default is interrupt on rising edges only.
- */
-void DigitalSource::RequestInterrupts(tInterruptHandler handler, void *param)
-{
- if (StatusIsFatal()) return;
- uint32_t index = interruptsResource->Allocate("Async Interrupt", this);
- if (index == ~0ul)
- {
- return;
- }
- m_interruptIndex = index;
-
- // Creates a manager too
- AllocateInterrupts(false);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_interrupt->writeConfig_WaitForAck(false, &localStatus);
- m_interrupt->writeConfig_Source_AnalogTrigger(GetAnalogTriggerForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Channel(GetChannelForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Module(GetModuleForRouting(), &localStatus);
- SetUpSourceEdge(true, false);
-
- m_manager->registerHandler(handler, param, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Request interrupts synchronously on this digital input.
- * Request interrupts in synchronus mode where the user program will have to explicitly
- * wait for the interrupt to occur.
- * The default is interrupt on rising edges only.
- */
-void DigitalSource::RequestInterrupts()
-{
- if (StatusIsFatal()) return;
- uint32_t index = interruptsResource->Allocate("Sync Interrupt", this);
- if (index == ~0ul)
- {
- return;
- }
- m_interruptIndex = index;
-
- AllocateInterrupts(true);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_interrupt->writeConfig_Source_AnalogTrigger(GetAnalogTriggerForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Channel(GetChannelForRouting(), &localStatus);
- m_interrupt->writeConfig_Source_Module(GetModuleForRouting(), &localStatus);
- SetUpSourceEdge(true, false);
- wpi_setError(localStatus);
-}
-
-void DigitalSource::SetUpSourceEdge(bool risingEdge, bool fallingEdge)
-{
- if (StatusIsFatal()) return;
- if (m_interrupt == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "You must call RequestInterrupts before SetUpSourceEdge");
- return;
- }
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (m_interrupt != NULL)
- {
- m_interrupt->writeConfig_RisingEdge(risingEdge, &localStatus);
- m_interrupt->writeConfig_FallingEdge(fallingEdge, &localStatus);
- }
- wpi_setError(localStatus);
-}
diff --git a/aos/externals/WPILib/WPILib/DigitalSource.h b/aos/externals/WPILib/WPILib/DigitalSource.h
deleted file mode 100644
index d5d7e7d..0000000
--- a/aos/externals/WPILib/WPILib/DigitalSource.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 DIGITAL_SOURCE_H
-#define DIGITAL_SOURCE_H
-
-#include "InterruptableSensorBase.h"
-
-/**
- * DigitalSource Interface.
- * The DigitalSource represents all the possible inputs for a counter or a quadrature encoder. The source may be
- * either a digital input or an analog input. If the caller just provides a channel, then a digital input will be
- * constructed and freed when finished for the source. The source can either be a digital input or analog trigger
- * but not both.
- */
-class DigitalSource: public InterruptableSensorBase
-{
-public:
- DigitalSource();
- virtual ~DigitalSource();
- virtual uint32_t GetChannelForRouting() = 0;
- virtual uint32_t GetModuleForRouting() = 0;
- virtual bool GetAnalogTriggerForRouting() = 0;
- virtual void RequestInterrupts(tInterruptHandler handler, void *param);
- virtual void RequestInterrupts();
- void SetUpSourceEdge(bool risingEdge, bool fallingEdge);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp b/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp
deleted file mode 100644
index 19ef5b7..0000000
--- a/aos/externals/WPILib/WPILib/DoubleSolenoid.cpp
+++ /dev/null
@@ -1,183 +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 "DoubleSolenoid.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include <string.h>
-#include "LiveWindow/LiveWindow.h"
-
-/**
- * Common function to implement constructor behavior.
- */
-void DoubleSolenoid::InitSolenoid()
-{
- m_table = NULL;
- char buf[64];
- if (!CheckSolenoidModule(m_moduleNumber))
- {
- snprintf(buf, 64, "Solenoid Module %d", m_moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckSolenoidChannel(m_forwardChannel))
- {
- snprintf(buf, 64, "Solenoid Channel %d", m_forwardChannel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
- if (!CheckSolenoidChannel(m_reverseChannel))
- {
- snprintf(buf, 64, "Solenoid Channel %d", m_reverseChannel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
- Resource::CreateResourceObject(&m_allocated, tSolenoid::kNumDO7_0Elements * kSolenoidChannels);
-
- snprintf(buf, 64, "Solenoid %d (Module %d)", m_forwardChannel, m_moduleNumber);
- if (m_allocated->Allocate((m_moduleNumber - 1) * kSolenoidChannels +
- m_forwardChannel - 1, buf, this) == ~0ul)
- {
- return;
- }
- snprintf(buf, 64, "Solenoid %d (Module %d)", m_reverseChannel, m_moduleNumber);
- if (m_allocated->Allocate((m_moduleNumber - 1) * kSolenoidChannels +
- m_reverseChannel - 1, buf, this) == ~0ul)
- {
- return;
- }
- m_forwardMask = 1 << (m_forwardChannel - 1);
- m_reverseMask = 1 << (m_reverseChannel - 1);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_forwardChannel, m_moduleNumber - 1);
- nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_reverseChannel, m_moduleNumber - 1);
- LiveWindow::GetInstance()->AddActuator("DoubleSolenoid", m_moduleNumber, m_forwardChannel, this);
-}
-
-/**
- * Constructor.
- *
- * @param forwardChannel The forward channel on the module to control.
- * @param reverseChannel The reverse channel on the module to control.
- */
-DoubleSolenoid::DoubleSolenoid(uint32_t forwardChannel, uint32_t reverseChannel)
- : SolenoidBase (GetDefaultSolenoidModule())
- , m_forwardChannel (forwardChannel)
- , m_reverseChannel (reverseChannel)
-{
- InitSolenoid();
-}
-
-/**
- * Constructor.
- *
- * @param moduleNumber The solenoid module (1 or 2).
- * @param forwardChannel The forward channel on the module to control.
- * @param reverseChannel The reverse channel on the module to control.
- */
-DoubleSolenoid::DoubleSolenoid(uint8_t moduleNumber, uint32_t forwardChannel, uint32_t reverseChannel)
- : SolenoidBase (moduleNumber)
- , m_forwardChannel (forwardChannel)
- , m_reverseChannel (reverseChannel)
-{
- InitSolenoid();
-}
-
-/**
- * Destructor.
- */
-DoubleSolenoid::~DoubleSolenoid()
-{
- m_allocated->Free((m_moduleNumber - 1) * kSolenoidChannels +
- m_forwardChannel - 1, this);
- m_allocated->Free((m_moduleNumber - 1) * kSolenoidChannels +
- m_reverseChannel - 1, this);
-}
-
-/**
- * Set the value of a solenoid.
- *
- * @param value Move the solenoid to forward, reverse, or don't move it.
- */
-void DoubleSolenoid::Set(Value value)
-{
- if (StatusIsFatal()) return;
- uint8_t rawValue = 0x00;
-
- switch(value)
- {
- case kOff:
- rawValue = 0x00;
- break;
- case kForward:
- rawValue = m_forwardMask;
- break;
- case kReverse:
- rawValue = m_reverseMask;
- break;
- }
-
- SolenoidBase::Set(rawValue, m_forwardMask | m_reverseMask);
-}
-
-/**
- * Read the current value of the solenoid.
- *
- * @return The current value of the solenoid.
- */
-DoubleSolenoid::Value DoubleSolenoid::Get()
-{
- if (StatusIsFatal()) return kOff;
- uint8_t value = GetAll();
-
- if (value & m_forwardMask) return kForward;
- if (value & m_reverseMask) return kReverse;
- return kOff;
-}
-
-void DoubleSolenoid::ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew) {
- Value lvalue = kOff;
- std::string *val = (std::string *)value.ptr;
- if (*val == "Forward")
- lvalue = kForward;
- else if (*val == "Reverse")
- 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);
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void DoubleSolenoid::StopLiveWindowMode() {
- Set(kOff);
- if (m_table != NULL) {
- 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
deleted file mode 100644
index 09c8c90..0000000
--- a/aos/externals/WPILib/WPILib/DoubleSolenoid.h
+++ /dev/null
@@ -1,51 +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 DOUBLE_SOLENOID_H_
-#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
- * (9472 module).
- *
- * The DoubleSolenoid class is typically used for pneumatics solenoids that
- * have two positions controlled by two separate channels.
- */
-class DoubleSolenoid : public SolenoidBase, public LiveWindowSendable, public ITableListener {
-public:
- typedef enum {kOff, kForward, kReverse} Value;
-
- explicit DoubleSolenoid(uint32_t forwardChannel, uint32_t reverseChannel);
- DoubleSolenoid(uint8_t moduleNumber, uint32_t forwardChannel, uint32_t reverseChannel);
- 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:
- void InitSolenoid();
-
- uint32_t m_forwardChannel; ///< The forward channel on the module to control.
- uint32_t m_reverseChannel; ///< The reverse channel on the module to control.
- uint8_t m_forwardMask; ///< The mask for the forward channel.
- uint8_t 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
deleted file mode 100644
index e90beae..0000000
--- a/aos/externals/WPILib/WPILib/DriverStation.cpp
+++ /dev/null
@@ -1,548 +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 "AnalogChannel.h"
-#include "Synchronized.h"
-#include "Timer.h"
-#include "NetworkCommunication/FRCComm.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "MotorSafetyHelper.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-#include <strLib.h>
-
-const uint32_t DriverStation::kBatteryModuleNumber;
-const uint32_t DriverStation::kBatteryChannel;
-const uint32_t DriverStation::kJoystickPorts;
-const uint32_t DriverStation::kJoystickAxes;
-DriverStation* DriverStation::m_instance = NULL;
-ReentrantSemaphore DriverStation::m_instanceSemaphore;
-uint8_t DriverStation::m_updateNumber = 0;
-
-/**
- * DriverStation contructor.
- *
- * This is only called once the first time GetInstance() is called
- */
-DriverStation::DriverStation()
- : m_controlData (NULL)
- , m_digitalOut (0)
- , m_batteryChannel (NULL)
- , m_statusDataSemaphore (semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE))
- , m_task ("DriverStation", (FUNCPTR)DriverStation::InitTask)
- , m_dashboardHigh(m_statusDataSemaphore)
- , m_dashboardLow(m_statusDataSemaphore)
- , m_dashboardInUseHigh(&m_dashboardHigh)
- , m_dashboardInUseLow(&m_dashboardLow)
- , m_newControlData(0)
- , m_packetDataAvailableSem (0)
- , m_enhancedIO()
- , m_waitForDataSem(0)
- , m_approxMatchTimeOffset(-1.0)
- , 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 (SEM_Q_FIFO, SEM_EMPTY);
-
- // Register that semaphore with the network communications task.
- // It will signal when new packet data is available.
- setNewDataSem(m_packetDataAvailableSem);
-
- m_waitForDataSem = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
-
- m_controlData = new FRCCommonControlData();
-
- m_batteryChannel = new AnalogChannel(kBatteryModuleNumber, kBatteryChannel);
-
- AddToSingletonList();
-
- if (!m_task.Start((int32_t)this))
- {
- wpi_setWPIError(DriverStationTaskError);
- }
-}
-
-DriverStation::~DriverStation()
-{
- Synchronized sync(m_instanceSemaphore);
- m_task.Stop();
- semDelete(m_statusDataSemaphore);
- delete m_batteryChannel;
- delete m_controlData;
- m_instance = NULL;
- semDelete(m_waitForDataSem);
- // Unregister our semaphore.
- setNewDataSem(0);
- semDelete(m_packetDataAvailableSem);
- semDelete(m_newControlData);
-}
-
-/**
- * Gets a read lock on all of the data. Be careful with this; holding one of
- * these locks prevents any new data from being read.
- */
-RWLock::Locker DriverStation::GetDataReadLock() {
- return RWLock::Locker(&m_dataLock, false);
-}
-
-void DriverStation::InitTask(DriverStation *ds)
-{
- ds->Run();
-}
-
-/**
- * Gets called in a separate task to deal with actually reading any new data.
- */
-void DriverStation::Run()
-{
- int period = 0;
- while (true)
- {
- semTake(m_packetDataAvailableSem, WAIT_FOREVER);
- SetData();
- m_enhancedIO.UpdateData();
- GetData();
- semFlush(m_waitForDataSem);
- if (++period >= 4)
- {
- MotorSafetyHelper::CheckMotors();
- period = 0;
- }
- {
- RWLock::Locker userStateLocker(&m_userStateLock, false);
- if (m_userInDisabled)
- FRC_NetworkCommunication_observeUserProgramDisabled();
- if (m_userInAutonomous)
- FRC_NetworkCommunication_observeUserProgramAutonomous();
- if (m_userInTeleop)
- FRC_NetworkCommunication_observeUserProgramTeleop();
- if (m_userInTest)
- FRC_NetworkCommunication_observeUserProgramTest();
- }
- }
-}
-
-/**
- * Return a pointer to the singleton DriverStation.
- */
-DriverStation* DriverStation::GetInstance()
-{
- Synchronized sync(m_instanceSemaphore);
- if (m_instance == NULL)
- {
- m_instance = new DriverStation();
- }
- return m_instance;
-}
-
-/**
- * Copy data from the DS task for the rest of the code to use.
- */
-void DriverStation::GetData()
-{
- static bool lastEnabled = false;
- {
- // Only have to lock right around reading the data because we're the only
- // task that ever modifies it.
- RWLock::Locker write_lock(&m_dataLock, true);
- // Have to const_cast away the volatile and the const.
- getCommonControlData(const_cast<FRCCommonControlData *>(m_controlData), WAIT_FOREVER);
- }
- if (!lastEnabled && IsEnabled())
- {
- // If starting teleop, assume that autonomous just took up 10 seconds
- if (IsAutonomous())
- m_approxMatchTimeOffset = Timer::GetFPGATimestamp();
- else
- m_approxMatchTimeOffset = Timer::GetFPGATimestamp() - 10.0;
- }
- else if (lastEnabled && !IsEnabled())
- {
- m_approxMatchTimeOffset = -1.0;
- }
- lastEnabled = IsEnabled();
- semGive(m_newControlData);
-}
-
-/**
- * Copy status data to the DS task from the user.
- */
-void DriverStation::SetData()
-{
- char *userStatusDataHigh;
- int32_t userStatusDataHighSize;
- char *userStatusDataLow;
- int32_t userStatusDataLowSize;
-
- Synchronized sync(m_statusDataSemaphore);
-
- m_dashboardInUseHigh->GetStatusBuffer(&userStatusDataHigh, &userStatusDataHighSize);
- m_dashboardInUseLow->GetStatusBuffer(&userStatusDataLow, &userStatusDataLowSize);
- setStatusData(GetBatteryVoltage(), m_digitalOut, m_updateNumber,
- userStatusDataHigh, userStatusDataHighSize, userStatusDataLow, userStatusDataLowSize, WAIT_FOREVER);
-
- m_dashboardInUseHigh->Flush();
- m_dashboardInUseLow->Flush();
-}
-
-/**
- * Read the battery voltage from the specified AnalogChannel.
- *
- * This accessor assumes that the battery voltage is being measured
- * through the voltage divider on an analog breakout.
- *
- * @return The battery voltage.
- */
-float DriverStation::GetBatteryVoltage()
-{
- if (m_batteryChannel == NULL)
- wpi_setWPIError(NullParameter);
-
- // The Analog bumper has a voltage divider on the battery source.
- // Vbatt *--/\/\/\--* Vsample *--/\/\/\--* Gnd
- // 680 Ohms 1000 Ohms
- return m_batteryChannel->GetAverageVoltage() * (1680.0 / 1000.0);
-}
-
-/**
- * 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 DriverStation::GetStickAxis(uint32_t stick, uint32_t axis)
-{
- if (axis < 1 || axis > kJoystickAxes)
- {
- wpi_setWPIError(BadJoystickAxis);
- return 0.0;
- }
-
- int8_t value;
- switch (stick)
- {
- case 1:
- value = m_controlData->stick0Axes[axis-1];
- break;
- case 2:
- value = m_controlData->stick1Axes[axis-1];
- break;
- case 3:
- value = m_controlData->stick2Axes[axis-1];
- break;
- case 4:
- value = m_controlData->stick3Axes[axis-1];
- break;
- default:
- wpi_setWPIError(BadJoystickIndex);
- return 0.0;
- }
-
- float result;
- if (value < 0)
- result = ((float) value) / 128.0;
- else
- result = ((float) value) / 127.0;
- wpi_assert(result <= 1.0 && result >= -1.0);
- if (result > 1.0)
- result = 1.0;
- else if (result < -1.0)
- result = -1.0;
- return result;
-}
-
-/**
- * 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 DriverStation::GetStickButtons(uint32_t stick)
-{
- if (stick < 1 || stick > 4)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "stick must be between 1 and 4");
-
- switch (stick)
- {
- case 1:
- return m_controlData->stick0Buttons;
- case 2:
- return m_controlData->stick1Buttons;
- case 3:
- return m_controlData->stick2Buttons;
- case 4:
- return m_controlData->stick3Buttons;
- }
- return 0;
-}
-
-// 5V divided by 10 bits
-#define kDSAnalogInScaling ((float)(5.0 / 1023.0))
-
-/**
- * Get an analog voltage from the Driver Station.
- * The analog values are returned as voltage 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 DriverStation::GetAnalogIn(uint32_t channel)
-{
- if (channel < 1 || channel > 4)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 4");
-
- // TODO: Fix the lack of thread safety here (for reported_mask).
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationCIO, channel, nUsageReporting::kDriverStationCIO_Analog);
- reported_mask |= (1 >> channel);
- }
-
- switch (channel)
- {
- case 1:
- return kDSAnalogInScaling * m_controlData->analog1;
- case 2:
- return kDSAnalogInScaling * m_controlData->analog2;
- case 3:
- return kDSAnalogInScaling * m_controlData->analog3;
- case 4:
- return kDSAnalogInScaling * m_controlData->analog4;
- }
- return 0.0;
-}
-
-/**
- * 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 DriverStation::GetDigitalIn(uint32_t channel)
-{
- if (channel < 1 || channel > 8)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 8");
-
- // TODO: Fix the lack of thread safety here (for reported_mask).
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationCIO, channel, nUsageReporting::kDriverStationCIO_DigitalIn);
- reported_mask |= (1 >> channel);
- }
-
- return ((m_controlData->dsDigitalIn >> (channel-1)) & 0x1) ? true : false;
-}
-
-/**
- * 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 DriverStation::SetDigitalOut(uint32_t channel, bool value)
-{
- if (channel < 1 || channel > 8)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 8");
-
- // TODO: Fix the lack of thread safety here (for both reported_mask and
- // m_digitalOut).
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationCIO, channel, nUsageReporting::kDriverStationCIO_DigitalOut);
- reported_mask |= (1 >> channel);
- }
-
- m_digitalOut &= ~(0x1 << (channel-1));
- m_digitalOut |= ((uint8_t)value << (channel-1));
-}
-
-/**
- * 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 DriverStation::GetDigitalOut(uint32_t channel)
-{
- if (channel < 1 || channel > 8)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 8");
-
- return ((m_digitalOut >> (channel-1)) & 0x1) ? true : false;;
-}
-
-/**
- * @return Whether or not the robot is currently enabled by the field controls.
- */
-bool DriverStation::IsEnabled()
-{
- return m_controlData->enabled;
-}
-
-/**
- * @return Whether or not the robot is currently disabled by the field controls.
- */
-bool DriverStation::IsDisabled()
-{
- return !m_controlData->enabled;
-}
-
-/**
- * Determines if the robot is currently in autonomous mode. Does not check
- * whether the robot is enabled.
- * @return Whether or not the robot is currently in autonomous mode.
- */
-bool DriverStation::IsAutonomous()
-{
- return m_controlData->autonomous;
-}
-
-/**
- * Determines if the robot is currently in teleoperated mode. Does not check
- * whether the robot is enabled.
- * @return Whether or not the robot is currently in teleoperated mode.
- */
-bool DriverStation::IsOperatorControl()
-{
- RWLock::Locker data_locker(GetDataReadLock());
- return !(m_controlData->autonomous || m_controlData->test);
-}
-
-/**
- * Determines if the robot is currently in test mode. Does not check
- * whether the robot is enabled.
- * @return Whether or not the robot is currently in test mode.
- */
-bool DriverStation::IsTest()
-{
- return m_controlData->test;
-}
-
-/**
- * @return What state the robot is currently in.
- */
-DriverStation::FMSState DriverStation::GetCurrentState() {
- RWLock::Locker data_locker(GetDataReadLock());
- if (IsDisabled()) {
- return FMSState::kDisabled;
- // Or else it must be enabled (for all of the other ones).
- } else if (IsAutonomous()) {
- return FMSState::kAutonomous;
- } else if (IsTest()) {
- return FMSState::kTestMode;
- } else { // IsOperatorControl() has to return true now
- return FMSState::kTeleop;
- }
-}
-
-/**
- * Has a new control packet from the driver station arrived since the last time this function was called?
- * Warning: If you call this function from more than one place at the same time,
- * you will not get the get the intended behavior unless that behavior is
- * exactly 1 of the places that you call it from getting a true after a packet
- * arrives.
- * @return True if the control data has been updated since the last call.
- */
-bool DriverStation::IsNewControlData()
-{
- return semTake(m_newControlData, NO_WAIT) == 0;
-}
-
-/**
- * Is the driver station attached to a Field Management System?
- * Note: This does not work with the Blue DS.
- * @return True if the robot is competing on a field being controlled by a Field Management System
- */
-bool DriverStation::IsFMSAttached()
-{
- return m_controlData->fmsAttached;
-}
-
-/**
- * Return the DS packet number.
- * The packet number is the index of this set of data returned by the driver station.
- * @return The driver station packet number
- */
-uint32_t DriverStation::GetPacketNumber()
-{
- return m_controlData->packetIndex;
-}
-
-/**
- * Return the alliance that the driver station says it is on.
- * @return The Alliance enum
- */
-DriverStation::Alliance DriverStation::GetAlliance()
-{
- // Read it first to make sure that it doesn't change in between the checks.
- char alliance = m_controlData->dsID_Alliance;
- if (alliance == 'R') return kRed;
- if (alliance == 'B') return kBlue;
- wpi_assert(false);
- return kInvalid;
-}
-
-/**
- * Return the driver station location on the field
- * This could return 1, 2, or 3
- * @return The location of the driver station
- */
-uint32_t DriverStation::GetLocation()
-{
- char position = m_controlData->dsID_Position;
- wpi_assert ((position >= '1') && (position <= '3'));
- return position - '0';
-}
-
-/**
- * Wait until a new packet comes from the driver station
- * This blocks on a semaphore, so the waiting is efficient.
- * This is a good way to delay processing until there is new driver station data to act on
- */
-void DriverStation::WaitForData()
-{
- semTake(m_waitForDataSem, WAIT_FOREVER);
-}
-
-/**
- * Return the approximate match time
- * The FMS does not currently send the official match time to the robots
- * This returns the time since the enable signal sent from the Driver Station
- * At the beginning of autonomous, the time is reset to 0.0 seconds
- * At the beginning of teleop, the time is reset to +15.0 seconds
- * If the robot is disabled, this returns 0.0 seconds
- * Warning: This is not an official time (so it cannot be used to argue with referees)
- * @return Match time in seconds since the beginning of autonomous
- */
-double DriverStation::GetMatchTime()
-{
- if (m_approxMatchTimeOffset < 0.0)
- return 0.0;
- return Timer::GetFPGATimestamp() - m_approxMatchTimeOffset;
-}
-
-/**
- * Return the team number that the Driver Station is configured for
- * @return The team number
- */
-uint16_t DriverStation::GetTeamNumber()
-{
- return m_controlData->teamID;
-}
diff --git a/aos/externals/WPILib/WPILib/DriverStation.h b/aos/externals/WPILib/WPILib/DriverStation.h
deleted file mode 100644
index cc00819..0000000
--- a/aos/externals/WPILib/WPILib/DriverStation.h
+++ /dev/null
@@ -1,193 +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 __DRIVER_STATION_H__
-#define __DRIVER_STATION_H__
-
-#include "Dashboard.h"
-#include "DriverStationEnhancedIO.h"
-#include "SensorBase.h"
-#include "Task.h"
-#include "Synchronized.h"
-#include "RWLock.h"
-#include "Base.h"
-
-struct FRCCommonControlData;
-class AnalogChannel;
-
-/**
- * Provide access to the network communication data to / from the Driver Station.
- */
-class DriverStation : public SensorBase
-{
-public:
- enum Alliance {kRed, kBlue, kInvalid};
-
- // Represents all of the states that FMS thinks of a robot as being in.
- // NOTE: All of the ones except kDisabled mean that the robot is enabled too.
- enum FMSState {
- kDisabled,
- kAutonomous,
- kTeleop,
- kTestMode,
- };
-
- static DriverStation *GetInstance();
-
- RWLock::Locker GetDataReadLock();
-
- static const uint32_t kBatteryModuleNumber = 1;
- static const uint32_t kBatteryChannel = 8;
- static const uint32_t kJoystickPorts = 4;
- static const uint32_t kJoystickAxes = 6;
-
- /**
- * Returns the pointer to all of the data. This pointer will never change, but
- * its contents will, so make sure to GetDataReadLock() if you want to make
- * sure that it doesn't change while you're using it.
- *
- * You may NOT modify the contents!
- */
- const volatile struct FRCCommonControlData *GetControlData() {
- return m_controlData;
- }
-
- float GetStickAxis(uint32_t stick, uint32_t axis);
- short GetStickButtons(uint32_t stick);
-
- float GetAnalogIn(uint32_t channel);
- bool GetDigitalIn(uint32_t channel);
- void SetDigitalOut(uint32_t channel, bool value);
- bool GetDigitalOut(uint32_t channel);
-
- bool IsEnabled();
- bool IsDisabled();
- bool IsAutonomous();
- bool IsOperatorControl();
- bool IsTest();
- FMSState GetCurrentState();
- bool IsNewControlData();
- bool IsFMSAttached();
-
- uint32_t GetPacketNumber();
- Alliance GetAlliance();
- uint32_t GetLocation();
- void WaitForData();
- double GetMatchTime();
- float GetBatteryVoltage();
- uint16_t GetTeamNumber();
-
- // Get the default dashboard packers. These instances stay around even after
- // a call to SetHigh|LowPriorityDashboardPackerToUse() changes which packer
- // is in use. You can restore the default high priority packer by calling
- // SetHighPriorityDashboardPackerToUse(&GetHighPriorityDashboardPacker()).
- Dashboard& GetHighPriorityDashboardPacker() { return m_dashboardHigh; }
- Dashboard& GetLowPriorityDashboardPacker() { return m_dashboardLow; }
-
- // Get/set the dashboard packers to use. This can sideline or restore the
- // default packers. Initializing SmartDashboard changes the high priority
- // packer in use so beware that the default packer will then be idle. These
- // methods support any kind of DashboardBase, e.g. a Dashboard or a
- // SmartDashboard.
- DashboardBase* GetHighPriorityDashboardPackerInUse() { return m_dashboardInUseHigh; }
- DashboardBase* GetLowPriorityDashboardPackerInUse() { return m_dashboardInUseLow; }
- void SetHighPriorityDashboardPackerToUse(DashboardBase* db) { m_dashboardInUseHigh = db; }
- void SetLowPriorityDashboardPackerToUse(DashboardBase* db) { m_dashboardInUseLow = db; }
-
- DriverStationEnhancedIO& GetEnhancedIO() { return m_enhancedIO; }
-
- void IncrementUpdateNumber() { m_updateNumber++; }
- SEM_ID GetUserStatusDataSem() { return m_statusDataSemaphore; }
-
- /** 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 disabled code; if false, leaving disabled code */
- void InDisabled(bool entering) {m_userInDisabled=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 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 test code; if false, leaving test code */
- void InTest(bool entering) {m_userInTest=entering;}
- /**
- * Get a pointer to the lock used for the data set by the In* methods.
- * Creating write locks on this is useful if you want to atomically modify the
- * information about what code you claim to be executing.
- * @return A pointer to the lock. Be aware that the code that looks at this
- * state (using a read lock) runs after the code that reads new packets and
- * must finish before a new one can be read.
- * @see #InDisabled(bool)
- * @see #InAutonomous(bool)
- * @see #InOperatorControl(bool)
- * @see #InTest(bool)
- */
- RWLock *GetUserStateLock() { return &m_userStateLock; }
-
-protected:
- DriverStation();
- virtual ~DriverStation();
-
- void GetData();
- void SetData();
-
-private:
- static DriverStation *m_instance;
- static ReentrantSemaphore m_instanceSemaphore;
- static uint8_t m_updateNumber;
- ///< TODO: Get rid of this and use the semaphore signaling
- static constexpr float kUpdatePeriod = 0.02;
-
- static void InitTask(DriverStation *ds);
- void Run();
-
- // Volatile because it gets modified by GetData() in a separate task. Be
- // careful using values out of here (2-byte and 4-byte accesses are safe as
- // long as they're aligned, which all of the ones in here should be). If you
- // need consistent data, use m_dataLock.
- // Const because it should never be modifed except by getCommonControlData,
- // and that call has to const_cast away the volatile anyways.
- const volatile struct FRCCommonControlData *m_controlData;
- // A lock for *m_controlData.
- // Read (not write) RWLock::Lockers for this get given out to users so that
- // they can prevent updates to the data while they are doing stuff with it.
- RWLock m_dataLock;
-
- uint8_t m_digitalOut;
- AnalogChannel *m_batteryChannel;
- SEM_ID m_statusDataSemaphore;
- Task m_task;
- Dashboard m_dashboardHigh; // the default dashboard packers
- Dashboard m_dashboardLow;
- DashboardBase* m_dashboardInUseHigh; // the current dashboard packers in use
- DashboardBase* m_dashboardInUseLow;
- // Used to indicate when there is new control data available for
- // IsNewControlData(). A semaphore instead of just a bool to avoid race
- // conditions resulting in missed packets.
- SEM_ID m_newControlData;
- SEM_ID m_packetDataAvailableSem;
- DriverStationEnhancedIO m_enhancedIO;
- // Always empty. Gets semFlushed when there is new data available so that
- // multiple tasks waiting for it can be woken at the same time.
- SEM_ID m_waitForDataSem;
- double m_approxMatchTimeOffset;
-
- RWLock m_userStateLock;
- bool m_userInDisabled;
- bool m_userInAutonomous;
- bool m_userInTeleop;
- bool m_userInTest;
-
- DISALLOW_COPY_AND_ASSIGN(DriverStation);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.cpp b/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.cpp
deleted file mode 100644
index afd9437..0000000
--- a/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.cpp
+++ /dev/null
@@ -1,995 +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 "DriverStationEnhancedIO.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <strLib.h>
-
-/**
- * DriverStationEnhancedIO contructor.
- *
- * This is only called once when the DriverStation constructor is called.
- */
-DriverStationEnhancedIO::DriverStationEnhancedIO()
- : m_inputValid (false)
- , m_outputValid (false)
- , m_configChanged (false)
- , m_requestEnhancedEnable (false)
-{
- bzero((char*)&m_inputData, sizeof(m_inputData));
- bzero((char*)&m_outputData, sizeof(m_outputData));
- m_outputData.size = sizeof(m_outputData) - 1;
- m_outputData.id = kOutputBlockID;
- // Expected to be active low, so initialize inactive.
- m_outputData.data.fixed_digital_out = 0x3;
- m_inputDataSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
- m_outputDataSemaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
- m_encoderOffsets[0] = 0;
- m_encoderOffsets[1] = 0;
-}
-
-/**
- * DriverStationEnhancedIO destructor.
- *
- * Called only when the DriverStation class is destroyed.
- */
-DriverStationEnhancedIO::~DriverStationEnhancedIO()
-{
- semDelete(m_outputDataSemaphore);
- semDelete(m_inputDataSemaphore);
-}
-
-/**
- * Called by the DriverStation class when data is available.
- * This function will set any modified configuration / output,
- * then read the input and configuration from the IO.
- */
-void DriverStationEnhancedIO::UpdateData()
-{
- int32_t retVal;
- {
- status_block_t tempOutputData;
- Synchronized sync(m_outputDataSemaphore);
- if (m_outputValid || m_configChanged || m_requestEnhancedEnable)
- {
- m_outputData.flags = kStatusValid;
- if (m_requestEnhancedEnable)
- {
- // Someone called one of the get config APIs, but we are not in enhanced mode.
- m_outputData.flags |= kForceEnhancedMode;
- }
- if (m_configChanged)
- {
- if (!m_outputValid)
- {
- // Someone called one of the set config APIs, but we are not in enhanced mode.
- m_outputData.flags |= kForceEnhancedMode;
- }
- m_outputData.flags |= kStatusConfigChanged;
- }
- overrideIOConfig((char*)&m_outputData, 5);
- }
- retVal = getDynamicControlData(kOutputBlockID, (char*)&tempOutputData, sizeof(status_block_t), 5);
- if (retVal == 0)
- {
- if (m_outputValid)
- {
- if (m_configChanged)
- {
- // If our config change made the round trip then clear the flag.
- if (IsConfigEqual(tempOutputData, m_outputData))
- {
- m_configChanged = false;
- }
- }
- else
- {
- // TODO: This won't work until artf1128 is fixed
- //if (tempOutputData.flags & kStatusConfigChanged)
- {
- // Configuration was updated on the DS, so update our local cache.
- MergeConfigIntoOutput(tempOutputData, m_outputData);
- }
- }
- }
- else
- {
- // Initialize the local cache.
- MergeConfigIntoOutput(tempOutputData, m_outputData);
- }
- m_requestEnhancedEnable = false;
- m_outputValid = true;
- }
- else
- {
- m_outputValid = false;
- m_inputValid = false;
- }
- }
- {
- Synchronized sync(m_inputDataSemaphore);
- control_block_t tempInputData;
- retVal = getDynamicControlData(kInputBlockID, (char*)&tempInputData, sizeof(control_block_t), 5);
- if (retVal == 0 && tempInputData.data.api_version == kSupportedAPIVersion)
- {
- m_inputData = tempInputData;
- m_inputValid = true;
- }
- else
- {
- m_outputValid = false;
- m_inputValid = false;
- }
- }
-}
-
-/**
- * Merge the config portion of the DS output block into the local cache.
- */
-void DriverStationEnhancedIO::MergeConfigIntoOutput(const status_block_t &dsOutputBlock, status_block_t &localCache)
-{
- localCache.data.digital = (localCache.data.digital & dsOutputBlock.data.digital_oe) |
- (dsOutputBlock.data.digital & ~dsOutputBlock.data.digital_oe);
- localCache.data.digital_oe = dsOutputBlock.data.digital_oe;
- localCache.data.digital_pe = dsOutputBlock.data.digital_pe;
- localCache.data.pwm_period[0] = dsOutputBlock.data.pwm_period[0];
- localCache.data.pwm_period[1] = dsOutputBlock.data.pwm_period[1];
- localCache.data.enables = dsOutputBlock.data.enables;
-}
-
-/**
- * Compare the config portion of the output blocks.
- */
-bool DriverStationEnhancedIO::IsConfigEqual(const status_block_t &dsOutputBlock, const status_block_t &localCache)
-{
- if (localCache.data.digital_oe != dsOutputBlock.data.digital_oe) return false;
- if ((localCache.data.digital & ~dsOutputBlock.data.digital) !=
- (dsOutputBlock.data.digital & ~dsOutputBlock.data.digital)) return false;
- if (localCache.data.digital_pe != dsOutputBlock.data.digital_pe) return false;
- if (localCache.data.pwm_period[0] != dsOutputBlock.data.pwm_period[0]) return false;
- if (localCache.data.pwm_period[1] != dsOutputBlock.data.pwm_period[1]) return false;
- if (localCache.data.enables != dsOutputBlock.data.enables) return false;
- return true;
-}
-
-/**
- * Query an accelerometer channel on the DS IO.
- *
- * @param channel The channel number to read.
- * @return The current acceleration on the channel in Gs.
- */
-double DriverStationEnhancedIO::GetAcceleration(tAccelChannel channel)
-{
- if (channel < 1 || channel > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 2");
- return 0.0;
- }
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_Acceleration);
- reported_mask |= (1 >> channel);
- }
-
- Synchronized sync(m_inputDataSemaphore);
- return (m_inputData.data.accel[channel] - kAccelOffset) / kAccelScale;
-}
-
-/**
- * Query an analog input channel on the DS IO.
- *
- * @param channel The channel number to read. [1,8]
- * @return The analog input voltage for the channel.
- */
-double DriverStationEnhancedIO::GetAnalogIn(uint32_t channel)
-{
- // 3.3V is the analog reference voltage
- return GetAnalogInRatio(channel) * kAnalogInputReference;
-}
-
-/**
- * Query an analog input channel on the DS IO in ratiometric form.
- *
- * @param channel The channel number to read. [1,8]
- * @return The analog input percentage for the channel.
- */
-double DriverStationEnhancedIO::GetAnalogInRatio(uint32_t channel)
-{
- if (channel < 1 || channel > 8)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 8");
- return 0.0;
- }
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- static uint16_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_AnalogIn);
- reported_mask |= (1 >> channel);
- }
-
- Synchronized sync(m_inputDataSemaphore);
- return m_inputData.data.analog[channel-1] / kAnalogInputResolution;
-}
-
-/**
- * Query the voltage currently being output.
- *
- * AO1 is pin 11 on the top connector (P2).
- * AO2 is pin 12 on the top connector (P2).
- *
- * @param channel The analog output channel on the DS IO. [1,2]
- * @return The voltage being output on the channel.
- */
-double DriverStationEnhancedIO::GetAnalogOut(uint32_t channel)
-{
- if (channel < 1 || channel > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 2");
- return 0.0;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- return m_outputData.data.dac[channel-1] * kAnalogOutputReference / kAnalogOutputResolution;
-}
-
-/**
- * Set the analog output voltage.
- *
- * AO1 is pin 11 on the top connector (P2).
- * AO2 is pin 12 on the top connector (P2).
- * AO1 is the reference voltage for the 2 analog comparators on DIO15 and DIO16.
- *
- * The output range is 0V to 4V, however due to the supply voltage don't expect more than about 3V.
- * Current supply capability is only 100uA.
- *
- * @param channel The analog output channel on the DS IO. [1,2]
- * @param value The voltage to output on the channel.
- */
-void DriverStationEnhancedIO::SetAnalogOut(uint32_t channel, double value)
-{
- if (channel < 1 || channel > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 2");
- return;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
- if (value < 0.0) value = 0.0;
- if (value > kAnalogOutputReference) value = kAnalogOutputReference;
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_AnalogOut);
- reported_mask |= (1 >> channel);
- }
-
- Synchronized sync(m_outputDataSemaphore);
- m_outputData.data.dac[channel-1] = (uint8_t)(value / kAnalogOutputReference * kAnalogOutputResolution);
-}
-
-/**
- * Get the state of a button on the IO board.
- *
- * Button1 is the physical button "S1".
- * Button2 is pin 4 on the top connector (P2).
- * Button3 is pin 6 on the top connector (P2).
- * Button4 is pin 8 on the top connector (P2).
- * Button5 is pin 10 on the top connector (P2).
- * Button6 is pin 7 on the top connector (P2).
- *
- * Button2 through Button6 are Capacitive Sense buttons.
- *
- * @param channel The button channel to read. [1,6]
- * @return The state of the selected button.
- */
-bool DriverStationEnhancedIO::GetButton(uint32_t channel)
-{
- if (channel < 1 || channel > 6)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 6");
- return false;
- }
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_Button);
- reported_mask |= (1 >> channel);
- }
-
- return ((GetButtons() >> (channel-1)) & 1) != 0;
-}
-
-/**
- * Get the state of all the button channels.
- *
- * @return The state of the 6 button channels in the 6 lsb of the returned byte.
- */
-uint8_t DriverStationEnhancedIO::GetButtons()
-{
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0;
- }
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, 0, nUsageReporting::kDriverStationEIO_Button);
- Synchronized sync(m_inputDataSemaphore);
- return m_inputData.data.buttons;
-}
-
-/**
- * Set the state of an LED on the IO board.
- *
- * @param channel The LED channel to set. [1,8]
- * @param value True to turn the LED on.
- */
-void DriverStationEnhancedIO::SetLED(uint32_t channel, bool value)
-{
- if (channel < 1 || channel > 8)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 8");
- return;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
-
- static uint16_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_LED);
- reported_mask |= (1 >> channel);
- }
-
- uint8_t leds;
- Synchronized sync(m_outputDataSemaphore);
- leds = m_outputData.data.leds;
-
- leds &= ~(1 << (channel-1));
- if (value) leds |= 1 << (channel-1);
-
- m_outputData.data.leds = leds;
-}
-
-/**
- * Set the state of all 8 LEDs on the IO board.
- *
- * @param value The state of each LED. LED1 is lsb and LED8 is msb.
- */
-void DriverStationEnhancedIO::SetLEDs(uint8_t value)
-{
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, 0, nUsageReporting::kDriverStationEIO_LED);
- Synchronized sync(m_outputDataSemaphore);
- m_outputData.data.leds = value;
-}
-
-/**
- * Get the current state of a DIO channel regardless of mode.
- *
- * @param channel The DIO channel to read. [1,16]
- * @return The state of the selected digital line.
- */
-bool DriverStationEnhancedIO::GetDigital(uint32_t channel)
-{
- if (channel < 1 || channel > 16)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 16");
- return false;
- }
-
- static uint32_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_DigitalIn);
- reported_mask |= (1 >> channel);
- }
-
- return ((GetDigitals() >> (channel-1)) & 1) != 0;
-}
-
-/**
- * Get the state of all 16 DIO lines regardless of mode.
- *
- * @return The state of all DIO lines. DIO1 is lsb and DIO16 is msb.
- */
-uint16_t DriverStationEnhancedIO::GetDigitals()
-{
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0;
- }
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, 0, nUsageReporting::kDriverStationEIO_DigitalIn);
- Synchronized sync(m_inputDataSemaphore);
- return m_inputData.data.digital;
-}
-
-/**
- * Set the state of a DIO line that is configured for digital output.
- *
- * @param channel The DIO channel to set. [1,16]
- * @param value The state to set the selected channel to.
- */
-void DriverStationEnhancedIO::SetDigitalOutput(uint32_t channel, bool value)
-{
- if (channel < 1 || channel > 16)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 16");
- return;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
-
- static uint32_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_DigitalOut);
- reported_mask |= (1 >> channel);
- }
-
- uint16_t digital;
- Synchronized sync(m_outputDataSemaphore);
-
- if (m_outputData.data.digital_oe & (1 << (channel-1)))
- {
- digital = m_outputData.data.digital;
-
- digital &= ~(1 << (channel-1));
- if (value) digital |= 1 << (channel-1);
-
- m_outputData.data.digital = digital;
- }
- else
- {
- wpi_setWPIError(LineNotOutput);
- }
-}
-
-/**
- * Get the current configuration for a DIO line.
- *
- * This has the side effect of forcing the Driver Station to switch to Enhanced mode if it's not when called.
- * If Enhanced mode is not enabled when this is called, it will return kUnknown.
- *
- * @param channel The DIO channel config to get. [1,16]
- * @return The configured mode for the DIO line.
- */
-DriverStationEnhancedIO::tDigitalConfig DriverStationEnhancedIO::GetDigitalConfig(uint32_t channel)
-{
- if (channel < 1 || channel > 16)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 16");
- return kUnknown;
- }
- if (!m_outputValid)
- {
- m_requestEnhancedEnable = true;
- wpi_setWPIError(EnhancedIOMissing);
- return kUnknown;
- }
- Synchronized sync(m_outputDataSemaphore);
- if ((channel >= 1) && (channel <= 4))
- {
- if (m_outputData.data.pwm_enable & (1 << (channel - 1)))
- {
- return kPWM;
- }
- }
- if ((channel >= 15) && (channel <= 16))
- {
- if (m_outputData.data.comparator_enable & (1 << (channel - 15)))
- {
- return kAnalogComparator;
- }
- }
- if (m_outputData.data.digital_oe & (1 << (channel - 1)))
- {
- return kOutput;
- }
- if (!(m_outputData.data.digital_pe & (1 << (channel - 1))))
- {
- return kInputFloating;
- }
- if (m_outputData.data.digital & (1 << (channel - 1)))
- {
- return kInputPullUp;
- }
- else
- {
- return kInputPullDown;
- }
-}
-
-/**
- * Override the DS's configuration of a DIO line.
- *
- * If configured to kInputFloating, the selected DIO line will be tri-stated with no internal pull resistor.
- *
- * If configured to kInputPullUp, the selected DIO line will be tri-stated with a 5k-Ohm internal pull-up resistor enabled.
- *
- * If configured to kInputPullDown, the selected DIO line will be tri-stated with a 5k-Ohm internal pull-down resistor enabled.
- *
- * If configured to kOutput, the selected DIO line will actively drive to 0V or Vddio (specified by J1 and J4).
- * DIO1 through DIO12, DIO15, and DIO16 can source 4mA and can sink 8mA.
- * DIO12 and DIO13 can source 4mA and can sink 25mA.
- *
- * In addition to the common configurations, DIO1 through DIO4 can be configured to kPWM to enable PWM output.
- *
- * In addition to the common configurations, DIO15 and DIO16 can be configured to kAnalogComparator to enable
- * analog comparators on those 2 DIO lines. When enabled, the lines are tri-stated and will accept analog voltages
- * between 0V and 3.3V. If the input voltage is greater than the voltage output by AO1, the DIO will read as true,
- * if less then false.
- *
- * @param channel The DIO line to configure. [1,16]
- * @param config The mode to put the DIO line in.
- */
-void DriverStationEnhancedIO::SetDigitalConfig(uint32_t channel, tDigitalConfig config)
-{
- if (channel < 1 || channel > 16)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 16");
- return;
- }
- if (config == kPWM && (channel < 1 || channel > 4))
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel in PWM mode must be between 1 and 4");
- return;
- }
- if (config == kAnalogComparator && (channel < 15 || channel > 16))
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel in Analog Comparator mode must be between 15 and 16");
- return;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- m_configChanged = true;
-
- if ((channel >= 1) && (channel <= 4))
- {
- if (config == kPWM)
- {
- m_outputData.data.pwm_enable |= 1 << (channel - 1);
- m_outputData.data.digital &= ~(1 << (channel - 1));
- m_outputData.data.digital_oe |= 1 << (channel - 1);
- m_outputData.data.digital_pe &= ~(1 << (channel - 1));
- return;
- }
- else
- {
- m_outputData.data.pwm_enable &= ~(1 << (channel - 1));
- }
- }
- else if ((channel >= 15) && (channel <= 16))
- {
- if (config == kAnalogComparator)
- {
- m_outputData.data.comparator_enable |= 1 << (channel - 15);
- m_outputData.data.digital &= ~(1 << (channel - 1));
- m_outputData.data.digital_oe &= ~(1 << (channel - 1));
- m_outputData.data.digital_pe &= ~(1 << (channel - 1));
- return;
- }
- else
- {
- m_outputData.data.comparator_enable &= ~(1 << (channel - 15));
- }
- }
- if (config == kInputFloating)
- {
- m_outputData.data.digital &= ~(1 << (channel - 1));
- m_outputData.data.digital_oe &= ~(1 << (channel - 1));
- m_outputData.data.digital_pe &= ~(1 << (channel - 1));
- }
- else if (config == kInputPullUp)
- {
- m_outputData.data.digital |= 1 << (channel - 1);
- m_outputData.data.digital_oe &= ~(1 << (channel - 1));
- m_outputData.data.digital_pe |= 1 << (channel - 1);
- }
- else if (config == kInputPullDown)
- {
- m_outputData.data.digital &= ~(1 << (channel - 1));
- m_outputData.data.digital_oe &= ~(1 << (channel - 1));
- m_outputData.data.digital_pe |= 1 << (channel - 1);
- }
- else if (config == kOutput)
- {
- m_outputData.data.digital_oe |= 1 << (channel - 1);
- m_outputData.data.digital_pe &= ~(1 << (channel - 1));
- }
- else
- {
- // Something went wrong.
- }
-}
-
-/**
- * Get the period of a PWM generator.
- *
- * This has the side effect of forcing the Driver Station to switch to Enhanced mode if it's not when called.
- * If Enhanced mode is not enabled when this is called, it will return 0.
- *
- * @param channels Select the generator by specifying the two channels to which it is connected.
- * @return The period of the PWM generator in seconds.
- */
-double DriverStationEnhancedIO::GetPWMPeriod(tPWMPeriodChannels channels)
-{
- if (channels < kPWMChannels1and2 || channels > kPWMChannels3and4)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channels must be kPWMChannels1and2 or kPWMChannels3and4");
- return 0.0;
- }
- if (!m_outputValid)
- {
- m_requestEnhancedEnable = true;
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- return m_outputData.data.pwm_period[channels] / 24000000.0;
-}
-
-/**
- * Set the period of a PWM generator.
- *
- * There are 2 PWM generators on the IO board. One can generate PWM signals on DIO1 and DIO2,
- * the other on DIO3 and DIO4. Each generator has one counter and two compare registers. As such,
- * each pair of PWM outputs share the output period but have independent duty cycles.
- *
- * @param channels Select the generator by specifying the two channels to which it is connected.
- * @param period The period of the PWM generator in seconds. [0.0,0.002731]
- */
-void DriverStationEnhancedIO::SetPWMPeriod(tPWMPeriodChannels channels, double period)
-{
- if (channels < kPWMChannels1and2 || channels > kPWMChannels3and4)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channels must be kPWMChannels1and2 or kPWMChannels3and4");
- return;
- }
-
- // Convert to ticks based on the IO board's 24MHz clock
- double ticks = period * 24000000.0;
- // Limit the range of the ticks... warn if too big.
- if (ticks > 65534.0)
- {
- wpi_setWPIError(EnhancedIOPWMPeriodOutOfRange);
- ticks = 65534.0;
- }
- else if (ticks < 0.0) ticks = 0.0;
- // Preserve the duty cycles.
- double dutyCycles[2];
- dutyCycles[0] = GetPWMOutput((channels << 1) + 1);
- dutyCycles[1] = GetPWMOutput((channels << 1) + 2);
- {
- Synchronized sync(m_outputDataSemaphore);
- // Update the period
- m_outputData.data.pwm_period[channels] = (uint16_t)ticks;
- m_configChanged = true;
- }
- // Restore the duty cycles
- SetPWMOutput((channels << 1) + 1, dutyCycles[0]);
- SetPWMOutput((channels << 1) + 2, dutyCycles[1]);
-}
-
-/**
- * Get the state being output on a fixed digital output.
- *
- * @param channel The FixedDO line to get. [1,2]
- * @return The state of the FixedDO line.
- */
-bool DriverStationEnhancedIO::GetFixedDigitalOutput(uint32_t channel)
-{
- if (channel < 1 || channel > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 2");
- return 0;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- return ((m_outputData.data.fixed_digital_out >> (channel-1)) & 1) != 0;
-}
-
-/**
- * Set the state to output on a Fixed High Current Digital Output line.
- *
- * FixedDO1 is pin 5 on the top connector (P2).
- * FixedDO2 is pin 3 on the top connector (P2).
- *
- * The FixedDO lines always output 0V and 3.3V regardless of J1 and J4.
- * They can source 4mA and can sink 25mA. Because of this, they are expected to be used
- * in an active low configuration, such as connecting to the cathode of a bright LED.
- * Because they are expected to be active low, they default to true.
- *
- * @param channel The FixedDO channel to set.
- * @param value The state to set the FixedDO.
- */
-void DriverStationEnhancedIO::SetFixedDigitalOutput(uint32_t channel, bool value)
-{
- if (channel < 1 || channel > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 2");
- return;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_FixedDigitalOut);
- reported_mask |= (1 >> channel);
- }
-
- uint8_t digital;
- Synchronized sync(m_outputDataSemaphore);
- digital = m_outputData.data.fixed_digital_out;
-
- digital &= ~(1 << (channel-1));
- if (value) digital |= 1 << (channel-1);
-
- m_outputData.data.fixed_digital_out = digital;
-}
-
-/**
- * Get the position of a quadrature encoder.
- *
- * There are two signed 16-bit 4X quadrature decoders on the IO board. These decoders are always monitoring
- * the state of the lines assigned to them, but these lines do not have to be used for encoders.
- *
- * Encoder1 uses DIO4 for "A", DIO6 for "B", and DIO8 for "Index".
- * Encoder2 uses DIO5 for "A", DIO7 for "B", and DIO9 for "Index".
- *
- * The index functionality can be enabled or disabled using SetEncoderIndexEnable().
- *
- * @param encoderNumber The quadrature encoder to access. [1,2]
- * @return The current position of the quadrature encoder.
- */
-int16_t DriverStationEnhancedIO::GetEncoder(uint32_t encoderNumber)
-{
- if (encoderNumber < 1 || encoderNumber > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "encoderNumber must be between 1 and 2");
- return 0;
- }
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0;
- }
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> encoderNumber)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, encoderNumber, nUsageReporting::kDriverStationEIO_Encoder);
- reported_mask |= (1 >> encoderNumber);
- }
-
- Synchronized sync(m_inputDataSemaphore);
- return m_inputData.data.quad[encoderNumber - 1] - m_encoderOffsets[encoderNumber - 1];
-}
-
-/**
- * Reset the position of an encoder to 0.
- *
- * This simply stores an offset locally. It does not reset the hardware counter on the IO board.
- * If you use this method with Index enabled, you may get unexpected results.
- *
- * @param encoderNumber The quadrature encoder to reset. [1,2]
- */
-void DriverStationEnhancedIO::ResetEncoder(uint32_t encoderNumber)
-{
- if (encoderNumber < 1 || encoderNumber > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "encoderNumber must be between 1 and 2");
- return;
- }
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
-
- Synchronized sync(m_inputDataSemaphore);
- m_encoderOffsets[encoderNumber - 1] = m_inputData.data.quad[encoderNumber - 1];
-}
-
-/**
- * Get the current configuration of a quadrature encoder index channel.
- *
- * This has the side effect of forcing the Driver Station to switch to Enhanced mode if it's not when called.
- * If Enhanced mode is not enabled when this is called, it will return false.
- *
- * @param encoderNumber The quadrature encoder. [1,2]
- * @return Is the index channel of the encoder enabled.
- */
-bool DriverStationEnhancedIO::GetEncoderIndexEnable(uint32_t encoderNumber)
-{
- if (encoderNumber < 1 || encoderNumber > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "encoderNumber must be between 1 and 2");
- return false;
- }
- if (!m_outputValid)
- {
- m_requestEnhancedEnable = true;
- wpi_setWPIError(EnhancedIOMissing);
- return false;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- return ((m_outputData.data.quad_index_enable >> (encoderNumber - 1)) & 1) != 0;
-}
-
-/**
- * Enable or disable the index channel of a quadrature encoder.
- *
- * The quadrature decoders on the IO board support an active-low index input.
- *
- * Encoder1 uses DIO8 for "Index".
- * Encoder2 uses DIO9 for "Index".
- *
- * When enabled, the decoder's counter will be reset to 0 when A, B, and Index are all low.
- *
- * @param encoderNumber The quadrature encoder. [1,2]
- * @param enable If true, reset the encoder in an index condition.
- */
-void DriverStationEnhancedIO::SetEncoderIndexEnable(uint32_t encoderNumber, bool enable)
-{
- if (encoderNumber < 1 || encoderNumber > 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "encoderNumber must be between 1 and 2");
- return;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- m_outputData.data.quad_index_enable &= ~(1 << (encoderNumber - 1));
- if (enable) m_outputData.data.quad_index_enable |= 1 << (encoderNumber - 1);
- m_configChanged = true;
-}
-
-/**
- * Get the value of the Capacitive Sense touch slider.
- *
- * @return Value between 0.0 (toward center of board) and 1.0 (toward edge of board). -1.0 means no touch detected.
- */
-double DriverStationEnhancedIO::GetTouchSlider()
-{
- if (!m_inputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, 1, nUsageReporting::kDriverStationEIO_TouchSlider);
-
- Synchronized sync(m_inputDataSemaphore);
- uint8_t value = m_inputData.data.capsense_slider;
- return value == 255 ? -1.0 : value / 254.0;
-}
-
-/**
- * Get the percent duty-cycle that the PWM generator channel is configured to output.
- *
- * @param channel The DIO line's PWM generator to get the duty-cycle from. [1,4]
- * @return The percent duty-cycle being output (if the DIO line is configured for PWM). [0.0,1.0]
- */
-double DriverStationEnhancedIO::GetPWMOutput(uint32_t channel)
-{
- if (channel < 1 || channel > 4)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 4");
- return 0.0;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return 0.0;
- }
-
- Synchronized sync(m_outputDataSemaphore);
- return (double)m_outputData.data.pwm_compare[channel - 1] / (double)m_outputData.data.pwm_period[(channel - 1) >> 1];
-}
-
-/**
- * Set the percent duty-cycle to output on a PWM enabled DIO line.
- *
- * DIO1 through DIO4 have the ability to output a PWM signal. The period of the
- * signal can be configured in pairs using SetPWMPeriod().
- *
- * @param channel The DIO line's PWM generator to set. [1,4]
- * @param value The percent duty-cycle to output from the PWM generator. [0.0,1.0]
- */
-void DriverStationEnhancedIO::SetPWMOutput(uint32_t channel, double value)
-{
- if (channel < 1 || channel > 4)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "channel must be between 1 and 4");
- return;
- }
- if (!m_outputValid)
- {
- wpi_setWPIError(EnhancedIOMissing);
- return;
- }
-
- static uint8_t reported_mask = 0;
- if (!(reported_mask & (1 >> channel)))
- {
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationEIO, channel, nUsageReporting::kDriverStationEIO_PWM);
- reported_mask |= (1 >> channel);
- }
-
- if (value > 1.0) value = 1.0;
- else if (value < 0.0) value = 0.0;
- Synchronized sync(m_outputDataSemaphore);
- m_outputData.data.pwm_compare[channel - 1] = (uint16_t)(value * (double)m_outputData.data.pwm_period[(channel - 1) >> 1]);
-}
-
-/**
- * Get the firmware version running on the IO board.
- *
- * This also has the side effect of forcing the driver station to switch to Enhanced mode if it is not.
- * If you plan to switch between Driver Stations with unknown IO configurations, you can call this
- * until it returns a non-0 version to ensure that this API is accessible before proceeding.
- *
- * @return The version of the firmware running on the IO board. 0 if the board is not attached or not in Enhanced mode.
- */
-uint8_t DriverStationEnhancedIO::GetFirmwareVersion()
-{
- if (!m_inputValid)
- {
- m_requestEnhancedEnable = true;
- wpi_setWPIError(EnhancedIOMissing);
- return 0;
- }
-
- Synchronized sync(m_inputDataSemaphore);
- return m_inputData.data.fw_version;
-}
-
diff --git a/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.h b/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.h
deleted file mode 100644
index ac265dd..0000000
--- a/aos/externals/WPILib/WPILib/DriverStationEnhancedIO.h
+++ /dev/null
@@ -1,151 +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 __DRIVER_STATION_ENHANCED_IO_H__
-#define __DRIVER_STATION_ENHANCED_IO_H__
-
-#include "ErrorBase.h"
-#include "NetworkCommunication/FRCComm.h"
-#include <stack>
-#include <vector>
-#include <vxWorks.h>
-
-#define kAnalogInputResolution ((double)((1<<14)-1))
-#define kAnalogInputReference 3.3
-#define kAnalogOutputResolution ((double)((1<<8)-1))
-#define kAnalogOutputReference 4.0
-#define kAccelOffset 8300
-#define kAccelScale 3300.0
-#define kSupportedAPIVersion 1
-
-/**
- * Interact with the more complete I/O available from the
- * newest driver station. Get a reference to an object
- * of this type by calling GetEnhancedIO() on the DriverStation object.
- */
-class DriverStationEnhancedIO : public ErrorBase
-{
- // Can only be constructed by the DriverStation class.
- friend class DriverStation;
-
-#pragma pack(push,1)
- // BEGIN: Definitions from the Cypress firmware
- typedef struct
- {
- uint16_t digital;
- uint16_t digital_oe;
- uint16_t digital_pe;
- uint16_t pwm_compare[4];
- uint16_t pwm_period[2];
- uint8_t dac[2];
- uint8_t leds;
- union
- {
- struct
- {
- // Bits are inverted from cypress fw because of big-endian!
- uint8_t pwm_enable : 4;
- uint8_t comparator_enable : 2;
- uint8_t quad_index_enable : 2;
- };
- uint8_t enables;
- };
- uint8_t fixed_digital_out;
- } output_t; //data to IO (23 bytes)
-
- typedef struct
- {
- uint8_t api_version;
- uint8_t fw_version;
- int16_t analog[8];
- uint16_t digital;
- int16_t accel[3];
- int16_t quad[2];
- uint8_t buttons;
- uint8_t capsense_slider;
- uint8_t capsense_proximity;
- } input_t; //data from IO (33 bytes)
- // END: Definitions from the Cypress firmware
-
- // Dynamic block definitions
- typedef struct
- {
- uint8_t size; // Must be 25 (size remaining in the block not counting the size variable)
- uint8_t id; // Must be 18
- output_t data;
- uint8_t flags;
- } status_block_t;
-
- typedef struct
- {
- uint8_t size; // Must be 34
- uint8_t id; // Must be 17
- input_t data;
- } control_block_t;
-#pragma pack(pop)
-
- enum tBlockID
- {
- kInputBlockID = kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input,
- kOutputBlockID = kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output,
- };
- enum tStatusFlags {kStatusValid = 0x01, kStatusConfigChanged = 0x02, kForceEnhancedMode = 0x04};
-
-public:
- enum tDigitalConfig {kUnknown, kInputFloating, kInputPullUp, kInputPullDown, kOutput, kPWM, kAnalogComparator};
- enum tAccelChannel {kAccelX = 0, kAccelY = 1, kAccelZ = 2};
- enum tPWMPeriodChannels {kPWMChannels1and2, kPWMChannels3and4};
-
- double GetAcceleration(tAccelChannel channel);
- double GetAnalogIn(uint32_t channel);
- double GetAnalogInRatio(uint32_t channel);
- double GetAnalogOut(uint32_t channel);
- void SetAnalogOut(uint32_t channel, double value);
- bool GetButton(uint32_t channel);
- uint8_t GetButtons();
- void SetLED(uint32_t channel, bool value);
- void SetLEDs(uint8_t value);
- bool GetDigital(uint32_t channel);
- uint16_t GetDigitals();
- void SetDigitalOutput(uint32_t channel, bool value);
- tDigitalConfig GetDigitalConfig(uint32_t channel);
- void SetDigitalConfig(uint32_t channel, tDigitalConfig config);
- double GetPWMPeriod(tPWMPeriodChannels channels);
- void SetPWMPeriod(tPWMPeriodChannels channels, double period);
- bool GetFixedDigitalOutput(uint32_t channel);
- void SetFixedDigitalOutput(uint32_t channel, bool value);
- int16_t GetEncoder(uint32_t encoderNumber);
- void ResetEncoder(uint32_t encoderNumber);
- bool GetEncoderIndexEnable(uint32_t encoderNumber);
- void SetEncoderIndexEnable(uint32_t encoderNumber, bool enable);
- double GetTouchSlider();
- double GetPWMOutput(uint32_t channel);
- void SetPWMOutput(uint32_t channel, double value);
- uint8_t GetFirmwareVersion();
-
-private:
- DriverStationEnhancedIO();
- virtual ~DriverStationEnhancedIO();
- void UpdateData();
- void MergeConfigIntoOutput(const status_block_t &dsOutputBlock, status_block_t &localCache);
- bool IsConfigEqual(const status_block_t &dsOutputBlock, const status_block_t &localCache);
-
- // Usage Guidelines...
- DISALLOW_COPY_AND_ASSIGN(DriverStationEnhancedIO);
-
- control_block_t m_inputData;
- status_block_t m_outputData;
- SEM_ID m_inputDataSemaphore;
- SEM_ID m_outputDataSemaphore;
- bool m_inputValid;
- bool m_outputValid;
- bool m_configChanged;
- bool m_requestEnhancedEnable;
- int16_t m_encoderOffsets[2];
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/DriverStationLCD.cpp b/aos/externals/WPILib/WPILib/DriverStationLCD.cpp
deleted file mode 100644
index 6841a69..0000000
--- a/aos/externals/WPILib/WPILib/DriverStationLCD.cpp
+++ /dev/null
@@ -1,165 +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 "DriverStationLCD.h"
-#include "NetworkCommunication/FRCComm.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <strLib.h>
-
-const uint32_t DriverStationLCD::kSyncTimeout_ms;
-const uint16_t DriverStationLCD::kFullDisplayTextCommand;
-const int32_t DriverStationLCD::kLineLength;
-const int32_t DriverStationLCD::kNumLines;
-DriverStationLCD* DriverStationLCD::m_instance = NULL;
-
-/**
- * DriverStationLCD contructor.
- *
- * This is only called once the first time GetInstance() is called
- */
-DriverStationLCD::DriverStationLCD()
- : m_textBuffer (NULL)
- , m_textBufferSemaphore (NULL)
-{
- m_textBuffer = new char[USER_DS_LCD_DATA_SIZE];
- memset(m_textBuffer, ' ', USER_DS_LCD_DATA_SIZE);
-
- *((uint16_t *)m_textBuffer) = kFullDisplayTextCommand;
-
- m_textBufferSemaphore = semMCreate(SEM_DELETE_SAFE);
-
- nUsageReporting::report(nUsageReporting::kResourceType_DriverStationLCD, 0);
-
- AddToSingletonList();
-}
-
-DriverStationLCD::~DriverStationLCD()
-{
- semDelete(m_textBufferSemaphore);
- delete [] m_textBuffer;
- m_instance = NULL;
-}
-
-/**
- * Return a pointer to the singleton DriverStationLCD.
- */
-DriverStationLCD* DriverStationLCD::GetInstance()
-{
- if (m_instance == NULL)
- {
- m_instance = new DriverStationLCD();
- }
- return m_instance;
-}
-
-/**
- * Send the text data to the Driver Station.
- */
-void DriverStationLCD::UpdateLCD()
-{
- Synchronized sync(m_textBufferSemaphore);
- setUserDsLcdData(m_textBuffer, USER_DS_LCD_DATA_SIZE, kSyncTimeout_ms);
-}
-
-/**
- * Print formatted text to the Driver Station LCD text bufer.
- *
- * 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.
- * @param writeFmt The printf format string describing how to print.
- */
-void DriverStationLCD::Printf(Line line, int32_t startingColumn, const char *writeFmt, ...)
-{
- va_list args;
- va_start (args, writeFmt);
- VPrintf(line, startingColumn, writeFmt, args);
- va_end (args);
-}
-
-void DriverStationLCD::VPrintf(Line line, int32_t startingColumn, const char *writeFmt, va_list args)
-{
- uint32_t start = startingColumn - 1;
- int32_t maxLength = kLineLength - start;
- char lineBuffer[kLineLength + 1];
-
- if (startingColumn < 1 || startingColumn > kLineLength)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "startingColumn");
- return;
- }
-
- if (line < kMain_Line6 || line > kUser_Line6)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "line");
- return;
- }
-
- {
- Synchronized sync(m_textBufferSemaphore);
- // snprintf appends NULL to its output. Therefore we can't write directly to the buffer.
- int32_t length = vsnprintf(lineBuffer, kLineLength + 1, writeFmt, args);
- if (length < 0) length = kLineLength;
-
- memcpy(m_textBuffer + start + line * kLineLength + sizeof(uint16_t), lineBuffer, std::min(maxLength,length));
- }
-}
-
-/**
- * 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 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_start (args, writeFmt);
- VPrintfLine(line, writeFmt, args);
- va_end (args);
-}
-
-void DriverStationLCD::VPrintfLine(Line line, const char *writeFmt, va_list args)
-{
- char lineBuffer[kLineLength + 1];
-
- if (line < kMain_Line6 || line > kUser_Line6)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "line");
- return;
- }
-
- {
- Synchronized sync(m_textBufferSemaphore);
- // snprintf appends NULL to its output. Therefore we can't write directly to the buffer.
- int32_t length = std::min(vsnprintf(lineBuffer, kLineLength + 1, writeFmt, args), (int)kLineLength);
- if (length < 0) length = kLineLength;
-
- // Fill the rest of the buffer
- if (length < kLineLength)
- {
- memset(lineBuffer + length, ' ', kLineLength - length);
- }
-
- memcpy(m_textBuffer + line * kLineLength + sizeof(uint16_t), lineBuffer, kLineLength);
- }
-}
-
-/**
- * Clear all lines on the LCD.
- */
-void DriverStationLCD::Clear()
-{
- Synchronized sync(m_textBufferSemaphore);
- memset(m_textBuffer + sizeof(uint16_t), ' ', kLineLength*kNumLines);
-}
-
diff --git a/aos/externals/WPILib/WPILib/DriverStationLCD.h b/aos/externals/WPILib/WPILib/DriverStationLCD.h
deleted file mode 100644
index ebdf6bc..0000000
--- a/aos/externals/WPILib/WPILib/DriverStationLCD.h
+++ /dev/null
@@ -1,52 +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 __DRIVER_STATION_LCD_H__
-#define __DRIVER_STATION_LCD_H__
-
-#include "SensorBase.h"
-
-/**
- * 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.
- */
-class DriverStationLCD : public SensorBase
-{
-public:
- static const uint32_t kSyncTimeout_ms = 20;
- static const uint16_t kFullDisplayTextCommand = 0x9FFF;
- static const int32_t kLineLength = 21;
- static const int32_t kNumLines = 6;
- enum Line {kMain_Line6=0, kUser_Line1=0, kUser_Line2=1, kUser_Line3=2, kUser_Line4=3, kUser_Line5=4, kUser_Line6=5};
-
- static DriverStationLCD *GetInstance();
-
- void UpdateLCD();
- void Printf(Line line, int32_t startingColumn, const char *writeFmt, ...);
- void VPrintf(Line line, int32_t 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();
- virtual ~DriverStationLCD();
-
-private:
- static void InitTask(DriverStationLCD *ds);
- static DriverStationLCD *m_instance;
- DISALLOW_COPY_AND_ASSIGN(DriverStationLCD);
-
- char *m_textBuffer;
- SEM_ID m_textBufferSemaphore;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Eclipse.cproject b/aos/externals/WPILib/WPILib/Eclipse.cproject
deleted file mode 100644
index 8447cbb..0000000
--- a/aos/externals/WPILib/WPILib/Eclipse.cproject
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
- <storageModule moduleId="org.eclipse.cdt.core.settings">
- <cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494" moduleId="org.eclipse.cdt.core.settings" name="Debug">
- <externalSettings>
- <externalSetting>
- <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/WPILib"/>
- <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/WPILib/Debug"/>
- <entry flags="RESOLVED" kind="libraryFile" name="WPILib" srcPrefixMapping="" srcRootPath=""/>
- </externalSetting>
- </externalSettings>
- <extensions>
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
- </extensions>
- </storageModule>
- <storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration artifactExtension="a" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.staticLib" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494" name="Debug" parent="cdt.managedbuild.config.gnu.cross.exe.debug">
- <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494." name="/" resourcePath="">
- <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.debug.994329655" name="Cross GCC" nonInternalBuilderId="cdt.managedbuild.builder.gnu.cross" resourceTypeBasedDiscovery="true" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.debug">
- <option id="cdt.managedbuild.option.gnu.cross.prefix.1233302794" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" value="powerpc-wrs-vxworks-" valueType="string"/>
- <option id="cdt.managedbuild.option.gnu.cross.path.344448660" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" value="/usr/powerpc-wrs-vxworks/bin" valueType="string"/>
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1506551398" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
- <builder autoBuildTarget="all" buildPath="${workspace_loc:/WPILib/Debug}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.1737288017" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
- <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.720051271" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1408965103" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.1453206520" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1545251527" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
- </tool>
- <tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1658342348" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
- <option id="gnu.cpp.compiler.option.optimization.level.486336400" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.1345636137" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.default" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.warnings.toerrors.1436493674" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors" value="true" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.other.other.921313522" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -mcpu=603 -mstrict-align -mlongcall -DTOOL=GNU -std=gnu++11" valueType="string"/>
- <option id="gnu.cpp.compiler.option.include.paths.1510285501" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
- <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/>
- </option>
- <option id="gnu.cpp.compiler.option.warnings.pedantic.136839208" name="Pedantic (-pedantic)" superClass="gnu.cpp.compiler.option.warnings.pedantic" value="false" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.warnings.extrawarn.1677322864" name="Extra warnings (-Wextra)" superClass="gnu.cpp.compiler.option.warnings.extrawarn" value="false" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.warnings.pedantic.error.845911741" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.cpp.compiler.option.warnings.pedantic.error" value="false" valueType="boolean"/>
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2053579657" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
- </tool>
- <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1358345602" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
- <option defaultValue="true" id="gnu.c.link.option.shared.1740428128" name="Shared (-shared)" superClass="gnu.c.link.option.shared" valueType="boolean"/>
- </tool>
- <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1430642678" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
- <option defaultValue="true" id="gnu.cpp.link.option.shared.238861230" name="Shared (-shared)" superClass="gnu.cpp.link.option.shared" valueType="boolean"/>
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.235722841" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
- <additionalInput kind="additionalinput" paths="$(LIBS)"/>
- </inputType>
- </tool>
- <tool id="cdt.managedbuild.tool.gnu.cross.archiver.1709016862" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver">
- <option id="gnu.both.lib.option.flags.1145203980" name="Archiver flags" superClass="gnu.both.lib.option.flags" value="-crus" valueType="string"/>
- </tool>
- <tool id="cdt.managedbuild.tool.gnu.cross.assembler.1675338920" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.428648088" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
- </tool>
- </toolChain>
- </folderInfo>
- </configuration>
- </storageModule>
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
- </cconfiguration>
- </storageModule>
- <storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="WPILib.cdt.managedbuild.target.gnu.cross.exe.869600547" name="Executable" projectType="cdt.managedbuild.target.gnu.cross.exe"/>
- </storageModule>
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
- <storageModule moduleId="refreshScope" versionNumber="2">
- <configuration configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="/WPILib"/>
- </configuration>
- </storageModule>
- <storageModule moduleId="scannerConfiguration">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494;cdt.managedbuild.config.gnu.cross.exe.debug.1905580494.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1658342348;cdt.managedbuild.tool.gnu.cpp.compiler.input.2053579657">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
- <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
- <buildOutputProvider>
- <openAction enabled="true" filePath=""/>
- <parser enabled="true"/>
- </buildOutputProvider>
- <scannerInfoProvider id="specsFile">
- <runAction arguments="-E -P -v -dD "${plugin_state_location}/specs.cpp"" command="powerpc-wrs-vxworks-g++" useDefault="true"/>
- <parser enabled="true"/>
- </scannerInfoProvider>
- </profile>
- </scannerConfigBuildInfo>
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494;cdt.managedbuild.config.gnu.cross.exe.debug.1905580494.;cdt.managedbuild.tool.gnu.cross.c.compiler.720051271;cdt.managedbuild.tool.gnu.c.compiler.input.1545251527">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
- <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
- <buildOutputProvider>
- <openAction enabled="true" filePath=""/>
- <parser enabled="true"/>
- </buildOutputProvider>
- <scannerInfoProvider id="specsFile">
- <runAction arguments="-E -P -v -dD "${plugin_state_location}/specs.c"" command="powerpc-wrs-vxworks-gcc" useDefault="true"/>
- <parser enabled="true"/>
- </scannerInfoProvider>
- </profile>
- </scannerConfigBuildInfo>
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1905580494">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
- </scannerConfigBuildInfo>
- </storageModule>
-</cproject>
diff --git a/aos/externals/WPILib/WPILib/Eclipse.project b/aos/externals/WPILib/WPILib/Eclipse.project
deleted file mode 100644
index 2a7f5d1..0000000
--- a/aos/externals/WPILib/WPILib/Eclipse.project
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>WPILib</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
- <triggers>clean,full,incremental,</triggers>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
- <triggers>full,incremental,</triggers>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.cdt.core.cnature</nature>
- <nature>org.eclipse.cdt.core.ccnature</nature>
- <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
- <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
- </natures>
-</projectDescription>
diff --git a/aos/externals/WPILib/WPILib/Encoder.cpp b/aos/externals/WPILib/WPILib/Encoder.cpp
deleted file mode 100644
index 941b8cc..0000000
--- a/aos/externals/WPILib/WPILib/Encoder.cpp
+++ /dev/null
@@ -1,594 +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 "DigitalInput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-static Resource *quadEncoders = NULL;
-
-/**
- * Common initialization code for Encoders.
- * This code allocates resources for Encoders and is common to all constructors.
- * @param reverseDirection If true, counts down instead of up (this is all relative)
- * @param encodingType either k1X, k2X, or k4X to indicate 1X, 2X or 4X decoding. If 4X is
- * selected, then an encoder FPGA object is used and the returned counts will be 4x the encoder
- * spec'd value since all rising and falling edges are counted. If 1X or 2X are selected then
- * a counter object will be used and the returned value will either exactly match the spec'd count
- * or be double (2x) the spec'd count.
- */
-void Encoder::InitEncoder(bool reverseDirection, EncodingType encodingType)
-{
- m_table = NULL;
- m_encodingType = encodingType;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (encodingType == k4X) {
- Resource::CreateResourceObject(&quadEncoders, tEncoder::kNumSystems);
- uint32_t index = quadEncoders->Allocate("4X Encoder", this);
- if (index == ~0ul)
- {
- return;
- }
- if (m_aSource->StatusIsFatal())
- {
- CloneError(m_aSource);
- return;
- }
- if (m_bSource->StatusIsFatal())
- {
- CloneError(m_bSource);
- return;
- }
- m_index = index;
- m_encoder = tEncoder::create(m_index, &localStatus);
- m_encoder->writeConfig_ASource_Module(m_aSource->GetModuleForRouting(), &localStatus);
- m_encoder->writeConfig_ASource_Channel(m_aSource->GetChannelForRouting(), &localStatus);
- m_encoder->writeConfig_ASource_AnalogTrigger(m_aSource->GetAnalogTriggerForRouting(), &localStatus);
- m_encoder->writeConfig_BSource_Module(m_bSource->GetModuleForRouting(), &localStatus);
- m_encoder->writeConfig_BSource_Channel(m_bSource->GetChannelForRouting(), &localStatus);
- m_encoder->writeConfig_BSource_AnalogTrigger(m_bSource->GetAnalogTriggerForRouting(), &localStatus);
- m_encoder->strobeReset(&localStatus);
- m_encoder->writeConfig_Reverse(reverseDirection, &localStatus);
- m_encoder->writeTimerConfig_AverageSize(4, &localStatus);
- m_counter = NULL;
- } else {
- m_counter = new Counter(m_encodingType, m_aSource, m_bSource, reverseDirection);
- m_index = m_counter->GetIndex();
- }
- m_distancePerPulse = 1.0;
- m_pidSource = kDistance;
- wpi_setError(localStatus);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Encoder, m_index, encodingType);
- LiveWindow::GetInstance()->AddSensor("Encoder", m_aSource->GetModuleForRouting(), m_aSource->GetChannelForRouting(), this);
-}
-
-/**
- * Encoder constructor.
- * Construct a Encoder given a and b modules and channels fully specified.
- * @param aModuleNumber The a channel digital input module.
- * @param aChannel The a channel digital input channel.
- * @param bModuleNumber The b channel digital input module.
- * @param bChannel The b channel digital input channel.
- * @param reverseDirection represents the orientation of the encoder and inverts the output values
- * if necessary so forward represents positive values.
- * @param encodingType either k1X, k2X, or k4X to indicate 1X, 2X or 4X decoding. If 4X is
- * selected, then an encoder FPGA object is used and the returned counts will be 4x the encoder
- * spec'd value since all rising and falling edges are counted. If 1X or 2X are selected then
- * a counter object will be used and the returned value will either exactly match the spec'd count
- * or be double (2x) the spec'd count.
- */
-Encoder::Encoder(uint8_t aModuleNumber, uint32_t aChannel,
- uint8_t bModuleNumber, uint32_t bChannel,
- bool reverseDirection, EncodingType encodingType) :
- m_encoder(NULL),
- m_counter(NULL)
-{
- m_aSource = new DigitalInput(aModuleNumber, aChannel);
- m_bSource = new DigitalInput(bModuleNumber, bChannel);
- InitEncoder(reverseDirection, encodingType);
- m_allocatedASource = true;
- m_allocatedBSource = true;
-}
-
-/**
- * Encoder constructor.
- * Construct a Encoder given a and b channels assuming the default module.
- * @param aChannel The a channel digital input channel.
- * @param bChannel The b channel digital input channel.
- * @param reverseDirection represents the orientation of the encoder and inverts the output values
- * if necessary so forward represents positive values.
- * @param encodingType either k1X, k2X, or k4X to indicate 1X, 2X or 4X decoding. If 4X is
- * selected, then an encoder FPGA object is used and the returned counts will be 4x the encoder
- * spec'd value since all rising and falling edges are counted. If 1X or 2X are selected then
- * a counter object will be used and the returned value will either exactly match the spec'd count
- * or be double (2x) the spec'd count.
- */
-Encoder::Encoder(uint32_t aChannel, uint32_t bChannel, bool reverseDirection, EncodingType encodingType) :
- m_encoder(NULL),
- m_counter(NULL)
-{
- m_aSource = new DigitalInput(aChannel);
- m_bSource = new DigitalInput(bChannel);
- InitEncoder(reverseDirection, encodingType);
- m_allocatedASource = true;
- m_allocatedBSource = true;
-}
-
-/**
- * Encoder constructor.
- * Construct a Encoder given a and b channels as digital inputs. This is used in the case
- * where the digital inputs are shared. The Encoder class will not allocate the digital inputs
- * and assume that they already are counted.
- * @param aSource The source that should be used for the a channel.
- * @param bSource the source that should be used for the b channel.
- * @param reverseDirection represents the orientation of the encoder and inverts the output values
- * if necessary so forward represents positive values.
- * @param encodingType either k1X, k2X, or k4X to indicate 1X, 2X or 4X decoding. If 4X is
- * selected, then an encoder FPGA object is used and the returned counts will be 4x the encoder
- * spec'd value since all rising and falling edges are counted. If 1X or 2X are selected then
- * a counter object will be used and the returned value will either exactly match the spec'd count
- * or be double (2x) the spec'd count.
- */
-Encoder::Encoder(DigitalSource *aSource, DigitalSource *bSource, bool reverseDirection, EncodingType encodingType) :
- m_encoder(NULL),
- m_counter(NULL)
-{
- m_aSource = aSource;
- m_bSource = bSource;
- m_allocatedASource = false;
- m_allocatedBSource = false;
- if (m_aSource == NULL || m_bSource == NULL)
- wpi_setWPIError(NullParameter);
- else
- InitEncoder(reverseDirection, encodingType);
-}
-
-/**
- * Encoder constructor.
- * Construct a Encoder given a and b channels as digital inputs. This is used in the case
- * where the digital inputs are shared. The Encoder class will not allocate the digital inputs
- * and assume that they already are counted.
- * @param aSource The source that should be used for the a channel.
- * @param bSource the source that should be used for the b channel.
- * @param reverseDirection represents the orientation of the encoder and inverts the output values
- * if necessary so forward represents positive values.
- * @param encodingType either k1X, k2X, or k4X to indicate 1X, 2X or 4X decoding. If 4X is
- * selected, then an encoder FPGA object is used and the returned counts will be 4x the encoder
- * spec'd value since all rising and falling edges are counted. If 1X or 2X are selected then
- * a counter object will be used and the returned value will either exactly match the spec'd count
- * or be double (2x) the spec'd count.
- */
-Encoder::Encoder(DigitalSource &aSource, DigitalSource &bSource, bool reverseDirection, EncodingType encodingType) :
- m_encoder(NULL),
- m_counter(NULL)
-{
- m_aSource = &aSource;
- m_bSource = &bSource;
- m_allocatedASource = false;
- m_allocatedBSource = false;
- InitEncoder(reverseDirection, encodingType);
-}
-
-/**
- * Free the resources for an Encoder.
- * Frees the FPGA resources associated with an Encoder.
- */
-Encoder::~Encoder()
-{
- if (m_allocatedASource) delete m_aSource;
- if (m_allocatedBSource) delete m_bSource;
- if (m_counter)
- {
- delete m_counter;
- }
- else
- {
- quadEncoders->Free(m_index, this);
- delete m_encoder;
- }
-}
-
-/**
- * Start the Encoder.
- * Starts counting pulses on the Encoder device.
- */
-void Encoder::Start()
-{
- if (StatusIsFatal()) return;
- if (m_counter)
- m_counter->Start();
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_encoder->writeConfig_Enable(1, &localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Stops counting pulses on the Encoder device. The value is not changed.
- */
-void Encoder::Stop()
-{
- if (StatusIsFatal()) return;
- if (m_counter)
- m_counter->Stop();
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_encoder->writeConfig_Enable(0, &localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Gets the raw value from the encoder.
- * The raw value is the actual count unscaled by the 1x, 2x, or 4x scale
- * factor.
- * @return Current raw count from the encoder
- */
-int32_t Encoder::GetRaw()
-{
- if (StatusIsFatal()) return 0;
- int32_t value;
- if (m_counter)
- value = m_counter->Get();
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- value = m_encoder->readOutput_Value(&localStatus);
- wpi_setError(localStatus);
- }
- return value;
-}
-
-/**
- * Gets the current count.
- * Returns the current count on the Encoder.
- * This method compensates for the decoding type.
- *
- * @return Current count from the Encoder adjusted for the 1x, 2x, or 4x scale factor.
- */
-int32_t Encoder::Get()
-{
- if (StatusIsFatal()) return 0;
- return (int32_t) (GetRaw() * DecodingScaleFactor());
-}
-
-/**
- * Reset the Encoder distance to zero.
- * Resets the current count to zero on the encoder.
- */
-void Encoder::Reset()
-{
- if (StatusIsFatal()) return;
- if (m_counter)
- m_counter->Reset();
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_encoder->strobeReset(&localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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 GetRate() in favor of this method. This returns unscaled periods and GetRate() scales using value from SetDistancePerPulse().
- *
- * @return Period in seconds of the most recent pulse.
- */
-double Encoder::GetPeriod()
-{
- if (StatusIsFatal()) return 0.0;
- double measuredPeriod;
- if (m_counter)
- {
- measuredPeriod = m_counter->GetPeriod();
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- tEncoder::tTimerOutput output = m_encoder->readTimerOutput(&localStatus);
- double value;
- if (output.Stalled)
- {
- // Return infinity
- double zero = 0.0;
- value = 1.0 / zero;
- }
- else
- {
- // output.Period is a fixed point number that counts by 2 (24 bits, 25 integer bits)
- value = (double)(output.Period << 1) / (double)output.Count;
- }
- wpi_setError(localStatus);
- measuredPeriod = value * 1.0e-6;
- }
- return measuredPeriod / DecodingScaleFactor();
-}
-
-/**
- * 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 SetMinRate() in favor of this method. This takes unscaled periods and SetMinRate() scales using value from SetDistancePerPulse().
- *
- * @param maxPeriod The maximum time between rising and falling edges before the FPGA will
- * report the device stopped. This is expressed in seconds.
- */
-void Encoder::SetMaxPeriod(double maxPeriod)
-{
- if (StatusIsFatal()) return;
- if (m_counter)
- {
- m_counter->SetMaxPeriod(maxPeriod * DecodingScaleFactor());
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_encoder->writeTimerConfig_StallPeriod((uint32_t)(maxPeriod * 1.0e6 * DecodingScaleFactor()), &localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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.
- * @return True if the encoder is considered stopped.
- */
-bool Encoder::GetStopped()
-{
- if (StatusIsFatal()) return true;
- if (m_counter)
- {
- return m_counter->GetStopped();
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool value = m_encoder->readTimerOutput_Stalled(&localStatus) != 0;
- wpi_setError(localStatus);
- return value;
- }
-}
-
-/**
- * The last direction the encoder value changed.
- * @return The last direction the encoder value changed.
- */
-bool Encoder::GetDirection()
-{
- if (StatusIsFatal()) return false;
- if (m_counter)
- {
- return m_counter->GetDirection();
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool value = m_encoder->readOutput_Direction(&localStatus);
- wpi_setError(localStatus);
- return value;
- }
-}
-
-/**
- * The scale needed to convert a raw counter value into a number of encoder pulses.
- */
-double Encoder::DecodingScaleFactor()
-{
- if (StatusIsFatal()) return 0.0;
- switch (m_encodingType)
- {
- case k1X:
- return 1.0;
- case k2X:
- return 0.5;
- case k4X:
- return 0.25;
- default:
- 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 SetDistancePerPulse().
- */
-double Encoder::GetDistance()
-{
- if (StatusIsFatal()) return 0.0;
- return GetRaw() * DecodingScaleFactor() * m_distancePerPulse;
-}
-
-/**
- * Get the current rate of the encoder.
- * Units are distance per second as scaled by the value from SetDistancePerPulse().
- *
- * @return The current rate of the encoder.
- */
-double Encoder::GetRate()
-{
- if (StatusIsFatal()) return 0.0;
- return (m_distancePerPulse / GetPeriod());
-}
-
-/**
- * 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 SetDistancePerPulse().
- */
-void Encoder::SetMinRate(double minRate)
-{
- if (StatusIsFatal()) return;
- SetMaxPeriod(m_distancePerPulse / 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.
- */
-void Encoder::SetDistancePerPulse(double distancePerPulse)
-{
- if (StatusIsFatal()) return;
- m_distancePerPulse = 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 reverseDirection true if the encoder direction should be reversed
- */
-void Encoder::SetReverseDirection(bool reverseDirection)
-{
- if (StatusIsFatal()) return;
- if (m_counter)
- {
- m_counter->SetReverseDirection(reverseDirection);
- }
- else
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_encoder->writeConfig_Reverse(reverseDirection, &localStatus);
- wpi_setError(localStatus);
- }
-}
-
-
-/**
- * Set the Samples to Average which specifies the number of samples of the timer to
- * average when calculating the period. Perform averaging to account for
- * mechanical imperfections or as oversampling to increase resolution.
- * @param samplesToAverage The number of samples to average from 1 to 127.
- */
-void Encoder::SetSamplesToAverage(int samplesToAverage)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (samplesToAverage < 1 || samplesToAverage > 127)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Average counter values must be between 1 and 127");
- }
- switch (m_encodingType) {
- case k4X:
- m_encoder->writeTimerConfig_AverageSize(samplesToAverage, &localStatus);
- break;
- case k1X:
- case k2X:
- m_counter->SetSamplesToAverage(samplesToAverage);
- break;
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Get the Samples to Average which specifies the number of samples of the timer to
- * average when calculating the period. Perform averaging to account for
- * mechanical imperfections or as oversampling to increase resolution.
- * @return SamplesToAverage The number of samples being averaged (from 1 to 127)
- */
-int Encoder::GetSamplesToAverage()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- int result = 1;
- switch (m_encodingType) {
- case k4X:
- result = m_encoder->readTimerConfig_AverageSize(&localStatus);
- break;
- case k1X:
- case k2X:
- result = m_counter->GetSamplesToAverage();
- break;
- }
- wpi_setError(localStatus);
- return result;
-}
-
-
-
-/**
- * Set which parameter of the encoder you are using as a process control variable.
- *
- * @param pidSource An enum to select the parameter.
- */
-void Encoder::SetPIDSourceParameter(PIDSourceParameter pidSource)
-{
- if (StatusIsFatal()) return;
- m_pidSource = pidSource;
-}
-
-/**
- * Implement the PIDSource interface.
- *
- * @return The current value of the selected source parameter.
- */
-double Encoder::PIDGet()
-{
- if (StatusIsFatal()) return 0.0;
- switch (m_pidSource)
- {
- case kDistance:
- return GetDistance();
- case kRate:
- return GetRate();
- default:
- 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
deleted file mode 100644
index e42ae6a..0000000
--- a/aos/externals/WPILib/WPILib/Encoder.h
+++ /dev/null
@@ -1,84 +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 QUAD_ENCODER_H_
-#define QUAD_ENCODER_H_
-
-#include "ChipObject.h"
-#include "CounterBase.h"
-#include "SensorBase.h"
-#include "Counter.h"
-#include "PIDSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class DigitalSource;
-
-/**
- * Class to read quad encoders.
- * Quadrature encoders are devices that count shaft rotation and can sense direction. The output of
- * the QuadEncoder class is an integer that can count either up or down, and can go negative for
- * reverse direction counting. When creating QuadEncoders, a direction is supplied that changes the
- * sense of the output to make code more readable if the encoder is mounted such that forward movement
- * 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, public LiveWindowSendable
-{
-public:
-
- Encoder(uint32_t aChannel, uint32_t bChannel, bool reverseDirection=false, EncodingType encodingType = k4X);
- Encoder(uint8_t aModuleNumber, uint32_t aChannel, uint8_t bModuleNumber, uint32_t _bChannel, bool reverseDirection=false, EncodingType encodingType = k4X);
- Encoder(DigitalSource *aSource, DigitalSource *bSource, bool reverseDirection=false, EncodingType encodingType = k4X);
- Encoder(DigitalSource &aSource, DigitalSource &bSource, bool reverseDirection=false, EncodingType encodingType = k4X);
- virtual ~Encoder();
-
- // CounterBase interface
- void Start();
- int32_t Get();
- int32_t GetRaw();
- void Reset();
- void Stop();
- double GetPeriod();
- void SetMaxPeriod(double maxPeriod);
- bool GetStopped();
- bool GetDirection();
- double GetDistance();
- double GetRate();
- void SetMinRate(double minRate);
- void SetDistancePerPulse(double distancePerPulse);
- void SetReverseDirection(bool reverseDirection);
- void SetSamplesToAverage(int samplesToAverage);
- int GetSamplesToAverage();
- 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);
- double DecodingScaleFactor();
-
- DigitalSource *m_aSource; // the A phase of the quad encoder
- DigitalSource *m_bSource; // the B phase of the quad encoder
- bool m_allocatedASource; // was the A source allocated locally?
- bool m_allocatedBSource; // was the B source allocated locally?
- tEncoder* m_encoder;
- uint8_t m_index;
- double m_distancePerPulse; // distance of travel for each encoder tick
- 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/Error.cpp b/aos/externals/WPILib/WPILib/Error.cpp
deleted file mode 100644
index 11399ca..0000000
--- a/aos/externals/WPILib/WPILib/Error.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 "Error.h"
-
-#include <taskLib.h>
-#include <cstdio>
-#include <cstring>
-
-#include "NetworkCommunication/FRCComm.h"
-#include "Timer.h"
-#include "Utility.h"
-bool Error::m_stackTraceEnabled = false;
-bool Error::m_suspendOnErrorEnabled = false;
-
-Error::Error()
- : m_code(0)
- , m_lineNumber(0)
- , m_originatingObject(NULL)
- , m_timestamp (0.0)
-{}
-
-Error::~Error()
-{}
-
-/**
- * Clones another error into this if this is currently clear. If not, does
- * nothing.
- * This is necessary because just using "if (!IsClear()) Clone(error)" has a
- * race condition which this method does not.
- * Cloning 2 errors into each other at the same time can lead to deadlocks!
- */
-void Error::CloneIfClear(const Error &error) {
- Synchronized sync(m_semaphore);
- if (IsClear()) {
- DoClone(error);
- }
-}
-
-/**
- * Clones another error into this object.
- * Cloning 2 errors into each other at the same time can lead to deadlocks!
- */
-void Error::Clone(const Error &error) {
- Synchronized sync(m_semaphore);
- DoClone(error);
-}
-
-void Error::DoClone(const Error &error)
-{
- Synchronized sync(error.m_semaphore);
- m_code = error.m_code;
- m_message = error.m_message;
- m_filename = error.m_filename;
- m_function = error.m_function;
- m_lineNumber = error.m_lineNumber;
- m_originatingObject = error.m_originatingObject;
- m_timestamp = error.m_timestamp;
-}
-
-bool Error::IsClear() const { return GetCode() == 0; }
-
-Error::Code Error::GetCode() const
-{ return m_code; }
-
-std::string Error::GetMessage() const
-{ return m_message; }
-
-std::string Error::GetFilename() const
-{ return m_filename; }
-
-std::string Error::GetFunction() const
-{ return m_function; }
-
-uint32_t Error::GetLineNumber() const
-{ return m_lineNumber; }
-
-const ErrorBase* Error::GetOriginatingObject() const
-{ return m_originatingObject; }
-
-double Error::GetTime() const
-{ return m_timestamp; }
-
-void Error::Set(Code code, const char* contextMessage, const char* filename,
- const char* function, uint32_t lineNumber,
- const ErrorBase* originatingObject) {
- Synchronized sync(m_semaphore);
- m_code = code;
- m_message = contextMessage;
- m_filename = filename;
- m_function = function;
- m_lineNumber = lineNumber;
- m_originatingObject = originatingObject;
- m_timestamp = GetTime();
-
- Report();
-
- if (m_suspendOnErrorEnabled) taskSuspend(0 /*self*/);
-}
-
-void Error::Report() const
-{
- // Error string buffers
- char error[256];
- char error_with_code[256];
-
- // Build error strings
- if (m_code != -1 && m_code != 1)
- {
- snprintf(error, sizeof(error),
- "%s: status = %d (0x%08X) %s ...in %s() in %s at line %d\n",
- m_code < 0 ? "ERROR" : "WARNING", (int32_t)m_code,
- (uint32_t)m_code, m_message.c_str(),
- m_function.c_str(), m_filename.c_str(), m_lineNumber);
- snprintf(error_with_code, sizeof(error_with_code),
- "<Code>%ld %s", (int32_t)m_code, error);
- } else {
- snprintf(error, sizeof(error),
- "%s: %s ...in %s() in %s at line %d\n",
- m_code < 0 ? "ERROR" : "WARNING", m_message.c_str(),
- m_function.c_str(), m_filename.c_str(), m_lineNumber);
- strncpy(error_with_code, error, sizeof(error_with_code));
- }
- // TODO: Add logging to disk
-
- // Send to the DriverStation
- setErrorData(error_with_code, strlen(error_with_code), 100);
-
- // Print to console
- printf("\n\n>>>>%s", error);
-
- if (m_stackTraceEnabled)
- {
- printf("-----------<Stack Trace>----------------\n");
- wpi_selfTrace();
- }
-}
-
-void Error::Clear()
-{
- Synchronized sync(m_semaphore);
- m_code = 0;
- m_message = "";
- m_filename = "";
- m_function = "";
- m_lineNumber = 0;
- m_originatingObject = NULL;
- m_timestamp = 0.0;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Error.h b/aos/externals/WPILib/WPILib/Error.h
deleted file mode 100644
index 6ded992..0000000
--- a/aos/externals/WPILib/WPILib/Error.h
+++ /dev/null
@@ -1,81 +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 _ERROR_H
-#define _ERROR_H
-
-#include "Base.h"
-#include "ChipObject/NiRio.h"
-#include <string>
-#include "Synchronized.h"
-
-// Forward declarations
-class ErrorBase;
-
-/**
- * Represents an error or warning.
- *
- * All methods that can change instance data are protected by a lock so
- * that it is safe to call any methods from multiple tasks at the same time.
- */
-class Error
-{
-public:
- // -1 is other error, 1 is other warning.
- typedef tRioStatusCode Code;
-
- Error();
- ~Error();
-
- void CloneIfClear(const Error &error);
- void Clone(const Error &error);
- void Clear();
- void Set(Code code, const char* contextMessage, const char* filename,
- const char *function, uint32_t lineNumber, const ErrorBase* originatingObject);
-
- bool IsClear() const;
- Code GetCode() const;
- // Have to return by value to avoid race conditions using the result for all
- // of these methods.
- std::string GetMessage() const;
- std::string GetFilename() const;
- std::string GetFunction() const;
- uint32_t GetLineNumber() const;
- const ErrorBase* GetOriginatingObject() const;
- double GetTime() const;
-
- // Enable or disable printing out a stack trace on the console whenever there
- // is an error.
- static void EnableStackTrace(bool enable) { m_stackTraceEnabled=enable; }
- // Enable or disable having any task that gets an error suspend itself.
- static void EnableSuspendOnError(bool enable) { m_suspendOnErrorEnabled=enable; }
-
-private:
- // Deals with notifying other code of this error.
- void Report() const;
- // Actually implements cloning.
- // Does not lock m_semaphore, so callers must.
- void DoClone(const Error &error);
-
- Code m_code;
- std::string m_message;
- std::string m_filename;
- std::string m_function;
- uint32_t m_lineNumber;
- const ErrorBase* m_originatingObject;
- double m_timestamp;
- // Used for protecting all modifications to instance data.
- // This means that all non-const methods should lock this for (at least most)
- // of their implementations!
- ReentrantSemaphore m_semaphore;
-
- static bool m_stackTraceEnabled;
- static bool m_suspendOnErrorEnabled;
- DISALLOW_COPY_AND_ASSIGN(Error);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/ErrorBase.cpp b/aos/externals/WPILib/WPILib/ErrorBase.cpp
deleted file mode 100644
index 8f717b9..0000000
--- a/aos/externals/WPILib/WPILib/ErrorBase.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 "ErrorBase.h"
-#include "Synchronized.h"
-#include "nivision.h"
-#define WPI_ERRORS_DEFINE_STRINGS
-#include "WPIErrors.h"
-
-#include <errnoLib.h>
-#include <symLib.h>
-#include <sysSymTbl.h>
-#include <cstdio>
-
-Error ErrorBase::_globalError;
-
-/**
- * @brief Initialize the instance status to 0 for now.
- */
-ErrorBase::ErrorBase()
-{}
-
-ErrorBase::~ErrorBase()
-{}
-
-/**
- * @brief Retrieve the error associated this object.
- * Get the error information associated with this sensor.
- */
-Error& ErrorBase::GetError() const
-{
- return m_error;
-}
-
-/**
- * @brief Clear the current error information associated with this sensor.
- */
-void ErrorBase::ClearError() const
-{
- m_error.Clear();
-}
-
-/**
- * @brief Set error information associated with a C library call that set an
- * error to the "errno" "global variable" (it's really a macro that calls a
- * function under VxWorks so that it's thread safe).
- * Will still set an error even if errno is 0.
- *
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetErrnoError(const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const
-{
- char err[256];
- int errNo = errnoGet();
- if (errNo == 0)
- {
- snprintf(err, sizeof(err), "OK: %s", contextMessage);
- }
- else
- {
- char *statName = new char[MAX_SYS_SYM_LEN + 1];
- int pval;
- SYM_TYPE ptype;
- symFindByValue(statSymTbl, errNo, statName, &pval, &ptype);
- if (pval != errNo)
- snprintf(err, sizeof(err), "Unknown errno 0x%08X: %s", errNo, contextMessage);
- else
- snprintf(err, sizeof(err), "%s (0x%08X): %s", statName, errNo, contextMessage);
- delete [] statName;
- }
-
- // Set the current error information for this object.
- m_error.Set(-1, err, filename, function, lineNumber, this);
-
- _globalError.CloneIfClear(m_error);
-}
-
-/**
- * @brief Set the current error information associated from the nivision Imaq API.
- * Does nothing of success is > 0.
- *
- * @param success The return from the function
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetImaqError(int success, const char *contextMessage, const char* filename, const char* function, uint32_t lineNumber) const
-{
- // If there was an error
- if (success <= 0) {
- char err[256];
- snprintf(err, sizeof(err), "%s: %s", contextMessage, imaqGetErrorText(imaqGetLastError()));
-
- // Set the current error information for this object.
- m_error.Set(imaqGetLastError(), err, filename, function, lineNumber, this);
-
- _globalError.CloneIfClear(m_error);
- }
-}
-
-/**
- * @brief Set the current error information associated with this object.
- * Does nothing if code is 0.
- *
- * @param code The error code
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetError(Error::Code code, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const
-{
- // If there was an error
- if (code != 0) {
- // Set the current error information for this object.
- m_error.Set(code, contextMessage, filename, function, lineNumber, this);
-
- _globalError.CloneIfClear(m_error);
- }
-}
-
-/**
- * @brief Set the current error information associated with this object.
- *
- * @param errorMessage The error message from WPIErrors.h
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetWPIError(const char *errorMessage, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const
-{
- char err[256];
- snprintf(err, sizeof(err), "%s: %s", errorMessage, contextMessage);
-
- // Set the current error information for this object.
- m_error.Set(-1, err, filename, function, lineNumber, this);
-
- _globalError.CloneIfClear(m_error);
-}
-
-void ErrorBase::CloneError(const ErrorBase *rhs) const
-{
- m_error.Clone(rhs->GetError());
-}
-
-/**
-@brief Check if the current error code represents a fatal error.
-
-@return true if the current error is fatal.
-*/
-bool ErrorBase::StatusIsFatal() const
-{
- return m_error.GetCode() < 0;
-}
-
-/**
- * @brief Set the current global error information.
- * Does nothing if code is 0.
- * TODO: think about getting rid of this because nothing uses it any more
- *
- * @param code The error code
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetGlobalError(Error::Code code, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber)
-{
- if (code != 0) {
- // Set the current error information for this object.
- _globalError.Set(code, contextMessage, filename, function, lineNumber, NULL);
- }
-}
-
-/**
- * @brief Set the current global error information.
- *
- * @param errorMessage The error message from WPIErrors.h
- * @param contextMessage A custom message from the code that set the error.
- * @param filename Filename of the error source
- * @param function Function of the error source
- * @param lineNumber Line number of the error source
- */
-void ErrorBase::SetGlobalWPIError(const char *errorMessage, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber)
-{
- char err[256];
- snprintf(err, sizeof(err), "%s: %s", errorMessage, contextMessage);
-
- _globalError.Set(-1, err, filename, function, lineNumber, NULL);
-}
-
-/**
- * Retrieve the global error.
-*/
-const Error& ErrorBase::GetGlobalError()
-{
- return _globalError;
-}
-
diff --git a/aos/externals/WPILib/WPILib/ErrorBase.h b/aos/externals/WPILib/WPILib/ErrorBase.h
deleted file mode 100644
index 7ccac2d..0000000
--- a/aos/externals/WPILib/WPILib/ErrorBase.h
+++ /dev/null
@@ -1,97 +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 _ERROR_BASE_H
-#define _ERROR_BASE_H
-
-#include "Base.h"
-#include "ChipObject/NiRio.h"
-#include "Error.h"
-
-// Helper macros to fill in the context information for you. See the
-// documentation for the methods that they call for details.
-#define wpi_setErrnoErrorWithContext(context) \
- (this->SetErrnoError((context), __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setErrnoError() \
- (wpi_setErrnoErrorWithContext(""))
-#define wpi_setImaqErrorWithContext(code, context) \
- (this->SetImaqError((code), (context), __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setErrorWithContext(code, context) \
- (this->SetError((code), (context), __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setError(code) (wpi_setErrorWithContext(code, ""))
-#define wpi_setStaticErrorWithContext(object, code, context) \
- (object->SetError((code), (context), __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setStaticError(object, code) \
- (wpi_setStaticErrorWithContext(object, code, ""))
-#define wpi_setGlobalErrorWithContext(code, context) \
- (ErrorBase::SetGlobalError((code), (context), \
- __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setGlobalError(code) (wpi_setGlobalErrorWithContext(code, ""))
-#define wpi_setWPIErrorWithContext(error, context) \
- (this->SetWPIError((wpi_error_s_##error), (context), \
- __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setWPIError(error) (wpi_setWPIErrorWithContext(error, ""))
-#define wpi_setStaticWPIErrorWithContext(object, error, context) \
- (object->SetWPIError((wpi_error_s_##error), (context), \
- __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setStaticWPIError(object, error) \
- (wpi_setStaticWPIErrorWithContext(object, error, ""))
-#define wpi_setGlobalWPIErrorWithContext(error, context) \
- (ErrorBase::SetGlobalWPIError((wpi_error_s_##error), (context), \
- __FILE__, __FUNCTION__, __LINE__))
-#define wpi_setGlobalWPIError(error) \
- (wpi_setGlobalWPIErrorWithContext(error, ""))
-
-/**
- * Base class for most objects.
- * ErrorBase is the base class for most objects since it holds the generated error
- * for that object. In addition, there is a single instance of a global error object
- *
- * BE AWARE: This does include a mutable instance variable! This means that even
- * if you make an object const it's not really. However, all modification to
- * that instance variable is protected by a semaphore, so it does not create any
- * thread safety issues.
- *
- * All of the Set*Error methods will update the global error if there is nothing
- * there already.
- */
-class ErrorBase
-{
-public:
- ErrorBase();
- virtual ~ErrorBase();
-
- Error& GetError() const;
- void SetErrnoError(const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const;
- void SetImaqError(int success, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const;
- void SetError(Error::Code code, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const;
- void SetWPIError(const char *errorMessage, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber) const;
- void CloneError(const ErrorBase *rhs) const;
- void ClearError() const;
- bool StatusIsFatal() const;
- static void SetGlobalError(Error::Code code, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber);
- static void SetGlobalWPIError(const char *errorMessage, const char *contextMessage,
- const char* filename, const char* function, uint32_t lineNumber);
- static const Error& GetGlobalError();
-
-protected:
- // This mutable is safe because Error guarantees that all modifications are
- // protected with an internal lock.
- mutable Error m_error;
- // TODO: Replace globalError with a global list of all errors, but make sure
- // that it's thread safe.
- static Error _globalError;
-
-private:
- DISALLOW_COPY_AND_ASSIGN(ErrorBase);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/GearTooth.cpp b/aos/externals/WPILib/WPILib/GearTooth.cpp
deleted file mode 100644
index 118b9f6..0000000
--- a/aos/externals/WPILib/WPILib/GearTooth.cpp
+++ /dev/null
@@ -1,80 +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 "GearTooth.h"
-#include "LiveWindow/LiveWindow.h"
-
-constexpr double GearTooth::kGearToothThreshold;
-
-/**
- * Common code called by the constructors.
- */
-void GearTooth::EnableDirectionSensing(bool directionSensitive)
-{
- if (directionSensitive)
- {
- SetPulseLengthMode(kGearToothThreshold);
- }
-}
-
-/**
- * Construct a GearTooth sensor given a channel.
- *
- * The default module is assumed.
- *
- * @param channel The GPIO channel on the digital module that the sensor is connected to.
- * @param directionSensitive Enable the pulse length decoding in hardware to specify count direction.
- */
-GearTooth::GearTooth(uint32_t channel, bool directionSensitive)
- : Counter(channel)
-{
- EnableDirectionSensing(directionSensitive);
-}
-
-/**
- * Construct a GearTooth sensor given a channel and module.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The GPIO channel on the digital module that the sensor is connected to.
- * @param directionSensitive Enable the pulse length decoding in hardware to specify count direction.
- */
-GearTooth::GearTooth(uint8_t moduleNumber, uint32_t channel, bool directionSensitive)
- : Counter(moduleNumber, channel)
-{
- EnableDirectionSensing(directionSensitive);
- LiveWindow::GetInstance()->AddSensor("GearTooth", moduleNumber, channel, this);
-}
-
-/**
- * Construct a GearTooth sensor given a digital input.
- * This should be used when sharing digial inputs.
- *
- * @param source An object that fully descibes the input that the sensor is connected to.
- * @param directionSensitive Enable the pulse length decoding in hardware to specify count direction.
- */
-GearTooth::GearTooth(DigitalSource *source, bool directionSensitive)
- : Counter(source)
-{
- EnableDirectionSensing(directionSensitive);
-}
-
-GearTooth::GearTooth(DigitalSource &source, bool directionSensitive): Counter(source)
-{
- EnableDirectionSensing(directionSensitive);
-}
-
-/**
- * Free the resources associated with a gear tooth sensor.
- */
-GearTooth::~GearTooth()
-{
-}
-
-
-std::string GearTooth::GetSmartDashboardType() {
- return "GearTooth";
-}
-
diff --git a/aos/externals/WPILib/WPILib/GearTooth.h b/aos/externals/WPILib/WPILib/GearTooth.h
deleted file mode 100644
index c2d6f49..0000000
--- a/aos/externals/WPILib/WPILib/GearTooth.h
+++ /dev/null
@@ -1,34 +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 GEAR_TOOTH_H_
-#define GEAR_TOOTH_H_
-
-#include "Counter.h"
-
-/**
- * Alias for counter class.
- * Implement the gear tooth sensor supplied by FIRST. Currently there is no reverse sensing on
- * the gear tooth sensor, but in future versions we might implement the necessary timing in the
- * FPGA to sense direction.
- */
-class GearTooth : public Counter
-{
-public:
- /// 55 uSec for threshold
- static constexpr double kGearToothThreshold = 55e-6;
- GearTooth(uint32_t channel, bool directionSensitive = false);
- GearTooth(uint8_t moduleNumber, uint32_t channel, bool directionSensitive = false);
- GearTooth(DigitalSource *source, bool directionSensitive = false);
- GearTooth(DigitalSource &source, bool directionSensitive = false);
- virtual ~GearTooth();
- void EnableDirectionSensing(bool directionSensitive);
-
- virtual std::string GetSmartDashboardType();
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/GenericHID.h b/aos/externals/WPILib/WPILib/GenericHID.h
deleted file mode 100644
index 0841d12..0000000
--- a/aos/externals/WPILib/WPILib/GenericHID.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 GENERIC_HID_H
-#define GENERIC_HID_H
-
-#include <vxWorks.h>
-
-/** GenericHID Interface
- */
-class GenericHID
-{
-public:
- typedef enum {
- kLeftHand = 0,
- kRightHand = 1
- } JoystickHand;
-
- virtual ~GenericHID() {}
-
- virtual float GetX(JoystickHand hand = kRightHand) = 0;
- virtual float GetY(JoystickHand hand = kRightHand) = 0;
- virtual float GetZ() = 0;
- virtual float GetTwist() = 0;
- virtual float GetThrottle() = 0;
- virtual float GetRawAxis(uint32_t axis) = 0;
-
- virtual bool GetTrigger(JoystickHand hand = kRightHand) = 0;
- virtual bool GetTop(JoystickHand hand = kRightHand) = 0;
- virtual bool GetBumper(JoystickHand hand = kRightHand) = 0;
- virtual bool GetRawButton(uint32_t button) = 0;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Global.cpp b/aos/externals/WPILib/WPILib/Global.cpp
deleted file mode 100644
index 23c29ec..0000000
--- a/aos/externals/WPILib/WPILib/Global.cpp
+++ /dev/null
@@ -1,155 +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 "Global.h"
-#include "Utility.h"
-
-Global *Global::instance;
-ReentrantSemaphore Global::instance_lock;
-
-Global *Global::GetInstance() {
- Synchronized sync(instance_lock);
- if (instance == NULL) {
- instance = new Global();
- }
- return instance;
-}
-
-Global::Global() {
- tRioStatusCode status = NiFpga_Status_Success;
- global_.reset(tGlobal::create(&status));
- wpi_setError(status);
-
- AddToSingletonList();
-}
-
-Global::~Global() {
- Synchronized sync(instance_lock);
- instance = NULL;
-}
-
-/**
- * Return the FPGA Version number.
- * For now, expect this to be competition year.
- * @return FPGA Version number.
- */
-uint16_t Global::GetFPGAVersion()
-{
- tRioStatusCode status = NiFpga_Status_Success;
- uint16_t version = global_->readVersion(&status);
- wpi_setError(status);
- return version;
-}
-
-/**
- * Return the FPGA Revision number.
- * The format of the revision is 3 numbers.
- * The 12 most significant bits are the Major Revision.
- * the next 8 bits are the Minor Revision.
- * The 12 least significant bits are the Build Number.
- * @return FPGA Revision number.
- */
-uint32_t Global::GetFPGARevision()
-{
- tRioStatusCode status = NiFpga_Status_Success;
- uint32_t revision = global_->readRevision(&status);
- wpi_setError(status);
- return revision;
-}
-
-/**
- * Read the microsecond-resolution timer on the FPGA.
- *
- * @return The current time in microseconds according to the FPGA (since FPGA reset).
- */
-uint32_t Global::GetFPGATime()
-{
- tRioStatusCode status = NiFpga_Status_Success;
- uint32_t time = global_->readLocalTime(&status);
- wpi_setError(status);
- return time;
-}
-
-// RT hardware access functions exported from ni_emb.out
-extern "C"
-{
- int32_t UserSwitchInput(int32_t nSwitch);
- int32_t LedInput(int32_t led);
- int32_t LedOutput(int32_t led, int32_t value);
-}
-
-/**
- * Read the value of the USER1 DIP switch on the cRIO.
- */
-int32_t Global::GetRIOUserSwitch()
-{
- int32_t switchValue = UserSwitchInput(0);
- wpi_assert(switchValue >= 0);
- return switchValue > 0;
-}
-
-/**
- * Set the state of the USER1 status LED on the cRIO.
- */
-void Global::SetRIOUserLED(uint32_t state)
-{
- LedOutput(0, state > 0);
-}
-
-/**
- * Get the current state of the USER1 status LED on the cRIO.
- * @return The curent state of the USER1 LED.
- */
-int32_t Global::GetRIOUserLED()
-{
- return LedInput(0);
-}
-
-/**
- * Toggle the state of the USER1 status LED on the cRIO.
- * @return The new state of the USER1 LED.
- */
-int32_t Global::ToggleRIOUserLED()
-{
- Synchronized sync(led_toggle_lock_);
- int32_t ledState = !GetRIOUserLED();
- SetRIOUserLED(ledState);
- return ledState;
-}
-
-/**
- * Set the state of the FPGA status LED on the cRIO.
- */
-void Global::SetRIO_FPGA_LED(uint32_t state)
-{
- tRioStatusCode status = NiFpga_Status_Success;
- global_->writeFPGA_LED(state, &status);
- wpi_setError(status);
-}
-
-/**
- * Get the current state of the FPGA status LED on the cRIO.
- * @return The curent state of the FPGA LED.
- */
-int32_t Global::GetRIO_FPGA_LED()
-{
- tRioStatusCode status = NiFpga_Status_Success;
- bool ledValue = global_->readFPGA_LED(&status);
- wpi_setError(status);
- return ledValue;
-}
-
-/**
- * Toggle the state of the FPGA status LED on the cRIO.
- * @return The new state of the FPGA LED.
- */
-int32_t Global::ToggleRIO_FPGA_LED()
-{
- Synchronized sync(led_toggle_lock_);
- int32_t ledState = !GetRIO_FPGA_LED();
- SetRIO_FPGA_LED(ledState);
- return ledState;
-}
diff --git a/aos/externals/WPILib/WPILib/Global.h b/aos/externals/WPILib/WPILib/Global.h
deleted file mode 100644
index 869de50..0000000
--- a/aos/externals/WPILib/WPILib/Global.h
+++ /dev/null
@@ -1,42 +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 <memory>
-
-#include "SensorBase.h"
-#include "Synchronized.h"
-#include "ChipObject.h"
-
-#ifndef WPILIB_GLOBAL_H_
-#define WPILIB_GLOBAL_H_
-
-class Global : public SensorBase {
- public:
- static Global *GetInstance();
-
- uint16_t GetFPGAVersion();
- uint32_t GetFPGARevision();
- uint32_t GetFPGATime();
- int32_t GetRIOUserSwitch();
- void SetRIOUserLED(uint32_t state);
- int32_t GetRIOUserLED();
- int32_t ToggleRIOUserLED();
- void SetRIO_FPGA_LED(uint32_t state);
- int32_t GetRIO_FPGA_LED();
- int32_t ToggleRIO_FPGA_LED();
-
- private:
- Global();
- ~Global();
-
- static Global *instance;
- static ReentrantSemaphore instance_lock;
-
- ::std::auto_ptr<tGlobal> global_;
- ReentrantSemaphore led_toggle_lock_;
-};
-
-#endif // WPILIB_GLOBAL_H_
diff --git a/aos/externals/WPILib/WPILib/Gyro.cpp b/aos/externals/WPILib/WPILib/Gyro.cpp
deleted file mode 100644
index af69cf3..0000000
--- a/aos/externals/WPILib/WPILib/Gyro.cpp
+++ /dev/null
@@ -1,248 +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 "Gyro.h"
-#include "AnalogChannel.h"
-#include "AnalogModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-const uint32_t Gyro::kOversampleBits;
-const uint32_t Gyro::kAverageBits;
-constexpr float Gyro::kSamplesPerSecond;
-constexpr float Gyro::kCalibrationSampleTime;
-constexpr float Gyro::kDefaultVoltsPerDegreePerSecond;
-
-/**
- * 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.
- */
-void Gyro::InitGyro()
-{
- m_table = NULL;
- if (!m_analog->IsAccumulatorChannel())
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange,
- "moduleNumber and/or channel (must be accumulator channel)");
- if (m_channelAllocated)
- {
- delete m_analog;
- m_analog = NULL;
- }
- return;
- }
-
- m_voltsPerDegreePerSecond = kDefaultVoltsPerDegreePerSecond;
- m_analog->SetAverageBits(kAverageBits);
- m_analog->SetOversampleBits(kOversampleBits);
- float sampleRate = kSamplesPerSecond *
- (1 << (kAverageBits + kOversampleBits));
- m_analog->GetModule()->SetSampleRate(sampleRate);
- Wait(1.0);
-
- m_analog->InitAccumulator();
- Wait(kCalibrationSampleTime);
-
- int64_t value;
- uint32_t count;
- m_analog->GetAccumulatorOutput(&value, &count);
-
- m_center = (uint32_t)((float)value / (float)count + .5);
-
- m_offset = ((float)value / (float)count) - (float)m_center;
-
- m_analog->SetAccumulatorCenter(m_center);
- m_analog->SetAccumulatorDeadband(0); ///< TODO: compute / parameterize this
- m_analog->ResetAccumulator();
-
- SetPIDSourceParameter(kAngle);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Gyro, m_analog->GetChannel(), m_analog->GetModuleNumber() - 1);
- LiveWindow::GetInstance()->AddSensor("Gyro", m_analog->GetModuleNumber(), m_analog->GetChannel(), this);
-}
-
-/**
- * Gyro constructor given a slot and a channel.
- *
- * @param moduleNumber The analog module the gyro is connected to (1).
- * @param channel The analog channel the gyro is connected to (1 or 2).
- */
-Gyro::Gyro(uint8_t moduleNumber, uint32_t channel)
-{
- m_analog = new AnalogChannel(moduleNumber, channel);
- m_channelAllocated = true;
- InitGyro();
-}
-
-/**
- * Gyro constructor with only a channel.
- *
- * Use the default analog module slot.
- *
- * @param channel The analog channel the gyro is connected to.
- */
-Gyro::Gyro(uint32_t channel)
-{
- m_analog = new AnalogChannel(channel);
- m_channelAllocated = true;
- InitGyro();
-}
-
-/**
- * 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.
- */
-Gyro::Gyro(AnalogChannel *channel)
-{
- m_analog = channel;
- m_channelAllocated = false;
- if (channel == NULL)
- {
- wpi_setWPIError(NullParameter);
- }
- else
- {
- InitGyro();
- }
-}
-
-Gyro::Gyro(AnalogChannel &channel)
-{
- m_analog = &channel;
- m_channelAllocated = false;
- InitGyro();
-}
-
-/**
- * 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.
- */
-void Gyro::Reset()
-{
- m_analog->ResetAccumulator();
-}
-
-/**
- * Delete (free) the accumulator and the analog components used for the gyro.
- */
-Gyro::~Gyro()
-{
- if (m_channelAllocated)
- delete m_analog;
-}
-
-/**
- * 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.
- *
- * @return the current heading of the robot in degrees. This heading is based on integration
- * of the returned rate from the gyro.
- */
-float Gyro::GetAngle( void )
-{
- int64_t rawValue;
- uint32_t count;
- m_analog->GetAccumulatorOutput(&rawValue, &count);
-
- int64_t value = rawValue - (int64_t)((float)count * m_offset);
-
- double scaledValue = value * 1e-9 * (double)m_analog->GetLSBWeight() * (double)(1 << m_analog->GetAverageBits()) /
- (m_analog->GetModule()->GetSampleRate() * m_voltsPerDegreePerSecond);
-
- return (float)scaledValue;
-}
-
-
-/**
- * Return the rate of rotation of the gyro
- *
- * The rate is based on the most recent reading of the gyro analog value
- *
- * @return the current rate in degrees per second
- */
-double Gyro::GetRate( void )
-{
- return (m_analog->GetAverageValue() - ((double)m_center + m_offset)) * 1e-9 * m_analog->GetLSBWeight()
- / ((1 << m_analog->GetOversampleBits()) * m_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 voltsPerDegreePerSecond The type of gyro specified as the voltage that represents one degree/second.
- */
-void Gyro::SetSensitivity( float voltsPerDegreePerSecond )
-{
- m_voltsPerDegreePerSecond = voltsPerDegreePerSecond;
-}
-
-void Gyro::SetPIDSourceParameter(PIDSourceParameter pidSource)
-{
- if(pidSource == 0 || pidSource > 2)
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Gyro pidSource");
- m_pidSource = pidSource;
-}
-
-/**
- * Get the angle in degrees for the PIDSource base object.
- *
- * @return The angle in degrees.
- */
-double Gyro::PIDGet()
-{
- switch(m_pidSource){
- case kRate:
- return GetRate();
- case kAngle:
- return GetAngle();
- default:
- return 0;
- }
-}
-
-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
deleted file mode 100644
index fd5be72..0000000
--- a/aos/externals/WPILib/WPILib/Gyro.h
+++ /dev/null
@@ -1,69 +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 GYRO_H_
-#define GYRO_H_
-
-#include "SensorBase.h"
-#include "PIDSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class AnalogChannel;
-class AnalogModule;
-
-/**
- * Use a rate gyro to return the robots heading relative to a starting position.
- * The Gyro class tracks the robots heading based on the starting position. As the robot
- * rotates the new heading is computed by integrating the rate of rotation returned
- * by the sensor. When the class is instantiated, it does a short calibration routine
- * where it samples the gyro while at rest to determine the default offset. This is
- * subtracted from each sample to determine the heading. This gyro class must be used
- * 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, public LiveWindowSendable
-{
-public:
- static const uint32_t kOversampleBits = 10;
- static const uint32_t kAverageBits = 0;
- static constexpr float kSamplesPerSecond = 50.0;
- static constexpr float kCalibrationSampleTime = 5.0;
- static constexpr float kDefaultVoltsPerDegreePerSecond = 0.007;
-
- Gyro(uint8_t moduleNumber, uint32_t channel);
- explicit Gyro(uint32_t channel);
- explicit Gyro(AnalogChannel *channel);
- explicit Gyro(AnalogChannel &channel);
- virtual ~Gyro();
- virtual float GetAngle();
- virtual double GetRate();
- void SetSensitivity(float voltsPerDegreePerSecond);
- void SetPIDSourceParameter(PIDSourceParameter pidSource);
- virtual void Reset();
-
- // PIDSource interface
- double PIDGet();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- void InitGyro();
-
- AnalogChannel *m_analog;
- float m_voltsPerDegreePerSecond;
- float m_offset;
- bool m_channelAllocated;
- uint32_t m_center;
- PIDSourceParameter m_pidSource;
-
- ITable *m_table;
-};
-#endif
diff --git a/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp b/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp
deleted file mode 100644
index 39850dc..0000000
--- a/aos/externals/WPILib/WPILib/HiTechnicColorSensor.cpp
+++ /dev/null
@@ -1,388 +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 "HiTechnicColorSensor.h"
-#include "DigitalModule.h"
-#include "I2C.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "networktables2/type/NumberArray.h"
-#include "WPIErrors.h"
-
-const uint8_t HiTechnicColorSensor::kAddress;
-const uint8_t HiTechnicColorSensor::kManufacturerBaseRegister;
-const uint8_t HiTechnicColorSensor::kManufacturerSize;
-const uint8_t HiTechnicColorSensor::kSensorTypeBaseRegister;
-const uint8_t HiTechnicColorSensor::kSensorTypeSize;
-const uint8_t HiTechnicColorSensor::kModeRegister;
-const uint8_t HiTechnicColorSensor::kColorRegister;
-const uint8_t HiTechnicColorSensor::kRedRegister;
-const uint8_t HiTechnicColorSensor::kGreenRegister;
-const uint8_t HiTechnicColorSensor::kBlueRegister;
-const uint8_t HiTechnicColorSensor::kRawRedRegister;
-const uint8_t HiTechnicColorSensor::kRawGreenRegister;
-const uint8_t HiTechnicColorSensor::kRawBlueRegister;
-
-/**
- * Constructor.
- *
- * @param moduleNumber The digital module that the sensor is plugged into (1 or 2).
- */
-HiTechnicColorSensor::HiTechnicColorSensor(uint8_t moduleNumber)
- : m_i2c (NULL)
-{
- m_table = NULL;
- DigitalModule *module = DigitalModule::GetInstance(moduleNumber);
- m_mode = kActive;
-
- if (module)
- {
- m_i2c = module->GetI2C(kAddress);
-
- // Verify Sensor
- const uint8_t kExpectedManufacturer[] = "HiTechnc";
- const uint8_t 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_t HiTechnicColorSensor::GetColor()
-{
- uint8_t 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_t HiTechnicColorSensor::GetRed()
-{
- uint8_t 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_t HiTechnicColorSensor::GetGreen()
-{
- uint8_t 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_t HiTechnicColorSensor::GetBlue()
-{
- uint8_t 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_t colors[3] = {0,0,0};
- RGB result;
-
- if(m_mode != kActive)
- {
- SetMode(kActive);
- }
- if(m_i2c)
- {
- m_i2c->Read(kRawRedRegister, sizeof(colors), (uint8_t*)&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_t HiTechnicColorSensor::GetRawRed()
-{
- uint16_t rawRed = 0;
-
- if(m_mode == kActive)
- {
- SetMode(kRaw);
- }
- if (m_i2c)
- {
- m_i2c->Read(kRawRedRegister, sizeof(rawRed), (uint8_t *)&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_t HiTechnicColorSensor::GetRawGreen()
-{
- uint16_t rawGreen = 0;
-
- if(m_mode == kActive)
- {
- SetMode(kRaw);
- }
- if (m_i2c)
- {
- m_i2c->Read(kRawGreenRegister, sizeof(rawGreen), (uint8_t *)&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_t HiTechnicColorSensor::GetRawBlue()
-{
- uint16_t rawBlue = 0;
-
- if(m_mode == kActive)
- {
- SetMode(kRaw);
- }
- if (m_i2c)
- {
- m_i2c->Read(kRawBlueRegister, sizeof(rawBlue), (uint8_t *)&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_t 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_t*)&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_t)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());
- NumberArray* rgb = new NumberArray();
- rgb->add(GetRed());
- rgb->add(GetGreen());
- rgb->add(GetBlue());
- m_table->PutValue("RGB", *rgb);
- delete rgb;
- }
-}
-
-/**
- * {@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
deleted file mode 100644
index e61fcb7..0000000
--- a/aos/externals/WPILib/WPILib/HiTechnicColorSensor.h
+++ /dev/null
@@ -1,78 +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 __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_t red;
- uint16_t blue;
- uint16_t green;
- }RGB;
- explicit HiTechnicColorSensor(uint8_t moduleNumber);
- virtual ~HiTechnicColorSensor();
- uint8_t GetColor();
- uint8_t GetRed();
- uint8_t GetGreen();
- uint8_t GetBlue();
- RGB GetRGB();
- uint16_t GetRawRed();
- uint16_t GetRawGreen();
- uint16_t 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_t kAddress = 0x02;
- static const uint8_t kManufacturerBaseRegister = 0x08;
- static const uint8_t kManufacturerSize = 0x08;
- static const uint8_t kSensorTypeBaseRegister = 0x10;
- static const uint8_t kSensorTypeSize = 0x08;
- static const uint8_t kModeRegister = 0x41;
- static const uint8_t kColorRegister = 0x42;
- static const uint8_t kRedRegister = 0x43;
- static const uint8_t kGreenRegister = 0x44;
- static const uint8_t kBlueRegister = 0x45;
- static const uint8_t kRawRedRegister = 0x43;
- static const uint8_t kRawGreenRegister = 0x45;
- static const uint8_t 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
deleted file mode 100644
index 2a98aa9..0000000
--- a/aos/externals/WPILib/WPILib/HiTechnicCompass.cpp
+++ /dev/null
@@ -1,108 +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 "HiTechnicCompass.h"
-#include "DigitalModule.h"
-#include "I2C.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-const uint8_t HiTechnicCompass::kAddress;
-const uint8_t HiTechnicCompass::kManufacturerBaseRegister;
-const uint8_t HiTechnicCompass::kManufacturerSize;
-const uint8_t HiTechnicCompass::kSensorTypeBaseRegister;
-const uint8_t HiTechnicCompass::kSensorTypeSize;
-const uint8_t HiTechnicCompass::kHeadingRegister;
-
-/**
- * Constructor.
- *
- * @param moduleNumber The digital module that the sensor is plugged into (1 or 2).
- */
-HiTechnicCompass::HiTechnicCompass(uint8_t moduleNumber)
- : m_i2c (NULL)
-{
- m_table = NULL;
- DigitalModule *module = DigitalModule::GetInstance(moduleNumber);
- if (module)
- {
- m_i2c = module->GetI2C(kAddress);
-
- // Verify Sensor
- const uint8_t kExpectedManufacturer[] = "HiTechnc";
- const uint8_t kExpectedSensorType[] = "Compass ";
- 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_HiTechnicCompass, moduleNumber - 1);
- LiveWindow::GetInstance()->AddSensor("HiTechnicCompass", moduleNumber, 0, this);
- }
-}
-
-/**
- * Destructor.
- */
-HiTechnicCompass::~HiTechnicCompass()
-{
- delete m_i2c;
- m_i2c = NULL;
-}
-
-/**
- * Get the compass angle in degrees.
- *
- * The resolution of this reading is 1 degree.
- *
- * @return Angle of the compass in degrees.
- */
-float HiTechnicCompass::GetAngle()
-{
- uint16_t heading = 0;
- if (m_i2c)
- {
- m_i2c->Read(kHeadingRegister, sizeof(heading), (uint8_t *)&heading);
-
- // Sensor is little endian... swap bytes
- heading = (heading >> 8) | (heading << 8);
- }
- 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
deleted file mode 100644
index de7de61..0000000
--- a/aos/externals/WPILib/WPILib/HiTechnicCompass.h
+++ /dev/null
@@ -1,55 +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 __HiTechnicCompass_h__
-#define __HiTechnicCompass_h__
-
-#include "SensorBase.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class I2C;
-
-/**
- * HiTechnic NXT Compass.
- *
- * This class alows access to a HiTechnic NXT Compass on an I2C bus.
- * These sensors to 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
- *
- * @todo Implement a calibration method for the sensor.
- */
-class HiTechnicCompass : public SensorBase, public LiveWindowSendable
-{
-public:
- explicit HiTechnicCompass(uint8_t moduleNumber);
- virtual ~HiTechnicCompass();
- float GetAngle();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- static const uint8_t kAddress = 0x02;
- static const uint8_t kManufacturerBaseRegister = 0x08;
- static const uint8_t kManufacturerSize = 0x08;
- static const uint8_t kSensorTypeBaseRegister = 0x10;
- static const uint8_t kSensorTypeSize = 0x08;
- static const uint8_t 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
deleted file mode 100644
index a4b1b85..0000000
--- a/aos/externals/WPILib/WPILib/I2C.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 "I2C.h"
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <taskLib.h>
-
-SEM_ID I2C::m_semaphore = NULL;
-uint32_t I2C::m_objCount = 0;
-
-/**
- * Constructor.
- *
- * @param module The Digital Module to which the device is conneted.
- * @param deviceAddress The address of the device on the I2C bus.
- */
-I2C::I2C(DigitalModule *module, uint8_t deviceAddress)
- : m_module (module)
- , m_deviceAddress (deviceAddress)
- , m_compatibilityMode (true)
-{
- if (m_semaphore == NULL)
- {
- m_semaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
- }
- m_objCount++;
-
- nUsageReporting::report(nUsageReporting::kResourceType_I2C, deviceAddress, module->GetNumber() - 1);
-}
-
-/**
- * Destructor.
- */
-I2C::~I2C()
-{
- m_objCount--;
- if (m_objCount <= 0)
- {
- semDelete(m_semaphore);
- m_semaphore = NULL;
- }
-}
-
-/**
- * Generic transaction.
- *
- * This is a lower-level interface to the I2C hardware giving you more control over each transaction.
- *
- * @param dataToSend Buffer of data to send as part of the transaction.
- * @param sendSize Number of bytes to send as part of the transaction. [0..6]
- * @param dataReceived Buffer to read data into.
- * @param receiveSize Number of byted to read from the device. [0..7]
- * @return Transfer Aborted... false for success, true for aborted.
- */
-bool I2C::Transaction(uint8_t *dataToSend, uint8_t sendSize, uint8_t *dataReceived, uint8_t receiveSize)
-{
- if (sendSize > 6)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "sendSize");
- return true;
- }
- if (receiveSize > 7)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "receiveSize");
- return true;
- }
-
- uint32_t data=0;
- uint32_t dataHigh=0;
- uint32_t i;
- for(i=0; i<sendSize && i<sizeof(data); i++)
- {
- data |= (uint32_t)dataToSend[i] << (8*i);
- }
- for(; i<sendSize; i++)
- {
- dataHigh |= (uint32_t)dataToSend[i] << (8*(i-sizeof(data)));
- }
-
- bool aborted = true;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(m_semaphore);
- m_module->m_fpgaDIO->writeI2CConfig_Address(m_deviceAddress, &localStatus);
- m_module->m_fpgaDIO->writeI2CConfig_BytesToWrite(sendSize, &localStatus);
- m_module->m_fpgaDIO->writeI2CConfig_BytesToRead(receiveSize, &localStatus);
- if (sendSize > 0) m_module->m_fpgaDIO->writeI2CDataToSend(data, &localStatus);
- if (sendSize > sizeof(data)) m_module->m_fpgaDIO->writeI2CConfig_DataToSendHigh(dataHigh, &localStatus);
- m_module->m_fpgaDIO->writeI2CConfig_BitwiseHandshake(m_compatibilityMode, &localStatus);
- uint8_t transaction = m_module->m_fpgaDIO->readI2CStatus_Transaction(&localStatus);
- m_module->m_fpgaDIO->strobeI2CStart(&localStatus);
- while(transaction == m_module->m_fpgaDIO->readI2CStatus_Transaction(&localStatus)) taskDelay(1);
- while(!m_module->m_fpgaDIO->readI2CStatus_Done(&localStatus)) taskDelay(1);
- aborted = m_module->m_fpgaDIO->readI2CStatus_Aborted(&localStatus);
- if (receiveSize > 0) data = m_module->m_fpgaDIO->readI2CDataReceived(&localStatus);
- if (receiveSize > sizeof(data)) dataHigh = m_module->m_fpgaDIO->readI2CStatus_DataReceivedHigh(&localStatus);
- }
- wpi_setError(localStatus);
-
- for(i=0; i<receiveSize && i<sizeof(data); i++)
- {
- dataReceived[i] = (data >> (8*i)) & 0xFF;
- }
- for(; i<receiveSize; i++)
- {
- dataReceived[i] = (dataHigh >> (8*(i-sizeof(data)))) & 0xFF;
- }
- return aborted;
-}
-
-/**
- * Attempt to address a device on the I2C bus.
- *
- * This allows you to figure out if there is a device on the I2C bus that
- * responds to the address specified in the constructor.
- *
- * @return Transfer Aborted... false for success, true for aborted.
- */
-bool I2C::AddressOnly()
-{
- return Transaction(NULL, 0, NULL, 0);
-}
-
-/**
- * Execute a write transaction with the device.
- *
- * Write a single byte to a register on a device and wait until the
- * transaction is complete.
- *
- * @param registerAddress The address of the register on the device to be written.
- * @param data The byte to write to the register on the device.
- * @return Transfer Aborted... false for success, true for aborted.
- */
-bool I2C::Write(uint8_t registerAddress, uint8_t data)
-{
- uint8_t buffer[2];
- buffer[0] = registerAddress;
- buffer[1] = data;
- return Transaction(buffer, sizeof(buffer), NULL, 0);
-}
-
-/**
- * Execute a read transaction with the device.
- *
- * Read 1 to 7 bytes from a device.
- * Most I2C devices will auto-increment the register pointer internally
- * allowing you to read up to 7 consecutive registers on a device in a
- * single transaction.
- *
- * @param registerAddress The register to read first in the transaction.
- * @param count The number of bytes to read in the transaction. [1..7]
- * @param buffer A pointer to the array of bytes to store the data read from the device.
- * @return Transfer Aborted... false for success, true for aborted.
- */
-bool I2C::Read(uint8_t registerAddress, uint8_t count, uint8_t *buffer)
-{
- if (count < 1 || count > 7)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "count");
- return true;
- }
- if (buffer == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "buffer");
- return true;
- }
-
- return Transaction(®isterAddress, sizeof(registerAddress), buffer, count);
-}
-
-/**
- * Send a broadcast write to all devices on the I2C bus.
- *
- * This is not currently implemented!
- *
- * @param registerAddress The register to write on all devices on the bus.
- * @param data The value to write to the devices.
- */
-void I2C::Broadcast(uint8_t registerAddress, uint8_t data)
-{
-}
-
-/**
- * SetCompatibilityMode
- *
- * Enables bitwise clock skewing detection. This will reduce the I2C interface speed,
- * but will allow you to communicate with devices that skew the clock at abnormal times.
- * Compatability mode is enabled by default.
- * @param enable Enable compatibility mode for this sensor or not.
- */
-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);
-}
-
-/**
- * Verify that a device's registers contain expected values.
- *
- * Most devices will have a set of registers that contain a known value that
- * can be used to identify them. This allows an I2C device driver to easily
- * verify that the device contains the expected value.
- *
- * @pre The device must support and be configured to use register auto-increment.
- *
- * @param registerAddress The base register to start reading from the device.
- * @param count The size of the field to be verified.
- * @param expected A buffer containing the values expected from the device.
- */
-bool I2C::VerifySensor(uint8_t registerAddress, uint8_t count, const uint8_t *expected)
-{
- // TODO: Make use of all 7 read bytes
- uint8_t deviceData[4];
- for (uint8_t i=0, curRegisterAddress = registerAddress; i < count; i+=4, curRegisterAddress+=4)
- {
- uint8_t toRead = count - i < 4 ? count - i : 4;
- // Read the chunk of data. Return false if the sensor does not respond.
- if (Read(curRegisterAddress, toRead, deviceData)) return false;
-
- for (uint8_t j=0; j<toRead; j++)
- {
- if(deviceData[j] != expected[i + j]) return false;
- }
- }
- return true;
-}
-
diff --git a/aos/externals/WPILib/WPILib/I2C.h b/aos/externals/WPILib/WPILib/I2C.h
deleted file mode 100644
index f200737..0000000
--- a/aos/externals/WPILib/WPILib/I2C.h
+++ /dev/null
@@ -1,47 +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 I2C_H
-#define I2C_H
-
-#include "SensorBase.h"
-
-class DigitalModule;
-
-/**
- * I2C bus interface class.
- *
- * This class is intended to be used by sensor (and other I2C device) drivers.
- * It probably should not be used directly.
- *
- * It is constructed by calling DigitalModule::GetI2C() on a DigitalModule object.
- */
-class I2C : SensorBase
-{
- friend class DigitalModule;
-public:
- virtual ~I2C();
- bool Transaction(uint8_t *dataToSend, uint8_t sendSize, uint8_t *dataReceived, uint8_t receiveSize);
- bool AddressOnly();
- bool Write(uint8_t registerAddress, uint8_t data);
- bool Read(uint8_t registerAddress, uint8_t count, uint8_t *data);
- void Broadcast(uint8_t registerAddress, uint8_t data);
- void SetCompatibilityMode(bool enable);
-
- bool VerifySensor(uint8_t registerAddress, uint8_t count, const uint8_t *expected);
-private:
- static SEM_ID m_semaphore;
- static uint32_t m_objCount;
-
- I2C(DigitalModule *module, uint8_t deviceAddress);
-
- DigitalModule *m_module;
- uint8_t m_deviceAddress;
- bool m_compatibilityMode;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Interfaces/Potentiometer.h b/aos/externals/WPILib/WPILib/Interfaces/Potentiometer.h
deleted file mode 100644
index bda5049..0000000
--- a/aos/externals/WPILib/WPILib/Interfaces/Potentiometer.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _POTENTIOMETER_H
-#define _POTENTIOMETER_H
-
-#include "PIDSource.h"
-
-class Potentiometer : public PIDSource {
-public:
- virtual double Get() = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/InterruptableSensorBase.cpp b/aos/externals/WPILib/WPILib/InterruptableSensorBase.cpp
deleted file mode 100644
index ad9aa4b..0000000
--- a/aos/externals/WPILib/WPILib/InterruptableSensorBase.cpp
+++ /dev/null
@@ -1,98 +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 "InterruptableSensorBase.h"
-#include "Utility.h"
-
-InterruptableSensorBase::InterruptableSensorBase()
-{
- m_manager = NULL;
- m_interrupt = NULL;
-}
-
-InterruptableSensorBase::~InterruptableSensorBase()
-{
-
-}
-
-void InterruptableSensorBase::AllocateInterrupts(bool watcher)
-{
- wpi_assert(m_interrupt == NULL);
- wpi_assert(m_manager == NULL);
- // Expects the calling leaf class to allocate an interrupt index.
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_interrupt = tInterrupt::create(m_interruptIndex, &localStatus);
- m_interrupt->writeConfig_WaitForAck(false, &localStatus);
- m_manager = new tInterruptManager(1 << m_interruptIndex, watcher, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Cancel interrupts on this device.
- * This deallocates all the chipobject structures and disables any interrupts.
- */
-void InterruptableSensorBase::CancelInterrupts()
-{
- wpi_assert(m_manager != NULL);
- wpi_assert(m_interrupt != NULL);
- delete m_interrupt;
- delete m_manager;
- m_interrupt = NULL;
- m_manager = NULL;
-}
-
-/**
- * In synchronous mode, wait for the defined interrupt to occur.
- * @param timeout Timeout in seconds
- */
-void InterruptableSensorBase::WaitForInterrupt(float timeout)
-{
- wpi_assert(m_manager != NULL);
- wpi_assert(m_interrupt != NULL);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_manager->watch((int32_t)(timeout * 1e3), &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Enable interrupts to occur on this input.
- * Interrupts are disabled when the RequestInterrupt call is made. This gives time to do the
- * setup of the other options before starting to field interrupts.
- */
-void InterruptableSensorBase::EnableInterrupts()
-{
- wpi_assert(m_manager != NULL);
- wpi_assert(m_interrupt != NULL);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_manager->enable(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Disable Interrupts without without deallocating structures.
- */
-void InterruptableSensorBase::DisableInterrupts()
-{
- wpi_assert(m_manager != NULL);
- wpi_assert(m_interrupt != NULL);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_manager->disable(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Return the timestamp for the interrupt that occurred most recently.
- * This is in the same time domain as GetClock().
- * @return Timestamp in seconds since boot.
- */
-double InterruptableSensorBase::ReadInterruptTimestamp()
-{
- wpi_assert(m_interrupt != NULL);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t timestamp = m_interrupt->readTimeStamp(&localStatus);
- wpi_setError(localStatus);
- return timestamp * 1e-6;
-}
diff --git a/aos/externals/WPILib/WPILib/InterruptableSensorBase.h b/aos/externals/WPILib/WPILib/InterruptableSensorBase.h
deleted file mode 100644
index 96a5309..0000000
--- a/aos/externals/WPILib/WPILib/InterruptableSensorBase.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 INTERRUPTABLE_SENSORBASE_H_
-#define INTERRUPTABLE_SENSORBASE_H_
-
-#include "ChipObject.h"
-#include "SensorBase.h"
-
-class InterruptableSensorBase : public SensorBase
-{
-public:
- InterruptableSensorBase();
- virtual ~InterruptableSensorBase();
- virtual void RequestInterrupts(tInterruptHandler handler, void *param) = 0; ///< Asynchronus handler version.
- virtual void RequestInterrupts() = 0; ///< Synchronus Wait version.
- virtual void CancelInterrupts(); ///< Free up the underlying chipobject functions.
- virtual void WaitForInterrupt(float timeout); ///< Synchronus version.
- virtual void EnableInterrupts(); ///< Enable interrupts - after finishing setup.
- virtual void DisableInterrupts(); ///< Disable, but don't deallocate.
- virtual double ReadInterruptTimestamp(); ///< Return the timestamp for the interrupt that occurred.
-protected:
- tInterrupt *m_interrupt;
- tInterruptManager *m_manager;
- uint32_t m_interruptIndex;
- void AllocateInterrupts(bool watcher);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/IterativeRobot.cpp b/aos/externals/WPILib/WPILib/IterativeRobot.cpp
deleted file mode 100644
index c3220cf..0000000
--- a/aos/externals/WPILib/WPILib/IterativeRobot.cpp
+++ /dev/null
@@ -1,337 +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 "IterativeRobot.h"
-
-#include "DriverStation.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include <taskLib.h>
-#include "SmartDashboard/SmartDashboard.h"
-#include "LiveWindow/LiveWindow.h"
-#include "networktables/NetworkTable.h"
-
-constexpr double IterativeRobot::kDefaultPeriod;
-
-/**
- * Constructor for RobotIterativeBase
- *
- * The constructor initializes the instance variables for the robot to indicate
- * 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);
-}
-
-/**
- * Free the resources for a RobotIterativeBase class.
- */
-IterativeRobot::~IterativeRobot()
-{
-}
-
-/**
- * Set the period for the periodic functions.
- *
- * @param period The period of the periodic function calls. 0.0 means sync to driver station control data.
- */
-void IterativeRobot::SetPeriod(double period)
-{
- if (period > 0.0)
- {
- // Not syncing with the DS, so start the timer for the main loop
- m_mainLoopTimer.Reset();
- m_mainLoopTimer.Start();
- }
- else
- {
- // Syncing with the DS, don't need the timer
- m_mainLoopTimer.Stop();
- }
- m_period = period;
-}
-
-/**
- * Get the period for the periodic functions.
- * Returns 0.0 if configured to synchronize with DS control data packets.
- * @return Period of the periodic function calls
- */
-double IterativeRobot::GetPeriod()
-{
- return m_period;
-}
-
-/**
- * Get the number of loops per second for the IterativeRobot
- * @return Frequency of the periodic function calls
- */
-double IterativeRobot::GetLoopsPerSec()
-{
- // If syncing to the driver station, we don't know the rate,
- // so guess something close.
- if (m_period <= 0.0)
- return 50.0;
- return 1.0 / m_period;
-}
-
-/**
- * Provide an alternate "main loop" via StartCompetition().
- *
- * This specific StartCompetition() implements "main loop" behavior like that of the FRC
- * control system in 2008 and earlier, with a primary (slow) loop that is
- * called periodically.
- */
-void IterativeRobot::StartCompetition()
-{
- 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
- if (IsDisabled())
- {
- // call DisabledInit() if we are now just entering disabled mode from
- // 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_testInitialized = false;
- }
- if (NextPeriodReady())
- {
- FRC_NetworkCommunication_observeUserProgramDisabled();
- DisabledPeriodic();
- }
- }
- else if (IsAutonomous())
- {
- // call AutonomousInit() if we are now just entering autonomous mode from
- // 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_testInitialized = false;
- }
- if (NextPeriodReady())
- {
- FRC_NetworkCommunication_observeUserProgramAutonomous();
- AutonomousPeriodic();
- }
- }
- 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_testInitialized = false;
- Scheduler::GetInstance()->SetEnabled(true);
- }
- if (NextPeriodReady())
- {
- FRC_NetworkCommunication_observeUserProgramTeleop();
- TeleopPeriodic();
- }
- }
- // wait for driver station data so the loop doesn't hog the CPU
- m_ds->WaitForData();
- }
-}
-
-/**
- * Determine if the periodic functions should be called.
- *
- * If m_period > 0.0, call the periodic function every m_period as compared
- * to Timer.Get(). If m_period == 0.0, call the periodic functions whenever
- * a packet is received from the Driver Station, or about every 20ms.
- *
- * @todo Decide what this should do if it slips more than one cycle.
- */
-
-bool IterativeRobot::NextPeriodReady()
-{
- if (m_period > 0.0)
- {
- return m_mainLoopTimer.HasPeriodPassed(m_period);
- }
- else
- {
- return m_ds->IsNewControlData();
- }
-}
-
-/**
- * Robot-wide initialization code should go here.
- *
- * Users 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.
- */
-void IterativeRobot::RobotInit()
-{
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
-}
-
-/**
- * Initialization code for disabled mode should go here.
- *
- * Users should override this method for initialization code which will be called each time
- * the robot enters disabled mode.
- */
-void IterativeRobot::DisabledInit()
-{
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
-}
-
-/**
- * Initialization code for autonomous mode should go here.
- *
- * Users should override this method for initialization code which will be called each time
- * the robot enters autonomous mode.
- */
-void IterativeRobot::AutonomousInit()
-{
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
-}
-
-/**
- * Initialization code for teleop mode should go here.
- *
- * Users should override this method for initialization code which will be called each time
- * the robot enters teleop mode.
- */
-void IterativeRobot::TeleopInit()
-{
- 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__);
-}
-
-/**
- * Periodic code for disabled mode should go here.
- *
- * Users should override this method for code which will be called periodically at a regular
- * rate while the robot is in disabled mode.
- */
-void IterativeRobot::DisabledPeriodic()
-{
- static bool firstRun = true;
- if (firstRun)
- {
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
- firstRun = false;
- }
- taskDelay(1);
-}
-
-/**
- * Periodic code for autonomous mode should go here.
- *
- * Users should override this method for code which will be called periodically at a regular
- * rate while the robot is in autonomous mode.
- */
-void IterativeRobot::AutonomousPeriodic()
-{
- static bool firstRun = true;
- if (firstRun)
- {
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
- firstRun = false;
- }
- taskDelay(1);
-}
-
-/**
- * Periodic code for teleop mode should go here.
- *
- * Users should override this method for code which will be called periodically at a regular
- * rate while the robot is in teleop mode.
- */
-void IterativeRobot::TeleopPeriodic()
-{
- static bool firstRun = true;
- if (firstRun)
- {
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
- firstRun = false;
- }
- taskDelay(1);
-}
-
-/**
- * Periodic code for test mode should go here.
- *
- * 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::TestPeriodic()
-{
- static bool firstRun = true;
- if (firstRun)
- {
- printf("Default %s() method... Overload me!\n", __FUNCTION__);
- firstRun = false;
- }
- taskDelay(1);
-}
-
diff --git a/aos/externals/WPILib/WPILib/IterativeRobot.h b/aos/externals/WPILib/WPILib/IterativeRobot.h
deleted file mode 100644
index e3e86d4..0000000
--- a/aos/externals/WPILib/WPILib/IterativeRobot.h
+++ /dev/null
@@ -1,83 +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 ROBOT_ITERATIVE_H_
-#define ROBOT_ITERATIVE_H_
-
-#include "Timer.h"
-#include "RobotBase.h"
-
-/**
- * IterativeRobot implements a specific type of Robot Program framework, extending the RobotBase class.
- *
- * The IterativeRobot class is intended to be subclassed by a user creating a robot program.
- *
- * This class is intended to implement the "old style" default code, by providing
- * the following functions which are called by the main loop, StartCompetition(), at the appropriate times:
- *
- * RobotInit() -- provide for initialization at robot power-on
- *
- * Init() functions -- each of the following functions is called once when the
- * appropriate mode is entered:
- * - 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
- * the iterative robot is synced to the driver station control packets,
- * giving a periodic frequency of about 50Hz (50 times per second).
- * - DisabledPeriodic()
- * - AutonomousPeriodic()
- * - TeleopPeriodic()
- * - TestPeriodic()
- *
- */
-
-class IterativeRobot : public RobotBase {
-public:
- /*
- * The default period for the periodic function calls (seconds)
- * Setting the period to 0.0 will cause the periodic functions to follow
- * the Driver Station packet rate of about 50Hz.
- */
- static constexpr double kDefaultPeriod = 0.0;
-
- virtual void StartCompetition();
-
- virtual void RobotInit();
- virtual void DisabledInit();
- virtual void AutonomousInit();
- virtual void TeleopInit();
- virtual void TestInit();
-
- virtual void DisabledPeriodic();
- virtual void AutonomousPeriodic();
- virtual void TeleopPeriodic();
- virtual void TestPeriodic();
-
- void SetPeriod(double period);
- double GetPeriod();
- double GetLoopsPerSec();
-
-protected:
- virtual ~IterativeRobot();
- IterativeRobot();
-
-private:
- bool NextPeriodReady();
-
- bool m_disabledInitialized;
- bool m_autonomousInitialized;
- bool m_teleopInitialized;
- bool m_testInitialized;
- double m_period;
- Timer m_mainLoopTimer;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Jaguar.cpp b/aos/externals/WPILib/WPILib/Jaguar.cpp
deleted file mode 100644
index b5f1187..0000000
--- a/aos/externals/WPILib/WPILib/Jaguar.cpp
+++ /dev/null
@@ -1,101 +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 "NetworkCommunication/UsageReporting.h"
-#include "DigitalModule.h"
-#include "LiveWindow/LiveWindow.h"
-
-/**
- * Common initialization code called by all constructors.
- */
-void Jaguar::InitJaguar()
-{
- /*
- * Input profile defined by Luminary Micro.
- *
- * Full reverse ranges from 0.671325ms to 0.6972211ms
- * Proportional reverse ranges from 0.6972211ms to 1.4482078ms
- * Neutral ranges from 1.4482078ms to 1.5517922ms
- * Proportional forward ranges from 1.5517922ms to 2.3027789ms
- * Full forward ranges from 2.3027789ms to 2.328675ms
- */
- SetBounds(2.31, 1.55, 1.507, 1.454, .697);
- SetPeriodMultiplier(kPeriodMultiplier_1X);
- SetRaw(m_centerPwm);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Jaguar, GetChannel(), GetModuleNumber() - 1);
- LiveWindow::GetInstance()->AddActuator("Jaguar", GetModuleNumber(), GetChannel(), this);
-}
-
-/**
- * Constructor that assumes the default digital module.
- *
- * @param channel The PWM channel on the digital module that the Jaguar is attached to.
- */
-Jaguar::Jaguar(uint32_t channel) : SafePWM(channel)
-{
- InitJaguar();
-}
-
-/**
- * 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 Jaguar is attached to.
- */
-Jaguar::Jaguar(uint8_t moduleNumber, uint32_t channel) : SafePWM(moduleNumber, channel)
-{
- InitJaguar();
-}
-
-Jaguar::~Jaguar()
-{
-}
-
-/**
- * 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 Jaguar::Set(float speed, uint8_t 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 Jaguar::Get()
-{
- return GetSpeed();
-}
-
-/**
- * Common interface for disabling a motor.
- */
-void Jaguar::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 Jaguar::PIDWrite(float output)
-{
- Set(output);
-}
-
diff --git a/aos/externals/WPILib/WPILib/Jaguar.h b/aos/externals/WPILib/WPILib/Jaguar.h
deleted file mode 100644
index 2b0a405..0000000
--- a/aos/externals/WPILib/WPILib/Jaguar.h
+++ /dev/null
@@ -1,34 +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 JAGUAR_H
-#define JAGUAR_H
-
-#include "SafePWM.h"
-#include "SpeedController.h"
-#include "PIDOutput.h"
-
-/**
- * Luminary Micro Jaguar Speed Control
- */
-class Jaguar : public SafePWM, public SpeedController
-{
-public:
- explicit Jaguar(uint32_t channel);
- Jaguar(uint8_t moduleNumber, uint32_t channel);
- virtual ~Jaguar();
- virtual void Set(float value, uint8_t syncGroup=0);
- virtual float Get();
- virtual void Disable();
-
- virtual void PIDWrite(float output);
-
-private:
- void InitJaguar();
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Joystick.cpp b/aos/externals/WPILib/WPILib/Joystick.cpp
deleted file mode 100644
index 645a1e5..0000000
--- a/aos/externals/WPILib/WPILib/Joystick.cpp
+++ /dev/null
@@ -1,302 +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 "DriverStation.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include <math.h>
-
-const uint32_t Joystick::kDefaultXAxis;
-const uint32_t Joystick::kDefaultYAxis;
-const uint32_t Joystick::kDefaultZAxis;
-const uint32_t Joystick::kDefaultTwistAxis;
-const uint32_t Joystick::kDefaultThrottleAxis;
-const uint32_t Joystick::kDefaultTriggerButton;
-const uint32_t Joystick::kDefaultTopButton;
-static Joystick *joysticks[DriverStation::kJoystickPorts];
-static bool joySticksInitialized = false;
-
-/**
- * Construct an instance of a joystick.
- * The joystick index is the usb port on the drivers station.
- *
- * @param port The port on the driver station that the joystick is plugged into.
- */
-Joystick::Joystick(uint32_t port)
- : m_ds (NULL)
- , m_port (port)
- , m_axes (NULL)
- , m_buttons (NULL)
-{
- InitJoystick(kNumAxisTypes, kNumButtonTypes);
-
- m_axes[kXAxis] = kDefaultXAxis;
- m_axes[kYAxis] = kDefaultYAxis;
- m_axes[kZAxis] = kDefaultZAxis;
- m_axes[kTwistAxis] = kDefaultTwistAxis;
- m_axes[kThrottleAxis] = kDefaultThrottleAxis;
-
- m_buttons[kTriggerButton] = kDefaultTriggerButton;
- m_buttons[kTopButton] = kDefaultTopButton;
-
- nUsageReporting::report(nUsageReporting::kResourceType_Joystick, port);
-}
-
-/**
- * Version of the constructor to be called by sub-classes.
- *
- * This constructor allows the subclass to configure the number of constants
- * for axes and buttons.
- *
- * @param port The port on the driver station that the joystick is plugged into.
- * @param numAxisTypes The number of axis types in the enum.
- * @param numButtonTypes The number of button types in the enum.
- */
-Joystick::Joystick(uint32_t port, uint32_t numAxisTypes, uint32_t numButtonTypes)
- : m_ds (NULL)
- , m_port (port)
- , m_axes (NULL)
- , m_buttons (NULL)
-{
- InitJoystick(numAxisTypes, numButtonTypes);
-}
-
-void Joystick::InitJoystick(uint32_t numAxisTypes, uint32_t numButtonTypes)
-{
- if ( !joySticksInitialized )
- {
- for (unsigned i = 0; i < DriverStation::kJoystickPorts; i++)
- joysticks[i] = NULL;
- joySticksInitialized = true;
- }
- joysticks[m_port - 1] = this;
-
- m_ds = DriverStation::GetInstance();
- m_axes = new uint32_t[numAxisTypes];
- m_buttons = new uint32_t[numButtonTypes];
-}
-
-Joystick * Joystick::GetStickForPort(uint32_t port)
-{
- Joystick *stick = joysticks[port - 1];
- if (stick == NULL)
- {
- stick = new Joystick(port);
- joysticks[port - 1] = stick;
- }
- return stick;
-}
-
-Joystick::~Joystick()
-{
- delete [] m_buttons;
- delete [] m_axes;
-}
-
-/**
- * Get the X value of the joystick.
- * This depends on the mapping of the joystick connected to the current port.
- */
-float Joystick::GetX(JoystickHand hand)
-{
- return GetRawAxis(m_axes[kXAxis]);
-}
-
-/**
- * Get the Y value of the joystick.
- * This depends on the mapping of the joystick connected to the current port.
- */
-float Joystick::GetY(JoystickHand hand)
-{
- return GetRawAxis(m_axes[kYAxis]);
-}
-
-/**
- * Get the Z value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- */
-float Joystick::GetZ()
-{
- return GetRawAxis(m_axes[kZAxis]);
-}
-
-/**
- * Get the twist value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- */
-float Joystick::GetTwist()
-{
- return GetRawAxis(m_axes[kTwistAxis]);
-}
-
-/**
- * Get the throttle value of the current joystick.
- * This depends on the mapping of the joystick connected to the current port.
- */
-float Joystick::GetThrottle()
-{
- return GetRawAxis(m_axes[kThrottleAxis]);
-}
-
-/**
- * Get the value of the axis.
- *
- * @param axis The axis to read [1-6].
- * @return The value of the axis.
- */
-float Joystick::GetRawAxis(uint32_t axis)
-{
- return m_ds->GetStickAxis(m_port, axis);
-}
-
-/**
- * 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 axis The axis to read.
- * @return The value of the axis.
- */
-float Joystick::GetAxis(AxisType axis)
-{
- switch(axis)
- {
- case kXAxis: return this->GetX();
- case kYAxis: return this->GetY();
- case kZAxis: return this->GetZ();
- case kTwistAxis: return this->GetTwist();
- case kThrottleAxis: return this->GetThrottle();
- default:
- wpi_setWPIError(BadJoystickAxis);
- return 0.0;
- }
-}
-
-/**
- * Read the state of the trigger on the joystick.
- *
- * Look up which button has been assigned to the trigger and read its state.
- *
- * @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 Joystick::GetTrigger(JoystickHand hand)
-{
- return GetRawButton(m_buttons[kTriggerButton]);
-}
-
-/**
- * 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 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 Joystick::GetTop(JoystickHand hand)
-{
- return GetRawButton(m_buttons[kTopButton]);
-}
-
-/**
- * This is not supported for the Joystick.
- * This method is only here to complete the GenericHID interface.
- */
-bool Joystick::GetBumper(JoystickHand hand)
-{
- // Joysticks don't have bumpers.
- return false;
-}
-
-/**
- * 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 button The button number to be read.
- * @return The state of the button.
- **/
-bool Joystick::GetRawButton(uint32_t button)
-{
- return ((0x1 << (button-1)) & m_ds->GetStickButtons(m_port)) != 0;
-}
-
-/**
- * Get buttons based on an enumerated type.
- *
- * The button type will be looked up in the list of buttons and then read.
- *
- * @param button The type of button to read.
- * @return The state of the button.
- */
-bool Joystick::GetButton(ButtonType button)
-{
- switch (button)
- {
- case kTriggerButton: return GetTrigger();
- case kTopButton: return GetTop();
- default:
- return false;
- }
-}
-
-/**
- * Get the channel currently associated with the specified axis.
- *
- * @param axis The axis to look up the channel for.
- * @return The channel fr the axis.
- */
-uint32_t Joystick::GetAxisChannel(AxisType axis)
-{
- return m_axes[axis];
-}
-
-/**
- * Set the channel associated with a specified axis.
- *
- * @param axis The axis to set the channel for.
- * @param channel The channel to set the axis to.
- */
-void Joystick::SetAxisChannel(AxisType axis, uint32_t channel)
-{
- m_axes[axis] = channel;
-}
-
-/**
- * Get the magnitude of the direction vector formed by the joystick's
- * current position relative to its origin
- *
- * @return The magnitude of the direction vector
- */
-float Joystick::GetMagnitude(){
- return sqrt(pow(GetX(),2) + pow(GetY(),2) );
-}
-
-/**
- * Get the direction of the vector formed by the joystick and its origin
- * in radians
- *
- * @return The direction of the vector in radians
- */
-float Joystick::GetDirectionRadians(){
- return atan2(GetX(), -GetY());
-}
-
-/**
- * Get the direction of the vector formed by the joystick and its origin
- * in degrees
- *
- * uses acos(-1) to represent Pi due to absence of readily accessable Pi
- * constant in C++
- *
- * @return The direction of the vector in degrees
- */
-float Joystick::GetDirectionDegrees(){
- return (180/acos(-1))*GetDirectionRadians();
-}
diff --git a/aos/externals/WPILib/WPILib/Joystick.h b/aos/externals/WPILib/WPILib/Joystick.h
deleted file mode 100644
index e21e070..0000000
--- a/aos/externals/WPILib/WPILib/Joystick.h
+++ /dev/null
@@ -1,77 +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 JOYSTICK_H_
-#define JOYSTICK_H_
-
-#include "GenericHID.h"
-#include "ErrorBase.h"
-
-class DriverStation;
-
-/**
- * Handle input from standard Joysticks connected to the Driver Station.
- * This class handles standard input that comes from the Driver Station. Each time a value is requested
- * the most recent value is returned. There is a single class instance for each joystick and the mapping
- * of ports to hardware buttons depends on the code in the driver station.
- */
-class Joystick : public GenericHID, public ErrorBase
-{
-public:
- static const uint32_t kDefaultXAxis = 1;
- static const uint32_t kDefaultYAxis = 2;
- static const uint32_t kDefaultZAxis = 3;
- static const uint32_t kDefaultTwistAxis = 4;
- static const uint32_t kDefaultThrottleAxis = 3;
- typedef enum
- {
- kXAxis, kYAxis, kZAxis, kTwistAxis, kThrottleAxis, kNumAxisTypes
- } AxisType;
- static const uint32_t kDefaultTriggerButton = 1;
- static const uint32_t kDefaultTopButton = 2;
- typedef enum
- {
- kTriggerButton, kTopButton, kNumButtonTypes
- } ButtonType;
-
- explicit Joystick(uint32_t port);
- Joystick(uint32_t port, uint32_t numAxisTypes, uint32_t numButtonTypes);
- virtual ~Joystick();
-
- uint32_t GetAxisChannel(AxisType axis);
- void SetAxisChannel(AxisType axis, uint32_t channel);
-
- virtual float GetX(JoystickHand hand = kRightHand);
- virtual float GetY(JoystickHand hand = kRightHand);
- virtual float GetZ();
- virtual float GetTwist();
- virtual float GetThrottle();
- virtual float GetAxis(AxisType axis);
- float GetRawAxis(uint32_t axis);
-
- virtual bool GetTrigger(JoystickHand hand = kRightHand);
- virtual bool GetTop(JoystickHand hand = kRightHand);
- virtual bool GetBumper(JoystickHand hand = kRightHand);
- virtual bool GetButton(ButtonType button);
- bool GetRawButton(uint32_t button);
- static Joystick* GetStickForPort(uint32_t port);
-
- virtual float GetMagnitude();
- virtual float GetDirectionRadians();
- virtual float GetDirectionDegrees();
-
-private:
- DISALLOW_COPY_AND_ASSIGN(Joystick);
- void InitJoystick(uint32_t numAxisTypes, uint32_t numButtonTypes);
-
- DriverStation *m_ds;
- uint32_t m_port;
- uint32_t *m_axes;
- uint32_t *m_buttons;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Kinect.cpp b/aos/externals/WPILib/WPILib/Kinect.cpp
deleted file mode 100644
index 91a0027..0000000
--- a/aos/externals/WPILib/WPILib/Kinect.cpp
+++ /dev/null
@@ -1,196 +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 "Kinect.h"
-
-#include "DriverStation.h"
-#include "NetworkCommunication/FRCComm.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Skeleton.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-#include <cstring>
-
-#define kHeaderBundleID kFRC_NetworkCommunication_DynamicType_Kinect_Header
-#define kSkeletonExtraBundleID kFRC_NetworkCommunication_DynamicType_Kinect_Extra1
-#define kSkeletonBundleID kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1
-
-Kinect *Kinect::_instance = NULL;
-
-Kinect::Kinect() :
- m_recentPacketNumber(0),
- m_numberOfPlayers(0)
-{
- AddToSingletonList();
- m_dataLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Kinect, 0);
-}
-
-Kinect::~Kinect()
-{
- semTake(m_dataLock, WAIT_FOREVER);
- semDelete(m_dataLock);
-}
-
-/**
- * Get the one and only Kinect object
- * @returns pointer to a Kinect
- */
-Kinect *Kinect::GetInstance()
-{
- if (_instance == NULL)
- _instance = new Kinect();
- return _instance;
-}
-
-/**
- * Get the number of tracked players on the Kinect
- * @return the number of players being actively tracked
- */
-int Kinect::GetNumberOfPlayers()
-{
- UpdateData();
- return m_numberOfPlayers;
-}
-
-/**
- * Get the floor clip plane as defined in the Kinect SDK
- * @return The floor clip plane
- */
-Kinect::Point4 Kinect::GetFloorClipPlane()
-{
- UpdateData();
- return m_floorClipPlane;
-}
-
-/**
- * Get the gravity normal from the kinect as defined in the Kinect SDK
- * @return The gravity normal (w is ignored)
- */
-Kinect::Point4 Kinect::GetGravityNormal()
-{
- UpdateData();
- return m_gravityNormal;
-}
-
-/**
- * Get the skeleton data
- * Returns the detected skeleton data from the kinect as defined in the Kinect SDK
- * @param skeletonIndex Which of (potentially 2) skeletons to return. This is ignored in this implementation and
- * only a single skeleton is supported for the FRC release default gesture interpretation.
- * @return The current version of the skeleton object.
- */
-Skeleton Kinect::GetSkeleton(int skeletonIndex)
-{
- if (skeletonIndex <= 0 || skeletonIndex > kNumSkeletons)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Skeleton index must be 1");
- return Skeleton();
- }
- UpdateData();
- return m_skeletons[skeletonIndex-1];
-}
-
-/**
- * Get the current position of the skeleton
- * @param skeletonIndex the skeleton to read from
- * @return the current position as defined in the Kinect SDK (w is ignored)
- */
-Kinect::Point4 Kinect::GetPosition(int skeletonIndex)
-{
- if (skeletonIndex <= 0 || skeletonIndex > kNumSkeletons)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Skeleton index must be 1");
- return Point4();
- }
- UpdateData();
- return m_position[skeletonIndex-1];
-}
-
-/**
- * Get the quality of the skeleton.
- * Quality masks are defined in the SkeletonQuality enum
- * @param skeletonIndex the skeleton to read from
- * @return the quality value as defined in the Kinect SDK
- */
-uint32_t Kinect::GetQuality(int skeletonIndex)
-{
- if (skeletonIndex <= 0 || skeletonIndex > kNumSkeletons)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Skeleton index must be 1");
- return kClippedRight | kClippedLeft | kClippedTop | kClippedBottom;
- }
- UpdateData();
- return m_quality[skeletonIndex-1];
-}
-
-/**
- * Get the TrackingState of the skeleton.
- * Tracking states are defined in the SkeletonTrackingState enum
- * @param skeletonIndex the skeleton to read from
- * @return the tracking state value as defined in the Kinect SDK
- */
-Kinect::SkeletonTrackingState Kinect::GetTrackingState(int skeletonIndex)
-{
- if (skeletonIndex <= 0 || skeletonIndex > kNumSkeletons)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Skeleton index must be 1");
- return kNotTracked;
- }
- UpdateData();
- return m_trackingState[skeletonIndex-1];
-}
-
-/**
- * Check for an update of new data from the Driver Station
- * This will read the new values and update the data structures in this class.
- */
-void Kinect::UpdateData()
-{
- Synchronized sync(m_dataLock);
- uint32_t packetNumber = DriverStation::GetInstance()->GetPacketNumber();
- if (m_recentPacketNumber != packetNumber)
- {
- m_recentPacketNumber = packetNumber;
- int retVal = getDynamicControlData(kHeaderBundleID, m_rawHeader, sizeof(m_rawHeader), 5);
- if(retVal == 0)
- {
- m_numberOfPlayers = (int)m_rawHeader[13];
- memcpy(&m_floorClipPlane.x, &m_rawHeader[18], 4);
- memcpy(&m_floorClipPlane.y, &m_rawHeader[22], 4);
- memcpy(&m_floorClipPlane.z, &m_rawHeader[26], 4);
- memcpy(&m_floorClipPlane.w, &m_rawHeader[30], 4);
- memcpy(&m_gravityNormal.x, &m_rawHeader[34], 4);
- memcpy(&m_gravityNormal.y, &m_rawHeader[38], 4);
- memcpy(&m_gravityNormal.z, &m_rawHeader[42], 4);
- }
-
- retVal = getDynamicControlData(kSkeletonExtraBundleID, m_rawSkeletonExtra, sizeof(m_rawSkeletonExtra), 5);
- if(retVal == 0)
- {
- memcpy(&m_position[0].x, &m_rawSkeletonExtra[22], 4);
- memcpy(&m_position[0].y, &m_rawSkeletonExtra[26], 4);
- memcpy(&m_position[0].z, &m_rawSkeletonExtra[30], 4);
- memcpy(&m_quality[0], &m_rawSkeletonExtra[34], 4);
- memcpy(&m_trackingState[0], &m_rawSkeletonExtra[38], 4);
- }
-
- retVal = getDynamicControlData(kSkeletonBundleID, m_rawSkeleton, sizeof(m_rawSkeleton), 5);
- if(retVal == 0)
- {
- for(int i=0; i < Skeleton::JointCount; i++)
- {
- memcpy(&m_skeletons[0].m_joints[i].x, &m_rawSkeleton[i*12+2], 4);
- memcpy(&m_skeletons[0].m_joints[i].y, &m_rawSkeleton[i*12+6], 4);
- memcpy(&m_skeletons[0].m_joints[i].z, &m_rawSkeleton[i*12+10], 4);
- m_skeletons[0].m_joints[i].trackingState = (Skeleton::JointTrackingState)m_rawSkeletonExtra[i+2];
- }
- }
-
- // TODO: Read skeleton #2
- }
-}
diff --git a/aos/externals/WPILib/WPILib/Kinect.h b/aos/externals/WPILib/WPILib/Kinect.h
deleted file mode 100644
index 988fccd..0000000
--- a/aos/externals/WPILib/WPILib/Kinect.h
+++ /dev/null
@@ -1,73 +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 __KINECT_H__
-#define __KINECT_H__
-
-#include "SensorBase.h"
-#include "Skeleton.h"
-
-#include <semLib.h>
-
-#define kNumSkeletons 1
-
-/**
- * Handles raw data input from the FRC Kinect Server
- * when used with a Kinect device connected to the Driver Station.
- * Each time a value is requested the most recent value is returned.
- * See Getting Started with Microsoft Kinect for FRC and the Kinect
- * for Windows SDK API reference for more information
- */
-class Kinect : public SensorBase
-{
-public:
- typedef enum {kNotTracked, kPositionOnly, kTracked} SkeletonTrackingState;
- typedef enum {kClippedRight = 1, kClippedLeft = 2, kClippedTop = 4, kClippedBottom = 8} SkeletonQuality;
- typedef struct
- {
- float x;
- float y;
- float z;
- float w;
- } Point4;
-
- int GetNumberOfPlayers();
- Point4 GetFloorClipPlane();
- Point4 GetGravityNormal();
- Skeleton GetSkeleton(int skeletonIndex = 1);
- Point4 GetPosition(int skeletonIndex = 1);
- uint32_t GetQuality(int skeletonIndex = 1);
- SkeletonTrackingState GetTrackingState(int skeletonIndex = 1);
-
- static Kinect *GetInstance();
-
-private:
- Kinect();
- ~Kinect();
- void UpdateData();
-
- DISALLOW_COPY_AND_ASSIGN(Kinect);
-
- uint32_t m_recentPacketNumber;
- SEM_ID m_dataLock;
- int m_numberOfPlayers;
- Point4 m_floorClipPlane;
- Point4 m_gravityNormal;
- Point4 m_position[kNumSkeletons];
- uint32_t m_quality[kNumSkeletons];
- SkeletonTrackingState m_trackingState[kNumSkeletons];
- Skeleton m_skeletons[kNumSkeletons];
-
- // TODO: Include structs for this data format (would be clearer than 100 magic numbers)
- char m_rawHeader[46];
- char m_rawSkeletonExtra[42];
- char m_rawSkeleton[242];
-
- static Kinect *_instance;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/KinectStick.cpp b/aos/externals/WPILib/WPILib/KinectStick.cpp
deleted file mode 100644
index f6e3021..0000000
--- a/aos/externals/WPILib/WPILib/KinectStick.cpp
+++ /dev/null
@@ -1,201 +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 "KinectStick.h"
-
-#include "DriverStation.h"
-#include "Joystick.h"
-#include "NetworkCommunication/FRCComm.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-
-uint32_t KinectStick::_recentPacketNumber = 0;
-KinectStick::KinectStickData KinectStick::_sticks;
-
-#define kJoystickBundleID kFRC_NetworkCommunication_DynamicType_Kinect_Joystick
-#define kTriggerMask 1
-#define kTopMask 2
-
-/**
- * Kinect joystick constructor
- * @param id value is either 1 or 2 for the left or right joystick decoded from
- * gestures interpreted by the Kinect server on the Driver Station computer.
- */
-KinectStick::KinectStick(int id)
-{
- if (id != 1 && id != 2)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "KinectStick ID must be 1 or 2");
- return;
- }
- m_id = id;
-
- nUsageReporting::report(nUsageReporting::kResourceType_KinectStick, id);
-}
-
-/**
- * Get the X value of the KinectStick. This axis
- * is unimplemented in the default gestures but can
- * be populated by teams editing the Kinect Server.
- * @param hand Unused
- * @return The X value of the KinectStick
- */
-float KinectStick::GetX(JoystickHand hand)
-{
- return GetRawAxis(Joystick::kDefaultXAxis);
-}
-
-/**
- * Get the Y value of the KinectStick. This axis
- * represents arm angle in the default gestures
- * @param hand Unused
- * @return The Y value of the KinectStick
- */
-float KinectStick::GetY(JoystickHand hand)
-{
- return GetRawAxis(Joystick::kDefaultYAxis);
-}
-
-/**
- * Get the Z value of the KinectStick. This axis
- * is unimplemented in the default gestures but can
- * be populated by teams editing the Kinect Server.
- * @param hand Unused
- * @return The Z value of the KinectStick
- */
-float KinectStick::GetZ()
-{
- return GetRawAxis(Joystick::kDefaultZAxis);
-}
-
-/**
- * Get the Twist value of the KinectStick. This axis
- * is unimplemented in the default gestures but can
- * be populated by teams editing the Kinect Server.
- * @return The Twist value of the KinectStick
- */
-float KinectStick::GetTwist()
-{
- return GetRawAxis(Joystick::kDefaultTwistAxis);
-}
-
-/**
- * Get the Throttle value of the KinectStick. This axis
- * is unimplemented in the default gestures but can
- * be populated by teams editing the Kinect Server.
- * @return The Throttle value of the KinectStick
- */
-float KinectStick::GetThrottle()
-{
- return GetRawAxis(Joystick::kDefaultThrottleAxis);
-}
-
-/**
- * Get the value of the KinectStick axis.
- *
- * @param axis The axis to read [1-6].
- * @return The value of the axis
- */
-float KinectStick::GetRawAxis(uint32_t axis)
-{
- if (StatusIsFatal()) return 0.0;
-
- GetData();
- float value = ConvertRawToFloat(_sticks.formatted.rawSticks[m_id - 1].axis[axis-1]);
- return value;
-}
-
-/**
- * Get the button value for the button set as the default trigger
- *
- * @param hand Unused
- * @return The state of the button.
- */
-bool KinectStick::GetTrigger(JoystickHand hand)
-{
- return GetRawButton(kTriggerMask);
-}
-
-/**
- * Get the button value for the button set as the default top
- *
- * @param hand Unused
- * @return The state of the button.
- */
-bool KinectStick::GetTop(JoystickHand hand)
-{
- return GetRawButton(kTopMask);
-}
-
-/**
- * Get the button value for the button set as the default bumper (button 4)
- *
- * @param hand Unused
- * @return The state of the button.
- */
-bool KinectStick::GetBumper(JoystickHand hand)
-{
- // TODO: Should this even be in GenericHID? Is 4 an appropriate mask value (button 3)?
- return GetRawButton(4);
-}
-
-/**
- * Get the button value for buttons 1 through 12. The default gestures
- * implement only 9 buttons.
- *
- * The appropriate button is returned as a boolean value.
- *
- * @param button The button number to be read.
- * @return The state of the button.
- */
-bool KinectStick::GetRawButton(uint32_t button)
-{
- if (StatusIsFatal()) return false;
-
- GetData();
- return (_sticks.formatted.rawSticks[m_id - 1].buttons & (1 << button)) != 0;
-}
-
-/**
- * Get dynamic data from the driver station buffer
- */
-void KinectStick::GetData()
-{
- uint32_t packetNumber = DriverStation::GetInstance()->GetPacketNumber();
- if (_recentPacketNumber != packetNumber)
- {
- _recentPacketNumber = packetNumber;
- int retVal = getDynamicControlData(kJoystickBundleID, _sticks.data, sizeof(_sticks.data), 5);
- if (retVal == 0)
- {
- wpi_assert(_sticks.formatted.size == sizeof(_sticks.data) - 1);
- }
- }
-}
-
-/**
- * Convert an 8 bit joystick value to a floating point (-1,1) value
- * @param value The 8 bit raw joystick value returned from the driver station
- */
-float KinectStick::ConvertRawToFloat(int8_t value)
-{
- float result;
-
- if (value < 0)
- result = ((float) value) / 128.0;
- else
- result = ((float) value) / 127.0;
-
- wpi_assert(result <= 1.0 && result >= -1.0);
-
- if (result > 1.0)
- result = 1.0;
- else if (result < -1.0)
- result = -1.0;
-
- return result;
-}
diff --git a/aos/externals/WPILib/WPILib/KinectStick.h b/aos/externals/WPILib/WPILib/KinectStick.h
deleted file mode 100644
index e605b5a..0000000
--- a/aos/externals/WPILib/WPILib/KinectStick.h
+++ /dev/null
@@ -1,61 +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 __KINECT_STICK_H__
-#define __KINECT_STICK_H__
-
-#include "ErrorBase.h"
-#include "GenericHID.h"
-
-/**
- * Handles input from the Joystick data sent by the FRC Kinect Server
- * when used with a Kinect device connected to the Driver Station.
- * Each time a value is requested the most recent value is returned.
- * Default gestures embedded in the FRC Kinect Server are described
- * in the document Getting Started with Microsoft Kinect for FRC.
- */
-class KinectStick : public GenericHID, public ErrorBase
-{
-public:
- explicit KinectStick(int id);
- virtual float GetX(JoystickHand hand = kRightHand);
- virtual float GetY(JoystickHand hand = kRightHand);
- virtual float GetZ();
- virtual float GetTwist();
- virtual float GetThrottle();
- virtual float GetRawAxis(uint32_t axis);
-
- virtual bool GetTrigger(JoystickHand hand = kRightHand);
- virtual bool GetTop(JoystickHand hand = kRightHand);
- virtual bool GetBumper(JoystickHand hand = kRightHand);
- virtual bool GetRawButton(uint32_t button);
-
-private:
- void GetData();
- float ConvertRawToFloat(int8_t charValue);
-
- typedef union
- {
- struct
- {
- uint8_t size;
- uint8_t id;
- struct
- {
- unsigned char axis[6];
- unsigned short buttons;
- } rawSticks[2];
- } formatted;
- char data[18];
- } KinectStickData;
-
- int m_id;
- static uint32_t _recentPacketNumber;
- static KinectStickData _sticks;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp
deleted file mode 100644
index a2ecbc6..0000000
--- a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-#include "LiveWindow/LiveWindow.h"
-#include "networktables/NetworkTable.h"
-#include <algorithm>
-#include <sstream>
-
-LiveWindow* LiveWindow::m_instance = NULL;
-ReentrantSemaphore LiveWindow::m_instanceLock;
-
-/**
- * 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()
-{
- Synchronized sync(m_instanceLock);
- if (m_instance == NULL)
- {
- m_instance = new LiveWindow();
- }
- return m_instance;
-}
-
-/**
- * LiveWindow constructor.
- * Allocate the necessary tables.
- */
-LiveWindow::LiveWindow()
-{
-#if 0
- m_enabled = false;
- m_liveWindowTable = NetworkTable::GetTable("LiveWindow");
- m_statusTable = m_liveWindowTable->GetSubTable("~STATUS~");
- m_scheduler = Scheduler::GetInstance();
-#endif
-}
-
-/**
- * Change the enabled status of LiveWindow
- * If it changes to enabled, start livewindow running otherwise stop it
- */
-void LiveWindow::SetEnabled(bool enabled)
-{
-#if 0
- 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);
-#endif
-}
-
-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(const char *subsystem, const char *name,
- LiveWindowSendable *component)
-{
-#if 0
- m_components[component].subsystem = subsystem;
- m_components[component].name = name;
- m_components[component].isSensor = true;
-#endif
-}
-
-/**
- * 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(const char *subsystem, const char *name,
- LiveWindowSendable *component)
-{
-#if 0
- m_components[component].subsystem = subsystem;
- m_components[component].name = name;
- m_components[component].isSensor = false;
-#endif
-}
-
-/**
- * INTERNAL
- */
-void LiveWindow::AddSensor(std::string type, int module, int channel, LiveWindowSendable *component)
-{
-#if 0
- 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);
-#endif
-}
-
-/**
- * INTERNAL
- */
-void LiveWindow::AddActuator(std::string type, int module, int channel, LiveWindowSendable *component)
-{
-#if 0
- 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);
-#endif
-}
-
-/**
- * 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()
-{
-#if 0
- for (unsigned int i = 0; i < m_sensors.size(); i++)
- {
- m_sensors[i]->UpdateTable();
- }
-#endif
-}
-
-/**
- * This method is called periodically to cause the sensors to send new values
- * to the SmartDashboard.
- */
-void LiveWindow::Run()
-{
-#if 0
- if (m_enabled)
- {
- UpdateValues();
- }
-#endif
-}
-
-/**
- * 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()
-{
-#if 0
- 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);
- }
- }
-#endif
-}
-
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h
deleted file mode 100644
index 2b103f7..0000000
--- a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindow.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef _LIVE_WINDOW_H
-#define _LIVE_WINDOW_H
-
-#include "LiveWindow/LiveWindowSendable.h"
-#include "tables/ITable.h"
-#include "Commands/Scheduler.h"
-#include "Synchronized.h"
-#include <vector>
-#include <map>
-
-struct LiveWindowComponent
-{
-#if 0
- std::string subsystem;
- std::string name;
- bool isSensor;
-#endif
-
- LiveWindowComponent()
- {}//WTF?
- LiveWindowComponent(std::string subsystem, std::string name, bool isSensor)
- {
-#if 0
- this->subsystem = subsystem;
- this->name = name;
- this->isSensor = isSensor;
-#else
- (void)subsystem;
- (void)name;
- (void)isSensor;
-#endif
- }
-};
-
-/**
- * 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(const char *subsystem, const char *name, LiveWindowSendable *component);
- void AddActuator(const char *subsystem, const 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 false; }
- void SetEnabled(bool enabled);
-
-protected:
- LiveWindow();
- virtual ~LiveWindow();
-
-private:
- void UpdateValues();
- void Initialize();
- void InitializeLiveWindowComponents();
-
-#if 0
- std::vector<LiveWindowSendable *> m_sensors;
- std::map<LiveWindowSendable *, LiveWindowComponent> m_components;
-
-#endif
- static LiveWindow *m_instance;
- static ReentrantSemaphore m_instanceLock;
-#if 0
- ITable *m_liveWindowTable;
- ITable *m_statusTable;
-
- Scheduler *m_scheduler;
-
- bool m_enabled;
- bool m_firstTime;
-#endif
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h b/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h
deleted file mode 100644
index abc4f7e..0000000
--- a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowSendable.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* 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
deleted file mode 100644
index 5a80f90..0000000
--- a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "LiveWindow/LiveWindowStatusListener.h"
-#include "Commands/Scheduler.h"
-
-void LiveWindowStatusListener::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
deleted file mode 100644
index 7c701e3..0000000
--- a/aos/externals/WPILib/WPILib/LiveWindow/LiveWindowStatusListener.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#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/Makefile b/aos/externals/WPILib/WPILib/Makefile
deleted file mode 100644
index 598ecf3..0000000
--- a/aos/externals/WPILib/WPILib/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# force powerpc compilers
-CXX=powerpc-wrs-vxworks-g++
-AR=powerpc-wrs-vxworks-ar
-
-CPPFILES := $(shell find -name '*.cpp' | sort | sed 's/\.\///g')
-OBJS = $(CPPFILES:.cpp=.o)
-
-WPILib.a: $(OBJS)
- @echo " [AR] WPILib.a"
- @$(AR) crus WPILib.a $(OBJS)
-
-%.o: %.cpp
- @echo " [G++] "$?
- @mkdir -p `dirname Debug/$@`
- @$(CXX) -o $@ -c $? -g -I. -mcpu=603 -mstrict-align -mlongcall -Wall -DTOOL=GNU -D'SVN_REV="3623+1"' -std=c++11
-
-clean-objects:
- @$(foreach obf, $(shell find -name '*.o' | sort | sed 's/\.\///g'), echo " [RM] "$(obf);rm -rf $(obf);)
-
-clean-wpilib:
- @echo " [RM] WPILib.a"
- @rm -rf WPILib.a
-
-clean: clean-objects clean-wpilib
-
-install:
- mkdir -p $(DESTDIR)$(PREFIX)/lib
- cp WPILib.a $(DESTDIR)$(PREFIX)/lib/libWPILib.a
- $(foreach hdir,$(shell find -name '*.h' | sed 's/\.\///g' | xargs -L 1 dirname | sort | uniq),mkdir -p $(DESTDIR)$(PREFIX)/include/WPILib/$(hdir);)
- $(foreach header, $(shell find -name '*.h' | sed 's/\.\///g'), cp $(header) $(DESTDIR)$(PREFIX)/include/WPILib/$(header);)
-
-rebuild: clean all
-
-all: WPILib.a
diff --git a/aos/externals/WPILib/WPILib/Module.cpp b/aos/externals/WPILib/WPILib/Module.cpp
deleted file mode 100644
index 727fda3..0000000
--- a/aos/externals/WPILib/WPILib/Module.cpp
+++ /dev/null
@@ -1,95 +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 "Module.h"
-#include "AnalogModule.h"
-#include "DigitalModule.h"
-//#include "SolenoidModule.h"
-#include "Utility.h"
-
-ReentrantSemaphore Module::m_semaphore;
-
-Module* Module::m_modules[kMaxModules] = {NULL};
-
-/**
- * Constructor.
- *
- * @param type The type of module represented.
- * @param number The module index within the module type.
- */
-Module::Module(nLoadOut::tModuleType type, uint8_t number)
- : m_moduleType (type)
- , m_moduleNumber (number)
-{
- Synchronized sync(m_semaphore);
- m_modules[ToIndex(type, number)] = this;
-}
-
-/**
- * Destructor.
- */
-Module::~Module()
-{
- m_modules[ToIndex(m_moduleType, m_moduleNumber)] = NULL;
-}
-
-/**
- * Static module singleton factory.
- *
- * @param type The type of module represented.
- * @param number The module index within the module type.
- */
-Module* Module::GetModule(nLoadOut::tModuleType type, uint8_t number)
-{
- Synchronized sync(m_semaphore);
- if (m_modules[ToIndex(type, number)] == NULL)
- {
- switch(type)
- {
- case nLoadOut::kModuleType_Analog:
- new AnalogModule(number);
- break;
- case nLoadOut::kModuleType_Digital:
- new DigitalModule(number);
- break;
-/*
- case nLoadOut::kModuleType_Solenoid:
- new SolenoidModule(number);
- break;
-*/
- default:
- return NULL;
- }
- }
- return m_modules[ToIndex(type, number)];
-}
-
-/**
- * Create an index into the m_modules array based on type and number
- *
- * @param type The type of module represented.
- * @param number The module index within the module type.
- * @return The index into m_modules.
- */
-uint8_t Module::ToIndex(nLoadOut::tModuleType type, uint8_t number)
-{
- if (number == 0 || number > kMaxModuleNumber) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Trying to get index for invalid module %d",
- static_cast<int>(number));
- wpi_assertWithMessage(false, buf);
- return 0;
- }
- if (type < nLoadOut::kModuleType_Analog ||
- type > nLoadOut::kModuleType_Solenoid) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Trying to get index for invalid module type %d",
- static_cast<int>(type));
- wpi_assertWithMessage(false, buf);
- return 0;
- }
- return (type * kMaxModuleNumber) + (number - 1);
-}
diff --git a/aos/externals/WPILib/WPILib/Module.h b/aos/externals/WPILib/WPILib/Module.h
deleted file mode 100644
index 390d77a..0000000
--- a/aos/externals/WPILib/WPILib/Module.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 MODULE_H_
-#define MODULE_H_
-
-#include "SensorBase.h"
-#include "NetworkCommunication/LoadOut.h"
-#include "Synchronized.h"
-
-#define kMaxModules (nLoadOut::kModuleType_Solenoid * kMaxModuleNumber + (kMaxModuleNumber - 1))
-
-class Module: public SensorBase
-{
-public:
- nLoadOut::tModuleType GetType() {return m_moduleType;}
- uint8_t GetNumber() {return m_moduleNumber;}
- static Module *GetModule(nLoadOut::tModuleType type, uint8_t number);
-
-protected:
- Module(nLoadOut::tModuleType type, uint8_t number);
- virtual ~Module();
-
- nLoadOut::tModuleType m_moduleType; ///< The type of module represented.
- uint8_t m_moduleNumber; ///< The module index within the module type.
-
-private:
- static uint8_t ToIndex(nLoadOut::tModuleType type, uint8_t number);
- static Module* m_modules[kMaxModules];
- static ReentrantSemaphore m_semaphore;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/MotorSafety.h b/aos/externals/WPILib/WPILib/MotorSafety.h
deleted file mode 100644
index a13ac38..0000000
--- a/aos/externals/WPILib/WPILib/MotorSafety.h
+++ /dev/null
@@ -1,24 +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 _MOTOR_SAFETY_
-#define _MOTOR_SAFETY_
-
-#define DEFAULT_SAFETY_EXPIRATION 0.1
-
-class MotorSafety {
-public:
- virtual void SetExpiration(float timeout) = 0;
- virtual float GetExpiration() = 0;
- virtual bool IsAlive() = 0;
- virtual void StopMotor() = 0;
- virtual void SetSafetyEnabled(bool enabled) = 0;
- virtual bool IsSafetyEnabled() = 0;
- // May write to the first 64 bytes of desc.
- virtual void GetDescription(char *desc) = 0;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp b/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp
deleted file mode 100644
index 23e49d5..0000000
--- a/aos/externals/WPILib/WPILib/MotorSafetyHelper.cpp
+++ /dev/null
@@ -1,156 +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 "MotorSafetyHelper.h"
-
-#include "DriverStation.h"
-#include "MotorSafety.h"
-#include "Timer.h"
-#include "WPIErrors.h"
-
-#include <stdio.h>
-
-MotorSafetyHelper *MotorSafetyHelper::m_headHelper = NULL;
-ReentrantSemaphore MotorSafetyHelper::m_listMutex;
-
-/**
- * The constructor for a MotorSafetyHelper object.
- * The helper object is constructed for every object that wants to implement the Motor
- * Safety protocol. The helper object has the code to actually do the timing and call the
- * motors Stop() method when the timeout expires. The motor object is expected to call the
- * Feed() method whenever the motors value is updated.
- * @param safeObject a pointer to the motor object implementing MotorSafety. This is used
- * to call the Stop() method on the motor.
- */
-MotorSafetyHelper::MotorSafetyHelper(MotorSafety *safeObject)
-{
- m_safeObject = safeObject;
- m_enabled = false;
- m_expiration = DEFAULT_SAFETY_EXPIRATION;
- m_stopTime = Timer::GetFPGATimestamp();
-
- Synchronized sync(m_listMutex);
- m_nextHelper = m_headHelper;
- m_headHelper = this;
-}
-
-
-MotorSafetyHelper::~MotorSafetyHelper()
-{
- Synchronized sync(m_listMutex);
- if (m_headHelper == this)
- {
- m_headHelper = m_nextHelper;
- }
- else
- {
- MotorSafetyHelper *prev = NULL;
- MotorSafetyHelper *cur = m_headHelper;
- while (cur != this && cur != NULL)
- prev = cur, cur = cur->m_nextHelper;
- if (cur == this)
- prev->m_nextHelper = cur->m_nextHelper;
- }
-}
-
-/*
- * Feed the motor safety object.
- * Resets the timer on this object that is used to do the timeouts.
- */
-void MotorSafetyHelper::Feed()
-{
- Synchronized sync(m_syncMutex);
- m_stopTime = Timer::GetFPGATimestamp() + m_expiration;
-}
-
-/*
- * Set the expiration time for the corresponding motor safety object.
- * @param expirationTime The timeout value in seconds.
- */
-void MotorSafetyHelper::SetExpiration(float expirationTime)
-{
- Synchronized sync(m_syncMutex);
- m_expiration = expirationTime;
-}
-
-/**
- * Retrieve the timeout value for the corresponding motor safety object.
- * @returns the timeout value in seconds.
- */
-float MotorSafetyHelper::GetExpiration()
-{
- Synchronized sync(m_syncMutex);
- return m_expiration;
-}
-
-/**
- * Determine if the motor is still operating or has timed out.
- * @returns a true value if the motor is still operating normally and hasn't timed out.
- */
-bool MotorSafetyHelper::IsAlive()
-{
- Synchronized sync(m_syncMutex);
- return !m_enabled || m_stopTime > Timer::GetFPGATimestamp();
-}
-
-/**
- * Check if this motor has exceeded its timeout.
- * This method is called periodically to determine if this motor has exceeded its timeout
- * value. If it has, the stop method is called, and the motor is shut down until its value is
- * updated again.
- */
-void MotorSafetyHelper::Check()
-{
- DriverStation *ds = DriverStation::GetInstance();
- if (!m_enabled || ds->IsDisabled() || ds->IsTest()) return;
-
- Synchronized sync(m_syncMutex);
- if (m_stopTime < Timer::GetFPGATimestamp())
- {
- char buf[128];
- char desc[64];
- m_safeObject->GetDescription(desc);
- snprintf(buf, 128, "%s... Output not updated often enough.", desc);
- wpi_setWPIErrorWithContext(Timeout, buf);
- m_safeObject->StopMotor();
- }
-}
-
-/**
- * Enable/disable motor safety for this device
- * Turn on and off the motor safety option for this PWM object.
- * @param enabled True if motor safety is enforced for this object
- */
-void MotorSafetyHelper::SetSafetyEnabled(bool enabled)
-{
- Synchronized sync(m_syncMutex);
- m_enabled = enabled;
-}
-
-/**
- * Return the state of the motor safety enabled flag
- * Return if the motor safety is currently enabled for this devicce.
- * @returns True if motor safety is enforced for this device
- */
-bool MotorSafetyHelper::IsSafetyEnabled()
-{
- Synchronized sync(m_syncMutex);
- return m_enabled;
-}
-
-/**
- * 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
- * timed out.
- */
-void MotorSafetyHelper::CheckMotors()
-{
- Synchronized sync(m_listMutex);
- for (MotorSafetyHelper *msh = m_headHelper; msh != NULL; msh = msh->m_nextHelper)
- {
- msh->Check();
- }
-}
diff --git a/aos/externals/WPILib/WPILib/MotorSafetyHelper.h b/aos/externals/WPILib/WPILib/MotorSafetyHelper.h
deleted file mode 100644
index 67a6a2f..0000000
--- a/aos/externals/WPILib/WPILib/MotorSafetyHelper.h
+++ /dev/null
@@ -1,40 +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 __MOTOR_SAFETY_HELPER__
-#define __MOTOR_SAFETY_HELPER__
-
-#include "ErrorBase.h"
-#include "Synchronized.h"
-#include <semLib.h>
-
-class MotorSafety;
-
-class MotorSafetyHelper : public ErrorBase
-{
-public:
- MotorSafetyHelper(MotorSafety *safeObject);
- ~MotorSafetyHelper();
- void Feed();
- void SetExpiration(float expirationTime);
- float GetExpiration();
- bool IsAlive();
- void Check();
- void SetSafetyEnabled(bool enabled);
- bool IsSafetyEnabled();
- static void CheckMotors();
-private:
- 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 ReentrantSemaphore m_listMutex; // protect accesses to the list of helpers
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/AICalibration.h b/aos/externals/WPILib/WPILib/NetworkCommunication/AICalibration.h
deleted file mode 100644
index 8b94b65..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/AICalibration.h
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef __AICalibration_h__
-#define __AICalibration_h__
-
-#include <vxWorks.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status);
- int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // __AICalibration_h__
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h b/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h
deleted file mode 100644
index 80f91a9..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/FRCComm.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*************************************************************
- * NOTICE
- *
- * These are the only externally exposed functions to the
- * NetworkCommunication library
- *
- * This is an implementation of FRC Spec for Comm Protocol
- * Revision 4.5, June 30, 2008
- *
- * Copyright (c) National Instruments 2008. All Rights Reserved.
- *
- *************************************************************/
-
-#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
-#define SYS_STATUS_DATA_SIZE 44
-#define USER_STATUS_DATA_SIZE (984 - IO_CONFIG_DATA_SIZE - SYS_STATUS_DATA_SIZE)
-#define USER_DS_LCD_DATA_SIZE 128
-
-struct FRCCommonControlData{
- uint16_t packetIndex;
- union {
- uint8_t control;
-#ifdef SIMULATION
- struct {
- uint8_t checkVersions :1;
- uint8_t test :1;
- uint8_t resync : 1;
- uint8_t fmsAttached:1;
- uint8_t autonomous : 1;
- uint8_t enabled : 1;
- uint8_t notEStop : 1;
- uint8_t reset : 1;
- };
-#else
- struct {
- uint8_t reset : 1;
- uint8_t notEStop : 1;
- uint8_t enabled : 1;
- uint8_t autonomous : 1;
- uint8_t fmsAttached:1;
- uint8_t resync : 1;
- uint8_t test :1;
- uint8_t checkVersions :1;
- };
-#endif
- };
- uint8_t dsDigitalIn;
- uint16_t teamID;
-
- char dsID_Alliance;
- char dsID_Position;
-
- union {
- int8_t stick0Axes[6];
- struct {
- int8_t stick0Axis1;
- int8_t stick0Axis2;
- int8_t stick0Axis3;
- int8_t stick0Axis4;
- int8_t stick0Axis5;
- int8_t stick0Axis6;
- };
- };
- uint16_t stick0Buttons; // Left-most 4 bits are unused
-
- union {
- int8_t stick1Axes[6];
- struct {
- int8_t stick1Axis1;
- int8_t stick1Axis2;
- int8_t stick1Axis3;
- int8_t stick1Axis4;
- int8_t stick1Axis5;
- int8_t stick1Axis6;
- };
- };
- uint16_t stick1Buttons; // Left-most 4 bits are unused
-
- union {
- int8_t stick2Axes[6];
- struct {
- int8_t stick2Axis1;
- int8_t stick2Axis2;
- int8_t stick2Axis3;
- int8_t stick2Axis4;
- int8_t stick2Axis5;
- int8_t stick2Axis6;
- };
- };
- uint16_t stick2Buttons; // Left-most 4 bits are unused
-
- union {
- int8_t stick3Axes[6];
- struct {
- int8_t stick3Axis1;
- int8_t stick3Axis2;
- int8_t stick3Axis3;
- int8_t stick3Axis4;
- int8_t stick3Axis5;
- int8_t stick3Axis6;
- };
- };
- uint16_t stick3Buttons; // Left-most 4 bits are unused
-
- //Analog inputs are 10 bit right-justified
- uint16_t analog1;
- uint16_t analog2;
- uint16_t analog3;
- uint16_t analog4;
-
- uint64_t cRIOChecksum;
- uint32_t FPGAChecksum0;
- uint32_t FPGAChecksum1;
- uint32_t FPGAChecksum2;
- uint32_t FPGAChecksum3;
-
- char versionData[8];
-};
-
-#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17
-#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Header 19
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24
-#define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25
-
-extern "C" {
-#ifndef SIMULATION
- void EXPORT_FUNC getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *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_t *batteryInt, uint8_t *batteryDec, uint8_t *dsDigitalOut, int wait_ms);
- int EXPORT_FUNC getDynamicControlData(uint8_t type, char *dynamicData, int32_t maxLength, int wait_ms);
- int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut, uint8_t updateNumber,
- const char *userDataHigh, int userDataHighLength,
- const char *userDataLow, int userDataLowLength, int wait_ms);
- int EXPORT_FUNC setStatusDataFloatAsInt(int battery, uint8_t dsDigitalOut, uint8_t updateNumber,
- const char *userDataHigh, int userDataHighLength,
- const char *userDataLow, int userDataLowLength, 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 EXPORT_FUNC setNewDataSem(SEM_ID);
-#ifndef SIMULATION
- void EXPORT_FUNC setResyncSem(SEM_ID);
- void EXPORT_FUNC signalResyncActionDone(void);
-#endif
-
- // this uint32_t is really a LVRefNum
- void EXPORT_FUNC setNewDataOccurRef(uint32_t refnum);
-#ifndef SIMULATION
- void EXPORT_FUNC setResyncOccurRef(uint32_t refnum);
-#endif
-
- 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/LoadOut.h b/aos/externals/WPILib/WPILib/NetworkCommunication/LoadOut.h
deleted file mode 100644
index f28249e..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/LoadOut.h
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef __LoadOut_h__
-#define __LoadOut_h__
-
-#define kMaxModuleNumber 2
-namespace nLoadOut
-{
- typedef enum {
- kModuleType_Unknown = 0x00,
- kModuleType_Analog = 0x01,
- kModuleType_Digital = 0x02,
- kModuleType_Solenoid = 0x03,
- } tModuleType;
- bool getModulePresence(tModuleType moduleType, uint8_t moduleNumber);
- typedef enum {
- kTargetClass_Unknown = 0x00,
- kTargetClass_FRC1 = 0x10,
- kTargetClass_FRC2 = 0x20,
- kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog,
- kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital,
- kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid,
- kTargetClass_FamilyMask = 0xF0,
- kTargetClass_ModuleMask = 0x0F,
- } tTargetClass;
- tTargetClass getTargetClass();
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- uint32_t FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType, uint8_t moduleNumber);
- uint32_t FRC_NetworkCommunication_nLoadOut_getTargetClass();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // __LoadOut_h__
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/Makefile b/aos/externals/WPILib/WPILib/NetworkCommunication/Makefile
deleted file mode 100644
index bc19164..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/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/NetworkCommunication/UsageReporting.h b/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h
deleted file mode 100644
index 6d499b2..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/UsageReporting.h
+++ /dev/null
@@ -1,135 +0,0 @@
-
-#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
-
-namespace nUsageReporting
-{
- typedef enum
- {
- kResourceType_Controller,
- kResourceType_Module,
- kResourceType_Language,
- kResourceType_CANPlugin,
- kResourceType_Accelerometer,
- kResourceType_ADXL345,
- kResourceType_AnalogChannel,
- kResourceType_AnalogTrigger,
- kResourceType_AnalogTriggerOutput,
- kResourceType_CANJaguar,
- kResourceType_Compressor,
- kResourceType_Counter,
- kResourceType_Dashboard,
- kResourceType_DigitalInput,
- kResourceType_DigitalOutput,
- kResourceType_DriverStationCIO,
- kResourceType_DriverStationEIO,
- kResourceType_DriverStationLCD,
- kResourceType_Encoder,
- kResourceType_GearTooth,
- kResourceType_Gyro,
- kResourceType_I2C,
- kResourceType_Framework,
- kResourceType_Jaguar,
- kResourceType_Joystick,
- kResourceType_Kinect,
- kResourceType_KinectStick,
- kResourceType_PIDController,
- kResourceType_Preferences,
- kResourceType_PWM,
- kResourceType_Relay,
- kResourceType_RobotDrive,
- kResourceType_SerialPort,
- kResourceType_Servo,
- kResourceType_Solenoid,
- kResourceType_SPI,
- kResourceType_Task,
- kResourceType_Ultrasonic,
- kResourceType_Victor,
- kResourceType_Button,
- kResourceType_Command,
- kResourceType_AxisCamera,
- kResourceType_PCVideoServer,
- kResourceType_SmartDashboard,
- kResourceType_Talon,
- kResourceType_HiTechnicColorSensor,
- kResourceType_HiTechnicAccel,
- kResourceType_HiTechnicCompass,
- kResourceType_SRF08,
- } tResourceType;
-
- typedef enum
- {
- kLanguage_LabVIEW = 1,
- kLanguage_CPlusPlus = 2,
- kLanguage_Java = 3,
- kLanguage_Python = 4,
-
- kCANPlugin_BlackJagBridge = 1,
- kCANPlugin_2CAN = 2,
-
- kFramework_Iterative = 1,
- kFramework_Simple = 2,
-
- kRobotDrive_ArcadeStandard = 1,
- kRobotDrive_ArcadeButtonSpin = 2,
- kRobotDrive_ArcadeRatioCurve = 3,
- kRobotDrive_Tank = 4,
- kRobotDrive_MecanumPolar = 5,
- kRobotDrive_MecanumCartesian = 6,
-
- kDriverStationCIO_Analog = 1,
- kDriverStationCIO_DigitalIn = 2,
- kDriverStationCIO_DigitalOut = 3,
-
- kDriverStationEIO_Acceleration = 1,
- kDriverStationEIO_AnalogIn = 2,
- kDriverStationEIO_AnalogOut = 3,
- kDriverStationEIO_Button = 4,
- kDriverStationEIO_LED = 5,
- kDriverStationEIO_DigitalIn = 6,
- kDriverStationEIO_DigitalOut = 7,
- kDriverStationEIO_FixedDigitalOut = 8,
- kDriverStationEIO_PWM = 9,
- kDriverStationEIO_Encoder = 10,
- kDriverStationEIO_TouchSlider = 11,
-
- kADXL345_SPI = 1,
- kADXL345_I2C = 2,
-
- kCommand_Scheduler = 1,
-
- kSmartDashboard_Instance = 1,
- } tInstances;
-
- /**
- * Report the usage of a resource of interest.
- *
- * @param resource one of the values in the tResourceType above (max value 51).
- * @param instanceNumber an index that identifies the resource instance.
- * @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_t EXPORT_FUNC report(tResourceType resource, uint8_t instanceNumber, uint8_t context = 0, const char *feature = NULL);
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- uint32_t EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(uint8_t resource, uint8_t instanceNumber, uint8_t context, const char *feature);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // __UsageReporting_h__
diff --git a/aos/externals/WPILib/WPILib/NetworkCommunication/symModuleLink.h b/aos/externals/WPILib/WPILib/NetworkCommunication/symModuleLink.h
deleted file mode 100644
index dac419d..0000000
--- a/aos/externals/WPILib/WPILib/NetworkCommunication/symModuleLink.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef __SYM_MODULE_LINK_H__
-#define __SYM_MODULE_LINK_H__
-
-#include <vxWorks.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern STATUS moduleNameFindBySymbolName
- (
- const char * symbol, /* symbol name to look for */
- char * module /* where to return module name */
- );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.cpp b/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.cpp
deleted file mode 100644
index 1e92caf..0000000
--- a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.cpp
+++ /dev/null
@@ -1,485 +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 "WPILib/NetworkRobot/NetworkRobot.h"
-
-#include <sockLib.h>
-#include <stdint.h>
-#include <selectLib.h>
-#include <assert.h>
-
-#include "WPILib/Utility.h"
-#include "WPILib/WPIErrors.h"
-#include "WPILib/SensorBase.h"
-#include "WPILib/Timer.h"
-
-const double NetworkRobot::kDisableTime = 0.15;
-
-NetworkRobot::NetworkRobot(uint16_t receive_port, const char *sender_address,
- uint16_t send_port, const char *receiver_address)
- : receive_port_(receive_port), sender_address_(sender_address),
- send_port_(send_port), receiver_address_(receiver_address),
- receive_socket_(-1), send_socket_(-1),
- joystick_values_(),
- send_task_("DS_Send", reinterpret_cast<FUNCPTR>(StaticSendLoop)),
- last_received_timestamp_(0.0),
- last_sent_state_valid_(false),
- digital_modules_(), solenoid_bases_(),
- allocated_digital_outputs_() {
-}
-
-NetworkRobot::~NetworkRobot() {
- // Nothing we can really do about any errors for either of these.
- if (receive_socket_ != -1) {
- close(receive_socket_);
- }
- if (send_socket_ != -1) {
- close(send_socket_);
- }
-
- for (size_t module = 0;
- module < sizeof(solenoid_bases_) / sizeof(solenoid_bases_[0]);
- ++module) {
- delete solenoid_bases_[module];
- }
- for (size_t module = 0;
- module < sizeof(digital_modules_) / sizeof(digital_modules_[0]);
- ++module) {
- for (int i = 0; i < 16; ++i) {
- if (allocated_digital_outputs_[module] & (1 << i)) {
- digital_modules_[module]->FreeDIO(15 - i);
- }
- }
- }
-}
-
-bool NetworkRobot::FillinInAddr(const char *const_ip, in_addr *inet_address) {
- // A copy of the passed in address string because vxworks has the function
- // signature without the const and I don't really trust it not to do something
- // weird and change it.
- // The size is the maximum length of an IP address (including the terminating
- // NUL) (ie "123.456.789.123").
- char non_const_ip[3 + 1 + 3 + 1 + 3 + 1 + 3 + 1];
- size_t ip_length = strlen(const_ip);
- if (ip_length >= sizeof(non_const_ip)) {
- char buf[128];
- snprintf(buf, sizeof(buf), "IP address '%s' is %zd bytes long"
- " but should only be %zd", const_ip,
- ip_length, sizeof(non_const_ip) - 1);
- wpi_setErrorWithContext(-1, buf);
- return false;
- }
- memcpy(non_const_ip, const_ip, ip_length + 1);
- errno = 0;
- if (inet_aton(non_const_ip, inet_address) != 0) {
- char buf[64];
- snprintf(buf, sizeof(buf), "inet_aton(%s)", const_ip);
- wpi_setErrnoErrorWithContext(buf);
- return false;
- }
- return true;
-}
-
-void NetworkRobot::StartCompetition() {
- // Multiplied by 2 to give ourselves plenty of time to get around to feeding
- // it before it completely cuts out everything.
- m_watchdog.SetExpiration(kDisableTime * 2);
-
- // This outer loop is so that it will retry after encountering any errors.
- while (true) {
- if (sender_address_ != NULL) {
- CreateReceiveSocket();
- if (!FillinInAddr(sender_address_, &expected_sender_address_)) return;
- }
-
- if (receiver_address_ != NULL) {
- CreateSendSocket();
- }
-
- if (sender_address_ != NULL) {
- // We only need to do it in a separate task if we're doing both parts.
- if (receiver_address_ != NULL) {
- send_task_.Start(reinterpret_cast<uintptr_t>(this));
- }
-
- while (!StatusIsFatal()) {
- if ((Timer::GetPPCTimestamp() - last_received_timestamp_) >
- kDisableTime) {
- StopOutputs();
- }
- ReceivePacket();
- }
- StopOutputs();
- } else {
- SendLoop();
- }
-
- Cleanup();
- }
-}
-
-void NetworkRobot::StopOutputs() {
- for (size_t module = 0;
- module < sizeof(digital_modules_) / sizeof(digital_modules_[0]);
- ++module) {
- DigitalModule *digital_module = digital_modules_[module];
-
- if (digital_module != NULL) {
- for (int i = 0; i < 10; ++i) {
- // 0 means stop sending anything.
- digital_module->SetPWM(i + 1, 0);
- }
-
- // Turn off all of the ones that we're responsible for.
- digital_module->SetDIOs(allocated_digital_outputs_[module], 0);
-
- // Turn off all of the relays (both directions).
- digital_module->SetRelaysForward(0xFF, 0);
- digital_module->SetRelaysReverse(0xFF, 0);
- }
- }
-
- // Can't do anything intelligent with solenoids. Turning them off can be just
- // as dangerous as leaving them on, so just leave them alone.
-
- // We took care of it, so we don't want the watchdog to permanently disable
- // everything.
- m_watchdog.Feed();
-}
-
-void NetworkRobot::Cleanup() {
- send_task_.Stop();
-
- if (receive_socket_ != -1) {
- if (close(receive_socket_) == ERROR) {
- char buf[64];
- snprintf(buf, sizeof(buf), "close(%d)", receive_socket_);
- wpi_setErrnoErrorWithContext(buf);
- }
- receive_socket_ = -1;
- }
- if (send_socket_ != -1) {
- if (close(send_socket_) == ERROR) {
- char buf[64];
- snprintf(buf, sizeof(buf), "close(%d)", send_socket_);
- wpi_setErrnoErrorWithContext(buf);
- }
- send_socket_ = -1;
- }
-
- ClearError();
-}
-
-bool NetworkRobot::WaitForData() {
- assert(kDisableTime < 1.0);
-
- struct timeval timeout;
- timeout.tv_sec = 0;
- timeout.tv_usec = kDisableTime *
- 1000.0 /*seconds to mseconds*/ *
- 1000.0 /*mseconds to useconds*/ + 0.5;
-
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(receive_socket_, &fds);
-
- int ret = select(receive_socket_ + 1,
- &fds, // read fds
- NULL, // write fds
- NULL, // exception fds (not supported)
- &timeout);
- if (ret == 0) {
- // timeout
- return false;
- } else if (ret == 1) {
- return true;
- } else if (ret != -1) {
- char buf[64];
- snprintf(buf, sizeof(buf), "select returned %d", ret);
- wpi_setErrorWithContext(-1, buf);
- return false;
- } else {
- wpi_setErrnoErrorWithContext("waiting until the socket has data");
- return false;
- }
-}
-
-void NetworkRobot::ReceivePacket() {
- if (!WaitForData()) return;
-
- char buffer[sizeof(motors_) + buffers::kOverhead];
- union {
- sockaddr addr;
- sockaddr_in in;
- } sender_address;
- int sender_address_length = sizeof(sender_address);
- int received = recvfrom(receive_socket_,
- buffer,
- sizeof(buffer),
- 0,
- &sender_address.addr,
- &sender_address_length);
- if (received == -1) {
- if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR ||
- errno == ETIMEDOUT) {
- // All of these are various kinds of timing out.
- return;
- }
- wpi_setErrnoErrorWithContext("recvfrom on motor value socket");
- return;
- }
- assert(static_cast<size_t>(sender_address_length) >=
- sizeof(sender_address.in));
- if (sender_address.in.sin_addr.s_addr !=
- expected_sender_address_.s_addr) {
- char address[INET_ADDR_LEN];
- inet_ntoa_b(sender_address.in.sin_addr, address);
- char buf[64];
- snprintf(buf, sizeof(buf), "Received packet from wrong IP %s", address);
- wpi_setErrorWithContext(1, buf);
- return;
- }
-
- if (motors_.DeserializeFrom(buffer, sizeof(buffer))) {
- ProcessPacket();
- } else {
- char buf[64];
- snprintf(buf, sizeof(buf), "Deserializing from %d byte buffer",
- sizeof(buffer));
- wpi_setErrorWithContext(1, buf);
- return;
- }
-}
-
-void NetworkRobot::ProcessPacket() {
- int8_t digital_number = motors_.digital_module;
- if (digital_number != -1) {
- if (digital_number == 0) {
- digital_number = SensorBase::GetDefaultDigitalModule();
- }
- if (digital_number < 1 ||
- digital_number > static_cast<int32_t>(SensorBase::kDigitalModules)) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Got Digital Module %d",
- static_cast<int>(digital_number));
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- DigitalModule *digital_module = digital_modules_[digital_number - 1];
- if (digital_module == NULL) {
- digital_module = digital_modules_[digital_number - 1] =
- DigitalModule::GetInstance(digital_number);
- for (int i = 0; i < 10; ++i) {
- digital_module->SetPWMPeriodScale(i + 1, 0);
- }
- }
-
- for (int i = 0; i < 10; ++i) {
- digital_module->SetPWM(i + 1, motors_.pwm_outputs[i]);
- }
-
- uint16_t old_allocated = allocated_digital_outputs_[digital_number - 1];
- // Have to keep track of which ones we've (de)allocated as we go through in
- // case we have trouble allocating one of them in the middle.
- for (int i = 0; i < 16; ++i) {
- // If we have it allocated and this packet says we shouldn't.
- if ((old_allocated & (1 << i)) &&
- !(motors_.digital_output_enables & (1 << i))) {
- digital_module->FreeDIO(15 - i);
- allocated_digital_outputs_[digital_number - 1] &= ~(1 << i);
- // If this packet says we should have it allocated and we don't.
- } else if ((motors_.digital_output_enables & (1 << i)) &&
- !(old_allocated & (1 << i))) {
- if (!digital_module->AllocateDIO(15 - i, false /*input*/)) return;
- allocated_digital_outputs_[digital_number - 1] |= 1 << i;
- }
- }
- wpi_assertEqual(allocated_digital_outputs_[digital_number - 1],
- motors_.digital_output_enables);
- digital_module->SetDIOs(motors_.digital_output_enables,
- motors_.digital_output_values);
-
- if (motors_.pressure_switch_channel != 0 &&
- motors_.compressor_channel != 0) {
- digital_module->SetRelayForward(motors_.compressor_channel,
- !digital_module->GetDIO(
- motors_.pressure_switch_channel));
- }
- }
-
- int8_t solenoid_number = motors_.solenoid_module;
- if (solenoid_number != -1) {
- if (solenoid_number == 0) {
- solenoid_number = SensorBase::GetDefaultSolenoidModule();
- }
- if (solenoid_number < 1 ||
- solenoid_number > static_cast<int32_t>(SensorBase::kSolenoidModules)) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Got Solenoid Module %d",
- static_cast<int>(solenoid_number));
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- SolenoidBase *solenoid_base = solenoid_bases_[solenoid_number - 1];
- if (solenoid_base == NULL) {
- solenoid_base = solenoid_bases_[solenoid_number - 1] =
- new SolenoidBase(solenoid_number);
- }
-
- solenoid_base->SetAll(motors_.solenoid_values);
- }
-
- // This code can only assume that whatever is sending it values received the
- // most recent state that it sent out.
- if (last_sent_state_valid_) {
- // Don't have to synchronize with writing the last sent state too because
- // it's ok if we're 1 cycle off. It would just be bad if we reported not
- // being in any state or in 2 states at once.
- RWLock::Locker state_locker(m_ds->GetUserStateLock(), true);
- const DriverStation::FMSState state = last_sent_state_;
- m_ds->InDisabled(state == DriverStation::FMSState::kDisabled);
- m_ds->InAutonomous(state == DriverStation::FMSState::kAutonomous);
- m_ds->InOperatorControl(state == DriverStation::FMSState::kTeleop);
- m_ds->InTest(state == DriverStation::FMSState::kTestMode);
- }
-
- m_watchdog.Feed();
- last_received_timestamp_ = Timer::GetPPCTimestamp();
-}
-
-void NetworkRobot::SendLoop() {
- while (!StatusIsFatal()) {
- m_ds->WaitForData();
-
- {
- RWLock::Locker data_locker(m_ds->GetDataReadLock());
- // Get a pointer to the data and then cast away the volatile because it's
- // annoying to propagate it all over and it's unnecessary here because
- // we have a lock on the data so it's not going to change.
- const FRCCommonControlData *data =
- const_cast<const FRCCommonControlData *>(m_ds->GetControlData());
- CopyStickValues(0, data->stick0Axes, data->stick0Buttons);
- CopyStickValues(1, data->stick1Axes, data->stick1Buttons);
- CopyStickValues(2, data->stick2Axes, data->stick2Buttons);
- CopyStickValues(3, data->stick3Axes, data->stick3Buttons);
-
- joystick_values_.control_packet_index = data->packetIndex;
-
- joystick_values_.team_number = data->teamID;
- joystick_values_.alliance = data->dsID_Alliance;
- joystick_values_.position = data->dsID_Position;
-
- joystick_values_.control.set_test_mode(data->test);
- joystick_values_.control.set_fms_attached(data->fmsAttached);
- joystick_values_.control.set_autonomous(data->autonomous);
- joystick_values_.control.set_enabled(data->enabled);
-
- last_sent_state_ = m_ds->GetCurrentState();
- last_sent_state_valid_ = true;
- }
- ++joystick_values_.index;
-
- char buffer[sizeof(joystick_values_) + buffers::kOverhead];
- ssize_t size = joystick_values_.SerializeTo(buffer, sizeof(buffer));
- if (size <= 0) {
- char buf[64];
- snprintf(buf, sizeof(buf),
- "Serializing joystick values into %d byte buffer",
- sizeof(buffer));
- wpi_setErrorWithContext(-1, buf);
- return;
- }
- ssize_t sent = send(send_socket_, buffer, size, 0);
- if (sent != size) {
- if (sent == -1) {
- if (errno == EINTR || errno == ENOBUFS) {
- // These are all errors that just mean it didn't manage to send this
- // time.
- continue;
- } else {
- wpi_setErrnoErrorWithContext("send to joystick output socket");
- return;
- }
- } else {
- char buf[64];
- snprintf(buf, sizeof(buf), "Wanted to send %d bytes but only sent %d",
- size, sent);
- wpi_setErrorWithContext(1, buf);
- continue;
- }
- }
- }
-}
-
-void NetworkRobot::CopyStickValues(int number,
- const int8_t (&axes)[6],
- uint16_t buttons) {
- for (int i = 0; i < 6; ++i) {
- joystick_values_.joysticks[number].axes[i] = axes[i];
- }
- joystick_values_.joysticks[number].buttons = buttons;
-}
-
-void NetworkRobot::CreateReceiveSocket() {
- wpi_assertEqual(receive_socket_, -1);
-
- receive_socket_ = socket(AF_INET, SOCK_DGRAM, 0);
- if (receive_socket_ < 0) {
- wpi_setErrnoErrorWithContext("Creating UDP Socket");
- receive_socket_ = -1;
- return;
- }
-
- union {
- sockaddr_in in;
- sockaddr addr;
- } address;
- memset(&address, 0, sizeof(address));
- address.in.sin_family = AF_INET;
- address.in.sin_port = receive_port_;
- address.in.sin_addr.s_addr = INADDR_ANY;
- if (bind(receive_socket_, &address.addr, sizeof(address.addr)) == ERROR) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Binding Socket to 0.0.0.0:%d", receive_port_);
- wpi_setErrnoErrorWithContext(buf);
- return;
- }
-
- int on = 1;
- errno = 0;
- if (ioctl(receive_socket_, FIONBIO, reinterpret_cast<int>(&on)) < 0) {
- wpi_setErrnoErrorWithContext("Setting Socket to Non-Blocking Mode");
- return;
- }
-}
-
-void NetworkRobot::CreateSendSocket() {
- wpi_assertEqual(send_socket_, -1);
-
- send_socket_ = socket(AF_INET, SOCK_DGRAM, 0);
- if (send_socket_ < 0) {
- wpi_setErrnoErrorWithContext("Creating UDP Socket");
- send_socket_ = -1;
- return;
- }
-
- union {
- sockaddr_in in;
- sockaddr addr;
- } address;
- memset(&address, 0, sizeof(address));
- address.in.sin_family = AF_INET;
- address.in.sin_port = send_port_;
- if (!FillinInAddr(receiver_address_, &address.in.sin_addr)) return;
-
- if (connect(send_socket_, &address.addr, sizeof(address.addr)) == ERROR) {
- char buf[64];
- snprintf(buf, sizeof(buf), "Connecting Socket to %s:%d",
- receiver_address_, send_port_);
- wpi_setErrnoErrorWithContext(buf);
- return;
- }
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.h b/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.h
deleted file mode 100644
index 7b1e05b..0000000
--- a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobot.h
+++ /dev/null
@@ -1,140 +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 WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_H_
-#define WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_H_
-
-#include <inetLib.h>
-
-#include "WPILib/NetworkRobot/NetworkRobotValues.h"
-#include "WPILib/RobotBase.h"
-#include "WPILib/Base.h"
-#include "WPILib/DigitalModule.h"
-#include "WPILib/ErrorBase.h"
-#include "WPILib/SolenoidBase.h"
-#include "WPILib/Task.h"
-#include "WPILib/DriverStation.h"
-
-// A simple implementation of receiving motor values over UDP and sending
-// joystick data back out.
-// Deals with turning a compressor on and off at the same time.
-// You should not try to change any of the outputs on any of the modules that
-// you have this class control outside of this class.
-// This class takes care of disabling outputs when no packets are received in
-// kDisableTime and feeding the Watchdog correctly.
-//
-// The receiving interface consists of receiving NetworkRobotMotors structs on
-// a given UDP port from a given sender address. Each time a set of motor values
-// is received, this class will update all output values.
-//
-// The sending interface consists of sending NetworkRobotJoysticks structs on a
-// given UDP port to a given sender address. Each time a new Driver's Station
-// packet is received from the FMS code this class will send out another packet
-// with the new values.
-class NetworkRobot : public RobotBase, public ErrorBase {
- protected:
- // Does not take ownership of *sender_address or *receiver_address.
- // A NULL for either address means to not do anything with that part (sending
- // or receiving).
- NetworkRobot(uint16_t receive_port, const char *sender_address,
- uint16_t send_port, const char *receiver_address);
- virtual ~NetworkRobot();
-
- // Called when a valid packet has been received into motors_.
- // Subclasses can override if they want to do more, however they still need to
- // call this implementation.
- virtual void ProcessPacket();
-
- // Called when no packet has been received for too long and it's time to stop
- // everything.
- // Subclasses can override if they want to do more, however they still need to
- // call this implementation.
- virtual void StopOutputs();
-
- private:
- // How long between packets we wait until we disable all of the outputs (in
- // seconds).
- // Must stay less than 1 second with the current implementation.
- static const double kDisableTime;
-
- // Deals with calling inet_aton and passing any errors on to the logging
- // system. A helper is necessary here because inet_aton is normally just kind
- // of annoying to deal with, but under vxworks, you have to make a copy of the
- // string before doing anything with it etc etc so it's really complicated.
- // Returns whether or not it was successful. If it returns false, then an
- // error will have already been recorded.
- bool FillinInAddr(const char *const_ip, in_addr *inet_address);
-
- virtual void StartCompetition();
-
- // Cleans everything up after the main loop encounters an error so that it can
- // try again.
- void Cleanup();
-
- // Waits for receive_socket_ to become readable for up to kDisableTime.
- // Returns whether or not there is readable data available.
- bool WaitForData();
-
- // Attempts to receive a packet (with WaitForData()) and calls ProcessPacket()
- // if it's a good one.
- void ReceivePacket();
-
- // Gets run in its own task to take DS data and send it out.
- void SendLoop();
- static void StaticSendLoop(void *self) {
- static_cast<NetworkRobot *>(self)->SendLoop();
- }
-
- // Sets receive_socket_ to an opened socket listening on receive_port_ to UDP
- // packets from sender_address_.
- void CreateReceiveSocket();
- // Sets send_socket_ to an opened socket sending UDP packets on send_port_ to
- // receiver_address_.
- void CreateSendSocket();
-
- const uint16_t receive_port_;
- const char *const sender_address_;
- struct in_addr expected_sender_address_;
-
- const uint16_t send_port_;
- const char *const receiver_address_;
-
- int receive_socket_;
- NetworkRobotMotors motors_;
-
- int send_socket_;
- NetworkRobotJoysticks joystick_values_;
- // A task set up to run StaticSendLoop (aka SendLoop()).
- // Only actually gets used if we're going to do both parts (sending and
- // receiving).
- Task send_task_;
-
- // Helper function to copy all of the data for a single joystick into
- // joystick_values_.
- // axes and buttons get copied into joystick_values_.joysticks[number].
- void CopyStickValues(int number, const int8_t (&axes)[6], uint16_t buttons);
-
- // Using Timer::GetPPCTimestamp() values.
- double last_received_timestamp_;
-
- // What the last state we sent out was.
- // Kept track of so that we can more accurately report it back.
- DriverStation::FMSState last_sent_state_;
- bool last_sent_state_valid_;
-
- // Ownership of the pointers stored here stays in DigitalModule.
- DigitalModule *digital_modules_[2];
- // This object owns pointers stored here.
- SolenoidBase *solenoid_bases_[2];
-
- // A bitmask of all of the digital outputs that we have currently allocated.
- // In hardware order.
- uint16_t allocated_digital_outputs_[2];
-
- DISALLOW_COPY_AND_ASSIGN(NetworkRobot);
-};
-
-#endif // WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_H_
diff --git a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.cpp b/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.cpp
deleted file mode 100644
index 57760ab..0000000
--- a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.cpp
+++ /dev/null
@@ -1,140 +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 "WPILib/NetworkRobot/NetworkRobotValues.h"
-
-#include <string.h>
-
-namespace buffers {
-namespace {
-
-uint32_t CalculateHashValue(const char *data, size_t size) {
- uint32_t hash_value = 0;
- for (size_t i = 0; i < size; ++i) {
- hash_value = (((hash_value << 8) & 0xFF00) + (data[i] & 0xFF)) % 0x04C11DB7;
- }
- return hash_value;
-}
-
-} // namespace
-
-bool Read::Check() {
- if (data_size_ < kOverhead) return false;
-
- current_index_ = 0;
- uint32_t size = Read32();
- uint32_t hash = Read32();
-
- if (data_size_ < size) return false;
-
- uint32_t expected = CalculateHashValue(data_ + kOverhead, size - kOverhead);
- return hash == expected;
-}
-
-bool Read::ReadCorrectAmount() {
- if (overrun()) return false;
-
- size_t read = current_index_;
-
- current_index_ = 0;
- uint32_t size = Read32();
- current_index_ = kOverhead;
-
- return read == size;
-}
-
-ssize_t Write::Finalize() {
- if (overrun()) return -1;
-
- uint32_t size = current_index_;
- uint32_t hash = CalculateHashValue(data_ + kOverhead, size - kOverhead);
-
- current_index_ = 0;
- Write32(size);
- Write32(hash);
-
- return size;
-}
-
-} // namespace buffers
-
-ssize_t NetworkRobotMotors::SerializeTo(char *data, size_t data_size) const {
- buffers::Write buffer(data, data_size);
-
- buffer.Write8(digital_module);
- for (size_t i = 0; i < sizeof(pwm_outputs) / sizeof(pwm_outputs[0]); ++i) {
- buffer.Write8(pwm_outputs[i]);
- }
- buffer.Write16(digital_output_enables);
- buffer.Write16(digital_output_values);
- buffer.Write8(pressure_switch_channel);
- buffer.Write8(compressor_channel);
- buffer.Write8(solenoid_module);
- buffer.Write8(solenoid_values);
-
- return buffer.Finalize();
-}
-
-bool NetworkRobotMotors::DeserializeFrom(const char *data, size_t data_size) {
- buffers::Read buffer(data, data_size);
- if (!buffer.Check()) return false;
-
- digital_module = buffer.Read8();
- for (size_t i = 0; i < sizeof(pwm_outputs) / sizeof(pwm_outputs[0]); ++i) {
- pwm_outputs[i] = buffer.Read8();
- }
- digital_output_enables = buffer.Read16();
- digital_output_values = buffer.Read16();
- pressure_switch_channel = buffer.Read8();
- compressor_channel = buffer.Read8();
- solenoid_module = buffer.Read8();
- solenoid_values = buffer.Read8();
-
- return buffer.ReadCorrectAmount();
-}
-
-ssize_t NetworkRobotJoysticks::SerializeTo(char *data, size_t data_size) const {
- buffers::Write buffer(data, data_size);
-
- for (size_t i = 0; i < sizeof(joysticks) / sizeof(joysticks[0]); ++i) {
- buffer.Write16(joysticks[i].buttons);
- for (size_t ii = 0;
- ii < sizeof(joysticks[0].axes) / sizeof(joysticks[0].axes[0]);
- ++ii) {
- buffer.Write8(joysticks[i].axes[ii]);
- }
- }
- buffer.Write16(control_packet_index);
- buffer.Write16(index);
- buffer.Write16(team_number);
- buffer.Write8(alliance);
- buffer.Write8(position);
- buffer.Write8(control.bits);
-
- return buffer.Finalize();
-}
-
-bool NetworkRobotJoysticks::DeserializeFrom(const char *data, size_t data_size) {
- buffers::Read buffer(data, data_size);
- if (!buffer.Check()) return false;
-
- for (size_t i = 0; i < sizeof(joysticks) / sizeof(joysticks[0]); ++i) {
- joysticks[i].buttons = buffer.Read16();
- for (size_t ii = 0;
- ii < sizeof(joysticks[0].axes) / sizeof(joysticks[0].axes[0]);
- ++ii) {
- joysticks[i].axes[ii] = buffer.Read8();
- }
- }
- control_packet_index = buffer.Read16();
- index = buffer.Read16();
- team_number = buffer.Read16();
- alliance = buffer.Read8();
- position = buffer.Read8();
- control.bits = buffer.Read8();
-
- return buffer.ReadCorrectAmount();
-}
diff --git a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.h b/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.h
deleted file mode 100644
index 6949582..0000000
--- a/aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.h
+++ /dev/null
@@ -1,280 +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 WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_VALUES_H_
-#define WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_VALUES_H_
-
-#include <stdint.h>
-#include <arpa/inet.h>
-
-// This file needs to not have any dependencies on any other parts of WPILib so
-// that it can be #included by other code (like that which sends these values).
-// All multi-byte values are sent over the network in big endian (network)
-// byte order.
-//
-// The structures get run through a Serialize phase to avoid byte-order,
-// padding, etc compatibility problems.
-
-// Provides a convenient way to serialize/deserialize data.
-// The serialized format consists of a 4-byte size (of everything, including the
-// size and hash value), a 4-byte hash value, and then all of the actual data.
-namespace buffers {
-// The number of extra bytes needed on top of what the actual data takes.
-// Code should use this constant in case other information is added to the
-// start (or end).
-static const size_t kOverhead = 4 + 4;
-
-// Allows reading data out of a buffer.
-// Instances are not safe for concurrent use.
-//
-// To make writing code easier, the Read* methods simply return 0 on overrun.
-// Users should check at the end (see overrun()) to see if all of the data that
-// they read is valid.
-class Read {
- public:
- // Does not take ownership of data, but the object will use it throughout its
- // lifetime.
- Read(const char *data, size_t data_size)
- : data_(data), data_size_(data_size), current_index_(kOverhead) {}
-
- // Returns whether there is enough data according to the size recorded with
- // the data and the hash value is correct.
- // Will reset the current read position to the beginning of the data unless
- // overrun() is true.
- bool Check();
-
- // Returns whether or not the correct amount of data (according to the size
- // stored at the start) was read.
- // Will reset the current read position to the beginning of the data unless
- // overrun() is true.
- bool ReadCorrectAmount();
-
- uint8_t Read8() {
- current_index_ += 1;
- if (overrun()) return 0;
- return data_[current_index_ - 1];
- }
- uint16_t Read16() {
- current_index_ += 2;
- if (overrun()) return 0;
- union {
- uint16_t value;
- uint8_t bytes[2];
- } value;
- value.bytes[0] = data_[current_index_ - 2];
- value.bytes[1] = data_[current_index_ - 1];
- return ntohs(value.value);
- }
- uint32_t Read32() {
- current_index_ += 4;
- if (overrun()) return 0;
- union {
- uint32_t value;
- uint8_t bytes[4];
- } value;
- value.bytes[0] = data_[current_index_ - 4];
- value.bytes[1] = data_[current_index_ - 3];
- value.bytes[2] = data_[current_index_ - 2];
- value.bytes[3] = data_[current_index_ - 1];
- return ntohl(value.value);
- }
-
- // Returns whether or not we ran over the end.
- bool overrun() const { return current_index_ > data_size_; }
-
- private:
- // Where we are reading or writing from. Not owned by this object.
- const char *const data_;
- const size_t data_size_;
-
- // The index of the next read/write to data_.
- size_t current_index_;
-};
-
-// Allows writing data into a buffer.
-// Instances are not safe for concurrent use.
-//
-// To make writing code easier, the Write* methods simply do nothing on overrun.
-// Users should check at the end (see overrun()) to see if all of the data that
-// they write actually got written.
-class Write {
- public:
- Write(char *data, size_t data_size)
- : data_(data), data_size_(data_size), current_index_(kOverhead) {}
-
- // Fills in the hash value and size at the beginning and returns the number of
- // bytes used.
- // Afterwards, further writes will go to the beginning of the data again.
- // Returns the number of bytes used (including kOverhead at the beginning) or
- // -1 if writing too much data was attempted.
- ssize_t Finalize();
-
- void Write8(uint8_t value) {
- current_index_ += 1;
- if (overrun()) return;
- data_[current_index_ - 1] = value;
- }
- void Write16(uint16_t value) {
- current_index_ += 2;
- if (overrun()) return;
- union {
- uint16_t value;
- uint8_t bytes[2];
- } flipped;
- flipped.value = htons(value);
- data_[current_index_ - 2] = flipped.bytes[0];
- data_[current_index_ - 1] = flipped.bytes[1];
- }
- void Write32(uint32_t value) {
- current_index_ += 4;
- if (overrun()) return;
- union {
- uint32_t value;
- uint8_t bytes[4];
- } flipped;
- flipped.value = htonl(value);
- data_[current_index_ - 4] = flipped.bytes[0];
- data_[current_index_ - 3] = flipped.bytes[1];
- data_[current_index_ - 2] = flipped.bytes[2];
- data_[current_index_ - 1] = flipped.bytes[3];
- }
-
- // Returns whether or not we ran over the end.
- bool overrun() const { return current_index_ > data_size_; }
-
- private:
- // Where we are reading or writing from. Not owned by this object.
- char *const data_;
- const size_t data_size_;
-
- // The index of the next read/write to data_.
- size_t current_index_;
-};
-
-} // namespace buffers
-
-// Contains motor and other output values.
-// All channel and module numbers are 1-based like usual.
-struct NetworkRobotMotors {
- // Which digital module this packet has values for (1 or 2).
- // 0 means the default one and -1 means to not update any one.
- int8_t digital_module;
- // Raw values for all 10 PWM outputs.
- uint8_t pwm_outputs[10];
-
- // Bitmasks for enabling digital outputs and what values to set them to.
- // See DigitalModule::SetDIOs for which bit is which.
- uint16_t digital_output_enables;
- uint16_t digital_output_values;
-
- // Channels for a presssure switch and compressor to turn on and off based on
- // the value from it.
- // Whatever compressor channel is sent will be updated with the value from the
- // corresponding pressure switch channel when the packet is received.
- // 0 means to not do anything.
- uint8_t pressure_switch_channel, compressor_channel;
-
- // Which solenoid module this packet has values for (1 or 2).
- // 0 means the default one and -1 means to not update any one.
- int8_t solenoid_module;
- // 1 bit for each solenoid output.
- uint8_t solenoid_values;
-
- // Serializes this object into data (which must be a buffer with at least
- // data_size bytes in it).
- // data_size should be at least sizeof(*this) + buffers::kOverhead to make sure
- // that it is big enough.
- // See DeserializeFrom to decode data back into an instance of this class.
- // Returns the number of bytes of data that were used or -1 if data_size is
- // too small.
- ssize_t SerializeTo(char *data, size_t data_size) const;
- // Deserializes data into this object (which must be a buffer of at least
- // data_size bytes).
- // data should be (all of) the data written by SerializeTo.
- // Returns whether or not the hash value etc information in data matched (if
- // false, the members of this object may or may not have been modified).
- bool DeserializeFrom(const char *data, size_t data_size);
-};
-
-// The structure that the cRIO sends out with joystick positions etc.
-struct NetworkRobotJoysticks {
- // A structure that stores the information about a joystick and instances for
- // each of the 4 joysticks.
- struct Joystick {
- // Bitmask of the button values.
- // The LSB is button 1 and only a maximum of 12 are supported.
- uint16_t buttons;
- // Raw values for each of the 6 joystick axes.
- // The range of values depends on the joystick.
- int8_t axes[6];
- } joysticks[4];
-
- // The index number from the DS.
- uint16_t control_packet_index;
- // An index for this structure. Gets incremented by 1 for each one of these
- // structures that is sent.
- uint16_t index;
-
- // The team number that the DS is configured for.
- uint16_t team_number;
- // Which alliance the robot is on. Should be 'R' or 'B'.
- char alliance;
- // Which position the DS is in on the field. Should be '1', '2', or '3'.
- char position;
-
- // A structure that efficiently stores the control data bits from the DS and
- // has methods for safely and easily getting and setting them and an instance
- // of it for actually sending the information.
- // Not just a C bitfield because those are a mess for portability.
- struct ControlInformation {
- bool test_mode() const { return GetBit(kTestMode); }
- void set_test_mode(bool value) { SetBit(kTestMode, value); }
- bool fms_attached() const { return GetBit(kFmsAttached); }
- void set_fms_attached(bool value) { SetBit(kFmsAttached, value); }
- bool autonomous() const { return GetBit(kAutonomous); }
- void set_autonomous(bool value) { SetBit(kAutonomous, value); }
- bool enabled() const { return GetBit(kEnabled); }
- void set_enabled(bool value) { SetBit(kEnabled, value); }
-
- private:
- // Constants for which bit is which.
- static const int kTestMode = 0;
- static const int kFmsAttached = 1;
- static const int kAutonomous = 2;
- static const int kEnabled = 3;
-
- bool GetBit(int bit) const {
- return bits & (1 << bit);
- }
- void SetBit(int bit, bool value) {
- uint8_t mask = 1 << bit;
- bits &= ~mask;
- bits |= (mask & (value ? 0xFF : 0x00));
- }
-
- // So that it can access bits directly for Serialize/Deserialize.
- friend struct NetworkRobotJoysticks;
-
- uint8_t bits;
- } control;
-
- // Serializes this object into data (which must be a buffer with at least
- // data_size bytes in it).
- // data_size should be at least sizeof(*this) + buffers::kOverhead to make sure
- // that it is big enough.
- // See DeserializeFrom to decode data back into an instance of this class.
- // Returns the number of bytes of data that were used or -1 if data_size is
- // too small.
- ssize_t SerializeTo(char *data, size_t data_size) const;
- // Deserializes data into this object (which must be a buffer of at least
- // data_size bytes).
- // data should be (all of) the data written by SerializeTo.
- // Returns whether or not the hash value etc information in data matched (if
- // false, the members of this object may or may not have been modified).
- bool DeserializeFrom(const char *data, size_t data_size);
-};
-
-#endif // WPILIB_NETWORK_ROBOT_NETWORK_ROBOT_VALUES_H_
diff --git a/aos/externals/WPILib/WPILib/Notifier.cpp b/aos/externals/WPILib/WPILib/Notifier.cpp
deleted file mode 100644
index ebb42c7..0000000
--- a/aos/externals/WPILib/WPILib/Notifier.cpp
+++ /dev/null
@@ -1,273 +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 "Notifier.h"
-#include "Timer.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-
-const uint32_t Notifier::kTimerInterruptNumber;
-Notifier *Notifier::timerQueueHead = NULL;
-ReentrantSemaphore Notifier::queueSemaphore;
-tAlarm *Notifier::talarm = NULL;
-tInterruptManager *Notifier::manager = NULL;
-int Notifier::refcount = 0;
-
-/**
- * Create a Notifier for timer event notification.
- * @param handler The handler is called at the notification time which is set
- * using StartSingle or StartPeriodic.
- */
-Notifier::Notifier(TimerEventHandler handler, void *param)
-{
- if (handler == NULL)
- wpi_setWPIErrorWithContext(NullParameter, "handler must not be NULL");
- m_handler = handler;
- m_param = param;
- m_periodic = false;
- m_expirationTime = 0;
- m_period = 0;
- m_nextEvent = NULL;
- m_queued = false;
- m_handlerSemaphore = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(queueSemaphore);
- // do the first time intialization of static variables
- if (refcount == 0)
- {
- manager = new tInterruptManager(1 << kTimerInterruptNumber, false, &localStatus);
- manager->registerHandler(ProcessQueue, NULL, &localStatus);
- manager->enable(&localStatus);
- talarm = tAlarm::create(&localStatus);
- }
- refcount++;
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Free the resources for a timer event.
- * All resources will be freed and the timer event will be removed from the
- * queue if necessary.
- */
-Notifier::~Notifier()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- {
- Synchronized sync(queueSemaphore);
- DeleteFromQueue();
-
- // Delete the static variables when the last one is going away
- if (!(--refcount))
- {
- talarm->writeEnable(false, &localStatus);
- delete talarm;
- talarm = NULL;
- manager->disable(&localStatus);
- delete manager;
- manager = NULL;
- }
- }
- wpi_setError(localStatus);
-
- // Acquire the semaphore; this makes certain that the handler is
- // not being executed by the interrupt manager.
- semTake(m_handlerSemaphore, WAIT_FOREVER);
- // Delete while holding the semaphore so there can be no race.
- semDelete(m_handlerSemaphore);
-}
-
-/**
- * Update the alarm hardware to reflect the current first element in the queue.
- * Compute the time the next alarm should occur based on the current time and the
- * period for the first element in the timer queue.
- * WARNING: this method does not do synchronization! It must be called from somewhere
- * that is taking care of synchronizing access to the queue.
- */
-void Notifier::UpdateAlarm()
-{
- if (timerQueueHead != NULL)
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- // write the first item in the queue into the trigger time
- talarm->writeTriggerTime((uint32_t)(timerQueueHead->m_expirationTime * 1e6), &localStatus);
- // Enable the alarm. The hardware disables itself after each alarm.
- talarm->writeEnable(true, &localStatus);
- wpi_setStaticError(timerQueueHead, localStatus);
- }
-}
-
-/**
- * ProcessQueue is called whenever there is a timer interrupt.
- * We need to wake up and process the current top item in the timer queue as long
- * as its scheduled time is after the current time. Then the item is removed or
- * rescheduled (repetitive events) in the queue.
- */
-void Notifier::ProcessQueue(uint32_t mask, void *params)
-{
- Notifier *current;
- while (true) // keep processing past events until no more
- {
- {
- Synchronized sync(queueSemaphore);
- double currentTime = GetClock();
- current = timerQueueHead;
- if (current == NULL || current->m_expirationTime > currentTime)
- {
- break; // no more timer events to process
- }
- // need to process this entry
- timerQueueHead = current->m_nextEvent;
- if (current->m_periodic)
- {
- // if periodic, requeue the event
- // compute when to put into queue
- current->InsertInQueue(true);
- }
- else
- {
- // not periodic; removed from queue
- current->m_queued = false;
- }
- // Take handler semaphore while holding queue semaphore to make sure
- // the handler will execute to completion in case we are being deleted.
- semTake(current->m_handlerSemaphore, WAIT_FOREVER);
- }
-
- current->m_handler(current->m_param); // call the event handler
- semGive(current->m_handlerSemaphore);
- }
- // reschedule the first item in the queue
- Synchronized sync(queueSemaphore);
- UpdateAlarm();
-}
-
-/**
- * Insert this Notifier into the timer queue in right place.
- * WARNING: this method does not do synchronization! It must be called from somewhere
- * that is taking care of synchronizing access to the queue.
- * @param reschedule If false, the scheduled alarm is based on the curent time and UpdateAlarm
- * method is called which will enable the alarm if necessary.
- * If true, update the time by adding the period (no drift) when rescheduled periodic from ProcessQueue.
- * This ensures that the public methods only update the queue after finishing inserting.
- */
-void Notifier::InsertInQueue(bool reschedule)
-{
- if (reschedule)
- {
- m_expirationTime += m_period;
- }
- else
- {
- m_expirationTime = GetClock() + m_period;
- }
- if (timerQueueHead == NULL || timerQueueHead->m_expirationTime >= this->m_expirationTime)
- {
- // the queue is empty or greater than the new entry
- // the new entry becomes the first element
- this->m_nextEvent = timerQueueHead;
- timerQueueHead = this;
- if (!reschedule)
- {
- // since the first element changed, update alarm, unless we already plan to
- UpdateAlarm();
- }
- }
- else
- {
- for (Notifier **npp = &(timerQueueHead->m_nextEvent); ; npp = &(*npp)->m_nextEvent)
- {
- Notifier *n = *npp;
- if (n == NULL || n->m_expirationTime > this->m_expirationTime)
- {
- *npp = this;
- this->m_nextEvent = n;
- break;
- }
- }
- }
- m_queued = true;
-}
-
-/**
- * Delete this Notifier from the timer queue.
- * WARNING: this method does not do synchronization! It must be called from somewhere
- * that is taking care of synchronizing access to the queue.
- * Remove this Notifier from the timer queue and adjust the next interrupt time to reflect
- * the current top of the queue.
- */
-void Notifier::DeleteFromQueue()
-{
- if (m_queued)
- {
- m_queued = false;
- wpi_assert(timerQueueHead != NULL);
- if (timerQueueHead == this)
- {
- // remove the first item in the list - update the alarm
- timerQueueHead = this->m_nextEvent;
- UpdateAlarm();
- }
- else
- {
- for (Notifier *n = timerQueueHead; n != NULL; n = n->m_nextEvent)
- {
- if (n->m_nextEvent == this)
- {
- // this element is the next element from *n from the queue
- n->m_nextEvent = this->m_nextEvent; // point around this one
- }
- }
- }
- }
-}
-
-/**
- * Register for single event notification.
- * A timer event is queued for a single event after the specified delay.
- * @param delay Seconds to wait before the handler is called.
- */
-void Notifier::StartSingle(double delay)
-{
- Synchronized sync(queueSemaphore);
- m_periodic = false;
- m_period = delay;
- DeleteFromQueue();
- InsertInQueue(false);
-}
-
-/**
- * Register for periodic event notification.
- * A timer event is queued for periodic event notification. Each time the interrupt
- * 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)
-{
- Synchronized sync(queueSemaphore);
- m_periodic = true;
- m_period = period;
- DeleteFromQueue();
- InsertInQueue(false);
-}
-
-/**
- * Stop timer events from occuring.
- * Stop any repeating timer events from occuring. This will also remove any single
- * notification events from the queue.
- * If a timer-based call to the registered handler is in progress, this function will
- * block until the handler call is complete.
- */
-void Notifier::Stop()
-{
- {
- Synchronized sync(queueSemaphore);
- DeleteFromQueue();
- }
- // Wait for a currently executing handler to complete before returning from Stop()
- Synchronized sync(m_handlerSemaphore);
-}
diff --git a/aos/externals/WPILib/WPILib/Notifier.h b/aos/externals/WPILib/WPILib/Notifier.h
deleted file mode 100644
index e9904a1..0000000
--- a/aos/externals/WPILib/WPILib/Notifier.h
+++ /dev/null
@@ -1,47 +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 NOTIFIER_H
-#define NOTIFIER_H
-
-#include "ChipObject.h"
-#include "ErrorBase.h"
-#include "Synchronized.h"
-
-typedef void (*TimerEventHandler)(void *param);
-
-class Notifier : public ErrorBase
-{
-public:
- Notifier(TimerEventHandler handler, void *param = NULL);
- virtual ~Notifier();
- void StartSingle(double delay);
- void StartPeriodic(double period);
- void Stop();
-private:
- static Notifier *timerQueueHead;
- static ReentrantSemaphore queueSemaphore;
- static tAlarm *talarm;
- static tInterruptManager *manager;
- static int refcount;
-
- static const uint32_t kTimerInterruptNumber = 28;
- static void ProcessQueue(uint32_t mask, void *params); // process the timer queue on a timer event
- static void UpdateAlarm(); // update the FPGA alarm since the queue has changed
- void InsertInQueue(bool reschedule); // insert this Notifier in the timer queue
- void DeleteFromQueue(); // delete this Notifier from the timer queue
- TimerEventHandler m_handler; // address of the handler
- void *m_param; // a parameter to pass to the handler
- double m_period; // the relative time (either periodic or single)
- double m_expirationTime; // absolute expiration time for the current event
- Notifier *m_nextEvent; // next Nofifier event
- bool m_periodic; // true if this is a periodic event
- bool m_queued; // indicates if this entry is queued
- SEM_ID m_handlerSemaphore; // held by interrupt manager task while handler call is in progress
- DISALLOW_COPY_AND_ASSIGN(Notifier);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/OSAL/Synchronized.cpp b/aos/externals/WPILib/WPILib/OSAL/Synchronized.cpp
deleted file mode 100644
index 53aa960..0000000
--- a/aos/externals/WPILib/WPILib/OSAL/Synchronized.cpp
+++ /dev/null
@@ -1,42 +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 "OSAL/Synchronized.h"
-
-/**
- * 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.
- * This ensures that no matter how the block is exited, the semaphore will always be released.
- * Use the CRITICAL_REGION(SEM_ID) and END_REGION macros to make the code look cleaner (see header file)
- * @param semaphore The semaphore controlling this critical region.
- */
-NTSynchronized::NTSynchronized(SEM_ID semaphore)
-{
- usingSem = false;
- m_semaphore = semaphore;
- semTake(m_semaphore, WAIT_FOREVER);
-}
-
-NTSynchronized::NTSynchronized(NTReentrantSemaphore& sem)
-{
- usingSem = true;
- m_sem = &sem;
- m_sem->take();
-}
-
-/**
- * Syncronized destructor.
- * This destructor frees the semaphore ensuring that the resource is freed for the block
- * containing the Synchronized object.
- */
-NTSynchronized::~NTSynchronized()
-{
- if(usingSem)
- m_sem->give();
- else
- semGive(m_semaphore);
-}
diff --git a/aos/externals/WPILib/WPILib/OSAL/Synchronized.h b/aos/externals/WPILib/WPILib/OSAL/Synchronized.h
deleted file mode 100644
index bcf4634..0000000
--- a/aos/externals/WPILib/WPILib/OSAL/Synchronized.h
+++ /dev/null
@@ -1,98 +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 NT_SYNCHRONIZED_H
-#define NT_SYNCHRONIZED_H
-
-#define NT_CRITICAL_REGION(s) { NTSynchronized _sync(s);
-#define NT_END_REGION }
-
-#if (defined __vxworks || defined WIN32)
-
-#ifdef __vxworks
-#include <vxWorks.h>
-#endif
-#include <semLib.h>
-
-class NTReentrantSemaphore
-{
-public:
- explicit NTReentrantSemaphore(){
- m_semaphore = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
- };
- ~NTReentrantSemaphore(){
- semDelete(m_semaphore);
- };
- void take(){
- semTake(m_semaphore, WAIT_FOREVER);
- };
- void give(){
- semGive(m_semaphore);
- };
-private:
- SEM_ID m_semaphore;
-};
-
-#else
-
-#include <pthread.h>
-
-class NTReentrantSemaphore
-{
-public:
- explicit NTReentrantSemaphore(){
- pthread_mutexattr_init(&mta);
- pthread_mutexattr_settype(&mta, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&m_semaphore, &mta);
- };
- ~NTReentrantSemaphore(){
- pthread_mutex_unlock(&m_semaphore);
- pthread_mutex_destroy(&m_semaphore);
- };
- void take(){
- pthread_mutex_lock(&m_semaphore);
- };
- void give(){
- pthread_mutex_unlock(&m_semaphore);
- };
-private:
- pthread_mutexattr_t mta;
- pthread_mutex_t m_semaphore;
-};
-#endif // __vxworks
-
-/**
- * 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).
- */
-class NTSynchronized
-{
-public:
- explicit NTSynchronized(NTReentrantSemaphore&);
- //TODO remove vxworks SEM_ID support
-#if (defined __vxworks || defined WIN32)
- explicit NTSynchronized(SEM_ID);
-#endif
- virtual ~NTSynchronized();
-private:
-#if (defined __vxworks || defined WIN32)
- bool usingSem;
- NTReentrantSemaphore* m_sem;
- SEM_ID m_semaphore;
-#else
- NTReentrantSemaphore& m_semaphore;
-#endif
-};
-
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/OSAL/Task.cpp b/aos/externals/WPILib/WPILib/OSAL/Task.cpp
deleted file mode 100644
index 59596d1..0000000
--- a/aos/externals/WPILib/WPILib/OSAL/Task.cpp
+++ /dev/null
@@ -1,216 +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 "OSAL/Task.h"
-
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include <errnoLib.h>
-#include <string.h>
-#include <taskLib.h>
-#include <usrLib.h>
-
-const UINT32 NTTask::kDefaultPriority;
-const INT32 NTTask::kInvalidTaskID;
-
-/**
- * Create but don't launch a task.
- * @param name The name of the task. "FRC_" will be prepended to the task name.
- * @param function The address of the function to run as the new task.
- * @param priority The VxWorks priority for the task.
- * @param stackSize The size of the stack for the task
- */
-NTTask::NTTask(const char* name, FUNCPTR function, INT32 priority, UINT32 stackSize)
-{
- m_taskID = kInvalidTaskID;
- m_function = function;
- m_priority = priority;
- m_stackSize = stackSize;
- m_taskName = new char[strlen(name) + 5];
- strcpy(m_taskName, "FRC_");
- strcpy(m_taskName+4, name);
-
- static INT32 instances = 0;
- instances++;
- //nUsageReporting::report(nUsageReporting::kResourceType_Task, instances, 0, m_taskName);
-}
-
-NTTask::~NTTask()
-{
- if (m_taskID != kInvalidTaskID) Stop();
- delete [] m_taskName;
- m_taskName = NULL;
-}
-
-/**
- * Starts this task.
- * If it is already running or unable to start, it fails and returns false.
- */
-bool NTTask::Start(UINT32 arg0, UINT32 arg1, UINT32 arg2, UINT32 arg3, UINT32 arg4,
- UINT32 arg5, UINT32 arg6, UINT32 arg7, UINT32 arg8, UINT32 arg9)
-{
- m_taskID = taskSpawn(m_taskName,
- m_priority,
- VX_FP_TASK, // options
- m_stackSize, // stack size
- m_function, // function to start
- arg0, arg1, arg2, arg3, arg4, // parameter 1 - pointer to this class
- arg5, arg6, arg7, arg8, arg9);// additional unused parameters
- bool ok = HandleError(m_taskID);
- if (!ok) m_taskID = kInvalidTaskID;
- return ok;
-}
-
-/**
- * Restarts a running task.
- * If the task isn't started, it starts it.
- * @return false if the task is running and we are unable to kill the previous instance
- */
-bool NTTask::Restart()
-{
- return HandleError(taskRestart(m_taskID));
-}
-
-/**
- * Kills the running task.
- * @returns true on success false if the task doesn't exist or we are unable to kill it.
- */
-bool NTTask::Stop()
-{
- bool ok = true;
- if (Verify())
- {
- ok = HandleError(taskDelete(m_taskID));
- }
- m_taskID = kInvalidTaskID;
- return ok;
-}
-
-/**
- * Returns true if the task is ready to execute (i.e. not suspended, delayed, or blocked).
- * @return true if ready, false if not ready.
- */
-bool NTTask::IsReady()
-{
- return taskIsReady(m_taskID);
-}
-
-/**
- * Returns true if the task was explicitly suspended by calling Suspend()
- * @return true if suspended, false if not suspended.
- */
-bool NTTask::IsSuspended()
-{
- return taskIsSuspended(m_taskID);
-}
-
-/**
- * Pauses a running task.
- * Returns true on success, false if unable to pause or the task isn't running.
- */
-bool NTTask::Suspend()
-{
- return HandleError(taskSuspend(m_taskID));
-}
-
-/**
- * Resumes a paused task.
- * Returns true on success, false if unable to resume or if the task isn't running/paused.
- */
-bool NTTask::Resume()
-{
- return HandleError(taskResume(m_taskID));
-}
-
-/**
- * Verifies a task still exists.
- * @returns true on success.
- */
-bool NTTask::Verify()
-{
- return taskIdVerify(m_taskID) == OK;
-}
-
-/**
- * Gets the priority of a task.
- * @returns task priority or 0 if an error occured
- */
-INT32 NTTask::GetPriority()
-{
- if (HandleError(taskPriorityGet(m_taskID, &m_priority)))
- return m_priority;
- else
- return 0;
-}
-
-/**
- * This routine changes a task's priority to a specified priority.
- * Priorities range from 0, the highest priority, to 255, the lowest priority.
- * Default task priority is 100.
- * @param priority The priority the task should run at.
- * @returns true on success.
- */
-bool NTTask::SetPriority(INT32 priority)
-{
- m_priority = priority;
- return HandleError(taskPrioritySet(m_taskID, m_priority));
-}
-
-/**
- * Returns the name of the task.
- * @returns Pointer to the name of the task or NULL if not allocated
- */
-const char* NTTask::GetName()
-{
- return m_taskName;
-}
-
-/**
- * Get the ID of a task
- * @returns Task ID of this task. Task::kInvalidTaskID (-1) if the task has not been started or has already exited.
- */
-INT32 NTTask::GetID()
-{
- if (Verify())
- return m_taskID;
- return kInvalidTaskID;
-}
-
-/**
- * Handles errors generated by task related code.
- */
-bool NTTask::HandleError(STATUS results)
-{
- if (results != ERROR) return true;
- switch(errnoGet())
- {
- case S_objLib_OBJ_ID_ERROR:
- wpi_setWPIErrorWithContext(TaskIDError, m_taskName);
- break;
-
- case S_objLib_OBJ_DELETED:
- wpi_setWPIErrorWithContext(TaskDeletedError, m_taskName);
- break;
-
- case S_taskLib_ILLEGAL_OPTIONS:
- wpi_setWPIErrorWithContext(TaskOptionsError, m_taskName);
- break;
-
- case S_memLib_NOT_ENOUGH_MEMORY:
- wpi_setWPIErrorWithContext(TaskMemoryError, m_taskName);
- break;
-
- case S_taskLib_ILLEGAL_PRIORITY:
- wpi_setWPIErrorWithContext(TaskPriorityError, m_taskName);
- break;
-
- default:
- printErrno(errnoGet());
- wpi_setWPIErrorWithContext(TaskError, m_taskName);
- }
- return false;
-}
-
diff --git a/aos/externals/WPILib/WPILib/OSAL/Task.h b/aos/externals/WPILib/WPILib/OSAL/Task.h
deleted file mode 100644
index 67de9d6..0000000
--- a/aos/externals/WPILib/WPILib/OSAL/Task.h
+++ /dev/null
@@ -1,76 +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 __NTTASK_H__
-#define __NTTASK_H__
-
-#if (defined __vxworks || defined WIN32)
-
-#include "ErrorBase.h"
-#ifdef __vxworks
-#include <vxWorks.h>
-#endif
-
-/**
- * WPI task is a wrapper for the native Task object.
- * All WPILib tasks are managed by a static task manager for simplified cleanup.
- **/
-class NTTask : public ErrorBase
-{
-public:
- static const UINT32 kDefaultPriority = 101;
- static const INT32 kInvalidTaskID = -1;
-
- NTTask(const char* name, FUNCPTR function, INT32 priority = kDefaultPriority, UINT32 stackSize = 20000);
- virtual ~NTTask();
-
- #ifdef WIN32
- bool Start(void * arg0);
- #else
- bool Start(UINT32 arg0 = 0, UINT32 arg1 = 0, UINT32 arg2 = 0, UINT32 arg3 = 0, UINT32 arg4 = 0,
- UINT32 arg5 = 0, UINT32 arg6 = 0, UINT32 arg7 = 0, UINT32 arg8 = 0, UINT32 arg9 = 0);
- #endif
-
- bool Restart();
- bool Stop();
-
- bool IsReady();
- bool IsSuspended();
-
- bool Suspend();
- bool Resume();
-
- bool Verify();
-
- INT32 GetPriority();
- bool SetPriority(INT32 priority);
- const char* GetName();
- INT32 GetID();
-
- #ifdef WIN32
- FUNCPTR m_function;
- void * m_Arg;
- #endif
-private:
- char* m_taskName;
-
- #ifdef WIN32
- bool StartInternal();
- HANDLE m_Handle;
- DWORD m_ID;
- #else
- FUNCPTR m_function;
- INT32 m_taskID;
- #endif
-
- UINT32 m_stackSize;
- INT32 m_priority;
- bool HandleError(STATUS results);
- DISALLOW_COPY_AND_ASSIGN(NTTask);
-};
-
-#endif // __vxworks
-#endif // __TASK_H__
diff --git a/aos/externals/WPILib/WPILib/PIDController.cpp b/aos/externals/WPILib/WPILib/PIDController.cpp
deleted file mode 100644
index 0bdefb2..0000000
--- a/aos/externals/WPILib/WPILib/PIDController.cpp
+++ /dev/null
@@ -1,613 +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 "PIDController.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Notifier.h"
-#include "PIDSource.h"
-#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
- * @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,
- PIDSource *source, PIDOutput *output,
- float period) :
- m_semaphore (0)
-{
- 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;
-
- m_maximumInput = 0;
- m_minimumInput = 0;
-
- m_continuous = false;
- m_enabled = false;
- m_setpoint = 0;
-
- m_prevError = 0;
- m_totalError = 0;
- m_tolerance = .05;
-
- m_result = 0;
-
- m_pidInput = source;
- m_pidOutput = output;
- m_period = period;
-
- m_controlLoop->StartPeriodic(m_period);
-
- static int32_t instances = 0;
- instances++;
- nUsageReporting::report(nUsageReporting::kResourceType_PIDController, instances);
-
- m_toleranceType = kNoTolerance;
-}
-
-/**
- * Free the PID object
- */
-PIDController::~PIDController()
-{
- semFlush(m_semaphore);
- delete m_controlLoop;
-}
-
-/**
- * Call the Calculate method as a non-static method. This avoids having to prepend
- * all local variables in that method with the class pointer. This way the "this"
- * pointer will be set up and class variables can be called more easily.
- * This method is static and called by the Notifier class.
- * @param controller the address of the PID controller object to use in the background loop
- */
-void PIDController::CallCalculate(void *controller)
-{
- PIDController *control = (PIDController*) controller;
- control->Calculate();
-}
-
- /**
- * Read the input, calculate the output accordingly, and write to the output.
- * This should only be called by the Notifier indirectly through CallCalculate
- * and is created during initialization.
- */
-void PIDController::Calculate()
-{
- bool enabled;
- PIDSource *pidInput;
-
- CRITICAL_REGION(m_semaphore)
- {
- if (m_pidInput == 0) return;
- if (m_pidOutput == 0) return;
- enabled = m_enabled;
- pidInput = m_pidInput;
- }
- END_REGION;
-
- if (enabled)
- {
- float input = pidInput->PIDGet();
- float result;
- PIDOutput *pidOutput;
-
- {
- Synchronized sync(m_semaphore);
- m_error = m_setpoint - input;
- if (m_continuous)
- {
- if (fabs(m_error) > (m_maximumInput - m_minimumInput) / 2)
- {
- if (m_error > 0)
- {
- m_error = m_error - m_maximumInput + m_minimumInput;
- }
- else
- {
- m_error = m_error + m_maximumInput - m_minimumInput;
- }
- }
- }
-
- if(m_I != 0)
- {
- 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_maximumOutput / m_I;
- }
- }
-
- 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;
- else if (m_result < m_minimumOutput) m_result = m_minimumOutput;
-
- pidOutput = m_pidOutput;
- result = m_result;
- }
-
- pidOutput->PIDWrite(result);
- }
-}
-
-/**
- * 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 PIDController::SetPID(float p, float i, float d)
-{
- CRITICAL_REGION(m_semaphore)
- {
- m_P = p;
- m_I = i;
- 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);
- }
-}
-
-/**
- * Get the Proportional coefficient
- * @return proportional coefficient
- */
-float PIDController::GetP()
-{
- CRITICAL_REGION(m_semaphore)
- {
- return m_P;
- }
- END_REGION;
-}
-
-/**
- * Get the Integral coefficient
- * @return integral coefficient
- */
-float PIDController::GetI()
-{
- CRITICAL_REGION(m_semaphore)
- {
- return m_I;
- }
- END_REGION;
-}
-
-/**
- * Get the Differential coefficient
- * @return differential coefficient
- */
-float PIDController::GetD()
-{
- CRITICAL_REGION(m_semaphore)
- {
- return m_D;
- }
- END_REGION;
-}
-
-/**
- * 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
- */
-float PIDController::Get()
-{
- float result;
- CRITICAL_REGION(m_semaphore)
- {
- result = m_result;
- }
- END_REGION;
- return result;
-}
-
-/**
- * Set the PID controller to consider the input to be continuous,
- * Rather then using the max and min in as constraints, it considers them to
- * be the same point and automatically calculates the shortest route to
- * the setpoint.
- * @param continuous Set to true turns on continuous, false turns off continuous
- */
-void PIDController::SetContinuous(bool continuous)
-{
- CRITICAL_REGION(m_semaphore)
- {
- m_continuous = continuous;
- }
- END_REGION;
-
-}
-
-/**
- * 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 PIDController::SetInputRange(float minimumInput, float maximumInput)
-{
- CRITICAL_REGION(m_semaphore)
- {
- m_minimumInput = minimumInput;
- m_maximumInput = maximumInput;
- }
- END_REGION;
-
- SetSetpoint(m_setpoint);
-}
-
-/**
- * Sets the minimum and maximum values to write.
- *
- * @param minimumOutput the minimum value to write to the output
- * @param maximumOutput the maximum value to write to the output
- */
-void PIDController::SetOutputRange(float minimumOutput, float maximumOutput)
-{
- CRITICAL_REGION(m_semaphore)
- {
- m_minimumOutput = minimumOutput;
- m_maximumOutput = maximumOutput;
- }
- END_REGION;
-}
-
-/**
- * Set the setpoint for the PIDController
- * @param setpoint the desired setpoint
- */
-void PIDController::SetSetpoint(float setpoint)
-{
- CRITICAL_REGION(m_semaphore)
- {
- if (m_maximumInput > m_minimumInput)
- {
- if (setpoint > m_maximumInput)
- m_setpoint = m_maximumInput;
- else if (setpoint < m_minimumInput)
- m_setpoint = m_minimumInput;
- else
- m_setpoint = setpoint;
- }
- else
- {
- m_setpoint = setpoint;
- }
- }
- END_REGION;
-
- if (m_table != NULL) {
- m_table->PutNumber("setpoint", m_setpoint);
- }
-}
-
-/**
- * Returns the current setpoint of the PIDController
- * @return the current setpoint
- */
-float PIDController::GetSetpoint()
-{
- float setpoint;
- CRITICAL_REGION(m_semaphore)
- {
- setpoint = m_setpoint;
- }
- END_REGION;
- return setpoint;
-}
-
-/**
- * Retruns the current difference of the input from the setpoint
- * @return the current error
- */
-float PIDController::GetError()
-{
- float error;
- CRITICAL_REGION(m_semaphore)
- {
- error = m_setpoint - m_pidInput->PIDGet();
- }
- END_REGION;
- return error;
-}
-
-/*
- * Set the percentage error which is considered tolerable for use with
- * OnTarget.
- * @param percentage error which is tolerable
- */
-void PIDController::SetTolerance(float percent)
-{
- 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)
- {
- 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;
-}
-
-/**
- * Begin running the PIDController
- */
-void PIDController::Enable()
-{
- CRITICAL_REGION(m_semaphore)
- {
- 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.
- */
-void PIDController::Disable()
-{
- CRITICAL_REGION(m_semaphore)
- {
- m_pidOutput->PIDWrite(0);
- m_enabled = false;
- }
- END_REGION;
-
- if (m_table != NULL) {
- m_table->PutBoolean("enabled", false);
- }
-}
-
-/**
- * Return true if PIDController is enabled.
- */
-bool PIDController::IsEnabled()
-{
- bool enabled;
- CRITICAL_REGION(m_semaphore)
- {
- enabled = m_enabled;
- }
- END_REGION;
- return enabled;
-}
-
-/**
- * Reset the previous error,, the integral term, and disable the controller.
- */
-void PIDController::Reset()
-{
- Disable();
-
- CRITICAL_REGION(m_semaphore)
- {
- m_prevError = 0;
- m_totalError = 0;
- m_result = 0;
- }
- 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
deleted file mode 100644
index 2cf5bf4..0000000
--- a/aos/externals/WPILib/WPILib/PIDController.h
+++ /dev/null
@@ -1,109 +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 PIDCONTROLLER_H_
-#define PIDCONTROLLER_H_
-
-#include "Base.h"
-#include "semLib.h"
-#include "Controller.h"
-#include "LiveWindow/LiveWindow.h"
-
-class PIDOutput;
-class PIDSource;
-class Notifier;
-
-/**
- * Class implements a PID Control Loop.
- *
- * Creates a separate thread which reads the given PIDSource and takes
- * care of the integral calculations, as well as writing the given
- * PIDOutput
- */
-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();
-
- virtual float GetError();
-
- virtual void SetTolerance(float percent);
- virtual void SetAbsoluteTolerance(float absValue);
- virtual void SetPercentTolerance(float percentValue);
- virtual bool OnTarget();
-
- virtual void Enable();
- virtual void Disable();
- 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
- float m_minimumInput; // minimum input - limit setpoint to this
- bool m_continuous; // do the endpoints wrap around? eg. Absolute encoder
- 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
- 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;
- float m_period;
-
- SEM_ID m_semaphore;
-
- PIDSource *m_pidInput;
- 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);
-
- 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;
- void Calculate();
-
- DISALLOW_COPY_AND_ASSIGN(PIDController);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/PIDOutput.h b/aos/externals/WPILib/WPILib/PIDOutput.h
deleted file mode 100644
index 81483a6..0000000
--- a/aos/externals/WPILib/WPILib/PIDOutput.h
+++ /dev/null
@@ -1,24 +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 PID_OUTPUT_H
-#define PID_OUTPUT_H
-
-#include "Base.h"
-
-/**
- * PIDOutput interface is a generic output for the PID class.
- * PWMs use this class.
- * Users implement this interface to allow for a PIDController to
- * read directly from the inputs
- */
-class PIDOutput
-{
-public:
- virtual void PIDWrite(float output) = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/PIDSource.h b/aos/externals/WPILib/WPILib/PIDSource.h
deleted file mode 100644
index a2ed1c2..0000000
--- a/aos/externals/WPILib/WPILib/PIDSource.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 PID_SOURCE_H
-#define PID_SOURCE_H
-
-/**
- * PIDSource interface is a generic sensor source for the PID class.
- * All sensors that can be used with the PID class will implement the PIDSource that
- * returns a standard value that will be used in the PID code.
- */
-class PIDSource
-{
-public:
- typedef enum {kDistance, kRate, kAngle} PIDSourceParameter;
- virtual double PIDGet() = 0;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/PPC603gnu/Makefile b/aos/externals/WPILib/WPILib/PPC603gnu/Makefile
deleted file mode 100644
index 3b82d89..0000000
--- a/aos/externals/WPILib/WPILib/PPC603gnu/Makefile
+++ /dev/null
@@ -1,1103 +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
-
-FLEXIBLE_BUILD := 1
-
-BUILD_SPEC = PPC603gnu
-DEBUG_MODE = 1
-ifeq ($(DEBUG_MODE),1)
-MODE_DIR := Debug
-else
-MODE_DIR := NonDebug
-endif
-OBJ_DIR := .
-WS_ROOT_DIR := C:/WindRiver/workspace
-PRJ_ROOT_DIR := $(WS_ROOT_DIR)/WPILib
-
-
-
-#Global Build Macros
-PROJECT_TYPE = DKM
-DEFINES =
-EXPAND_DBG = 0
-
-
-#BuildSpec specific Build Macros
-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 =
-
-IDE_DEFINES =
-
-
-
-#BuildTool flags
-ifeq ($(DEBUG_MODE),1)
-DEBUGFLAGS_C-Compiler = -g
-DEBUGFLAGS_C++-Compiler = -g
-DEBUGFLAGS_Linker = -g
-DEBUGFLAGS_Partial-Image-Linker =
-DEBUGFLAGS_Librarian =
-DEBUGFLAGS_Assembler = -g
-else
-DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-DEBUGFLAGS_Linker = -O2 -fstrength-reduce -fno-builtin
-DEBUGFLAGS_Partial-Image-Linker =
-DEBUGFLAGS_Librarian =
-DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-
-
-#Project Targets
-PROJECT_TARGETS = WPILib/$(MODE_DIR)/WPILib.a \
- JavaCameraLib/$(MODE_DIR)/JavaCameraLib.a
-
-
-#Rules
-
-# WPILib
-ifeq ($(DEBUG_MODE),1)
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_C-Compiler = -g
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_C++-Compiler = -g
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Linker = -g
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Partial-Image-Linker =
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Librarian =
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Assembler = -g
-else
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Linker = -O2 -fstrength-reduce -fno-builtin
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Partial-Image-Linker =
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Librarian =
-WPILib/$(MODE_DIR)/% : DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-WPILib/$(MODE_DIR)/% : IDE_INCLUDES = -I.. -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip
-WPILib/$(MODE_DIR)/% : IDE_LIBRARIES =
-WPILib/$(MODE_DIR)/% : IDE_DEFINES =
-WPILib/$(MODE_DIR)/% : PROJECT_TYPE = DKM
-WPILib/$(MODE_DIR)/% : DEFINES =
-WPILib/$(MODE_DIR)/% : EXPAND_DBG = 0
-WPILib/$(MODE_DIR)/% : VX_CPU_FAMILY = ppc
-WPILib/$(MODE_DIR)/% : CPU = PPC603
-WPILib/$(MODE_DIR)/% : TOOL_FAMILY = gnu
-WPILib/$(MODE_DIR)/% : TOOL = gnu
-WPILib/$(MODE_DIR)/% : TOOL_PATH =
-WPILib/$(MODE_DIR)/% : CC_ARCH_SPEC = -mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall
-WPILib/$(MODE_DIR)/% : LIBPATH =
-WPILib/$(MODE_DIR)/% : LIBS =
-WPILib/$(MODE_DIR)/% : OBJ_DIR := WPILib/$(MODE_DIR)
-
-WPILib/$(MODE_DIR)/Objects/WPILib/ADXL345_I2C.o : $(PRJ_ROOT_DIR)/ADXL345_I2C.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/ADXL345_SPI.o : $(PRJ_ROOT_DIR)/ADXL345_SPI.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/Accelerometer.o : $(PRJ_ROOT_DIR)/Accelerometer.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/AnalogChannel.o : $(PRJ_ROOT_DIR)/AnalogChannel.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/AnalogModule.o : $(PRJ_ROOT_DIR)/AnalogModule.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/AnalogTrigger.o : $(PRJ_ROOT_DIR)/AnalogTrigger.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/AnalogTriggerOutput.o : $(PRJ_ROOT_DIR)/AnalogTriggerOutput.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/Buttons/AnalogIOButton.o : $(PRJ_ROOT_DIR)/Buttons/AnalogIOButton.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/Buttons/Button.o : $(PRJ_ROOT_DIR)/Buttons/Button.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/Buttons/ButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/ButtonScheduler.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/Buttons/CancelButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/CancelButtonScheduler.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/Buttons/DigitalIOButton.o : $(PRJ_ROOT_DIR)/Buttons/DigitalIOButton.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/Buttons/HeldButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/HeldButtonScheduler.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/Buttons/InternalButton.o : $(PRJ_ROOT_DIR)/Buttons/InternalButton.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/Buttons/JoystickButton.o : $(PRJ_ROOT_DIR)/Buttons/JoystickButton.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/Buttons/NetworkButton.o : $(PRJ_ROOT_DIR)/Buttons/NetworkButton.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/Buttons/PressedButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/PressedButtonScheduler.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/Buttons/ReleasedButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/ReleasedButtonScheduler.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/Buttons/ToggleButtonScheduler.o : $(PRJ_ROOT_DIR)/Buttons/ToggleButtonScheduler.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/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/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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/Commands/CommandGroup.o : $(PRJ_ROOT_DIR)/Commands/CommandGroup.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/CommandGroupEntry.o : $(PRJ_ROOT_DIR)/Commands/CommandGroupEntry.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/PIDCommand.o : $(PRJ_ROOT_DIR)/Commands/PIDCommand.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/PIDSubsystem.o : $(PRJ_ROOT_DIR)/Commands/PIDSubsystem.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/PrintCommand.o : $(PRJ_ROOT_DIR)/Commands/PrintCommand.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/Scheduler.o : $(PRJ_ROOT_DIR)/Commands/Scheduler.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/StartCommand.o : $(PRJ_ROOT_DIR)/Commands/StartCommand.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/Subsystem.o : $(PRJ_ROOT_DIR)/Commands/Subsystem.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/WaitCommand.o : $(PRJ_ROOT_DIR)/Commands/WaitCommand.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/WaitForChildren.o : $(PRJ_ROOT_DIR)/Commands/WaitForChildren.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/WaitUntilCommand.o : $(PRJ_ROOT_DIR)/Commands/WaitUntilCommand.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/Compressor.o : $(PRJ_ROOT_DIR)/Compressor.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/Counter.o : $(PRJ_ROOT_DIR)/Counter.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/Dashboard.o : $(PRJ_ROOT_DIR)/Dashboard.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/DigitalInput.o : $(PRJ_ROOT_DIR)/DigitalInput.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/DigitalModule.o : $(PRJ_ROOT_DIR)/DigitalModule.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/DigitalOutput.o : $(PRJ_ROOT_DIR)/DigitalOutput.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/DigitalSource.o : $(PRJ_ROOT_DIR)/DigitalSource.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/DoubleSolenoid.o : $(PRJ_ROOT_DIR)/DoubleSolenoid.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/DriverStation.o : $(PRJ_ROOT_DIR)/DriverStation.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/DriverStationEnhancedIO.o : $(PRJ_ROOT_DIR)/DriverStationEnhancedIO.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/DriverStationLCD.o : $(PRJ_ROOT_DIR)/DriverStationLCD.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/Encoder.o : $(PRJ_ROOT_DIR)/Encoder.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/Error.o : $(PRJ_ROOT_DIR)/Error.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/ErrorBase.o : $(PRJ_ROOT_DIR)/ErrorBase.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/GearTooth.o : $(PRJ_ROOT_DIR)/GearTooth.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/Gyro.o : $(PRJ_ROOT_DIR)/Gyro.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/HiTechnicColorSensor.o : $(PRJ_ROOT_DIR)/HiTechnicColorSensor.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/HiTechnicCompass.o : $(PRJ_ROOT_DIR)/HiTechnicCompass.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/I2C.o : $(PRJ_ROOT_DIR)/I2C.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/InterruptableSensorBase.o : $(PRJ_ROOT_DIR)/InterruptableSensorBase.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/IterativeRobot.o : $(PRJ_ROOT_DIR)/IterativeRobot.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/Jaguar.o : $(PRJ_ROOT_DIR)/Jaguar.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/Joystick.o : $(PRJ_ROOT_DIR)/Joystick.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/Kinect.o : $(PRJ_ROOT_DIR)/Kinect.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/KinectStick.o : $(PRJ_ROOT_DIR)/KinectStick.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/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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/MotorSafetyHelper.o : $(PRJ_ROOT_DIR)/MotorSafetyHelper.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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/OSAL/Synchronized.o : $(PRJ_ROOT_DIR)/OSAL/Synchronized.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/OSAL/Task.o : $(PRJ_ROOT_DIR)/OSAL/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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/PIDController.o : $(PRJ_ROOT_DIR)/PIDController.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/PWM.o : $(PRJ_ROOT_DIR)/PWM.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/Preferences.o : $(PRJ_ROOT_DIR)/Preferences.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/Relay.o : $(PRJ_ROOT_DIR)/Relay.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/Resource.o : $(PRJ_ROOT_DIR)/Resource.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/RobotBase.o : $(PRJ_ROOT_DIR)/RobotBase.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/RobotDrive.o : $(PRJ_ROOT_DIR)/RobotDrive.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/SPI.o : $(PRJ_ROOT_DIR)/SPI.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/SafePWM.o : $(PRJ_ROOT_DIR)/SafePWM.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/SensorBase.o : $(PRJ_ROOT_DIR)/SensorBase.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/SerialPort.o : $(PRJ_ROOT_DIR)/SerialPort.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/Servo.o : $(PRJ_ROOT_DIR)/Servo.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/SimpleRobot.o : $(PRJ_ROOT_DIR)/SimpleRobot.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/SendableChooser.o : $(PRJ_ROOT_DIR)/SmartDashboard/SendableChooser.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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/Solenoid.o : $(PRJ_ROOT_DIR)/Solenoid.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/SolenoidBase.o : $(PRJ_ROOT_DIR)/SolenoidBase.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/Synchronized.o : $(PRJ_ROOT_DIR)/Synchronized.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/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 "$<"
-
-
-WPILib/$(MODE_DIR)/Objects/WPILib/Timer.o : $(PRJ_ROOT_DIR)/Timer.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/Ultrasonic.o : $(PRJ_ROOT_DIR)/Ultrasonic.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/Utility.o : $(PRJ_ROOT_DIR)/Utility.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/Victor.o : $(PRJ_ROOT_DIR)/Victor.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/Vision/AxisCamera.o : $(PRJ_ROOT_DIR)/Vision/AxisCamera.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/Vision/AxisCameraParams.o : $(PRJ_ROOT_DIR)/Vision/AxisCameraParams.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/Vision/BinaryImage.o : $(PRJ_ROOT_DIR)/Vision/BinaryImage.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/Vision/ColorImage.o : $(PRJ_ROOT_DIR)/Vision/ColorImage.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/Vision/EnumCameraParameter.o : $(PRJ_ROOT_DIR)/Vision/EnumCameraParameter.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/Vision/HSLImage.o : $(PRJ_ROOT_DIR)/Vision/HSLImage.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/Vision/ImageBase.o : $(PRJ_ROOT_DIR)/Vision/ImageBase.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/Vision/IntCameraParameter.o : $(PRJ_ROOT_DIR)/Vision/IntCameraParameter.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/Vision/MonoImage.o : $(PRJ_ROOT_DIR)/Vision/MonoImage.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/Vision/PCVideoServer.o : $(PRJ_ROOT_DIR)/Vision/PCVideoServer.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/Vision/RGBImage.o : $(PRJ_ROOT_DIR)/Vision/RGBImage.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/Vision/Threshold.o : $(PRJ_ROOT_DIR)/Vision/Threshold.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/Vision2009/AxisCamera.o : $(PRJ_ROOT_DIR)/Vision2009/AxisCamera.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/Vision2009/BaeUtilities.o : $(PRJ_ROOT_DIR)/Vision2009/BaeUtilities.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/Vision2009/FrcError.o : $(PRJ_ROOT_DIR)/Vision2009/FrcError.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/Vision2009/TrackAPI.o : $(PRJ_ROOT_DIR)/Vision2009/TrackAPI.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/Vision2009/VisionAPI.o : $(PRJ_ROOT_DIR)/Vision2009/VisionAPI.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/Watchdog.o : $(PRJ_ROOT_DIR)/Watchdog.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/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 \
- WPILib/$(MODE_DIR)/Objects/WPILib/AnalogChannel.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/AnalogModule.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/AnalogTrigger.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/AnalogTriggerOutput.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/AnalogIOButton.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Button.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/ButtonScheduler.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/CancelButtonScheduler.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/DigitalIOButton.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/HeldButtonScheduler.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/InternalButton.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/JoystickButton.o \
- 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/ToggleButtonScheduler.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Buttons/Trigger.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/CANJaguar.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 \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDCommand.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PIDSubsystem.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/PrintCommand.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Scheduler.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/StartCommand.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/Subsystem.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitCommand.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitForChildren.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Commands/WaitUntilCommand.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Compressor.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Counter.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Dashboard.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DigitalInput.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DigitalModule.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DigitalOutput.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DigitalSource.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DoubleSolenoid.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DriverStation.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationEnhancedIO.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/DriverStationLCD.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Encoder.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Error.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/ErrorBase.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/GearTooth.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Gyro.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/HiTechnicColorSensor.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/HiTechnicCompass.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/I2C.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/InterruptableSensorBase.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/IterativeRobot.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Jaguar.o \
- 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/Notifier.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/OSAL/Synchronized.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/OSAL/Task.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/PIDController.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/PWM.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Preferences.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Relay.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Resource.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/RobotBase.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/RobotDrive.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/SPI.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/SafePWM.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/SensorBase.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/SerialPort.o \
- 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/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 \
- WPILib/$(MODE_DIR)/Objects/WPILib/Utility.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Victor.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCamera.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/AxisCameraParams.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/BinaryImage.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ColorImage.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/EnumCameraParameter.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/HSLImage.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/ImageBase.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/IntCameraParameter.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/MonoImage.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/PCVideoServer.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/RGBImage.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision/Threshold.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/AxisCamera.o \
- WPILib/$(MODE_DIR)/Objects/WPILib/Vision2009/BaeUtilities.o \
- 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/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)
-
-WPILib/$(MODE_DIR)/WPILib_compile_file : $(FILE) ;
-
-_clean :: WPILib/$(MODE_DIR)/WPILib_clean
-
-WPILib/$(MODE_DIR)/WPILib_clean :
- $(TRACE_FLAG)if [ -d "WPILib" ]; then cd "WPILib"; rm -rf $(MODE_DIR); fi
-
-
-# JavaCameraLib
-ifeq ($(DEBUG_MODE),1)
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_C-Compiler = -g
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_C++-Compiler = -g
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Linker = -g
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Partial-Image-Linker =
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Librarian =
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Assembler = -g
-else
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Linker = -O2 -fstrength-reduce -fno-builtin
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Partial-Image-Linker =
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Librarian =
-JavaCameraLib/$(MODE_DIR)/% : DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin
-endif
-JavaCameraLib/$(MODE_DIR)/% : IDE_INCLUDES = -I.. -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip
-JavaCameraLib/$(MODE_DIR)/% : IDE_LIBRARIES =
-JavaCameraLib/$(MODE_DIR)/% : IDE_DEFINES =
-JavaCameraLib/$(MODE_DIR)/% : PROJECT_TYPE = DKM
-JavaCameraLib/$(MODE_DIR)/% : DEFINES =
-JavaCameraLib/$(MODE_DIR)/% : EXPAND_DBG = 0
-JavaCameraLib/$(MODE_DIR)/% : VX_CPU_FAMILY = ppc
-JavaCameraLib/$(MODE_DIR)/% : CPU = PPC603
-JavaCameraLib/$(MODE_DIR)/% : TOOL_FAMILY = gnu
-JavaCameraLib/$(MODE_DIR)/% : TOOL = gnu
-JavaCameraLib/$(MODE_DIR)/% : TOOL_PATH =
-JavaCameraLib/$(MODE_DIR)/% : CC_ARCH_SPEC = -mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall
-JavaCameraLib/$(MODE_DIR)/% : LIBPATH =
-JavaCameraLib/$(MODE_DIR)/% : LIBS =
-JavaCameraLib/$(MODE_DIR)/% : OBJ_DIR := JavaCameraLib/$(MODE_DIR)
-
-JavaCameraLib/$(MODE_DIR)/Objects/PCVideoServer.o : $(PRJ_ROOT_DIR)/Vision/PCVideoServer.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/AxisCamera.o : $(PRJ_ROOT_DIR)/Vision/AxisCamera.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/AxisCameraParams.o : $(PRJ_ROOT_DIR)/Vision/AxisCameraParams.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/EnumCameraParameter.o : $(PRJ_ROOT_DIR)/Vision/EnumCameraParameter.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/IntCameraParameter.o : $(PRJ_ROOT_DIR)/Vision/IntCameraParameter.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/Error.o : $(PRJ_ROOT_DIR)/Error.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/ErrorBase.o : $(PRJ_ROOT_DIR)/ErrorBase.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/Timer.o : $(PRJ_ROOT_DIR)/Timer.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/Synchronized.o : $(PRJ_ROOT_DIR)/Synchronized.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-JavaCameraLib/$(MODE_DIR)/Objects/Utility.o : $(PRJ_ROOT_DIR)/Utility.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) -DJAVA_CAMERA_LIB=1 -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<"
-
-
-OBJECTS_JavaCameraLib = JavaCameraLib/$(MODE_DIR)/Objects/PCVideoServer.o \
- JavaCameraLib/$(MODE_DIR)/Objects/AxisCamera.o \
- JavaCameraLib/$(MODE_DIR)/Objects/AxisCameraParams.o \
- JavaCameraLib/$(MODE_DIR)/Objects/EnumCameraParameter.o \
- JavaCameraLib/$(MODE_DIR)/Objects/IntCameraParameter.o \
- JavaCameraLib/$(MODE_DIR)/Objects/Error.o \
- JavaCameraLib/$(MODE_DIR)/Objects/ErrorBase.o \
- JavaCameraLib/$(MODE_DIR)/Objects/Task.o \
- JavaCameraLib/$(MODE_DIR)/Objects/Timer.o \
- JavaCameraLib/$(MODE_DIR)/Objects/Synchronized.o \
- JavaCameraLib/$(MODE_DIR)/Objects/Utility.o
-
-JavaCameraLib/$(MODE_DIR)/JavaCameraLib.a : $(OBJECTS_JavaCameraLib)
- $(TRACE_FLAG)if [ ! -d "`dirname "$@"`" ]; then mkdir -p "`dirname "$@"`"; fi;echo "building $@"; $(TOOL_PATH)arppc crus "$@" $(OBJECTS_JavaCameraLib)
-
-JavaCameraLib/$(MODE_DIR)/JavaCameraLib_compile_file : $(FILE) ;
-
-_clean :: JavaCameraLib/$(MODE_DIR)/JavaCameraLib_clean
-
-JavaCameraLib/$(MODE_DIR)/JavaCameraLib_clean :
- $(TRACE_FLAG)if [ -d "JavaCameraLib" ]; then cd "JavaCameraLib"; rm -rf $(MODE_DIR); fi
-
-force :
-
-DEP_FILES := WPILib/$(MODE_DIR)/Objects/WPILib/ADXL345_I2C.d WPILib/$(MODE_DIR)/Objects/WPILib/ADXL345_SPI.d WPILib/$(MODE_DIR)/Objects/WPILib/Accelerometer.d \
- WPILib/$(MODE_DIR)/Objects/WPILib/AnalogChannel.d WPILib/$(MODE_DIR)/Objects/WPILib/AnalogModule.d WPILib/$(MODE_DIR)/Objects/WPILib/AnalogTrigger.d \
- 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/CancelButtonScheduler.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/Buttons/ToggleButtonScheduler.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/HiTechnicColorSensor.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/OSAL/Synchronized.d WPILib/$(MODE_DIR)/Objects/WPILib/OSAL/Task.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/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)
-
-
-
--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/PWM.cpp b/aos/externals/WPILib/WPILib/PWM.cpp
deleted file mode 100644
index a95489b..0000000
--- a/aos/externals/WPILib/WPILib/PWM.cpp
+++ /dev/null
@@ -1,404 +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 "PWM.h"
-
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-
-constexpr float PWM::kDefaultPwmPeriod;
-constexpr float PWM::kDefaultPwmCenter;
-const int32_t PWM::kDefaultPwmStepsDown;
-const int32_t PWM::kPwmDisabled;
-static Resource *allocated = NULL;
-
-/**
- * Initialize PWMs given an module and channel.
- *
- * This method is private and is the common path for all the constructors for creating PWM
- * instances. Checks module and channel value ranges and allocates the appropriate channel.
- * The allocation is only done to help users ensure that they don't double assign channels.
- */
-void PWM::InitPWM(uint8_t moduleNumber, uint32_t channel)
-{
- m_table = NULL;
- char buf[64];
- Resource::CreateResourceObject(&allocated, tDIO::kNumSystems * kPwmChannels);
- if (!CheckPWMModule(moduleNumber))
- {
- snprintf(buf, 64, "Digital Module %d", moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckPWMChannel(channel))
- {
- snprintf(buf, 64, "PWM Channel %d", channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
-
- snprintf(buf, 64, "PWM %d (Module: %d)", channel, moduleNumber);
- if (allocated->Allocate((moduleNumber - 1) * kPwmChannels + channel - 1,
- buf, this) == ~0ul)
- {
- return;
- }
- m_channel = channel;
- m_module = DigitalModule::GetInstance(moduleNumber);
- m_module->SetPWM(m_channel, kPwmDisabled);
- m_eliminateDeadband = false;
-
- nUsageReporting::report(nUsageReporting::kResourceType_PWM, channel, moduleNumber - 1);
-}
-
-/**
- * Allocate a PWM given a module and channel.
- * Allocate a PWM using a module and channel number.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The PWM channel on the digital module (1..10).
- */
-PWM::PWM(uint8_t moduleNumber, uint32_t channel)
- : m_module(NULL)
-{
- InitPWM(moduleNumber, channel);
-}
-
-/**
- * Allocate a PWM in the default module given a channel.
- *
- * Using a default module allocate a PWM given the channel number. The default module is the first
- * slot numerically in the cRIO chassis.
- *
- * @param channel The PWM channel on the digital module.
- */
-PWM::PWM(uint32_t channel)
- : m_module(NULL)
-{
- InitPWM(GetDefaultDigitalModule(), channel);
-}
-
-/**
- * Free the PWM channel.
- *
- * Free the resource associated with the PWM channel and set the value to 0.
- */
-PWM::~PWM()
-{
- if (m_module)
- {
- m_module->SetPWM(m_channel, kPwmDisabled);
- allocated->Free((m_module->GetNumber() - 1) * kPwmChannels + m_channel - 1,
- this);
- }
-}
-
-/**
- * Optionally eliminate the deadband from a speed controller.
- * @param eliminateDeadband If true, set the motor curve on the Jaguar to eliminate
- * the deadband in the middle of the range. Otherwise, keep the full range without
- * modifying any values.
- */
-void PWM::EnableDeadbandElimination(bool eliminateDeadband)
-{
- if (StatusIsFatal()) return;
- m_eliminateDeadband = eliminateDeadband;
-}
-
-/**
- * Set the bounds on the PWM values.
- * This sets the bounds on the PWM values for a particular each type of controller. The values
- * determine the upper and lower speeds as well as the deadband bracket.
- * @param max The Minimum pwm value
- * @param deadbandMax The high end of the deadband range
- * @param center The center speed (off)
- * @param deadbandMin The low end of the deadband range
- * @param min The minimum pwm value
- */
-void PWM::SetBounds(int32_t max, int32_t deadbandMax, int32_t center, int32_t deadbandMin, int32_t min)
-{
- if (StatusIsFatal()) return;
- m_maxPwm = max;
- m_deadbandMaxPwm = deadbandMax;
- m_centerPwm = center;
- m_deadbandMinPwm = deadbandMin;
- m_minPwm = min;
-}
-
-
-/**
- * Set the bounds on the PWM pulse widths.
- * This sets the bounds on the PWM values for a particular type of controller. The values
- * determine the upper and lower speeds as well as the deadband bracket.
- * @param max The max PWM pulse width in ms
- * @param deadbandMax The high end of the deadband range pulse width in ms
- * @param center The center (off) pulse width in ms
- * @param deadbandMin The low end of the deadband pulse width in ms
- * @param min The minimum pulse width in ms
- */
-void PWM::SetBounds(double max, double deadbandMax, double center, double deadbandMin, double min)
-{
- if (StatusIsFatal()) return;
-
- double loopTime = m_module->GetLoopTiming()/(kSystemClockTicksPerMicrosecond*1e3);
-
- m_maxPwm = (int32_t)((max-kDefaultPwmCenter)/loopTime+kDefaultPwmStepsDown-1);
- m_deadbandMaxPwm = (int32_t)((deadbandMax-kDefaultPwmCenter)/loopTime+kDefaultPwmStepsDown-1);
- m_centerPwm = (int32_t)((center-kDefaultPwmCenter)/loopTime+kDefaultPwmStepsDown-1);
- m_deadbandMinPwm = (int32_t)((deadbandMin-kDefaultPwmCenter)/loopTime+kDefaultPwmStepsDown-1);
- m_minPwm = (int32_t)((min-kDefaultPwmCenter)/loopTime+kDefaultPwmStepsDown-1);
-}
-
-uint32_t PWM::GetModuleNumber()
-{
- return m_module->GetNumber();
-}
-
-/**
- * Set the PWM value based on a position.
- *
- * This is intended to be used by servos.
- *
- * @pre SetMaxPositivePwm() called.
- * @pre SetMinNegativePwm() called.
- *
- * @param pos The position to set the servo between 0.0 and 1.0.
- */
-void PWM::SetPosition(float pos)
-{
- if (StatusIsFatal()) return;
- if (pos < 0.0)
- {
- pos = 0.0;
- }
- else if (pos > 1.0)
- {
- pos = 1.0;
- }
-
- int32_t rawValue;
- // note, need to perform the multiplication below as floating point before converting to int
- rawValue = (int32_t)( (pos * (float) GetFullRangeScaleFactor()) + GetMinNegativePwm());
-
- wpi_assert((rawValue >= GetMinNegativePwm()) && (rawValue <= GetMaxPositivePwm()));
- wpi_assert(rawValue != kPwmDisabled);
-
- // send the computed pwm value to the FPGA
- SetRaw((uint8_t)rawValue);
-}
-
-/**
- * Get the PWM value in terms of a position.
- *
- * This is intended to be used by servos.
- *
- * @pre SetMaxPositivePwm() called.
- * @pre SetMinNegativePwm() called.
- *
- * @return The position the servo is set to between 0.0 and 1.0.
- */
-float PWM::GetPosition()
-{
- if (StatusIsFatal()) return 0.0;
- int32_t value = GetRaw();
- if (value < GetMinNegativePwm())
- {
- return 0.0;
- }
- else if (value > GetMaxPositivePwm())
- {
- return 1.0;
- }
- else
- {
- return (float)(value - GetMinNegativePwm()) / (float)GetFullRangeScaleFactor();
- }
-}
-
-/**
- * Set the PWM value based on a speed.
- *
- * This is intended to be used by speed controllers.
- *
- * @pre SetMaxPositivePwm() called.
- * @pre SetMinPositivePwm() called.
- * @pre SetCenterPwm() called.
- * @pre SetMaxNegativePwm() called.
- * @pre SetMinNegativePwm() called.
- *
- * @param speed The speed to set the speed controller between -1.0 and 1.0.
- */
-void PWM::SetSpeed(float speed)
-{
- if (StatusIsFatal()) return;
- // clamp speed to be in the range 1.0 >= speed >= -1.0
- if (speed < -1.0)
- {
- speed = -1.0;
- }
- else if (speed > 1.0)
- {
- speed = 1.0;
- }
-
- // calculate the desired output pwm value by scaling the speed appropriately
- int32_t rawValue;
- if (speed == 0.0)
- {
- rawValue = GetCenterPwm();
- }
- else if (speed > 0.0)
- {
- rawValue = (int32_t)(speed * ((float)GetPositiveScaleFactor()) +
- ((float) GetMinPositivePwm()) + 0.5);
- }
- else
- {
- rawValue = (int32_t)(speed * ((float)GetNegativeScaleFactor()) +
- ((float) GetMaxNegativePwm()) + 0.5);
- }
-
- // the above should result in a pwm_value in the valid range
- wpi_assert((rawValue >= GetMinNegativePwm()) && (rawValue <= GetMaxPositivePwm()));
- wpi_assert(rawValue != kPwmDisabled);
-
- // send the computed pwm value to the FPGA
- SetRaw((uint8_t)rawValue);
-}
-
-/**
- * Get the PWM value in terms of speed.
- *
- * This is intended to be used by speed controllers.
- *
- * @pre SetMaxPositivePwm() called.
- * @pre SetMinPositivePwm() called.
- * @pre SetMaxNegativePwm() called.
- * @pre SetMinNegativePwm() called.
- *
- * @return The most recently set speed between -1.0 and 1.0.
- */
-float PWM::GetSpeed()
-{
- if (StatusIsFatal()) return 0.0;
- int32_t value = GetRaw();
- if (value == PWM::kPwmDisabled)
- {
- return 0.0;
- }
- else if (value > GetMaxPositivePwm())
- {
- return 1.0;
- }
- else if (value < GetMinNegativePwm())
- {
- return -1.0;
- }
- else if (value > GetMinPositivePwm())
- {
- return (float)(value - GetMinPositivePwm()) / (float)GetPositiveScaleFactor();
- }
- else if (value < GetMaxNegativePwm())
- {
- return (float)(value - GetMaxNegativePwm()) / (float)GetNegativeScaleFactor();
- }
- else
- {
- return 0.0;
- }
-}
-
-/**
- * Set the PWM value directly to the hardware.
- *
- * Write a raw value to a PWM channel.
- *
- * @param value Raw PWM value. Range 0 - 255.
- */
-void PWM::SetRaw(uint8_t value)
-{
- if (StatusIsFatal()) return;
- m_module->SetPWM(m_channel, value);
-}
-
-/**
- * Get the PWM value directly from the hardware.
- *
- * Read a raw value from a PWM channel.
- *
- * @return Raw PWM control value. Range: 0 - 255.
- */
-uint8_t PWM::GetRaw()
-{
- if (StatusIsFatal()) return 0;
- return m_module->GetPWM(m_channel);
-}
-
-/**
- * Slow down the PWM signal for old devices.
- *
- * @param mult The period multiplier to apply to this channel
- */
-void PWM::SetPeriodMultiplier(PeriodMultiplier mult)
-{
- if (StatusIsFatal()) return;
- switch(mult)
- {
- case kPeriodMultiplier_4X:
- m_module->SetPWMPeriodScale(m_channel, 3); // Squelch 3 out of 4 outputs
- break;
- case kPeriodMultiplier_2X:
- m_module->SetPWMPeriodScale(m_channel, 1); // Squelch 1 out of 2 outputs
- break;
- case kPeriodMultiplier_1X:
- m_module->SetPWMPeriodScale(m_channel, 0); // Don't squelch any outputs
- break;
- default:
- 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() {
- SetSpeed(0);
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void PWM::StopLiveWindowMode() {
- SetSpeed(0);
- if (m_table != NULL) {
- 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
deleted file mode 100644
index d497ed2..0000000
--- a/aos/externals/WPILib/WPILib/PWM.h
+++ /dev/null
@@ -1,114 +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 PWM_H_
-#define PWM_H_
-
-#include "SensorBase.h"
-#include "LiveWindow/LiveWindowSendable.h"
-#include "tables/ITableListener.h"
-
-class DigitalModule;
-
-/**
- * Class implements the PWM generation in the FPGA.
- *
- * The values supplied as arguments for PWM outputs range from -1.0 to 1.0. They are mapped
- * to the hardware dependent values, in this case 0-255 for the FPGA.
- * Changes are immediately sent to the FPGA, and the update occurs at the next
- * FPGA cycle. There is no delay.
- *
- * As of revision 0.1.10 of the FPGA, the FPGA interprets the 0-255 values as follows:
- * - 255 = full "forward"
- * - 254 to 129 = linear scaling from "full forward" to "center"
- * - 128 = center value
- * - 127 to 2 = linear scaling from "center" to "full reverse"
- * - 1 = full "reverse"
- * - 0 = disabled (i.e. PWM output is held low)
- */
-class PWM : public SensorBase, public ITableListener, public LiveWindowSendable
-{
- friend class DigitalModule;
-public:
- typedef enum {kPeriodMultiplier_1X = 1, kPeriodMultiplier_2X = 2, kPeriodMultiplier_4X = 4} PeriodMultiplier;
-
- explicit PWM(uint32_t channel);
- PWM(uint8_t moduleNumber, uint32_t channel);
- virtual ~PWM();
- virtual void SetRaw(uint8_t value);
- virtual uint8_t GetRaw();
- void SetPeriodMultiplier(PeriodMultiplier mult);
- void EnableDeadbandElimination(bool eliminateDeadband);
- void SetBounds(int32_t max, int32_t deadbandMax, int32_t center, int32_t deadbandMin, int32_t min);
- void SetBounds(double max, double deadbandMax, double center, double deadbandMin, double min);
- uint32_t GetChannel() {return m_channel;}
- uint32_t GetModuleNumber();
-
-protected:
- /**
- * kDefaultPwmPeriod is in ms
- *
- * - 20ms periods (50 Hz) are the "safest" setting in that this works for all devices
- * - 20ms periods seem to be desirable for Vex Motors
- * - 20ms periods are the specified period for HS-322HD servos, but work reliably down
- * to 10.0 ms; starting at about 8.5ms, the servo sometimes hums and get hot;
- * by 5.0ms the hum is nearly continuous
- * - 10ms periods work well for Victor 884
- * - 5ms periods allows higher update rates for Luminary Micro Jaguar speed controllers.
- * Due to the shipping firmware on the Jaguar, we can't run the update period less
- * than 5.05 ms.
- *
- * kDefaultPwmPeriod is the 1x period (5.05 ms). In hardware, the period scaling is implemented as an
- * output squelch to get longer periods for old devices.
- */
- static constexpr float kDefaultPwmPeriod = 5.05;
- /**
- * kDefaultPwmCenter is the PWM range center in ms
- */
- static constexpr float kDefaultPwmCenter = 1.5;
- /**
- * kDefaultPWMStepsDown is the number of PWM steps below the centerpoint
- */
- static const int32_t kDefaultPwmStepsDown = 128;
- static const int32_t kPwmDisabled = 0;
-
- virtual void SetPosition(float pos);
- virtual float GetPosition();
- virtual void SetSpeed(float speed);
- virtual float GetSpeed();
-
- bool m_eliminateDeadband;
- int32_t m_maxPwm;
- int32_t m_deadbandMaxPwm;
- int32_t m_centerPwm;
- int32_t m_deadbandMinPwm;
- int32_t 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_t moduleNumber, uint32_t channel);
- uint32_t m_channel;
- DigitalModule *m_module;
- int32_t GetMaxPositivePwm() { return m_maxPwm; };
- int32_t GetMinPositivePwm() { return m_eliminateDeadband ? m_deadbandMaxPwm : m_centerPwm + 1; };
- int32_t GetCenterPwm() { return m_centerPwm; };
- int32_t GetMaxNegativePwm() { return m_eliminateDeadband ? m_deadbandMinPwm : m_centerPwm - 1; };
- int32_t GetMinNegativePwm() { return m_minPwm; };
- int32_t GetPositiveScaleFactor() {return GetMaxPositivePwm() - GetMinPositivePwm();} ///< The scale for positive speeds.
- int32_t GetNegativeScaleFactor() {return GetMaxNegativePwm() - GetMinNegativePwm();} ///< The scale for negative speeds.
- int32_t GetFullRangeScaleFactor() {return GetMaxPositivePwm() - GetMinNegativePwm();} ///< The scale for positions.
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Preferences.cpp b/aos/externals/WPILib/WPILib/Preferences.cpp
deleted file mode 100644
index 9517a05..0000000
--- a/aos/externals/WPILib/WPILib/Preferences.cpp
+++ /dev/null
@@ -1,620 +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 "Preferences.h"
-
-#include "NetworkCommunication/UsageReporting.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_t enable);
-
-/** The Preferences table name */
-static const char *kTableName = "Preferences";
-/** The value of the save field */
-static const char *kSaveField = "~S A V E~";
-/** The file to save to */
-static const char *kFileName = "/c/wpilib-preferences.ini";
-/** The characters to put between a field and value */
-static const char *kValuePrefix = "=\"";
-/** The characters to put after the value */
-static const char *kValueSuffix = "\"\n";
-/** The singleton instance */
-Preferences *Preferences::_instance = NULL;
-
-Preferences::Preferences() :
- m_fileLock(NULL),
- m_fileOpStarted(NULL),
- m_tableLock(NULL),
- m_readTask("PreferencesReadTask", (FUNCPTR)Preferences::InitReadTask),
- m_writeTask("PreferencesWriteTask", (FUNCPTR)Preferences::InitWriteTask)
-{
- m_fileLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
- m_fileOpStarted = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
- m_tableLock = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-
- Synchronized sync(m_fileLock);
- m_readTask.Start((uint32_t)this);
- semTake(m_fileOpStarted, WAIT_FOREVER);
-
- nUsageReporting::report(nUsageReporting::kResourceType_Preferences, 0);
-}
-
-Preferences::~Preferences()
-{
- semTake(m_tableLock, WAIT_FOREVER);
- semDelete(m_tableLock);
- semTake(m_fileLock, WAIT_FOREVER);
- semDelete(m_fileOpStarted);
- semDelete(m_fileLock);
-}
-
-/**
- * Get the one and only {@link Preferences} object
- * @return pointer to the {@link Preferences}
- */
-Preferences *Preferences::GetInstance()
-{
- if (_instance == NULL)
- _instance = new Preferences;
- return _instance;
-}
-
-/**
- * Returns a vector of all the keys
- * @return a vector of the keys
- */
-std::vector<std::string> Preferences::GetKeys()
-{
- return m_keys;
-}
-
-/**
- * Returns the string at the given key. If this table does not have a value
- * for that position, then the given defaultValue will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-std::string Preferences::GetString(const char *key, const char *defaultValue)
-{
- std::string value = Get(key);
- return value.empty() ? defaultValue : value;
-}
-
-/**
- * Returns the string at the given key. If this table does not have a value
- * for that position, then the given defaultValue will be returned.
- * @param key the key
- * @param value the buffer to copy the value into
- * @param valueSize the size of value
- * @param defaultValue the value to return if none exists in the table
- * @return The size of the returned string
- */
-int Preferences::GetString(const char *key, char *value, int valueSize, const char *defaultValue)
-{
- std::string stringValue = GetString(key, defaultValue);
- stringValue.copy(value, valueSize);
- return stringValue.size();
-}
-
-/**
- * Returns the int at the given key. If this table does not have a value
- * for that position, then the given defaultValue value will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-int Preferences::GetInt(const char *key, int defaultValue)
-{
- std::string value = Get(key);
- if (value.empty())
- return defaultValue;
-
- return strtol(value.c_str(), NULL, 0);
-}
-
-/**
- * Returns the double at the given key. If this table does not have a value
- * for that position, then the given defaultValue value will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-double Preferences::GetDouble(const char *key, double defaultValue)
-{
- std::string value = Get(key);
- if (value.empty())
- return defaultValue;
-
- return strtod(value.c_str(), NULL);
-}
-
-/**
- * Returns the float at the given key. If this table does not have a value
- * for that position, then the given defaultValue value will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-float Preferences::GetFloat(const char *key, float defaultValue)
-{
- std::string value = Get(key);
- if (value.empty())
- return defaultValue;
-
- return strtod(value.c_str(), NULL);
-}
-
-/**
- * Returns the boolean at the given key. If this table does not have a value
- * for that position, then the given defaultValue value will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-bool Preferences::GetBoolean(const char *key, bool defaultValue)
-{
- std::string value = Get(key);
- if (value.empty())
- return defaultValue;
-
- if (value.compare("true") == 0)
- return true;
- else if (value.compare("false") == 0)
- return false;
-
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "Boolean value does not contain \"true\" or \"false\"");
- return false;
-}
-
-/**
- * Returns the long (INT64) at the given key. If this table does not have a value
- * for that position, then the given defaultValue value will be returned.
- * @param key the key
- * @param defaultValue the value to return if none exists in the table
- * @return either the value in the table, or the defaultValue
- */
-INT64 Preferences::GetLong(const char *key, INT64 defaultValue)
-{
- std::string value = Get(key);
- if (value.empty())
- return defaultValue;
-
- // Ummm... not available in our VxWorks...
- //return strtoll(value.c_str(), NULL, 0);
- INT64 intVal;
- sscanf(value.c_str(), "%lld", &intVal);
- return intVal;
-}
-
-/**
- * Puts the given string into the preferences table.
- *
- * <p>The value may not have quotation marks, nor may the key
- * have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care).
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutString(const char *key, const char *value)
-{
- if (value == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "value");
- return;
- }
- if (std::string(value).find_first_of("\"") != std::string::npos)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "value contains illegal characters");
- return;
- }
- Put(key, value);
-}
-
-/**
- * Puts the given int into the preferences table.
- *
- * <p>The key may not have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care)
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutInt(const char *key, int value)
-{
- char buf[32];
- snprintf(buf, 32, "%d", value);
- Put(key, buf);
-}
-
-/**
- * Puts the given double into the preferences table.
- *
- * <p>The key may not have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care)
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutDouble(const char *key, double value)
-{
- char buf[32];
- snprintf(buf, 32, "%f", value);
- Put(key, buf);
-}
-
-/**
- * Puts the given float into the preferences table.
- *
- * <p>The key may not have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care)
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutFloat(const char *key, float value)
-{
- char buf[32];
- snprintf(buf, 32, "%f", value);
- Put(key, buf);
-}
-
-/**
- * Puts the given boolean into the preferences table.
- *
- * <p>The key may not have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care)
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutBoolean(const char *key, bool value)
-{
- Put(key, value ? "true" : "false");
-}
-
-/**
- * Puts the given long (INT64) into the preferences table.
- *
- * <p>The key may not have any whitespace nor an equals sign</p>
- *
- * <p>This will <b>NOT</b> save the value to memory between power cycles,
- * to do that you must call {@link Preferences#Save() Save()} (which must be used with care)
- * at some point after calling this.</p>
- * @param key the key
- * @param value the value
- */
-void Preferences::PutLong(const char *key, INT64 value)
-{
- char buf[32];
- snprintf(buf, 32, "%lld", value);
- Put(key, buf);
-}
-
-/**
- * Saves the preferences to a file on the cRIO.
- *
- * <p>This should <b>NOT</b> be called often.
- * Too many writes can damage the cRIO's flash memory.
- * While it is ok to save once or twice a match, this should never
- * be called every run of {@link IterativeRobot#TeleopPeriodic()}, etc.</p>
- *
- * <p>The actual writing of the file is done in a separate thread.
- * However, any call to a get or put method will wait until the table is fully saved before continuing.</p>
- */
-void Preferences::Save()
-{
- Synchronized sync(m_fileLock);
- m_writeTask.Start((uint32_t)this);
- semTake(m_fileOpStarted, WAIT_FOREVER);
-}
-
-/**
- * Returns whether or not there is a key with the given name.
- * @param key the key
- * @return if there is a value at the given key
- */
-bool Preferences::ContainsKey(const char *key)
-{
- return !Get(key).empty();
-}
-
-/**
- * Remove a preference
- * @param key the key
- */
-void Preferences::Remove(const char *key)
-{
- m_values.erase(std::string(key));
- std::vector<std::string>::iterator it = m_keys.begin();
- for (; it != m_keys.end(); it++)
- {
- if (it->compare(key) == 0)
- {
- m_keys.erase(it);
- break;
- }
- }
-}
-
-/**
- * Returns the value at the given key.
- * @param key the key
- * @return the value (or empty if none exists)
- */
-std::string Preferences::Get(const char *key)
-{
- Synchronized sync(m_tableLock);
- if (key == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "key");
- return std::string("");
- }
- return m_values[std::string(key)];
-}
-
-/**
- * Puts the given value into the given key position
- * @param key the key
- * @param value the value
- */
-void Preferences::Put(const char *key, std::string value)
-{
- Synchronized sync(m_tableLock);
- if (key == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "key");
- return;
- }
-
- if (std::string(key).find_first_of("=\n\r \t\"") != std::string::npos)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "key contains illegal characters");
- return;
- }
-
- std::pair<StringMap::iterator, bool> ret =
- m_values.insert(StringMap::value_type(key, value));
- if (ret.second)
- m_keys.push_back(key);
- else
- ret.first->second = value;
-
- NetworkTable::GetTable(kTableName)->PutString(key, value);
-}
-
-/**
- * The internal method to read from a file.
- * This will be called in its own thread when the preferences singleton is
- * first created.
- */
-void Preferences::ReadTaskRun()
-{
- Synchronized sync(m_tableLock);
- semGive(m_fileOpStarted);
-
- std::string comment;
-
- FILE *file = NULL;
- file = fopen(kFileName, "r");
-
- if (file != NULL)
- {
- std::string buffer;
- while (true)
- {
- char value;
- do
- {
- value = fgetc(file);
- } while (value == ' ' || value == '\t');
-
- if (value == '\n' || value == ';')
- {
- if (value == '\n')
- {
- comment += "\n";
- }
- else
- {
- buffer.clear();
- for (; value != '\n' && !feof(file); value = fgetc(file))
- buffer += value;
- buffer += '\n';
- comment += buffer;
- }
- }
- else if (value == '[')
- {
- // Find the end of the section and the new line after it and throw it away
- for (; value != ']' && !feof(file); value = fgetc(file));
- for (; value != '\n' && !feof(file); value = fgetc(file));
- }
- else
- {
- buffer.clear();
- for (; value != '=' && !feof(file); )
- {
- buffer += value;
- do
- {
- value = fgetc(file);
- } while (value == ' ' || value == '\t');
- }
- std::string name = buffer;
- buffer.clear();
-
- bool shouldBreak = false;
-
- do
- {
- value = fgetc(file);
- } while (value == ' ' || value == '\t');
-
- if (value == '"')
- {
- for (value = fgetc(file); value != '"' && !feof(file); value = fgetc(file))
- buffer += value;
-
- // Clear the line
- while (fgetc(file) != '\n' && !feof(file));
- }
- else
- {
- for (; value != '\n' && !feof(file);)
- {
- buffer += value;
- do
- {
- value = fgetc(file);
- } while (value == ' ' || value == '\t');
- }
- if (feof(file))
- shouldBreak = true;
- }
-
- std::string value = buffer;
-
- if (!name.empty() && !value.empty())
- {
- m_keys.push_back(name);
- m_values.insert(std::pair<std::string, std::string>(name, value));
- NetworkTable::GetTable(kTableName)->PutString(name, value);
-
- if (!comment.empty())
- {
- m_comments.insert(std::pair<std::string, std::string>(name, comment));
- comment.clear();
- }
- }
-
- if (shouldBreak)
- break;
- }
- }
- }
- else
- {
- wpi_setWPIErrorWithContext(NoAvailableResources, "Failed to open preferences file.");
- }
-
- if (file != NULL)
- fclose(file);
-
- if (!comment.empty())
- m_endComment = comment;
-
- NetworkTable::GetTable(kTableName)->PutBoolean(kSaveField, false);
- NetworkTable::GetTable(kTableName)->AddTableListener(this);
-}
-
-/**
- * Internal method that actually writes the table to a file.
- * This is called in its own thread when {@link Preferences#Save() Save()} is called.
- */
-void Preferences::WriteTaskRun()
-{
- Synchronized sync(m_tableLock);
- semGive(m_fileOpStarted);
-
- FILE *file = NULL;
- Priv_SetWriteFileAllowed(1);
- file = fopen(kFileName, "w");
-
- fputs("[Preferences]\n", file);
- std::vector<std::string>::iterator it = m_keys.begin();
- for (; it != m_keys.end(); it++)
- {
- std::string key = *it;
- std::string value = m_values[key];
- std::string comment = m_comments[key];
-
- if (!comment.empty())
- fputs(comment.c_str(), file);
-
- fputs(key.c_str(), file);
- fputs(kValuePrefix, file);
- fputs(value.c_str(), file);
- fputs(kValueSuffix, file);
- }
-
- if (!m_endComment.empty())
- fputs(m_endComment.c_str(), file);
-
- if (file != NULL)
- fclose(file);
-
- NetworkTable::GetTable(kTableName)->PutBoolean(kSaveField, false);
-}
-
-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 (key==kSaveField)
- {
- if (table->GetBoolean(kSaveField, false))
- Save();
- }
- else
- {
- Synchronized sync(m_tableLock);
-
- if (!isKeyAcceptable(key) || table->GetString(key, "").find('"')!=std::string::npos)
- {
- 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++)
- {
- 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, "")));
- if (ret.second)
- m_keys.push_back(key);
- else
- ret.first->second = table->GetString(key, "");
- }
- }
-}
diff --git a/aos/externals/WPILib/WPILib/Preferences.h b/aos/externals/WPILib/WPILib/Preferences.h
deleted file mode 100644
index 7aae2e4..0000000
--- a/aos/externals/WPILib/WPILib/Preferences.h
+++ /dev/null
@@ -1,94 +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 __PREFERENCES_H__
-#define __PREFERENCES_H__
-
-#include "ErrorBase.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
- * the cRIO to access the next time the cRIO is booted.
- *
- * <p>This class loads and saves from a file
- * inside the cRIO. The user can not access the file directly, but may modify values at specific
- * fields which will then be saved to the file when {@link Preferences#Save() Save()} is called.</p>
- *
- * <p>This class is thread safe.</p>
- *
- * <p>This will also interact with {@link NetworkTable} by creating a table called "Preferences" with all the
- * key-value pairs. To save using {@link NetworkTable}, simply set the boolean at position "~S A V E~" to true.
- * 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 ITableListener
-{
-public:
- static Preferences *GetInstance();
-
- std::vector<std::string> GetKeys();
- std::string GetString(const char *key, const char *defaultValue = "");
- int GetString(const char *key, char *value, int valueSize, const char *defaultValue = "");
- int GetInt(const char *key, int defaultValue = 0);
- double GetDouble(const char *key, double defaultValue = 0.0);
- float GetFloat(const char *key, float defaultValue = 0.0);
- bool GetBoolean(const char *key, bool defaultValue = false);
- INT64 GetLong(const char *key, INT64 defaultValue = 0);
- void PutString(const char *key, const char *value);
- void PutInt(const char *key, int value);
- void PutDouble(const char *key, double value);
- void PutFloat(const char *key, float value);
- void PutBoolean(const char *key, bool value);
- void PutLong(const char *key, INT64 value);
- 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();
- virtual ~Preferences();
-
-private:
- std::string Get(const char *key);
- void Put(const char *key, std::string value);
-
- void ReadTaskRun();
- void WriteTaskRun();
-
- static int InitReadTask(Preferences *obj) {obj->ReadTaskRun();return 0;}
- static int InitWriteTask(Preferences *obj) {obj->WriteTaskRun();return 0;}
-
- static Preferences *_instance;
-
- /** The semaphore for accessing the file */
- SEM_ID m_fileLock;
- /** The semaphore for beginning reads and writes to the file */
- SEM_ID m_fileOpStarted;
- /** The semaphore for reading from the table */
- SEM_ID m_tableLock;
- typedef std::map<std::string, std::string> StringMap;
- /** The actual values (String->String) */
- StringMap m_values;
- /** The keys in the order they were read from the file */
- std::vector<std::string> m_keys;
- /** The comments that were in the file sorted by which key they appeared over (String->Comment) */
- StringMap m_comments;
- /** The comment at the end of the file */
- std::string m_endComment;
- Task m_readTask;
- Task m_writeTask;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/RWLock.cpp b/aos/externals/WPILib/WPILib/RWLock.cpp
deleted file mode 100644
index 16b77de..0000000
--- a/aos/externals/WPILib/WPILib/RWLock.cpp
+++ /dev/null
@@ -1,322 +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 <taskLib.h>
-#include <intLib.h>
-#include <assert.h>
-#include <tickLib.h>
-
-#include "RWLock.h"
-
-// A wrapper for assert that allows it to be easily turned off just in this
-// file. That configuration is recommended for normal use because it means less
-// code that gets executed with the scheduler locked.
-#if 1
-#define rwlock_assert(expression) assert(expression)
-// A macro to easily assert that some expression (possibly with side effects)
-// is 0.
-#define rwlock_assert_success(expression) do { \
- int ret = (expression); \
- assert(ret == 0); \
-} while (false)
-#else
-#define rwlock_assert(expression) ((void)0)
-#define rwlock_assert_success(expression) ((void)(expression))
-#endif
-
-/**
- * Class that locks the scheduler and then unlocks it in the destructor.
- */
-class TaskSchedulerLocker {
- public:
- TaskSchedulerLocker() {
- rwlock_assert_success(taskLock());
- }
- ~TaskSchedulerLocker() {
- rwlock_assert_success(taskUnlock());
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(TaskSchedulerLocker);
-};
-
-RWLock::Locker::Locker(RWLock *lock, bool write)
- : lock_(lock), num_(lock_->Lock(write)) {
-}
-
-RWLock::Locker::Locker(const Locker &other)
- : lock_(other.lock_), num_(lock_->AddLock()) {
-}
-
-RWLock::Locker::~Locker() {
- lock_->Unlock(num_);
-}
-
-// RWLock is implemented by just locking the scheduler while doing anything
-// because that is the only way under vxworks to do much of anything atomically.
-
-RWLock::RWLock()
- : number_of_write_locks_(0),
- number_of_writers_pending_(0),
- number_of_readers_(0),
- reader_tasks_(),
- read_ready_(semBCreate(SEM_Q_PRIORITY, SEM_EMPTY)),
- write_ready_(semBCreate(SEM_Q_PRIORITY, SEM_EMPTY)) {
- rwlock_assert(read_ready_ != NULL);
- rwlock_assert(write_ready_ != NULL);
-}
-
-RWLock::~RWLock() {
- // Make sure that nobody else currently has a lock or will ever be able to.
- Lock(true);
-
- rwlock_assert_success(semDelete(read_ready_));
- rwlock_assert_success(semDelete(write_ready_));
-}
-
-int RWLock::Lock(bool write) {
- assert(!intContext());
-
- int current_task = taskIdSelf();
- // It's safe to do this check up here (outside of locking the scheduler)
- // because we only care whether the current task is in there or not and that
- // can't be changed because it's the task doing the checking.
- bool current_task_holds_already = TaskOwns(current_task);
-
- TaskSchedulerLocker scheduler_locker;
-
- taskSafe();
-
- // We can't be reading and writing at the same time.
- rwlock_assert(!((number_of_write_locks_ > 0) && (number_of_readers_ > 0)));
-
- if (write) {
- assert(!current_task_holds_already);
- // If somebody else already has it locked.
- // Don't have to worry about another task getting scheduled after
- // write_ready_ gets given because nobody else (except another writer, which
- // would just block on it) will do anything while there are pending
- // writer(s).
- if ((number_of_readers_ > 0) || (number_of_write_locks_ > 0)) {
- ++number_of_writers_pending_;
- // Wait for it to be our turn.
- rwlock_assert_success(semTake(write_ready_, WAIT_FOREVER));
- --number_of_writers_pending_;
- } else {
- rwlock_assert(number_of_writers_pending_ == 0);
- }
- rwlock_assert((number_of_write_locks_ == 0) && (number_of_readers_ == 0));
- number_of_write_locks_ = 1;
- return 0;
- } else { // read
- // While there are one or more writers active or waiting.
- // Has to be a loop in case a writer gets scheduled between the time
- // read_ready_ gets flushed and we run.
- while ((number_of_write_locks_ > 0) || (number_of_writers_pending_ > 0)) {
- // Wait for the writer(s) to finish.
- rwlock_assert_success(semTake(read_ready_, WAIT_FOREVER));
- }
-
- int num = number_of_readers_;
- number_of_readers_ = num + 1;
- assert(num < kMaxReaders);
- rwlock_assert(reader_tasks_[num] == 0);
- reader_tasks_[num] = current_task;
- rwlock_assert((number_of_write_locks_ == 0) && (number_of_readers_ > 0));
- return num;
- }
-}
-
-void RWLock::Unlock(int num) {
- assert(!intContext());
- TaskSchedulerLocker scheduler_locker;
-
- taskUnsafe();
-
- // We have to be reading or writing right now, but not both.
- rwlock_assert((number_of_write_locks_ > 0) != (number_of_readers_ > 0));
-
- if (number_of_write_locks_ > 0) { // we're currently writing
- rwlock_assert(num == 0);
- --number_of_write_locks_;
- rwlock_assert((number_of_write_locks_ >= 0) &&
- (number_of_writers_pending_ >= 0));
- // If we were the last one.
- if (number_of_write_locks_ == 0) {
- // If there are no other tasks waiting to write (because otherwise they
- // need to get priority over any readers).
- if (number_of_writers_pending_ == 0) {
- // Wake up any waiting readers.
- rwlock_assert_success(semFlush(read_ready_));
- } else {
- // Wake up a waiting writer.
- // Not a problem if somebody else already did this before the waiting
- // writer got a chance to take it because it'll do nothing and return
- // success.
- rwlock_assert_success(semGive(write_ready_));
- }
- }
- } else { // we're curently reading
- rwlock_assert(reader_tasks_[num] == taskIdSelf());
- reader_tasks_[num] = 0;
- --number_of_readers_;
- rwlock_assert(number_of_readers_ >= 0 &&
- (number_of_writers_pending_ >= 0));
- // If we were the last one.
- if (number_of_readers_ == 0) {
- // If there are any writers waiting for a chance to go.
- if (number_of_writers_pending_ > 0) {
- // Wake a waiting writer.
- // Not a problem if somebody else already did this before the waiting
- // writer got a chance to take it because it'll still return success.
- rwlock_assert_success(semGive(write_ready_));
- }
- }
- }
-}
-
-int RWLock::AddLock() {
- assert(!intContext());
- // TODO: Replace this with just atomically incrementing the right number once
- // we start using a GCC new enough to have the nice atomic builtins.
- // That will be safe because whether we're currently reading or writing can't
- // change in the middle of this.
- TaskSchedulerLocker scheduler_locker;
-
- // We have to be reading or writing right now, but not both.
- rwlock_assert((number_of_write_locks_ > 0) != (number_of_readers_ > 0));
-
- if (number_of_write_locks_ > 0) { // we're currently writing
- ++number_of_write_locks_;
- return 0;
- } else { // we're currently reading
- return number_of_readers_++;
- }
-}
-
-bool RWLock::TaskOwns(int task_id) {
- for (size_t i = 0;
- i < sizeof(reader_tasks_) / sizeof(reader_tasks_[0]);
- ++i) {
- if (reader_tasks_[i] == task_id) return true;
- }
- return false;
-}
-
-#include <stdint.h>
-
-#include "Task.h"
-
-namespace {
-namespace testing {
-
-// It's kind of hard to test for race conditions because (by definition) they
-// only happen with really specific (and uncommon) timing. However, what tests
-// can cover is "normal" functioning (locking/unlocking by multiple tasks).
-
-// How long to wait until "everything" will be done doing whatever it's going
-// to.
-const int kSettleTicks = 10;
-
-void SetUp() {
-}
-
-void TearDown() {
-}
-
-struct LockerConfig {
- RWLock *const lock;
- const bool write;
-
- const int delay_ticks;
-
- bool started;
- bool locked;
- bool done;
- bool unlocked;
-
- LockerConfig(RWLock *lock, bool write, int delay_ticks = kSettleTicks)
- : lock(lock), write(write), delay_ticks(delay_ticks),
- started(false), locked(false), done(false), unlocked(false) {}
-};
-void LockerTask(LockerConfig *config) {
- config->started = true;
- {
- RWLock::Locker locker(config->lock, config->write);
- config->locked = true;
- taskDelay(config->delay_ticks);
- config->done = true;
- }
- config->unlocked = true;
-}
-
-// A basic test to make sure that 2 readers can get to it at the same time.
-// Mostly just to make sure that the test setup etc works.
-bool TwoReaders() {
- Task one("R1", reinterpret_cast<FUNCPTR>(LockerTask));
- Task two("R2", reinterpret_cast<FUNCPTR>(LockerTask));
- RWLock lock;
-
- LockerConfig one_config(&lock, false), two_config(&lock, false);
- one.Start(reinterpret_cast<uintptr_t>(&one_config));
- two.Start(reinterpret_cast<uintptr_t>(&two_config));
- while (!one_config.locked) taskDelay(1);
- assert(!one_config.done);
- while (!two_config.locked) taskDelay(1);
- if (one_config.done) {
- printf("It took too long for the second one to lock.\n");
- return false;
- }
- return true;
-}
-
-// Makes sure that everything works correctly even if a task is deleted while
-// a lock is held.
-bool DeleteWhileLocked() {
- Task reader("reader", reinterpret_cast<FUNCPTR>(LockerTask));
- Task writer("writer", reinterpret_cast<FUNCPTR>(LockerTask));
- static const unsigned int kDelayTicks = 15;
- RWLock lock;
-
- LockerConfig reader_config(&lock, false, kDelayTicks);
- LockerConfig writer_config(&lock, true, kDelayTicks);
-
- ULONG start = tickGet();
- reader.Start(reinterpret_cast<uintptr_t>(&reader_config));
- while (!reader_config.locked) taskDelay(1);
- writer.Start(reinterpret_cast<uintptr_t>(&writer_config));
- reader.Stop();
- if (tickGet() - start < kDelayTicks) {
- printf("Reader stopped too quickly.\n");
- return false;
- }
-
- while (!writer_config.done) taskDelay(1);
- if (tickGet() - start < kDelayTicks * 2) {
- printf("Writer finished too quickly.\n");
- return false;
- }
- return true;
-}
-
-#define RUN_TEST(name) do { \
- SetUp(); \
- bool test_succeeded = name(); \
- TearDown(); \
- if (!test_succeeded) successful = false; \
-} while (false)
-extern "C" int rwlock_test() {
- bool successful = true;
-
- RUN_TEST(TwoReaders);
- RUN_TEST(DeleteWhileLocked);
-
- return successful ? 0 : -1;
-}
-#undef RUN_TEST
-
-} // namespace testing
-} // namespace
diff --git a/aos/externals/WPILib/WPILib/RWLock.h b/aos/externals/WPILib/WPILib/RWLock.h
deleted file mode 100644
index 4ad64c8..0000000
--- a/aos/externals/WPILib/WPILib/RWLock.h
+++ /dev/null
@@ -1,127 +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 WPILIB_DATA_LOCK_H_
-#define WPILIB_DATA_LOCK_H_
-
-#include <semLib.h>
-
-#include "Base.h"
-
-/**
- * Represents a read/write lock on using some shared data so that it will not
- * be modified by any other tasks while code is using it.
- *
- * See <http://en.wikipedia.org/wiki/Readers-writer_lock> for an overview of how
- * this can be used.
- *
- * In this implementation, if there are any writers pending, then any new
- * attempts to acquire read locks will wait until all writers are done unless a
- * read lock is already held by that same task.
- *
- * While a lock is held, the task holding it can not be deleted.
- */
-class RWLock {
- public:
- /**
- * Represents an actual lock on the shared data. The destructor will free it.
- *
- * Intended to be used as an automatic (or local) variable so that the
- * compiler will ensure that the destructor gets called no matter how the
- * scope is exited.
- *
- * While it is possible to use new/delete to dynamically allocate an instance,
- * the constructor and destructor still MUST still be called from the same
- * task.
- *
- * Has a copy constructor which allows "copying" the lock that is held. Does
- * not have an assignment operator because assigning a lock doesn't make much
- * sense.
- */
- class Locker {
- public:
- /**
- * @param write Whether to create a writer lock (creates a reader lock
- * otherwise).
- */
- Locker(RWLock *lock, bool write);
-
- /**
- * Creates another lock of the same type. They can both be released
- * (destructed) independently.
- * NOTE: This does allow creating multiple write locks that are held at the
- * same time.
- */
- Locker(const Locker &other);
-
- /**
- * Unlocks the lock.
- */
- ~Locker();
-
- private:
- RWLock *const lock_;
- const int num_;
-
- void operator=(const Locker &);
- };
-
- /**
- * The maximum number of read locks that can be held at the same time.
- */
- static const int kMaxReaders = 64;
-
- RWLock();
- /**
- * Waits until there are no more read or write locks held.
- */
- ~RWLock();
-
- private:
- // The number of write locks that are currently held.
- int number_of_write_locks_;
- // How many tasks are currently waiting to get a write lock.
- // Each count in here corresponds to a task that is blocked on write_ready_.
- int number_of_writers_pending_;
-
- // How many read locks are currently held.
- int number_of_readers_;
-
- // The task ID of the task holding each read lock.
- int reader_tasks_[kMaxReaders];
-
- // Always locked. Gets semFlushed when readers are allowed to take the lock
- // (after all writers are done).
- SEM_ID read_ready_;
- // Locked almost all of the time. Pending writers (who have to update
- // number_of_writers_pending_) block locking this and it gets unlocked when it
- // is time for one of them to go.
- SEM_ID write_ready_;
-
- // Acquires the appropriate kind of lock.
- // Returns a value that must be passed to the corresponding Unlock call.
- int Lock(bool write);
- // Unlocks 1 lock.
- // Does not need to know whether it is read or write because only one type of
- // lock can be held at a time.
- // num must be the return value from the corresponding Lock/AddLock call.
- void Unlock(int num);
- // Increments the lock count by 1.
- // There must be at least 1 lock held during the execution of this method.
- // Use the regular Unlock() to unlock a lock acquired this way.
- // This is not the same as Lock(current_type) because this is the only way to
- // acquire multiple write locks at the same time.
- // Returns a value that must be passed to the corresponding Unlock call.
- int AddLock();
- // Checks whether task_id is in reader_tasks_.
- bool TaskOwns(int task_id);
-
- friend class Locker;
-
- DISALLOW_COPY_AND_ASSIGN(RWLock);
-};
-
-#endif // WPILIB_DATA_LOCK_H_
diff --git a/aos/externals/WPILib/WPILib/Relay.cpp b/aos/externals/WPILib/WPILib/Relay.cpp
deleted file mode 100644
index 1e319c0..0000000
--- a/aos/externals/WPILib/WPILib/Relay.cpp
+++ /dev/null
@@ -1,274 +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 "Relay.h"
-
-#include "DigitalModule.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Resource.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-// Allocate each direction separately.
-static Resource *relayChannels = NULL;
-
-/**
- * Common relay intitialization methode.
- * This code is common to all Relay constructors and initializes the relay and reserves
- * all resources that need to be locked. Initially the relay is set to both lines at 0v.
- * @param slot The module slot number this relay is connected to.
- *
- * @param moduleNumber The digital module this relay is connected to (1 or 2).
- */
-void Relay::InitRelay (uint8_t moduleNumber)
-{
- m_table = NULL;
- char buf[64];
- Resource::CreateResourceObject(&relayChannels, tDIO::kNumSystems * kRelayChannels * 2);
- if (!SensorBase::CheckRelayModule(moduleNumber))
- {
- snprintf(buf, 64, "Digital Module %d", moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!SensorBase::CheckRelayChannel(m_channel))
- {
- snprintf(buf, 64, "Relay Channel %d", m_channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
-
- if (m_direction == kBothDirections || m_direction == kForwardOnly)
- {
- snprintf(buf, 64, "Forward Relay %d (Module: %d)", m_channel, moduleNumber);
- if (relayChannels->Allocate(((moduleNumber - 1) * kRelayChannels +
- m_channel - 1) * 2, buf, this) == ~0ul)
- {
- return;
- }
-
- nUsageReporting::report(nUsageReporting::kResourceType_Relay, m_channel, moduleNumber - 1);
- }
- if (m_direction == kBothDirections || m_direction == kReverseOnly)
- {
- snprintf(buf, 64, "Reverse Relay %d (Module: %d)", m_channel, moduleNumber);
- if (relayChannels->Allocate(((moduleNumber - 1) * kRelayChannels
- + m_channel - 1) * 2 + 1, buf, this) == ~0ul)
- {
- return;
- }
-
- nUsageReporting::report(nUsageReporting::kResourceType_Relay, m_channel + 128, moduleNumber - 1);
- }
- 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);
-}
-
-/**
- * Relay constructor given the module and the channel.
- *
- * @param moduleNumber The digital module this relay is connected to (1 or 2).
- * @param channel The channel number within the module for this relay.
- * @param direction The direction that the Relay object will control.
- */
-Relay::Relay(uint8_t moduleNumber, uint32_t channel, Relay::Direction direction)
- : m_channel (channel)
- , m_direction (direction)
-{
- InitRelay(moduleNumber);
-}
-
-/**
- * Relay constructor given a channel only where the default digital module is used.
- * @param channel The channel number within the default module for this relay.
- * @param direction The direction that the Relay object will control.
- */
-Relay::Relay(uint32_t channel, Relay::Direction direction)
- : m_channel (channel)
- , m_direction (direction)
-{
- InitRelay(GetDefaultDigitalModule());
-}
-
-/**
- * Free the resource associated with a relay.
- * The relay channels are set to free and the relay output is turned off.
- */
-Relay::~Relay()
-{
- m_module->SetRelayForward(m_channel, false);
- m_module->SetRelayReverse(m_channel, false);
-
- if (m_direction == kBothDirections || m_direction == kForwardOnly)
- {
- relayChannels->Free(((m_module->GetNumber() - 1) *
- kRelayChannels + m_channel - 1) * 2, this);
- }
- if (m_direction == kBothDirections || m_direction == kReverseOnly)
- {
- relayChannels->Free(((m_module->GetNumber() - 1) *
- kRelayChannels + m_channel - 1) * 2 + 1, this);
- }
-}
-
-/**
- * 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 be any of the four states:
- * 0v-0v, 0v-12v, 12v-0v, 12v-12v
- *
- * 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 value The state to set the relay.
- */
-void Relay::Set(Relay::Value value)
-{
- if (StatusIsFatal()) return;
- switch (value)
- {
- case kOff:
- if (m_direction == kBothDirections || m_direction == kForwardOnly)
- {
- m_module->SetRelayForward(m_channel, false);
- }
- if (m_direction == kBothDirections || m_direction == kReverseOnly)
- {
- m_module->SetRelayReverse(m_channel, false);
- }
- break;
- case kOn:
- if (m_direction == kBothDirections || m_direction == kForwardOnly)
- {
- m_module->SetRelayForward(m_channel, true);
- }
- if (m_direction == kBothDirections || m_direction == kReverseOnly)
- {
- m_module->SetRelayReverse(m_channel, true);
- }
- break;
- case kForward:
- if (m_direction == kReverseOnly)
- {
- wpi_setWPIError(IncompatibleMode);
- break;
- }
- if (m_direction == kBothDirections || m_direction == kForwardOnly)
- {
- m_module->SetRelayForward(m_channel, true);
- }
- if (m_direction == kBothDirections)
- {
- m_module->SetRelayReverse(m_channel, false);
- }
- break;
- case kReverse:
- if (m_direction == kForwardOnly)
- {
- wpi_setWPIError(IncompatibleMode);
- break;
- }
- if (m_direction == kBothDirections)
- {
- m_module->SetRelayForward(m_channel, false);
- }
- if (m_direction == kBothDirections || m_direction == kReverseOnly)
- {
- m_module->SetRelayReverse(m_channel, true);
- }
- 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() {
- if(m_table != NULL){
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void Relay::StopLiveWindowMode() {
- if(m_table != NULL){
- 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
deleted file mode 100644
index d7bb459..0000000
--- a/aos/externals/WPILib/WPILib/Relay.h
+++ /dev/null
@@ -1,56 +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 RELAY_H_
-#define RELAY_H_
-
-#include "SensorBase.h"
-#include "tables/ITableListener.h"
-#include "LiveWindow/LiveWindowSendable.h"
-#include "tables/ITable.h"
-
-class DigitalModule;
-
-/**
- * Class for Spike style relay outputs.
- * Relays are intended to be connected to spikes or similar relays. The relay channels controls
- * a pair of pins that are either both off, one on, the other on, or both on. This translates into
- * two spike outputs at 0v, one at 12v and one at 0v, one at 0v and the other at 12v, or two
- * spike outputs at 12V. This allows off, full forward, or full reverse control of motors without
- * 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, public ITableListener, public LiveWindowSendable {
-public:
- typedef enum {kOff, kOn, kForward, kReverse} Value;
- typedef enum {kBothDirections, kForwardOnly, kReverseOnly} Direction;
-
- Relay(uint32_t channel, Direction direction = kBothDirections);
- Relay(uint8_t moduleNumber, uint32_t channel, Direction direction = kBothDirections);
- 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_t moduleNumber);
-
- uint32_t m_channel;
- Direction m_direction;
- DigitalModule *m_module;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Resource.cpp b/aos/externals/WPILib/WPILib/Resource.cpp
deleted file mode 100644
index a5a763e..0000000
--- a/aos/externals/WPILib/WPILib/Resource.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 "Resource.h"
-#include "WPIErrors.h"
-
-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 .. elements - 1].
- */
-Resource::Resource(uint32_t elements)
-{
- Synchronized sync(m_createLock);
- m_size = elements;
- m_isAllocated = new bool[m_size];
- for (uint32_t i=0; i < m_size; i++)
- {
- m_isAllocated[i] = false;
- }
-}
-
-/**
- * Factory method to create a Resource allocation-tracker *if* needed.
- * Handles the necessary synchronization internally.
- *
- * @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_t elements)
-{
- Synchronized sync(m_createLock);
- if (*r == NULL)
- {
- *r = new Resource(elements);
- }
-}
-
-/**
- * Delete the allocated array or resources.
- * This happens when the module is unloaded (provided it was statically allocated).
- */
-Resource::~Resource()
-{
- delete[] m_isAllocated;
-}
-
-/**
- * Allocate a resource.
- * When a resource is requested, mark it allocated. In this case, a free resource value
- * within the range is located and returned after it is marked allocated.
- */
-uint32_t Resource::Allocate(const char *resourceDesc, const ErrorBase *error)
-{
- Synchronized sync(m_allocateLock);
- for (uint32_t i=0; i < m_size; i++)
- {
- if (!m_isAllocated[i])
- {
- m_isAllocated[i] = true;
- return i;
- }
- }
- wpi_setStaticWPIErrorWithContext(error, NoAvailableResources, resourceDesc);
- return ~0ul;
-}
-
-/**
- * Allocate a specific resource value.
- * The user requests a specific resource value, i.e. channel number and it is verified
- * unallocated, then returned.
- */
-uint32_t Resource::Allocate(uint32_t index, const char *resourceDesc,
- const ErrorBase *error)
-{
- Synchronized sync(m_allocateLock);
- if (index >= m_size)
- {
- wpi_setStaticWPIErrorWithContext(error, ChannelIndexOutOfRange, resourceDesc);
- return ~0ul;
- }
- if ( m_isAllocated[index] )
- {
- wpi_setStaticWPIErrorWithContext(error, ResourceAlreadyAllocated, resourceDesc);
- return ~0ul;
- }
- m_isAllocated[index] = true;
- return index;
-}
-
-
-/**
- * Free an allocated resource.
- * After a resource is no longer needed, for example a destructor is called for a channel assignment
- * class, Free will release the resource value so it can be reused somewhere else in the program.
- */
-void Resource::Free(uint32_t index, const ErrorBase *error)
-{
- Synchronized sync(m_allocateLock);
- if (index == ~0ul) return;
- if (index >= m_size)
- {
- wpi_setStaticWPIError(error, NotAllocated);
- return;
- }
- if (!m_isAllocated[index])
- {
- wpi_setStaticWPIError(error, NotAllocated);
- return;
- }
- m_isAllocated[index] = false;
-}
diff --git a/aos/externals/WPILib/WPILib/Resource.h b/aos/externals/WPILib/WPILib/Resource.h
deleted file mode 100644
index daac57b..0000000
--- a/aos/externals/WPILib/WPILib/Resource.h
+++ /dev/null
@@ -1,47 +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 RESOURCE_H_
-#define RESOURCE_H_
-
-#include "ErrorBase.h"
-#include "Synchronized.h"
-#include <vxWorks.h>
-
-/**
- * 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.
- *
- * Several methods require an ErrorBase* so that they can report any errors.
- */
-class Resource
-{
-public:
- virtual ~Resource();
- static void CreateResourceObject(Resource **r, uint32_t elements);
- uint32_t Allocate(const char *resourceDesc, const ErrorBase *error);
- uint32_t Allocate(uint32_t index, const char *resourceDesc,
- const ErrorBase *error);
- void Free(uint32_t index, const ErrorBase *error);
-
-private:
- explicit Resource(uint32_t size);
-
- bool *m_isAllocated;
- ReentrantSemaphore m_allocateLock;
- uint32_t m_size;
-
- static ReentrantSemaphore m_createLock;
-
- DISALLOW_COPY_AND_ASSIGN(Resource);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/RobotBase.cpp b/aos/externals/WPILib/WPILib/RobotBase.cpp
deleted file mode 100644
index a42938b..0000000
--- a/aos/externals/WPILib/WPILib/RobotBase.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 "RobotBase.h"
-
-#include "DriverStation.h"
-#include "NetworkCommunication/FRCComm.h"
-#include "NetworkCommunication/symModuleLink.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Utility.h"
-#include <moduleLib.h>
-#include <taskLib.h>
-#include <unldLib.h>
-#include <cstring>
-
-RobotBase* RobotBase::m_instance = NULL;
-
-const char *FILE_NAME = "/c/FRC_Lib_Version.ini";
-const char *VERSION_STRING = "C++ 2014 Update 1";
-
-
-void RobotBase::setInstance(RobotBase* robot)
-{
- // No point in synchronization here because it's private and it only gets
- // called from robotTask.
- wpi_assert(m_instance == NULL);
- m_instance = robot;
-}
-
-RobotBase &RobotBase::getInstance()
-{
- return *m_instance;
-}
-
-/**
- * Constructor for a generic robot program.
- * User code that should run before the Autonomous or Operator Control period
- * starts should be placed in the subclass constructor.
- * The constructor must finish before Autonomous can be entered.
- *
- * This must be used to ensure that the communications code starts. In the future it would be
- * nice to put this code into it's own task that loads on boot so ensure that it runs.
- */
-RobotBase::RobotBase()
- : m_task (NULL)
- , m_ds (NULL)
-{
- m_ds = DriverStation::GetInstance();
-}
-
-/**
- * Free the resources for a RobotBase class.
- * This includes deleting all classes that might have been allocated as Singletons so they
- * would never be deleted except here.
- */
-RobotBase::~RobotBase()
-{
- SensorBase::DeleteSingletons();
- delete m_task;
- m_task = NULL;
- m_instance = NULL;
-}
-
-/**
- * Check on the overall status of the system.
- *
- * @return Is the system active (i.e. PWM motor outputs, etc. enabled)?
- */
-bool RobotBase::IsSystemActive()
-{
- return m_watchdog.IsSystemActive();
-}
-
-/**
- * Return the instance of the Watchdog timer.
- * Get the watchdog timer so the user program can either disable it or feed it when
- * necessary.
- */
-Watchdog &RobotBase::GetWatchdog()
-{
- return m_watchdog;
-}
-
-/**
- * Determine if the Robot is currently enabled.
- * @return True if the Robot is currently enabled by the field controls.
- */
-bool RobotBase::IsEnabled()
-{
- return m_ds->IsEnabled();
-}
-
-/**
- * Determine if the Robot is currently disabled.
- * @return True if the Robot is currently disabled by the field controls.
- */
-bool RobotBase::IsDisabled()
-{
- return m_ds->IsDisabled();
-}
-
-/**
- * Determine if the robot is currently in Autonomous mode.
- * @return True if the robot is currently operating Autonomously as determined by the field controls.
- */
-bool RobotBase::IsAutonomous()
-{
- return m_ds->IsAutonomous();
-}
-
-/**
- * Determine if the robot is currently in Operator Control mode.
- * @return True if the robot is currently operating in Tele-Op mode as determined by the field controls.
- */
-bool RobotBase::IsOperatorControl()
-{
- return m_ds->IsOperatorControl();
-}
-
-/**
- * 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?
- */
-bool RobotBase::IsNewDataAvailable()
-{
- return m_ds->IsNewControlData();
-}
-
-/**
- * Static interface that will start the competition in the new task.
- */
-void RobotBase::robotTask(FUNCPTR factory, Task *task)
-{
- RobotBase *instance = (RobotBase*)factory();
- instance->m_task = task;
- RobotBase::setInstance(instance);
- instance->StartCompetition();
-}
-
-void RobotBase::WriteVersionString() {
- FILE *file = fopen(FILE_NAME, "w");
- if (file != NULL) {
- fputs(VERSION_STRING, file);
- fputs(" (customized by Team 971 Spartan Robotics)", file);
- fclose(file);
- }
-}
-
-/**
- *
- * Start the robot code.
- * This function starts the robot code running by spawning a task. Currently
- * tasks seem to be started by LVRT without setting the VX_FP_TASK flag which
- * means that the floating point registers are not saved on interrupts and task
- * switches. That causes the program to experience hard to debug and
- * unpredictable results, so the LVRT code starts this function, so that it, in
- * turn, can start the actual user program.
- */
-void RobotBase::startRobotTask(FUNCPTR factory)
-{
-#ifdef SVN_REV
- if (strlen(SVN_REV))
- {
- printf("WPILib was compiled from SVN revision %s\n", SVN_REV);
- }
- else
- {
- printf("WPILib was compiled from a location that is not source controlled.\n");
- }
-#else
- printf("WPILib was compiled without -D'SVN_REV=nnnn'\n");
-#endif
- printf("This WPILib has been fixed by Team 971 Spartan Robotics.\n");
-
- // Check for startup code already running
- int32_t oldId = taskNameToId(const_cast<char*>("FRC_RobotTask"));
- if (oldId != ERROR)
- {
- // Find the startup code module.
- char moduleName[256];
- moduleNameFindBySymbolName("FRC_UserProgram_StartupLibraryInit", moduleName);
- MODULE_ID startupModId = moduleFindByName(moduleName);
- if (startupModId != NULL)
- {
- // Remove the startup code.
- unldByModuleId(startupModId, 0);
- printf("!!! Error: Default code was still running... It was unloaded for you... Please try again.\n");
- return;
- }
- // This case should no longer get hit.
- printf("!!! Error: Other robot code is still running... Unload it and then try again.\n");
- return;
- }
-
- // Let the framework know that we are starting a new user program so the Driver Station can disable.
- FRC_NetworkCommunication_observeUserProgramStarting();
-
- // Let the Usage Reporting framework know that there is a C++ program running
- nUsageReporting::report(nUsageReporting::kResourceType_Language, nUsageReporting::kLanguage_CPlusPlus);
-
- RobotBase::WriteVersionString();
-
- // Start robot task
- // This is done to ensure that the C++ robot task is spawned with the floating point
- // context save parameter.
- Task *task = new Task("RobotTask", (FUNCPTR)RobotBase::robotTask, Task::kDefaultPriority, 64000);
- task->Start((int32_t)factory, (int32_t)task);
-}
-
-/**
- * This class exists for the sole purpose of getting its destructor called when the module unloads.
- * Before the module is done unloading, we need to delete the RobotBase derived singleton. This should delete
- * the other remaining singletons that were registered.
- */
-class RobotDeleter
-{
-public:
- RobotDeleter() {}
- ~RobotDeleter()
- {
- delete &RobotBase::getInstance();
- }
-};
-static RobotDeleter g_robotDeleter;
diff --git a/aos/externals/WPILib/WPILib/RobotBase.h b/aos/externals/WPILib/WPILib/RobotBase.h
deleted file mode 100644
index e587089..0000000
--- a/aos/externals/WPILib/WPILib/RobotBase.h
+++ /dev/null
@@ -1,73 +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 ROBOT_H_
-#define ROBOT_H_
-
-#include "Base.h"
-#include "Task.h"
-#include "Watchdog.h"
-
-class DriverStation;
-
-/**
- * This macro will set up the given class (which must be a (direct or indirect)
- * RobotBase subclass) so that when the user code is loaded, it will be
- * instantiated and StartCompetition() will be called on the instance.
- */
-#define START_ROBOT_CLASS(_ClassName_) \
- RobotBase *FRC_userClassFactory() \
- { \
- return new _ClassName_(); \
- } \
- extern "C" { \
- int32_t FRC_UserProgram_StartupLibraryInit() \
- { \
- RobotBase::startRobotTask((FUNCPTR)FRC_userClassFactory); \
- return 0; \
- } \
- }
-
-/**
- * Implement a Robot Program framework.
- * The RobotBase class is intended to be subclassed by a user creating a robot
- * program, possibly indirectly through one of the subclasses included in this
- * library.
- */
-class RobotBase {
- friend class RobotDeleter;
-public:
- static RobotBase &getInstance();
-
- bool IsEnabled();
- bool IsDisabled();
- bool IsAutonomous();
- bool IsOperatorControl();
- bool IsTest();
- bool IsSystemActive();
- bool IsNewDataAvailable();
- Watchdog &GetWatchdog();
- static void startRobotTask(FUNCPTR factory);
-
-protected:
- virtual ~RobotBase();
- virtual void StartCompetition() = 0;
- RobotBase();
- static void WriteVersionString();
-
- static void setInstance(RobotBase* robot);
- static void robotTask(FUNCPTR factory, Task *task);
-
- Task *m_task;
- Watchdog m_watchdog;
- DriverStation *m_ds;
-private:
- static RobotBase *m_instance;
- DISALLOW_COPY_AND_ASSIGN(RobotBase);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/RobotDrive.cpp b/aos/externals/WPILib/WPILib/RobotDrive.cpp
deleted file mode 100644
index 4f6b4b6..0000000
--- a/aos/externals/WPILib/WPILib/RobotDrive.cpp
+++ /dev/null
@@ -1,737 +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 "RobotDrive.h"
-
-#include "CANJaguar.h"
-#include "GenericHID.h"
-#include "Joystick.h"
-#include "Jaguar.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-#include <math.h>
-
-#define max(x, y) (((x) > (y)) ? (x) : (y))
-
-const int32_t RobotDrive::kMaxNumberOfMotors;
-
-/*
- * 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.
- */
-
-/**
- * Common function to initialize all the robot drive constructors.
- * Create a motor safety object (the real reason for the common code) and
- * initialize all the motor assignments. The default timeout is set for the robot drive.
- */
-void RobotDrive::InitRobotDrive() {
- m_frontLeftMotor = NULL;
- m_frontRightMotor = NULL;
- m_rearRightMotor = NULL;
- m_rearLeftMotor = NULL;
- m_sensitivity = 0.5;
- m_maxOutput = 1.0;
- m_safetyHelper = new MotorSafetyHelper(this);
- m_safetyHelper->SetSafetyEnabled(true);
-}
-
-/** Constructor for RobotDrive with 2 motors specified with channel numbers.
- * Set up parameters for a two wheel drive system where the
- * left and right motor pwm channels are specified in the call.
- * This call assumes Jaguars for controlling the motors.
- * @param leftMotorChannel The PWM channel number on the default digital module that drives the left motor.
- * @param rightMotorChannel The PWM channel number on the default digital module that drives the right motor.
- */
-RobotDrive::RobotDrive(uint32_t leftMotorChannel, uint32_t rightMotorChannel)
-{
- InitRobotDrive();
- m_rearLeftMotor = new Jaguar(leftMotorChannel);
- m_rearRightMotor = new Jaguar(rightMotorChannel);
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- SetLeftRightMotorOutputs(0.0, 0.0);
- m_deleteSpeedControllers = true;
-}
-
-/**
- * Constructor for 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
- */
-RobotDrive::RobotDrive(uint32_t frontLeftMotor, uint32_t rearLeftMotor,
- uint32_t frontRightMotor, uint32_t rearRightMotor)
-{
- InitRobotDrive();
- m_rearLeftMotor = new Jaguar(rearLeftMotor);
- m_rearRightMotor = new Jaguar(rearRightMotor);
- m_frontLeftMotor = new Jaguar(frontLeftMotor);
- m_frontRightMotor = new Jaguar(frontRightMotor);
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- SetLeftRightMotorOutputs(0.0, 0.0);
- m_deleteSpeedControllers = true;
-}
-
-/**
- * Constructor for RobotDrive with 2 motors specified as SpeedController objects.
- * The SpeedController version of the constructor enables programs to use the RobotDrive classes with
- * subclasses of the SpeedController objects, for example, versions with ramping or reshaping of
- * the curve to suit motor bias or deadband elimination.
- * @param leftMotor The left SpeedController object used to drive the robot.
- * @param rightMotor the right SpeedController object used to drive the robot.
- */
-RobotDrive::RobotDrive(SpeedController *leftMotor, SpeedController *rightMotor)
-{
- InitRobotDrive();
- if (leftMotor == NULL || rightMotor == NULL)
- {
- wpi_setWPIError(NullParameter);
- m_rearLeftMotor = m_rearRightMotor = NULL;
- return;
- }
- m_rearLeftMotor = leftMotor;
- m_rearRightMotor = rightMotor;
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- m_deleteSpeedControllers = false;
-}
-
-RobotDrive::RobotDrive(SpeedController &leftMotor, SpeedController &rightMotor)
-{
- InitRobotDrive();
- m_rearLeftMotor = &leftMotor;
- m_rearRightMotor = &rightMotor;
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- m_deleteSpeedControllers = false;
-}
-
-/**
- * Constructor for RobotDrive with 4 motors specified as SpeedController objects.
- * Speed controller input version of RobotDrive (see previous comments).
- * @param rearLeftMotor The back left SpeedController object used to drive the robot.
- * @param frontLeftMotor The front left SpeedController object used to drive the robot
- * @param rearRightMotor The back right SpeedController object used to drive the robot.
- * @param frontRightMotor The front right SpeedController object used to drive the robot.
- */
-RobotDrive::RobotDrive(SpeedController *frontLeftMotor, SpeedController *rearLeftMotor,
- SpeedController *frontRightMotor, SpeedController *rearRightMotor)
-{
- InitRobotDrive();
- if (frontLeftMotor == NULL || rearLeftMotor == NULL || frontRightMotor == NULL || rearRightMotor == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- m_frontLeftMotor = frontLeftMotor;
- m_rearLeftMotor = rearLeftMotor;
- m_frontRightMotor = frontRightMotor;
- m_rearRightMotor = rearRightMotor;
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- m_deleteSpeedControllers = false;
-}
-
-RobotDrive::RobotDrive(SpeedController &frontLeftMotor, SpeedController &rearLeftMotor,
- SpeedController &frontRightMotor, SpeedController &rearRightMotor)
-{
- InitRobotDrive();
- m_frontLeftMotor = &frontLeftMotor;
- m_rearLeftMotor = &rearLeftMotor;
- m_frontRightMotor = &frontRightMotor;
- m_rearRightMotor = &rearRightMotor;
- for (int32_t i=0; i < kMaxNumberOfMotors; i++)
- {
- m_invertedMotors[i] = 1;
- }
- m_deleteSpeedControllers = false;
-}
-
-/**
- * RobotDrive destructor.
- * Deletes motor objects that were not passed in and created internally only.
- **/
-RobotDrive::~RobotDrive()
-{
- if (m_deleteSpeedControllers)
- {
- delete m_frontLeftMotor;
- delete m_rearLeftMotor;
- delete m_frontRightMotor;
- delete m_rearRightMotor;
- }
- delete m_safetyHelper;
-}
-
-/**
- * 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 will most likely be used in an autonomous routine.
- *
- * @param outputMagnitude The forward component of the output magnitude to send to the motors.
- * @param curve The rate of turn, constant for different forward speeds.
- */
-void RobotDrive::Drive(float outputMagnitude, float curve)
-{
- float leftOutput, rightOutput;
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_RobotDrive, GetNumMotors(), nUsageReporting::kRobotDrive_ArcadeRatioCurve);
- reported = true;
- }
-
- if (curve < 0)
- {
- float value = log(-curve);
- float ratio = (value - m_sensitivity)/(value + m_sensitivity);
- if (ratio == 0) ratio =.0000000001;
- leftOutput = outputMagnitude / ratio;
- rightOutput = outputMagnitude;
- }
- else if (curve > 0)
- {
- float value = log(curve);
- float ratio = (value - m_sensitivity)/(value + m_sensitivity);
- if (ratio == 0) ratio =.0000000001;
- leftOutput = outputMagnitude;
- rightOutput = outputMagnitude / ratio;
- }
- else
- {
- leftOutput = outputMagnitude;
- rightOutput = outputMagnitude;
- }
- SetLeftRightMotorOutputs(leftOutput, rightOutput);
-}
-
-/**
- * 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 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, bool squaredInputs)
-{
- if (leftStick == NULL || rightStick == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- TankDrive(leftStick->GetY(), rightStick->GetY(), squaredInputs);
-}
-
-void RobotDrive::TankDrive(GenericHID &leftStick, GenericHID &rightStick, bool squaredInputs)
-{
- TankDrive(leftStick.GetY(), rightStick.GetY(), squaredInputs);
-}
-
-/**
- * Provide tank steering using the stored robot configuration.
- * This function lets you pick the axis to be used on each Joystick object for the left
- * and right sides of the robot.
- * @param leftStick The Joystick object to use for the left side of the robot.
- * @param leftAxis The axis to select on the left side Joystick object.
- * @param rightStick The Joystick object to use for the right side of the robot.
- * @param rightAxis The axis to select on the right side Joystick object.
- */
-void RobotDrive::TankDrive(GenericHID *leftStick, uint32_t leftAxis,
- GenericHID *rightStick, uint32_t rightAxis, bool squaredInputs)
-{
- if (leftStick == NULL || rightStick == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- TankDrive(leftStick->GetRawAxis(leftAxis), rightStick->GetRawAxis(rightAxis), squaredInputs);
-}
-
-void RobotDrive::TankDrive(GenericHID &leftStick, uint32_t leftAxis,
- GenericHID &rightStick, uint32_t rightAxis, bool squaredInputs)
-{
- TankDrive(leftStick.GetRawAxis(leftAxis), rightStick.GetRawAxis(rightAxis), squaredInputs);
-}
-
-
-/**
- * Provide tank steering using the stored robot configuration.
- * This function lets you directly provide joystick values from any source.
- * @param leftValue The value of the left stick.
- * @param rightValue The value of the right stick.
- */
-void RobotDrive::TankDrive(float leftValue, float rightValue, bool squaredInputs)
-{
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_RobotDrive, GetNumMotors(), nUsageReporting::kRobotDrive_Tank);
- reported = true;
- }
-
- // square the inputs (while preserving the sign) to increase fine control while permitting full power
- leftValue = Limit(leftValue);
- rightValue = Limit(rightValue);
- if(squaredInputs)
- {
- 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);
-}
-
-/**
- * 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 stick 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 RobotDrive::ArcadeDrive(GenericHID *stick, bool squaredInputs)
-{
- // simply call the full-featured ArcadeDrive with the appropriate values
- ArcadeDrive(stick->GetY(), stick->GetX(), squaredInputs);
-}
-
-/**
- * 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 stick 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 RobotDrive::ArcadeDrive(GenericHID &stick, bool squaredInputs)
-{
- // simply call the full-featured ArcadeDrive with the appropriate values
- ArcadeDrive(stick.GetY(), stick.GetX(), squaredInputs);
-}
-
-/**
- * Arcade drive implements single stick driving.
- * Given two joystick instances and two axis, compute the values to send to either two
- * or four motors.
- * @param moveStick The Joystick object that represents the forward/backward direction
- * @param moveAxis The axis on the moveStick object to use for fowards/backwards (typically Y_AXIS)
- * @param rotateStick The Joystick object that represents the rotation value
- * @param rotateAxis The axis on the rotation object to use for the rotate right/left (typically X_AXIS)
- * @param squaredInputs Setting this parameter to true increases the sensitivity at lower speeds
- */
-void RobotDrive::ArcadeDrive(GenericHID* moveStick, uint32_t moveAxis,
- GenericHID* rotateStick, uint32_t rotateAxis,
- bool squaredInputs)
-{
- float moveValue = moveStick->GetRawAxis(moveAxis);
- float rotateValue = rotateStick->GetRawAxis(rotateAxis);
-
- ArcadeDrive(moveValue, rotateValue, squaredInputs);
-}
-
-/**
- * Arcade drive implements single stick driving.
- * Given two joystick instances and two axis, compute the values to send to either two
- * or four motors.
- * @param moveStick The Joystick object that represents the forward/backward direction
- * @param moveAxis The axis on the moveStick object to use for fowards/backwards (typically Y_AXIS)
- * @param rotateStick The Joystick object that represents the rotation value
- * @param rotateAxis The axis on the rotation object to use for the rotate right/left (typically X_AXIS)
- * @param squaredInputs Setting this parameter to true increases the sensitivity at lower speeds
- */
-
-void RobotDrive::ArcadeDrive(GenericHID &moveStick, uint32_t moveAxis,
- GenericHID &rotateStick, uint32_t rotateAxis,
- bool squaredInputs)
-{
- float moveValue = moveStick.GetRawAxis(moveAxis);
- float rotateValue = rotateStick.GetRawAxis(rotateAxis);
-
- ArcadeDrive(moveValue, rotateValue, squaredInputs);
-}
-
-/**
- * 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 RobotDrive::ArcadeDrive(float moveValue, float rotateValue, bool squaredInputs)
-{
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_RobotDrive, GetNumMotors(), nUsageReporting::kRobotDrive_ArcadeStandard);
- reported = true;
- }
-
- // local variables to hold the computed PWM values for the motors
- float leftMotorOutput;
- float rightMotorOutput;
-
- moveValue = Limit(moveValue);
- rotateValue = Limit(rotateValue);
-
- if (squaredInputs)
- {
- // square the inputs (while preserving the sign) to increase fine control while permitting full power
- if (moveValue >= 0.0)
- {
- moveValue = (moveValue * moveValue);
- }
- else
- {
- moveValue = -(moveValue * moveValue);
- }
- if (rotateValue >= 0.0)
- {
- rotateValue = (rotateValue * rotateValue);
- }
- else
- {
- rotateValue = -(rotateValue * rotateValue);
- }
- }
-
- if (moveValue > 0.0)
- {
- if (rotateValue > 0.0)
- {
- leftMotorOutput = moveValue - rotateValue;
- rightMotorOutput = max(moveValue, rotateValue);
- }
- else
- {
- leftMotorOutput = max(moveValue, -rotateValue);
- rightMotorOutput = moveValue + rotateValue;
- }
- }
- else
- {
- if (rotateValue > 0.0)
- {
- leftMotorOutput = - max(-moveValue, rotateValue);
- rightMotorOutput = moveValue + rotateValue;
- }
- else
- {
- leftMotorOutput = moveValue - rotateValue;
- rightMotorOutput = - max(-moveValue, -rotateValue);
- }
- }
- SetLeftRightMotorOutputs(leftMotorOutput, rightMotorOutput);
-}
-
-/**
- * Drive method for Mecanum wheeled robots.
- *
- * A method for driving with Mecanum wheeled robots. There are 4 wheels
- * on the robot, arranged so that the front and back wheels are toed in 45 degrees.
- * When looking at the wheels from the top, the roller axles should form an X across the robot.
- *
- * This is designed to be directly driven by joystick axes.
- *
- * @param x The speed that the robot should drive in the X direction. [-1.0..1.0]
- * @param y The speed that the robot should drive in the Y direction.
- * This input is inverted to match the forward == -1.0 that joysticks produce. [-1.0..1.0]
- * @param rotation The rate of rotation for the robot that is completely independent of
- * the translation. [-1.0..1.0]
- * @param gyroAngle The current angle reading from the gyro. Use this to implement field-oriented controls.
- */
-void RobotDrive::MecanumDrive_Cartesian(float x, float y, float rotation, float gyroAngle)
-{
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_RobotDrive, GetNumMotors(), nUsageReporting::kRobotDrive_MecanumCartesian);
- reported = true;
- }
-
- double xIn = x;
- double yIn = y;
- // Negate y for the joystick.
- yIn = -yIn;
- // Compenstate for gyro angle.
- RotateVector(xIn, yIn, gyroAngle);
-
- double wheelSpeeds[kMaxNumberOfMotors];
- wheelSpeeds[kFrontLeftMotor] = xIn + yIn + rotation;
- wheelSpeeds[kFrontRightMotor] = -xIn + yIn - rotation;
- wheelSpeeds[kRearLeftMotor] = -xIn + yIn + rotation;
- wheelSpeeds[kRearRightMotor] = xIn + yIn - rotation;
-
- Normalize(wheelSpeeds);
-
- uint8_t syncGroup = 0x80;
-
- m_frontLeftMotor->Set(wheelSpeeds[kFrontLeftMotor] * m_invertedMotors[kFrontLeftMotor] * m_maxOutput, syncGroup);
- m_frontRightMotor->Set(wheelSpeeds[kFrontRightMotor] * m_invertedMotors[kFrontRightMotor] * m_maxOutput, syncGroup);
- m_rearLeftMotor->Set(wheelSpeeds[kRearLeftMotor] * m_invertedMotors[kRearLeftMotor] * m_maxOutput, syncGroup);
- m_rearRightMotor->Set(wheelSpeeds[kRearRightMotor] * m_invertedMotors[kRearRightMotor] * m_maxOutput, syncGroup);
-
- CANJaguar::UpdateSyncGroup(syncGroup);
-
- m_safetyHelper->Feed();
-}
-
-/**
- * Drive method for Mecanum wheeled robots.
- *
- * A method for driving with Mecanum wheeled robots. There are 4 wheels
- * on the robot, arranged so that the front and back wheels are toed in 45 degrees.
- * When looking at the wheels from the top, the roller axles should form an X across the robot.
- *
- * @param magnitude The speed that the robot should drive in a given direction. [-1.0..1.0]
- * @param direction The direction the robot should drive in degrees. The direction and maginitute are
- * independent of the rotation rate.
- * @param rotation The rate of rotation for the robot that is completely independent of
- * the magnitute or direction. [-1.0..1.0]
- */
-void RobotDrive::MecanumDrive_Polar(float magnitude, float direction, float rotation)
-{
- static bool reported = false;
- if (!reported)
- {
- nUsageReporting::report(nUsageReporting::kResourceType_RobotDrive, GetNumMotors(), nUsageReporting::kRobotDrive_MecanumPolar);
- reported = true;
- }
-
- // Normalized for full power along the Cartesian axes.
- magnitude = Limit(magnitude) * sqrt(2.0);
- // The rollers are at 45 degree angles.
- double dirInRad = (direction + 45.0) * 3.14159 / 180.0;
- double cosD = cos(dirInRad);
- double sinD = sin(dirInRad);
-
- double wheelSpeeds[kMaxNumberOfMotors];
- wheelSpeeds[kFrontLeftMotor] = sinD * magnitude + rotation;
- wheelSpeeds[kFrontRightMotor] = cosD * magnitude - rotation;
- wheelSpeeds[kRearLeftMotor] = cosD * magnitude + rotation;
- wheelSpeeds[kRearRightMotor] = sinD * magnitude - rotation;
-
- Normalize(wheelSpeeds);
-
- uint8_t syncGroup = 0x80;
-
- m_frontLeftMotor->Set(wheelSpeeds[kFrontLeftMotor] * m_invertedMotors[kFrontLeftMotor] * m_maxOutput, syncGroup);
- m_frontRightMotor->Set(wheelSpeeds[kFrontRightMotor] * m_invertedMotors[kFrontRightMotor] * m_maxOutput, syncGroup);
- m_rearLeftMotor->Set(wheelSpeeds[kRearLeftMotor] * m_invertedMotors[kRearLeftMotor] * m_maxOutput, syncGroup);
- m_rearRightMotor->Set(wheelSpeeds[kRearRightMotor] * m_invertedMotors[kRearRightMotor] * m_maxOutput, syncGroup);
-
- CANJaguar::UpdateSyncGroup(syncGroup);
-
- m_safetyHelper->Feed();
-}
-
-/**
- * Holonomic Drive method for Mecanum wheeled robots.
- *
- * This is an alias to MecanumDrive_Polar() for backward compatability
- *
- * @param magnitude The speed that the robot should drive in a given direction. [-1.0..1.0]
- * @param direction The direction the robot should drive. The direction and maginitute are
- * independent of the rotation rate.
- * @param rotation The rate of rotation for the robot that is completely independent of
- * the magnitute or direction. [-1.0..1.0]
- */
-void RobotDrive::HolonomicDrive(float magnitude, float direction, float rotation)
-{
- MecanumDrive_Polar(magnitude, direction, rotation);
-}
-
-/** Set the speed of the right and left motors.
- * This is used once an appropriate drive setup function is called such as
- * TwoWheelDrive(). The motors are set to "leftOutput" and "rightOutput"
- * and includes flipping the direction of one side for opposing motors.
- * @param leftOutput The speed to send to the left side of the robot.
- * @param rightOutput The speed to send to the right side of the robot.
- */
-void RobotDrive::SetLeftRightMotorOutputs(float leftOutput, float rightOutput)
-{
- wpi_assert(m_rearLeftMotor != NULL && m_rearRightMotor != NULL);
-
- uint8_t syncGroup = 0x80;
-
- if (m_frontLeftMotor != NULL)
- m_frontLeftMotor->Set(Limit(leftOutput) * m_invertedMotors[kFrontLeftMotor] * m_maxOutput, syncGroup);
- m_rearLeftMotor->Set(Limit(leftOutput) * m_invertedMotors[kRearLeftMotor] * m_maxOutput, syncGroup);
-
- if (m_frontRightMotor != NULL)
- m_frontRightMotor->Set(-Limit(rightOutput) * m_invertedMotors[kFrontRightMotor] * m_maxOutput, syncGroup);
- m_rearRightMotor->Set(-Limit(rightOutput) * m_invertedMotors[kRearRightMotor] * m_maxOutput, syncGroup);
-
- CANJaguar::UpdateSyncGroup(syncGroup);
-
- m_safetyHelper->Feed();
-}
-
-/**
- * Limit motor values to the -1.0 to +1.0 range.
- */
-float RobotDrive::Limit(float num)
-{
- if (num > 1.0)
- {
- return 1.0;
- }
- if (num < -1.0)
- {
- return -1.0;
- }
- return num;
-}
-
-/**
- * Normalize all wheel speeds if the magnitude of any wheel is greater than 1.0.
- */
-void RobotDrive::Normalize(double *wheelSpeeds)
-{
- double maxMagnitude = fabs(wheelSpeeds[0]);
- int32_t i;
- for (i=1; i<kMaxNumberOfMotors; i++)
- {
- double temp = fabs(wheelSpeeds[i]);
- if (maxMagnitude < temp) maxMagnitude = temp;
- }
- if (maxMagnitude > 1.0)
- {
- for (i=0; i<kMaxNumberOfMotors; i++)
- {
- wheelSpeeds[i] = wheelSpeeds[i] / maxMagnitude;
- }
- }
-}
-
-/**
- * Rotate a vector in Cartesian space.
- */
-void RobotDrive::RotateVector(double &x, double &y, double angle)
-{
- double cosA = cos(angle * (3.14159 / 180.0));
- double sinA = sin(angle * (3.14159 / 180.0));
- double xOut = x * cosA - y * sinA;
- double yOut = x * sinA + y * cosA;
- x = xOut;
- y = yOut;
-}
-
-/*
- * Invert a motor direction.
- * This is used when a motor should run in the opposite direction as the drive
- * code would normally run it. Motors that are direct drive would be inverted, the
- * Drive code assumes that the motors are geared with one reversal.
- * @param motor The motor index to invert.
- * @param isInverted True if the motor should be inverted when operated.
- */
-void RobotDrive::SetInvertedMotor(MotorType motor, bool isInverted)
-{
- if (motor < 0 || motor > 3)
- {
- wpi_setWPIError(InvalidMotorIndex);
- return;
- }
- m_invertedMotors[motor] = isInverted ? -1 : 1;
-}
-
-/**
- * Set the turning sensitivity.
- *
- * This only impacts the Drive() entry-point.
- * @param sensitivity Effectively sets the turning sensitivity (or turn radius for a given value)
- */
-void RobotDrive::SetSensitivity(float sensitivity)
-{
- m_sensitivity = sensitivity;
-}
-
-/**
- * Configure the scaling factor for using RobotDrive with motor controllers in a mode other than PercentVbus.
- * @param maxOutput Multiplied with the output percentage computed by the drive functions.
- */
-void RobotDrive::SetMaxOutput(double maxOutput)
-{
- m_maxOutput = maxOutput;
-}
-
-
-
-void RobotDrive::SetExpiration(float timeout)
-{
- m_safetyHelper->SetExpiration(timeout);
-}
-
-float RobotDrive::GetExpiration()
-{
- return m_safetyHelper->GetExpiration();
-}
-
-bool RobotDrive::IsAlive()
-{
- return m_safetyHelper->IsAlive();
-}
-
-bool RobotDrive::IsSafetyEnabled()
-{
- return m_safetyHelper->IsSafetyEnabled();
-}
-
-void RobotDrive::SetSafetyEnabled(bool enabled)
-{
- m_safetyHelper->SetSafetyEnabled(enabled);
-}
-
-void RobotDrive::GetDescription(char *desc)
-{
- snprintf(desc, 64, "RobotDrive");
-}
-
-void RobotDrive::StopMotor()
-{
- if (m_frontLeftMotor != NULL) m_frontLeftMotor->Disable();
- if (m_frontRightMotor != NULL) m_frontRightMotor->Disable();
- if (m_rearLeftMotor != NULL) m_rearLeftMotor->Disable();
- if (m_rearRightMotor != NULL) m_rearRightMotor->Disable();
-}
diff --git a/aos/externals/WPILib/WPILib/RobotDrive.h b/aos/externals/WPILib/WPILib/RobotDrive.h
deleted file mode 100644
index 892685c..0000000
--- a/aos/externals/WPILib/WPILib/RobotDrive.h
+++ /dev/null
@@ -1,108 +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 ROBOTDRIVE_H_
-#define ROBOTDRIVE_H_
-
-#include "ErrorBase.h"
-#include <stdlib.h>
-#include <vxWorks.h>
-#include "MotorSafety.h"
-#include "MotorSafetyHelper.h"
-
-class SpeedController;
-class GenericHID;
-
-/**
- * Utility class for handling Robot drive based on a definition of the motor configuration.
- * The robot drive class handles basic driving for a robot. Currently, 2 and 4 motor standard
- * drive trains are supported. In the future other drive types like swerve and meccanum might
- * be implemented. Motor channel numbers are passed supplied on creation of the class. Those are
- * used for either the Drive function (intended for hand created drive code, such as autonomous)
- * or with the Tank/Arcade functions intended to be used for Operator Control driving.
- */
-class RobotDrive: public MotorSafety, public ErrorBase
-{
-public:
- typedef enum
- {
- kFrontLeftMotor = 0,
- kFrontRightMotor = 1,
- kRearLeftMotor = 2,
- kRearRightMotor = 3
- } MotorType;
-
- RobotDrive(uint32_t leftMotorChannel, uint32_t rightMotorChannel);
- RobotDrive(uint32_t frontLeftMotorChannel, uint32_t rearLeftMotorChannel,
- uint32_t frontRightMotorChannel, uint32_t rearRightMotorChannel);
- RobotDrive(SpeedController *leftMotor, SpeedController *rightMotor);
- RobotDrive(SpeedController &leftMotor, SpeedController &rightMotor);
- RobotDrive(SpeedController *frontLeftMotor, SpeedController *rearLeftMotor,
- SpeedController *frontRightMotor, SpeedController *rearRightMotor);
- RobotDrive(SpeedController &frontLeftMotor, SpeedController &rearLeftMotor,
- SpeedController &frontRightMotor, SpeedController &rearRightMotor);
- virtual ~RobotDrive();
-
- void Drive(float outputMagnitude, float curve);
- void TankDrive(GenericHID *leftStick, GenericHID *rightStick, bool squaredInputs = true);
- void TankDrive(GenericHID &leftStick, GenericHID &rightStick, bool squaredInputs = true);
- void TankDrive(GenericHID *leftStick, uint32_t leftAxis, GenericHID *rightStick, uint32_t rightAxis, bool squaredInputs = true);
- void TankDrive(GenericHID &leftStick, uint32_t leftAxis, GenericHID &rightStick, uint32_t 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_t moveChannel, GenericHID *rotateStick, uint32_t rotateChannel, bool squaredInputs = true);
- void ArcadeDrive(GenericHID &moveStick, uint32_t moveChannel, GenericHID &rotateStick, uint32_t rotateChannel, bool squaredInputs = true);
- void ArcadeDrive(float moveValue, float rotateValue, bool squaredInputs = true);
- void MecanumDrive_Cartesian(float x, float y, float rotation, float gyroAngle = 0.0);
- void MecanumDrive_Polar(float magnitude, float direction, float rotation);
- void HolonomicDrive(float magnitude, float direction, float rotation);
- virtual void SetLeftRightMotorOutputs(float leftOutput, float rightOutput);
- void SetInvertedMotor(MotorType motor, bool isInverted);
- void SetSensitivity(float sensitivity);
- void SetMaxOutput(double maxOutput);
-
- void SetExpiration(float timeout);
- float GetExpiration();
- bool IsAlive();
- void StopMotor();
- bool IsSafetyEnabled();
- void SetSafetyEnabled(bool enabled);
- void GetDescription(char *desc);
-
-protected:
- void InitRobotDrive();
- float Limit(float num);
- void Normalize(double *wheelSpeeds);
- void RotateVector(double &x, double &y, double angle);
-
- static const int32_t kMaxNumberOfMotors = 4;
-
- int32_t m_invertedMotors[kMaxNumberOfMotors];
- float m_sensitivity;
- double m_maxOutput;
- bool m_deleteSpeedControllers;
- SpeedController *m_frontLeftMotor;
- SpeedController *m_frontRightMotor;
- SpeedController *m_rearLeftMotor;
- SpeedController *m_rearRightMotor;
- MotorSafetyHelper *m_safetyHelper;
-
-private:
- int32_t GetNumMotors()
- {
- int motors = 0;
- if (m_frontLeftMotor) motors++;
- if (m_frontRightMotor) motors++;
- if (m_rearLeftMotor) motors++;
- if (m_rearRightMotor) motors++;
- return motors;
- }
- DISALLOW_COPY_AND_ASSIGN(RobotDrive);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/SPI.cpp b/aos/externals/WPILib/WPILib/SPI.cpp
deleted file mode 100644
index 2f90d74..0000000
--- a/aos/externals/WPILib/WPILib/SPI.cpp
+++ /dev/null
@@ -1,526 +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 "SPI.h"
-
-#include "ChipObject/tSPI.h"
-#include "DigitalModule.h"
-#include "DigitalInput.h"
-#include "DigitalOutput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "WPIErrors.h"
-
-#include <math.h>
-#include <usrLib.h>
-
-SEM_ID SPI::m_semaphore = NULL;
-
-/**
- * Constructor for input and output.
- *
- * @param clk The digital output for the clock signal.
- * @param mosi The digital output for the written data to the slave
- * (master-out slave-in).
- * @param miso The digital input for the input data from the slave
- * (master-in slave-out).
- */
-SPI::SPI(DigitalOutput &clk, DigitalOutput &mosi, DigitalInput &miso)
-{
- Init(&clk, &mosi, &miso);
-}
-
-/**
- * Constructor for input and output.
- *
- * @param clk The digital output for the clock signal.
- * @param mosi The digital output for the written data to the slave
- * (master-out slave-in).
- * @param miso The digital input for the input data from the slave
- * (master-in slave-out).
- */
-SPI::SPI(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso)
-{
- Init(clk, mosi, miso);
-}
-
-/**
- * Constructor for output only.
- *
- * @param clk The digital output for the clock signal.
- * @param mosi The digital output for the written data to the slave
- * (master-out slave-in).
- */
-SPI::SPI(DigitalOutput &clk, DigitalOutput &mosi)
-{
- Init(&clk, &mosi, NULL);
-}
-
-/**
- * Constructor for output only.
- *
- * @param clk The digital output for the clock signal.
- * @param mosi The digital output for the written data to the slave
- * (master-out slave-in).
- */
-SPI::SPI(DigitalOutput *clk, DigitalOutput *mosi)
-{
- Init(clk, mosi, NULL);
-}
-
-/**
- * Constructor for input only.
- *
- * @param clk The digital output for the clock signal.
- * @param miso The digital input for the input data from the slave
- * (master-in slave-out).
- */
-SPI::SPI(DigitalOutput &clk, DigitalInput &miso)
-{
- Init(&clk, NULL, &miso);
-}
-
-/**
- * Constructor for input only.
- *
- * @param clk The digital output for the clock signal.
- * @param miso The digital input for the input data from the slave
- * (master-in slave-out).
- */
-SPI::SPI(DigitalOutput *clk, DigitalInput *miso)
-{
- Init(clk, NULL, miso);
-}
-
-/**
- * Destructor.
- */
-SPI::~SPI()
-{
- delete m_spi;
-}
-
-/**
- * Initialize SPI channel configuration.
- *
- * @param clk The digital output for the clock signal.
- * @param mosi The digital output for the written data to the slave
- * (master-out slave-in).
- * @param miso The digital input for the input data from the slave
- * (master-in slave-out).
- */
-void SPI::Init(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso)
-{
- if (m_semaphore == NULL)
- {
- m_semaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
- }
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_spi = tSPI::create(&localStatus);
- wpi_setError(localStatus);
-
- m_config.BusBitWidth = 8;
- m_config.ClockHalfPeriodDelay = 0;
- m_config.MSBfirst = 0;
- m_config.DataOnFalling = 0;
- m_config.LatchFirst = 0;
- m_config.LatchLast = 0;
- m_config.FramePolarity = 0;
- m_config.WriteOnly = miso ? 0 : 1;
- m_config.ClockPolarity = 0;
-
- m_channels.SCLK_Channel = clk->GetChannelForRouting();
- m_channels.SCLK_Module = clk->GetModuleForRouting();
- m_channels.SS_Channel = 0;
- m_channels.SS_Module = 0;
-
- if (mosi)
- {
- m_channels.MOSI_Channel = mosi->GetChannelForRouting();
- m_channels.MOSI_Module = mosi->GetModuleForRouting();
- }
- else
- {
- m_channels.MOSI_Channel = 0;
- m_channels.MOSI_Module = 0;
- }
-
- if (miso)
- {
- m_channels.MISO_Channel = miso->GetChannelForRouting();
- m_channels.MISO_Module = miso->GetModuleForRouting();
- }
- else
- {
- m_channels.MISO_Channel = 0;
- m_channels.MISO_Module = 0;
- }
-
- m_ss = NULL;
-
- static int32_t instances = 0;
- instances++;
- nUsageReporting::report(nUsageReporting::kResourceType_SPI, instances);
-}
-
-/**
- * Configure the number of bits from each word that the slave transmits
- * or receives.
- *
- * @param bits The number of bits in one frame (1 to 32 bits).
- */
-void SPI::SetBitsPerWord(uint32_t bits)
-{
- m_config.BusBitWidth = bits;
-}
-
-/**
- * Get the number of bits from each word that the slave transmits
- * or receives.
- *
- * @return The number of bits in one frame (1 to 32 bits).
- */
-uint32_t SPI::GetBitsPerWord()
-{
- return m_config.BusBitWidth;
-}
-
-/**
- * Configure the rate of the generated clock signal.
- * The default and maximum value is 76,628.4 Hz.
- *
- * @param hz The clock rate in Hertz.
- */
-void SPI::SetClockRate(double hz)
-{
- int delay = 0;
- tRioStatusCode localStatus = NiFpga_Status_Success;
- int loopTiming = DigitalModule::GetInstance(m_spi->readChannels_SCLK_Module(&localStatus))->GetLoopTiming();
- wpi_setError(localStatus);
- double v = (1.0 / hz) / (2 * loopTiming / (kSystemClockTicksPerMicrosecond * 1e6));
- if (v < 1) {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "SPI Clock too high");
- }
- delay = (int) (v + .5);
- if (delay > 255) {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "SPI Clock too low");
- }
-
- m_config.ClockHalfPeriodDelay = delay;
-}
-
-/**
- * Configure the order that bits are sent and received on the wire
- * to be most significant bit first.
- */
-void SPI::SetMSBFirst()
-{
- m_config.MSBfirst = 1;
-}
-
-/**
- * Configure the order that bits are sent and received on the wire
- * to be least significant bit first.
- */
-void SPI::SetLSBFirst()
-{
- m_config.MSBfirst = 0;
-}
-
-/**
- * Configure that the data is stable on the falling edge and the data
- * changes on the rising edge.
- */
-void SPI::SetSampleDataOnFalling()
-{
- m_config.DataOnFalling = 1;
-}
-
-/**
- * Configure that the data is stable on the rising edge and the data
- * changes on the falling edge.
- */
-void SPI::SetSampleDataOnRising()
-{
- m_config.DataOnFalling = 0;
-}
-
-/**
- * Configure the slave select line behavior.
- *
- * @param ss slave select digital output.
- * @param mode Frame mode:
- * kChipSelect: active for the duration of the frame.
- * kPreLatchPulse: pulses before the transfer of each frame.
- * kPostLatchPulse: pulses after the transfer of each frame.
- * kPreAndPostLatchPulse: pulses before and after each frame.
- * @param activeLow True if slave select line is active low.
- */
-void SPI::SetSlaveSelect(DigitalOutput *ss, tFrameMode mode, bool activeLow)
-{
- if (ss)
- {
- m_channels.SS_Channel = ss->GetChannelForRouting();
- m_channels.SS_Module = ss->GetModuleForRouting();
- }
- else
- {
- m_channels.SS_Channel = 0;
- m_channels.SS_Module = 0;
- }
- m_ss = ss;
-
- switch (mode)
- {
- case kChipSelect:
- m_config.LatchFirst = 0;
- m_config.LatchLast = 0;
- break;
- case kPreLatchPulse:
- m_config.LatchFirst = 1;
- m_config.LatchLast = 0;
- break;
- case kPostLatchPulse:
- m_config.LatchFirst = 0;
- m_config.LatchLast = 1;
- break;
- case kPreAndPostLatchPulse:
- m_config.LatchFirst = 1;
- m_config.LatchLast = 1;
- break;
- }
-
- m_config.FramePolarity = activeLow ? 1 : 0;
-}
-
-/**
- * Configure the slave select line behavior.
- *
- * @param ss slave select digital output.
- * @param mode Frame mode:
- * kChipSelect: active for the duration of the frame.
- * kPreLatchPulse: pulses before the transfer of each frame.
- * kPostLatchPulse: pulses after the transfer of each frame.
- * kPreAndPostLatchPulse: pulses before and after each frame.
- * @param activeLow True if slave select line is active low.
- */
-void SPI::SetSlaveSelect(DigitalOutput &ss, tFrameMode mode, bool activeLow)
-{
- SetSlaveSelect(&ss, mode, activeLow);
-}
-
-/**
- * Get the slave select line behavior.
- *
- * @param mode Frame mode:
- * kChipSelect: active for the duration of the frame.
- * kPreLatchPulse: pulses before the transfer of each frame.
- * kPostLatchPulse: pulses after the transfer of each frame.
- * kPreAndPostLatchPulse: pulses before and after each frame.
- * @param activeLow True if slave select line is active low.
- * @return The slave select digital output.
- */
-DigitalOutput *SPI::GetSlaveSelect(tFrameMode *mode, bool *activeLow)
-{
- if (mode != NULL)
- {
- *mode = (tFrameMode) (m_config.LatchFirst | (m_config.LatchLast << 1));
- }
- if (activeLow != NULL)
- {
- *activeLow = m_config.FramePolarity != 0;
- }
- return m_ss;
-}
-
-/**
- * Configure the clock output line to be active low.
- * This is sometimes called clock polarity high.
- */
-void SPI::SetClockActiveLow()
-{
- m_config.ClockPolarity = 1;
-}
-
-/**
- * Configure the clock output line to be active high.
- * This is sometimes called clock polarity low.
- */
-void SPI::SetClockActiveHigh()
-{
- m_config.ClockPolarity = 0;
-}
-
-/**
- * Apply configuration settings and reset the SPI logic.
- */
-void SPI::ApplyConfig()
-{
- Synchronized sync(m_semaphore);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_spi->writeConfig(m_config, &localStatus);
- m_spi->writeChannels(m_channels, &localStatus);
- m_spi->strobeReset(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Get the number of words that can currently be stored before being
- * transmitted to the device.
- *
- * @return The number of words available to be written.
- */
-uint16_t SPI::GetOutputFIFOAvailable()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint16_t result = m_spi->readAvailableToLoad(&localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Get the number of words received and currently available to be read from
- * the receive FIFO.
- *
- * @return The number of words available to read.
- */
-uint16_t SPI::GetNumReceived()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint16_t result = m_spi->readReceivedElements(&localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Have all pending transfers completed?
- *
- * @return True if no transfers are pending.
- */
-bool SPI::IsDone()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool result = m_spi->readStatus_Idle(&localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Determine if the receive FIFO was full when attempting to add new data at
- * end of a transfer.
- *
- * @return True if the receive FIFO overflowed.
- */
-bool SPI::HadReceiveOverflow()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool result = m_spi->readStatus_ReceivedDataOverflow(&localStatus);
- wpi_setError(localStatus);
- return result;
-}
-
-/**
- * Write a word to the slave device. Blocks until there is space in the
- * output FIFO.
- *
- * If not running in output only mode, also saves the data received
- * on the MISO input during the transfer into the receive FIFO.
- */
-void SPI::Write(uint32_t data)
-{
- if (m_channels.MOSI_Channel == 0 && m_channels.MOSI_Module == 0)
- {
- wpi_setWPIError(SPIWriteNoMOSI);
- return;
- }
-
- Synchronized sync(m_semaphore);
-
- while (GetOutputFIFOAvailable() == 0)
- taskDelay(NO_WAIT);
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_spi->writeDataToLoad(data, &localStatus);
- m_spi->strobeLoad(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Read a word from the receive FIFO.
- *
- * Waits for the current transfer to complete if the receive FIFO is empty.
- *
- * If the receive FIFO is empty, there is no active transfer, and initiate
- * is false, errors.
- *
- * @param initiate If true, this function pushes "0" into the
- * transmit buffer and initiates a transfer.
- * If false, this function assumes that data is
- * already in the receive FIFO from a previous write.
- */
-uint32_t SPI::Read(bool initiate)
-{
- if (m_channels.MISO_Channel == 0 && m_channels.MISO_Module == 0)
- {
- wpi_setWPIError(SPIReadNoMISO);
- return 0;
- }
-
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t data;
- {
- Synchronized sync(m_semaphore);
-
- if (initiate)
- {
- m_spi->writeDataToLoad(0, &localStatus);
- m_spi->strobeLoad(&localStatus);
- }
-
- // Do we have anything ready to read?
- if (GetNumReceived() == 0)
- {
- if (!initiate && IsDone() && GetOutputFIFOAvailable() == kTransmitFIFODepth)
- {
- // Nothing to read: error out
- wpi_setWPIError(SPIReadNoData);
- return 0;
- }
-
- // Wait for the transaction to complete
- while (GetNumReceived() == 0)
- taskDelay(NO_WAIT);
- }
-
- m_spi->strobeReadReceivedData(&localStatus);
- data = m_spi->readReceivedData(&localStatus);
- }
- wpi_setError(localStatus);
-
- return data;
-}
-
-/**
- * Stop any transfer in progress and empty the transmit FIFO.
- */
-void SPI::Reset()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_spi->strobeReset(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Empty the receive FIFO.
- */
-void SPI::ClearReceivedData()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_spi->strobeClearReceivedData(&localStatus);
- wpi_setError(localStatus);
-}
diff --git a/aos/externals/WPILib/WPILib/SPI.h b/aos/externals/WPILib/WPILib/SPI.h
deleted file mode 100644
index 60fd4bc..0000000
--- a/aos/externals/WPILib/WPILib/SPI.h
+++ /dev/null
@@ -1,83 +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 __SPI_H__
-#define __SPI_H__
-
-#include "ChipObject.h"
-#include "SensorBase.h"
-
-class DigitalOutput;
-class DigitalInput;
-
-/**
- * SPI bus interface class.
- *
- * This class is intended to be used by sensor (and other SPI device) drivers.
- * It probably should not be used directly.
- *
- * The FPGA only supports a single SPI interface.
- */
-class SPI : public SensorBase
-{
-public:
- enum tFrameMode {kChipSelect, kPreLatchPulse, kPostLatchPulse, kPreAndPostLatchPulse};
- enum tSPIConstants {kReceiveFIFODepth=512, kTransmitFIFODepth=512};
-
- SPI(DigitalOutput &clk, DigitalOutput &mosi, DigitalInput &miso);
- SPI(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso);
- SPI(DigitalOutput &clk, DigitalOutput &mosi);
- SPI(DigitalOutput *clk, DigitalOutput *mosi);
- SPI(DigitalOutput &clk, DigitalInput &miso);
- SPI(DigitalOutput *clk, DigitalInput *miso);
- virtual ~SPI();
-
- void SetBitsPerWord(uint32_t bits);
- uint32_t GetBitsPerWord();
- void SetClockRate(double hz);
-
- void SetMSBFirst();
- void SetLSBFirst();
-
- void SetSampleDataOnFalling();
- void SetSampleDataOnRising();
-
- void SetSlaveSelect(DigitalOutput *ss, tFrameMode mode=kChipSelect, bool activeLow=false);
- void SetSlaveSelect(DigitalOutput &ss, tFrameMode mode=kChipSelect, bool activeLow=false);
- DigitalOutput *GetSlaveSelect(tFrameMode *mode=NULL, bool *activeLow=NULL);
-
- void SetClockActiveLow();
- void SetClockActiveHigh();
-
- virtual void ApplyConfig();
-
- virtual uint16_t GetOutputFIFOAvailable();
- virtual uint16_t GetNumReceived();
-
- virtual bool IsDone();
- bool HadReceiveOverflow();
-
- virtual void Write(uint32_t data);
- virtual uint32_t Read(bool initiate = false);
-
- virtual void Reset();
- virtual void ClearReceivedData();
-
-protected:
- static SEM_ID m_semaphore;
-
- tSPI* m_spi;
- tSPI::tConfig m_config;
- tSPI::tChannels m_channels;
- DigitalOutput *m_ss;
-
-private:
- void Init(DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso);
-
- DISALLOW_COPY_AND_ASSIGN(SPI);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SafePWM.cpp b/aos/externals/WPILib/WPILib/SafePWM.cpp
deleted file mode 100644
index d0ddb8b..0000000
--- a/aos/externals/WPILib/WPILib/SafePWM.cpp
+++ /dev/null
@@ -1,117 +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 "SafePWM.h"
-
-#include "MotorSafetyHelper.h"
-
-/**
- * Initialize a SafePWM object by setting defaults
- */
-void SafePWM::InitSafePWM()
-{
- m_safetyHelper = new MotorSafetyHelper(this);
- m_safetyHelper->SetSafetyEnabled(false);
-}
-
-/**
- * Constructor for a SafePWM object taking a channel number
- * @param channel The channel number to be used for the underlying PWM object
- */
-SafePWM::SafePWM(uint32_t channel): PWM(channel)
-{
- InitSafePWM();
-}
-
-/**
- * Constructor for a SafePWM object taking channel and slot numbers.
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The PWM channel number on the module (1..10).
- */
-SafePWM::SafePWM(uint8_t moduleNumber, uint32_t channel): PWM(moduleNumber, channel)
-{
- InitSafePWM();
-}
-
-SafePWM::~SafePWM()
-{
- delete m_safetyHelper;
-}
-
-/*
- * Set the expiration time for the PWM object
- * @param timeout The timeout (in seconds) for this motor object
- */
-void SafePWM::SetExpiration(float timeout)
-{
- m_safetyHelper->SetExpiration(timeout);
-}
-
-/**
- * Return the expiration time for the PWM object.
- * @returns The expiration time value.
- */
-float SafePWM::GetExpiration()
-{
- return m_safetyHelper->GetExpiration();
-}
-
-/**
- * Check if the PWM object is currently alive or stopped due to a timeout.
- * @returns a bool value that is true if the motor has NOT timed out and should still
- * be running.
- */
-bool SafePWM::IsAlive()
-{
- return m_safetyHelper->IsAlive();
-}
-
-/**
- * Stop the motor associated with this PWM object.
- * This is called by the MotorSafetyHelper object when it has a timeout for this PWM and needs to
- * stop it from running.
- */
-void SafePWM::StopMotor()
-{
- SetRaw(kPwmDisabled);
-}
-
-/**
- * Enable/disable motor safety for this device
- * Turn on and off the motor safety option for this PWM object.
- * @param enabled True if motor safety is enforced for this object
- */
-void SafePWM::SetSafetyEnabled(bool enabled)
-{
- m_safetyHelper->SetSafetyEnabled(enabled);
-}
-
-/**
- * Check if motor safety is enabled for this object
- * @returns True if motor safety is enforced for this object
- */
-bool SafePWM::IsSafetyEnabled()
-{
- return m_safetyHelper->IsSafetyEnabled();
-}
-
-void SafePWM::GetDescription(char *desc)
-{
- snprintf(desc, 64, "PWM %ld on module %ld", GetChannel(), GetModuleNumber());
-}
-
-/**
- * Feed the MotorSafety timer when setting the speed.
- * This method is called by the subclass motor whenever it updates its speed, thereby reseting
- * the timeout value.
- * @param speed Value to pass to the PWM class
- */
-void SafePWM::SetSpeed(float speed)
-{
- PWM::SetSpeed(speed);
- m_safetyHelper->Feed();
-}
-
diff --git a/aos/externals/WPILib/WPILib/SafePWM.h b/aos/externals/WPILib/WPILib/SafePWM.h
deleted file mode 100644
index 5b5b0a7..0000000
--- a/aos/externals/WPILib/WPILib/SafePWM.h
+++ /dev/null
@@ -1,43 +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 __SAFE_PWM__
-#define __SAFE_PWM__
-
-#include "MotorSafety.h"
-#include "PWM.h"
-
-class MotorSafetyHelper;
-
-/**
- * A safe version of the PWM class.
- * It is safe because it implements the MotorSafety interface that provides timeouts
- * in the event that the motor value is not updated before the expiration time.
- * This delegates the actual work to a MotorSafetyHelper object that is used for all
- * objects that implement MotorSafety.
- */
-class SafePWM: public PWM, public MotorSafety
-{
-public:
- explicit SafePWM(uint32_t channel);
- SafePWM(uint8_t moduleNumber, uint32_t channel);
- ~SafePWM();
-
- void SetExpiration(float timeout);
- float GetExpiration();
- bool IsAlive();
- void StopMotor();
- bool IsSafetyEnabled();
- void SetSafetyEnabled(bool enabled);
- void GetDescription(char *desc);
-
- virtual void SetSpeed(float speed);
-private:
- void InitSafePWM();
- MotorSafetyHelper *m_safetyHelper;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd b/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd
deleted file mode 100644
index 26ecc83..0000000
--- a/aos/externals/WPILib/WPILib/Scripts/CopyWPILibToUpdateDirectory.cmd
+++ /dev/null
@@ -1,88 +0,0 @@
-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\ChipObject\fpgainterfacecapi
-mkdir vxworks-6.3\target\h\WPILib\Interfaces
-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\OSAL
-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\Interfaces\*.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\OSAL\*.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\ChipObject\fpgainterfacecapi\*.h vxworks-6.3\target\h\WPILib\ChipObject\fpgainterfacecapi
-copy C:\WindRiver\workspace\WPILib\Interfaces\*.h vxworks-6.3\target\h\WPILib\Interfaces
-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\OSAL\*.h vxworks-6.3\target\h\WPILib\OSAL
-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/Makefile b/aos/externals/WPILib/WPILib/Scripts/Makefile
deleted file mode 100644
index bc19164..0000000
--- a/aos/externals/WPILib/WPILib/Scripts/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/Scripts/updateBuiltInLibrary.cmd b/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd
deleted file mode 100644
index cf410c4..0000000
--- a/aos/externals/WPILib/WPILib/Scripts/updateBuiltInLibrary.cmd
+++ /dev/null
@@ -1,63 +0,0 @@
-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\OSAL
-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\OSAL\*.h h\WPILib\OSAL
-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/SensorBase.cpp b/aos/externals/WPILib/WPILib/SensorBase.cpp
deleted file mode 100644
index 82f15c4..0000000
--- a/aos/externals/WPILib/WPILib/SensorBase.cpp
+++ /dev/null
@@ -1,195 +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 "SensorBase.h"
-
-#include "NetworkCommunication/LoadOut.h"
-
-const uint32_t SensorBase::kSystemClockTicksPerMicrosecond;
-const uint32_t SensorBase::kDigitalChannels;
-const uint32_t SensorBase::kAnalogChannels;
-const uint32_t SensorBase::kAnalogModules;
-const uint32_t SensorBase::kDigitalModules;
-const uint32_t SensorBase::kSolenoidChannels;
-const uint32_t SensorBase::kSolenoidModules;
-const uint32_t SensorBase::kPwmChannels;
-const uint32_t SensorBase::kRelayChannels;
-SensorBase *SensorBase::m_singletonList = NULL;
-ReentrantSemaphore SensorBase::m_singletonListSemaphore;
-
-/**
- * Creates an instance of SensorBase.
- */
-SensorBase::SensorBase()
-{
-}
-
-/**
- * Frees the resources for a SensorBase.
- */
-SensorBase::~SensorBase()
-{
-}
-
-/**
- * @brief Add sensor to the singleton list.
- * Add this object to the list of singletons that need to be deleted when
- * the robot program exits. Each of the objects on this list are singletons,
- * that is they aren't allocated directly by user code, but instead are
- * allocated by (for example) a static GetInstance method. Because of this, they
- * need some way to be freed when the module is unloaded so that they can free
- * any resources that they are holding on to.
- * @see #DeleteSingletons()
- */
-void SensorBase::AddToSingletonList()
-{
- Synchronized sync(m_singletonListSemaphore);
- m_nextSingleton = m_singletonList;
- m_singletonList = this;
-}
-
-/**
- * @brief Delete all the singleton objects on the list.
- * All the objects that were allocated as singletons need to be deleted so
- * their resources can be freed.
- * @see #AddToSingletonList()
- */
-void SensorBase::DeleteSingletons()
-{
- Synchronized sync(m_singletonListSemaphore);
- for (SensorBase *next = m_singletonList; next != NULL;)
- {
- SensorBase *tmp = next;
- next = next->m_nextSingleton;
- delete tmp;
- }
- m_singletonList = NULL;
-}
-
-/**
- * Check that the analog module number is valid.
- *
- * @return Analog module is valid and present
- */
-bool SensorBase::CheckAnalogModule(uint8_t moduleNumber)
-{
- if (nLoadOut::getModulePresence(nLoadOut::kModuleType_Analog, moduleNumber - 1))
- return true;
- return false;
-}
-
-/**
- * Check that the digital module number is valid.
- *
- * @return Digital module is valid and present
- */
-bool SensorBase::CheckDigitalModule(uint8_t moduleNumber)
-{
- if (nLoadOut::getModulePresence(nLoadOut::kModuleType_Digital, moduleNumber - 1))
- return true;
- return false;
-}
-
-/**
- * Check that the digital module number is valid.
- *
- * @return Digital module is valid and present
- */
-bool SensorBase::CheckPWMModule(uint8_t moduleNumber)
-{
- return CheckDigitalModule(moduleNumber);
-}
-
-/**
- * Check that the digital module number is valid.
- *
- * @return Digital module is valid and present
- */
-bool SensorBase::CheckRelayModule(uint8_t moduleNumber)
-{
- return CheckDigitalModule(moduleNumber);
-}
-
-/**
- * Check that the solenoid module number is valid.
- *
- * @return Solenoid module is valid and present
- */
-bool SensorBase::CheckSolenoidModule(uint8_t moduleNumber)
-{
- if (nLoadOut::getModulePresence(nLoadOut::kModuleType_Solenoid, moduleNumber - 1))
- return true;
- return false;
-}
-
-/**
- * Check that the digital channel number is valid.
- * Verify that the channel number is one of the legal channel numbers. Channel numbers are
- * 1-based.
- *
- * @return Digital channel is valid
- */
-bool SensorBase::CheckDigitalChannel(uint32_t channel)
-{
- if (channel > 0 && channel <= kDigitalChannels)
- return true;
- return false;
-}
-
-/**
- * Check that the digital channel number is valid.
- * Verify that the channel number is one of the legal channel numbers. Channel numbers are
- * 1-based.
- *
- * @return Relay channel is valid
- */
-bool SensorBase::CheckRelayChannel(uint32_t channel)
-{
- if (channel > 0 && channel <= kRelayChannels)
- return true;
- return false;
-}
-
-/**
- * Check that the digital channel number is valid.
- * Verify that the channel number is one of the legal channel numbers. Channel numbers are
- * 1-based.
- *
- * @return PWM channel is valid
- */
-bool SensorBase::CheckPWMChannel(uint32_t channel)
-{
- if (channel > 0 && channel <= kPwmChannels)
- return true;
- return false;
-}
-
-/**
- * Check that the analog channel number is value.
- * Verify that the analog channel number is one of the legal channel numbers. Channel numbers
- * are 1-based.
- *
- * @return Analog channel is valid
- */
-bool SensorBase::CheckAnalogChannel(uint32_t channel)
-{
- if (channel > 0 && channel <= kAnalogChannels)
- return true;
- return false;
-}
-
-/**
- * Verify that the solenoid channel number is within limits.
- *
- * @return Solenoid channel is valid
- */
-bool SensorBase::CheckSolenoidChannel(uint32_t channel)
-{
- if (channel > 0 && channel <= kSolenoidChannels)
- return true;
- return false;
-}
-
diff --git a/aos/externals/WPILib/WPILib/SensorBase.h b/aos/externals/WPILib/WPILib/SensorBase.h
deleted file mode 100644
index 58e3977..0000000
--- a/aos/externals/WPILib/WPILib/SensorBase.h
+++ /dev/null
@@ -1,66 +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 SENSORBASE_H_
-#define SENSORBASE_H_
-
-#include "ErrorBase.h"
-#include <stdio.h>
-#include "Base.h"
-#include "Synchronized.h"
-
-/**
- * Base class for all sensors.
- * Stores most recent status information as well as containing utility functions for checking
- * channels.
- */
-class SensorBase: public ErrorBase {
-public:
- SensorBase();
- static void DeleteSingletons();
- static uint32_t GetDefaultAnalogModule() { return 1; }
- static uint32_t GetDefaultDigitalModule() { return 1; }
- static uint32_t GetDefaultSolenoidModule() { return 1; }
- static bool CheckAnalogModule(uint8_t moduleNumber);
- static bool CheckDigitalModule(uint8_t moduleNumber);
- static bool CheckPWMModule(uint8_t moduleNumber);
- static bool CheckRelayModule(uint8_t moduleNumber);
- static bool CheckSolenoidModule(uint8_t moduleNumber);
- static bool CheckDigitalChannel(uint32_t channel);
- static bool CheckRelayChannel(uint32_t channel);
- static bool CheckPWMChannel(uint32_t channel);
- static bool CheckAnalogChannel(uint32_t channel);
- static bool CheckSolenoidChannel(uint32_t channel);
-
- // NOT vxworks system clock ticks (returned by sysClkRateGet() from sysLib).
- // TODO: Document what this actually is (has something to do with FPGA times).
- // 40kHz clock?
- static const uint32_t kSystemClockTicksPerMicrosecond = 40;
- static const uint32_t kDigitalChannels = 14;
- static const uint32_t kAnalogChannels = 8;
- static const uint32_t kAnalogModules = 2;
- static const uint32_t kDigitalModules = 2;
- static const uint32_t kSolenoidChannels = 8;
- static const uint32_t kSolenoidModules = 2;
- static const uint32_t kPwmChannels = 10;
- static const uint32_t kRelayChannels = 8;
-
-protected:
- void AddToSingletonList();
- // Subclasses that don't use the singleton list mechanism should make this
- // public, but ones that do should keep it protected so that users can not
- // delete the singleton instance(s).
- virtual ~SensorBase();
-
-private:
- DISALLOW_COPY_AND_ASSIGN(SensorBase);
- static SensorBase *m_singletonList;
- SensorBase *m_nextSingleton;
- static ReentrantSemaphore m_singletonListSemaphore;
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SerialPort.cpp b/aos/externals/WPILib/WPILib/SerialPort.cpp
deleted file mode 100644
index f948f0a..0000000
--- a/aos/externals/WPILib/WPILib/SerialPort.cpp
+++ /dev/null
@@ -1,336 +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 "SerialPort.h"
-
-#include "NetworkCommunication/UsageReporting.h"
-#include "visa/visa.h"
-
-//static ViStatus _VI_FUNCH ioCompleteHandler (ViSession vi, ViEventType eventType, ViEvent event, ViAddr userHandle);
-
-/**
- * Create an instance of a Serial Port class.
- *
- * @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.
- */
-SerialPort::SerialPort(uint32_t baudRate, uint8_t dataBits, SerialPort::Parity parity, SerialPort::StopBits stopBits)
- : m_resourceManagerHandle (0)
- , m_portHandle (0)
- , m_consoleModeEnabled (false)
-{
- ViStatus localStatus = VI_SUCCESS;
- localStatus = viOpenDefaultRM((ViSession*)&m_resourceManagerHandle);
- wpi_setError(localStatus);
-
- localStatus = viOpen(m_resourceManagerHandle, const_cast<char*>("ASRL1::INSTR"), VI_NULL, VI_NULL, (ViSession*)&m_portHandle);
- wpi_setError(localStatus);
- if (localStatus != 0)
- {
- m_consoleModeEnabled = true;
- return;
- }
-
- localStatus = viSetAttribute(m_portHandle, VI_ATTR_ASRL_BAUD, baudRate);
- wpi_setError(localStatus);
- localStatus = viSetAttribute(m_portHandle, VI_ATTR_ASRL_DATA_BITS, dataBits);
- wpi_setError(localStatus);
- localStatus = viSetAttribute(m_portHandle, VI_ATTR_ASRL_PARITY, parity);
- wpi_setError(localStatus);
- localStatus = viSetAttribute(m_portHandle, VI_ATTR_ASRL_STOP_BITS, stopBits);
- wpi_setError(localStatus);
-
- // Set the default timeout to 5 seconds.
- SetTimeout(5.0f);
-
- // Don't wait until the buffer is full to transmit.
- SetWriteBufferMode(kFlushOnAccess);
-
- EnableTermination();
-
- //viInstallHandler(m_portHandle, VI_EVENT_IO_COMPLETION, ioCompleteHandler, this);
- //viEnableEvent(m_portHandle, VI_EVENT_IO_COMPLETION, VI_HNDLR, VI_NULL);
-
- nUsageReporting::report(nUsageReporting::kResourceType_SerialPort, 0);
-}
-
-/**
- * Destructor.
- */
-SerialPort::~SerialPort()
-{
- if (!m_consoleModeEnabled)
- {
- //viUninstallHandler(m_portHandle, VI_EVENT_IO_COMPLETION, ioCompleteHandler, this);
- viClose(m_portHandle);
- }
- viClose(m_resourceManagerHandle);
-}
-
-/**
- * Set the type of flow control to enable on this port.
- *
- * By default, flow control is disabled.
- */
-void SerialPort::SetFlowControl(SerialPort::FlowControl flowControl)
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viSetAttribute (m_portHandle, VI_ATTR_ASRL_FLOW_CNTRL, flowControl);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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 SerialPort::EnableTermination(char terminator)
-{
- if (!m_consoleModeEnabled)
- {
- viSetAttribute(m_portHandle, VI_ATTR_TERMCHAR_EN, VI_TRUE);
- viSetAttribute(m_portHandle, VI_ATTR_TERMCHAR, terminator);
- viSetAttribute(m_portHandle, VI_ATTR_ASRL_END_IN, VI_ASRL_END_TERMCHAR);
- }
-}
-
-/**
- * Disable termination behavior.
- */
-void SerialPort::DisableTermination()
-{
- if (!m_consoleModeEnabled)
- {
- viSetAttribute(m_portHandle, VI_ATTR_TERMCHAR_EN, VI_FALSE);
- viSetAttribute(m_portHandle, VI_ATTR_ASRL_END_IN, VI_ASRL_END_NONE);
- }
-}
-
-/**
- * Get the number of bytes currently available to read from the serial port.
- *
- * @return The number of bytes available to read.
- */
-int32_t SerialPort::GetBytesReceived()
-{
- int32_t bytes = 0;
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viGetAttribute(m_portHandle, VI_ATTR_ASRL_AVAIL_NUM, &bytes);
- wpi_setError(localStatus);
- }
- return bytes;
-}
-
-/**
- * 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 SerialPort::Printf(const char *writeFmt, ...)
-{
- if (!m_consoleModeEnabled)
- {
- va_list args;
- va_start (args, writeFmt);
- ViStatus localStatus = viVPrintf(m_portHandle, (ViString)writeFmt, args);
- va_end (args);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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 SerialPort::Scanf(const char *readFmt, ...)
-{
- if (!m_consoleModeEnabled)
- {
- va_list args;
- va_start (args, readFmt);
- ViStatus localStatus = viVScanf(m_portHandle, (ViString)readFmt, args);
- va_end (args);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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_t SerialPort::Read(char *buffer, int32_t count)
-{
- uint32_t retCount = 0;
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viRead(m_portHandle, (ViPBuf)buffer, count, (ViPUInt32)&retCount);
- switch (localStatus)
- {
- case VI_SUCCESS_TERM_CHAR:
- case VI_SUCCESS_MAX_CNT:
- case VI_ERROR_TMO: // Timeout
- break;
- case VI_ERROR_IO:
- case VI_ERROR_ASRL_OVERRUN:
- wpi_setError(localStatus);
- Reset();
- break;
- default:
- wpi_setError(localStatus);
- }
- }
- return retCount;
-}
-
-/**
- * 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_t SerialPort::Write(const char *buffer, int32_t count)
-{
- uint32_t retCount = 0;
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viWrite(m_portHandle, (ViPBuf)buffer, count, (ViPUInt32)&retCount);
- wpi_setError(localStatus);
- }
- return retCount;
-}
-
-/**
- * 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 SerialPort::SetTimeout(float timeout)
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viSetAttribute(m_portHandle, VI_ATTR_TMO_VALUE, (uint32_t)(timeout * 1e3));
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Specify the size of the input buffer.
- *
- * Specify the amount of data that can be stored before data
- * from the device is returned to Read or Scanf. If you want
- * data that is recieved to be returned immediately, set this to 1.
- *
- * It the buffer is not filled before the read timeout expires, all
- * data that has been received so far will be returned.
- *
- * @param size The read buffer size.
- */
-void SerialPort::SetReadBufferSize(uint32_t size)
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viSetBuf(m_portHandle, VI_READ_BUF, size);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Specify the size of the output buffer.
- *
- * Specify the amount of data that can be stored before being
- * transmitted to the device.
- *
- * @param size The write buffer size.
- */
-void SerialPort::SetWriteBufferSize(uint32_t size)
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viSetBuf(m_portHandle, VI_WRITE_BUF, size);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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 SerialPort::SetWriteBufferMode(SerialPort::WriteBufferMode mode)
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viSetAttribute(m_portHandle, VI_ATTR_WR_BUF_OPER_MODE, mode);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * 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 SerialPort::Flush()
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viFlush(m_portHandle, VI_WRITE_BUF);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Reset the serial port driver to a known state.
- *
- * Empty the transmit and receive buffers in the device and formatted I/O.
- */
-void SerialPort::Reset()
-{
- if (!m_consoleModeEnabled)
- {
- ViStatus localStatus = viClear(m_portHandle);
- wpi_setError(localStatus);
- }
-}
-
-//void SerialPort::_internalHandler(uint32_t port, uint32_t eventType, uint32_t event)
-//{
-//}
-
-//ViStatus _VI_FUNCH ioCompleteHandler (ViSession vi, ViEventType eventType, ViEvent event, ViAddr userHandle)
-//{
-// ((SerialPort*) userHandle)->_internalHandler(vi, eventType, event);
-// return VI_SUCCESS;
-//}
-
diff --git a/aos/externals/WPILib/WPILib/SerialPort.h b/aos/externals/WPILib/WPILib/SerialPort.h
deleted file mode 100644
index 64b7724..0000000
--- a/aos/externals/WPILib/WPILib/SerialPort.h
+++ /dev/null
@@ -1,61 +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 "ErrorBase.h"
-#include <vxWorks.h>
-
-/**
- * Driver for the RS-232 serial port on the cRIO.
- *
- * The current implementation uses the VISA formatted I/O mode. This means that
- * all traffic goes through the fomatted buffers. This allows the intermingled
- * use of Printf(), Scanf(), and the raw buffer accessors Read() and Write().
- *
- * More information can be found in the NI-VISA User Manual here:
- * http://www.ni.com/pdf/manuals/370423a.pdf
- * and the NI-VISA Programmer's Reference Manual here:
- * http://www.ni.com/pdf/manuals/370132c.pdf
- */
-class SerialPort : public ErrorBase
-{
-public:
- typedef enum {kParity_None=0, kParity_Odd=1, kParity_Even=2, kParity_Mark=3, kParity_Space=4} Parity;
- typedef enum {kStopBits_One=10, kStopBits_OnePointFive=15, kStopBits_Two=20} StopBits;
- typedef enum {kFlowControl_None=0, kFlowControl_XonXoff=1, kFlowControl_RtsCts=2, kFlowControl_DtrDsr=4} FlowControl;
- typedef enum {kFlushOnAccess=1, kFlushWhenFull=2} WriteBufferMode;
-
- SerialPort(uint32_t baudRate, uint8_t dataBits = 8, Parity parity = kParity_None, StopBits stopBits = kStopBits_One);
- ~SerialPort();
- void SetFlowControl(FlowControl flowControl);
- void EnableTermination(char terminator = '\n');
- void DisableTermination();
- int32_t GetBytesReceived();
- void Printf(const char *writeFmt, ...);
- void Scanf(const char *readFmt, ...);
- uint32_t Read(char *buffer, int32_t count);
- uint32_t Write(const char *buffer, int32_t count);
- void SetTimeout(float timeout);
- void SetReadBufferSize(uint32_t size);
- void SetWriteBufferSize(uint32_t size);
- void SetWriteBufferMode(WriteBufferMode mode);
- void Flush();
- void Reset();
-
- /*
- * Do not call me!
- */
- //void _internalHandler(uint32_t port, uint32_t eventType, uint32_t event);
-private:
- uint32_t m_resourceManagerHandle;
- uint32_t m_portHandle;
- bool m_consoleModeEnabled;
- DISALLOW_COPY_AND_ASSIGN(SerialPort);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Servo.cpp b/aos/externals/WPILib/WPILib/Servo.cpp
deleted file mode 100644
index 865767e..0000000
--- a/aos/externals/WPILib/WPILib/Servo.cpp
+++ /dev/null
@@ -1,161 +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 "NetworkCommunication/UsageReporting.h"
-#include "LiveWindow/LiveWindow.h"
-
-constexpr float Servo::kMaxServoAngle;
-constexpr float Servo::kMinServoAngle;
-
-/**
- * Common initialization code called by all constructors.
- *
- * InitServo() assigns defaults for the period multiplier for the servo PWM control signal, as
- * well as the minimum and maximum PWM values supported by the servo.
- */
-void Servo::InitServo()
-{
- m_table = NULL;
- SetBounds(2.27, 1.513, 1.507, 1.5, .743);
- SetPeriodMultiplier(kPeriodMultiplier_4X);
-
-
- LiveWindow::GetInstance()->AddActuator("Servo", GetModuleNumber(), GetChannel(), this);
- nUsageReporting::report(nUsageReporting::kResourceType_Servo, GetChannel(), GetModuleNumber() - 1);
-}
-
-/**
- * Constructor that assumes the default digital module.
- *
- * @param channel The PWM channel on the digital module to which the servo is attached.
- */
-Servo::Servo(uint32_t channel) : SafePWM(channel)
-{
- InitServo();
-}
-
-/**
- * Constructor that specifies the digital module.
- *
- * @param moduleNumber The digital module (1 or 2).
- * @param channel The PWM channel on the digital module to which the servo is attached (1..10).
- */
-Servo::Servo(uint8_t moduleNumber, uint32_t channel) : SafePWM(moduleNumber, channel)
-{
- InitServo();
-}
-
-Servo::~Servo()
-{
-}
-
-/**
- * Set the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @param value Position from 0.0 to 1.0.
- */
-void Servo::Set(float value)
-{
- SetPosition(value);
-}
-
-/**
- * Set the servo to offline.
- *
- * Set the servo raw value to 0 (undriven)
- */
-void Servo::SetOffline() {
- SetRaw(0);
-}
-
-/**
- * Get the servo position.
- *
- * Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.
- *
- * @return Position from 0.0 to 1.0.
- */
-float Servo::Get()
-{
- return GetPosition();
-}
-
-/**
- * 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 degrees The angle in degrees to set the servo.
- */
-void Servo::SetAngle(float degrees)
-{
- if (degrees < kMinServoAngle)
- {
- degrees = kMinServoAngle;
- }
- else if (degrees > kMaxServoAngle)
- {
- degrees = kMaxServoAngle;
- }
-
- SetPosition(((float) (degrees - kMinServoAngle)) / GetServoAngleRange());
-}
-
-/**
- * Get the servo angle.
- *
- * Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).
- * @return The angle in degrees to which the servo is set.
- */
-float Servo::GetAngle()
-{
- 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() {
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void Servo::StopLiveWindowMode() {
- if (m_table != NULL) {
- 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
deleted file mode 100644
index 8f3f046..0000000
--- a/aos/externals/WPILib/WPILib/Servo.h
+++ /dev/null
@@ -1,52 +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 SERVO_H
-#define SERVO_H
-
-#include "SafePWM.h"
-#include "SpeedController.h"
-
-/**
- * Standard hobby style servo.
- *
- * The range parameters default to the appropriate values for the Hitec HS-322HD servo provided
- * in the FIRST Kit of Parts in 2008.
- */
-class Servo : public SafePWM
-{
-public:
- explicit Servo(uint32_t channel);
- Servo(uint8_t moduleNumber, uint32_t channel);
- virtual ~Servo();
- void Set(float value);
- void SetOffline();
- float Get();
- void SetAngle(float angle);
- 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();
- float GetServoAngleRange() {return kMaxServoAngle - kMinServoAngle;}
-
- static constexpr float kMaxServoAngle = 170.0;
- static constexpr float kMinServoAngle = 0.0;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/SimpleRobot.cpp b/aos/externals/WPILib/WPILib/SimpleRobot.cpp
deleted file mode 100644
index b111bff..0000000
--- a/aos/externals/WPILib/WPILib/SimpleRobot.cpp
+++ /dev/null
@@ -1,152 +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 "SimpleRobot.h"
-
-#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)
-{
- m_watchdog.SetEnabled(false);
-}
-
-/**
- * Robot-wide initialization code should go here.
- *
- * Programmers should override this method for default Robot-wide initialization which will
- * be called each time the robot enters the disabled state.
- */
-void SimpleRobot::RobotInit()
-{
- printf("Default %s() method... Override me!\n", __FUNCTION__);
-}
-
-/**
- * Disabled should go here.
- * Programmers should override this method to run code that should run while the field is
- * disabled.
- */
-void SimpleRobot::Disabled()
-{
- printf("Default %s() method... Override me!\n", __FUNCTION__);
-}
-
-/**
- * Autonomous should go here.
- * Programmers should override this method to run code that should run while the field is
- * in the autonomous period. This will be called once each time the robot enters the
- * autonomous state.
- */
-void SimpleRobot::Autonomous()
-{
- printf("Default %s() method... Override me!\n", __FUNCTION__);
-}
-
-/**
- * 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. This is called once each time the robot
- * enters the teleop state.
- */
-void SimpleRobot::OperatorControl()
-{
- printf("Default %s() method... Override me!\n", __FUNCTION__);
-}
-
-/**
- * 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
- * OperatorControl() methods. In that case, the program is responsible for sensing when to run
- * the autonomous and operator control functions in their program.
- *
- * This method will be called immediately after the constructor is called. If it has not been
- * overridden by a user subclass (i.e. the default version runs), then the Autonomous() and
- * OperatorControl() methods will be called.
- */
-void SimpleRobot::RobotMain()
-{
- m_robotMainOverridden = false;
-}
-
-/**
- * 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
- * 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)
- {
- if (IsDisabled())
- {
- m_ds->InDisabled(true);
- Disabled();
- m_ds->InDisabled(false);
- while (IsDisabled()) m_ds->WaitForData();
- }
- else if (IsAutonomous())
- {
- m_ds->InAutonomous(true);
- Autonomous();
- 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);
- OperatorControl();
- m_ds->InOperatorControl(false);
- while (IsOperatorControl() && IsEnabled()) m_ds->WaitForData();
- }
- }
- }
-}
diff --git a/aos/externals/WPILib/WPILib/SimpleRobot.h b/aos/externals/WPILib/WPILib/SimpleRobot.h
deleted file mode 100644
index 88143a6..0000000
--- a/aos/externals/WPILib/WPILib/SimpleRobot.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 SIMPLE_ROBOT_H
-#define SIMPLE_ROBOT_H
-
-#include "RobotBase.h"
-
-/**
- * @todo If this is going to last until release, it needs a better name.
- * Overridden Autonomous() and OperatorControl() methods are called at the appropriate time
- * as the match proceeds. In the current implementation, the Autonomous code will run to
- * completion before the OperatorControl code could start. In the future the Autonomous code
- * might be spawned as a task, then killed at the end of the Autonomous period.
- */
-class SimpleRobot: public RobotBase
-{
-public:
- SimpleRobot();
- virtual ~SimpleRobot() {}
- virtual void RobotInit();
- virtual void Disabled();
- virtual void Autonomous();
- virtual void OperatorControl();
- virtual void Test();
- virtual void RobotMain();
- void StartCompetition();
-
-private:
- bool m_robotMainOverridden;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Skeleton.h b/aos/externals/WPILib/WPILib/Skeleton.h
deleted file mode 100644
index be15767..0000000
--- a/aos/externals/WPILib/WPILib/Skeleton.h
+++ /dev/null
@@ -1,81 +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 __SKELETON_H__
-#define __SKELETON_H__
-
-/**
- * Represents Skeleton data from a Kinect device connected to the
- * Driver Station. See Getting Started with Microsoft Kinect for
- * FRC and the Kinect for Windows SDK API reference for more information
- */
-class Skeleton
-{
- friend class Kinect;
-public:
- typedef enum
- {
- HipCenter = 0,
- Spine = 1,
- ShoulderCenter = 2,
- Head = 3,
- ShoulderLeft = 4,
- ElbowLeft = 5,
- WristLeft = 6,
- HandLeft = 7,
- ShoulderRight = 8,
- ElbowRight = 9,
- WristRight = 10,
- HandRight = 11,
- HipLeft = 12,
- KneeLeft = 13,
- AnkleLeft = 14,
- FootLeft = 15,
- HipRight = 16,
- KneeRight = 17,
- AnkleRight = 18,
- FootRight = 19,
- JointCount = 20
- } JointTypes;
-
- typedef enum {kNotTracked, kInferred, kTracked} JointTrackingState;
-
- typedef struct
- {
- float x;
- float y;
- float z;
- JointTrackingState trackingState;
- } Joint;
-
- Joint GetHandRight() { return m_joints[HandRight]; }
- Joint GetHandLeft() { return m_joints[HandLeft]; }
- Joint GetWristRight() { return m_joints[WristRight]; }
- Joint GetWristLeft() { return m_joints[WristLeft]; }
- Joint GetElbowLeft() { return m_joints[ElbowLeft]; }
- Joint GetElbowRight() { return m_joints[ElbowRight]; }
- Joint GetShoulderLeft() { return m_joints[ShoulderLeft]; }
- Joint GetShoulderRight() { return m_joints[ShoulderRight]; }
- Joint GetShoulderCenter() { return m_joints[ShoulderCenter]; }
- Joint GetHead() { return m_joints[Head]; }
- Joint GetSpine() { return m_joints[Spine]; }
- Joint GetHipCenter() { return m_joints[HipCenter]; }
- Joint GetHipRight() { return m_joints[HipRight]; }
- Joint GetHipLeft() { return m_joints[HipLeft]; }
- Joint GetKneeLeft() { return m_joints[KneeLeft]; }
- Joint GetKneeRight() { return m_joints[KneeRight]; }
- Joint GetAnkleLeft() { return m_joints[AnkleLeft]; }
- Joint GetAnkleRight() { return m_joints[AnkleRight]; }
- Joint GetFootLeft() { return m_joints[FootLeft]; }
- Joint GetFootRight() { return m_joints[FootRight]; }
- Joint GetJointValue(JointTypes index) { return m_joints[index]; }
-
-private:
- Joint m_joints[20];
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h b/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h
deleted file mode 100644
index 8be059b..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/NamedSendable.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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
deleted file mode 100644
index e5c8698..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/Sendable.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 __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
deleted file mode 100644
index 7c226dc..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.cpp
+++ /dev/null
@@ -1,78 +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/SendableChooser.h"
-#include "networktables2/type/StringArray.h"
-
-#include <stdio.h>
-
-static const char *kDefault = "default";
-static const char *kOptions = "options";
-static const char *kSelected = "selected";
-
-SendableChooser::SendableChooser()
-{
- m_defaultChoice = "";
-}
-
-/**
- * Adds the given object to the list of options. On the {@link SmartDashboard} on the desktop,
- * the object will appear as the given name.
- * @param name the name of the option
- * @param object the option
- */
-void SendableChooser::AddObject(const char *name, void *object)
-{
- m_choices[name] = object;
-}
-
-/**
- * Add the given object to the list of options and marks it as the default.
- * Functionally, this is very close to {@link SendableChooser#AddObject(const char *name, void *object) AddObject(...)}
- * except that it will use this as the default option if none other is explicitly selected.
- * @param name the name of the option
- * @param object the option
- */
-void SendableChooser::AddDefault(const char *name, void *object)
-{
- m_defaultChoice = name;
- AddObject(name, object);
-}
-
-/**
- * Returns the selected option. If there is none selected, it will return the default. If there is none selected
- * and no default, then it will return {@code NULL}.
- * @return the option selected
- */
-void *SendableChooser::GetSelected()
-{
- 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
deleted file mode 100644
index 7a119b4..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SendableChooser.h
+++ /dev/null
@@ -1,47 +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_CHOOSER_H__
-#define __SENDABLE_CHOOSER_H__
-
-#include "SmartDashboard/Sendable.h"
-#include "tables/ITable.h"
-#include <map>
-#include <string>
-
-/**
- * The {@link SendableChooser} class is a useful tool for presenting a selection of options
- * to the {@link SmartDashboard}.
- *
- * <p>For instance, you may wish to be able to select between multiple autonomous modes.
- * You can do this by putting every possible {@link Command} you want to run as an autonomous into
- * a {@link SendableChooser} and then put it into the {@link SmartDashboard} to have a list of options
- * appear on the laptop. Once autonomous starts, simply ask the {@link SendableChooser} what the selected
- * value is.</p>
- *
- * @see SmartDashboard
- */
-class SendableChooser : public Sendable
-{
-public:
- SendableChooser();
- virtual ~SendableChooser() {};
-
- void AddObject(const char *name, void *object);
- void AddDefault(const char *name, void *object);
- void *GetSelected();
-
- virtual void InitTable(ITable* subtable);
- virtual ITable* GetTable();
- virtual std::string GetSmartDashboardType();
-
-private:
- std::string m_defaultChoice;
- std::map<std::string, void *> m_choices;
- ITable *m_table;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp
deleted file mode 100644
index bfa3ee6..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.cpp
+++ /dev/null
@@ -1,179 +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/SmartDashboard.h"
-
-#include "NetworkCommunication/UsageReporting.h"
-#include "NamedSendable.h"
-#include "WPIErrors.h"
-#include "networktables/NetworkTable.h"
-
-ITable* SmartDashboard::m_table = NULL;
-std::map<ITable *, Sendable *> SmartDashboard::m_tablesToData;
-
-void SmartDashboard::init(){
- m_table = NetworkTable::GetTable("SmartDashboard");
-}
-
-//TODO usage reporting
-
-/**
- * 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::PutData(std::string key, Sendable *data)
-{
- if (data == NULL)
- {
- //TODO wpi_setWPIErrorWithContext(NullParameter, "value");
- return;
- }
- ITable* dataTable = m_table->GetSubTable(key);
- dataTable->PutString("~TYPE~", data->GetSmartDashboardType());
- data->InitTable(dataTable);
- m_tablesToData[dataTable] = data;
-}
-
-/**
- * Maps the specified key (where the key is the name of the {@link SmartDashboardNamedData}
- * to the specified value in this table.
- * 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(NamedSendable *value)
-{
- if (value == NULL)
- {
- //TODO wpi_setWPIErrorWithContext(NullParameter, "value");
- return;
- }
- PutData(value->GetName(), value);
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-//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);
-}
-
-/**
- * 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::PutBoolean(std::string keyName, bool value)
-{
- m_table->PutBoolean(keyName, value);
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-bool SmartDashboard::GetBoolean(std::string keyName)
-{
- return m_table->GetBoolean(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::PutNumber(std::string keyName, double value){
- m_table->PutNumber(keyName, value);
-}
-
-/**
- * Returns the value at the specified key.
- * @param keyName the key
- * @return the value
- */
-double SmartDashboard::GetNumber(std::string keyName)
-{
- return m_table->GetNumber(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(std::string keyName, std::string 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(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);
-}
diff --git a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h b/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h
deleted file mode 100644
index 3fae9d4..0000000
--- a/aos/externals/WPILib/WPILib/SmartDashboard/SmartDashboard.h
+++ /dev/null
@@ -1,55 +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_H__
-#define __SMART_DASHBOARD_H__
-
-#include "SensorBase.h"
-#include <map>
-#include <string>
-#include "SmartDashboard/Sendable.h"
-#include "SmartDashboard/NamedSendable.h"
-#include "tables/ITable.h"
-
-
-class SmartDashboard : public SensorBase
-{
-public:
- 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);
-
- /** The {@link NetworkTable} used by {@link SmartDashboard} */
- static ITable* m_table;
-
- /**
- * A map linking tables in the SmartDashboard to the {@link SmartDashboardData} objects
- * they came from.
- */
- static std::map<ITable *, Sendable *> m_tablesToData;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Solenoid.cpp b/aos/externals/WPILib/WPILib/Solenoid.cpp
deleted file mode 100644
index 20aab19..0000000
--- a/aos/externals/WPILib/WPILib/Solenoid.cpp
+++ /dev/null
@@ -1,145 +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 "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-/**
- * Common function to implement constructor behavior.
- */
-void Solenoid::InitSolenoid()
-{
- m_table = NULL;
- char buf[64];
- if (!CheckSolenoidModule(m_moduleNumber))
- {
- snprintf(buf, 64, "Solenoid Module %d", m_moduleNumber);
- wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf);
- return;
- }
- if (!CheckSolenoidChannel(m_channel))
- {
- snprintf(buf, 64, "Solenoid Channel %d", m_channel);
- wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf);
- return;
- }
- Resource::CreateResourceObject(&m_allocated, tSolenoid::kNumDO7_0Elements * kSolenoidChannels);
-
- snprintf(buf, 64, "Solenoid %d (Module: %d)", m_channel, m_moduleNumber);
- if (m_allocated->Allocate((m_moduleNumber - 1) * kSolenoidChannels
- + m_channel - 1,
- buf, this) == ~0ul)
- {
- return;
- }
-
- LiveWindow::GetInstance()->AddActuator("Solenoid", m_moduleNumber, m_channel, this);
- nUsageReporting::report(nUsageReporting::kResourceType_Solenoid, m_channel, m_moduleNumber - 1);
-}
-
-/**
- * Constructor.
- *
- * @param channel The channel on the solenoid module to control (1..8).
- */
-Solenoid::Solenoid(uint32_t channel)
- : SolenoidBase (GetDefaultSolenoidModule())
- , m_channel (channel)
-{
- InitSolenoid();
-}
-
-/**
- * Constructor.
- *
- * @param moduleNumber The solenoid module (1 or 2).
- * @param channel The channel on the solenoid module to control (1..8).
- */
-Solenoid::Solenoid(uint8_t moduleNumber, uint32_t channel)
- : SolenoidBase (moduleNumber)
- , m_channel (channel)
-{
- InitSolenoid();
-}
-
-/**
- * Destructor.
- */
-Solenoid::~Solenoid()
-{
- if (CheckSolenoidModule(m_moduleNumber))
- {
- m_allocated->Free((m_moduleNumber - 1) * kSolenoidChannels + m_channel - 1,
- this);
- }
-}
-
-/**
- * Set the value of a solenoid.
- *
- * @param on Turn the solenoid output off or on.
- */
-void Solenoid::Set(bool on)
-{
- if (StatusIsFatal()) return;
- uint8_t value = on ? 0xFF : 0x00;
- uint8_t mask = 1 << (m_channel - 1);
-
- SolenoidBase::Set(value, mask);
-}
-
-/**
- * Read the current value of the solenoid.
- *
- * @return The current value of the solenoid.
- */
-bool Solenoid::Get()
-{
- if (StatusIsFatal()) return false;
- uint8_t 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);
- if (m_table != NULL) {
- m_table->AddTableListener("Value", this, true);
- }
-}
-
-void Solenoid::StopLiveWindowMode() {
- Set(false);
- if (m_table != NULL) {
- 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
deleted file mode 100644
index 5c30b15..0000000
--- a/aos/externals/WPILib/WPILib/Solenoid.h
+++ /dev/null
@@ -1,46 +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 SOLENOID_H_
-#define SOLENOID_H_
-
-#include "SolenoidBase.h"
-#include "LiveWindow/LiveWindowSendable.h"
-#include "tables/ITableListener.h"
-
-
-/**
- * Solenoid class for running high voltage Digital Output (9472 module).
- *
- * 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, public LiveWindowSendable, public ITableListener {
-public:
- explicit Solenoid(uint32_t channel);
- Solenoid(uint8_t moduleNumber, uint32_t 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_t 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
deleted file mode 100644
index 58c0430..0000000
--- a/aos/externals/WPILib/WPILib/SolenoidBase.cpp
+++ /dev/null
@@ -1,89 +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 "SolenoidBase.h"
-
-// Needs to be global since the protected resource spans all Solenoid objects.
-ReentrantSemaphore SolenoidBase::m_semaphore;
-Resource *SolenoidBase::m_allocated = NULL;
-
-tSolenoid *SolenoidBase::m_fpgaSolenoidModule = NULL;
-uint32_t SolenoidBase::m_refCount = 0;
-
-
-/**
- * Constructor
- *
- * @param moduleNumber The solenoid module (1 or 2).
- */
-SolenoidBase::SolenoidBase(uint8_t moduleNumber)
- : m_moduleNumber (moduleNumber)
-{
- Synchronized sync(m_semaphore);
- m_refCount++;
- if (m_refCount == 1)
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaSolenoidModule = tSolenoid::create(&localStatus);
- wpi_setError(localStatus);
- }
-}
-
-/**
- * Destructor.
- */
-SolenoidBase::~SolenoidBase()
-{
- Synchronized sync(m_semaphore);
- if (CheckSolenoidModule(m_moduleNumber))
- {
- if (m_refCount == 1)
- {
- delete m_fpgaSolenoidModule;
- m_fpgaSolenoidModule = NULL;
- }
- m_refCount--;
- }
-}
-
-/**
- * Set the value of 1 or more solenoids at the same time.
- *
- * @param value The value you want to set on the module.
- * @param mask The channels you want to be affected.
- */
-void SolenoidBase::Set(uint8_t value, uint8_t mask)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- if (CheckSolenoidModule(m_moduleNumber))
- {
- Synchronized sync(m_semaphore);
- uint8_t currentValue = m_fpgaSolenoidModule->readDO7_0(m_moduleNumber - 1, &localStatus);
- // Zero out the values to change
- currentValue &= ~mask;
- // Actually set the values.
- currentValue |= value & mask;
- m_fpgaSolenoidModule->writeDO7_0(m_moduleNumber - 1, currentValue, &localStatus);
- }
- wpi_setError(localStatus);
-}
-
-/**
- * Read all 8 solenoids as a single byte
- *
- * @return The current value of all 8 solenoids on the module.
- */
-uint8_t SolenoidBase::GetAll()
-{
- if (CheckSolenoidModule(m_moduleNumber))
- {
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint8_t solenoids = m_fpgaSolenoidModule->readDO7_0(m_moduleNumber - 1, &localStatus);
- wpi_setError(localStatus);
- return solenoids;
- }
- return 0;
-}
diff --git a/aos/externals/WPILib/WPILib/SolenoidBase.h b/aos/externals/WPILib/WPILib/SolenoidBase.h
deleted file mode 100644
index 3b1a5cb..0000000
--- a/aos/externals/WPILib/WPILib/SolenoidBase.h
+++ /dev/null
@@ -1,46 +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 SOLENOID_BASE_H_
-#define SOLENOID_BASE_H_
-
-#include "Resource.h"
-#include "SensorBase.h"
-#include "ChipObject.h"
-#include "Synchronized.h"
-
-/**
- * SolenoidBase class is the common base class for the Solenoid and
- * DoubleSolenoid classes.
- * It also supports getting and setting the values of all solenoids on a given
- * module at the same time directly.
- */
-class SolenoidBase : public SensorBase {
-public:
- explicit SolenoidBase(uint8_t moduleNumber);
- virtual ~SolenoidBase();
-
- void Set(uint8_t value, uint8_t mask);
-
- uint8_t GetAll();
- /**
- * Set the value of all of the solenoids at the same time.
- *
- * @param value The values you want to set all of the solenoids to.
- */
- void SetAll(uint8_t value) { Set(value, 0xFF); }
-
-protected:
- uint32_t m_moduleNumber; ///< Slot number where the module is plugged into the chassis.
- static Resource *m_allocated;
-
-private:
- static tSolenoid *m_fpgaSolenoidModule; ///< FPGA Solenoid Module object.
- static uint32_t m_refCount; ///< Reference count for the chip object.
- static ReentrantSemaphore m_semaphore;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/SpeedController.h b/aos/externals/WPILib/WPILib/SpeedController.h
deleted file mode 100644
index 7f88646..0000000
--- a/aos/externals/WPILib/WPILib/SpeedController.h
+++ /dev/null
@@ -1,40 +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 SPEED_CONTROLLER_H
-#define SPEED_CONTROLLER_H
-
-#include <vxWorks.h>
-#include "PIDOutput.h"
-
-/**
- * Interface for speed controlling devices.
- */
-class SpeedController : public PIDOutput
-{
-public:
- virtual ~SpeedController() {};
- /**
- * Common interface for setting the speed of a speed controller.
- *
- * @param speed The speed to set. Value should be between -1.0 and 1.0.
- * @param syncGroup The update group to add this Set() to, pending UpdateSyncGroup(). If 0, update immediately.
- */
- virtual void Set(float speed, uint8_t syncGroup=0) = 0;
- /**
- * Common interface for getting the current set speed of a speed controller.
- *
- * @return The current set speed. Value is between -1.0 and 1.0.
- */
- virtual float Get() = 0;
- /**
- * Common interface for disabling a motor.
- */
- virtual void Disable() = 0;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Synchronized.cpp b/aos/externals/WPILib/WPILib/Synchronized.cpp
deleted file mode 100644
index fd133b5..0000000
--- a/aos/externals/WPILib/WPILib/Synchronized.cpp
+++ /dev/null
@@ -1,35 +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 "Synchronized.h"
-
-/**
- * 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.
- * This ensures that no matter how the block is exited, the semaphore will always be released.
- * Use the CRITICAL_REGION(SEM_ID) and END_REGION macros to make the code look cleaner (see header file)
- * @param semaphore The semaphore controlling this critical region.
- */
-Synchronized::Synchronized(SEM_ID semaphore)
-{
- m_semaphore = semaphore;
- semTake(m_semaphore, WAIT_FOREVER);
-}
-
-Synchronized::Synchronized(const ReentrantSemaphore& semaphore)
-{
- m_semaphore = semaphore.m_semaphore;
- semTake(m_semaphore, WAIT_FOREVER);
-}
-
-/**
- * This destructor unlocks the semaphore.
- */
-Synchronized::~Synchronized()
-{
- semGive(m_semaphore);
-}
diff --git a/aos/externals/WPILib/WPILib/Synchronized.h b/aos/externals/WPILib/WPILib/Synchronized.h
deleted file mode 100644
index 4e44b0e..0000000
--- a/aos/externals/WPILib/WPILib/Synchronized.h
+++ /dev/null
@@ -1,98 +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 SYNCHRONIZED_H
-#define SYNCHRONIZED_H
-
-#include <semLib.h>
-
-#include "Base.h"
-
-#define CRITICAL_REGION(s) { Synchronized _sync(s);
-#define END_REGION }
-
-class Synchronized;
-
-/**
- * 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.
- *
- * The instance methods are marked const because using this class from multiple
- * threads at once is safe and they don't actually modify the value of any of
- * the instance variables.
- */
-class ReentrantSemaphore
-{
-public:
- 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() const {
- 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() const {
- return semGive(m_semaphore);
- }
-
-private:
- SEM_ID m_semaphore;
-
- friend class Synchronized;
- 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 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(const ReentrantSemaphore&);
- ~Synchronized();
-private:
- SEM_ID m_semaphore;
-
- DISALLOW_COPY_AND_ASSIGN(Synchronized);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Talon.cpp b/aos/externals/WPILib/WPILib/Talon.cpp
deleted file mode 100644
index b1081d4..0000000
--- a/aos/externals/WPILib/WPILib/Talon.cpp
+++ /dev/null
@@ -1,102 +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 "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() {
- SetBounds(2.037, 1.539, 1.513, 1.487, .989);
- SetPeriodMultiplier(kPeriodMultiplier_2X);
- SetRaw(m_centerPwm);
-
- 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_t 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_t moduleNumber, uint32_t 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_t 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
deleted file mode 100644
index 89c396c..0000000
--- a/aos/externals/WPILib/WPILib/Talon.h
+++ /dev/null
@@ -1,34 +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 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_t channel);
- Talon(uint8_t moduleNumber, uint32_t channel);
- virtual ~Talon();
- virtual void Set(float value, uint8_t syncGroup=0);
- virtual float Get();
- virtual void Disable();
-
- virtual void PIDWrite(float output);
-
-private:
- void InitTalon();
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Task.cpp b/aos/externals/WPILib/WPILib/Task.cpp
deleted file mode 100644
index c159202..0000000
--- a/aos/externals/WPILib/WPILib/Task.cpp
+++ /dev/null
@@ -1,230 +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 "Task.h"
-
-#include "NetworkCommunication/UsageReporting.h"
-#include "WPIErrors.h"
-#include <errnoLib.h>
-#include <string.h>
-#include <taskLib.h>
-#include <usrLib.h>
-
-const uint32_t Task::kDefaultPriority;
-const int32_t Task::kInvalidTaskID;
-
-/**
- * Create but don't launch a task.
- * Does not use any floating point registers.
- * @param name The name of the task. "FRC_" will be prepended to the task name.
- * @param function The address of the function to run as the new task.
- * @param priority The VxWorks priority for the task.
- * @param stackSize The size of the stack for the task
- */
-Task::Task(const char* name, FUNCPTR function, int32_t priority, uint32_t stackSize)
-{
- m_taskID = kInvalidTaskID;
- m_function = function;
- m_priority = priority;
- m_stackSize = stackSize;
- m_taskName = new char[strlen(name) + 5];
- strcpy(m_taskName, "FRC_");
- strcpy(m_taskName+4, name);
-
- static int32_t instances = 0;
- instances++;
- nUsageReporting::report(nUsageReporting::kResourceType_Task, instances, 0, m_taskName);
-}
-
-/**
- * Does not use any floating point registers.
- */
-Task::~Task()
-{
- if (m_taskID != kInvalidTaskID) Stop();
- delete [] m_taskName;
- m_taskName = NULL;
-}
-
-/**
- * Starts this task.
- * Does not use any floating point registers.
- * @return true on success
- */
-bool Task::Start(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4,
- uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9)
-{
- // Don't have to lock m_prioritySemaphore because this code isn't changing it.
- m_taskID = taskSpawn(m_taskName,
- m_priority,
- VX_FP_TASK, // options
- m_stackSize, // stack size
- m_function, // function to start
- arg0, arg1, arg2, arg3, arg4, // parameters to pass to m_function
- arg5, arg6, arg7, arg8, arg9);// additional parameters
- bool ok = HandleError(m_taskID);
- if (!ok) m_taskID = kInvalidTaskID;
- return ok;
-}
-
-/**
- * Restarts a running task.
- * @return true on success
- */
-bool Task::Restart()
-{
- return HandleError(taskRestart(m_taskID));
-}
-
-/**
- * Makes sure that the task is not running.
- * @returns true on success
- */
-bool Task::Stop()
-{
- bool ok = true;
- if (Verify())
- {
- STATUS result = taskDelete(m_taskID);
- // If it got deleted between the Verify() and the taskDelete then it's not
- // an actual error.
- if (errno != S_objLib_OBJ_DELETED) {
- ok = HandleError(result);
- }
- }
- m_taskID = kInvalidTaskID;
- return ok;
-}
-
-/**
- * Returns true if the task is ready to execute (i.e. not suspended, delayed, or blocked).
- * @return true if ready, false if not ready.
- */
-bool Task::IsReady()
-{
- return taskIsReady(m_taskID);
-}
-
-/**
- * Returns true if the task was explicitly suspended by calling Suspend()
- * @return true if suspended, false if not suspended.
- */
-bool Task::IsSuspended()
-{
- return taskIsSuspended(m_taskID);
-}
-
-/**
- * Pauses a running task.
- * Returns true on success
- */
-bool Task::Suspend()
-{
- return HandleError(taskSuspend(m_taskID));
-}
-
-/**
- * Resumes a paused task.
- * Returns true on success
- */
-bool Task::Resume()
-{
- return HandleError(taskResume(m_taskID));
-}
-
-/**
- * Verifies a task still exists.
- * @returns true on success.
- */
-bool Task::Verify()
-{
- if (m_taskID == kInvalidTaskID) return false;
- return taskIdVerify(m_taskID) == OK;
-}
-
-/**
- * Gets the priority of a task.
- * @returns task priority or 0 if an error occured
- */
-int32_t Task::GetPriority()
-{
- Synchronized sync(m_prioritySemaphore);
- if (HandleError(taskPriorityGet(m_taskID, &m_priority)))
- return m_priority;
- else
- return 0;
-}
-
-/**
- * This routine changes a task's priority to a specified priority.
- * Priorities range from 0, the highest priority, to 255, the lowest priority.
- * Default task priority is 100.
- * @param priority The priority the task should run at.
- * @returns true on success.
- */
-bool Task::SetPriority(int32_t priority)
-{
- Synchronized sync(m_prioritySemaphore);
- m_priority = priority;
- return HandleError(taskPrioritySet(m_taskID, m_priority));
-}
-
-/**
- * Returns the name of the task.
- * @returns Pointer to the name of the task or NULL if not allocated
- */
-const char* Task::GetName()
-{
- return m_taskName;
-}
-
-/**
- * Get the ID of a task
- * @returns Task ID of this task. Task::kInvalidTaskID (-1) if the task has not been started or has already exited.
- */
-int32_t Task::GetID()
-{
- if (Verify())
- return m_taskID;
- return kInvalidTaskID;
-}
-
-/**
- * Handles errors generated by task related code.
- * @return Whether or not this result is considered successful.
- */
-bool Task::HandleError(STATUS results)
-{
- if (results != ERROR) return true;
- switch(errnoGet())
- {
- case S_objLib_OBJ_ID_ERROR:
- wpi_setWPIErrorWithContext(TaskIDError, m_taskName);
- break;
-
- case S_objLib_OBJ_DELETED:
- wpi_setWPIErrorWithContext(TaskDeletedError, m_taskName);
- break;
-
- case S_taskLib_ILLEGAL_OPTIONS:
- wpi_setWPIErrorWithContext(TaskOptionsError, m_taskName);
- break;
-
- case S_memLib_NOT_ENOUGH_MEMORY:
- wpi_setWPIErrorWithContext(TaskMemoryError, m_taskName);
- break;
-
- case S_taskLib_ILLEGAL_PRIORITY:
- wpi_setWPIErrorWithContext(TaskPriorityError, m_taskName);
- break;
-
- default:
- printErrno(errnoGet());
- wpi_setWPIErrorWithContext(TaskError, m_taskName);
- }
- return false;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Task.h b/aos/externals/WPILib/WPILib/Task.h
deleted file mode 100644
index dbd9295..0000000
--- a/aos/externals/WPILib/WPILib/Task.h
+++ /dev/null
@@ -1,59 +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 __TASK_H__
-#define __TASK_H__
-
-#include "ErrorBase.h"
-#include <vxWorks.h>
-#include "Synchronized.h"
-
-/**
- * WPI task is a wrapper for a native VxWorks task.
- *
- * Some functions (documented) are guaranteed not to use any floating point so
- * that it is safe to use them from tasks that do not have the VX_FP_TASK flag
- * set (like during startup).
- **/
-class Task : public ErrorBase
-{
-public:
- static const uint32_t kDefaultPriority = 101;
- static const int32_t kInvalidTaskID = -1;
-
- Task(const char* name, FUNCPTR function, int32_t priority = kDefaultPriority, uint32_t stackSize = 20000);
- virtual ~Task();
-
- bool Start(uint32_t arg0 = 0, uint32_t arg1 = 0, uint32_t arg2 = 0, uint32_t arg3 = 0, uint32_t arg4 = 0,
- uint32_t arg5 = 0, uint32_t arg6 = 0, uint32_t arg7 = 0, uint32_t arg8 = 0, uint32_t arg9 = 0);
- bool Restart();
- bool Stop();
-
- bool IsReady();
- bool IsSuspended();
-
- bool Suspend();
- bool Resume();
-
- bool Verify();
-
- int32_t GetPriority();
- bool SetPriority(int32_t priority);
- const char* GetName();
- int32_t GetID();
-
-private:
- FUNCPTR m_function;
- char* m_taskName;
- int32_t m_taskID;
- uint32_t m_stackSize;
- int m_priority;
- ReentrantSemaphore m_prioritySemaphore;
- bool HandleError(STATUS results);
- DISALLOW_COPY_AND_ASSIGN(Task);
-};
-
-#endif // __TASK_H__
diff --git a/aos/externals/WPILib/WPILib/Timer.cpp b/aos/externals/WPILib/WPILib/Timer.cpp
deleted file mode 100644
index 576858e..0000000
--- a/aos/externals/WPILib/WPILib/Timer.cpp
+++ /dev/null
@@ -1,204 +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 "Timer.h"
-
-#include <sysLib.h> // for sysClkRateGet
-#include <time.h>
-#include <usrLib.h> // for taskDelay
-
-#include "Synchronized.h"
-#include "Utility.h"
-#include "Global.h"
-
-/**
- * Pause the task for a specified time.
- *
- * Pause the execution of the program for a specified period of time given in seconds.
- * Motors will continue to run at their last assigned values, and sensors will continue to
- * update. Only the task containing the wait will pause until the wait time is expired.
- *
- * @param seconds Length of time to pause, in seconds.
- */
-void Wait(double seconds)
-{
- if (seconds < 0.0) return;
- taskDelay((int32_t)((double)sysClkRateGet() * seconds));
-}
-
-/*
- * Return the FPGA system clock time in seconds.
- * This is deprecated and just forwards to Timer::GetFPGATimestamp().
- * @returns Robot running time in seconds.
- */
-double GetClock()
-{
- return Timer::GetFPGATimestamp();
-}
-
-/**
- * @brief Gives real-time clock system time with nanosecond resolution
- * @return The time, just in case you want the robot to start autonomous at 8pm on Saturday.
-*/
-double GetTime()
-{
- struct timespec tp;
-
- clock_gettime(CLOCK_REALTIME,&tp);
- double realTime = (double)tp.tv_sec + (double)((double)tp.tv_nsec*1e-9);
-
- return (realTime);
-}
-
-/**
- * Create a new timer object.
- *
- * Create a new timer object and reset the time to zero. The timer is initially not running and
- * must be started.
- */
-Timer::Timer()
- : m_startTime (0.0)
- , m_accumulatedTime (0.0)
- , m_running (false)
- , m_semaphore (0)
-{
- //Creates a semaphore to control access to critical regions.
- //Initially 'open'
- m_semaphore = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);
- Reset();
-}
-
-Timer::~Timer()
-{
- semDelete(m_semaphore);
-}
-
-/**
- * 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.
- *
- * @return unsigned Current time value for this timer in seconds
- */
-double Timer::Get()
-{
- double result;
- double currentTime = GetFPGATimestamp();
-
- Synchronized sync(m_semaphore);
- if(m_running)
- {
- // This math won't work if the timer rolled over (71 minutes after boot).
- // TODO: Check for it and compensate.
- result = (currentTime - m_startTime) + m_accumulatedTime;
- }
- else
- {
- result = m_accumulatedTime;
- }
-
- return result;
-}
-
-/**
- * Reset the timer by setting the time to 0.
- *
- * Make the timer startTime the current time so new requests will be relative to now
- */
-void Timer::Reset()
-{
- Synchronized sync(m_semaphore);
- m_accumulatedTime = 0;
- m_startTime = GetFPGATimestamp();
-}
-
-/**
- * Start the timer running.
- * Just set the running flag to true indicating that all time requests should be
- * relative to the system clock.
- */
-void Timer::Start()
-{
- Synchronized sync(m_semaphore);
- if (!m_running)
- {
- m_startTime = GetFPGATimestamp();
- m_running = true;
- }
-}
-
-/**
- * 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.
- */
-void Timer::Stop()
-{
- double temp = Get();
-
- Synchronized sync(m_semaphore);
- if (m_running)
- {
- m_accumulatedTime = temp;
- m_running = false;
- }
-}
-
-/**
- * Check if the period specified has passed and if it has, advance the start
- * time by that period. This is useful to decide if it's time to do periodic
- * work without drifting later by the time it took to get around to checking.
- *
- * @param period The period to check for (in seconds).
- * @return If the period has passed.
- */
-bool Timer::HasPeriodPassed(double period)
-{
- if (Get() > period)
- {
- Synchronized sync(m_semaphore);
- // Advance the start time by the period.
- // Don't set it to the current time... we want to avoid drift.
- m_startTime += period;
- return true;
- }
- return false;
-}
-
-/*
- * Return the FPGA system clock time in seconds.
- *
- * Return the time from the FPGA hardware clock in seconds since the FPGA
- * started.
- * Rolls over after 71 minutes.
- * @returns Robot running time in seconds.
- */
-double Timer::GetFPGATimestamp()
-{
- // FPGA returns the timestamp in microseconds
- // Call the helper GetFPGATime() in Utility.cpp
- return Global::GetInstance()->GetFPGATime() * 1.0e-6;
-}
-
-// Internal function that reads the PPC timestamp counter.
-extern "C"
-{
- uint32_t niTimestamp32(void);
- uint64_t niTimestamp64(void);
-}
-
-/*
- * Return the PowerPC timestamp since boot in seconds.
- *
- * This is lower overhead than GetFPGATimestamp() but not synchronized with other FPGA timestamps.
- * @returns Robot running time in seconds.
- */
-double Timer::GetPPCTimestamp()
-{
- // PPC system clock is 33MHz
- return niTimestamp64() / 33.0e6;
-}
diff --git a/aos/externals/WPILib/WPILib/Timer.h b/aos/externals/WPILib/WPILib/Timer.h
deleted file mode 100644
index c4cbf65..0000000
--- a/aos/externals/WPILib/WPILib/Timer.h
+++ /dev/null
@@ -1,49 +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 TIMER_H_
-#define TIMER_H_
-
-#include "semLib.h"
-#include "Base.h"
-
-typedef void (*TimerInterruptHandler)(void *param);
-
-void Wait(double seconds);
-double GetClock();
-double GetTime();
-
-
-/**
- * Timer objects measure accumulated time in seconds.
- * The timer object functions like a stopwatch. It can be started, stopped, and cleared. When the
- * timer is running its value counts up in seconds. When stopped, the timer holds the current
- * value. The implementation simply records the time when started and subtracts the current time
- * whenever the value is requested.
- */
-class Timer
-{
-public:
- Timer();
- virtual ~Timer();
- double Get();
- void Reset();
- void Start();
- void Stop();
- bool HasPeriodPassed(double period);
-
- static double GetFPGATimestamp();
- static double GetPPCTimestamp();
-
-private:
- double m_startTime;
- double m_accumulatedTime;
- bool m_running;
- SEM_ID m_semaphore;
- DISALLOW_COPY_AND_ASSIGN(Timer);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Ultrasonic.cpp b/aos/externals/WPILib/WPILib/Ultrasonic.cpp
deleted file mode 100644
index 19b773b..0000000
--- a/aos/externals/WPILib/WPILib/Ultrasonic.cpp
+++ /dev/null
@@ -1,361 +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 "Ultrasonic.h"
-
-#include "Counter.h"
-#include "DigitalInput.h"
-#include "DigitalOutput.h"
-#include "NetworkCommunication/UsageReporting.h"
-#include "Timer.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-#include "LiveWindow/LiveWindow.h"
-
-constexpr double Ultrasonic::kPingTime; ///< Time (sec) for the ping trigger pulse.
-const uint32_t Ultrasonic::kPriority; ///< Priority that the ultrasonic round robin task runs.
-constexpr double Ultrasonic::kMaxUltrasonicTime; ///< Max time (ms) between readings.
-constexpr double Ultrasonic::kSpeedOfSoundInchesPerSec;
-Task Ultrasonic::m_task("UltrasonicChecker", (FUNCPTR)UltrasonicChecker); // task doing the round-robin automatic sensing
-Ultrasonic *Ultrasonic::m_firstSensor = NULL; // head of the ultrasonic sensor list
-bool Ultrasonic::m_automaticEnabled = false; // automatic round robin mode
-SEM_ID Ultrasonic::m_semaphore = 0;
-
-/**
- * Background task that goes through the list of ultrasonic sensors and pings each one in turn. The counter
- * is configured to read the timing of the returned echo pulse.
- *
- * DANGER WILL ROBINSON, DANGER WILL ROBINSON:
- * This code runs as a task and assumes that none of the ultrasonic sensors will change while it's
- * running. If one does, then this will certainly break. Make sure to disable automatic mode before changing
- * anything with the sensors!!
- */
-void Ultrasonic::UltrasonicChecker()
-{
- Ultrasonic *u = NULL;
- while (m_automaticEnabled)
- {
- if (u == NULL) u = m_firstSensor;
- if (u == NULL) return;
- if (u->IsEnabled())
- u->m_pingChannel->Pulse(kPingTime); // do the ping
- u = u->m_nextSensor;
- Wait(0.1); // wait for ping to return
- }
-}
-
-/**
- * Initialize the Ultrasonic Sensor.
- * This is the common code that initializes the ultrasonic sensor given that there
- * are two digital I/O channels allocated. If the system was running in automatic mode (round robin)
- * when the new sensor is added, it is stopped, the sensor is added, then automatic mode is
- * restored.
- */
-void Ultrasonic::Initialize()
-{
- m_table = NULL;
- bool originalMode = m_automaticEnabled;
- if (m_semaphore == 0) m_semaphore = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
- SetAutomaticMode(false); // kill task when adding a new sensor
- semTake(m_semaphore, WAIT_FOREVER); // link this instance on the list
- {
- m_nextSensor = m_firstSensor;
- m_firstSensor = this;
- }
- semGive(m_semaphore);
-
- m_counter = new Counter(m_echoChannel); // set up counter for this sensor
- m_counter->SetMaxPeriod(1.0);
- m_counter->SetSemiPeriodMode(true);
- m_counter->Reset();
- m_counter->Start();
- m_enabled = true; // make it available for round robin scheduling
- SetAutomaticMode(originalMode);
-
- static int instances = 0;
- instances++;
- nUsageReporting::report(nUsageReporting::kResourceType_Ultrasonic, instances);
- LiveWindow::GetInstance()->AddSensor("Ultrasonic", m_echoChannel->GetModuleForRouting(), m_echoChannel->GetChannel(), this);
-}
-
-/**
- * Create an instance of the Ultrasonic Sensor using the default module.
- * This is designed to supchannel the Daventech SRF04 and Vex ultrasonic sensors. This
- * constructor assumes that both digital I/O channels are in the default digital module.
- * @param pingChannel The digital output channel that sends the pulse to initiate the sensor sending
- * the ping.
- * @param echoChannel The digital input channel that receives the echo. The length of time that the
- * echo is high represents the round trip time of the ping, and the distance.
- * @param units The units returned in either kInches or kMilliMeters
- */
-Ultrasonic::Ultrasonic(uint32_t pingChannel, uint32_t echoChannel, DistanceUnit units)
-{
- m_pingChannel = new DigitalOutput(pingChannel);
- m_echoChannel = new DigitalInput(echoChannel);
- m_allocatedChannels = true;
- m_units = units;
- Initialize();
-}
-
-/**
- * Create an instance of an Ultrasonic Sensor from a DigitalInput for the echo channel and a DigitalOutput
- * for the ping channel.
- * @param pingChannel The digital output object that starts the sensor doing a ping. Requires a 10uS pulse to start.
- * @param echoChannel The digital input object that times the return pulse to determine the range.
- * @param units The units returned in either kInches or kMilliMeters
- */
-Ultrasonic::Ultrasonic(DigitalOutput *pingChannel, DigitalInput *echoChannel, DistanceUnit units)
-{
- if (pingChannel == NULL || echoChannel == NULL)
- {
- wpi_setWPIError(NullParameter);
- return;
- }
- m_allocatedChannels = false;
- m_pingChannel = pingChannel;
- m_echoChannel = echoChannel;
- m_units = units;
- Initialize();
-}
-
-/**
- * Create an instance of an Ultrasonic Sensor from a DigitalInput for the echo channel and a DigitalOutput
- * for the ping channel.
- * @param pingChannel The digital output object that starts the sensor doing a ping. Requires a 10uS pulse to start.
- * @param echoChannel The digital input object that times the return pulse to determine the range.
- * @param units The units returned in either kInches or kMilliMeters
- */
-Ultrasonic::Ultrasonic(DigitalOutput &pingChannel, DigitalInput &echoChannel, DistanceUnit units)
-{
- m_allocatedChannels = false;
- m_pingChannel = &pingChannel;
- m_echoChannel = &echoChannel;
- m_units = units;
- Initialize();
-}
-
-/**
- * Create an instance of the Ultrasonic sensor using specified modules.
- * This is designed to supchannel the Daventech SRF04 and Vex ultrasonic sensors. This
- * constructors takes the channel and module slot for each of the required digital I/O channels.
- * @param pingModuleNumber The digital module that the pingChannel is on.
- * @param pingChannel The digital output channel that sends the pulse to initiate the sensor
- * sending the ping.
- * @param echoModuleNumber The digital module that the echoChannel is on.
- * @param echoChannel The digital input channel that receives the echo. The length of time
- * that the echo is high represents the round trip time of the ping, and the distance.
- * @param units The units returned in either kInches or kMilliMeters
- */
-Ultrasonic::Ultrasonic(uint8_t pingModuleNumber, uint32_t pingChannel,
- uint8_t echoModuleNumber, uint32_t echoChannel, DistanceUnit units)
-{
- m_pingChannel = new DigitalOutput(pingModuleNumber, pingChannel);
- m_echoChannel = new DigitalInput(echoModuleNumber, echoChannel);
- m_allocatedChannels = true;
- m_units = units;
- Initialize();
-}
-
-/**
- * Destructor for the ultrasonic sensor.
- * Delete the instance of the ultrasonic sensor by freeing the allocated digital channels.
- * If the system was in automatic mode (round robin), then it is stopped, then started again
- * after this sensor is removed (provided this wasn't the last sensor).
- */
-Ultrasonic::~Ultrasonic()
-{
- bool wasAutomaticMode = m_automaticEnabled;
- SetAutomaticMode(false);
- if (m_allocatedChannels)
- {
- delete m_pingChannel;
- delete m_echoChannel;
- }
- wpi_assert(m_firstSensor != NULL);
-
- semTake(m_semaphore, WAIT_FOREVER);
- {
- if (this == m_firstSensor)
- {
- m_firstSensor = m_nextSensor;
- if (m_firstSensor == NULL)
- {
- SetAutomaticMode(false);
- }
- }
- else
- {
- wpi_assert(m_firstSensor->m_nextSensor != NULL);
- for (Ultrasonic *s = m_firstSensor; s != NULL; s = s->m_nextSensor)
- {
- if (this == s->m_nextSensor)
- {
- s->m_nextSensor = s->m_nextSensor->m_nextSensor;
- break;
- }
- }
- }
- }
- semGive(m_semaphore);
- if (m_firstSensor != NULL && wasAutomaticMode)
- SetAutomaticMode(true);
-}
-
-/**
- * Turn Automatic mode on/off.
- * When in Automatic mode, all sensors will fire in round robin, waiting a set
- * time between each sensor.
- * @param enabling Set to true if round robin scheduling should start for all the ultrasonic sensors. This
- * scheduling method assures that the sensors are non-interfering because no two sensors fire at the same time.
- * If another scheduling algorithm is preffered, it can be implemented by pinging the sensors manually and waiting
- * for the results to come back.
- */
-void Ultrasonic::SetAutomaticMode(bool enabling)
-{
- if (enabling == m_automaticEnabled)
- return; // ignore the case of no change
-
- m_automaticEnabled = enabling;
- if (enabling)
- {
- // enabling automatic mode.
- // Clear all the counters so no data is valid
- for (Ultrasonic *u = m_firstSensor; u != NULL; u = u->m_nextSensor)
- {
- u->m_counter->Reset();
- }
- // Start round robin task
- wpi_assert(m_task.Verify() == false); // should be false since was previously disabled
- m_task.Start();
- }
- else
- {
- // disabling automatic mode. Wait for background task to stop running.
- while (m_task.Verify())
- Wait(0.15); // just a little longer than the ping time for round-robin to stop
-
- // clear all the counters (data now invalid) since automatic mode is stopped
- for (Ultrasonic *u = m_firstSensor; u != NULL; u = u->m_nextSensor)
- {
- u->m_counter->Reset();
- }
- m_task.Stop();
- }
-}
-
-/**
- * Single ping to ultrasonic sensor.
- * Send out a single ping to the ultrasonic sensor. This only works if automatic (round robin)
- * mode is disabled. A single ping is sent out, and the counter should count the semi-period
- * when it comes in. The counter is reset to make the current value invalid.
- */
-void Ultrasonic::Ping()
-{
- // TODO: Either assert or disable, not both.
- wpi_assert(!m_automaticEnabled);
- SetAutomaticMode(false); // turn off automatic round robin if pinging single sensor
- m_counter->Reset(); // reset the counter to zero (invalid data now)
- m_pingChannel->Pulse(kPingTime); // do the ping to start getting a single range
-}
-
-/**
- * Check if there is a valid range measurement.
- * The ranges are accumulated in a counter that will increment on each edge of the echo (return)
- * signal. If the count is not at least 2, then the range has not yet been measured, and is invalid.
- */
-bool Ultrasonic::IsRangeValid()
-{
- return m_counter->Get() > 1;
-}
-
-/**
- * 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.
- */
-double Ultrasonic::GetRangeInches()
-{
- if (IsRangeValid())
- return m_counter->GetPeriod() * kSpeedOfSoundInchesPerSec / 2.0;
- else
- return 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.
- */
-double Ultrasonic::GetRangeMM()
-{
- return GetRangeInches() * 25.4;
-}
-
-/**
- * Get the range in the current DistanceUnit for the PIDSource base object.
- *
- * @return The range in DistanceUnit
- */
-double Ultrasonic::PIDGet()
-{
- switch(m_units)
- {
- case Ultrasonic::kInches:
- return GetRangeInches();
- case Ultrasonic::kMilliMeters:
- return GetRangeMM();
- default:
- return 0.0;
- }
-}
-
-/**
- * Set the current DistanceUnit that should be used for the PIDSource base object.
- *
- * @param units The DistanceUnit that should be used.
- */
-void Ultrasonic::SetDistanceUnits(DistanceUnit units)
-{
- m_units = units;
-}
-
-/**
- * Get the current DistanceUnit that is used for the PIDSource base object.
- *
- * @return The type of DistanceUnit that is being used.
- */
-Ultrasonic::DistanceUnit Ultrasonic::GetDistanceUnits()
-{
- 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
deleted file mode 100644
index 3d7fba3..0000000
--- a/aos/externals/WPILib/WPILib/Ultrasonic.h
+++ /dev/null
@@ -1,90 +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 ULTRASONIC_H_
-#define ULTRASONIC_H_
-
-#include "SensorBase.h"
-#include "Task.h"
-#include "PIDSource.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-class Counter;
-class DigitalInput;
-class DigitalOutput;
-
-/**
- * Ultrasonic rangefinder class.
- * The Ultrasonic rangefinder measures absolute distance based on the round-trip time
- * of a ping generated by the controller. These sensors use two transducers, a speaker and
- * a microphone both tuned to the ultrasonic range. A common ultrasonic sensor, the Daventech SRF04
- * requires a short pulse to be generated on a digital channel. This causes the chirp to be
- * emmitted. A second line becomes high as the ping is transmitted and goes low when
- * 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, public LiveWindowSendable
-{
-public:
- typedef enum {
- kInches = 0,
- kMilliMeters = 1
- } DistanceUnit;
-
- Ultrasonic(DigitalOutput *pingChannel, DigitalInput *echoChannel, DistanceUnit units = kInches);
- Ultrasonic(DigitalOutput &pingChannel, DigitalInput &echoChannel, DistanceUnit units = kInches);
- Ultrasonic(uint32_t pingChannel, uint32_t echoChannel, DistanceUnit units = kInches);
- Ultrasonic(uint8_t pingModuleNumber, uint32_t pingChannel,
- uint8_t echoModuleNumber, uint32_t echoChannel, DistanceUnit units = kInches);
- virtual ~Ultrasonic();
-
- void Ping();
- bool IsRangeValid();
- static void SetAutomaticMode(bool enabling);
- double GetRangeInches();
- double GetRangeMM();
- bool IsEnabled() { return m_enabled; }
- void SetEnabled(bool enable) { m_enabled = enable; }
-
- double PIDGet();
- void SetDistanceUnits(DistanceUnit units);
- DistanceUnit GetDistanceUnits();
-
- void UpdateTable();
- void StartLiveWindowMode();
- void StopLiveWindowMode();
- std::string GetSmartDashboardType();
- void InitTable(ITable *subTable);
- ITable * GetTable();
-
-private:
- void Initialize();
-
- static void UltrasonicChecker();
-
- static constexpr double kPingTime = 10 * 1e-6; ///< Time (sec) for the ping trigger pulse.
- static const uint32_t kPriority = 90; ///< Priority that the ultrasonic round robin task runs.
- static constexpr double kMaxUltrasonicTime = 0.1; ///< Max time (ms) between readings.
- static constexpr double kSpeedOfSoundInchesPerSec = 1130.0 * 12.0;
-
- static Task m_task; // task doing the round-robin automatic sensing
- static Ultrasonic *m_firstSensor; // head of the ultrasonic sensor list
- static bool m_automaticEnabled; // automatic round robin mode
- static SEM_ID m_semaphore; // synchronize access to the list of sensors
-
- DigitalInput *m_echoChannel;
- DigitalOutput *m_pingChannel;
- bool m_allocatedChannels;
- bool m_enabled;
- Counter *m_counter;
- Ultrasonic *m_nextSensor;
- DistanceUnit m_units;
-
- ITable *m_table;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Utility.cpp b/aos/externals/WPILib/WPILib/Utility.cpp
deleted file mode 100644
index 2ace5da..0000000
--- a/aos/externals/WPILib/WPILib/Utility.cpp
+++ /dev/null
@@ -1,309 +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 "Utility.h"
-
-#include "NetworkCommunication/FRCComm.h"
-#include "Task.h"
-#include <dbgLib.h>
-#include <stdio.h>
-#include <taskLib.h>
-#include <sysSymTbl.h>
-#include "nivision.h"
-
-#define DBG_DEMANGLE_PRINT_LEN MAX_SYS_SYM_LEN /* Num chars of demangled names to print */
-
-extern "C"
-{
- extern char * cplusDemangle (char *source, char *dest, int32_t n);
-}
-
-void wpi_getLabel(UINT addr, char *label, int32_t *found)
-{
- int pVal;
- SYM_TYPE pType;
- char name[MAX_SYS_SYM_LEN + 1];
- static const size_t kLabelSize = DBG_DEMANGLE_PRINT_LEN + 1 + 11;
- bzero(label, kLabelSize);
-
- if (symFindByValue(sysSymTbl, addr, name, &pVal, &pType) == OK)
- {
- cplusDemangle(name, label, kLabelSize - 11);
- if ((UINT)pVal != addr)
- {
- snprintf(label + strlen(label), kLabelSize - strlen(label), "+0x%04x", addr-pVal);
- if (found) *found = 2;
- }
- else
- {
- if (found) *found = 1;
- }
- }
- else
- {
- snprintf(label, kLabelSize, "0x%04x", addr);
- if (found) *found = 0;
- }
-}
-/*
-static void wpiTracePrint(INSTR *caller, int32_t func, int32_t nargs, int32_t *args, int32_t taskId, BOOL isKernelAdrs)
-{
- char buf [MAX_SYS_SYM_LEN * 2];
- int32_t ix;
- int32_t len = 0;
- len += snprintf (&buf [len], sizeof(buf) - len, "%s <%#010x>: ", wpi_getLabel((UINT)caller), (int32_t)caller);
- len += snprintf (&buf [len], sizeof(buf) - len, "%s <%#010x> (", wpi_getLabel((UINT)func), func);
- for (ix = 0; ix < nargs; ix++)
- {
- if (ix != 0) {
- len += snprintf (&buf [len], sizeof(buf) - len, ", ");
- }
- len += snprintf (&buf [len], sizeof(buf) - len, "%#x", args [ix]);
- }
- len += snprintf (&buf [len], sizeof(buf) - len, ")\n");
-
- printf(buf);
-}
-*/
-static void wpiCleanTracePrint(INSTR *caller, int32_t func, int32_t nargs, int32_t *args, int32_t taskId, BOOL isKernelAdrs)
-{
- char buf [MAX_SYS_SYM_LEN];
- int32_t ix;
- int32_t len = 0;
- int32_t nameFound = 0;
- int32_t params = 0;
- int32_t totalnargs = nargs;
- char funcName[DBG_DEMANGLE_PRINT_LEN + 1 + 11];
- wpi_getLabel((UINT)func, funcName, &nameFound);
- // Ignore names that are not exact symbol address matches.
- if (nameFound != 1) return;
-
- // Ignore internal function name matches.
- if (strncmp(funcName, "wpi_assert", 10) == 0) return;
- if (strncmp(funcName, "wpi_fatal", 9) == 0) return;
- if (strncmp(funcName, "wpi_selfTrace", 13) == 0) return;
- if (strncmp(funcName, "Error::Set", 10) == 0) return;
- if (strncmp(funcName, "ErrorBase::SetError", 19) == 0) return;
- if (strncmp(funcName, "Error::Report", 13) == 0) return;
-
- // Find the number of arguments in the name string.
- char *start = strchr(funcName, '(');
- char *end = strrchr(funcName, ')');
- if (start + 1 != end && start != NULL)
- {
- do
- {
- params++;
- if(strncmp(start+1, "bool", 4) == 0 || strncmp(start+2, "bool", 4) == 0)
- {
- totalnargs++;
- }
- start = strchr(start + 1, ',');
- }
- while(start < end && start != NULL);
- }
- char *funcNameEnd = strchr(funcName, '(');
- *funcNameEnd = 0;
- len += snprintf (buf + len, sizeof(buf) - len, funcName);
-
- // If this is a member function, print out the this pointer value.
- if (totalnargs - params == 1)
- {
- len += snprintf (&buf [len], sizeof(buf) - len, "<this=%#lx>", args [0]);
- }
-
- // Print out the argument values.
- len += snprintf (buf + len, sizeof(buf) - len, "(");
- for (ix = totalnargs - params; ix < nargs; ix++)
- {
- if (ix != totalnargs - params) {
- len += snprintf (&buf [len], sizeof(buf) - len, ", ");
- }
- len += snprintf (&buf [len], sizeof(buf) - len, "%#lx", args [ix]);
- }
- len += snprintf (buf + len, sizeof(buf) - len, ")\n");
-
- printf(buf);
-}
-
-extern "C"
-{
- extern void trcStack(REG_SET* pRegs, FUNCPTR printRtn, int32_t tid);
-}
-
-static int32_t wpiStackTask(int32_t taskId)
-{
- // Make sure it's suspended in spite of any scheduler weirdness or whatever.
- while (!taskIsSuspended(taskId)) {
- taskDelay(1);
- }
-
- //tt(taskId);
-
- REG_SET regs;
- taskRegsGet(taskId, ®s);
- trcStack(®s, (FUNCPTR) wpiCleanTracePrint, taskId);
- printf("\n");
-
- // The task should be resumed because it had to be suspended to get the stack trace.
- taskResume(taskId);
- return 0;
-}
-
-void wpi_selfTrace()
-{
- int priority=100;
- taskPriorityGet(0, &priority);
- // Lower priority than the calling task.
- Task traceTask("StackTrace", (FUNCPTR)wpiStackTask, priority + 1);
- traceTask.Start(taskIdSelf());
-
- // Task to be traced must be suspended for the stack trace to work.
- taskSuspend(0);
-}
-
-static bool stackTraceEnabled = false;
-static bool suspendOnAssertEnabled = false;
-
-/**
- * Enable Stack trace after asserts.
- */
-void wpi_stackTraceOnAssertEnable(bool enabled)
-{
- stackTraceEnabled = enabled;
-}
-
-/**
- * Enable suspend on asssert.
- * If enabled, the user task will be suspended whenever an assert fails. This
- * will allow the user to attach to the task with the debugger and examine variables
- * around the failure.
- */
-void wpi_suspendOnAssertEnabled(bool enabled)
-{
- suspendOnAssertEnabled = enabled;
-}
-
-static void wpi_handleTracing()
-{
- if (stackTraceEnabled)
- {
- printf("\n-----------<Stack Trace>----------------\n");
- wpi_selfTrace();
- }
- printf("\n");
-}
-
-/**
- * Assert implementation.
- * This allows breakpoints to be set on an assert.
- * The users don't call this, but instead use the wpi_assert macros in Utility.h.
- */
-bool wpi_assert_impl(bool conditionValue,
- const char *conditionText,
- const char *message,
- const char *fileName,
- uint32_t lineNumber,
- const char *funcName)
-{
- if (!conditionValue)
- {
- // Error string buffer
- char error[256];
-
- // If an error message was specified, include it
- // Build error string
- if(message != NULL) {
- snprintf(error, sizeof(error), "Assertion failed: \"%s\", \"%s\" failed in %s() in %s at line %ld\n",
- message, conditionText, funcName, fileName, lineNumber);
- } else {
- snprintf(error, sizeof(error), "Assertion failed: \"%s\" in %s() in %s at line %ld\n",
- conditionText, funcName, fileName, lineNumber);
- }
-
- // Print to console and send to remote dashboard
- printf("\n\n>>>>%s", error);
- setErrorData(error, strlen(error), 100);
-
- wpi_handleTracing();
- if (suspendOnAssertEnabled) taskSuspend(0);
- }
- return conditionValue;
-}
-
-/**
- * Common error routines for wpi_assertEqual_impl and wpi_assertNotEqual_impl
- * This should not be called directly; it should only be used by wpi_assertEqual_impl
- * and wpi_assertNotEqual_impl.
- */
-void wpi_assertEqual_common_impl(int valueA,
- int valueB,
- const char *equalityType,
- const char *message,
- const char *fileName,
- uint32_t lineNumber,
- const char *funcName)
-{
- // Error string buffer
- char error[256];
-
- // If an error message was specified, include it
- // Build error string
- if(message != NULL) {
- snprintf(error, sizeof(error), "Assertion failed: \"%s\", \"%d\" %s \"%d\" in %s() in %s at line %ld\n",
- message, valueA, equalityType, valueB, funcName, fileName, lineNumber);
- } else {
- snprintf(error, sizeof(error), "Assertion failed: \"%d\" %s \"%d\" in %s() in %s at line %ld\n",
- valueA, equalityType, valueB, funcName, fileName, lineNumber);
- }
-
- // Print to console and send to remote dashboard
- printf("\n\n>>>>%s", error);
- setErrorData(error, strlen(error), 100);
-
- wpi_handleTracing();
- if (suspendOnAssertEnabled) taskSuspend(0);
-}
-
-/**
- * Assert equal implementation.
- * This determines whether the two given integers are equal. If not,
- * the value of each is printed along with an optional message string.
- * The users don't call this, but instead use the wpi_assertEqual macros in Utility.h.
- */
-bool wpi_assertEqual_impl(int valueA,
- int valueB,
- const char *message,
- const char *fileName,
- uint32_t lineNumber,
- const char *funcName)
-{
- if(!(valueA == valueB))
- {
- wpi_assertEqual_common_impl(valueA, valueB, "!=", message, fileName, lineNumber, funcName);
- }
- return valueA == valueB;
-}
-
-/**
- * Assert not equal implementation.
- * This determines whether the two given integers are equal. If so,
- * the value of each is printed along with an optional message string.
- * The users don't call this, but instead use the wpi_assertNotEqual macros in Utility.h.
- */
-bool wpi_assertNotEqual_impl(int valueA,
- int valueB,
- const char *message,
- const char *fileName,
- uint32_t lineNumber,
- const char *funcName)
-{
- if(!(valueA != valueB))
- {
- wpi_assertEqual_common_impl(valueA, valueB, "==", message, fileName, lineNumber, funcName);
- }
- return valueA != valueB;
-}
diff --git a/aos/externals/WPILib/WPILib/Utility.h b/aos/externals/WPILib/WPILib/Utility.h
deleted file mode 100644
index bb6d0d0..0000000
--- a/aos/externals/WPILib/WPILib/Utility.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 UTILITY_H_
-#define UTILITY_H_
-
-#include <taskLib.h>
-
-#define wpi_assert(condition) wpi_assert_impl(condition, #condition, NULL, __FILE__, __LINE__, __FUNCTION__)
-#define wpi_assertWithMessage(condition, message) wpi_assert_impl(condition, #condition, message, __FILE__, __LINE__, __FUNCTION__)
-
-#define wpi_assertEqual(a, b) wpi_assertEqual_impl(a, b, NULL, __FILE__, __LINE__, __FUNCTION__)
-#define wpi_assertEqualWithMessage(a, b, message) wpi_assertEqual_impl(a, b, message, __FILE__, __LINE__, __FUNCTION__)
-
-#define wpi_assertNotEqual(a, b) wpi_assertNotEqual_impl(a, b, NULL, __FILE__, __LINE__, __FUNCTION__)
-#define wpi_assertNotEqualWithMessage(a, b, message) wpi_assertNotEqual_impl(a, b, message, __FILE__, __LINE__, __FUNCTION__)
-
-bool wpi_assert_impl(bool conditionValue, const char *conditionText, const char *message, const char *fileName, uint32_t lineNumber, const char *funcName);
-bool wpi_assertEqual_impl(int valueA, int valueB, const char *message, const char *fileName,uint32_t lineNumber, const char *funcName);
-bool wpi_assertNotEqual_impl(int valueA, int valueB, const char *message, const char *fileName,uint32_t lineNumber, const char *funcName);
-
-// Will use up to (DBG_DEMANGLE_PRINT_LEN + 1 + 11) of label.
-void wpi_getLabel(UINT addr, char *label, int32_t *found = NULL);
-void wpi_selfTrace();
-void wpi_suspendOnAssertEnabled(bool enabled);
-void wpi_stackTraceOnAssertEnable(bool enabled);
-
-#endif // UTILITY_H_
diff --git a/aos/externals/WPILib/WPILib/Victor.cpp b/aos/externals/WPILib/WPILib/Victor.cpp
deleted file mode 100644
index c8a0565..0000000
--- a/aos/externals/WPILib/WPILib/Victor.cpp
+++ /dev/null
@@ -1,104 +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 "Victor.h"
-
-#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 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() {
- SetBounds(2.027, 1.525, 1.507, 1.49, 1.026);
-
- SetPeriodMultiplier(kPeriodMultiplier_2X);
- SetRaw(m_centerPwm);
-
- LiveWindow::GetInstance()->AddActuator("Victor", GetModuleNumber(), GetChannel(), this);
- nUsageReporting::report(nUsageReporting::kResourceType_Victor, GetChannel(), GetModuleNumber() - 1);
-}
-
-/**
- * Constructor that assumes the default digital module.
- *
- * @param channel The PWM channel on the digital module that the Victor is attached to.
- */
-Victor::Victor(uint32_t channel) : SafePWM(channel)
-{
- InitVictor();
-}
-
-/**
- * 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 Victor is attached to (1..10).
- */
-Victor::Victor(uint8_t moduleNumber, uint32_t channel) : SafePWM(moduleNumber, channel)
-{
- InitVictor();
-}
-
-Victor::~Victor()
-{
-}
-
-/**
- * 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 Victor::Set(float speed, uint8_t 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 Victor::Get()
-{
- return GetSpeed();
-}
-
-/**
- * Common interface for disabling a motor.
- */
-void Victor::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 Victor::PIDWrite(float output)
-{
- Set(output);
-}
-
diff --git a/aos/externals/WPILib/WPILib/Victor.h b/aos/externals/WPILib/WPILib/Victor.h
deleted file mode 100644
index e140db3..0000000
--- a/aos/externals/WPILib/WPILib/Victor.h
+++ /dev/null
@@ -1,34 +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 VICTOR_H
-#define VICTOR_H
-
-#include "SafePWM.h"
-#include "SpeedController.h"
-#include "PIDOutput.h"
-
-/**
- * IFI Victor Speed Controller
- */
-class Victor : public SafePWM, public SpeedController
-{
-public:
- explicit Victor(uint32_t channel);
- Victor(uint8_t moduleNumber, uint32_t channel);
- virtual ~Victor();
- virtual void Set(float value, uint8_t syncGroup=0);
- virtual float Get();
- virtual void Disable();
-
- virtual void PIDWrite(float output);
-
-private:
- void InitVictor();
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision/AxisCamera.cpp b/aos/externals/WPILib/WPILib/Vision/AxisCamera.cpp
deleted file mode 100644
index ef8a57d..0000000
--- a/aos/externals/WPILib/WPILib/Vision/AxisCamera.cpp
+++ /dev/null
@@ -1,502 +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 "Vision/AxisCamera.h"
-
-#include <string.h>
-#include "NetworkCommunication/UsageReporting.h"
-#include "Synchronized.h"
-#include "Vision/PCVideoServer.h"
-#include "WPIErrors.h"
-
-/** Private NI function to decode JPEG */
-IMAQ_FUNC int Priv_ReadJPEGString_C(Image* _image, const unsigned char* _string, uint32_t _stringLength);
-
-// Max packet without jumbo frames is 1500... add 36 because??
-#define kMaxPacketSize 1536
-#define kImageBufferAllocationIncrement 1000
-
-AxisCamera *AxisCamera::_instance = NULL;
-
-/**
- * AxisCamera constructor
- */
-AxisCamera::AxisCamera(const char *ipAddress)
- : AxisCameraParams(ipAddress)
- , m_cameraSocket(ERROR)
- , m_protectedImageBuffer(NULL)
- , m_protectedImageBufferLength(0)
- , m_protectedImageSize(0)
- , m_protectedImageSem(NULL)
- , m_freshImage(false)
- , m_imageStreamTask("cameraTask", (FUNCPTR)s_ImageStreamTaskFunction)
- , m_videoServer(NULL)
-{
- m_protectedImageSem = semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE | SEM_DELETE_SAFE);
-
-#if JAVA_CAMERA_LIB != 1
- nUsageReporting::report(nUsageReporting::kResourceType_AxisCamera, ipAddress == NULL ? 1 : 2);
-#endif
-
- if (!StatusIsFatal())
- m_imageStreamTask.Start((int)this);
-}
-
-/**
- * Destructor
- */
-AxisCamera::~AxisCamera()
-{
- delete m_videoServer;
- m_videoServer = NULL;
-
- m_imageStreamTask.Stop();
- close(m_cameraSocket);
-
- SemSet_t::iterator it = m_newImageSemSet.begin();
- SemSet_t::iterator end = m_newImageSemSet.end();
- for (;it != end; it++)
- {
- semDelete(*it);
- }
- m_newImageSemSet.clear();
-
- semDelete(m_protectedImageSem);
-}
-
-/**
- * Get a pointer to the AxisCamera object, if the object does not exist, create it
- * To use the camera on port 2 of a cRIO-FRC, pass "192.168.0.90" to the first GetInstance call.
- * @return reference to AxisCamera object
- */
-AxisCamera &AxisCamera::GetInstance(const char *cameraIP)
-{
- if (NULL == _instance)
- {
- _instance = new AxisCamera(cameraIP);
-
- _instance->m_videoServer = new PCVideoServer();
- }
-
- return *_instance;
-}
-
-/**
- * Called by Java to delete the camera... how thoughtful
- */
-void AxisCamera::DeleteInstance()
-{
- delete _instance;
- _instance = NULL;
-}
-
-/**
- * Return true if the latest image from the camera has not been retrieved by calling GetImage() yet.
- * @return true if the image has not been retrieved yet.
- */
-bool AxisCamera::IsFreshImage()
-{
- return m_freshImage;
-}
-
-/**
- * Get the semaphore to be used to synchronize image access with camera acquisition
- *
- * Call semTake on the returned semaphore to block until a new image is acquired.
- *
- * The semaphore is owned by the AxisCamera class and will be deleted when the class is destroyed.
- * @return A semaphore to notify when new image is received
- */
-SEM_ID AxisCamera::GetNewImageSem()
-{
- SEM_ID sem = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
- m_newImageSemSet.insert(sem);
- return sem;
-}
-
-/**
- * Get an image from the camera and store it in the provided image.
- * @param image The imaq image to store the result in. This must be an HSL or RGB image
- * This function is called by Java.
- * @return 1 upon success, zero on a failure
- */
-int AxisCamera::GetImage(Image* imaqImage)
-{
- if (m_protectedImageBuffer == NULL)
- return 0;
- Synchronized sync(m_protectedImageSem);
- Priv_ReadJPEGString_C(imaqImage,
- (unsigned char*)m_protectedImageBuffer, m_protectedImageSize);
- m_freshImage = false;
- return 1;
-}
-
-#if JAVA_CAMERA_LIB != 1
-/**
- * Get an image from the camera and store it in the provided image.
- * @param image The image to store the result in. This must be an HSL or RGB image
- * @return 1 upon success, zero on a failure
- */
-int AxisCamera::GetImage(ColorImage* image)
-{
- return GetImage(image->GetImaqImage());
-}
-
-/**
- * Instantiate a new image object and fill it with the latest image from the camera.
- *
- * The returned pointer is owned by the caller and is their responsibility to delete.
- * @return a pointer to an HSLImage object
- */
-HSLImage* AxisCamera::GetImage()
-{
- HSLImage *image = new HSLImage();
- GetImage(image);
- return image;
-}
-#endif
-
-/**
- * Copy an image into an existing buffer.
- * This copies an image into an existing buffer rather than creating a new image
- * in memory. That way a new image is only allocated when the image being copied is
- * larger than the destination.
- * This method is called by the PCVideoServer class.
- * @param imageData The destination image.
- * @param numBytes The size of the destination image.
- * @return 0 if failed (no source image or no memory), 1 if success.
- */
-int AxisCamera::CopyJPEG(char **destImage, int &destImageSize, int &destImageBufferSize)
-{
- Synchronized sync(m_protectedImageSem);
- if (destImage == NULL)
- wpi_setWPIErrorWithContext(NullParameter, "destImage must not be NULL");
-
- if (m_protectedImageBuffer == NULL || m_protectedImageSize <= 0)
- return 0; // if no source image
-
- if (destImageBufferSize < m_protectedImageSize) // if current destination buffer too small
- {
- if (*destImage != NULL) delete [] *destImage;
- destImageBufferSize = m_protectedImageSize + kImageBufferAllocationIncrement;
- *destImage = new char[destImageBufferSize];
- if (*destImage == NULL) return 0;
- }
- // copy this image into destination buffer
- if (*destImage == NULL)
- {
- wpi_setWPIErrorWithContext(NullParameter, "*destImage must not be NULL");
- }
- // TODO: Is this copy realy necessary... perhaps we can simply transmit while holding the protected buffer
- memcpy(*destImage, m_protectedImageBuffer, m_protectedImageSize);
- destImageSize = m_protectedImageSize;
- return 1;
-}
-
-/**
- * Static interface that will cause an instantiation if necessary.
- * This static stub is directly spawned as a task to read images from the camera.
- */
-int AxisCamera::s_ImageStreamTaskFunction(AxisCamera *thisPtr)
-{
- return thisPtr->ImageStreamTaskFunction();
-}
-
-/**
- * Task spawned by AxisCamera constructor to receive images from cam
- * If setNewImageSem has been called, this function does a semGive on each new image
- * Images can be accessed by calling getImage()
- */
-int AxisCamera::ImageStreamTaskFunction()
-{
- // Loop on trying to setup the camera connection. This happens in a background
- // thread so it shouldn't effect the operation of user programs.
- while (1)
- {
- const char *requestString = "GET /mjpg/video.mjpg HTTP/1.1\n\
-User-Agent: HTTPStreamClient\n\
-Connection: Keep-Alive\n\
-Cache-Control: no-cache\n\
-Authorization: Basic RlJDOkZSQw==\n\n";
- semTake(m_socketPossessionSem, WAIT_FOREVER);
- m_cameraSocket = CreateCameraSocket(requestString);
- if (m_cameraSocket == ERROR)
- {
- // Don't hammer the camera if it isn't ready.
- semGive(m_socketPossessionSem);
- taskDelay(1000);
- }
- else
- {
- ReadImagesFromCamera();
- }
- }
- return 0;
-}
-
-/**
- * This function actually reads the images from the camera.
- */
-int AxisCamera::ReadImagesFromCamera()
-{
- char *imgBuffer = NULL;
- int imgBufferLength = 0;
- //Infinite loop, task deletion handled by taskDeleteHook
- // Socket cleanup handled by destructor
-
- // TODO: these recv calls must be non-blocking. Otherwise if the camera
- // fails during a read, the code hangs and never retries when the camera comes
- // back up.
-
- int counter = 2;
- while (1)
- {
- char initialReadBuffer[kMaxPacketSize] = "";
- char intermediateBuffer[1];
- char *trailingPtr = initialReadBuffer;
- int trailingCounter = 0;
- while (counter)
- {
- // TODO: fix me... this cannot be the most efficient way to approach this, reading one byte at a time.
- if(recv(m_cameraSocket, intermediateBuffer, 1, 0) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to read image header");
- close (m_cameraSocket);
- return ERROR;
- }
- strncat(initialReadBuffer, intermediateBuffer, 1);
- // trailingCounter ensures that we start looking for the 4 byte string after
- // there is at least 4 bytes total. Kind of obscure.
- // look for 2 blank lines (\r\n)
- if (NULL != strstr(trailingPtr, "\r\n\r\n"))
- {
- --counter;
- }
- if (++trailingCounter >= 4)
- {
- trailingPtr++;
- }
- }
- counter = 1;
- char *contentLength = strstr(initialReadBuffer, "Content-Length: ");
- if (contentLength == NULL)
- {
- wpi_setWPIErrorWithContext(IncompatibleMode, "No content-length token found in packet");
- close(m_cameraSocket);
- return ERROR;
- }
- contentLength = contentLength + 16; // skip past "content length"
- int readLength = atol(contentLength); // get the image byte count
-
- // Make sure buffer is large enough
- if (imgBufferLength < readLength)
- {
- if (imgBuffer) delete[] imgBuffer;
- imgBufferLength = readLength + kImageBufferAllocationIncrement;
- imgBuffer = new char[imgBufferLength];
- if (imgBuffer == NULL)
- {
- imgBufferLength = 0;
- continue;
- }
- }
-
- // Read the image data for "Content-Length" bytes
- int bytesRead = 0;
- int remaining = readLength;
- while(bytesRead < readLength)
- {
- int bytesThisRecv = recv(m_cameraSocket, &imgBuffer[bytesRead], remaining, 0);
- bytesRead += bytesThisRecv;
- remaining -= bytesThisRecv;
- }
- // Update image
- UpdatePublicImageFromCamera(imgBuffer, readLength);
- if (semTake(m_paramChangedSem, NO_WAIT) == OK)
- {
- // params need to be updated: close the video stream; release the camera.
- close(m_cameraSocket);
- semGive(m_socketPossessionSem);
- return 0;
- }
- }
-}
-
-/**
- * Copy the image from private buffer to shared buffer.
- * @param imgBuffer The buffer containing the image
- * @param bufLength The length of the image
- */
-void AxisCamera::UpdatePublicImageFromCamera(char *imgBuffer, int imgSize)
-{
- {
- Synchronized sync(m_protectedImageSem);
-
- // Adjust the buffer size if current destination buffer is too small.
- if (m_protectedImageBufferLength < imgSize)
- {
- if (m_protectedImageBuffer != NULL) delete [] m_protectedImageBuffer;
- m_protectedImageBufferLength = imgSize + kImageBufferAllocationIncrement;
- m_protectedImageBuffer = new char[m_protectedImageBufferLength];
- if (m_protectedImageBuffer == NULL)
- {
- m_protectedImageBufferLength = 0;
- return;
- }
- }
-
- memcpy(m_protectedImageBuffer, imgBuffer, imgSize);
- m_protectedImageSize = imgSize;
- }
-
- m_freshImage = true;
- // Notify everyone who is interested.
- SemSet_t::iterator it = m_newImageSemSet.begin();
- SemSet_t::iterator end = m_newImageSemSet.end();
- for (;it != end; it++)
- {
- semGive(*it);
- }
-}
-
-/**
- * Implement the pure virtual interface so that when parameter changes require a restart, the image task can be bounced.
- */
-void AxisCamera::RestartCameraTask()
-{
- m_imageStreamTask.Stop();
- m_imageStreamTask.Start((int)this);
-}
-
-#if JAVA_CAMERA_LIB == 1
-
-// C bindings used by Java
-// These need to stay as is or Java has to change
-
-void AxisCameraStart(const char *IPAddress)
-{
-#ifdef SVN_REV
- if (strlen(SVN_REV))
- {
- printf("JavaCameraLib was compiled from SVN revision %s\n", SVN_REV);
- }
- else
- {
- printf("JavaCameraLib was compiled from a location that is not source controlled.\n");
- }
-#else
- printf("JavaCameraLib was compiled without -D'SVN_REV=nnnn'\n");
-#endif
- AxisCamera::GetInstance(IPAddress);
-}
-
-int AxisCameraGetImage (Image* image)
-{
- return AxisCamera::GetInstance().GetImage(image);
-}
-
-void AxisCameraWriteBrightness(int brightness)
-{
- AxisCamera::GetInstance().WriteBrightness(brightness);
-}
-
-int AxisCameraGetBrightness()
-{
- return AxisCamera::GetInstance().GetBrightness();
-}
-
-void AxisCameraWriteWhiteBalance(AxisCameraParams::WhiteBalance_t whiteBalance)
-{
- AxisCamera::GetInstance().WriteWhiteBalance(whiteBalance);
-}
-
-AxisCameraParams::WhiteBalance_t AxisCameraGetWhiteBalance()
-{
- return AxisCamera::GetInstance().GetWhiteBalance();
-}
-
-void AxisCameraWriteColorLevel(int colorLevel)
-{
- AxisCamera::GetInstance().WriteColorLevel(colorLevel);
-}
-
-int AxisCameraGetColorLevel()
-{
- return AxisCamera::GetInstance().GetColorLevel();
-}
-
-void AxisCameraWriteExposureControl(AxisCameraParams::Exposure_t exposure)
-{
- AxisCamera::GetInstance().WriteExposureControl(exposure);
-}
-
-AxisCameraParams::Exposure_t AxisCameraGetExposureControl()
-{
- return AxisCamera::GetInstance().GetExposureControl();
-}
-
-void AxisCameraWriteExposurePriority(int exposure)
-{
- AxisCamera::GetInstance().WriteExposurePriority(exposure);
-}
-
-int AxisCameraGetExposurePriority()
-{
- return AxisCamera::GetInstance().GetExposurePriority();
-}
-
-void AxisCameraWriteMaxFPS(int maxFPS)
-{
- AxisCamera::GetInstance().WriteMaxFPS(maxFPS);
-}
-
-int AxisCameraGetMaxFPS()
-{
- return AxisCamera::GetInstance().GetMaxFPS();
-}
-
-void AxisCameraWriteResolution(AxisCameraParams::Resolution_t resolution)
-{
- AxisCamera::GetInstance().WriteResolution(resolution);
-}
-
-AxisCameraParams::Resolution_t AxisCameraGetResolution()
-{
- return AxisCamera::GetInstance().GetResolution();
-}
-
-void AxisCameraWriteCompression(int compression)
-{
- AxisCamera::GetInstance().WriteCompression(compression);
-}
-
-int AxisCameraGetCompression()
-{
- return AxisCamera::GetInstance().GetCompression();
-}
-
-void AxisCameraWriteRotation(AxisCameraParams::Rotation_t rotation)
-{
- AxisCamera::GetInstance().WriteRotation(rotation);
-}
-
-AxisCameraParams::Rotation_t AxisCameraGetRotation()
-{
- return AxisCamera::GetInstance().GetRotation();
-}
-
-void AxisCameraDeleteInstance()
-{
- AxisCamera::DeleteInstance();
-}
-
-int AxisCameraFreshImage()
-{
- return AxisCamera::GetInstance().IsFreshImage();
-}
-
-#endif // JAVA_CAMERA_LIB == 1
-
diff --git a/aos/externals/WPILib/WPILib/Vision/AxisCamera.h b/aos/externals/WPILib/WPILib/Vision/AxisCamera.h
deleted file mode 100644
index 0d96333..0000000
--- a/aos/externals/WPILib/WPILib/Vision/AxisCamera.h
+++ /dev/null
@@ -1,114 +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 __AXIS_CAMERA_H__
-#define __AXIS_CAMERA_H__
-
-#include <taskLib.h>
-#include <vxWorks.h>
-#include <sockLib.h>
-#include <inetLib.h>
-
-#include "Vision/AxisCameraParams.h"
-#if JAVA_CAMERA_LIB != 1
-#include "Vision/ColorImage.h"
-#include "Vision/HSLImage.h"
-#endif
-#include "nivision.h"
-#include <set>
-#include "Task.h"
-
-class PCVideoServer;
-
-/**
- * AxisCamera class.
- * This class handles everything about the Axis 206 FRC Camera.
- * It starts up 2 tasks each using a different connection to the camera:
- * - image reading task that reads images repeatedly from the camera
- * - parameter handler task in the base class that monitors for changes to
- * parameters and updates the camera
- */
-class AxisCamera : public AxisCameraParams
-{
-private:
- explicit AxisCamera(const char *cameraIP);
-public:
- virtual ~AxisCamera();
- static AxisCamera& GetInstance(const char *cameraIP = NULL);
- static void DeleteInstance();
-
- bool IsFreshImage();
- SEM_ID GetNewImageSem();
-
- int GetImage(Image *imaqImage);
-#if JAVA_CAMERA_LIB != 1
- int GetImage(ColorImage *image);
- HSLImage *GetImage();
-#endif
-
- int CopyJPEG(char **destImage, int &destImageSize, int &destImageBufferSize);
-
-private:
- static int s_ImageStreamTaskFunction(AxisCamera *thisPtr);
- int ImageStreamTaskFunction();
-
- int ReadImagesFromCamera();
- void UpdatePublicImageFromCamera(char *imgBuffer, int imgSize);
-
- virtual void RestartCameraTask();
-
- static AxisCamera *_instance;
- int m_cameraSocket;
- typedef std::set<SEM_ID> SemSet_t;
- SemSet_t m_newImageSemSet;
-
- char* m_protectedImageBuffer;
- int m_protectedImageBufferLength;
- int m_protectedImageSize;
- SEM_ID m_protectedImageSem;
- bool m_freshImage;
-
- Task m_imageStreamTask;
-
- PCVideoServer *m_videoServer;
-};
-
-#if JAVA_CAMERA_LIB == 1
-#ifdef __cplusplus
-extern "C" {
-#endif
- void AxisCameraStart(const char *IPAddress);
- int AxisCameraGetImage(Image *image);
- void AxisCameraDeleteInstance();
- int AxisCameraFreshImage();
-
- // Mid-stream gets & writes
- void AxisCameraWriteBrightness(int brightness);
- int AxisCameraGetBrightness();
- void AxisCameraWriteWhiteBalance(AxisCameraParams::WhiteBalance_t whiteBalance);
- AxisCameraParams::WhiteBalance_t AxisCameraGetWhiteBalance();
- void AxisCameraWriteColorLevel(int colorLevel);
- int AxisCameraGetColorLevel();
- void AxisCameraWriteExposureControl(AxisCameraParams::Exposure_t exposure);
- AxisCameraParams::Exposure_t AxisCameraGetExposureControl();
- void AxisCameraWriteExposurePriority(int exposurePriority);
- int AxisCameraGetExposurePriority();
- void AxisCameraWriteMaxFPS(int maxFPS);
- int AxisCameraGetMaxFPS();
-
- // New-Stream gets & writes
- void AxisCameraWriteResolution(AxisCameraParams::Resolution_t resolution);
- AxisCameraParams::Resolution_t AxisCameraGetResolution();
- void AxisCameraWriteCompression(int compression);
- int AxisCameraGetCompression();
- void AxisCameraWriteRotation(AxisCameraParams::Rotation_t rotation);
- AxisCameraParams::Rotation_t AxisCameraGetRotation();
-#ifdef __cplusplus
-}
-#endif
-#endif // JAVA_CAMERA_LIB == 1
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.cpp b/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.cpp
deleted file mode 100644
index 5cc2f8d..0000000
--- a/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.cpp
+++ /dev/null
@@ -1,469 +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 "Vision/AxisCameraParams.h"
-
-#include "Vision/AxisCamera.h"
-#include <inetLib.h>
-#include "pcre.h"
-#include <sockLib.h>
-#include <string.h>
-#include "Synchronized.h"
-#include "Timer.h"
-#include "Utility.h"
-#include "WPIErrors.h"
-
-#if JAVA_CAMERA_LIB != 1
-#include "DriverStation.h"
-#endif
-
-static const char *const kRotationChoices[] = {"0", "180"};
-static const char *const kResolutionChoices[] = {"640x480", "640x360", "320x240", "160x120"};
-static const char *const kExposureControlChoices[] = { "automatic", "hold", "flickerfree50", "flickerfree60" };
-static const char *const kWhiteBalanceChoices[] = { "auto", "holdwb", "fixed_outdoor1",
- "fixed_outdoor2", "fixed_indoor", "fixed_fluor1", "fixed_fluor2" };
-
-/**
- * AxisCamera constructor
- */
-AxisCameraParams::AxisCameraParams(const char* ipAddress)
- : m_paramTask("paramTask", (FUNCPTR) s_ParamTaskFunction)
- , m_paramChangedSem (NULL)
- , m_socketPossessionSem (NULL)
- , m_brightnessParam (NULL)
- , m_compressionParam (NULL)
- , m_exposurePriorityParam (NULL)
- , m_colorLevelParam (NULL)
- , m_maxFPSParam (NULL)
- , m_rotationParam (NULL)
- , m_resolutionParam (NULL)
- , m_exposureControlParam (NULL)
- , m_whiteBalanceParam (NULL)
-{
- if (ipAddress == NULL || strlen(ipAddress) == 0)
- {
-#if JAVA_CAMERA_LIB == 1
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "IP Address must be specified");
- return;
-#else
- DriverStation *ds = DriverStation::GetInstance();
- ds->WaitForData();
- uint16_t teamNumber = ds->GetTeamNumber();
- char cameraIP[16];
- snprintf(cameraIP, 16, "10.%d.%d.11", teamNumber / 100, teamNumber % 100);
- m_ipAddress = inet_addr(cameraIP);
-#endif
- }
- else
- {
- m_ipAddress = inet_addr((char*)ipAddress);
- }
-
- if (m_ipAddress == (u_long)ERROR)
- {
- wpi_setErrnoError();
- return;
- }
-
- m_brightnessParam = new IntCameraParameter("ImageSource.I0.Sensor.Brightness=%i",
- "root.ImageSource.I0.Sensor.Brightness=(.*)", false);
- m_parameters.push_back(m_brightnessParam);
- m_colorLevelParam = new IntCameraParameter("ImageSource.I0.Sensor.ColorLevel=%i",
- "root.ImageSource.I0.Sensor.ColorLevel=(.*)", false);
- m_parameters.push_back(m_colorLevelParam);
- m_exposurePriorityParam = new IntCameraParameter("ImageSource.I0.Sensor.exposurePriority=%i",
- "root.ImageSource.I0.Sensor.ExposurePriority=(.*)", false);
- m_parameters.push_back(m_exposurePriorityParam);
- m_compressionParam = new IntCameraParameter("Image.I0.Appearance.Compression=%i",
- "root.Image.I0.Appearance.Compression=(.*)", true);
- m_parameters.push_back(m_compressionParam);
- m_maxFPSParam = new IntCameraParameter("Image.I0.Stream.FPS=%i",
- "root.Image.I0.Stream.FPS=(.*)", false);
- m_parameters.push_back(m_maxFPSParam);
- m_rotationParam = new EnumCameraParameter("Image.I0.Appearance.Rotation=%s",
- "root.Image.I0.Appearance.Rotation=(.*)", true, kRotationChoices, sizeof(kRotationChoices)/sizeof(kRotationChoices[0]));
- m_parameters.push_back(m_rotationParam);
- m_resolutionParam = new EnumCameraParameter("Image.I0.Appearance.Resolution=%s",
- "root.Image.I0.Appearance.Resolution=(.*)", true, kResolutionChoices, sizeof(kResolutionChoices)/sizeof(kResolutionChoices[0]));
- m_parameters.push_back(m_resolutionParam);
- m_exposureControlParam = new EnumCameraParameter("ImageSource.I0.Sensor.Exposure=%s",
- "root.ImageSource.I0.Sensor.Exposure=(.*)", false, kExposureControlChoices, sizeof(kExposureControlChoices)/sizeof(kExposureControlChoices[0]));
- m_parameters.push_back(m_exposureControlParam);
- m_whiteBalanceParam = new EnumCameraParameter("ImageSource.IO.Sensor.WhiteBalance=%s",
- "root.ImageSource.I0.Sensor.WhiteBalance=(.*)", false, kWhiteBalanceChoices, sizeof(kWhiteBalanceChoices)/sizeof(kWhiteBalanceChoices[0]));
- m_parameters.push_back(m_whiteBalanceParam);
-
- m_paramChangedSem = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
- m_socketPossessionSem = semBCreate (SEM_Q_PRIORITY, SEM_FULL);
-
- m_paramTask.Start((int)this);
-}
-
-/**
- * Destructor
- */
-AxisCameraParams::~AxisCameraParams()
-{
- m_paramTask.Stop();
-
- semDelete(m_socketPossessionSem);
- semDelete(m_paramChangedSem);
-
- delete m_whiteBalanceParam;
- delete m_exposureControlParam;
- delete m_resolutionParam;
- delete m_rotationParam;
- delete m_maxFPSParam;
- delete m_compressionParam;
- delete m_exposurePriorityParam;
- delete m_colorLevelParam;
- delete m_brightnessParam;
-}
-
-/**
- * Static function to start the parameter updating task
- */
-int AxisCameraParams::s_ParamTaskFunction(AxisCameraParams* thisPtr)
-{
- return thisPtr->ParamTaskFunction();
-}
-
-/**
- * Main loop of the parameter task.
- * This loop runs continuously checking parameters from the camera for
- * posted changes and updating them if necessary.
- */
-// TODO: need to synchronize the actual setting of parameters (the assignment statement)
-int AxisCameraParams::ParamTaskFunction()
-{
- static bool firstTime = true;
-
- while (true)
- {
- semTake(m_socketPossessionSem, WAIT_FOREVER);
- if (firstTime)
- {
- while (ReadCamParams() == 0);
- firstTime = false;
- }
- bool restartRequired = false;
-
- ParameterVector_t::iterator it = m_parameters.begin();
- ParameterVector_t::iterator end = m_parameters.end();
- for(; it != end; it++)
- {
- bool changed = false;
- char param[150];
- restartRequired |= (*it)->CheckChanged(changed, param);
- if (changed)
- {
- UpdateCamParam(param);
- }
- }
- if (restartRequired)
- {
- RestartCameraTask();
- }
- semGive(m_socketPossessionSem);
- }
- return 0;
-}
-
-/**
- * Write the brightness value to the camera.
- * @param brightness valid values 0 .. 100
- */
-void AxisCameraParams::WriteBrightness(int brightness)
-{
- m_brightnessParam->SetValue(brightness);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the brightness value.
- * @return Brightness value from the camera.
- */
-int AxisCameraParams::GetBrightness()
-{
- return m_brightnessParam->GetValue();
-}
-
-/**
- * Set the white balance value.
- * @param whiteBalance Valid values from the WhiteBalance_t enum.
- */
-void AxisCameraParams::WriteWhiteBalance(WhiteBalance_t whiteBalance)
-{
- m_whiteBalanceParam->SetValue(whiteBalance);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Retrieve the current white balance parameter.
- * @return The white balance value.
- */
-AxisCameraParams::WhiteBalance_t AxisCameraParams::GetWhiteBalance()
-{
- return (WhiteBalance_t) m_whiteBalanceParam->GetValue();
-}
-
-/**
- * Write the color level to the camera.
- * @param colorLevel valid values are 0 .. 100
- */
-void AxisCameraParams::WriteColorLevel(int colorLevel)
-{
- m_colorLevelParam->SetValue(colorLevel);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Retrieve the color level from the camera.
- * @Returns the camera color level.
- */
-int AxisCameraParams::GetColorLevel()
-{
- return m_colorLevelParam->GetValue();
-}
-
-/**
- * Write the exposure control value to the camera.
- * @param exposureControl A mode to write in the Exposure_t enum.
- */
-void AxisCameraParams::WriteExposureControl(Exposure_t exposureControl)
-{
- m_exposureControlParam->SetValue(exposureControl);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the exposure value from the camera.
- * @returns the exposure value from the camera.
- */
-AxisCameraParams::Exposure_t AxisCameraParams::GetExposureControl()
-{
- return (Exposure_t) m_exposureControlParam->GetValue();
-}
-
-/**
- * Write resolution value to camera.
- * @param resolution The camera resolution value to write to the camera. Use the Resolution_t enum.
- */
-void AxisCameraParams::WriteResolution(Resolution_t resolution)
-{
- m_resolutionParam->SetValue(resolution);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the resolution value from the camera.
- * @returns resultion value for the camera.
- */
-AxisCameraParams::Resolution_t AxisCameraParams::GetResolution()
-{
- return (Resolution_t) m_resolutionParam->GetValue();
-}
-
-/**
- * Write the exposre priority value to the camera.
- * @param exposurePriority Valid values are 0, 50, 100.
- * 0 = Prioritize image quality
- * 50 = None
- * 100 = Prioritize frame rate
- */
-void AxisCameraParams::WriteExposurePriority(int exposurePriority)
-{
- m_exposurePriorityParam->SetValue(exposurePriority);
- semGive(m_paramChangedSem);
-}
-
-int AxisCameraParams::GetExposurePriority()
-{
- return m_exposurePriorityParam->GetValue();
-}
-
-/**
- * Write the rotation value to the camera.
- * If you mount your camera upside down, use this to adjust the image for you.
- * @param rotation The image from the Rotation_t enum in AxisCameraParams (kRotation_0 or kRotation_180)
- */
-void AxisCameraParams::WriteRotation(Rotation_t rotation)
-{
- m_rotationParam->SetValue(rotation);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the rotation value from the camera.
- * @return The rotation value from the camera (Rotation_t).
- */
-AxisCameraParams::Rotation_t AxisCameraParams::GetRotation()
-{
- return (Rotation_t) m_rotationParam->GetValue();
-}
-
-/**
- * Write the compression value to the camera.
- * @param compression Values between 0 and 100.
- */
-
-void AxisCameraParams::WriteCompression(int compression)
-{
- m_compressionParam->SetValue(compression);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the compression value from the camera.
- * @return The cached compression value from the camera.
- */
-int AxisCameraParams::GetCompression()
-{
- return m_compressionParam->GetValue();
-}
-
-/**
- * Write the maximum frames per second that the camera should send
- * Write 0 to send as many as possible.
- * @param maxFPS The number of frames the camera should send in a second, exposure permitting.
- */
-void AxisCameraParams::WriteMaxFPS(int maxFPS)
-{
- m_maxFPSParam->SetValue(maxFPS);
- semGive(m_paramChangedSem);
-}
-
-/**
- * Get the max number of frames per second that the camera will send
- * @return Maximum frames per second.
- */
-int AxisCameraParams::GetMaxFPS()
-{
- return m_maxFPSParam->GetValue();
-}
-
-/**
- * Update a camera parameter.
- * Write a camera parameter to the camera when it has bene changed.
- * @param param the string to insert into the http request.
- * @returns 0 if it failed, otherwise nonzero.
- */
-int AxisCameraParams::UpdateCamParam(const char* param)
-{
- const char *requestString =
- "GET /axis-cgi/admin/param.cgi?action=update&%s HTTP/1.1\n\
-User-Agent: HTTPStreamClient\n\
-Connection: Keep-Alive\n\
-Cache-Control: no-cache\n\
-Authorization: Basic RlJDOkZSQw==\n\n";
- char completedRequest[1024];
- sprintf(completedRequest, requestString, param);
- // Send request
- int camSocket = CreateCameraSocket(completedRequest);
- if (camSocket == ERROR)
- {
- printf("UpdateCamParam failed: %s\n", param);
- return 0;
- }
- close(camSocket);
- return 1;
-}
-
-/**
- * Read the full param list from camera, use regular expressions to find the bits we care about
- * assign values to member variables.
- */
-int AxisCameraParams::ReadCamParams()
-{
- const char * requestString =
- "GET /axis-cgi/admin/param.cgi?action=list HTTP/1.1\n\
-User-Agent: HTTPStreamClient\n\
-Connection: Keep-Alive\n\
-Cache-Control: no-cache\n\
-Authorization: Basic RlJDOkZSQw==\n\n";
-
- int camSocket = CreateCameraSocket(requestString);
- if (camSocket == ERROR)
- {
- return 0;
- }
- // Allocate on the heap since it is very large and only needed once
- char *readBuffer = new char[27000];
- int totalRead = 0;
- while (1)
- {
- wpi_assert(totalRead < 26000);
- int bytesRead = recv(camSocket, &readBuffer[totalRead], 1000, 0);
- if (bytesRead == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to read image header");
- close(camSocket);
- return 0;
- }
- else if (bytesRead <= 0)
- {
- break;
- }
- totalRead += bytesRead;
- }
- readBuffer[totalRead] = '\0';
-
- ParameterVector_t::iterator it = m_parameters.begin();
- ParameterVector_t::iterator end = m_parameters.end();
- for(; it != end; it++)
- {
- (*it)->GetParamFromString(readBuffer, totalRead);
- }
- close(camSocket);
- delete [] readBuffer;
- return 1;
-}
-
-/*
- * Create a socket connected to camera
- * Used to create a connection to the camera by both AxisCameraParams and AxisCamera.
- * @param requestString The initial request string to send upon successful connection.
- * @return ERROR if failed, socket handle if successful.
- */
-int AxisCameraParams::CreateCameraSocket(const char *requestString)
-{
- int sockAddrSize;
- struct sockaddr_in serverAddr;
- int camSocket;
- /* create socket */
- if ((camSocket = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to create the camera socket");
- return ERROR;
- }
-
- sockAddrSize = sizeof(struct sockaddr_in);
- bzero((char *) &serverAddr, sockAddrSize);
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_len = (u_char) sockAddrSize;
- serverAddr.sin_port = htons(80);
-
- serverAddr.sin_addr.s_addr = m_ipAddress;
-
- /* connect to server */
- struct timeval connectTimeout;
- connectTimeout.tv_sec = 5;
- connectTimeout.tv_usec = 0;
- if (connectWithTimeout(camSocket, (struct sockaddr *) &serverAddr, sockAddrSize, &connectTimeout) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to connect to the camera");
- close(camSocket);
- return ERROR;
- }
- int sent = send(camSocket, requestString, strlen(requestString), 0);
- if (sent == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to send a request to the camera");
- close(camSocket);
- return ERROR;
- }
- return camSocket;
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.h b/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.h
deleted file mode 100644
index 4e1f35e..0000000
--- a/aos/externals/WPILib/WPILib/Vision/AxisCameraParams.h
+++ /dev/null
@@ -1,90 +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 __AXIS_CAMERA_PARAMS_H__
-#define __AXIS_CAMERA_PARAMS_H__
-
-#include "EnumCameraParameter.h"
-#include "ErrorBase.h"
-#include "IntCameraParameter.h"
-#include "Task.h"
-#include <vector>
-
-/**
- * AxisCameraParams class.
- * This class handles parameter configuration the Axis 206 Ethernet Camera.
- * It starts up a tasks with an independent connection to the camera that monitors
- * for changes to parameters and updates the camera.
- * It is only separate from AxisCamera to isolate the parameter code from the image streaming code.
- */
-class AxisCameraParams : public ErrorBase
-{
-public:
- typedef enum Exposure_t {kExposure_Automatic, kExposure_Hold, kExposure_FlickerFree50Hz, kExposure_FlickerFree60Hz} Exposure;
- typedef enum WhiteBalance_t {kWhiteBalance_Automatic, kWhiteBalance_Hold, kWhiteBalance_FixedOutdoor1, kWhiteBalance_FixedOutdoor2, kWhiteBalance_FixedIndoor, kWhiteBalance_FixedFlourescent1, kWhiteBalance_FixedFlourescent2} WhiteBalance;
- typedef enum Resolution_t {kResolution_640x480, kResolution_640x360, kResolution_320x240, kResolution_160x120} Resolution;
- typedef enum Rotation_t {kRotation_0, kRotation_180} Rotation;
-
-protected:
- AxisCameraParams(const char* ipAddress);
- virtual ~AxisCameraParams();
-
-public:
- // Mid-stream gets & writes
- void WriteBrightness(int);
- int GetBrightness();
- void WriteWhiteBalance(WhiteBalance_t whiteBalance);
- WhiteBalance_t GetWhiteBalance();
- void WriteColorLevel(int);
- int GetColorLevel();
- void WriteExposureControl(Exposure_t);
- Exposure_t GetExposureControl();
- void WriteExposurePriority(int);
- int GetExposurePriority();
- void WriteMaxFPS(int);
- int GetMaxFPS();
-
- // New-Stream gets & writes (i.e. require restart)
- void WriteResolution(Resolution_t);
- Resolution_t GetResolution();
- void WriteCompression(int);
- int GetCompression();
- void WriteRotation(Rotation_t);
- Rotation_t GetRotation();
-
-protected:
- virtual void RestartCameraTask() = 0;
- int CreateCameraSocket(const char *requestString);
-
- static int s_ParamTaskFunction(AxisCameraParams* thisPtr);
- int ParamTaskFunction();
-
- int UpdateCamParam(const char *param);
- int ReadCamParams();
-
- Task m_paramTask;
- uint32_t m_ipAddress; // IPv4
- SEM_ID m_paramChangedSem;
- SEM_ID m_socketPossessionSem;
-
- //Camera Properties
- IntCameraParameter *m_brightnessParam;
- IntCameraParameter *m_compressionParam;
- IntCameraParameter *m_exposurePriorityParam;
- IntCameraParameter *m_colorLevelParam;
- IntCameraParameter *m_maxFPSParam;
- EnumCameraParameter *m_rotationParam;
- EnumCameraParameter *m_resolutionParam;
- EnumCameraParameter *m_exposureControlParam;
- EnumCameraParameter *m_whiteBalanceParam;
-
- // A vector to access all properties simply.
- typedef std::vector<IntCameraParameter*> ParameterVector_t;
- ParameterVector_t m_parameters;
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/BinaryImage.cpp b/aos/externals/WPILib/WPILib/Vision/BinaryImage.cpp
deleted file mode 100644
index f4cd1bb..0000000
--- a/aos/externals/WPILib/WPILib/Vision/BinaryImage.cpp
+++ /dev/null
@@ -1,223 +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 "BinaryImage.h"
-#include "WPIErrors.h"
-#include <cstring>
-
-/** Private NI function needed to write to the VxWorks target */
-IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable);
-
-BinaryImage::BinaryImage() : MonoImage()
-{
-}
-
-BinaryImage::~BinaryImage()
-{
-}
-
-/**
- * Get then number of particles for the image.
- * @returns the number of particles found for the image.
- */
-int BinaryImage::GetNumberParticles()
-{
- int numParticles = 0;
- int success = imaqCountParticles(m_imaqImage, 1, &numParticles);
- wpi_setImaqErrorWithContext(success, "Error counting particles");
- return numParticles;
-}
-
-/**
- * Get a single particle analysis report.
- * Get one (of possibly many) particle analysis reports for an image.
- * @param particleNumber Which particle analysis report to return.
- * @returns the selected particle analysis report
- */
-ParticleAnalysisReport BinaryImage::GetParticleAnalysisReport(int particleNumber)
-{
- ParticleAnalysisReport par;
- GetParticleAnalysisReport(particleNumber, &par);
- return par;
-}
-
-/**
- * Get a single particle analysis report.
- * Get one (of possibly many) particle analysis reports for an image.
- * This version could be more efficient when copying many reports.
- * @param particleNumber Which particle analysis report to return.
- * @param par the selected particle analysis report
- */
-void BinaryImage::GetParticleAnalysisReport(int particleNumber, ParticleAnalysisReport *par)
-{
- int success;
- int numParticles = 0;
-
- success = imaqGetImageSize(m_imaqImage, &par->imageWidth, &par->imageHeight);
- wpi_setImaqErrorWithContext(success, "Error getting image size");
- if (StatusIsFatal())
- return;
-
- success = imaqCountParticles(m_imaqImage, 1, &numParticles);
- wpi_setImaqErrorWithContext(success, "Error counting particles");
- if (StatusIsFatal())
- return;
-
- if (particleNumber >= numParticles)
- {
- wpi_setWPIErrorWithContext(ParameterOutOfRange, "particleNumber");
- return;
- }
-
- par->particleIndex = particleNumber;
- // Don't bother measuring the rest of the particle if one fails
- bool good = ParticleMeasurement(particleNumber, IMAQ_MT_CENTER_OF_MASS_X, &par->center_mass_x);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_CENTER_OF_MASS_Y, &par->center_mass_y);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA, &par->particleArea);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_TOP, &par->boundingRect.top);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_LEFT, &par->boundingRect.left);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_HEIGHT, &par->boundingRect.height);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_WIDTH, &par->boundingRect.width);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA_BY_IMAGE_AREA, &par->particleToImagePercent);
- good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA, &par->particleQuality);
-
- if (good)
- {
- /* normalized position (-1 to 1) */
- par->center_mass_x_normalized = NormalizeFromRange(par->center_mass_x, par->imageWidth);
- par->center_mass_y_normalized = NormalizeFromRange(par->center_mass_y, par->imageHeight);
- }
-}
-
-
-/**
- * Get an ordered vector of particles for the image.
- * Create a vector of particle analysis reports sorted by size for an image.
- * The vector contains the actual report structures.
- * @returns a pointer to the vector of particle analysis reports. The caller must delete the
- * vector when finished using it.
- */
-vector<ParticleAnalysisReport>* BinaryImage::GetOrderedParticleAnalysisReports()
-{
- vector<ParticleAnalysisReport>* particles = new vector<ParticleAnalysisReport>;
- int particleCount = GetNumberParticles();
- for(int particleIndex = 0; particleIndex < particleCount; particleIndex++)
- {
- particles->push_back(GetParticleAnalysisReport(particleIndex));
- }
- // TODO: This is pretty inefficient since each compare in the sort copies
- // both reports being compared... do it manually instead... while we're
- // at it, we should provide a version that allows a preallocated buffer of
- // ParticleAnalysisReport structures
- sort(particles->begin(), particles->end(), CompareParticleSizes);
- return particles;
-}
-
-/**
- * Write a binary image to flash.
- * Writes the binary image to flash on the cRIO for later inspection.
- * @param fileName the name of the image file written to the flash.
- */
-void BinaryImage::Write(const char *fileName)
-{
- RGBValue colorTable[256];
- Priv_SetWriteFileAllowed(1);
- memset(colorTable, 0, sizeof(colorTable));
- colorTable[0].R = 0;
- colorTable[1].R = 255;
- colorTable[0].G = colorTable[1].G = 0;
- colorTable[0].B = colorTable[1].B = 0;
- colorTable[0].alpha = colorTable[1].alpha = 0;
- imaqWriteFile(m_imaqImage, fileName, colorTable);
-}
-
-/**
- * Measure a single parameter for an image.
- * Get the measurement for a single parameter about an image by calling the imaqMeasureParticle
- * function for the selected parameter.
- * @param particleNumber which particle in the set of particles
- * @param whatToMeasure the imaq MeasurementType (what to measure)
- * @param result the value of the measurement
- * @returns false on failure, true on success
- */
-bool BinaryImage::ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, int *result)
-{
- double resultDouble;
- bool success = ParticleMeasurement(particleNumber, whatToMeasure, &resultDouble);
- *result = (int)resultDouble;
- return success;
-}
-
-/**
- * Measure a single parameter for an image.
- * Get the measurement for a single parameter about an image by calling the imaqMeasureParticle
- * function for the selected parameter.
- * @param particleNumber which particle in the set of particles
- * @param whatToMeasure the imaq MeasurementType (what to measure)
- * @param result the value of the measurement
- * @returns true on failure, false on success
- */
-bool BinaryImage::ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, double *result)
-{
- int success;
- success = imaqMeasureParticle(m_imaqImage, particleNumber, 0, whatToMeasure, result);
- wpi_setImaqErrorWithContext(success, "Error measuring particle");
- return !StatusIsFatal();
-}
-
-//Normalizes to [-1,1]
-double BinaryImage::NormalizeFromRange(double position, int range)
-{
- return (position * 2.0 / (double)range) - 1.0;
-}
-
-/**
- * The compare helper function for sort.
- * This function compares two particle analysis reports as a helper for the sort function.
- * @param particle1 The first particle to compare
- * @param particle2 the second particle to compare
- * @returns true if particle1 is greater than particle2
- */
-bool BinaryImage::CompareParticleSizes(ParticleAnalysisReport particle1, ParticleAnalysisReport particle2)
-{
- //we want descending sort order
- return particle1.particleToImagePercent > particle2.particleToImagePercent;
-}
-
-BinaryImage *BinaryImage::RemoveSmallObjects(bool connectivity8, int erosions)
-{
- BinaryImage *result = new BinaryImage();
- int success = imaqSizeFilter(result->GetImaqImage(), m_imaqImage, connectivity8, erosions, IMAQ_KEEP_LARGE, NULL);
- wpi_setImaqErrorWithContext(success, "Error in RemoveSmallObjects");
- return result;
-}
-
-BinaryImage *BinaryImage::RemoveLargeObjects(bool connectivity8, int erosions)
-{
- BinaryImage *result = new BinaryImage();
- int success = imaqSizeFilter(result->GetImaqImage(), m_imaqImage, connectivity8, erosions, IMAQ_KEEP_SMALL, NULL);
- wpi_setImaqErrorWithContext(success, "Error in RemoveLargeObjects");
- return result;
-}
-
-BinaryImage *BinaryImage::ConvexHull(bool connectivity8)
-{
- BinaryImage *result = new BinaryImage();
- int success = imaqConvexHull(result->GetImaqImage(), m_imaqImage, connectivity8);
- wpi_setImaqErrorWithContext(success, "Error in convex hull operation");
- return result;
-}
-
-BinaryImage *BinaryImage::ParticleFilter(ParticleFilterCriteria2 *criteria, int criteriaCount)
-{
- BinaryImage *result = new BinaryImage();
- int numParticles;
- ParticleFilterOptions2 filterOptions = {0, 0, 0, 1};
- int success = imaqParticleFilter4(result->GetImaqImage(), m_imaqImage, criteria, criteriaCount, &filterOptions, NULL, &numParticles);
- wpi_setImaqErrorWithContext(success, "Error in particle filter operation");
- return result;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Vision/BinaryImage.h b/aos/externals/WPILib/WPILib/Vision/BinaryImage.h
deleted file mode 100644
index 23a8557..0000000
--- a/aos/externals/WPILib/WPILib/Vision/BinaryImage.h
+++ /dev/null
@@ -1,42 +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 __BINARY_IMAGE_H__
-#define __BINARY_IMAGE_H__
-
-#include "MonoImage.h"
-/**
- * Included for ParticleAnalysisReport definition
- * TODO: Eliminate this dependency!
- */
-#include "Vision2009/VisionAPI.h"
-
-#include <vector>
-#include <algorithm>
-using namespace std;
-
-class BinaryImage : public MonoImage
-{
-public:
- BinaryImage();
- virtual ~BinaryImage();
- int GetNumberParticles();
- ParticleAnalysisReport GetParticleAnalysisReport(int particleNumber);
- void GetParticleAnalysisReport(int particleNumber, ParticleAnalysisReport *par);
- vector<ParticleAnalysisReport>* GetOrderedParticleAnalysisReports();
- BinaryImage *RemoveSmallObjects(bool connectivity8, int erosions);
- BinaryImage *RemoveLargeObjects(bool connectivity8, int erosions);
- BinaryImage *ConvexHull(bool connectivity8);
- BinaryImage *ParticleFilter(ParticleFilterCriteria2 *criteria, int criteriaCount);
- virtual void Write(const char *fileName);
-private:
- bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, int *result);
- bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, double *result);
- static double NormalizeFromRange(double position, int range);
- static bool CompareParticleSizes(ParticleAnalysisReport particle1, ParticleAnalysisReport particle2);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/ColorImage.cpp b/aos/externals/WPILib/WPILib/Vision/ColorImage.cpp
deleted file mode 100644
index 24c44f4..0000000
--- a/aos/externals/WPILib/WPILib/Vision/ColorImage.cpp
+++ /dev/null
@@ -1,465 +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 "ColorImage.h"
-
-#include "WPIErrors.h"
-
-ColorImage::ColorImage(ImageType type) : ImageBase(type)
-{
-}
-
-ColorImage::~ColorImage()
-{
-}
-
-/**
- * Perform a threshold operation on a ColorImage.
- * Perform a threshold operation on a ColorImage using the ColorMode supplied
- * as a parameter.
- * @param colorMode The type of colorspace this operation should be performed in
- * @returns a pointer to a binary image
- */
-BinaryImage *ColorImage::ComputeThreshold(ColorMode colorMode,
- int low1, int high1,
- int low2, int high2,
- int low3, int high3)
-{
- BinaryImage *result = new BinaryImage();
- Range range1 = {low1, high1},
- range2 = {low2, high2},
- range3 = {low3, high3};
-
- int success = imaqColorThreshold(result->GetImaqImage(), m_imaqImage, 1, colorMode, &range1, &range2, &range3);
- wpi_setImaqErrorWithContext(success, "ImaqThreshold error");
- return result;
-}
-
-/**
- * Perform a threshold in RGB space.
- * @param redLow Red low value
- * @param redHigh Red high value
- * @param greenLow Green low value
- * @param greenHigh Green high value
- * @param blueLow Blue low value
- * @param blueHigh Blue high value
- * @returns A pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdRGB(int redLow, int redHigh, int greenLow, int greenHigh, int blueLow, int blueHigh)
-{
- return ComputeThreshold(IMAQ_RGB, redLow, redHigh, greenLow, greenHigh, blueLow, blueHigh);
-}
-
-/**
- * Perform a threshold in RGB space.
- * @param threshold a reference to the Threshold object to use.
- * @returns A pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdRGB(Threshold &t)
-{
- return ComputeThreshold(IMAQ_RGB, t.plane1Low, t.plane1High,
- t.plane2Low, t.plane2High,
- t.plane3Low, t.plane3High);
-}
-
-/**
- * Perform a threshold in HSL space.
- * @param hueLow Low value for hue
- * @param hueHigh High value for hue
- * @param saturationLow Low value for saturation
- * @param saturationHigh High value for saturation
- * @param luminenceLow Low value for luminence
- * @param luminenceHigh High value for luminence
- * @returns a pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSL(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int luminenceLow, int luminenceHigh)
-{
- return ComputeThreshold(IMAQ_HSL, hueLow, hueHigh, saturationLow, saturationHigh, luminenceLow, luminenceHigh);
-}
-
-/**
- * Perform a threshold in HSL space.
- * @param threshold a reference to the Threshold object to use.
- * @returns A pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSL(Threshold &t)
-{
- return ComputeThreshold(IMAQ_HSL, t.plane1Low, t.plane1High,
- t.plane2Low, t.plane2High,
- t.plane3Low, t.plane3High);
-}
-
-/**
- * Perform a threshold in HSV space.
- * @param hueLow Low value for hue
- * @param hueHigh High value for hue
- * @param saturationLow Low value for saturation
- * @param saturationHigh High value for saturation
- * @param valueLow Low value
- * @param valueHigh High value
- * @returns a pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSV(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int valueLow, int valueHigh)
-{
- return ComputeThreshold(IMAQ_HSV, hueLow, hueHigh, saturationLow, saturationHigh, valueLow, valueHigh);
-}
-
-/**
- * Perform a threshold in HSV space.
- * @param threshold a reference to the Threshold object to use.
- * @returns A pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSV(Threshold &t)
-{
- return ComputeThreshold(IMAQ_HSV, t.plane1Low, t.plane1High,
- t.plane2Low, t.plane2High,
- t.plane3Low, t.plane3High);
-}
-
-/**
- * Perform a threshold in HSI space.
- * @param hueLow Low value for hue
- * @param hueHigh High value for hue
- * @param saturationLow Low value for saturation
- * @param saturationHigh High value for saturation
- * @param valueLow Low intensity
- * @param valueHigh High intensity
- * @returns a pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSI(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int intensityLow, int intensityHigh)
-{
- return ComputeThreshold(IMAQ_HSI, hueLow, hueHigh, saturationLow, saturationHigh, intensityLow, intensityHigh);
-}
-
-/**
- * Perform a threshold in HSI space.
- * @param threshold a reference to the Threshold object to use.
- * @returns A pointer to a BinaryImage that represents the result of the threshold operation.
- */
-BinaryImage *ColorImage::ThresholdHSI(Threshold &t)
-{
- return ComputeThreshold(IMAQ_HSI, t.plane1Low, t.plane1High,
- t.plane2Low, t.plane2High,
- t.plane3Low, t.plane3High);
-}
-
-/**
- * Extract a color plane from the image
- * @param mode The ColorMode to use for the plane extraction
- * @param planeNumber Which plane is to be extracted
- * @returns A pointer to a MonoImage that represents the extracted plane.
- */
-MonoImage *ColorImage::ExtractColorPlane(ColorMode mode, int planeNumber)
-{
- MonoImage *result = new MonoImage();
- if (m_imaqImage == NULL)
- wpi_setWPIError(NullParameter);
- int success = imaqExtractColorPlanes(m_imaqImage,
- mode,
- (planeNumber == 1) ? result->GetImaqImage() : NULL,
- (planeNumber == 2) ? result->GetImaqImage() : NULL,
- (planeNumber == 3) ? result->GetImaqImage() : NULL);
- wpi_setImaqErrorWithContext(success, "Imaq ExtractColorPlanes failed");
- return result;
-}
-
-/*
- * Extract the first color plane for an image.
- * @param mode The color mode in which to operate
- * @returns a pointer to a MonoImage that is the extracted plane.
- */
-MonoImage *ColorImage::ExtractFirstColorPlane(ColorMode mode)
-{
- return ExtractColorPlane(mode, 1);
-}
-
-/*
- * Extract the second color plane for an image.
- * @param mode The color mode in which to operate
- * @returns a pointer to a MonoImage that is the extracted plane.
- */
-MonoImage *ColorImage::ExtractSecondColorPlane(ColorMode mode)
-{
- return ExtractColorPlane(mode, 2);
-}
-
-/*
- * Extract the third color plane for an image.
- * @param mode The color mode in which to operate
- * @returns a pointer to a MonoImage that is the extracted plane.
- */
-MonoImage *ColorImage::ExtractThirdColorPlane(ColorMode mode)
-{
- return ExtractColorPlane(mode, 3);
-}
-
-/*
- * Extract the red plane from an RGB image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetRedPlane()
-{
- return ExtractFirstColorPlane(IMAQ_RGB);
-}
-
-/*
- * Extract the green plane from an RGB image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetGreenPlane()
-{
- return ExtractSecondColorPlane(IMAQ_RGB);
-}
-
-/*
- * Extract the blue plane from an RGB image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetBluePlane()
-{
- return ExtractThirdColorPlane(IMAQ_RGB);
-}
-
-/*
- * Extract the Hue plane from an HSL image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetHSLHuePlane()
-{
- return ExtractFirstColorPlane(IMAQ_HSL);
-}
-
-/*
- * Extract the Hue plane from an HSV image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetHSVHuePlane()
-{
- return ExtractFirstColorPlane(IMAQ_HSV);
-}
-
-/*
- * Extract the Hue plane from an HSI image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetHSIHuePlane()
-{
- return ExtractFirstColorPlane(IMAQ_HSI);
-}
-
-/*
- * Extract the Luminance plane from an HSL image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetLuminancePlane()
-{
- return ExtractThirdColorPlane(IMAQ_HSL);
-}
-
-/*
- * Extract the Value plane from an HSV image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetValuePlane()
-{
- return ExtractThirdColorPlane(IMAQ_HSV);
-}
-
-/*
- * Extract the Intensity plane from an HSI image.
- * @returns a pointer to a MonoImage that is the extraced plane.
- */
-MonoImage *ColorImage::GetIntensityPlane()
-{
- return ExtractThirdColorPlane(IMAQ_HSI);
-}
-
-/**
- * Replace a plane in the ColorImage with a MonoImage
- * Replaces a single plane in the image with a MonoImage
- * @param mode The ColorMode in which to operate
- * @param plane The pointer to the replacement plane as a MonoImage
- * @param planeNumber The plane number (1, 2, 3) to replace
- */
-void ColorImage::ReplacePlane(ColorMode mode, MonoImage *plane, int planeNumber) {
- int success = imaqReplaceColorPlanes(m_imaqImage,
- (const Image*) m_imaqImage,
- mode,
- (planeNumber == 1) ? plane->GetImaqImage() : NULL,
- (planeNumber == 2) ? plane->GetImaqImage() : NULL,
- (planeNumber == 3) ? plane->GetImaqImage() : NULL);
- wpi_setImaqErrorWithContext(success, "Imaq ReplaceColorPlanes failed");
-}
-
-/**
- * Replace the first color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceFirstColorPlane(ColorMode mode, MonoImage *plane)
-{
- ReplacePlane(mode, plane, 1);
-}
-
-/**
- * Replace the second color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceSecondColorPlane(ColorMode mode, MonoImage *plane)
-{
- ReplacePlane(mode, plane, 2);
-}
-
-/**
- * Replace the third color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceThirdColorPlane(ColorMode mode, MonoImage *plane)
-{
- ReplacePlane(mode, plane, 3);
-}
-
-/**
- * Replace the red color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceRedPlane(MonoImage *plane)
-{
- ReplaceFirstColorPlane(IMAQ_RGB, plane);
-}
-
-/**
- * Replace the green color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceGreenPlane(MonoImage *plane)
-{
- ReplaceSecondColorPlane(IMAQ_RGB, plane);
-}
-
-/**
- * Replace the blue color plane with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceBluePlane(MonoImage *plane)
-{
- ReplaceThirdColorPlane(IMAQ_RGB, plane);
-}
-
-
-/**
- * Replace the Hue color plane in a HSL image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSLHuePlane(MonoImage *plane)
-{
- return ReplaceFirstColorPlane(IMAQ_HSL, plane);
-}
-
-/**
- * Replace the Hue color plane in a HSV image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSVHuePlane(MonoImage *plane)
-{
- return ReplaceFirstColorPlane(IMAQ_HSV, plane);
-}
-
-/**
- * Replace the first Hue plane in a HSI image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSIHuePlane(MonoImage *plane)
-{
- return ReplaceFirstColorPlane(IMAQ_HSI, plane);
-}
-
-/**
- * Replace the Saturation color plane in an HSL image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSLSaturationPlane(MonoImage *plane)
-{
- return ReplaceSecondColorPlane(IMAQ_HSL, plane);
-}
-
-/**
- * Replace the Saturation color plane in a HSV image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSVSaturationPlane(MonoImage *plane)
-{
- return ReplaceSecondColorPlane(IMAQ_HSV, plane);
-}
-
-/**
- * Replace the Saturation color plane in a HSI image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceHSISaturationPlane(MonoImage *plane)
-{
- return ReplaceSecondColorPlane(IMAQ_HSI, plane);
-}
-
-/**
- * Replace the Luminance color plane in an HSL image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceLuminancePlane(MonoImage *plane)
-{
- return ReplaceThirdColorPlane(IMAQ_HSL, plane);
-}
-
-/**
- * Replace the Value color plane in an HSV with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceValuePlane(MonoImage *plane)
-{
- return ReplaceThirdColorPlane(IMAQ_HSV, plane);
-}
-
-/**
- * Replace the Intensity color plane in a HSI image with a MonoImage.
- * @param mode The color mode in which to operate.
- * @param plane A pointer to a MonoImage that will replace the specified color plane.
- */
-void ColorImage::ReplaceIntensityPlane(MonoImage *plane)
-{
- return ReplaceThirdColorPlane(IMAQ_HSI, plane);
-}
-
-//TODO: frcColorEqualize(Image* dest, const Image* source, int colorEqualization) needs to be modified
-//The colorEqualization parameter is discarded and is set to TRUE in the call to imaqColorEqualize.
-void ColorImage::Equalize(bool allPlanes)
-{
- // Note that this call uses NI-defined TRUE and FALSE
- int success = imaqColorEqualize(m_imaqImage, (const Image*) m_imaqImage, (allPlanes) ? TRUE : FALSE);
- wpi_setImaqErrorWithContext(success, "Imaq ColorEqualize error");
-}
-
-void ColorImage::ColorEqualize()
-{
- Equalize(true);
-}
-
-void ColorImage::LuminanceEqualize()
-{
- Equalize(false);
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/ColorImage.h b/aos/externals/WPILib/WPILib/Vision/ColorImage.h
deleted file mode 100644
index af71ce9..0000000
--- a/aos/externals/WPILib/WPILib/Vision/ColorImage.h
+++ /dev/null
@@ -1,68 +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 __COLOR_IMAGE_H__
-#define __COLOR_IMAGE_H__
-
-#include "ImageBase.h"
-#include "BinaryImage.h"
-#include "Threshold.h"
-
-class ColorImage : public ImageBase
-{
-public:
- ColorImage(ImageType type);
- virtual ~ColorImage();
- BinaryImage *ThresholdRGB(int redLow, int redHigh, int greenLow, int greenHigh, int blueLow, int blueHigh);
- BinaryImage *ThresholdHSL(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int luminenceLow, int luminenceHigh);
- BinaryImage *ThresholdHSV(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int valueHigh, int valueLow);
- BinaryImage *ThresholdHSI(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int intensityLow, int intensityHigh);
- BinaryImage *ThresholdRGB(Threshold &threshold);
- BinaryImage *ThresholdHSL(Threshold &threshold);
- BinaryImage *ThresholdHSV(Threshold &threshold);
- BinaryImage *ThresholdHSI(Threshold &threshold);
- MonoImage *GetRedPlane();
- MonoImage *GetGreenPlane();
- MonoImage *GetBluePlane();
- MonoImage *GetHSLHuePlane();
- MonoImage *GetHSVHuePlane();
- MonoImage *GetHSIHuePlane();
- MonoImage *GetHSLSaturationPlane();
- MonoImage *GetHSVSaturationPlane();
- MonoImage *GetHSISaturationPlane();
- MonoImage *GetLuminancePlane();
- MonoImage *GetValuePlane();
- MonoImage *GetIntensityPlane();
- void ReplaceRedPlane(MonoImage *plane);
- void ReplaceGreenPlane(MonoImage *plane);
- void ReplaceBluePlane(MonoImage *plane);
- void ReplaceHSLHuePlane(MonoImage *plane);
- void ReplaceHSVHuePlane(MonoImage *plane);
- void ReplaceHSIHuePlane(MonoImage *plane);
- void ReplaceHSLSaturationPlane(MonoImage *plane);
- void ReplaceHSVSaturationPlane(MonoImage *plane);
- void ReplaceHSISaturationPlane(MonoImage *plane);
- void ReplaceLuminancePlane(MonoImage *plane);
- void ReplaceValuePlane(MonoImage *plane);
- void ReplaceIntensityPlane(MonoImage *plane);
- void ColorEqualize();
- void LuminanceEqualize();
-
-private:
- BinaryImage *ComputeThreshold(ColorMode colorMode, int low1, int high1, int low2, int high2, int low3, int high3);
- void Equalize(bool allPlanes);
- MonoImage * ExtractColorPlane(ColorMode mode, int planeNumber);
- MonoImage * ExtractFirstColorPlane(ColorMode mode);
- MonoImage * ExtractSecondColorPlane(ColorMode mode);
- MonoImage * ExtractThirdColorPlane(ColorMode mode);
- void ReplacePlane(ColorMode mode, MonoImage *plane, int planeNumber);
- void ReplaceFirstColorPlane(ColorMode mode, MonoImage *plane);
- void ReplaceSecondColorPlane(ColorMode mode, MonoImage *plane);
- void ReplaceThirdColorPlane(ColorMode mode, MonoImage *plane);
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.cpp b/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.cpp
deleted file mode 100644
index 3801836..0000000
--- a/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.cpp
+++ /dev/null
@@ -1,67 +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 "EnumCameraParameter.h"
-#include <stdio.h>
-#include <string.h>
-
-/**
- * Constructor for an enumeration camera parameter.
- * Enumeration camera parameters have lists of value choices and strings that go
- * with them. There are also C++ enumerations to go along with them.
- * @param setString The string for an HTTP request to set the value.
- * @param getString The string for an HTTP request to get the value.
- * @param choices An array of strings of the parameter choices set in the http strings.
- * @param numChoices The number of choices in the enumeration set.
- */
-EnumCameraParameter::EnumCameraParameter(const char *setString, const char *getString, bool requiresRestart,
- const char *const*choices, int numChoices)
- : IntCameraParameter(setString, getString, requiresRestart)
-{
- m_enumValues = choices;
- m_numChoices = numChoices;
-}
-
-/*
- * Check if an enumeration camera parameter has changed.
- * Check if the parameter has changed and update the camera if it has. This is called
- * from a loop in the parameter checker task.
- * @returns true if the camera needs to restart
- */
-bool EnumCameraParameter::CheckChanged(bool &changed, char *param)
-{
- changed = m_changed;
- if (m_changed)
- {
- m_changed = false;
- sprintf(param, m_setString, m_enumValues[m_value]);
- return m_requiresRestart;
- }
- return false;
-}
-
-/**
- * Extract the parameter value from a string.
- * Extract the parameter value from the camera status message.
- * @param string The string returned from the camera.
- * @param length The length of the string from the camera.
- */
-void EnumCameraParameter::GetParamFromString(const char *string, int stringLength)
-{
- char resultString[50];
- if (SearchForParam(m_getString, string, stringLength, resultString) < 0) return;
- for (int i = 0; i < m_numChoices; i++)
- {
- if (strcmp(resultString, m_enumValues[i]) == 0)
- {
- if (!m_changed) // don't change parameter that's been set in code
- {
- m_value = i;
- }
- }
- }
-}
-
diff --git a/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.h b/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.h
deleted file mode 100644
index 543209f..0000000
--- a/aos/externals/WPILib/WPILib/Vision/EnumCameraParameter.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 __ENUM_CAMERA_PARAMETER_H__
-#define __ENUM_CAMERA_PARAMETER_H__
-
-#include "IntCameraParameter.h"
-
-/**
- * Enumerated camera parameter.
- * This class represents a camera parameter that takes an enumerated type for a value.
- */
-class EnumCameraParameter: public IntCameraParameter
-{
-private:
- const char *const*m_enumValues;
- int m_numChoices;
-
-public:
- EnumCameraParameter(const char *setString, const char *getString, bool requiresRestart, const char *const*choices, int numChoices);
- virtual bool CheckChanged(bool &changed, char *param);
- virtual void GetParamFromString(const char *string, int stringLength);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/HSLImage.cpp b/aos/externals/WPILib/WPILib/Vision/HSLImage.cpp
deleted file mode 100644
index fec283a..0000000
--- a/aos/externals/WPILib/WPILib/Vision/HSLImage.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "HSLImage.h"
-
-/**
- * Create a new image that uses the Hue, Saturation, and Luminance planes.
- */
-HSLImage::HSLImage() : ColorImage(IMAQ_IMAGE_HSL)
-{
-}
-
-/**
- * Create a new image by loading a file.
- * @param fileName The path of the file to load.
- */
-HSLImage::HSLImage(const char *fileName) : ColorImage(IMAQ_IMAGE_HSL)
-{
- int success = imaqReadFile(m_imaqImage, fileName, NULL, NULL);
- wpi_setImaqErrorWithContext(success, "Imaq ReadFile error");
-}
-
-HSLImage::~HSLImage()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/HSLImage.h b/aos/externals/WPILib/WPILib/Vision/HSLImage.h
deleted file mode 100644
index fb365ad..0000000
--- a/aos/externals/WPILib/WPILib/Vision/HSLImage.h
+++ /dev/null
@@ -1,24 +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 __HSL_IMAGE_H__
-#define __HSL_IMAGE_H__
-
-#include "ColorImage.h"
-
-/**
- * A color image represented in HSL color space at 3 bytes per pixel.
- */
-class HSLImage : public ColorImage
-{
-public:
- HSLImage();
- HSLImage(const char *fileName);
- virtual ~HSLImage();
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision/ImageBase.cpp b/aos/externals/WPILib/WPILib/Vision/ImageBase.cpp
deleted file mode 100644
index 769d2bc..0000000
--- a/aos/externals/WPILib/WPILib/Vision/ImageBase.cpp
+++ /dev/null
@@ -1,77 +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 "ImageBase.h"
-#include "nivision.h"
-
-/** Private NI function needed to write to the VxWorks target */
-IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable);
-
-/**
- * Create a new instance of an ImageBase.
- * Imagebase is the base of all the other image classes. The constructor
- * creates any type of image and stores the pointer to it in the class.
- * @param type The type of image to create
- */
-ImageBase::ImageBase(ImageType type)
-{
- m_imaqImage = imaqCreateImage(type, DEFAULT_BORDER_SIZE);
-}
-
-/**
- * Frees memory associated with an ImageBase.
- * Destructor frees the imaq image allocated with the class.
- */
-ImageBase::~ImageBase()
-{
- if(m_imaqImage)
- imaqDispose(m_imaqImage);
-}
-
-/**
- * Writes an image to a file with the given filename.
- * Write the image to a file in the flash on the cRIO.
- * @param fileName The name of the file to write
- */
-void ImageBase::Write(const char *fileName)
-{
- Priv_SetWriteFileAllowed(1);
- int success = imaqWriteFile(m_imaqImage, fileName, NULL);
- wpi_setImaqErrorWithContext(success, "Imaq Image writeFile error");
-}
-
-/**
- * Gets the height of an image.
- * @return The height of the image in pixels.
- */
-int ImageBase::GetHeight()
-{
- int height;
- imaqGetImageSize(m_imaqImage, NULL, &height);
- return height;
-}
-
-/**
- * Gets the width of an image.
- * @return The width of the image in pixels.
- */
-int ImageBase::GetWidth()
-{
- int width;
- imaqGetImageSize(m_imaqImage, &width, NULL);
- return width;
-}
-
-/**
- * Access the internal IMAQ Image data structure.
- *
- * @return A pointer to the internal IMAQ Image data structure.
- */
-Image *ImageBase::GetImaqImage()
-{
- return m_imaqImage;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Vision/ImageBase.h b/aos/externals/WPILib/WPILib/Vision/ImageBase.h
deleted file mode 100644
index 6a45ec1..0000000
--- a/aos/externals/WPILib/WPILib/Vision/ImageBase.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 __IMAGE_BASE_H__
-#define __IMAGE_BASE_H__
-
-#include <stdio.h>
-#include "nivision.h"
-#include "ErrorBase.h"
-
-#define DEFAULT_BORDER_SIZE 3
-
-class ImageBase : public ErrorBase
-{
-public:
- ImageBase(ImageType type);
- virtual ~ImageBase();
- virtual void Write(const char *fileName);
- int GetHeight();
- int GetWidth();
- Image *GetImaqImage();
-protected:
- Image *m_imaqImage;
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.cpp b/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.cpp
deleted file mode 100644
index af7ff2c..0000000
--- a/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.cpp
+++ /dev/null
@@ -1,111 +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 "IntCameraParameter.h"
-#include "pcre.h"
-#include <stdio.h>
-#include <string.h>
-
-/**
- * Constructor for an integer camera parameter.
- * @param setString The string to set a value in the HTTP request
- * @param getString The string to retrieve a value in the HTTP request
- */
-IntCameraParameter::IntCameraParameter(const char *setString, const char *getString, bool requiresRestart)
-{
- m_changed = false;
- m_value = 0;
- m_setString = setString;
- m_getString = getString;
- m_requiresRestart = requiresRestart;
-}
-
-/**
- * Get a value for a camera parameter.
- * @returns The camera parameter cached valued.
- */
-int IntCameraParameter::GetValue()
-{
- return m_value;
-}
-
-/**
- * Set a value for a camera parameter.
- * Mark the value for change. The value will be updated in the parameter
- * change loop.
- */
-void IntCameraParameter::SetValue(int value)
-{
- m_value = value;
- m_changed = true;
-}
-
-/**
- * Check if a parameter has changed and update.
- * Check if a parameter has changed and send the update string if it
- * has changed. This is called from the loop in the parameter task loop.
- * @returns true if the camera needs to restart
- */
-bool IntCameraParameter::CheckChanged(bool &changed, char *param)
-{
- changed = m_changed;
- if (m_changed)
- {
- sprintf(param, m_setString, m_value);
- m_changed = false;
- return m_requiresRestart;
- }
- return false;
-}
-
-/**
- * Get a parameter value from the string.
- * Get a parameter value from the camera status string. If it has been changed
- * been changed by the program, then don't update it. Program values have
- * precedence over those written in the camera.
- */
-void IntCameraParameter::GetParamFromString(const char *string, int stringLength)
-{
- char resultString[150];
- if (SearchForParam(m_getString, string, stringLength, resultString) >= 0)
- {
- if (!m_changed) m_value = atoi(resultString);
- }
-}
-
-/**
- * @param pattern: the regular expression
- * @param searchString the text to search
- * @param searchStringLen the length of searchString
- * @param result buffer to put resulting text into, must be pre-allocated
- */
-int IntCameraParameter::SearchForParam(const char *pattern, const char *searchString, int searchStringLen, char *result)
-{
- int vectorLen = 10;
- int resultVector[vectorLen];
- const char *error;
- int erroffset;
- pcre *compiledPattern = pcre_compile(
- pattern, //"root.Image.I0.Appearance.Resolution=(.*)",
- PCRE_CASELESS,
- &error, // for error message
- &erroffset, // for error offset
- NULL); // use default character tables
- int rc;
- rc = pcre_exec(compiledPattern,
- NULL,
- searchString,
- searchStringLen,
- 0,
- 0,
- resultVector, //locations of submatches
- vectorLen); //size of ovector
- int length = resultVector[3] - resultVector[2];
- memcpy(result, &searchString[resultVector[2]], length);
- result[length] = '\0';
- return rc;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.h b/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.h
deleted file mode 100644
index f47ec53..0000000
--- a/aos/externals/WPILib/WPILib/Vision/IntCameraParameter.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 __INT_CAMERA_PARAMETER_H__
-#define __INT_CAMERA_PARAMETER_H__
-
-#include <vxWorks.h>
-
-/**
- * Integer camera parameter.
- * This class represents a camera parameter that takes an integer value.
- */
-class IntCameraParameter
-{
-protected:
- const char *m_setString;
- const char *m_getString;
- bool m_changed;
- bool m_requiresRestart;
- int m_value; // parameter value
-
- int SearchForParam(const char *pattern, const char *searchString, int searchStringLen, char *result);
-
-public:
- IntCameraParameter(const char *setString, const char *getString, bool requiresRestart);
- virtual ~IntCameraParameter(){}
- int GetValue();
- void SetValue(int value);
- virtual bool CheckChanged(bool &changed, char *param);
- virtual void GetParamFromString(const char *string, int stringLength);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/MonoImage.cpp b/aos/externals/WPILib/WPILib/Vision/MonoImage.cpp
deleted file mode 100644
index f1e0022..0000000
--- a/aos/externals/WPILib/WPILib/Vision/MonoImage.cpp
+++ /dev/null
@@ -1,53 +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 "MonoImage.h"
-#include "nivision.h"
-
-MonoImage::MonoImage() : ImageBase(IMAQ_IMAGE_U8)
-{
-}
-
-MonoImage::~MonoImage()
-{
-}
-
-/**
- * Look for ellipses in an image.
- * Given some input parameters, look for any number of ellipses in an image.
- * @param ellipseDescriptor Ellipse descriptor
- * @param curveOptions Curve options
- * @param shapeDetectionOptions Shape detection options
- * @param roi Region of Interest
- * @returns a vector of EllipseMatch structures (0 length vector on no match)
- */
-vector<EllipseMatch> * MonoImage::DetectEllipses(
- EllipseDescriptor *ellipseDescriptor, CurveOptions *curveOptions,
- ShapeDetectionOptions *shapeDetectionOptions, ROI *roi)
-{
- int numberOfMatches;
- EllipseMatch *e = imaqDetectEllipses(m_imaqImage, ellipseDescriptor,
- curveOptions, shapeDetectionOptions, roi, &numberOfMatches);
- vector<EllipseMatch> *ellipses = new vector<EllipseMatch>;
- if (e == NULL)
- {
- return ellipses;
- }
- for (int i = 0; i < numberOfMatches; i++)
- {
- ellipses->push_back(e[i]);
- }
- imaqDispose(e);
- return ellipses;
-}
-
-vector<EllipseMatch> * MonoImage::DetectEllipses(
- EllipseDescriptor *ellipseDescriptor)
-{
- vector<EllipseMatch> *ellipses = DetectEllipses(ellipseDescriptor, NULL,
- NULL, NULL);
- return ellipses;
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/MonoImage.h b/aos/externals/WPILib/WPILib/Vision/MonoImage.h
deleted file mode 100644
index 277ff3a..0000000
--- a/aos/externals/WPILib/WPILib/Vision/MonoImage.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 __MONO_IMAGE_H__
-#define __MONO_IMAGE_H__
-
-#include "ImageBase.h"
-
-#include <vector>
-
-using namespace std;
-
-class MonoImage : public ImageBase
-{
-public:
- MonoImage();
- virtual ~MonoImage();
-
- vector<EllipseMatch> * DetectEllipses(EllipseDescriptor *ellipseDescriptor,
- CurveOptions *curveOptions,
- ShapeDetectionOptions *shapeDetectionOptions,
- ROI *roi);
- vector<EllipseMatch> * DetectEllipses(EllipseDescriptor *ellipseDescriptor);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/PCVideoServer.cpp b/aos/externals/WPILib/WPILib/Vision/PCVideoServer.cpp
deleted file mode 100644
index 8b754b3..0000000
--- a/aos/externals/WPILib/WPILib/Vision/PCVideoServer.cpp
+++ /dev/null
@@ -1,282 +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 <vxWorks.h>
-
-#include "PCVideoServer.h"
-
-#include <errnoLib.h>
-#include <hostLib.h>
-#include <inetLib.h>
-#include <sockLib.h>
-#include <cstring>
-
-#include "NetworkCommunication/UsageReporting.h"
-#include "Task.h"
-#include "Timer.h"
-#include "Vision/AxisCamera.h"
-#include "WPIErrors.h"
-
-/**
- * @brief Implements an object that automatically does a close on a
- * camera socket on destruction.
- */
-class ScopedSocket {
-public:
- ScopedSocket(int camSock)
- : m_camSock(camSock)
- {
- }
-
- ~ScopedSocket() {
- if (m_camSock != ERROR) {
- close(m_camSock);
- }
- }
- // Cast to int allows you to pass this to any function that
- // takes the socket as an int.
- operator int() const {
- return m_camSock;
- }
-
-private:
- int m_camSock;
-};
-
-//============================================================================
-// PCVideoServer
-//============================================================================
-
-/**
- * @brief Constructor.
- */
-PCVideoServer::PCVideoServer()
- : m_serverTask("PCVideoServer", (FUNCPTR)s_ServerTask)
- , m_newImageSem (NULL)
- , m_stopServer (false)
-{
- AxisCamera &cam = AxisCamera::GetInstance();
- m_newImageSem = cam.GetNewImageSem();
- if (!cam.StatusIsFatal())
- {
- StartServerTask();
- }
- else
- {
- CloneError(&cam);
- }
-}
-
-/**
- * @brief Destructor.
- * Stop serving images and destroy this class.
- */
-PCVideoServer::~PCVideoServer()
-{
- // Stop the images to PC server.
- Stop();
- // Clear the error so that you can use this object to make a connection to
- // the VIDEO_TO_PC_PORT to stop the ImageToPCServer if it is waiting to
- // accept connections from a PC.
- ClearError();
- // Open a socket.
- int camSock = socket(AF_INET, SOCK_STREAM, 0);
- if (camSock == ERROR)
- {
- wpi_setErrnoError();
- return;
- }
- ScopedSocket scopedCamSock(camSock);
- // If successful
- if (!StatusIsFatal())
- {
- // Create a connection to the localhost.
- struct sockaddr_in selfAddr;
- int sockAddrSize = sizeof(selfAddr);
- bzero ((char *) &selfAddr, sockAddrSize);
- selfAddr.sin_family = AF_INET;
- selfAddr.sin_len = (u_char) sockAddrSize;
- selfAddr.sin_port = htons (VIDEO_TO_PC_PORT);
-
- if (( (int)(selfAddr.sin_addr.s_addr = inet_addr (const_cast<char*>("localhost")) ) != ERROR) ||
- ( (int)(selfAddr.sin_addr.s_addr = hostGetByName (const_cast<char*>("localhost")) ) != ERROR))
- {
- struct timeval connectTimeout;
- connectTimeout.tv_sec = 1;
- connectTimeout.tv_usec = 0;
- connectWithTimeout(camSock, (struct sockaddr *) &selfAddr, sockAddrSize, &connectTimeout);
- }
- }
-}
-
-/**
- * Start the task that is responsible for sending images to the PC.
- */
-int PCVideoServer::StartServerTask()
-{
- if (StatusIsFatal())
- {
- return -1;
- }
- int id = 0;
- m_stopServer = false;
- // Check for prior copy of running task
- int oldId = taskNameToId((char*)m_serverTask.GetName());
- if(oldId != ERROR)
- {
- // TODO: Report error. You are in a bad state.
- taskDelete(oldId);
- }
-
- // spawn video server task
- // this is done to ensure that the task is spawned with the
- // floating point context save parameter.
- bool started = m_serverTask.Start((int)this);
-
- id = m_serverTask.GetID();
-
- if (!started)
- {
- wpi_setWPIError(TaskError);
- return id;
- }
- taskDelay(1);
- return id;
-}
-
-/**
- * @brief Start sending images to the PC.
- */
-void PCVideoServer::Start()
-{
- StartServerTask();
-}
-
-/**
- * @brief Stop sending images to the PC.
- */
-void PCVideoServer::Stop()
-{
- m_stopServer = true;
-}
-
-/**
- * Static stub for kicking off the server task
- */
-int PCVideoServer::s_ServerTask(PCVideoServer *thisPtr)
-{
- return thisPtr->ServerTask();
-}
-
-/**
- * @brief Initialize the socket and serve images to the PC.
- * This is the task that serves images to the PC in a loop. This runs
- * as a separate task.
- */
-int PCVideoServer::ServerTask()
-{
- /* Setup to PC sockets */
- struct sockaddr_in serverAddr;
- int sockAddrSize = sizeof(serverAddr);
- int pcSock = ERROR;
- bzero ((char *) &serverAddr, sockAddrSize);
- serverAddr.sin_len = (u_char) sockAddrSize;
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_port = htons (VIDEO_TO_PC_PORT);
- serverAddr.sin_addr.s_addr = htonl (INADDR_ANY);
-
- int success;
- while (true)
- {
- taskSafe();
- // Create the socket.
- if ((pcSock = socket (AF_INET, SOCK_STREAM, 0)) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to create the PCVideoServer socket");
- continue;
- }
- // Set the TCP socket so that it can be reused if it is in the wait state.
- int reuseAddr = 1;
- setsockopt(pcSock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char*>(&reuseAddr), sizeof(reuseAddr));
- // Bind socket to local address.
- if (bind (pcSock, (struct sockaddr *) &serverAddr, sockAddrSize) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to bind the PCVideoServer port");
- close (pcSock);
- continue;
- }
- // Create queue for client connection requests.
- if (listen (pcSock, 1) == ERROR)
- {
- wpi_setErrnoErrorWithContext("Failed to listen on the PCVideoServer port");
- close (pcSock);
- continue;
- }
-
- struct sockaddr_in clientAddr;
- int clientAddrSize;
- int newPCSock = accept (pcSock, reinterpret_cast<sockaddr*>(&clientAddr), &clientAddrSize);
- if (newPCSock == ERROR)
- {
- close(pcSock);
- continue;
- }
- //TODO: check camera error
-
- // Report usage when there is actually a connection.
- nUsageReporting::report(nUsageReporting::kResourceType_PCVideoServer, 0);
-
- int numBytes = 0;
- int imageDataSize = 0;
- char* imageData = NULL;
-
- while(!m_stopServer)
- {
- success = semTake(m_newImageSem, 1000);
- if (success == ERROR)
- {
- // If the semTake timed out, there are no new images from the camera.
- continue;
- }
- success = AxisCamera::GetInstance().CopyJPEG(&imageData, numBytes, imageDataSize);
- if (!success)
- {
- // No point in running too fast -
- Wait(1.0);
- // If camera is not initialzed you will get failure and
- // the timestamp is invalid. Reset this value and try again.
- continue;
- }
-
- // Write header to PC
- static const char header[4]={1,0,0,0};
- int headerSend = write(newPCSock, const_cast<char*>(header), 4);
-
- // Write image length to PC
- int lengthSend = write(newPCSock, reinterpret_cast<char*>(&numBytes), 4);
-
- // Write image to PC
- int sent = write (newPCSock, imageData, numBytes);
-
- // The PC probably closed connection. Get out of here
- // and try listening again.
- if (headerSend == ERROR || lengthSend == ERROR || sent == ERROR)
- {
- break;
- }
- }
- // Clean up
- delete [] imageData;
- close (newPCSock);
- newPCSock = ERROR;
- close (pcSock);
- pcSock = ERROR;
- taskUnsafe();
- Wait(0.1);
- }
- return (OK);
-}
-
diff --git a/aos/externals/WPILib/WPILib/Vision/PCVideoServer.h b/aos/externals/WPILib/WPILib/Vision/PCVideoServer.h
deleted file mode 100644
index 875adb8..0000000
--- a/aos/externals/WPILib/WPILib/Vision/PCVideoServer.h
+++ /dev/null
@@ -1,39 +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 __PC_VIDEO_SERVER_H__
-#define __PC_VIDEO_SERVER_H__
-
-#include "Task.h"
-#include <semLib.h>
-
-/** port for sending video to laptop */
-#define VIDEO_TO_PC_PORT 1180
-
-/**
- * Class the serves images to the PC.
- */
-class PCVideoServer : public ErrorBase {
-
-public:
- PCVideoServer();
- ~PCVideoServer();
- unsigned int Release();
- void Start();
- void Stop();
-
-private:
- static int s_ServerTask(PCVideoServer *thisPtr);
- int ServerTask();
- int StartServerTask();
-
- Task m_serverTask;
- SEM_ID m_newImageSem;
- bool m_stopServer;
-};
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision/RGBImage.cpp b/aos/externals/WPILib/WPILib/Vision/RGBImage.cpp
deleted file mode 100644
index a5386a0..0000000
--- a/aos/externals/WPILib/WPILib/Vision/RGBImage.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "RGBImage.h"
-
-/**
- * Create a new image that uses Red, Green, and Blue planes.
- */
-RGBImage::RGBImage() : ColorImage(IMAQ_IMAGE_RGB)
-{
-}
-
-/**
- * Create a new image by loading a file.
- * @param fileName The path of the file to load.
- */
-RGBImage::RGBImage(const char *fileName) : ColorImage(IMAQ_IMAGE_RGB)
-{
- int success = imaqReadFile(m_imaqImage, fileName, NULL, NULL);
- wpi_setImaqErrorWithContext(success, "Imaq ReadFile error");
-}
-
-RGBImage::~RGBImage()
-{
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/RGBImage.h b/aos/externals/WPILib/WPILib/Vision/RGBImage.h
deleted file mode 100644
index a92dc58..0000000
--- a/aos/externals/WPILib/WPILib/Vision/RGBImage.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 __RGB_IMAGE_H__
-#define __RGB_IMAGE_H__
-
-#include "ColorImage.h"
-
-/**
- * A color image represented in RGB color space at 3 bytes per pixel.
- */
-class RGBImage : public ColorImage
-{
-public:
- RGBImage();
- RGBImage(const char *fileName);
- virtual ~RGBImage();
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision/Threshold.cpp b/aos/externals/WPILib/WPILib/Vision/Threshold.cpp
deleted file mode 100644
index 8d428e4..0000000
--- a/aos/externals/WPILib/WPILib/Vision/Threshold.cpp
+++ /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. */
-/*----------------------------------------------------------------------------*/
-
-#include "Threshold.h"
-
-Threshold::Threshold(int new_plane1Low, int new_plane1High, int new_plane2Low,
- int new_plane2High, int new_plane3Low, int new_plane3High)
-{
- plane1Low = new_plane1Low;
- plane1High = new_plane1High;
- plane2Low = new_plane2Low;
- plane2High = new_plane2High;
- plane3Low = new_plane3Low;
- plane3High = new_plane3High;
-}
diff --git a/aos/externals/WPILib/WPILib/Vision/Threshold.h b/aos/externals/WPILib/WPILib/Vision/Threshold.h
deleted file mode 100644
index c38d7ca..0000000
--- a/aos/externals/WPILib/WPILib/Vision/Threshold.h
+++ /dev/null
@@ -1,30 +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 __THRESHOLD_H__
-#define __THRESHOLD_H__
-
-/**
- * Color threshold values.
- * This object represnts the threshold values for any type of color object
- * that is used in a threshhold operation. It simplifies passing values
- * around in a program for color detection.
- */
-class Threshold
-{
-public:
- int plane1Low;
- int plane1High;
- int plane2Low;
- int plane2High;
- int plane3Low;
- int plane3High;
- Threshold(int plane1Low, int plane1High,
- int plane2Low, int plane2High,
- int plane3Low, int plane3High);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.cpp b/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.cpp
deleted file mode 100644
index dbb337a..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.cpp
+++ /dev/null
@@ -1,1028 +0,0 @@
-
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : AxisCamera.cpp
-* Contributors : TD, ELF, JDG, SVK
-* Creation Date : July 29, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Axis camera access for the FIRST Vision API
-* The camera task runs as an independent thread
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 "sockLib.h"
-#include "vxWorks.h"
-
-#include "errno.h"
-#include "fioLib.h"
-#include "hostLib.h"
-#include "inetLib.h"
-#include "signal.h"
-#include "sigLib.h" // for signal
-#include <string>
-#include "time.h"
-#include "usrLib.h"
-
-#include "AxisCamera.h"
-#include "BaeUtilities.h"
-#include "FrcError.h"
-#include "Task.h"
-#include "Timer.h"
-#include "VisionAPI.h"
-
-#include <cstring>
-#include <cstdio>
-
-/** packet size */
-#define DEFAULT_PACKET_SIZE 512
-
-/** Private NI function to decode JPEG */
-IMAQ_FUNC int Priv_ReadJPEGString_C(Image* _image, const unsigned char* _string, uint32_t _stringLength);
-
-// To locally enable debug printing: set AxisCamera_debugFlag to a 1, to disable set to 0
-int AxisCamera_debugFlag = 0;
-#define DPRINTF if(AxisCamera_debugFlag)dprintf
-
-/** @brief Camera data to be accessed globally */
-struct {
- int readerPID; // Set to taskID for signaling
- int index; /* -1,0,1 */
- int acquire; /* 0:STOP CAMERA; 1:START CAMERA */
- int cameraReady; /* 0: CAMERA NOT INITIALIZED; 1: CAMERA INITIALIZED */
- int decode; /* 0:disable decoding; 1:enable decoding to HSL Image */
- struct {
- //
- // To find the latest image timestamp, access:
- // globalCamera.data[globalCamera.index].timestamp
- //
- double timestamp; // when image was taken
- char* cameraImage; // jpeg image string
- int cameraImageSize; // image size
- Image* decodedImage; // image decoded to NI Image object
- int decodedImageSize; // size of decoded image
- }data[2];
- int cameraMetrics[CAM_NUM_METRICS];
-}globalCamera;
-
-/* run flag */
-static short cont = 0;
-
-/**
- * @brief Get the most recent camera image.
- * Supports IMAQ_IMAGE_RGB and IMAQ_IMAGE_HSL.
- * @param image Image to return to; image must have been first created using frcCreateImage.
- * When you are done, use frcDispose.
- * @param timestamp Timestamp to return; will record the time at which the image was stored.
- * @param lastImageTimestamp Input - timestamp of last image; prevents serving of stale images
- * @return 0 is failure, 1 is success
- * @sa frcCreateImage(), frcDispose()
- */
-int GetImageBlocking(Image* image, double *timestamp, double lastImageTimestamp)
-{
- char funcName[]="GetImageBlocking";
- int success;
- double startTime = GetTime();
-
- while (1)
- {
- success = GetImage(image, timestamp);
- if (!success) return (success);
-
- if (*timestamp > lastImageTimestamp)
- return (1); // GOOD IMAGE RETURNED
-
- if (GetTime() > (startTime + MAX_BLOCKING_TIME_SEC))
- {
- imaqSetError(ERR_CAMERA_BLOCKING_TIMEOUT, funcName);
- globalCamera.cameraMetrics[CAM_BLOCKING_TIMEOUT]++;
- return (0); // NO IMAGE AVAILABLE WITHIN specified time
- }
- globalCamera.cameraMetrics[CAM_BLOCKING_COUNT]++;
- taskDelay (1);
- }
-}
-
-/**
- * @brief Verifies that the camera is initialized
- * @return 0 for failure, 1 for success
- */
-int CameraInitialized()
-{
- char funcName[]="CameraInitialized";
- int success = 0;
- /* check to see if camera is initialized */
- if (!globalCamera.cameraReady) {
- imaqSetError(ERR_CAMERA_NOT_INITIALIZED, funcName);
- DPRINTF (LOG_DEBUG, "Camera request before camera is initialized");
- globalCamera.cameraMetrics[CAM_GETIMAGE_BEFORE_INIT]++;
- globalCamera.cameraMetrics[CAM_GETIMAGE_FAILURE]++;
- return success;
- }
-
- if (globalCamera.index == -1){
- imaqSetError(ERR_CAMERA_NO_BUFFER_AVAILABLE, funcName);
- DPRINTF (LOG_DEBUG, "No camera image available");
- globalCamera.cameraMetrics[CAM_GETIMAGE_BEFORE_AVAILABLE]++;
- globalCamera.cameraMetrics[CAM_GETIMAGE_FAILURE]++;
- return success;
- }
- return 1;
-}
-
-/**
- * @brief Gets the most recent camera image, as long as it is not stale.
- * Supported image types: IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL
- * @param image Image to return, must have first been created with frcCreateImage or imaqCreate.
- * When you finish with the image, call frcDispose() to dispose of it.
- * @param timestamp Returned timestamp of when the image was taken from the camera
- * @return failure = 0, success = 1
- */
-int GetImage(Image* image, double *timestamp)
-{
- char funcName[]="GetImage";
- int success = 0;
- int readIndex;
- int readCount = 10;
- double currentTime = time(NULL);
- double currentImageTimestamp;
-
- /* check to see if camera is initialized */
-
- if (!CameraInitialized()) {return success;}
-
- /* try readCount times to get an image */
- while (readCount) {
- readIndex = globalCamera.index;
- if (!imaqDuplicate(image, globalCamera.data[readIndex].decodedImage)) {
- int errorCode = GetLastVisionError();
- DPRINTF (LOG_DEBUG,"Error duplicating image= %i %s ", errorCode, GetVisionErrorText(errorCode));
- }
- // save the timestamp to check before returning
- currentImageTimestamp = globalCamera.data[readIndex].timestamp;
-
- // make sure this buffer is not being written to now
- if (readIndex == globalCamera.index) break;
- readCount--;
- }
-
- /* were we successful ? */
- if (readCount){
- success = 1;
- if (timestamp != NULL)
- *timestamp = currentImageTimestamp; // Return image timestamp
- } else{
- globalCamera.cameraMetrics[CAM_GETIMAGE_FAILURE]++;
- }
-
- /* Ensure the buffered image is not too old - set this "stale time" above */
- if (currentTime > globalCamera.data[globalCamera.index].timestamp + CAMERA_IMAGE_STALE_TIME_SEC){
- DPRINTF (LOG_CRITICAL, "STALE camera image (THIS COULD BE A BAD IMAGE)");
- imaqSetError(ERR_CAMERA_STALE_IMAGE, funcName);
- globalCamera.cameraMetrics[CAM_STALE_IMAGE]++;
- globalCamera.cameraMetrics[CAM_GETIMAGE_FAILURE]++;
- success = 0;
- }
- globalCamera.cameraMetrics[CAM_GETIMAGE_SUCCESS]++;
- return success;
-}
-
-/**
- * @brief Method to get a raw image from the buffer
- * @param imageData returned image data
- * @param numBytes returned number of bytes in buffer
- * @param currentImageTimestamp returned buffer time of image data
- * @return 0 if failure; 1 if success
- */
-int GetImageData(char** imageData, int* numBytes, double* currentImageTimestamp)
-{
- int success = 0;
- int readIndex;
- int readCount = 10;
- int cameraImageSize;
- char *cameraImageString;
-
- /* check to see if camera is initialized */
-
- if (!CameraInitialized()) {return success;}
-
- /* try readCount times to get an image */
- while (readCount) {
- readIndex = globalCamera.index;
- cameraImageSize = globalCamera.data[readIndex].cameraImageSize;
- //cameraImageString = (Image *) malloc(cameraImageSize);
- cameraImageString = new char[cameraImageSize];
- if (NULL == cameraImageString) {
- DPRINTF (LOG_DEBUG, "Unable to allocate cameraImage");
- globalCamera.cameraMetrics[CAM_GETIMAGE_FAILURE]++;
- return success;
- }
- memcpy (cameraImageString, globalCamera.data[readIndex].cameraImage, cameraImageSize);
- *currentImageTimestamp = globalCamera.data[readIndex].timestamp;
- // make sure this buffer is not being written to now
- if (readIndex == globalCamera.index) break;
- free (cameraImageString);
- readCount--;
- }
- if (readCount){
- *imageData = cameraImageString;
- *numBytes = cameraImageSize;
- return 1;
- }
- return (OK);
-}
-
-/**
- * @brief Blocking call to get images for PC.
- * This should be called from a separate task to maintain camera read performance.
- * It is intended to be used for sending raw (undecoded) image data to the PC.
- * @param imageData image data to return
- * @param numBytes number of bytes in buffer
- * @param timestamp timestamp of buffer returned
- * @param lastImageTimestamp buffer time of last image data sent to PC
- * @return 0 if failure; 1 if success
- */
-int GetImageDataBlocking(char** imageData, int* numBytes, double* timestamp, double lastImageTimestamp)
-{
-
- char funcName[]="GetImageDataBlocking";
- int success;
- double startTime = GetTime();
-
- *imageData = NULL;
- while (1)
- {
- success = GetImageData(imageData, numBytes, timestamp);
- if (!success) return (success);
-
- if (*timestamp > lastImageTimestamp)
- return (1); // GOOD IMAGE DATA RETURNED
-
- delete *imageData;
- *imageData = NULL;
-
- if (GetTime() > (startTime + MAX_BLOCKING_TIME_SEC))
- {
- imaqSetError(ERR_CAMERA_BLOCKING_TIMEOUT, funcName);
- return (0); // NO IMAGE AVAILABLE WITHIN specified time
- }
- globalCamera.cameraMetrics[CAM_BLOCKING_COUNT]++;
- taskDelay (1);
- }
-}
-
-/**
- * @brief Accessor for camera instrumentation data
- * @param the counter queried
- * @return the counter value
- */
-int GetCameraMetric(FrcvCameraMetric metric)
-{ return globalCamera.cameraMetrics[metric]; }
-
-/**
- * @brief Close socket & report error
- * @param errstring String to print
- * @param socket Socket to close
- * @return error
- */
-int CameraCloseSocket(const char *errstring, int socket)
-{
- DPRINTF (LOG_CRITICAL, "Closing socket - CAMERA ERROR: %s", errstring );
- close (socket);
- return (ERROR);
-}
-
-
-/**
- * @brief Reads one line from the TCP stream.
- * @param camSock The socket.
- * @param buffer A buffer with bufSize allocated for it.
- * On return, bufSize-1 amount of data or data upto first line ending
- * whichever is smaller, null terminated.
- * @param bufSize The size of buffer.
- * @param stripLineEnding If true, strips the line ending chacters from the buffer before return.
- * @return 0 if failure; 1 if success
-*/
-static int CameraReadLine(int camSock, char* buffer, int bufSize, bool stripLineEnding) {
- char funcName[]="CameraReadLine";
- // Need at least 3 bytes in the buffer to pull this off.
- if (bufSize < 3) {
- imaqSetError(ERR_CAMERA_FAILURE, funcName);
- return 0;
- }
- // Reduce size by 1 to allow for null terminator.
- --bufSize;
- // Read upto bufSize characters.
- for (int i=0;i < bufSize;++i, ++buffer) {
- // Read one character.
- if (read (camSock, buffer, 1) <= 0) {
- imaqSetError(ERR_CAMERA_FAILURE, funcName);
- return 0;
- }
- // Line endings can be "\r\n" or just "\n". So always
- // look for a "\n". If you got just a "\n" and
- // stripLineEnding is false, then convert it into a \r\n
- // because callers expect a \r\n.
- // If the combination of the previous character and the current character
- // is "\r\n", the line ending
- if (*buffer=='\n') {
- // If asked to strip the line ending, then set the buffer to the previous
- // character.
- if (stripLineEnding) {
- if (i > 0 && *(buffer-1)=='\r') {
- --buffer;
- }
- }
- else {
- // If the previous character was not a '\r',
- if (i == 0 || *(buffer-1)!='\r') {
- // Make the current character a '\r'.
- *buffer = '\r';
- // If space permits, add back the '\n'.
- if (i < bufSize-1) {
- ++buffer;
- *buffer = '\n';
- }
- }
- // Set the buffer past the current character ('\n')
- ++buffer;
- }
- break;
- }
- }
- // Null terminate.
- *buffer = '\0';
- return 1;
-}
-
-/**
-@brief Skips read data until the first empty line.
-
-@param camSock An open tcp socket to the camera to read the data from.
-@return sucess 0 if failure; 1 if success
-*/
-static int CameraSkipUntilEmptyLine(int camSock) {
- char buffer[1024];
- int success = 0;
- while(1) {
- success = CameraReadLine(camSock, buffer, sizeof(buffer), true);
- if (*buffer == '\0') {
- return success;
- }
- }
- return success;
-}
-
-/**
-@brief Opens a socket.
-
-Issues the given http request with the required added information
-and authentication. It cycles through an array of predetermined
-encrypted username, password combinations that we expect the users
-to have at any point in time. If none of the username, password
-combinations work, it outputs a "Unknown user or password" error.
-If the request succeeds, it returns the socket number.
-
-@param serverName The information about the host from which this request originates
-@param request The request to send to the camera not including boilerplate or
- authentication. This is usually in the form of "GET <string>"
-@return int - failure = ERROR; success = socket number;
-*/
-static int CameraOpenSocketAndIssueAuthorizedRequest(const char* serverName, const char* request)
-{
- char funcName[]="cameraOpenSocketAndIssueAuthorizedRequest";
-
- struct sockaddr_in cameraAddr;
- int sockAddrSize;
- int camSock = ERROR;
-
- // The camera is expected to have one of the following username, password combinations.
- // This routine will return an error if it does not find one of these.
- static const char* authenticationStrings[] = {
- "RlJDOkZSQw==", /* FRC, FRC */
- "cm9vdDpwYXNz", /* root, admin*/
- "cm9vdDphZG1pbg==" /* root, pass*/
- };
-
- static const int numAuthenticationStrings = sizeof(authenticationStrings)/sizeof(authenticationStrings[0]);
-
- static const char *requestTemplate = "%s " \
- "HTTP/1.1\n" \
- "User-Agent: HTTPStreamClient\n" \
- "Connection: Keep-Alive\n" \
- "Cache-Control: no-cache\n" \
- "Authorization: Basic %s\n\n";
-
- int i = 0;
- for (;i < numAuthenticationStrings;++i) {
- char buffer[1024];
-
- sprintf(buffer, requestTemplate, request, authenticationStrings[i]);
-
- /* create camera socket */
- //DPRINTF (LOG_DEBUG, "creating camSock" );
- if ((camSock = socket (AF_INET, SOCK_STREAM, 0)) == ERROR) {
- imaqSetError(ERR_CAMERA_SOCKET_CREATE_FAILED, funcName);
- perror("Failed to create socket");
- return (ERROR);
- }
-
- sockAddrSize = sizeof (struct sockaddr_in);
- bzero ((char *) &cameraAddr, sockAddrSize);
- cameraAddr.sin_family = AF_INET;
- cameraAddr.sin_len = (u_char) sockAddrSize;
- cameraAddr.sin_port = htons (CAMERA_PORT);
-
- if (( (int)(cameraAddr.sin_addr.s_addr = inet_addr (const_cast<char*>(serverName)) ) == ERROR) &&
- ( (int)(cameraAddr.sin_addr.s_addr = hostGetByName (const_cast<char*>(serverName)) ) == ERROR))
- {
- imaqSetError(ERR_CAMERA_CONNECT_FAILED, funcName);
- return CameraCloseSocket("Failed to get IP, check hostname or IP", camSock);
- }
-
- //DPRINTF (LOG_INFO, "connecting camSock" );
- if (connect (camSock, (struct sockaddr *) &cameraAddr, sockAddrSize) == ERROR) {
- imaqSetError(ERR_CAMERA_CONNECT_FAILED, funcName);
- return CameraCloseSocket("Failed to connect to camera - check networ", camSock);
- }
-
- //DPRINTF (LOG_DEBUG, "writing GET request to camSock" );
- if (write (camSock, buffer, strlen(buffer) ) == ERROR) {
- imaqSetError(ERR_CAMERA_CONNECT_FAILED, funcName);
- return CameraCloseSocket("Failed to send GET request", camSock);
- }
-
- // Read one line with the line ending removed.
- if (!CameraReadLine(camSock, buffer, 1024, true)) {
- return CameraCloseSocket("Bad response to GET request", camSock);
- }
-
- // Check if the response is of the format HTTP/<version> 200 OK.
- float discard;
- if (sscanf(buffer, "HTTP/%f 200 OK", &discard) == 1) {
- break;
- }
-
- // We have to close the connection because in the case of failure
- // the server closes the connection.
- close(camSock);
- }
- // If none of the attempts were successful, then let the caller know.
- if (numAuthenticationStrings == i) {
- imaqSetError(ERR_CAMERA_AUTHORIZATION_FAILED, funcName);
- fprintf(stderr, "Expected username/password combination not found on camera");
- return ERROR;
- }
- return camSock;
-}
-
-
-/**
- * @brief Sends a configuration message to the camera
- * @param configString configuration message to the camera
- * @return success: 0=failure; 1=success
- */
-int ConfigureCamera(char *configString){
- char funcName[]="ConfigureCamera";
- const char *serverName = "192.168.0.90"; /* camera @ */
- int success = 0;
- int camSock = 0;
-
- /* Generate camera configuration string */
- const char * getStr1 =
- "GET /axis-cgi/admin/param.cgi?action=update&ImageSource.I0.Sensor.";
-
- char cameraRequest[strlen(getStr1) + strlen(configString)];
- sprintf (cameraRequest, "%s%s", getStr1, configString);
- DPRINTF(LOG_DEBUG, "camera configuration string: \n%s", cameraRequest);
- camSock = CameraOpenSocketAndIssueAuthorizedRequest(serverName, cameraRequest);
- DPRINTF(LOG_DEBUG, "camera socket# = %i", camSock);
-
- //read response
- success = CameraSkipUntilEmptyLine(camSock);
- //DPRINTF(LOG_DEBUG, "succcess from CameraSkipUntilEmptyLine: %i", success);
- char buffer[3]; // set property - 3
- success = CameraReadLine(camSock, buffer, 3, true);
- //DPRINTF(LOG_DEBUG, "succcess from CameraReadLine: %i", success);
- DPRINTF(LOG_DEBUG, "line read from camera \n%s", buffer);
- if (strcmp(buffer, "OK") != 0) {
- imaqSetError(ERR_CAMERA_COMMAND_FAILURE, funcName);
- DPRINTF(LOG_DEBUG, "setting ERR_CAMERA_COMMAND_FAILURE - OK not found");
- }
- DPRINTF (LOG_INFO, "\nConfigureCamera ENDING success = %i\n", success );
-
- /* clean up */
- close (camSock);
- return (1);
-}
-
-
-/**
- * @brief Sends a request message to the camera
- * @param configString request message to the camera
- * @param cameraResponse response from camera
- * @return success: 0=failure; 1=success
- */
-int GetCameraSetting(char *configString, char *cameraResponse){
- const char *serverName = "192.168.0.90"; /* camera @ */
- int success = 0;
- int camSock = 0;
-
- /* Generate camera request string */
- const char * getStr1 =
- "GET /axis-cgi/admin/param.cgi?action=list&group=ImageSource.I0.Sensor.";
- char cameraRequest[strlen(getStr1) + strlen(configString)];
- sprintf (cameraRequest, "%s%s", getStr1, configString);
- DPRINTF(LOG_DEBUG, "camera configuration string: \n%s", cameraRequest);
- camSock = CameraOpenSocketAndIssueAuthorizedRequest(serverName, cameraRequest);
- DPRINTF(LOG_DEBUG, "return from CameraOpenSocketAndIssueAuthorizedRequest %i", camSock);
-
- //read response
- success = CameraSkipUntilEmptyLine(camSock);
- success = CameraReadLine(camSock, cameraResponse, 1024, true);
- DPRINTF(LOG_DEBUG, "succcess from CameraReadLine: %i", success);
- DPRINTF(LOG_DEBUG, "line read from camera \n%s", cameraResponse);
- DPRINTF (LOG_INFO, "\nGetCameraSetting ENDING success = %i\n", success );
-
- /* clean up */
- close (camSock);
- return (1);
-}
-
-/**
- * @brief Sends a request message to the camera for image appearance property
- * (resolution, compression, rotation)
- * @param configString request message to the camera
- * @param cameraResponse response from camera
- * @return success: 0=failure; 1=success
- */
-int GetImageSetting(char *configString, char *cameraResponse){
- const char *serverName = "192.168.0.90"; /* camera @ */
- int success = 0;
- int camSock = 0;
-
- /* Generate camera request string */
- const char *getStr1 = "GET /axis-cgi/admin/param.cgi?action=list&group=Image.I0.Appearance.";
- char cameraRequest[strlen(getStr1) + strlen(configString)];
- sprintf (cameraRequest, "%s%s", getStr1, configString);
- DPRINTF(LOG_DEBUG, "camera configuration string: \n%s", cameraRequest);
- camSock = CameraOpenSocketAndIssueAuthorizedRequest(serverName, cameraRequest);
- DPRINTF(LOG_DEBUG, "return from CameraOpenSocketAndIssueAuthorizedRequest %i", camSock);
-
- //read response
- success = CameraSkipUntilEmptyLine(camSock);
- success = CameraReadLine(camSock, cameraResponse, 1024, true);
- DPRINTF(LOG_DEBUG, "succcess from CameraReadLine: %i", success);
- DPRINTF(LOG_DEBUG, "line read from camera \n%s", cameraResponse);
- DPRINTF (LOG_INFO, "\nGetCameraSetting ENDING success = %i\n", success );
-
- /* clean up */
- close (camSock);
- return (1);
-}
-
-
-#define MEASURE_SOCKET_TIME 1
-
-/**
- * @brief Manage access to the camera. Sets up sockets and reads images
- * @param frames Frames per second
- * @param compression Camera image compression
- * @param resolution Camera image size
- * @param rotation Camera image rotation
- * @return error
- */
-int cameraJPEGServer(int frames, int compression, ImageResolution resolution, ImageRotation rotation)
-{
- char funcName[]="cameraJPEGServer";
- char serverName[] = "192.168.0.90"; /* camera @ */
- cont = 1;
- int errorCode = 0;
- int printCounter = 0;
- int writeIndex;
- int authorizeCount = 0;
- int authorizeConfirmed = 0;
- static const int authenticationStringsCount = 3;
- static const char* authenticationStrings[] = {
- "cm9vdDphZG1pbg==", /* root, admin*/
- "RlJDOkZSQw==", /* FRC, FRC */
- "cm9vdDpwYXNz==" /* root, pass*/
- };
-
- DPRINTF (LOG_DEBUG, "cameraJPEGServer" );
-
- struct sockaddr_in cameraAddr;
- int sockAddrSize;
- int camSock = 0;
-
- char resStr[10];
- switch (resolution) {
- case k640x480: { sprintf(resStr,"640x480"); break; }
- case k320x240: { sprintf(resStr,"320x240"); break; }
- case k160x120: { sprintf(resStr,"160x120"); break; }
- default: {DPRINTF (LOG_DEBUG, "code error - resolution input" ); break; }
- }
-
- /* Generate camera initialization string */
- /* changed resolution to 160x120 from 320x240 */
- /* supported resolutions are: 640x480, 640x360, 320x240, 160x120 */
- const char * getStr1 =
- "GET /axis-cgi/mjpg/video.cgi?showlength=1&camera=1&";
-
- char insertStr[100];
- sprintf (insertStr, "des_fps=%i&compression=%i&resolution=%s&rotation=%i",
- frames, compression, resStr, (int)rotation);
-
- const char * getStr2 = " HTTP/1.1\n\
-User-Agent: HTTPStreamClient\n\
-Host: 192.150.1.100\n\
-Connection: Keep-Alive\n\
-Cache-Control: no-cache\n\
-Authorization: Basic %s;\n\n";
-
- char getStr[strlen(getStr1) + strlen(insertStr) + strlen(getStr2)];
- sprintf (getStr, "%s:%s%s", getStr1, insertStr, getStr2);
-
- DPRINTF(LOG_DEBUG, "revised camera string: \n%s", getStr);
- /* Allocation */
- char tempBuffer[1024];
-
- RETRY:
- Wait(0.1); //bug fix - don't pester camera if it's booting
- while (globalCamera.acquire == 0) Wait(0.1);
-
- if (!authorizeConfirmed){
- if (authorizeCount < authenticationStringsCount){
- sprintf (tempBuffer, getStr, authenticationStrings[authorizeCount]);
- } else {
- imaqSetError(ERR_CAMERA_AUTHORIZATION_FAILED, funcName);
- fprintf(stderr, "Camera authorization failed ... Incorrect password on camera!!");
- return (ERROR);
- }
- }
-
- while (1)
- {
- globalCamera.cameraMetrics[CAM_SOCKET_INIT_ATTEMPTS]++;
-
- /* create camera socket */
- DPRINTF (LOG_DEBUG, "creating camSock" );
- if ((camSock = socket (AF_INET, SOCK_STREAM, 0)) == ERROR) {
- imaqSetError(ERR_CAMERA_SOCKET_CREATE_FAILED, funcName);
- perror("Failed to create socket");
- cont = 0;
- return (ERROR);
- }
-
- sockAddrSize = sizeof (struct sockaddr_in);
- bzero ((char *) &cameraAddr, sockAddrSize);
- cameraAddr.sin_family = AF_INET;
- cameraAddr.sin_len = (u_char) sockAddrSize;
- cameraAddr.sin_port = htons (CAMERA_PORT);
-
- DPRINTF (LOG_DEBUG, "getting IP" );
- if (( (int)(cameraAddr.sin_addr.s_addr = inet_addr (serverName) ) == ERROR) &&
- ( (int)(cameraAddr.sin_addr.s_addr = hostGetByName (serverName) ) == ERROR))
- {
- CameraCloseSocket("Failed to get IP, check hostname or IP", camSock);
- continue;
- }
-
- DPRINTF (LOG_INFO, "Attempting to connect to camSock" );
- if (connect (camSock, (struct sockaddr *) &cameraAddr, sockAddrSize) == ERROR) {
- imaqSetError(ERR_CAMERA_CONNECT_FAILED, funcName);
- CameraCloseSocket("Failed to connect to camera - check network", camSock);
- continue;
- }
-
-#if MEASURE_SOCKET_SETUP
- socketEndTime = GetTime();
- setupTime = socketEndTime - socketStartTime;
- printf("\n***socket setup time = %g\n", setupTime );
-#endif
-
- globalCamera.cameraMetrics[CAM_SOCKET_OPEN]++;
- break;
- } // end while (trying to connect to camera)
-
- DPRINTF (LOG_DEBUG, "writing GET request to camSock" );
- if (write (camSock, tempBuffer , strlen(tempBuffer) ) == ERROR) {
- return CameraCloseSocket("Failed to send GET request", camSock);
- }
-
- //DPRINTF (LOG_DEBUG, "reading header" );
- /* Find content-length, then read that many bytes */
- int counter = 2;
- const char* contentString = "Content-Length: ";
- const char* authorizeString = "200 OK";
-
-#define MEASURE_TIME 0
-#if MEASURE_TIME
- //timing parameters - only measure one at the time
- double loopStartTime = 0.0; // measuring speed of execution loop
- double loopEndTime = 0.0;
- double cameraStartTime = 0.0;
- double cameraEndTime = 0.0;
- double previousStartTime = 0.0;
- int performanceLoopCounter = 0;
- int maxCount = 30;
-#endif
-
- while (cont) {
-#if MEASURE_TIME
- previousStartTime = loopStartTime; // first time is bogus
- loopStartTime = GetTime();
-#endif
- // If camera has been turned OFF, jump to RETRY
- //if (globalCamera.acquire == 0) goto RETRY;
-
- /* Determine writer index */
- if (globalCamera.index == 0)
- writeIndex = 1;
- else
- writeIndex = 0;
-
- /* read header */
- //TODO: check for error in header, increment ERR_CAMERA_HEADER_ERROR
- char initialReadBuffer[DEFAULT_PACKET_SIZE] = "";
- char intermediateBuffer[1];
- char *trailingPtr = initialReadBuffer;
- int trailingCounter = 0;
-
-
-#if MEASURE_TIME
- cameraStartTime = GetTime();
-#endif
-
- while (counter) {
- if (read (camSock, intermediateBuffer, 1) <= 0) {
- CameraCloseSocket("Failed to read image header", camSock);
- globalCamera.cameraMetrics[ERR_CAMERA_HEADER_ERROR]++;
- goto RETRY;
- }
-
- strncat(initialReadBuffer, intermediateBuffer, 1);
- if (NULL != strstr(trailingPtr, "\r\n\r\n")) {
-
- if (!authorizeConfirmed){
-
- if (strstr(initialReadBuffer, authorizeString))
- {
- authorizeConfirmed = 1;
- /* set camera to initialized */
- globalCamera.cameraReady = 1;
- }
- else
- {
- CameraCloseSocket("Not authorized to connect to camera", camSock);
- authorizeCount++;
- goto RETRY;
- }
- }
- --counter;
- }
- if (++trailingCounter >= 4) {
- trailingPtr++;
- }
- }
-
- counter = 1;
- char *contentLength = strstr(initialReadBuffer, contentString);
- if (contentLength == NULL) {
- globalCamera.cameraMetrics[ERR_CAMERA_HEADER_ERROR]++;
- CameraCloseSocket("No content-length token found in packet", camSock);
- goto RETRY;
- }
- /* get length of image content */
- contentLength = contentLength + strlen(contentString);
- globalCamera.data[writeIndex].cameraImageSize = atol (contentLength);
-
- if(globalCamera.data[writeIndex].cameraImage)
- free(globalCamera.data[writeIndex].cameraImage);
- //globalCamera.data[writeIndex].cameraImage = (Image *) malloc(globalCamera.data[writeIndex].cameraImageSize);
- globalCamera.data[writeIndex].cameraImage = (char*)malloc(globalCamera.data[writeIndex].cameraImageSize);
- if (NULL == globalCamera.data[writeIndex].cameraImage) {
- return CameraCloseSocket("Failed to allocate space for imageString", camSock);
- }
- globalCamera.cameraMetrics[CAM_BUFFERS_WRITTEN]++;
-
- //
- // This is a blocking camera read function, and will block if the camera
- // has been disconnected from the cRIO. If however the camera is
- // POWERED OFF while connected to the cRIO, this function NEVER RETURNS
- //
- int bytesRead = fioRead (camSock, (char *)globalCamera.data[writeIndex].cameraImage,
- globalCamera.data[writeIndex].cameraImageSize);
-
-#if MEASURE_TIME
- cameraEndTime = GetTime();
-#endif
-
- //DPRINTF (LOG_DEBUG, "Completed fioRead function - bytes read:%d", bytesRead);
- if (bytesRead <= 0) {
- CameraCloseSocket("Failed to read image data", camSock);
- goto RETRY;
- } else if (bytesRead != globalCamera.data[writeIndex].cameraImageSize){
- fprintf(stderr, "ERROR: Failed to read entire image: readLength does not match bytes read");
- globalCamera.cameraMetrics[CAM_BAD_IMAGE_SIZE]++;
- }
- // if decoding the JPEG to an HSL Image, do it here
- if (globalCamera.decode) {
- if(globalCamera.data[writeIndex].decodedImage)
- frcDispose(globalCamera.data[writeIndex].decodedImage);
- globalCamera.data[writeIndex].decodedImage = frcCreateImage(IMAQ_IMAGE_HSL);
- if (! Priv_ReadJPEGString_C(globalCamera.data[writeIndex].decodedImage,
- (const unsigned char *)globalCamera.data[writeIndex].cameraImage,
- globalCamera.data[writeIndex].cameraImageSize) ) {
- DPRINTF (LOG_DEBUG, "failure creating Image");
- }
- }
-
- // TODO: React to partial image
- globalCamera.data[writeIndex].timestamp = GetTime();
- globalCamera.index = writeIndex;
-
- /* signal a listening task */
- if (globalCamera.readerPID) {
- if (taskKill (globalCamera.readerPID,SIGUSR1) == OK)
- {
- DPRINTF (LOG_DEBUG, "SIGNALING PID= %i", globalCamera.readerPID);
- }
- else
- {
- globalCamera.cameraMetrics[CAM_PID_SIGNAL_ERR]++;
- DPRINTF (LOG_DEBUG, "ERROR SIGNALING PID= %i", globalCamera.readerPID);
- }
- }
-
- globalCamera.cameraMetrics[CAM_NUM_IMAGE]++;
- printCounter ++;
- if (printCounter == 1000) {
- DPRINTF (LOG_DEBUG, "imageCounter = %i", globalCamera.cameraMetrics[CAM_NUM_IMAGE]);
- printCounter=0;
- }
-
- taskDelay(1);
-
-#if MEASURE_TIME
- loopEndTime = GetTime();
- performanceLoopCounter++;
- if (performanceLoopCounter <= maxCount) {
- DPRINTF (LOG_DEBUG, "%i DONE!!!: loop = ,%g, camera = ,%g, difference = ,%g, loopRate= ,%g,",
- performanceLoopCounter, loopEndTime-loopStartTime, cameraEndTime-cameraStartTime,
- (loopEndTime-loopStartTime) - (cameraEndTime-cameraStartTime),
- loopStartTime-previousStartTime);
- }
-#endif
- } /* end while (cont) */
-
- /* clean up */
- close (camSock);
- cont = 0;
- DPRINTF (LOG_INFO, "\nJPEG SERVER ENDING errorCode = %i\n", errorCode );
-
- return (OK);
-}
-
-/**
- * @brief Start signaling a task when new images are available
- * @param taskID number for task to get the signal
- */
-void StartImageSignal(int taskId) // Start issuing a SIGUSR1 signal to the specified taskId
-{ globalCamera.readerPID = taskId; }
-
-/**
- * @brief Start serving images
- */
-void StartImageAcquisition()
-{
- globalCamera.cameraMetrics[CAM_STARTS]++;
- globalCamera.acquire = 1;
- DPRINTF(LOG_DEBUG, "starting acquisition");
-}
-
-
-/**
- * @brief Stop serving images
- */
-void StopImageAcquisition()
-{ globalCamera.cameraMetrics[CAM_STOPS]++; globalCamera.acquire = 0; }
-
-
-/**
- * @brief This is the routine that is run when the task is spawned
- * It initializes the camera with the image settings passed in, and
- * starts image acquisition.
- * @param frames Frames per second
- * @param compression Camera image compression
- * @param resolution Camera image size
- * @param rotation Camera image rotation
- */
-static int initCamera(int frames, int compression, ImageResolution resolution, ImageRotation rotation)
-{
- //SetDebugFlag ( DEBUG_SCREEN_AND_FILE ) ;
-
- DPRINTF(LOG_DEBUG, "\n+++++ camera task starting: rotation = %i", (int)rotation);
- int errorCode;
-
- /* Initialize globalCamera area
- * Set decode to 1 - always want to decode images for processing
- * If ONLY sending images to the dashboard, you could set it to 0 */
- bzero ((char *)&globalCamera, sizeof(globalCamera));
- globalCamera.index = -1;
- globalCamera.decode = 1;
-
- /* allow writing to vxWorks target */
- Priv_SetWriteFileAllowed(1);
-
- /* start acquisition immediately */
- StartImageAcquisition();
-
- /* cameraJPEGServer runs until camera is stopped */
- DPRINTF (LOG_DEBUG, "calling cameraJPEGServer" );
- errorCode = cameraJPEGServer(frames, compression, resolution, rotation);
- DPRINTF (LOG_INFO, "errorCode from cameraJPEGServer = %i\n", errorCode );
- return (OK);
-}
-
-Task g_axisCameraTask("Camera", (FUNCPTR)initCamera);
-
-/**
- * @brief Start the camera task
- * @param frames Frames per second
- * @param compression Camera image compression
- * @param resolution Camera image size
- * @param rotation Camera image rotation (ROT_0 or ROT_180)
- * @return TaskID of camera task, or -1 if error.
- */
-int StartCameraTask()
-{
- return StartCameraTask(10, 0, k160x120, ROT_0);
-}
-int StartCameraTask(int frames, int compression, ImageResolution resolution, ImageRotation rotation)
-{
- char funcName[]="startCameraTask";
- DPRINTF(LOG_DEBUG, "starting camera");
-
- int cameraTaskID = 0;
-
- //range check
- if (frames < 1) frames = 1;
- else if (frames > 30) frames = 30;
- if (compression < 0) compression = 0;
- else if (compression > 100) compression = 100;
-
- // stop any prior copy of running task
- StopCameraTask();
-
- // spawn camera task
- bool started = g_axisCameraTask.Start(frames, compression, resolution, rotation);
- cameraTaskID = g_axisCameraTask.GetID();
- DPRINTF(LOG_DEBUG, "spawned task id %i", cameraTaskID);
-
- if (!started) {
- DPRINTF(LOG_DEBUG, "camera task failed to start");
- imaqSetError(ERR_CAMERA_TASK_SPAWN_FAILED, funcName);
- return -1;
- }
- return cameraTaskID;
-}
-
-/**
- * @brief Stops the camera task
- * @return TaskID of camera task killed, or -1 if none was running.
- */
-int StopCameraTask()
-{
- std::string taskName("FRC_Camera");
- // check for prior copy of running task
- int oldTaskID = taskNameToId(const_cast<char*>(taskName.c_str()));
- if(oldTaskID != ERROR) { taskDelete(oldTaskID); }
- return oldTaskID;
-}
-
-#if 0
-/* if you want to run this task by itself to debug
- * enable this code and make RunProgram the entry point
- */
-extern "C"
-{
-void RunProgram();
-int AxisCamera_StartupLibraryInit();
-}
-/** * @brief Start point of the program */
-void RunProgram()
-{ StartCameraTask();}
-
-/** * @brief This is the main program that is run by the debugger or the robot on boot. */
-int AxisCamera_StartupLibraryInit()
- { RunProgram(); return 0; }
-
-#endif
-
-
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.h b/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.h
deleted file mode 100644
index 16815a8..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/AxisCamera.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : AxisCamera.h
-* Contributors : ELF
-* Creation Date : August 12, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Globally defined values for the FRC Camera API
-*
-* API: Because nivision.h uses C++ style comments, any file including this
-* must be a .cpp instead of .c.
-*
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 __AXISCAMERA_H__
-#define __AXISCAMERA_H__
-
-#include "nivision.h"
-
-/** port for communicating with camera */
-#define CAMERA_PORT 80
-/** how old an image is before it's discarded */
-#define CAMERA_IMAGE_STALE_TIME_SEC 2.0
-/** time to wait for a new image in blocking call */
-#define MAX_BLOCKING_TIME_SEC 0.5
-
-/* Enumerated Types */
-/** @brief Counters for camera metrics */
-enum FrcvCameraMetric {CAM_STARTS, CAM_STOPS,
- CAM_NUM_IMAGE, CAM_BUFFERS_WRITTEN, CAM_BLOCKING_COUNT,
-
- CAM_SOCKET_OPEN, CAM_SOCKET_INIT_ATTEMPTS, CAM_BLOCKING_TIMEOUT,
- CAM_GETIMAGE_SUCCESS, CAM_GETIMAGE_FAILURE,
-
- CAM_STALE_IMAGE, CAM_GETIMAGE_BEFORE_INIT, CAM_GETIMAGE_BEFORE_AVAILABLE,
- CAM_READ_JPEG_FAILURE, CAM_PID_SIGNAL_ERR,
-
- CAM_BAD_IMAGE_SIZE, CAM_HEADER_ERROR};
-
-#define CAM_NUM_METRICS 17
-
-/** Private NI function needed to write to the VxWorks target */
-IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable);
-
-/**
-@brief Possible image sizes that you can set on the camera.
-*/
-enum ImageResolution { k640x480, k320x240, k160x120 };
-
-/**
-@brief Possible rotation values that you can set on the camera.
-*/
-enum ImageRotation { ROT_0 = 0, ROT_180 = 180 };
-
-
-
-int StartCameraTask();
-
-extern "C" {
-/* Image Acquisition functions */
-/* obtains an image from the camera server */
-int GetImage(Image* cameraImage, double *timestamp);
-int GetImageBlocking(Image* cameraImage, double *timestamp, double lastImageTimestamp);
-/* obtains raw image string to send to PC */
-int GetImageData(char** imageData, int* numBytes, double* currentImageTimestamp);
-int GetImageDataBlocking(char** imageData, int* numBytes, double* timestamp, double lastImageTimestamp);
-
-/* start the camera server */
-void StartImageAcquisition();
-void StopImageAcquisition();
-void StartImageSignal(int taskId);
-
-/* status & metrics */
-int frcCameraInitialized();
-int GetCameraMetric(FrcvCameraMetric metric);
-
-/* camera configuration */
-int ConfigureCamera(char *configString);
-int GetCameraSetting(char *configString, char *cameraResponse);
-int GetImageSetting(char *configString, char *cameraResponse);
-
-/* camera task control */
-
-int StartCameraTask(int frames, int compression, ImageResolution resolution, ImageRotation rotation);
-int StopCameraTask();
-}
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.cpp b/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.cpp
deleted file mode 100644
index 4be8275..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : BaeUtilities.cpp
-* Contributors : JDG, ELF, EMF
-* Creation Date : July 20, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Open source utility extensions for FIRST Vision API.
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-#include <math.h>
-#include <stdioLib.h>
-
-#include "BaeUtilities.h"
-#include "Servo.h"
-#include "Timer.h"
-
-/**
- * Utility functions
- */
-
-/**
- * debug output flag options:
- * DEBUG_OFF, DEBUG_MOSTLY_OFF, DEBUG_SCREEN_ONLY, DEBUG_FILE_ONLY, DEBUG_SCREEN_AND_FILE
- */
-static DebugOutputType dprintfFlag = DEBUG_OFF;
-
-/**
- * Set the debug flag to print to screen, file on cRIO, both or neither
- * @param tempString The format string.
- */
-void SetDebugFlag ( DebugOutputType flag )
-{ dprintfFlag = flag; }
-
-/**
- * Debug print to a file and/or a terminal window.
- * Call like you would call printf.
- * Set functionName in the function if you want the correct function name to print out.
- * The file line number will also be printed.
- * @param tempString The format string.
- */
-void dprintf ( const char * tempString, ... ) /* Variable argument list */
-{
- va_list args; /* Input argument list */
- int line_number; /* Line number passed in argument */
- int type;
- const char *functionName; /* Format passed in argument */
- const char *fmt; /* Format passed in argument */
- char text[512]; /* Text string */
- char outtext[512]; /* Text string */
- FILE *outfile_fd; /* Output file pointer */
- char filepath[128]; /* Text string */
- int fatalFlag=0;
- const char *filename;
- int index;
- int tempStringLen;
-
- if (dprintfFlag == DEBUG_OFF) { return; }
-
- va_start (args, tempString);
-
- tempStringLen = strlen(tempString);
- filename = tempString;
- for (index=0;index<tempStringLen;index++){
- if (tempString[index] == ' ') {
- printf( "ERROR in dprintf: malformed calling sequence (%s)\n",tempString);return;
- }
- if (tempString[index] == '\\' || tempString[index] == '/')
- filename = tempString + index + 1;
- }
-
- /* Extract function name */
- functionName = va_arg (args, const char *);
-
- /* Extract line number from argument list */
- line_number = va_arg (args, int);
-
- /* Extract information type from argument list */
- type = va_arg (args, int);
-
- /* Extract format from argument list */
- fmt = va_arg (args, const char *);
-
- vsprintf (text, fmt, args);
-
- va_end (args);
-
- /* Format output statement */
- switch (type)
- {
- case DEBUG_TYPE:
- sprintf (outtext, "[%s:%s@%04d] DEBUG %s\n",
- filename, functionName, line_number, text);
- break;
- case INFO_TYPE:
- sprintf (outtext, "[%s:%s@%04d] INFO %s\n",
- filename, functionName, line_number, text);
- break;
- case ERROR_TYPE:
- sprintf (outtext, "[%s:%s@%04d] ERROR %s\n",
- filename, functionName, line_number, text);
- break;
- case CRITICAL_TYPE:
- sprintf (outtext, "[%s:%s@%04d] CRITICAL %s\n",
- filename, functionName, line_number, text);
- break;
- case FATAL_TYPE:
- fatalFlag = 1;
- sprintf (outtext, "[%s:%s@%04d] FATAL %s\n",
- filename, functionName, line_number, text);
- break;
- default:
- printf( "ERROR in dprintf: malformed calling sequence\n");
- return;
- break;
- }
-
- sprintf (filepath, "%s.debug", filename);
-
- /* Write output statement */
- switch (dprintfFlag)
- {
- default:
- case DEBUG_OFF:
- break;
- case DEBUG_MOSTLY_OFF:
- if (fatalFlag) {
- if ((outfile_fd = fopen (filepath, "a+")) != NULL) {
- fwrite (outtext, sizeof (char), strlen (outtext), outfile_fd);
- fclose (outfile_fd);
- }
- }
- break;
- case DEBUG_SCREEN_ONLY:
- printf ("%s", outtext);
- break;
- case DEBUG_FILE_ONLY:
- if ((outfile_fd = fopen (filepath, "a+")) != NULL) {
- fwrite (outtext, sizeof (char), strlen (outtext), outfile_fd);
- fclose (outfile_fd);
- }
- break;
- case DEBUG_SCREEN_AND_FILE: // BOTH
- printf ("%s", outtext);
- if ((outfile_fd = fopen (filepath, "a+")) != NULL) {
- fwrite (outtext, sizeof (char), strlen (outtext), outfile_fd);
- fclose (outfile_fd);
- }
- break;
- }
-}
-
-/**
- * @brief Normalizes a value in a range, used for drive input
- * @param position The position in the range, starting at 0
- * @param range The size of the range that position is in
- * @return The normalized position from -1 to +1
- */
-double RangeToNormalized(double position, int range){
- return(((position*2.0)/(double)range)-1.0);
-}
-
-/**
- * @brief Convert a normalized value to the corresponding value in a range.
- * This is used to convert normalized values to the servo command range.
- * @param normalizedValue The normalized value (in the -1 to +1 range)
- * @param minRange The minimum of the range (0 is default)
- * @param maxRange The maximum of the range (1 is default)
- * @return The value in the range corresponding to the input normalized value
- */
-float NormalizeToRange(float normalizedValue, float minRange, float maxRange) {
- float range = maxRange-minRange;
- float temp = (float)((normalizedValue / 2.0)+ 0.5)*range;
- return (temp + minRange);
-}
-float NormalizeToRange(float normalizedValue) {
- return (float)((normalizedValue / 2.0) + 0.5);
-}
-
-/**
- * @brief Displays an activity indicator to console.
- * Call this function like you would call printf.
- * @param fmt The format string
-*/
-void ShowActivity (char *fmt, ...)
-{
- static char activity_indication_string[] = "|/-\\";
- static int ai = 3;
- va_list args;
- char text[1024];
-
- va_start (args, fmt);
-
- vsprintf (text, fmt, args);
-
- ai = ai == 3 ? 0 : ai + 1;
-
- printf ("%c %s \r", activity_indication_string[ai], text);
- fflush (stdout);
-
- va_end (args);
-}
-
-#define PI 3.14159265358979
-/**
- * @brief Calculate sine wave increments (-1.0 to 1.0).
- * The first time this is called, it sets up the time increment. Subsequent calls
- * will give values along the sine wave depending on current time. If the wave is
- * stopped and restarted, it must be reinitialized with a new "first call".
- *
- * @param period length of time to complete a complete wave
- * @param sinStart Where to start the sine wave (0.0 = 2 pi, pi/2 = 1.0, etc.)
- */
-double SinPosition (double *period, double sinStart)
-{
- double rtnVal;
- static double sinePeriod=0.0;
- static double timestamp;
- double sinArg;
-
- //1st call
- if (period != NULL) {
- sinePeriod = *period;
- timestamp = GetTime();
- return 0.0;
- }
-
- //Multiplying by 2*pi to the time difference makes sinePeriod work if it's measured in seconds.
- //Adding sinStart to the part multiplied by PI, but not by 2, allows it to work as described in the comments.
- sinArg = PI *((2.0 * (GetTime() - timestamp)) + sinStart) / sinePeriod;
- rtnVal = sin (sinArg);
- return (rtnVal);
-}
-
-
-/**
- * @brief Find the elapsed time since a specified time.
- * @param startTime The starting time
- * @return How long it has been since the starting time
- */
-double ElapsedTime ( double startTime )
-{
- double realTime = GetTime();
- return (realTime-startTime);
-}
-
-/**
- * @brief Initialize pan parameters
- * @param period The number of seconds to complete one pan
- */
-void panInit() {
- double period = 3.0; // number of seconds for one complete pan
- SinPosition(&period, 0.0); // initial call to set up time
-}
-
-void panInit(double period) {
- if (period < 0.0) period=3.0;
- SinPosition(&period, 0.0); // initial call to set up time
-}
-
-/**
- * @brief Move the horizontal servo back and forth.
- * @param panServo The servo object to move
- * @param sinStart The position on the sine wave to begin the pan
- */
-void panForTarget(Servo *panServo) { panForTarget(panServo, 0.0); }
-
-void panForTarget(Servo *panServo, double sinStart) {
- float normalizedSinPosition = (float)SinPosition(NULL, sinStart);
- float newServoPosition = NormalizeToRange(normalizedSinPosition);
- panServo->Set( newServoPosition );
- //ShowActivity ("pan x: normalized %f newServoPosition = %f" ,
- // normalizedSinPosition, newServoPosition );
-}
-
-
-/** @brief Read a file and return non-comment output string
-
-Call the first time with 0 lineNumber to get the number of lines to read
-Then call with each lineNumber to get one camera parameter. There should
-be one property=value entry on each line, i.e. "exposure=auto"
-
- * @param inputFile filename to read
- * @param outputString one string
- * @param lineNumber if 0, return number of lines; else return that line number
- * @return int number of lines or -1 if error
- **/
-int processFile(char *inputFile, char *outputString, int lineNumber)
-{
- FILE *infile;
- int stringSize = 80; // max size of one line in file
- char inputStr[stringSize];
- int lineCount=0;
-
- if (lineNumber < 0)
- return (-1);
-
- if ((infile = fopen (inputFile, "r")) == NULL) {
- printf ("Fatal error opening file %s\n",inputFile);
- return (0);
- }
-
- while (!feof(infile)) {
- if (fgets (inputStr, stringSize, infile) != NULL) {
- // Skip empty lines
- if (emptyString(inputStr))
- continue;
- // Skip comment lines
- if (inputStr[0] == '#' || inputStr[0] == '!')
- continue;
-
- lineCount++;
- if (lineNumber == 0)
- continue;
- else
- {
- if (lineCount == lineNumber)
- break;
- }
- }
- }
-
- // close file
- fclose (infile);
- // if number lines requested return the count
- if (lineNumber == 0)
- return (lineCount);
- // check for input out of range
- if (lineNumber > lineCount)
- return (-1);
- // return the line selected
- if (lineCount) {
- stripString(inputStr);
- strcpy(outputString, inputStr);
- return(lineCount);
- }
- else {
- return(-1);
- }
-}
-
-/** Ignore empty string
- * @param string to check if empty
- **/
-int emptyString(char *string)
-{
- int i,len;
-
- if(string == NULL)
- return(1);
-
- len = strlen(string);
- for(i=0; i<len; i++) {
- // Ignore the following characters
- if (string[i] == '\n' || string[i] == '\r' ||
- string[i] == '\t' || string[i] == ' ')
- continue;
- return(0);
- }
- return(1);
-}
-
-/** Remove special characters from string
- * @param string to process
- **/
-void stripString(char *string)
-{
- int i,j,len;
-
- if(string == NULL)
- return;
-
- len = strlen(string);
- for(i=0,j=0; i<len; i++) {
- // Remove the following characters from the string
- if (string[i] == '\n' || string[i] == '\r' || string[i] == '\"')
- continue;
- // Copy anything else
- string[j++] = string[i];
- }
- string[j] = '\0';
-}
-
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.h b/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.h
deleted file mode 100644
index 318fcb6..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/BaeUtilities.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : BaeUtilities.h
-* Contributors : JDG, ELF
-* Creation Date : August 12, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Globally defined values for utilities
-*/
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved. */
-/* Open Source Software - may be modified and shared by FRC teams. */
-/* Must be accompanied by the BSD license file in $(WIND_BASE)/WPILib. */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __BAEUTILITIES_H__
-#define __BAEUTILITIES_H__
-
-/* Constants */
-#define LOG_DEBUG __FILE__,__FUNCTION__,__LINE__,DEBUG_TYPE
-#define LOG_INFO __FILE__,__FUNCTION__,__LINE__,INFO_TYPE
-#define LOG_ERROR __FILE__,__FUNCTION__,__LINE__,ERROR_TYPE
-#define LOG_CRITICAL __FILE__,__FUNCTION__,__LINE__,CRITICAL_TYPE
-#define LOG_FATAL __FILE__,__FUNCTION__,__LINE__,FATAL_TYPE
-#define LOG_DEBUG __FILE__,__FUNCTION__,__LINE__,DEBUG_TYPE
-
-/* Enumerated Types */
-
-/** debug levels */
-enum dprint_type {DEBUG_TYPE, INFO_TYPE, ERROR_TYPE, CRITICAL_TYPE, FATAL_TYPE};
-
-/** debug output setting */
-typedef enum DebugOutputType_enum {
- DEBUG_OFF, DEBUG_MOSTLY_OFF, DEBUG_SCREEN_ONLY, DEBUG_FILE_ONLY, DEBUG_SCREEN_AND_FILE
-}DebugOutputType;
-
-/* Enumerated Types */
-
-/* Utility functions */
-
-/* debug */
-void SetDebugFlag ( DebugOutputType flag );
-void dprintf ( const char * tempString, ... ); /* Variable argument list */
-
-/* set FRC ranges for drive */
-double RangeToNormalized(double pixel, int range);
-/* change normalized value to any range - used for servo */
-float NormalizeToRange(float normalizedValue, float minRange, float maxRange);
-float NormalizeToRange(float normalizedValue);
-
-/* system utilities */
-void ShowActivity (char *fmt, ...);
-double ElapsedTime (double startTime);
-
-/* servo panning utilities */
-class Servo;
-double SinPosition (double *period, double sinStart);
-void panInit();
-void panInit(double period);
-void panForTarget(Servo *panServo);
-void panForTarget(Servo *panServo, double sinStart);
-
-/* config file read utilities */
-int processFile(char *inputFile, char *outputString, int lineNumber);
-int emptyString(char *string);
-void stripString(char *string);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/FrcError.cpp b/aos/externals/WPILib/WPILib/Vision2009/FrcError.cpp
deleted file mode 100644
index 2addfd1..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/FrcError.cpp
+++ /dev/null
@@ -1,1235 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : FrcError.cpp
-* Contributors : JDG, ELF
-* Creation Date : July 20, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Error handling functionality for C routines
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 "nivision.h"
-#include "FrcError.h"
-
-/**
- * Get the error code returned from the NI Vision library
- * @return The last error code.
- */
-int GetLastVisionError()
-{
- //int errorCode = imaqGetLastVisionError(); // error code: 0 = no error
- //char* errorText = GetVisionErrorText(errorCode);
- //dprintf (LOG_DEBUG, "Error = %i %s ", errorCode, errorText);
- return imaqGetLastError();
-}
-
-/**
-* Get the error text for an NI Vision error code.
-* Note: imaqGetErrorText() is not supported on real time system, so
-* so relevant strings are hardcoded here - the maintained version is
-* in the LabWindows/CVI help file.
-* @param errorCode The error code to find the text for.
-* @return The error text
-*/
-const char* GetVisionErrorText(int errorCode)
-{
- const char* errorText;
-
- switch (errorCode)
- {
- default:
- { errorText = "UNKNOWN_ERROR";break;}
- case -1074395138:
- { errorText = "ERR_OCR_REGION_TOO_SMALL";break;}
- case -1074395139:
- { errorText = "ERR_IMAQ_QR_DIMENSION_INVALID";break;}
- case -1074395140:
- { errorText = "ERR_OCR_CHAR_REPORT_CORRUPTED";break;}
- case -1074395141:
- { errorText = "ERR_OCR_NO_TEXT_FOUND";break;}
- case -1074395142:
- { errorText = "ERR_QR_DETECTION_MODELTYPE";break;}
- case -1074395143:
- { errorText = "ERR_QR_DETECTION_MODE";break;}
- case -1074395144:
- { errorText = "ERR_QR_INVALID_BARCODE";break;}
- case -1074395145:
- { errorText = "ERR_QR_INVALID_READ";break;}
- case -1074395146:
- { errorText = "ERR_QR_DETECTION_VERSION";break;}
- case -1074395147:
- { errorText = "ERR_BARCODE_RSSLIMITED";break;}
- case -1074395148:
- { errorText = "ERR_OVERLAY_GROUP_NOT_FOUND";break;}
- case -1074395149:
- { errorText = "ERR_DUPLICATE_TRANSFORM_TYPE";break;}
- case -1074395151:
- { errorText = "ERR_OCR_CORRECTION_FAILED";break;}
- case -1074395155:
- { errorText = "ERR_OCR_ORIENT_DETECT_FAILED";break;}
- case -1074395156:
- { errorText = "ERR_OCR_SKEW_DETECT_FAILED";break;}
- case -1074395158:
- { errorText = "ERR_OCR_INVALID_CONTRASTMODE";break;}
- case -1074395159:
- { errorText = "ERR_OCR_INVALID_TOLERANCE";break;}
- case -1074395160:
- { errorText = "ERR_OCR_INVALID_MAXPOINTSIZE";break;}
- case -1074395161:
- { errorText = "ERR_OCR_INVALID_CORRECTIONLEVEL";break;}
- case -1074395162:
- { errorText = "ERR_OCR_INVALID_CORRECTIONMODE";break;}
- case -1074395163:
- { errorText = "ERR_OCR_INVALID_CHARACTERPREFERENCE";break;}
- case -1074395164:
- { errorText = "ERR_OCR_ADD_WORD_FAILED";break;}
- case -1074395165:
- { errorText = "ERR_OCR_WTS_DIR_NOT_FOUND";break;}
- case -1074395166:
- { errorText = "ERR_OCR_BIN_DIR_NOT_FOUND";break;}
- case -1074395167:
- { errorText = "ERR_OCR_INVALID_OUTPUTDELIMITER";break;}
- case -1074395168:
- { errorText = "ERR_OCR_INVALID_AUTOCORRECTIONMODE";break;}
- case -1074395169:
- { errorText = "ERR_OCR_INVALID_RECOGNITIONMODE";break;}
- case -1074395170:
- { errorText = "ERR_OCR_INVALID_CHARACTERTYPE";break;}
- case -1074395171:
- { errorText = "ERR_OCR_INI_FILE_NOT_FOUND";break;}
- case -1074395172:
- { errorText = "ERR_OCR_INVALID_CHARACTERSET";break;}
- case -1074395173:
- { errorText = "ERR_OCR_INVALID_LANGUAGE";break;}
- case -1074395174:
- { errorText = "ERR_OCR_INVALID_AUTOORIENTMODE";break;}
- case -1074395175:
- { errorText = "ERR_OCR_BAD_USER_DICTIONARY";break;}
- case -1074395178:
- { errorText = "ERR_OCR_RECOGNITION_FAILED";break;}
- case -1074395179:
- { errorText = "ERR_OCR_PREPROCESSING_FAILED";break;}
- case -1074395200:
- { errorText = "ERR_OCR_INVALID_PARAMETER";break;}
- case -1074395201:
- { errorText = "ERR_OCR_LOAD_LIBRARY";break;}
- case -1074395203:
- { errorText = "ERR_OCR_LIB_INIT";break;}
- case -1074395210:
- { errorText = "ERR_OCR_CANNOT_MATCH_TEXT_TEMPLATE";break;}
- case -1074395211:
- { errorText = "ERR_OCR_BAD_TEXT_TEMPLATE";break;}
- case -1074395212:
- { errorText = "ERR_OCR_TEMPLATE_WRONG_SIZE";break;}
- case -1074395233:
- { errorText = "ERR_TEMPLATE_IMAGE_TOO_LARGE";break;}
- case -1074395234:
- { errorText = "ERR_TEMPLATE_IMAGE_TOO_SMALL";break;}
- case -1074395235:
- { errorText = "ERR_TEMPLATE_IMAGE_CONTRAST_TOO_LOW";break;}
- case -1074395237:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_SHIFT_1";break;}
- case -1074395238:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_NOSHIFT";break;}
- case -1074395239:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_SHIFT";break;}
- case -1074395240:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_ROTATION_1";break;}
- case -1074395241:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_NOROTATION";break;}
- case -1074395242:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_ROTATION";break;}
- case -1074395243:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_4";break;}
- case -1074395244:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_3";break;}
- case -1074395245:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_2";break;}
- case -1074395246:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR_1";break;}
- case -1074395247:
- { errorText = "ERR_TEMPLATE_DESCRIPTOR";break;}
- case -1074395248:
- { errorText = "ERR_TOO_MANY_ROTATION_ANGLE_RANGES";break;}
- case -1074395249:
- { errorText = "ERR_ROTATION_ANGLE_RANGE_TOO_LARGE";break;}
- case -1074395250:
- { errorText = "ERR_MATCH_SETUP_DATA";break;}
- case -1074395251:
- { errorText = "ERR_INVALID_MATCH_MODE";break;}
- case -1074395252:
- { errorText = "ERR_LEARN_SETUP_DATA";break;}
- case -1074395253:
- { errorText = "ERR_INVALID_LEARN_MODE";break;}
- case -1074395256:
- { errorText = "ERR_EVEN_WINDOW_SIZE";break;}
- case -1074395257:
- { errorText = "ERR_INVALID_EDGE_DIR";break;}
- case -1074395258:
- { errorText = "ERR_BAD_FILTER_WIDTH";break;}
- case -1074395260:
- { errorText = "ERR_HEAP_TRASHED";break;}
- case -1074395261:
- { errorText = "ERR_GIP_RANGE";break;}
- case -1074395262:
- { errorText = "ERR_LCD_BAD_MATCH";break;}
- case -1074395263:
- { errorText = "ERR_LCD_NO_SEGMENTS";break;}
- case -1074395265:
- { errorText = "ERR_BARCODE";break;}
- case -1074395267:
- { errorText = "ERR_COMPLEX_ROOT";break;}
- case -1074395268:
- { errorText = "ERR_LINEAR_COEFF";break;}
- case -1074395269:
- { errorText = "ERR_NULL_POINTER";break;}
- case -1074395270:
- { errorText = "ERR_DIV_BY_ZERO";break;}
- case -1074395275:
- { errorText = "ERR_INVALID_BROWSER_IMAGE";break;}
- case -1074395276:
- { errorText = "ERR_LINES_PARALLEL";break;}
- case -1074395277:
- { errorText = "ERR_BARCODE_CHECKSUM";break;}
- case -1074395278:
- { errorText = "ERR_LCD_NOT_NUMERIC";break;}
- case -1074395279:
- { errorText = "ERR_ROI_NOT_POLYGON";break;}
- case -1074395280:
- { errorText = "ERR_ROI_NOT_RECT";break;}
- case -1074395281:
- { errorText = "ERR_IMAGE_SMALLER_THAN_BORDER";break;}
- case -1074395282:
- { errorText = "ERR_CANT_DRAW_INTO_VIEWER";break;}
- case -1074395283:
- { errorText = "ERR_INVALID_RAKE_DIRECTION";break;}
- case -1074395284:
- { errorText = "ERR_INVALID_EDGE_PROCESS";break;}
- case -1074395285:
- { errorText = "ERR_INVALID_SPOKE_DIRECTION";break;}
- case -1074395286:
- { errorText = "ERR_INVALID_CONCENTRIC_RAKE_DIRECTION";break;}
- case -1074395287:
- { errorText = "ERR_INVALID_LINE";break;}
- case -1074395290:
- { errorText = "ERR_SHAPEMATCH_BADTEMPLATE";break;}
- case -1074395291:
- { errorText = "ERR_SHAPEMATCH_BADIMAGEDATA";break;}
- case -1074395292:
- { errorText = "ERR_POINTS_ARE_COLLINEAR";break;}
- case -1074395293:
- { errorText = "ERR_CONTOURID_NOT_FOUND";break;}
- case -1074395294:
- { errorText = "ERR_CONTOUR_INDEX_OUT_OF_RANGE";break;}
- case -1074395295:
- { errorText = "ERR_INVALID_INTERPOLATIONMETHOD_INTERPOLATEPOINTS";break;}
- case -1074395296:
- { errorText = "ERR_INVALID_BARCODETYPE";break;}
- case -1074395297:
- { errorText = "ERR_INVALID_PARTICLEINFOMODE";break;}
- case -1074395298:
- { errorText = "ERR_COMPLEXPLANE_NOT_REAL_OR_IMAGINARY";break;}
- case -1074395299:
- { errorText = "ERR_INVALID_COMPLEXPLANE";break;}
- case -1074395300:
- { errorText = "ERR_INVALID_METERARCMODE";break;}
- case -1074395301:
- { errorText = "ERR_ROI_NOT_2_LINES";break;}
- case -1074395302:
- { errorText = "ERR_INVALID_THRESHOLDMETHOD";break;}
- case -1074395303:
- { errorText = "ERR_INVALID_NUM_OF_CLASSES";break;}
- case -1074395304:
- { errorText = "ERR_INVALID_MATHTRANSFORMMETHOD";break;}
- case -1074395305:
- { errorText = "ERR_INVALID_REFERENCEMODE";break;}
- case -1074395306:
- { errorText = "ERR_INVALID_TOOL";break;}
- case -1074395307:
- { errorText = "ERR_PRECISION_NOT_GTR_THAN_0";break;}
- case -1074395308:
- { errorText = "ERR_INVALID_COLORSENSITIVITY";break;}
- case -1074395309:
- { errorText = "ERR_INVALID_WINDOW_THREAD_POLICY";break;}
- case -1074395310:
- { errorText = "ERR_INVALID_PALETTE_TYPE";break;}
- case -1074395311:
- { errorText = "ERR_INVALID_COLOR_SPECTRUM";break;}
- case -1074395312:
- { errorText = "ERR_LCD_CALIBRATE";break;}
- case -1074395313:
- { errorText = "ERR_WRITE_FILE_NOT_SUPPORTED";break;}
- case -1074395316:
- { errorText = "ERR_INVALID_KERNEL_CODE";break;}
- case -1074395317:
- { errorText = "ERR_UNDEF_POINT";break;}
- case -1074395318:
- { errorText = "ERR_INSF_POINTS";break;}
- case -1074395319:
- { errorText = "ERR_INVALID_SUBPIX_TYPE";break;}
- case -1074395320:
- { errorText = "ERR_TEMPLATE_EMPTY";break;}
- case -1074395321:
- { errorText = "ERR_INVALID_MORPHOLOGYMETHOD";break;}
- case -1074395322:
- { errorText = "ERR_INVALID_TEXTALIGNMENT";break;}
- case -1074395323:
- { errorText = "ERR_INVALID_FONTCOLOR";break;}
- case -1074395324:
- { errorText = "ERR_INVALID_SHAPEMODE";break;}
- case -1074395325:
- { errorText = "ERR_INVALID_DRAWMODE";break;}
- case -1074395326:
- { errorText = "ERR_INVALID_DRAWMODE_FOR_LINE";break;}
- case -1074395327:
- { errorText = "ERR_INVALID_SCALINGMODE";break;}
- case -1074395328:
- { errorText = "ERR_INVALID_INTERPOLATIONMETHOD";break;}
- case -1074395329:
- { errorText = "ERR_INVALID_OUTLINEMETHOD";break;}
- case -1074395330:
- { errorText = "ERR_INVALID_BORDER_SIZE";break;}
- case -1074395331:
- { errorText = "ERR_INVALID_BORDERMETHOD";break;}
- case -1074395332:
- { errorText = "ERR_INVALID_COMPAREFUNCTION";break;}
- case -1074395333:
- { errorText = "ERR_INVALID_VERTICAL_TEXT_ALIGNMENT";break;}
- case -1074395334:
- { errorText = "ERR_INVALID_CONVERSIONSTYLE";break;}
- case -1074395335:
- { errorText = "ERR_DISPATCH_STATUS_CONFLICT";break;}
- case -1074395336:
- { errorText = "ERR_UNKNOWN_ALGORITHM";break;}
- case -1074395340:
- { errorText = "ERR_INVALID_SIZETYPE";break;}
- case -1074395343:
- { errorText = "ERR_FILE_FILENAME_NULL";break;}
- case -1074395345:
- { errorText = "ERR_INVALID_FLIPAXIS";break;}
- case -1074395346:
- { errorText = "ERR_INVALID_INTERPOLATIONMETHOD_FOR_ROTATE";break;}
- case -1074395347:
- { errorText = "ERR_INVALID_3DDIRECTION";break;}
- case -1074395348:
- { errorText = "ERR_INVALID_3DPLANE";break;}
- case -1074395349:
- { errorText = "ERR_INVALID_SKELETONMETHOD";break;}
- case -1074395350:
- { errorText = "ERR_INVALID_VISION_INFO";break;}
- case -1074395351:
- { errorText = "ERR_INVALID_RECT";break;}
- case -1074395352:
- { errorText = "ERR_INVALID_FEATURE_MODE";break;}
- case -1074395353:
- { errorText = "ERR_INVALID_SEARCH_STRATEGY";break;}
- case -1074395354:
- { errorText = "ERR_INVALID_COLOR_WEIGHT";break;}
- case -1074395355:
- { errorText = "ERR_INVALID_NUM_MATCHES_REQUESTED";break;}
- case -1074395356:
- { errorText = "ERR_INVALID_MIN_MATCH_SCORE";break;}
- case -1074395357:
- { errorText = "ERR_INVALID_COLOR_IGNORE_MODE";break;}
- case -1074395360:
- { errorText = "ERR_COMPLEX_PLANE";break;}
- case -1074395361:
- { errorText = "ERR_INVALID_STEEPNESS";break;}
- case -1074395362:
- { errorText = "ERR_INVALID_WIDTH";break;}
- case -1074395363:
- { errorText = "ERR_INVALID_SUBSAMPLING_RATIO";break;}
- case -1074395364:
- { errorText = "ERR_IGNORE_COLOR_SPECTRUM_SET";break;}
- case -1074395365:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSPECTRUM";break;}
- case -1074395366:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSHAPE";break;}
- case -1074395367:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_5";break;}
- case -1074395368:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_4";break;}
- case -1074395369:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_3";break;}
- case -1074395370:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_2";break;}
- case -1074395371:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_1";break;}
- case -1074395372:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_NOROTATION";break;}
- case -1074395373:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION";break;}
- case -1074395374:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT_2";break;}
- case -1074395375:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT_1";break;}
- case -1074395376:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSHIFT";break;}
- case -1074395377:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT";break;}
- case -1074395378:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_6";break;}
- case -1074395379:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_5";break;}
- case -1074395380:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_4";break;}
- case -1074395381:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_3";break;}
- case -1074395382:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_2";break;}
- case -1074395383:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR_1";break;}
- case -1074395384:
- { errorText = "ERR_COLOR_TEMPLATE_DESCRIPTOR";break;}
- case -1074395385:
- { errorText = "ERR_COLOR_ROTATION_REQUIRES_SHAPE_FEATURE";break;}
- case -1074395386:
- { errorText = "ERR_COLOR_MATCH_SETUP_DATA_SHAPE";break;}
- case -1074395387:
- { errorText = "ERR_COLOR_MATCH_SETUP_DATA";break;}
- case -1074395388:
- { errorText = "ERR_COLOR_LEARN_SETUP_DATA_SHAPE";break;}
- case -1074395389:
- { errorText = "ERR_COLOR_LEARN_SETUP_DATA";break;}
- case -1074395390:
- { errorText = "ERR_COLOR_TEMPLATE_IMAGE_LUMINANCE_CONTRAST_TOO_LOW";break;}
- case -1074395391:
- { errorText = "ERR_COLOR_TEMPLATE_IMAGE_HUE_CONTRAST_TOO_LOW";break;}
- case -1074395392:
- { errorText = "ERR_COLOR_TEMPLATE_IMAGE_TOO_LARGE";break;}
- case -1074395393:
- { errorText = "ERR_COLOR_TEMPLATE_IMAGE_TOO_SMALL";break;}
- case -1074395394:
- { errorText = "ERR_COLOR_SPECTRUM_MASK";break;}
- case -1074395395:
- { errorText = "ERR_COLOR_IMAGE_REQUIRED";break;}
- case -1074395397:
- { errorText = "ERR_COMPLEX_IMAGE_REQUIRED";break;}
- case -1074395399:
- { errorText = "ERR_MULTICORE_INVALID_ARGUMENT";break;}
- case -1074395400:
- { errorText = "ERR_MULTICORE_OPERATION";break;}
- case -1074395401:
- { errorText = "ERR_INVALID_MATCHFACTOR";break;}
- case -1074395402:
- { errorText = "ERR_INVALID_MAXPOINTS";break;}
- case -1074395403:
- { errorText = "ERR_EXTRAINFO_VERSION";break;}
- case -1074395404:
- { errorText = "ERR_INVALID_INTERPOLATIONMETHOD_FOR_UNWRAP";break;}
- case -1074395405:
- { errorText = "ERR_INVALID_TEXTORIENTATION";break;}
- case -1074395406:
- { errorText = "ERR_COORDSYS_NOT_FOUND";break;}
- case -1074395407:
- { errorText = "ERR_INVALID_CONTRAST";break;}
- case -1074395408:
- { errorText = "ERR_INVALID_DETECTION_MODE";break;}
- case -1074395409:
- { errorText = "ERR_INVALID_SUBPIXEL_DIVISIONS";break;}
- case -1074395410:
- { errorText = "ERR_INVALID_ICONS_PER_LINE";break;}
- case -1074395549:
- { errorText = "ERR_NIOCR_INVALID_NUMBER_OF_OBJECTS_TO_VERIFY";break;}
- case -1074395550:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_VALUE";break;}
- case -1074395551:
- { errorText = "ERR_NIOCR_RENAME_REFCHAR";break;}
- case -1074395552:
- { errorText = "ERR_NIOCR_NOT_A_VALID_CHARACTER_SET";break;}
- case -1074395553:
- { errorText = "ERR_NIOCR_INVALID_MIN_BOUNDING_RECT_HEIGHT";break;}
- case -1074395554:
- { errorText = "ERR_NIOCR_INVALID_READ_RESOLUTION";break;}
- case -1074395555:
- { errorText = "ERR_NIOCR_INVALID_SPACING_RANGE";break;}
- case -1074395556:
- { errorText = "ERR_NIOCR_INVALID_BOUNDING_RECT_HEIGHT_RANGE";break;}
- case -1074395557:
- { errorText = "ERR_NIOCR_INVALID_BOUNDING_RECT_WIDTH_RANGE";break;}
- case -1074395558:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_SIZE_RANGE";break;}
- case -1074395559:
- { errorText = "ERR_NIOCR_INVALID_READ_OPTION";break;}
- case -1074395560:
- { errorText = "ERR_NIOCR_INVALID_OBJECT_INDEX";break;}
- case -1074395561:
- { errorText = "ERR_NIOCR_INVALID_NUMBER_OF_CHARACTERS";break;}
- case -1074395562:
- { errorText = "ERR_NIOCR_BOOLEAN_VALUE_FOR_STRING_ATTRIBUTE";break;}
- case -1074395563:
- { errorText = "ERR_NIOCR_UNLICENSED";break;}
- case -1074395564:
- { errorText = "ERR_NIOCR_INVALID_PREDEFINED_CHARACTER";break;}
- case -1074395565:
- { errorText = "ERR_NIOCR_MUST_BE_SINGLE_CHARACTER";break;}
- case -1074395566:
- { errorText = "ERR_NIOCR_BOOLEAN_VALUE_FOR_INTEGER_ATTRIBUTE";break;}
- case -1074395567:
- { errorText = "ERR_NIOCR_STRING_VALUE_FOR_BOOLEAN_ATTRIBUTE";break;}
- case -1074395568:
- { errorText = "ERR_NIOCR_STRING_VALUE_FOR_INTEGER_ATTRIBUTE";break;}
- case -1074395569:
- { errorText = "ERR_NIOCR_INVALID_ATTRIBUTE";break;}
- case -1074395570:
- { errorText = "ERR_NIOCR_INTEGER_VALUE_FOR_BOOLEAN_ATTRIBUTE";break;}
- case -1074395571:
- { errorText = "ERR_NIOCR_GET_ONLY_ATTRIBUTE";break;}
- case -1074395572:
- { errorText = "ERR_NIOCR_INTEGER_VALUE_FOR_STRING_ATTRIBUTE";break;}
- case -1074395573:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_SET_FILE_VERSION";break;}
- case -1074395574:
- { errorText = "ERR_NIOCR_CHARACTER_SET_DESCRIPTION_TOO_LONG";break;}
- case -1074395575:
- { errorText = "ERR_NIOCR_INVALID_NUMBER_OF_EROSIONS";break;}
- case -1074395576:
- { errorText = "ERR_NIOCR_CHARACTER_VALUE_TOO_LONG";break;}
- case -1074395577:
- { errorText = "ERR_NIOCR_CHARACTER_VALUE_CANNOT_BE_EMPTYSTRING";break;}
- case -1074395578:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_SET_FILE";break;}
- case -1074395579:
- { errorText = "ERR_NIOCR_INVALID_ASPECT_RATIO";break;}
- case -1074395580:
- { errorText = "ERR_NIOCR_INVALID_MIN_BOUNDING_RECT_WIDTH";break;}
- case -1074395581:
- { errorText = "ERR_NIOCR_INVALID_MAX_VERT_ELEMENT_SPACING";break;}
- case -1074395582:
- { errorText = "ERR_NIOCR_INVALID_MAX_HORIZ_ELEMENT_SPACING";break;}
- case -1074395583:
- { errorText = "ERR_NIOCR_INVALID_MIN_CHAR_SPACING";break;}
- case -1074395584:
- { errorText = "ERR_NIOCR_INVALID_THRESHOLD_LIMITS";break;}
- case -1074395585:
- { errorText = "ERR_NIOCR_INVALID_UPPER_THRESHOLD_LIMIT";break;}
- case -1074395586:
- { errorText = "ERR_NIOCR_INVALID_LOWER_THRESHOLD_LIMIT";break;}
- case -1074395587:
- { errorText = "ERR_NIOCR_INVALID_THRESHOLD_RANGE";break;}
- case -1074395588:
- { errorText = "ERR_NIOCR_INVALID_HIGH_THRESHOLD_VALUE";break;}
- case -1074395589:
- { errorText = "ERR_NIOCR_INVALID_LOW_THRESHOLD_VALUE";break;}
- case -1074395590:
- { errorText = "ERR_NIOCR_INVALID_NUMBER_OF_VALID_CHARACTER_POSITIONS";break;}
- case -1074395591:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_INDEX";break;}
- case -1074395592:
- { errorText = "ERR_NIOCR_INVALID_READ_STRATEGY";break;}
- case -1074395593:
- { errorText = "ERR_NIOCR_INVALID_NUMBER_OF_BLOCKS";break;}
- case -1074395594:
- { errorText = "ERR_NIOCR_INVALID_SUBSTITUTION_CHARACTER";break;}
- case -1074395595:
- { errorText = "ERR_NIOCR_INVALID_THRESHOLD_MODE";break;}
- case -1074395596:
- { errorText = "ERR_NIOCR_INVALID_CHARACTER_SIZE";break;}
- case -1074395597:
- { errorText = "ERR_NIOCR_NOT_A_VALID_SESSION";break;}
- case -1074395598:
- { errorText = "ERR_NIOCR_INVALID_ACCEPTANCE_LEVEL";break;}
- case -1074395600:
- { errorText = "ERR_INFO_NOT_FOUND";break;}
- case -1074395601:
- { errorText = "ERR_INVALID_EDGE_THRESHOLD";break;}
- case -1074395602:
- { errorText = "ERR_INVALID_MINIMUM_CURVE_LENGTH";break;}
- case -1074395603:
- { errorText = "ERR_INVALID_ROW_STEP";break;}
- case -1074395604:
- { errorText = "ERR_INVALID_COLUMN_STEP";break;}
- case -1074395605:
- { errorText = "ERR_INVALID_MAXIMUM_END_POINT_GAP";break;}
- case -1074395606:
- { errorText = "ERR_INVALID_MINIMUM_FEATURES_TO_MATCH";break;}
- case -1074395607:
- { errorText = "ERR_INVALID_MAXIMUM_FEATURES_PER_MATCH";break;}
- case -1074395608:
- { errorText = "ERR_INVALID_SUBPIXEL_ITERATIONS";break;}
- case -1074395609:
- { errorText = "ERR_INVALID_SUBPIXEL_TOLERANCE";break;}
- case -1074395610:
- { errorText = "ERR_INVALID_INITIAL_MATCH_LIST_LENGTH";break;}
- case -1074395611:
- { errorText = "ERR_INVALID_MINIMUM_RECTANGLE_DIMENSION";break;}
- case -1074395612:
- { errorText = "ERR_INVALID_MINIMUM_FEATURE_RADIUS";break;}
- case -1074395613:
- { errorText = "ERR_INVALID_MINIMUM_FEATURE_LENGTH";break;}
- case -1074395614:
- { errorText = "ERR_INVALID_MINIMUM_FEATURE_ASPECT_RATIO";break;}
- case -1074395615:
- { errorText = "ERR_INVALID_MINIMUM_FEATURE_STRENGTH";break;}
- case -1074395616:
- { errorText = "ERR_INVALID_EDGE_FILTER_SIZE";break;}
- case -1074395617:
- { errorText = "ERR_INVALID_NUMBER_OF_FEATURES_RANGE";break;}
- case -1074395618:
- { errorText = "ERR_TOO_MANY_SCALE_RANGES";break;}
- case -1074395619:
- { errorText = "ERR_TOO_MANY_OCCLUSION_RANGES";break;}
- case -1074395620:
- { errorText = "ERR_INVALID_CURVE_EXTRACTION_MODE";break;}
- case -1074395621:
- { errorText = "ERR_INVALID_LEARN_GEOMETRIC_PATTERN_SETUP_DATA";break;}
- case -1074395622:
- { errorText = "ERR_INVALID_MATCH_GEOMETRIC_PATTERN_SETUP_DATA";break;}
- case -1074395623:
- { errorText = "ERR_INVALID_SCALE_RANGE";break;}
- case -1074395624:
- { errorText = "ERR_INVALID_OCCLUSION_RANGE";break;}
- case -1074395625:
- { errorText = "ERR_INVALID_MATCH_CONSTRAINT_TYPE";break;}
- case -1074395626:
- { errorText = "ERR_NOT_ENOUGH_TEMPLATE_FEATURES";break;}
- case -1074395627:
- { errorText = "ERR_NOT_ENOUGH_TEMPLATE_FEATURES_1";break;}
- case -1074395628:
- { errorText = "ERR_INVALID_GEOMETRIC_MATCHING_TEMPLATE";break;}
- case -1074395629:
- { errorText = "ERR_INVALID_MAXIMUM_PIXEL_DISTANCE_FROM_LINE";break;}
- case -1074395630:
- { errorText = "ERR_INVALID_MAXIMUM_FEATURES_LEARNED";break;}
- case -1074395631:
- { errorText = "ERR_INVALID_MIN_MATCH_SEPARATION_DISTANCE";break;}
- case -1074395632:
- { errorText = "ERR_INVALID_MIN_MATCH_SEPARATION_ANGLE";break;}
- case -1074395633:
- { errorText = "ERR_INVALID_MIN_MATCH_SEPARATION_SCALE";break;}
- case -1074395634:
- { errorText = "ERR_INVALID_MAX_MATCH_OVERLAP";break;}
- case -1074395635:
- { errorText = "ERR_INVALID_SHAPE_DESCRIPTOR";break;}
- case -1074395636:
- { errorText = "ERR_DIRECTX_NOT_FOUND";break;}
- case -1074395637:
- { errorText = "ERR_HARDWARE_DOESNT_SUPPORT_NONTEARING";break;}
- case -1074395638:
- { errorText = "ERR_INVALID_FILL_STYLE";break;}
- case -1074395639:
- { errorText = "ERR_INVALID_HATCH_STYLE";break;}
- case -1074395640:
- { errorText = "ERR_TOO_MANY_ZONES";break;}
- case -1074395641:
- { errorText = "ERR_DUPLICATE_LABEL";break;}
- case -1074395642:
- { errorText = "ERR_LABEL_NOT_FOUND";break;}
- case -1074395643:
- { errorText = "ERR_INVALID_NUMBER_OF_MATCH_OPTIONS";break;}
- case -1074395644:
- { errorText = "ERR_LABEL_TOO_LONG";break;}
- case -1074395645:
- { errorText = "ERR_INVALID_NUMBER_OF_LABELS";break;}
- case -1074395646:
- { errorText = "ERR_NO_TEMPLATE_TO_LEARN";break;}
- case -1074395647:
- { errorText = "ERR_INVALID_MULTIPLE_GEOMETRIC_TEMPLATE";break;}
- case -1074395648:
- { errorText = "ERR_TEMPLATE_NOT_LEARNED";break;}
- case -1074395649:
- { errorText = "ERR_INVALID_GEOMETRIC_FEATURE_TYPE";break;}
- case -1074395650:
- { errorText = "ERR_CURVE_EXTRACTION_MODE_MUST_BE_SAME";break;}
- case -1074395651:
- { errorText = "ERR_EDGE_FILTER_SIZE_MUST_BE_SAME";break;}
- case -1074395652:
- { errorText = "ERR_OPENING_NEWER_GEOMETRIC_MATCHING_TEMPLATE";break;}
- case -1074395653:
- { errorText = "ERR_OPENING_NEWER_MULTIPLE_GEOMETRIC_TEMPLATE";break;}
- case -1074395654:
- { errorText = "ERR_GRADING_INFORMATION_NOT_FOUND";break;}
- case -1074395655:
- { errorText = "ERR_ENABLE_CALIBRATION_SUPPORT_MUST_BE_SAME";break;}
- case -1074395656:
- { errorText = "ERR_SMOOTH_CONTOURS_MUST_BE_SAME";break;}
- case -1074395700:
- { errorText = "ERR_REQUIRES_WIN2000_OR_NEWER";break;}
- case -1074395701:
- { errorText = "ERR_INVALID_MATRIX_SIZE_RANGE";break;}
- case -1074395702:
- { errorText = "ERR_INVALID_LENGTH";break;}
- case -1074395703:
- { errorText = "ERR_INVALID_TYPE_OF_FLATTEN";break;}
- case -1074395704:
- { errorText = "ERR_INVALID_COMPRESSION_TYPE";break;}
- case -1074395705:
- { errorText = "ERR_DATA_CORRUPTED";break;}
- case -1074395706:
- { errorText = "ERR_AVI_SESSION_ALREADY_OPEN";break;}
- case -1074395707:
- { errorText = "ERR_AVI_WRITE_SESSION_REQUIRED";break;}
- case -1074395708:
- { errorText = "ERR_AVI_READ_SESSION_REQUIRED";break;}
- case -1074395709:
- { errorText = "ERR_AVI_UNOPENED_SESSION";break;}
- case -1074395710:
- { errorText = "ERR_TOO_MANY_PARTICLES";break;}
- case -1074395711:
- { errorText = "ERR_NOT_ENOUGH_REGIONS";break;}
- case -1074395712:
- { errorText = "ERR_WRONG_REGION_TYPE";break;}
- case -1074395713:
- { errorText = "ERR_VALUE_NOT_IN_ENUM";break;}
- case -1074395714:
- { errorText = "ERR_INVALID_AXIS_ORIENTATION";break;}
- case -1074395715:
- { errorText = "ERR_INVALID_CALIBRATION_UNIT";break;}
- case -1074395716:
- { errorText = "ERR_INVALID_SCALING_METHOD";break;}
- case -1074395717:
- { errorText = "ERR_INVALID_RANGE";break;}
- case -1074395718:
- { errorText = "ERR_LAB_VERSION";break;}
- case -1074395719:
- { errorText = "ERR_BAD_ROI_BOX";break;}
- case -1074395720:
- { errorText = "ERR_BAD_ROI";break;}
- case -1074395721:
- { errorText = "ERR_INVALID_BIT_DEPTH";break;}
- case -1074395722:
- { errorText = "ERR_CLASSIFIER_CLASSIFY_IMAGE_WITH_CUSTOM_SESSION";break;}
- case -1074395723:
- { errorText = "ERR_CUSTOMDATA_KEY_NOT_FOUND";break;}
- case -1074395724:
- { errorText = "ERR_CUSTOMDATA_INVALID_SIZE";break;}
- case -1074395725:
- { errorText = "ERR_DATA_VERSION";break;}
- case -1074395726:
- { errorText = "ERR_MATCHFACTOR_OBSOLETE";break;}
- case -1074395727:
- { errorText = "ERR_UNSUPPORTED_2D_BARCODE_SEARCH_MODE";break;}
- case -1074395728:
- { errorText = "ERR_INVALID_2D_BARCODE_SEARCH_MODE";break;}
- case -1074395754:
- { errorText = "ERR_TRIG_TIMEOUT";break;}
- case -1074395756:
- { errorText = "ERR_DLL_FUNCTION_NOT_FOUND";break;}
- case -1074395757:
- { errorText = "ERR_DLL_NOT_FOUND";break;}
- case -1074395758:
- { errorText = "ERR_BOARD_NOT_OPEN";break;}
- case -1074395760:
- { errorText = "ERR_BOARD_NOT_FOUND";break;}
- case -1074395762:
- { errorText = "ERR_INVALID_NIBLACK_DEVIATION_FACTOR";break;}
- case -1074395763:
- { errorText = "ERR_INVALID_NORMALIZATION_METHOD";break;}
- case -1074395766:
- { errorText = "ERR_DEPRECATED_FUNCTION";break;}
- case -1074395767:
- { errorText = "ERR_INVALID_ALIGNMENT";break;}
- case -1074395768:
- { errorText = "ERR_INVALID_SCALE";break;}
- case -1074395769:
- { errorText = "ERR_INVALID_EDGE_THICKNESS";break;}
- case -1074395770:
- { errorText = "ERR_INVALID_INSPECTION_TEMPLATE";break;}
- case -1074395771:
- { errorText = "ERR_OPENING_NEWER_INSPECTION_TEMPLATE";break;}
- case -1074395772:
- { errorText = "ERR_INVALID_REGISTRATION_METHOD";break;}
- case -1074395773:
- { errorText = "ERR_NO_DEST_IMAGE";break;}
- case -1074395774:
- { errorText = "ERR_NO_LABEL";break;}
- case -1074395775:
- { errorText = "ERR_ROI_HAS_OPEN_CONTOURS";break;}
- case -1074395776:
- { errorText = "ERR_INVALID_USE_OF_COMPACT_SESSION_FILE";break;}
- case -1074395777:
- { errorText = "ERR_INCOMPATIBLE_CLASSIFIER_TYPES";break;}
- case -1074395778:
- { errorText = "ERR_INVALID_KERNEL_SIZE";break;}
- case -1074395779:
- { errorText = "ERR_CANNOT_COMPACT_UNTRAINED";break;}
- case -1074395780:
- { errorText = "ERR_INVALID_PARTICLE_TYPE";break;}
- case -1074395781:
- { errorText = "ERR_CLASSIFIER_INVALID_ENGINE_TYPE";break;}
- case -1074395782:
- { errorText = "ERR_DESCRIPTION_TOO_LONG";break;}
- case -1074395783:
- { errorText = "ERR_BAD_SAMPLE_INDEX";break;}
- case -1074395784:
- { errorText = "ERR_INVALID_LIMITS";break;}
- case -1074395785:
- { errorText = "ERR_NO_PARTICLE";break;}
- case -1074395786:
- { errorText = "ERR_INVALID_PARTICLE_OPTIONS";break;}
- case -1074395787:
- { errorText = "ERR_INVALID_CLASSIFIER_TYPE";break;}
- case -1074395788:
- { errorText = "ERR_NO_SAMPLES";break;}
- case -1074395789:
- { errorText = "ERR_OPENING_NEWER_CLASSIFIER_SESSION";break;}
- case -1074395790:
- { errorText = "ERR_INVALID_DISTANCE_METRIC";break;}
- case -1074395791:
- { errorText = "ERR_CLASSIFIER_INVALID_SESSION_TYPE";break;}
- case -1074395792:
- { errorText = "ERR_CLASSIFIER_SESSION_NOT_TRAINED";break;}
- case -1074395793:
- { errorText = "ERR_INVALID_OPERATION_ON_COMPACT_SESSION_ATTEMPTED";break;}
- case -1074395794:
- { errorText = "ERR_K_TOO_HIGH";break;}
- case -1074395795:
- { errorText = "ERR_K_TOO_LOW";break;}
- case -1074395796:
- { errorText = "ERR_INVALID_KNN_METHOD";break;}
- case -1074395797:
- { errorText = "ERR_INVALID_CLASSIFIER_SESSION";break;}
- case -1074395798:
- { errorText = "ERR_INVALID_CUSTOM_SAMPLE";break;}
- case -1074395799:
- { errorText = "ERR_INTERNAL";break;}
- case -1074395800:
- { errorText = "ERR_PROTECTION";break;}
- case -1074395801:
- { errorText = "ERR_TOO_MANY_CONTOURS";break;}
- case -1074395837:
- { errorText = "ERR_INVALID_COMPRESSION_RATIO";break;}
- case -1074395840:
- { errorText = "ERR_BAD_INDEX";break;}
- case -1074395875:
- { errorText = "ERR_BARCODE_PHARMACODE";break;}
- case -1074395876:
- { errorText = "ERR_UNSUPPORTED_COLOR_MODE";break;}
- case -1074395877:
- { errorText = "ERR_COLORMODE_REQUIRES_CHANGECOLORSPACE2";break;}
- case -1074395878:
- { errorText = "ERR_PROP_NODE_WRITE_NOT_SUPPORTED";break;}
- case -1074395879:
- { errorText = "ERR_BAD_MEASURE";break;}
- case -1074395880:
- { errorText = "ERR_PARTICLE";break;}
- case -1074395920:
- { errorText = "ERR_NUMBER_CLASS";break;}
- case -1074395953:
- { errorText = "ERR_INVALID_WAVELET_TRANSFORM_MODE";break;}
- case -1074395954:
- { errorText = "ERR_INVALID_QUANTIZATION_STEP_SIZE";break;}
- case -1074395955:
- { errorText = "ERR_INVALID_MAX_WAVELET_TRANSFORM_LEVEL";break;}
- case -1074395956:
- { errorText = "ERR_INVALID_QUALITY";break;}
- case -1074395957:
- { errorText = "ERR_ARRAY_SIZE_MISMATCH";break;}
- case -1074395958:
- { errorText = "ERR_WINDOW_ID";break;}
- case -1074395959:
- { errorText = "ERR_CREATE_WINDOW";break;}
- case -1074395960:
- { errorText = "ERR_INIT";break;}
- case -1074395971:
- { errorText = "ERR_INVALID_OFFSET";break;}
- case -1074395972:
- { errorText = "ERR_DIRECTX_ENUMERATE_FILTERS";break;}
- case -1074395973:
- { errorText = "ERR_JPEG2000_UNSUPPORTED_MULTIPLE_LAYERS";break;}
- case -1074395974:
- { errorText = "ERR_UNSUPPORTED_JPEG2000_COLORSPACE_METHOD";break;}
- case -1074395975:
- { errorText = "ERR_AVI_TIMEOUT";break;}
- case -1074395976:
- { errorText = "ERR_NUMBER_OF_PALETTE_COLORS";break;}
- case -1074395977:
- { errorText = "ERR_AVI_VERSION";break;}
- case -1074395978:
- { errorText = "ERR_INVALID_PARTICLE_NUMBER";break;}
- case -1074395979:
- { errorText = "ERR_INVALID_PARTICLE_INFO";break;}
- case -1074395980:
- { errorText = "ERR_COM_INITIALIZE";break;}
- case -1074395981:
- { errorText = "ERR_INSUFFICIENT_BUFFER_SIZE";break;}
- case -1074395982:
- { errorText = "ERR_INVALID_FRAMES_PER_SECOND";break;}
- case -1074395983:
- { errorText = "ERR_FILE_NO_SPACE";break;}
- case -1074395984:
- { errorText = "ERR_FILE_INVALID_DATA_TYPE";break;}
- case -1074395985:
- { errorText = "ERR_FILE_OPERATION";break;}
- case -1074395986:
- { errorText = "ERR_FILE_FORMAT";break;}
- case -1074395987:
- { errorText = "ERR_FILE_EOF";break;}
- case -1074395988:
- { errorText = "ERR_FILE_WRITE";break;}
- case -1074395989:
- { errorText = "ERR_FILE_READ";break;}
- case -1074395990:
- { errorText = "ERR_FILE_GET_INFO";break;}
- case -1074395991:
- { errorText = "ERR_FILE_INVALID_TYPE";break;}
- case -1074395992:
- { errorText = "ERR_FILE_PERMISSION";break;}
- case -1074395993:
- { errorText = "ERR_FILE_IO_ERR";break;}
- case -1074395994:
- { errorText = "ERR_FILE_TOO_MANY_OPEN";break;}
- case -1074395995:
- { errorText = "ERR_FILE_NOT_FOUND";break;}
- case -1074395996:
- { errorText = "ERR_FILE_OPEN";break;}
- case -1074395997:
- { errorText = "ERR_FILE_ARGERR";break;}
- case -1074395998:
- { errorText = "ERR_FILE_COLOR_TABLE";break;}
- case -1074395999:
- { errorText = "ERR_FILE_FILE_TYPE";break;}
- case -1074396000:
- { errorText = "ERR_FILE_FILE_HEADER";break;}
- case -1074396001:
- { errorText = "ERR_TOO_MANY_AVI_SESSIONS";break;}
- case -1074396002:
- { errorText = "ERR_INVALID_LINEGAUGEMETHOD";break;}
- case -1074396003:
- { errorText = "ERR_AVI_DATA_EXCEEDS_BUFFER_SIZE";break;}
- case -1074396004:
- { errorText = "ERR_DIRECTX_CERTIFICATION_FAILURE";break;}
- case -1074396005:
- { errorText = "ERR_INVALID_AVI_SESSION";break;}
- case -1074396006:
- { errorText = "ERR_DIRECTX_UNKNOWN_COMPRESSION_FILTER";break;}
- case -1074396007:
- { errorText = "ERR_DIRECTX_INCOMPATIBLE_COMPRESSION_FILTER";break;}
- case -1074396008:
- { errorText = "ERR_DIRECTX_NO_FILTER";break;}
- case -1074396009:
- { errorText = "ERR_DIRECTX";break;}
- case -1074396010:
- { errorText = "ERR_INVALID_FRAME_NUMBER";break;}
- case -1074396011:
- { errorText = "ERR_RPC_BIND";break;}
- case -1074396012:
- { errorText = "ERR_RPC_EXECUTE";break;}
- case -1074396013:
- { errorText = "ERR_INVALID_VIDEO_MODE";break;}
- case -1074396014:
- { errorText = "ERR_INVALID_VIDEO_BLIT";break;}
- case -1074396015:
- { errorText = "ERR_RPC_EXECUTE_IVB";break;}
- case -1074396016:
- { errorText = "ERR_NO_VIDEO_DRIVER";break;}
- case -1074396017:
- { errorText = "ERR_OPENING_NEWER_AIM_GRADING_DATA";break;}
- case -1074396018:
- { errorText = "ERR_INVALID_EDGE_POLARITY_SEARCH_MODE";break;}
- case -1074396019:
- { errorText = "ERR_INVALID_THRESHOLD_PERCENTAGE";break;}
- case -1074396020:
- { errorText = "ERR_INVALID_GRADING_MODE";break;}
- case -1074396021:
- { errorText = "ERR_INVALID_KERNEL_SIZE_FOR_EDGE_DETECTION";break;}
- case -1074396022:
- { errorText = "ERR_INVALID_SEARCH_MODE_FOR_STRAIGHT_EDGE";break;}
- case -1074396023:
- { errorText = "ERR_INVALID_ANGLE_TOL_FOR_STRAIGHT_EDGE";break;}
- case -1074396024:
- { errorText = "ERR_INVALID_MIN_COVERAGE_FOR_STRAIGHT_EDGE";break;}
- case -1074396025:
- { errorText = "ERR_INVALID_ANGLE_RANGE_FOR_STRAIGHT_EDGE";break;}
- case -1074396026:
- { errorText = "ERR_INVALID_PROCESS_TYPE_FOR_EDGE_DETECTION";break;}
- case -1074396032:
- { errorText = "ERR_TEMPLATEDESCRIPTOR_ROTATION_SEARCHSTRATEGY";break;}
- case -1074396033:
- { errorText = "ERR_TEMPLATEDESCRIPTOR_LEARNSETUPDATA";break;}
- case -1074396034:
- { errorText = "ERR_TEMPLATEIMAGE_EDGEINFO";break;}
- case -1074396035:
- { errorText = "ERR_TEMPLATEIMAGE_NOCIRCLE";break;}
- case -1074396036:
- { errorText = "ERR_INVALID_SKELETONMODE";break;}
- case -1074396037:
- { errorText = "ERR_TIMEOUT";break;}
- case -1074396038:
- { errorText = "ERR_FIND_COORDSYS_MORE_THAN_ONE_EDGE";break;}
- case -1074396039:
- { errorText = "ERR_IO_ERROR";break;}
- case -1074396040:
- { errorText = "ERR_DRIVER";break;}
- case -1074396041:
- { errorText = "ERR_INVALID_2D_BARCODE_TYPE";break;}
- case -1074396042:
- { errorText = "ERR_INVALID_2D_BARCODE_CONTRAST";break;}
- case -1074396043:
- { errorText = "ERR_INVALID_2D_BARCODE_CELL_SHAPE";break;}
- case -1074396044:
- { errorText = "ERR_INVALID_2D_BARCODE_SHAPE";break;}
- case -1074396045:
- { errorText = "ERR_INVALID_2D_BARCODE_SUBTYPE";break;}
- case -1074396046:
- { errorText = "ERR_INVALID_2D_BARCODE_CONTRAST_FOR_ROI";break;}
- case -1074396047:
- { errorText = "ERR_INVALID_LINEAR_AVERAGE_MODE";break;}
- case -1074396048:
- { errorText = "ERR_INVALID_CELL_SAMPLE_SIZE";break;}
- case -1074396049:
- { errorText = "ERR_INVALID_MATRIX_POLARITY";break;}
- case -1074396050:
- { errorText = "ERR_INVALID_ECC_TYPE";break;}
- case -1074396051:
- { errorText = "ERR_INVALID_CELL_FILTER_MODE";break;}
- case -1074396052:
- { errorText = "ERR_INVALID_DEMODULATION_MODE";break;}
- case -1074396053:
- { errorText = "ERR_INVALID_BORDER_INTEGRITY";break;}
- case -1074396054:
- { errorText = "ERR_INVALID_CELL_FILL_TYPE";break;}
- case -1074396055:
- { errorText = "ERR_INVALID_ASPECT_RATIO";break;}
- case -1074396056:
- { errorText = "ERR_INVALID_MATRIX_MIRROR_MODE";break;}
- case -1074396057:
- { errorText = "ERR_INVALID_SEARCH_VECTOR_WIDTH";break;}
- case -1074396058:
- { errorText = "ERR_INVALID_ROTATION_MODE";break;}
- case -1074396059:
- { errorText = "ERR_INVALID_MAX_ITERATIONS";break;}
- case -1074396060:
- { errorText = "ERR_JPEG2000_LOSSLESS_WITH_FLOATING_POINT";break;}
- case -1074396061:
- { errorText = "ERR_INVALID_WINDOW_SIZE";break;}
- case -1074396062:
- { errorText = "ERR_INVALID_TOLERANCE";break;}
- case -1074396063:
- { errorText = "ERR_EXTERNAL_ALIGNMENT";break;}
- case -1074396064:
- { errorText = "ERR_EXTERNAL_NOT_SUPPORTED";break;}
- case -1074396065:
- { errorText = "ERR_CANT_RESIZE_EXTERNAL";break;}
- case -1074396066:
- { errorText = "ERR_INVALID_POINTSYMBOL";break;}
- case -1074396067:
- { errorText = "ERR_IMAGES_NOT_DIFF";break;}
- case -1074396068:
- { errorText = "ERR_INVALID_ACTION";break;}
- case -1074396069:
- { errorText = "ERR_INVALID_COLOR_MODE";break;}
- case -1074396070:
- { errorText = "ERR_INVALID_FUNCTION";break;}
- case -1074396071:
- { errorText = "ERR_INVALID_SCAN_DIRECTION";break;}
- case -1074396072:
- { errorText = "ERR_INVALID_BORDER";break;}
- case -1074396073:
- { errorText = "ERR_MASK_OUTSIDE_IMAGE";break;}
- case -1074396074:
- { errorText = "ERR_INCOMP_SIZE";break;}
- case -1074396075:
- { errorText = "ERR_COORD_SYS_SECOND_AXIS";break;}
- case -1074396076:
- { errorText = "ERR_COORD_SYS_FIRST_AXIS";break;}
- case -1074396077:
- { errorText = "ERR_INCOMP_TYPE";break;}
- case -1074396079:
- { errorText = "ERR_INVALID_METAFILE_HANDLE";break;}
- case -1074396080:
- { errorText = "ERR_INVALID_IMAGE_TYPE";break;}
- case -1074396081:
- { errorText = "ERR_BAD_PASSWORD";break;}
- case -1074396082:
- { errorText = "ERR_PALETTE_NOT_SUPPORTED";break;}
- case -1074396083:
- { errorText = "ERR_ROLLBACK_TIMEOUT";break;}
- case -1074396084:
- { errorText = "ERR_ROLLBACK_DELETE_TIMER";break;}
- case -1074396085:
- { errorText = "ERR_ROLLBACK_INIT_TIMER";break;}
- case -1074396086:
- { errorText = "ERR_ROLLBACK_START_TIMER";break;}
- case -1074396087:
- { errorText = "ERR_ROLLBACK_STOP_TIMER";break;}
- case -1074396088:
- { errorText = "ERR_ROLLBACK_RESIZE";break;}
- case -1074396089:
- { errorText = "ERR_ROLLBACK_RESOURCE_REINITIALIZE";break;}
- case -1074396090:
- { errorText = "ERR_ROLLBACK_RESOURCE_ENABLED";break;}
- case -1074396091:
- { errorText = "ERR_ROLLBACK_RESOURCE_UNINITIALIZED_ENABLE";break;}
- case -1074396092:
- { errorText = "ERR_ROLLBACK_RESOURCE_NON_EMPTY_INITIALIZE";break;}
- case -1074396093:
- { errorText = "ERR_ROLLBACK_RESOURCE_LOCKED";break;}
- case -1074396094:
- { errorText = "ERR_ROLLBACK_RESOURCE_CANNOT_UNLOCK";break;}
- case -1074396095:
- { errorText = "ERR_CALIBRATION_DUPLICATE_REFERENCE_POINT";break;}
- case -1074396096:
- { errorText = "ERR_NOT_AN_OBJECT";break;}
- case -1074396097:
- { errorText = "ERR_INVALID_PARTICLE_PARAMETER_VALUE";break;}
- case -1074396098:
- { errorText = "ERR_RESERVED_MUST_BE_NULL";break;}
- case -1074396099:
- { errorText = "ERR_CALIBRATION_INFO_SIMPLE_TRANSFORM";break;}
- case -1074396100:
- { errorText = "ERR_CALIBRATION_INFO_PERSPECTIVE_PROJECTION";break;}
- case -1074396101:
- { errorText = "ERR_CALIBRATION_INFO_MICRO_PLANE";break;}
- case -1074396102:
- { errorText = "ERR_CALIBRATION_INFO_6";break;}
- case -1074396103:
- { errorText = "ERR_CALIBRATION_INFO_5";break;}
- case -1074396104:
- { errorText = "ERR_CALIBRATION_INFO_4";break;}
- case -1074396105:
- { errorText = "ERR_CALIBRATION_INFO_3";break;}
- case -1074396106:
- { errorText = "ERR_CALIBRATION_INFO_2";break;}
- case -1074396107:
- { errorText = "ERR_CALIBRATION_INFO_1";break;}
- case -1074396108:
- { errorText = "ERR_CALIBRATION_ERRORMAP";break;}
- case -1074396109:
- { errorText = "ERR_CALIBRATION_INVALID_SCALING_FACTOR";break;}
- case -1074396110:
- { errorText = "ERR_CALIBRATION_INFO_VERSION";break;}
- case -1074396111:
- { errorText = "ERR_CALIBRATION_FAILED_TO_FIND_GRID";break;}
- case -1074396112:
- { errorText = "ERR_INCOMP_MATRIX_SIZE";break;}
- case -1074396113:
- { errorText = "ERR_CALIBRATION_IMAGE_UNCALIBRATED";break;}
- case -1074396114:
- { errorText = "ERR_CALIBRATION_INVALID_ROI";break;}
- case -1074396115:
- { errorText = "ERR_CALIBRATION_IMAGE_CORRECTED";break;}
- case -1074396116:
- { errorText = "ERR_CALIBRATION_INSF_POINTS";break;}
- case -1074396117:
- { errorText = "ERR_MATRIX_SIZE";break;}
- case -1074396118:
- { errorText = "ERR_INVALID_STEP_SIZE";break;}
- case -1074396119:
- { errorText = "ERR_CUSTOMDATA_INVALID_KEY";break;}
- case -1074396120:
- { errorText = "ERR_NOT_IMAGE";break;}
- case -1074396121:
- { errorText = "ERR_SATURATION_THRESHOLD_OUT_OF_RANGE";break;}
- case -1074396122:
- { errorText = "ERR_DRAWTEXT_COLOR_MUST_BE_GRAYSCALE";break;}
- case -1074396123:
- { errorText = "ERR_INVALID_CALIBRATION_MODE";break;}
- case -1074396124:
- { errorText = "ERR_INVALID_CALIBRATION_ROI_MODE";break;}
- case -1074396125:
- { errorText = "ERR_INVALID_CONTRAST_THRESHOLD";break;}
- case -1074396126:
- { errorText = "ERR_ROLLBACK_RESOURCE_CONFLICT_1";break;}
- case -1074396127:
- { errorText = "ERR_ROLLBACK_RESOURCE_CONFLICT_2";break;}
- case -1074396128:
- { errorText = "ERR_ROLLBACK_RESOURCE_CONFLICT_3";break;}
- case -1074396129:
- { errorText = "ERR_ROLLBACK_UNBOUNDED_INTERFACE";break;}
- case -1074396130:
- { errorText = "ERR_NOT_RECT_OR_ROTATED_RECT";break;}
- case -1074396132:
- { errorText = "ERR_MASK_NOT_TEMPLATE_SIZE";break;}
- case -1074396133:
- { errorText = "ERR_THREAD_COULD_NOT_INITIALIZE";break;}
- case -1074396134:
- { errorText = "ERR_THREAD_INITIALIZING";break;}
- case -1074396135:
- { errorText = "ERR_INVALID_BUTTON_LABEL";break;}
- case -1074396136:
- { errorText = "ERR_DIRECTX_INVALID_FILTER_QUALITY";break;}
- case -1074396137:
- { errorText = "ERR_DIRECTX_DLL_NOT_FOUND";break;}
- case -1074396138:
- { errorText = "ERR_ROLLBACK_NOT_SUPPORTED";break;}
- case -1074396139:
- { errorText = "ERR_ROLLBACK_RESOURCE_OUT_OF_MEMORY";break;}
- case -1074396140:
- { errorText = "ERR_BARCODE_CODE128_SET";break;}
- case -1074396141:
- { errorText = "ERR_BARCODE_CODE128_FNC";break;}
- case -1074396142:
- { errorText = "ERR_BARCODE_INVALID";break;}
- case -1074396143:
- { errorText = "ERR_BARCODE_TYPE";break;}
- case -1074396144:
- { errorText = "ERR_BARCODE_CODE93_SHIFT";break;}
- case -1074396145:
- { errorText = "ERR_BARCODE_UPCA";break;}
- case -1074396146:
- { errorText = "ERR_BARCODE_MSI";break;}
- case -1074396147:
- { errorText = "ERR_BARCODE_I25";break;}
- case -1074396148:
- { errorText = "ERR_BARCODE_EAN13";break;}
- case -1074396149:
- { errorText = "ERR_BARCODE_EAN8";break;}
- case -1074396150:
- { errorText = "ERR_BARCODE_CODE128";break;}
- case -1074396151:
- { errorText = "ERR_BARCODE_CODE93";break;}
- case -1074396152:
- { errorText = "ERR_BARCODE_CODE39";break;}
- case -1074396153:
- { errorText = "ERR_BARCODE_CODABAR";break;}
- case -1074396154:
- { errorText = "ERR_IMAGE_TOO_SMALL";break;}
- case -1074396155:
- { errorText = "ERR_UNINIT";break;}
- case -1074396156:
- { errorText = "ERR_NEED_FULL_VERSION";break;}
- case -1074396157:
- { errorText = "ERR_UNREGISTERED";break;}
- case -1074396158:
- { errorText = "ERR_MEMORY_ERROR";break;}
- case -1074396159:
- { errorText = "ERR_OUT_OF_MEMORY";break;}
- case -1074396160:
- { errorText = "ERR_SYSTEM_ERROR";break;}
- case 0:
- { errorText = "ERR_SUCCESS";break;}
- // end National Instruments defined errors
-
- // begin BAE defined errors
- case ERR_VISION_GENERAL_ERROR:
- { errorText = "ERR_VISION_GENERAL_ERROR";break;}
- case ERR_COLOR_NOT_FOUND:
- { errorText = "ERR_COLOR_NOT_FOUND";break;}
- case ERR_PARTICLE_TOO_SMALL:
- { errorText = "ERR_PARTICLE_TOO_SMALL";break;}
- case ERR_CAMERA_FAILURE:
- { errorText = "ERR_CAMERA_FAILURE";break;}
- case ERR_CAMERA_SOCKET_CREATE_FAILED:
- { errorText = "ERR_CAMERA_SOCKET_CREATE_FAILED";break;}
- case ERR_CAMERA_CONNECT_FAILED:
- { errorText = "ERR_CAMERA_CONNECT_FAILED";break;}
- case ERR_CAMERA_STALE_IMAGE:
- { errorText = "ERR_CAMERA_STALE_IMAGE";break;}
- case ERR_CAMERA_NOT_INITIALIZED:
- { errorText = "ERR_CAMERA_NOT_INITIALIZED";break;}
- case ERR_CAMERA_NO_BUFFER_AVAILABLE:
- { errorText = "ERR_CAMERA_NO_BUFFER_AVAILABLE";break;}
- case ERR_CAMERA_HEADER_ERROR:
- { errorText = "ERR_CAMERA_HEADER_ERROR";break;}
- case ERR_CAMERA_BLOCKING_TIMEOUT:
- { errorText = "ERR_CAMERA_BLOCKING_TIMEOUT";break;}
- case ERR_CAMERA_AUTHORIZATION_FAILED:
- { errorText = "ERR_CAMERA_AUTHORIZATION_FAILED";break;}
- case ERR_CAMERA_TASK_SPAWN_FAILED:
- { errorText = "ERR_CAMERA_TASK_SPAWN_FAILED";break;}
- case ERR_CAMERA_TASK_INPUT_OUT_OF_RANGE:
- { errorText = "ERR_CAMERA_TASK_INPUT_OUT_OF_RANGE";break;}
- case ERR_CAMERA_COMMAND_FAILURE:
- { errorText = "ERR_CAMERA_COMMAND_FAILURE";break;}
- }
-
- return errorText;
-}
-
-
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/FrcError.h b/aos/externals/WPILib/WPILib/Vision2009/FrcError.h
deleted file mode 100644
index 34b0b01..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/FrcError.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : FrcError.h
-* Contributors : JDG, ELF
-* Creation Date : August 12, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Error handling values for C routines
-*/
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved. */
-/* Open Source Software - may be modified and shared by FRC teams. */
-/* Must be accompanied by the BSD license file in $(WIND_BASE)/WPILib. */
-/*----------------------------------------------------------------------------*/
-
-#ifndef __FRCERROR_H__
-#define __FRCERROR_H__
-
-/* Error Codes */
-#define ERR_VISION_GENERAL_ERROR 166000 //
-#define ERR_COLOR_NOT_FOUND 166100 // TrackAPI.cpp
-#define ERR_PARTICLE_TOO_SMALL 166101 // TrackAPI.cpp
-
-#define ERR_CAMERA_FAILURE 166200 // AxisCamera.cpp
-#define ERR_CAMERA_SOCKET_CREATE_FAILED 166201 // AxisCamera.cpp
-#define ERR_CAMERA_CONNECT_FAILED 166202 // AxisCamera.cpp
-#define ERR_CAMERA_STALE_IMAGE 166203 // AxisCamera.cpp
-#define ERR_CAMERA_NOT_INITIALIZED 166204 // AxisCamera.cpp
-#define ERR_CAMERA_NO_BUFFER_AVAILABLE 166205 // AxisCamera.cpp
-#define ERR_CAMERA_HEADER_ERROR 166206 // AxisCamera.cpp
-#define ERR_CAMERA_BLOCKING_TIMEOUT 166207 // AxisCamera.cpp
-#define ERR_CAMERA_AUTHORIZATION_FAILED 166208 // AxisCamera.cpp
-#define ERR_CAMERA_TASK_SPAWN_FAILED 166209 // AxisCamera.cpp
-#define ERR_CAMERA_TASK_INPUT_OUT_OF_RANGE 166210 // AxisCamera.cpp
-#define ERR_CAMERA_COMMAND_FAILURE 166211 // AxisCamera.cpp
-
-/* error handling functions */
-int GetLastVisionError();
-const char* GetVisionErrorText(int errorCode);
-
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.cpp b/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.cpp
deleted file mode 100644
index 1bc594a..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.cpp
+++ /dev/null
@@ -1,481 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : TrackAPI.cpp
-* Contributors : ELF, DWD
-* Creation Date : August 10, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Tracking Routines for FIRST Vision API
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 "string.h"
-#include "vxWorks.h"
-
-#include "AxisCamera.h"
-#include "FrcError.h"
-#include "TrackAPI.h"
-#include "VisionAPI.h"
-
-int TrackAPI_debugFlag = 0;
-#define DPRINTF if(TrackAPI_debugFlag)dprintf
-
-/**
-* @brief Find the largest particle that meets a criteria
-* @param binaryImage Image to inspect
-* @param rect area to search
-* @return 0 = error
-*/
-bool InArea(Image* binaryImage, int particleIndex, Rect rect)
-{
- double position;
-
- imaqMeasureParticle(binaryImage, particleIndex, 0,
- IMAQ_MT_BOUNDING_RECT_LEFT, &position);
- if ( position < (rect.left ) ) return false; // outside left of rectangle?
-
- imaqMeasureParticle(binaryImage, particleIndex, 0,
- IMAQ_MT_BOUNDING_RECT_TOP, &position);
- if ( position < (rect.top ) ) return false; // outside top of rectangle ?
-
- imaqMeasureParticle(binaryImage, particleIndex, 0,
- IMAQ_MT_BOUNDING_RECT_RIGHT, &position);
- if (position > (rect.left + rect.width) ) return false; // outside right of rectangle ?
-
- imaqMeasureParticle(binaryImage, particleIndex, 0,
- IMAQ_MT_BOUNDING_RECT_BOTTOM, &position);
- if (position > (rect.top + rect.height) ) return false; // outside bottom of rectangle ?
-
- DPRINTF(LOG_INFO, "particle %i is in (%i %i) height %i width %i\n",
- particleIndex, rect.left, rect.top, rect.height, rect.width);
- return true;
-}
-
-/**
-* @brief Find the largest particle that meets a criteria
-* @param binaryImage Image to inspect
-* @param largestParticleIndex Index of the largest particle
-* @param rect area to search
-* @return 0 = error
-*/
-int GetLargestParticle(Image* binaryImage, int* largestParticleIndex)
-{ return GetLargestParticle(binaryImage, largestParticleIndex, IMAQ_NO_RECT); }
-
-int GetLargestParticle(Image* binaryImage, int* largestParticleIndex, Rect rect)
-{
- *largestParticleIndex = 0; // points to caller-provided variable
-
- /* determine number of particles in thresholded image */
- int numParticles;
- int success = frcCountParticles(binaryImage, &numParticles);
- if ( !success ) { return success; }
-
- /* if no particles found we can quit here */
- if (numParticles == 0) { return 0; } // unsuccessful if zero particles found
-
- // find the largest particle
- double largestParticleArea = 0;
- double particleArea;
- for (int i = 0; i < numParticles; ++i) {
- success = imaqMeasureParticle(binaryImage, i, 0, IMAQ_MT_AREA, &particleArea);
- if ( !success ) { return success; }
- if (particleArea > largestParticleArea) {
- // see if is in the right area
- if ( InArea(binaryImage, i, rect) ) {
- largestParticleArea = particleArea;
- *largestParticleIndex = i; // return index to caller
- }
- }
- }
-
- return success;
-}
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL.
-* @param color Definition for the hue range
-* @param trackReport Values for tracking: center of particle, particle size, color
-* @return 0 = error
-*/
-int FindColor(FrcHue color, ParticleAnalysisReport* trackReport)
-{
- int success = 0; // return: 0 = error
-
- /* track color */
- // use ACTIVE_LIGHT or WHITE_LIGHT for brightly lit objects
- TrackingThreshold td = GetTrackingData(color, PASSIVE_LIGHT);
-
- success = FindColor(IMAQ_HSL, &td.hue, &td.saturation, &td.luminance, trackReport);
- if ( !success ) {
- DPRINTF (LOG_INFO, "did not find color - errorCode= %i",GetLastVisionError());
- return success;
- }
-
- //PrintReport(par);
-
- /* set an image quality restriction */
- if (trackReport->particleToImagePercent < PARTICLE_TO_IMAGE_PERCENT) {
- imaqSetError(ERR_PARTICLE_TOO_SMALL, __FUNCTION__);
- success = 0;
- }
- return success;
-}
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL.
-* @param hueRange The range for the first plane
-* @param trackReport Values for tracking: center of particle, particle size, color
-* @return 0 = error
-*/
-int FindColor(const Range* hueRange, ParticleAnalysisReport *trackReport)
-{ return FindColor(hueRange, DEFAULT_SATURATION_THRESHOLD, trackReport); }
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL.
-* @param hueRange The range for the first plane
-* @param minSaturation The lower range saturation
-* @param trackReport Values for tracking: center of particle, particle size, color
-* @return 0 = error
-*/
-int FindColor(const Range* hueRange, int minSaturation, ParticleAnalysisReport *trackReport)
-{
- Range satRange;
- satRange.minValue = minSaturation;
- satRange.maxValue = 255;
- Range lumRange;
- lumRange.minValue = 0;
- lumRange.maxValue = 255;
- ColorMode cmode = IMAQ_HSL;
- return FindColor(cmode, hueRange, &satRange, &lumRange, trackReport);
-}
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL and IMAQ_IMAGE_RGB.
-* @param mode Color mode, either IMAQ_HSL or IMAQ_RGB
-* @param plane1Range The range for the first plane (hue or red)
-* @param plane2Range The range for the second plane (saturation or green)
-* @param plane3Range The range for the third plane (luminance or blue)
-* @param trackReport Values for tracking: center of particle, particle size, etc
-* @return 0 = error
-*/
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport)
-{
- return FindColor(mode, plane1Range, plane2Range, plane3Range, trackReport, NULL);
-}
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL and IMAQ_IMAGE_RGB.
-* @param mode Color mode, either IMAQ_HSL or IMAQ_RGB
-* @param plane1Range The range for the first plane (hue or red)
-* @param plane2Range The range for the second plane (saturation or green)
-* @param plane3Range The range for the third plane (luminance or blue)
-* @param trackReport Values for tracking: center of particle, particle size, etc
-* @param colorReport Color charactaristics of the particle
-* @return 0 = error
-*/
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport,
- ColorReport *colorReport)
-{
- return FindColor(mode, plane1Range, plane2Range, plane3Range, trackReport,
- NULL, IMAQ_NO_RECT);
-}
-
-/**
-* @brief Search for a color. Supports IMAQ_IMAGE_HSL and IMAQ_IMAGE_RGB.
-* @param mode Color mode, either IMAQ_HSL or IMAQ_RGB
-* @param plane1Range The range for the first plane (hue or red)
-* @param plane2Range The range for the second plane (saturation or green)
-* @param plane3Range The range for the third plane (luminance or blue)
-* @param trackReport Values for tracking: center of particle, particle size, etc
-* @param colorReport Color charactaristics of the particle
-* @param rect Rectangle to confine search to
-* @return 0 = error
-*/
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport,
- ColorReport *colorReport, Rect rect)
-{
- int errorCode = 0;
- int success = 0;
-
- /* create an image object */
- Image* cameraImage = frcCreateImage(IMAQ_IMAGE_HSL);
- if (!cameraImage) { return success; }
-
- /* get image from camera - if the camera has not finished initializing,
- * this will fail
- */
- double imageTime;
- success = GetImage(cameraImage, &imageTime);
- if (!success){
- DPRINTF(LOG_INFO, "No camera Image available Error = %i %s",
- errorCode, GetVisionErrorText(errorCode));
- frcDispose(cameraImage);
- imaqSetError(errorCode, __FUNCTION__); //reset error code for the caller
- return success;
- }
-
- /* save a copy of the image to another image for color thresholding later */
- Image* histImage = frcCreateImage(IMAQ_IMAGE_HSL);
- if (!histImage) { frcDispose(cameraImage); return success; }
- success = frcCopyImage(histImage,cameraImage);
- if ( !success ) {
- errorCode = GetLastVisionError();
- frcDispose(__FUNCTION__,cameraImage,histImage,NULL);
- return success;
- }
-
- /* Color threshold the image */
- success = frcColorThreshold(cameraImage, cameraImage, mode, plane1Range, plane2Range, plane3Range);
- if ( !success ) {
- errorCode = GetLastVisionError();
- DPRINTF (LOG_DEBUG, "Error = %i %s ", errorCode, GetVisionErrorText(errorCode));
- frcDispose(__FUNCTION__,cameraImage,histImage,NULL);
- return success;
- }
-
- int largestParticleIndex = 0;
- success = GetLargestParticle(cameraImage, &largestParticleIndex, rect );
- if ( !success ) {
- errorCode = GetLastVisionError();
- DPRINTF (LOG_DEBUG, "Error after GetLargestParticle = %i %s ", errorCode, GetVisionErrorText(errorCode));
- frcDispose(__FUNCTION__,cameraImage,histImage,NULL);
- imaqSetError(ERR_COLOR_NOT_FOUND, __FUNCTION__);
- return success;
- }
- DPRINTF(LOG_INFO, "largestParticleIndex = %i\n", largestParticleIndex);
-
- /* Particles were found */
- /*
- * Fill in report information for largest particle found
- */
- success = frcParticleAnalysis(cameraImage, largestParticleIndex, trackReport);
- trackReport->imageTimestamp = imageTime;
-
- /* clean up */
- if (!success) {frcDispose(__FUNCTION__,cameraImage,histImage,NULL); return success;}
-
- /* particle color statistics */
- /* only if a color report requested */
- if (colorReport != NULL)
- {
- /* first filter out the other particles */
- ParticleFilterCriteria2 criteria;
- ParticleFilterOptions* options = NULL;
- Rect rect;
- int numParticles;
- success = frcParticleFilter(cameraImage, cameraImage, &criteria, 1, options,
- rect, &numParticles);
- if ( !success ) {
- DPRINTF(LOG_INFO, "frcParticleFilter errorCode %i", GetLastVisionError());
- }
-
- /* histogram the original image using the thresholded image as a mask */
- int numClasses = 10; //how many classes?
- ColorHistogramReport* chrep = imaqColorHistogram2(histImage, numClasses, IMAQ_HSL,
- NULL, cameraImage);
- if (chrep == NULL) {
- DPRINTF(LOG_INFO, "NULL Color Histogram");
- errorCode = GetLastVisionError();
- } else {
- colorReport->particleHueMax = chrep->plane1.max;
- colorReport->particleHueMin = chrep->plane1.min;
- colorReport->particleHueMean = chrep->plane1.mean;
- colorReport->particleSatMax = chrep->plane2.max;
- colorReport->particleSatMin = chrep->plane2.min;
- colorReport->particleSatMean = chrep->plane2.mean;
- colorReport->particleLumMax = chrep->plane3.max;
- colorReport->particleLumMin = chrep->plane3.min;
- colorReport->particleLumMean = chrep->plane3.mean;
- colorReport->numberParticlesFound = numParticles;
- frcDispose(chrep);
- }
- }
-
- /* clean up */
- frcDispose(__FUNCTION__,cameraImage,histImage,NULL);
-
- return success;
-}
-
-
-/**
- * Data functions for tracking
- */
-
-
-/**
- * @brief Get default HSL tracking parameters
- * Note these parameters are not fully characterized at this point
- * Get these default values and modify them as needed for your environment
- * @param hue tasked color
- * @param light saturation/luminance
- */
-TrackingThreshold GetTrackingData(FrcHue hue, FrcLight light)
-{
- TrackingThreshold trackingData;
-
- //set saturation & luminance
- switch (light) {
- default:
- case FLUORESCENT:
- trackingData.saturation.minValue = 100;
- trackingData.saturation.maxValue = 255;
- trackingData.luminance.minValue = 40;
- trackingData.luminance.maxValue = 255;
- if (hue == GREEN) trackingData.luminance.minValue = 100;
- if (hue == PINK) trackingData.saturation.minValue = 80;
- if (hue == PINK) trackingData.luminance.minValue = 60;
- if (hue == PINK) trackingData.luminance.maxValue = 155;
- break;
- case PASSIVE_LIGHT:
- trackingData.saturation.minValue = 50;
- trackingData.saturation.maxValue = 255;
- trackingData.luminance.minValue = 20;
- trackingData.luminance.maxValue = 255;
- break;
- case BRIGHT_LIGHT:
- trackingData.saturation.minValue = 0;
- trackingData.saturation.maxValue = 100;
- trackingData.luminance.minValue = 100;
- trackingData.luminance.maxValue = 255;
- break;
- case ACTIVE_LIGHT:
- trackingData.saturation.minValue = 0;
- trackingData.saturation.maxValue = 50;
- trackingData.luminance.minValue = 150;
- trackingData.luminance.maxValue = 255;
- break;
- case WHITE_LIGHT:
- trackingData.saturation.minValue = 0;
- trackingData.saturation.maxValue = 20;
- trackingData.luminance.minValue = 200;
- trackingData.luminance.maxValue = 255;
- break;
- }
-
- //set hue
- switch (hue){
- default:
- case WHITE:
- strcpy (trackingData.name, "WHITE");
- trackingData.hue.minValue = 0;
- trackingData.hue.maxValue = 255;
- break;
- case ORANGE:
- strcpy (trackingData.name, "ORANGE");
- trackingData.hue.minValue = 5;
- trackingData.hue.maxValue = 25;
- break;
- case YELLOW:
- strcpy (trackingData.name, "YELLOW");
- trackingData.hue.minValue = 30;
- trackingData.hue.maxValue = 50;
- break;
- case GREEN:
- strcpy (trackingData.name, "GREEN");
- if (light == FLUORESCENT) {
- trackingData.hue.minValue = 60;
- trackingData.hue.maxValue = 110;
- } else {
- trackingData.hue.minValue = 90;
- trackingData.hue.maxValue = 125;
- }
- break;
- case BLUE:
- strcpy (trackingData.name, "BLUE");
- trackingData.hue.minValue = 140;
- trackingData.hue.maxValue = 170;
- break;
- case PURPLE:
- strcpy (trackingData.name, "PURPLE");
- trackingData.hue.minValue = 180;
- trackingData.hue.maxValue = 200;
- break;
- case PINK:
- strcpy (trackingData.name, "PINK");
- trackingData.hue.minValue = 210;
- trackingData.hue.maxValue = 250;
- break;
- case RED:
- strcpy (trackingData.name, "RED");
- trackingData.hue.minValue = 240;
- trackingData.hue.maxValue = 255;
- break;
- }
- return(trackingData);
-}
-
-
-/**
- * Print particle analysis report
- * @param myReport Report to print
- */
-void PrintReport(ParticleAnalysisReport* myReport)
-{
- dprintf(LOG_INFO, "particle analysis:\n %s%i %s%i\n %s%lf\n %s%i %s%i\n %s%g %s%g\n %s%g\n %s%i %s%i\n %s%i %s%i\n",
- "imageHeight = ", myReport->imageHeight,
- "imageWidth = ", myReport->imageWidth,
- "imageTimestamp = ", myReport->imageTimestamp,
- "center_mass_x = ", myReport->center_mass_x,
- "center_mass_y = ", myReport->center_mass_y,
- "center_mass_x_normalized = ", myReport->center_mass_x_normalized,
- "center_mass_y_normalized = ", myReport->center_mass_y_normalized,
- "particleArea = ", myReport->particleArea,
- "boundingRectangleTop = ", myReport->boundingRect.top,
- "boundingRectangleLeft = ", myReport->boundingRect.left,
- "boundingRectangleHeight = ", myReport->boundingRect.height,
- "boundingRectangleWidth = ", myReport->boundingRect.width);
-
- dprintf(LOG_INFO, "quality statistics: \n %s%g %s%g \n",
- "particleToImagePercent = ", myReport->particleToImagePercent,
- "particleQuality = ", myReport->particleQuality);
-}
-
-/**
- * Print color report
- * @param myReport Report to print
- */
-void PrintReport(ColorReport* myReport)
-{
- dprintf(LOG_INFO, "particle ranges for %i particles: ",
- "numberParticlesFound = ", myReport->numberParticlesFound);
- ;
- dprintf(LOG_INFO, "\n %s%f %s%f %s%f\n %s%f %s%f %s%f\n %s%f %s%f %s%f\n -------",
- "particleHueMax = ", myReport->particleHueMax,
- "particleHueMin = ", myReport->particleHueMin,
- "particleHueMean = ", myReport->particleHueMean,
- "particleSatMax = ", myReport->particleSatMax,
- "particleSatMin = ", myReport->particleSatMin,
- "particleSatMean = ", myReport->particleSatMean,
- "particleLumMax = ", myReport->particleLumMax,
- "particleLumMin = ", myReport->particleLumMin,
- "particleLumMean = ", myReport->particleLumMean);
-
-}
-
-/**
- * Print color report
- * @param myReport Report to print
- */
-void PrintReport(TrackingThreshold* myReport)
-{
- dprintf(LOG_INFO, "name of color: %s", myReport->name);
-
- dprintf(LOG_INFO, "\n %s%i %s%i\n %s%i %s%i\n %s%i %s%i\n -------",
- "hueMin = ", myReport->hue.minValue,
- "hueMax = ", myReport->hue.maxValue,
- "satMin = ", myReport->saturation.minValue,
- "satMax = ", myReport->saturation.maxValue,
- "lumMin = ", myReport->luminance.minValue,
- "lumMax = ", myReport->luminance.maxValue );
-
-}
-
-
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.h b/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.h
deleted file mode 100644
index 2f72d66..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/TrackAPI.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : TrackAPI.h
-* Contributors : ELF
-* Creation Date : August 12, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Globally defined values for the FIRST Vision API
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 __TRACKAPI_H__
-#define __TRACKAPI_H__
-
-#include "VisionAPI.h"
-#include "BaeUtilities.h"
-
-/* Constants */
-/** image quality requirement: particle must be this % of pixels
- * For instance, a 320x240 image has 76800 pixels. With this
- * tolerance at .01, the image must be 768 pixels.
- * Use a percentage instead of a fixed # of pixels so different
- * image sizes will work the same way */
-#define PARTICLE_TO_IMAGE_PERCENT 0.01
-
-/* Structures */
-typedef struct TrackingThreshold_struct {
- char name[64];
- Range hue;
- Range saturation;
- Range luminance;
-} TrackingThreshold;
-
-/* Enumerated Types */
-
-/** Predefined hues */
-typedef enum FrcHue_enum {
- // Basic colors
- RED, GREEN, BLUE, YELLOW, ORANGE, PURPLE, WHITE, PINK
-}FrcHue;
-
-/** Predefined saturation / luminance settings */
-typedef enum FrcLight_enum {
- PASSIVE_LIGHT, BRIGHT_LIGHT, ACTIVE_LIGHT, WHITE_LIGHT, FLUORESCENT
-}FrcLight;
-
-/* color tracking support functions */
-TrackingThreshold GetTrackingData(FrcHue hue, FrcLight light);
-
-void PrintReport(ParticleAnalysisReport* myReport);
-void PrintReport(ColorReport* myReport);
-void PrintReport(TrackingThreshold* myReport);
-
-/* Tracking functions */
-
-/* find a color in current camera image */
-bool InArea(Image* binaryImage, int particleIndex, Rect rect);
-int GetLargestParticle(Image* binaryImage, int* particleNum);
-int GetLargestParticle(Image* binaryImage, int* particleNum, Rect rect);
-int FindColor(FrcHue color, ParticleAnalysisReport* trackReport);
-int FindColor(const Range* hueRange, ParticleAnalysisReport *trackReport);
-int FindColor(const Range* hueRange, int minSaturation, ParticleAnalysisReport *trackReport);
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport);
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport, ColorReport *colorReport);
-int FindColor(ColorMode mode, const Range* plane1Range, const Range* plane2Range,
- const Range* plane3Range, ParticleAnalysisReport *trackReport,
- ColorReport *colorReport, Rect rect);
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.cpp b/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.cpp
deleted file mode 100644
index f511b39..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.cpp
+++ /dev/null
@@ -1,676 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : VisionAPI.cpp
-* Contributors : ELF, EMF
-* Creation Date : June 26, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : C Routines for FIRST Vision API. Open source API developed
-* by BAE Systems to interface with the National Instruments vision C library
-* in the nivision.out module. The published interface to nivision.out is in
-* the header file nivision.h and documented in the NIVisionCVI.chm help file.
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 "stdioLib.h"
-#include "vxWorks.h"
-
-#include "BaeUtilities.h"
-#include "FrcError.h"
-#include "VisionAPI.h"
-
-int VisionAPI_debugFlag = 1;
-#define DPRINTF if(VisionAPI_debugFlag)dprintf
-
-/* Image Management functions */
-
-/**
-* @brief Create an image object
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64
-* The border size is defaulted to 3 so that convolutional algorithms work at the edges.
-* When you are finished with the created image, dispose of it by calling frcDispose().
-* To get extended error information, call GetLastError().
-*
-* @param type Type of image to create
-* @return Image* On success, this function returns the created image. On failure, it returns NULL.
-*/
-Image* frcCreateImage(ImageType type) { return imaqCreateImage(type, DEFAULT_BORDER_SIZE); }
-
-/**
-* @brief Dispose of one object. Supports any object created on the heap.
-*
-* @param object object to dispose of
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcDispose(void* object) { return imaqDispose(object); }
-/**
-* @brief Dispose of a list of objects. Supports any object created on the heap.
-*
-* @param functionName The name of the function
-* @param ... A list of pointers to structures that need to be disposed of.
-* The last pointer in the list should always be set to NULL.
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcDispose( const char* functionName, ... ) /* Variable argument list */
-{
- va_list disposalPtrList; /* Input argument list */
- void* disposalPtr; /* For iteration */
- int success, returnValue = 1;
-
- va_start( disposalPtrList, functionName ); /* start of variable list */
- disposalPtr = va_arg( disposalPtrList, void* );
- while( disposalPtr != NULL ) {
- success = imaqDispose(disposalPtr);
- if (!success) {returnValue = 0;}
- disposalPtr = va_arg( disposalPtrList, void* );
- }
- return returnValue;
-}
-
-/**
-* @brief Copy an image object.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-*
-* @param dest Copy of image. On failure, dest is NULL. Must have already been created using frcCreateImage().
-* When you are finished with the created image, dispose of it by calling frcDispose().
-* @param source Image to copy
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcCopyImage(Image* dest, const Image* source) { return imaqDuplicate(dest, source); }
-
-/**
-* @brief Crop image without changing the scale.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-*
-* @param dest Modified image
-* @param source Image to crop
-* @param rect region to process, or IMAQ_NO_RECT
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcCrop(Image* dest, const Image* source, Rect rect)
-{
- return imaqScale(dest, source, 1, 1, IMAQ_SCALE_LARGER, rect);
-}
-
-
-/**
-* @brief Scales the entire image larger or smaller.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-*
-* @param dest Modified image
-* @param source Image to scale
-* @param xScale the horizontal reduction ratio
-* @param yScale the vertical reduction ratio
-* @param scaleMode IMAQ_SCALE_LARGER or IMAQ_SCALE_SMALLER
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcScale(Image* dest, const Image* source, int xScale, int yScale, ScalingMode scaleMode)
-{
- Rect rect = IMAQ_NO_RECT;
- return imaqScale(dest, source, xScale, yScale, scaleMode, rect);
-}
-
-/**
- * @brief Creates image object from the information in a file. The file can be in one of the following formats:
- * PNG, JPEG, JPEG2000, TIFF, AIPD, or BMP.
- * Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
- *
- * @param image Image read in
- * @param fileName File to read. Cannot be NULL
- *
- * @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
- */
- int frcReadImage(Image* image, const char* fileName)
- {
- return imaqReadFile(image, fileName, NULL, NULL);
- }
-
-
- /**
- * @brief Write image to a file.
- * Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
- *
- * The file type is determined by the extension, as follows:
- *
- * Extension File Type
- * aipd or .apd AIPD
- * .bmp BMP
- * .jpg or .jpeg JPEG
- * .jp2 JPEG2000
- * .png PNG
- * .tif or .tiff TIFF
- *
- *
- *The following are the supported image types for each file type:
- *
- * File Types Image Types
- * AIPD all image types
- * BMP, JPEG 8-bit, RGB
- * PNG, TIFF, JPEG2000 8-bit, 16-bit, RGB, RGBU64
- *
- * @param image Image to write
- * @param fileName File to read. Cannot be NULL. The extension determines the file format that is written.
- *
- * @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
- */
-int frcWriteImage(const Image* image, const char* fileName)
-{
- RGBValue* colorTable = NULL;
- return imaqWriteFile(image, fileName, colorTable);
-}
-
-
-/* Measure Intensity functions */
-
-/**
-* @brief Measures the pixel intensities in a rectangle of an image.
-* Outputs intensity based statistics about an image such as Max, Min, Mean and Std Dev of pixel value.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
-*
-* Parameter Discussion :
-* Relevant parameters of the HistogramReport include:
-* min, max, mean and stdDev
-* min/max —Setting both min and max to 0 causes the function to set min to 0
-* and the max to 255 for 8-bit images and to the actual minimum value and
-* maximum value of the image for all other image types.
-* max—Setting both min and max to 0 causes the function to set max to 255
-* for 8-bit images and to the actual maximum value of the image for
-* all other image types.
-*
-* @param image Image whose histogram the function calculates.
-* @param numClasses The number of classes into which the function separates the pixels.
-* Determines the number of elements in the histogram array returned
-* @param min The minimum pixel value to consider for the histogram.
-* The function does not count pixels with values less than min.
-* @param max The maximum pixel value to consider for the histogram.
-* The function does not count pixels with values greater than max.
-* @param rect Region of interest in the image. If not included, the entire image is used.
-* @return On success, this function returns a report describing the pixel value classification.
-* When you are finished with the report, dispose of it by calling frcDispose().
-* On failure, this function returns NULL. To get extended error information, call GetLastError().
-*
-*/
-HistogramReport* frcHistogram(const Image* image, int numClasses, float min, float max)
-{
- Rect rect = IMAQ_NO_RECT;
- return frcHistogram(image, numClasses, min, max, rect);
-}
-HistogramReport* frcHistogram(const Image* image, int numClasses, float min, float max, Rect rect)
-{
- int success;
- int fillValue = 1;
-
- /* create the region of interest */
- ROI* pRoi = imaqCreateROI();
- success = imaqAddRectContour(pRoi, rect);
- if ( !success ) { GetLastVisionError(); return NULL; }
-
- /* make a mask from the ROI */
- Image* pMask = frcCreateImage(IMAQ_IMAGE_U8);
- success = imaqROIToMask(pMask, pRoi, fillValue, NULL, NULL);
- if ( !success ) {
- GetLastVisionError();
- frcDispose(__FUNCTION__, pRoi, NULL);
- return NULL;
- }
-
- /* get a histogram report */
- HistogramReport* pHr = NULL;
- pHr = imaqHistogram(image, numClasses, min, max, pMask);
-
- /* clean up */
- frcDispose(__FUNCTION__, pRoi, pMask, NULL);
-
- return pHr;
-}
-
-/**
-* @brief Calculates the histogram, or pixel distribution, of a color image.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-*
-* @param image Image whose histogram the function calculates.
-* @param numClasses The number of classes into which the function separates the pixels.
-* Determines the number of elements in the histogram array returned
-* @param mode The color space in which to perform the histogram. Possible values include IMAQ_RGB and IMAQ_HSL.
-* @param mask An optional mask image. This image must be an IMAQ_IMAGE_U8 image.
-* The function calculates the histogram using only those pixels in the image whose
-* corresponding pixels in the mask are non-zero. Set this parameter to NULL to calculate
-* the histogram of the entire image, or use the simplified call.
-*
-* @return On success, this function returns a report describing the classification
-* of each plane in a HistogramReport.
-* When you are finished with the report, dispose of it by calling frcDispose().
-* On failure, this function returns NULL.
-* To get extended error information, call imaqGetLastError().
-*/
-ColorHistogramReport* frcColorHistogram(const Image* image, int numClasses, ColorMode mode)
-{
- return frcColorHistogram(image, numClasses, mode, NULL);
-}
-
-ColorHistogramReport* frcColorHistogram(const Image* image, int numClasses, ColorMode mode, Image* mask)
-{
- return imaqColorHistogram2((Image*)image, numClasses, mode, NULL, mask);
-}
-
-
-/**
-* @brief Measures the pixel intensities in a rectangle of an image.
-* Outputs intensity based statistics about an image such as Max, Min, Mean and Std Dev of pixel value.
-* Supports IMAQ_IMAGE_U8 (grayscale) IMAQ_IMAGE_RGB (color) IMAQ_IMAGE_HSL (color-HSL).
-*
-* @param image The image whose pixel value the function queries
-* @param pixel The coordinates of the pixel that the function queries
-* @param value On return, the value of the specified image pixel. This parameter cannot be NULL.
-* This data structure contains either grayscale, RGB, HSL, Complex or RGBU64Value depending on the type of image.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcGetPixelValue(const Image* image, Point pixel, PixelValue* value)
-{
- return imaqGetPixel(image, pixel, value);
-}
-
-
-/* Particle Analysis functions */
-
-/**
-* @brief Filters particles out of an image based on their measurements.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
-*
-* @param dest The destination image. If dest is used, it must be the same size as the Source image. It will contain only the filtered particles.
-* @param source The image containing the particles to filter.
-* @param criteria An array of criteria to apply to the particles in the source image. This array cannot be NULL.
-* See the NIVisionCVI.chm help file for definitions of criteria.
-* @param criteriaCount The number of elements in the criteria array.
-* @param options Binary filter options, including rejectMatches, rejectBorder, and connectivity8.
-* @param rect Area of image to filter. If omitted, the default is entire image.
-* @param numParticles On return, the number of particles left in the image
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcParticleFilter(Image* dest, Image* source, const ParticleFilterCriteria2* criteria,
- int criteriaCount, const ParticleFilterOptions* options, int* numParticles)
-{
- Rect rect = IMAQ_NO_RECT;
- return frcParticleFilter(dest, source, criteria, criteriaCount, options, rect, numParticles);
-}
-
-int frcParticleFilter(Image* dest, Image* source, const ParticleFilterCriteria2* criteria,
- int criteriaCount, const ParticleFilterOptions* options, Rect rect, int* numParticles)
-{
- ROI* roi = imaqCreateROI();
- imaqAddRectContour(roi, rect);
- return imaqParticleFilter3(dest, source, criteria, criteriaCount, options, roi, numParticles);
-}
-
-
-/**
-* @brief Performs morphological transformations on binary images.
-* Supports IMAQ_IMAGE_U8.
-*
-* @param dest The destination image. The border size of the destination image is not important.
-* @param source The image on which the function performs the morphological operations. The calculation
-* modifies the border of the source image. The border must be at least half as large as the larger
-* dimension of the structuring element. The connected source image for a morphological transformation
-* must have been created with a border capable of supporting the size of the structuring element.
-* A 3 by 3 structuring element requires a minimal border of 1, a 5 by 5 structuring element requires a minimal border of 2, and so on.
-* @param method The morphological transform to apply.
-* @param structuringElement The structuring element used in the operation. Omit this parameter if you do not want a custom structuring element.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcMorphology(Image* dest, Image* source, MorphologyMethod method)
-{
- return imaqMorphology(dest, source, method, NULL);
-}
-
-int frcMorphology(Image* dest, Image* source, MorphologyMethod method, const StructuringElement* structuringElement)
-{
- return imaqMorphology(dest, source, method, structuringElement);
-}
-
-/**
-* @brief Eliminates particles that touch the border of the image.
-* Supports IMAQ_IMAGE_U8.
-*
-* @param dest The destination image.
-* @param source The source image. If the image has a border, the function sets all border pixel values to 0.
-* @param connectivity8 specifies the type of connectivity used by the algorithm for particle detection.
-* The connectivity mode directly determines whether an adjacent pixel belongs to the same particle or a
-* different particle. Set to TRUE to use connectivity-8 to determine whether particles are touching
-* Set to FALSE to use connectivity-4 to determine whether particles are touching.
-* The default setting for the simplified call is TRUE
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcRejectBorder(Image* dest, Image* source)
-{ return imaqRejectBorder(dest, source, TRUE); }
-
-int frcRejectBorder(Image* dest, Image* source, int connectivity8)
-{
- return imaqRejectBorder(dest, source, connectivity8);
-}
-
-
-/**
-* @brief Counts the number of particles in a binary image.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
-* @param image binary (thresholded) image
-* @param numParticles On return, the number of particles.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcCountParticles(Image* image, int* numParticles)
-{
- return imaqCountParticles(image, 1, numParticles);
-}
-
-
-/**
-* @brief Conduct measurements for a single particle in an images.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
-*
-* @param image image with the particle to analyze. This function modifies the source image.
-* If you need the original image, create a copy of the image using frcCopy() before using this function.
-* @param particleNumber The number of the particle to get information on
-* @param par on return, a particle analysis report containing information about the particle. This structure must be created by the caller.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcParticleAnalysis(Image* image, int particleNumber, ParticleAnalysisReport* par)
-{
- int success = 0;
-
- /* image information */
- int height, width;
- if ( ! imaqGetImageSize(image, &width, &height) ) { return success; }
- par->imageWidth = width;
- par->imageHeight = height;
- par->particleIndex = particleNumber;
-
- /* center of mass point of the largest particle */
- double returnDouble;
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_CENTER_OF_MASS_X, &returnDouble);
- if ( !success ) { return success; }
- par->center_mass_x = (int)returnDouble; // pixel
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_CENTER_OF_MASS_Y, &returnDouble);
- if ( !success ) { return success; }
- par->center_mass_y = (int)returnDouble; // pixel
-
- /* particle size statistics */
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_AREA, &returnDouble);
- if ( !success ) { return success; }
- par->particleArea = returnDouble;
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_BOUNDING_RECT_TOP, &returnDouble);
- if ( !success ) { return success; }
- par->boundingRect.top = (int)returnDouble;
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_BOUNDING_RECT_LEFT, &returnDouble);
- if ( !success ) { return success; }
- par->boundingRect.left = (int)returnDouble;
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_BOUNDING_RECT_HEIGHT, &returnDouble);
- if ( !success ) { return success; }
- par->boundingRect.height = (int)returnDouble;
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_BOUNDING_RECT_WIDTH, &returnDouble);
- if ( !success ) { return success; }
- par->boundingRect.width = (int)returnDouble;
-
- /* particle quality statistics */
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_AREA_BY_IMAGE_AREA, &returnDouble);
- if ( !success ) { return success; }
- par->particleToImagePercent = returnDouble;
-
- success = imaqMeasureParticle(image, particleNumber, 0, IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA, &returnDouble);
- if ( !success ) { return success; }
- par->particleQuality = returnDouble;
-
- /* normalized position (-1 to 1) */
- par->center_mass_x_normalized = RangeToNormalized(par->center_mass_x, width);
- par->center_mass_y_normalized = RangeToNormalized(par->center_mass_y, height);
-
- return success;
-}
-
-
-/* Image Enhancement functions */
-
-/**
-* @brief Improves contrast on a grayscale image.
-* Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16.
-* @param dest The destination image.
-* @param source The image to equalize
-* @param min the smallest value used for processing. After processing, all pixel values that are less than or equal to the Minimum in the original image are set to 0 for an 8-bit image. In 16-bit and floating-point images, these pixel values are set to the smallest pixel value found in the original image.
-* @param max the largest value used for processing. After processing, all pixel values that are greater than or equal to the Maximum in the original image are set to 255 for an 8-bit image. In 16-bit and floating-point images, these pixel values are set to the largest pixel value found in the original image.
-* @param mask an 8-bit image that specifies the region of the small image that will be copied. Only those pixels in the Image Src (Small) image that correspond to an equivalent non-zero pixel in the mask image are copied. All other pixels keep their original values. The entire image is processed if Image Mask is NULL or this parameter is omitted.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*
-* option defaults:
-* searchRect = IMAQ_NO_RECT
-* minMatchScore = DEFAULT_MINMAX_SCORE (800)
-*/
-int frcEqualize(Image* dest, const Image* source, float min, float max)
-{ return frcEqualize(dest, source, min, max, NULL); }
-
-int frcEqualize(Image* dest, const Image* source, float min, float max, const Image* mask)
-{
- return imaqEqualize(dest, source, min, max, mask);
-}
-
-/**
-* @brief Improves contrast on a color image.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL
-*
-* option defaults: colorEqualization = TRUE to equalize all three planes of the image
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-* @param dest The destination image.
-* @param source The image to equalize
-* @param colorEqualization Set this parameter to TRUE to equalize all three planes of the image (the default). Set this parameter to FALSE to equalize only the luminance plane.
-*/
-int frcColorEqualize(Image* dest, const Image* source)
-{
- return imaqColorEqualize(dest, source, TRUE);
-}
-
-int frcColorEqualize(Image* dest, const Image* source, int colorEqualization)
-{
- return imaqColorEqualize(dest, source, TRUE);
-}
-
-/* Image Conversion functions */
-
-/**
-* @brief Automatically thresholds a grayscale image into a binary image for Particle Analysis based on a smart threshold.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16
-* @param dest The destination image.
-* @param source The image to threshold
-* @param windowWidth The width of the rectangular window around the pixel on which the function
-* performs the local threshold. This number must be at least 3 and cannot be larger than the width of source
-* @param windowHeight The height of the rectangular window around the pixel on which the function
-* performs the local threshold. This number must be at least 3 and cannot be larger than the height of source
-* @param method Specifies the local thresholding method the function uses. Value can be IMAQ_NIBLACK
-* (which computes thresholds for each pixel based on its local statistics using the Niblack local thresholding
-* algorithm.), or IMAQ_BACKGROUND_CORRECTION (which does background correction first to eliminate non-uniform
-* lighting effects, then performs thresholding using the Otsu thresholding algorithm)
-* @param deviationWeight Specifies the k constant used in the Niblack local thresholding algorithm, which
-* determines the weight applied to the variance calculation. Valid k constants range from 0 to 1. Setting
-* this value to 0 will increase the performance of the function because the function will not calculate the
-* variance for any of the pixels. The function ignores this value if method is not set to IMAQ_NIBLACK
-* @param type Specifies the type of objects for which you want to look. Values can be IMAQ_BRIGHT_OBJECTS
-* or IMAQ_DARK_OBJECTS.
-* @param replaceValue Specifies the replacement value the function uses for the pixels of the kept objects
-* in the destination image.
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcSmartThreshold(Image* dest, const Image* source,
- unsigned int windowWidth, unsigned int windowHeight, LocalThresholdMethod method,
- double deviationWeight, ObjectType type)
-{
- float replaceValue = 1.0;
- return imaqLocalThreshold(dest, source, windowWidth, windowHeight, method,
- deviationWeight, type, replaceValue);
-}
-
-int frcSmartThreshold(Image* dest, const Image* source,
- unsigned int windowWidth, unsigned int windowHeight, LocalThresholdMethod method,
- double deviationWeight, ObjectType type, float replaceValue)
-{
- return imaqLocalThreshold(dest, source, windowWidth, windowHeight, method,
- deviationWeight, type, replaceValue);
-}
-
-/**
-* @brief Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold.
-* The function sets pixels values outside of the given range to 0. The function sets pixel values
-* within the range to a given value or leaves the values unchanged.
-* Use the simplified call to leave pixel values unchanged.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16.
-*
-* @param dest The destination image.
-* @param source The image to threshold
-* @param rangeMin The lower boundary of the range of pixel values to keep
-* @param rangeMax The upper boundary of the range of pixel values to keep.
-*
-* @return int - error code: 0 = error. To get extended error information, call GetLastError().
-*/
-int frcSimpleThreshold(Image* dest, const Image* source, float rangeMin, float rangeMax)
-{
- int newValue = 255;
- return frcSimpleThreshold(dest, source, rangeMin, rangeMax, newValue);
-}
-
-/**
-* @brief Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold.
-* The function sets pixels values outside of the given range to 0. The function sets
-* pixel values within the range to the given value.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16.
-*
-* @param dest The destination image.
-* @param source The image to threshold
-* @param rangeMin The lower boundary of the range of pixel values to keep
-* @param rangeMax The upper boundary of the range of pixel values to keep.
-* @param newValue The replacement value for pixels within the range. Use the simplified call to leave the pixel values unchanged
-*
-* @return int - error code: 0 = error. To get extended error information, call GetLastError().
-*/
-int frcSimpleThreshold(Image* dest, const Image* source, float rangeMin, float rangeMax, float newValue)
-{
- int useNewValue = TRUE;
- return imaqThreshold(dest, source, rangeMin, rangeMax, useNewValue, newValue);
-}
-
-/**
-* @brief Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue,
-* Saturation, Luminance values for a HSL image.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-* This simpler version filters based on a hue range in the HSL mode.
-*
-* @param dest The destination image. This must be a IMAQ_IMAGE_U8 image.
-* @param source The image to threshold
-* @param mode The color space to perform the threshold in. valid values are: IMAQ_RGB, IMAQ_HSL.
-* @param plane1Range The selection range for the first plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-* @param plane2Range The selection range for the second plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-* @param plane3Range The selection range for the third plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-* */
-int frcColorThreshold(Image* dest, const Image* source, ColorMode mode,
- const Range* plane1Range, const Range* plane2Range, const Range* plane3Range)
-{
- int replaceValue = 1;
- return imaqColorThreshold(dest, source, replaceValue, mode, plane1Range, plane2Range, plane3Range);
-}
-
-/**
-* @brief Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue,
-* Saturation, Luminance values for a HSL image.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-* The simpler version filters based on a hue range in the HSL mode.
-*
-* @param dest The destination image. This must be a IMAQ_IMAGE_U8 image.
-* @param source The image to threshold
-* @param replaceValue Value to assign to selected pixels. Defaults to 1 if simplified call is used.
-* @param mode The color space to perform the threshold in. valid values are: IMAQ_RGB, IMAQ_HSL.
-* @param plane1Range The selection range for the first plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-* @param plane2Range The selection range for the second plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-* @param plane3Range The selection range for the third plane of the image. Set this parameter to NULL to use a selection range from 0 to 255.
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcColorThreshold(Image* dest, const Image* source, int replaceValue, ColorMode mode,
- const Range* plane1Range, const Range* plane2Range, const Range* plane3Range)
-{ return imaqColorThreshold(dest, source, replaceValue, mode, plane1Range, plane2Range, plane3Range);}
-
-
-/**
-* @brief A simpler version of ColorThreshold that thresholds hue range in the HSL mode. Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
-* @param dest The destination image.
-* @param source The image to threshold
-* @param hueRange The selection range for the hue (color).
-* @param minSaturation The minimum saturation value (1-255). If not used, DEFAULT_SATURATION_THRESHOLD is the default.
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcHueThreshold(Image* dest, const Image* source, const Range* hueRange)
-{ return frcHueThreshold(dest, source, hueRange, DEFAULT_SATURATION_THRESHOLD); }
-
-int frcHueThreshold(Image* dest, const Image* source, const Range* hueRange, int minSaturation)
-{
- // assume HSL mode
- ColorMode mode = IMAQ_HSL;
- // Set saturation 100 - 255
- Range satRange; satRange.minValue = minSaturation; satRange.maxValue = 255;
- // Set luminance 100 - 255
- Range lumRange; lumRange.minValue = 100; lumRange.maxValue = 255;
- // Replace pixels with 1 if pass threshold filter
- int replaceValue = 1;
- return imaqColorThreshold(dest, source, replaceValue, mode, hueRange, &satRange, &lumRange);
-}
-
-/**
-* @brief Extracts the Red, Green, Blue, or Hue, Saturation or Luminance information from a color image.
-* Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
-*
-* @param image The source image that the function extracts the planes from.
-* @param mode The color space that the function extracts the planes from. Valid values are IMAQ_RGB, IMAQ_HSL, IMAQ_HSV, IMAQ_HSI.
-* @param plane1 On return, the first extracted plane. Set this parameter to NULL if you do not need this information. RGB-Red, HSL/HSV/HSI-Hue.
-* @param plane2 On return, the second extracted plane. Set this parameter to NULL if you do not need this information. RGB-Green, HSL/HSV/HSI-Saturation.
-* @param plane3 On return, the third extracted plane. Set this parameter to NULL if you do not need this information. RGB-Blue, HSL-Luminance, HSV-Value, HSI-Intensity.
-*
-* @return error code: 0 = error. To get extended error information, call GetLastError().
-*/
-int frcExtractColorPlanes(const Image* image, ColorMode mode,
- Image* plane1, Image* plane2, Image* plane3)
-{ return imaqExtractColorPlanes(image, mode, plane1, plane2, plane3); }
-
-/**
-* @brief Extracts the Hue information from a color image. Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64
-*
-* @param image The source image that the function extracts the plane from.
-* @param huePlane On return, the extracted hue plane.
-* @param minSaturation the minimum saturation level required 0-255 (try 50)
-*
-* @return On success: 1. On failure: 0. To get extended error information, call GetLastError().
-*/
-int frcExtractHuePlane(const Image* image, Image* huePlane)
-{
- return frcExtractHuePlane(image, huePlane, DEFAULT_SATURATION_THRESHOLD);
-}
-
-int frcExtractHuePlane(const Image* image, Image* huePlane, int minSaturation)
-{
- return frcExtractColorPlanes(image, IMAQ_HSL, huePlane, NULL, NULL);
-}
-
-
-
-
-
-
-
-
diff --git a/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.h b/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.h
deleted file mode 100644
index 31663f8..0000000
--- a/aos/externals/WPILib/WPILib/Vision2009/VisionAPI.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/********************************************************************************
-* Project : FIRST Motor Controller
-* File Name : VisionAPI.h
-* Contributors : ELF, JDG, ARK, EMF
-* Creation Date : June 22, 2008
-* Revision History : Source code & revision history maintained at sourceforge.WPI.edu
-* File Description : Globally defined values for the FIRST Vision API
-*
-* API: Because nivision.h uses C++ style comments, any file including this
-* must be a .cpp (not .c).
-*/
-/*----------------------------------------------------------------------------*/
-/* 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 __VISIONAPI_H__
-#define __VISIONAPI_H__
-
-#include "nivision.h"
-
-/* Constants */
-
-#define DEFAULT_BORDER_SIZE 3 //VisionAPI.frcCreateImage
-#define DEFAULT_SATURATION_THRESHOLD 40 //TrackAPI.FindColor
-
-/* Forward Declare Data Structures */
-typedef struct FindEdgeOptions_struct FindEdgeOptions;
-typedef struct CircularEdgeReport_struct CircularEdgeReport;
-
-/* Data Structures */
-
-/** frcParticleAnalysis returns this structure */
-typedef struct ParticleAnalysisReport_struct {
- int imageHeight;
- int imageWidth;
- double imageTimestamp;
- int particleIndex; // the particle index analyzed
- /* X-coordinate of the point representing the average position of the
- * total particle mass, assuming every point in the particle has a constant density */
- int center_mass_x; // MeasurementType: IMAQ_MT_CENTER_OF_MASS_X
- /* Y-coordinate of the point representing the average position of the
- * total particle mass, assuming every point in the particle has a constant density */
- int center_mass_y; // MeasurementType: IMAQ_MT_CENTER_OF_MASS_Y
- double center_mass_x_normalized; //Center of mass x value normalized to -1.0 to +1.0 range
- double center_mass_y_normalized; //Center of mass y value normalized to -1.0 to +1.0 range
- /* Area of the particle */
- double particleArea; // MeasurementType: IMAQ_MT_AREA
- /* Bounding Rectangle */
- Rect boundingRect; // left/top/width/height
- /* Percentage of the particle Area covering the Image Area. */
- double particleToImagePercent; // MeasurementType: IMAQ_MT_AREA_BY_IMAGE_AREA
- /* Percentage of the particle Area in relation to its Particle and Holes Area */
- double particleQuality; // MeasurementType: IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA
-} ParticleAnalysisReport;
-
-/** Tracking functions return this structure */
-typedef struct ColorReport_struct {
- int numberParticlesFound; // Number of particles found for this color
- int largestParticleNumber; // The particle index of the largest particle
- /* Color information */
- float particleHueMax; // HistogramReport: hue max
- float particleHueMin; // HistogramReport: hue max
- float particleHueMean; // HistogramReport: hue mean
- float particleSatMax; // HistogramReport: saturation max
- float particleSatMin; // HistogramReport: saturation max
- float particleSatMean; // HistogramReport: saturation mean
- float particleLumMax; // HistogramReport: luminance max
- float particleLumMin; // HistogramReport: luminance max
- float particleLumMean; // HistogramReport: luminance mean
-} ColorReport;
-
-
-/* Image Management functions */
-
-/* Create: calls imaqCreateImage. Border size is set to some default value */
-Image* frcCreateImage( ImageType type );
-
-/* Dispose: calls imaqDispose */
-int frcDispose( void* object );
-int frcDispose( const char* filename, ... ) ;
-
-/* Copy: calls imaqDuplicateImage */
-int frcCopyImage( Image* dest, const Image* source );
-
-/* Image Extraction: Crop: calls imaqScale */
-int frcCrop( Image* dest, const Image* source, Rect rect );
-
-/* Image Extraction: Scale: calls imaqScale. Scales entire image */
-int frcScale(Image* dest, const Image* source, int xScale, int yScale, ScalingMode scaleMode );
-
-/* Read Image : calls imaqReadFile */
-int frcReadImage( Image* image, const char* fileName );
-/* Write Image : calls imaqWriteFile */
-int frcWriteImage( const Image* image, const char* fileName);
-
-/* Measure Intensity functions */
-
-/* Histogram: calls imaqHistogram */
-HistogramReport* frcHistogram( const Image* image, int numClasses, float min, float max, Rect rect );
-/* Color Histogram: calls imaqColorHistogram2 */
-ColorHistogramReport* frcColorHistogram(const Image* image, int numClasses, ColorMode mode, Image* mask);
-
-/* Get Pixel Value: calls imaqGetPixel */
-int frcGetPixelValue( const Image* image, Point pixel, PixelValue* value );
-
-/* Particle Analysis functions */
-
-/* Particle Filter: calls imaqParticleFilter3 */
-int frcParticleFilter(Image* dest, Image* source, const ParticleFilterCriteria2* criteria,
- int criteriaCount, const ParticleFilterOptions* options, Rect rect, int* numParticles);
-int frcParticleFilter(Image* dest, Image* source, const ParticleFilterCriteria2* criteria,
- int criteriaCount, const ParticleFilterOptions* options, int* numParticles);
-/* Morphology: calls imaqMorphology */
-int frcMorphology(Image* dest, Image* source, MorphologyMethod method);
-int frcMorphology(Image* dest, Image* source, MorphologyMethod method, const StructuringElement* structuringElement);
-/* Reject Border: calls imaqRejectBorder */
-int frcRejectBorder(Image* dest, Image* source);
-int frcRejectBorder(Image* dest, Image* source, int connectivity8);
-/* Count Particles: calls imaqCountParticles */
-int frcCountParticles(Image* image, int* numParticles);
-/* Particle Analysis Report: calls imaqMeasureParticle */
-int frcParticleAnalysis(Image* image, int particleNumber, ParticleAnalysisReport* par);
-
-/* Image Enhancement functions */
-
-/* Equalize: calls imaqEqualize */
-int frcEqualize(Image* dest, const Image* source, float min, float max);
-int frcEqualize(Image* dest, const Image* source, float min, float max, const Image* mask);
-
-/* Color Equalize: calls imaqColorEqualize */
-int frcColorEqualize(Image* dest, const Image* source);
-int frcColorEqualize(Image* dest, const Image* source, int colorEqualization);
-
-/* Image Thresholding & Conversion functions */
-
-/* Smart Threshold: calls imaqLocalThreshold */
-int frcSmartThreshold(Image* dest, const Image* source, unsigned int windowWidth, unsigned int windowHeight,
- LocalThresholdMethod method, double deviationWeight, ObjectType type);
-int frcSmartThreshold(Image* dest, const Image* source, unsigned int windowWidth, unsigned int windowHeight,
- LocalThresholdMethod method, double deviationWeight, ObjectType type, float replaceValue);
-
-/* Simple Threshold: calls imaqThreshold */
-int frcSimpleThreshold(Image* dest, const Image* source, float rangeMin, float rangeMax, float newValue);
-int frcSimpleThreshold(Image* dest, const Image* source, float rangeMin, float rangeMax);
-
-/* Color/Hue Threshold: calls imaqColorThreshold */
-int frcColorThreshold(Image* dest, const Image* source, ColorMode mode,
- const Range* plane1Range, const Range* plane2Range, const Range* plane3Range);
-int frcColorThreshold(Image* dest, const Image* source, int replaceValue, ColorMode mode,
- const Range* plane1Range, const Range* plane2Range, const Range* plane3Range);
-int frcHueThreshold(Image* dest, const Image* source, const Range* hueRange);
-int frcHueThreshold(Image* dest, const Image* source, const Range* hueRange, int minSaturation);
-
-/* Extract ColorHue Plane: calls imaqExtractColorPlanes */
-int frcExtractColorPlanes(const Image* image, ColorMode mode, Image* plane1, Image* plane2, Image* plane3);
-int frcExtractHuePlane(const Image* image, Image* huePlane);
-int frcExtractHuePlane(const Image* image, Image* huePlane, int minSaturation);
-
-#endif
-
-
diff --git a/aos/externals/WPILib/WPILib/WPIErrors.h b/aos/externals/WPILib/WPILib/WPIErrors.h
deleted file mode 100644
index f7e59f5..0000000
--- a/aos/externals/WPILib/WPILib/WPIErrors.h
+++ /dev/null
@@ -1,78 +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 __WPI_ERRORS_H__
-#define __WPI_ERRORS_H__
-
-#ifdef WPI_ERRORS_DEFINE_STRINGS
-#define S(label, offset, message) const char *wpi_error_s_##label = message ;
-#else
-#define S(label, offset, message) extern const char *wpi_error_s_##label;
-#endif
-
-/*
- * Fatal errors
- */
-S(ModuleIndexOutOfRange, -1, "Allocating module that is out of range or not found");
-S(ChannelIndexOutOfRange, -1, "Allocating channel that is out of range");
-S(NotAllocated, -2, "Attempting to free unallocated resource");
-S(ResourceAlreadyAllocated, -3, "Attempted to reuse an allocated resource");
-S(NoAvailableResources, -4, "No available resources to allocate");
-S(NullParameter, -5, "A pointer parameter to a method is NULL");
-S(Timeout, -6, "A timeout has been exceeded");
-S(CompassManufacturerError, -7, "Compass manufacturer doesn't match HiTechnic");
-S(CompassTypeError, -8, "Compass type doesn't match expected type for HiTechnic compass");
-S(IncompatibleMode, -9, "The object is in an incompatible mode");
-S(AnalogTriggerLimitOrderError, -10, "AnalogTrigger limits error. Lower limit > Upper Limit");
-S(AnalogTriggerPulseOutputError, -11, "Attempted to read AnalogTrigger pulse output.");
-S(TaskError, -12, "Task can't be started");
-S(TaskIDError, -13, "Task error: Invalid ID.");
-S(TaskDeletedError, -14, "Task error: Task already deleted.");
-S(TaskOptionsError, -15, "Task error: Invalid options.");
-S(TaskMemoryError, -16, "Task can't be started due to insufficient memory.");
-S(TaskPriorityError, -17, "Task error: Invalid priority [1-255].");
-S(DriveUninitialized, -18, "RobotDrive not initialized for the C interface");
-S(CompressorNonMatching, -19, "Compressor slot/channel doesn't match previous instance");
-S(CompressorAlreadyDefined, -20, "Creating a second compressor instance");
-S(CompressorUndefined, -21, "Using compressor functions without defining compressor");
-S(InconsistentArrayValueAdded, -22, "When packing data into an array to the dashboard, not all values added were of the same type.");
-S(MismatchedComplexTypeClose, -23, "When packing data to the dashboard, a Close for a complex type was called without a matching Open.");
-S(DashboardDataOverflow, -24, "When packing data to the dashboard, too much data was packed and the buffer overflowed.");
-S(DashboardDataCollision, -25, "The same buffer was used for packing data and for printing.");
-S(EnhancedIOMissing, -26, "IO is not attached or Enhanced IO is not enabled.");
-S(LineNotOutput, -27, "Cannot SetDigitalOutput for a line not configured for output.");
-S(ParameterOutOfRange, -28, "A parameter is out of range.");
-S(SPIClockRateTooLow, -29, "SPI clock rate was below the minimum supported");
-S(JaguarVersionError, -30, "Jaguar firmware version error");
-S(NetworkTablesReadError, -40, "Error reading NetworkTables socket");
-S(NetworkTablesBufferFull, -41, "Buffer full writing to NetworkTables socket");
-S(NetworkTablesWrongType, -42, "The wrong type was read from the NetworkTables entry");
-S(NetworkTablesCorrupt, -43, "NetworkTables data stream is corrupt");
-S(SmartDashboardMissingKey, -43, "SmartDashboard data does not exist");
-S(CommandIllegalUse, -50, "Illegal use of Command");
-
-/*
- * Warnings
- */
-S(SampleRateTooHigh, 1, "Analog module sample rate is too high");
-S(VoltageOutOfRange, 2, "Voltage to convert to raw value is out of range [-10; 10]");
-S(CompressorTaskError, 3, "Compressor task won't start");
-S(LoopTimingError, 4, "Digital module loop timing is not the expected value");
-S(NonBinaryDigitalValue, 5, "Digital output value is not 0 or 1");
-S(IncorrectBatteryChannel, 6, "Battery measurement channel is not correct value");
-S(BadJoystickIndex, 7, "Joystick index is out of range, should be 1-4");
-S(BadJoystickAxis, 8, "Joystick axis is out of range");
-S(InvalidMotorIndex, 9, "Motor index is out of range, should be 0-3");
-S(DriverStationTaskError, 10, "Driver Station task won't start");
-S(EnhancedIOPWMPeriodOutOfRange, 11, "Driver Station Enhanced IO PWM Output period out of range.");
-S(SPIWriteNoMOSI, 12, "Cannot write to SPI port with no MOSI output");
-S(SPIReadNoMISO, 13, "Cannot read from SPI port with no MISO input");
-S(SPIReadNoData, 14, "No data available to read from SPI");
-S(IncompatibleState, 15, "Incompatible State: The operation cannot be completed");
-
-#undef S
-
-#endif // __WPI_ERRORS_H__
diff --git a/aos/externals/WPILib/WPILib/WPILib.h b/aos/externals/WPILib/WPILib/WPILib.h
deleted file mode 100644
index 9091063..0000000
--- a/aos/externals/WPILib/WPILib/WPILib.h
+++ /dev/null
@@ -1,92 +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 WPILIB_H_
-#define WPILIB_H_
-
-#include "string.h"
-#include <iostream>
-
-#include "Accelerometer.h"
-#include "ADXL345_I2C.h"
-#include "ADXL345_SPI.h"
-#include "AnalogChannel.h"
-#include "AnalogModule.h"
-#include "AnalogTrigger.h"
-#include "AnalogTriggerOutput.h"
-#include "Buttons/AnalogIOButton.h"
-#include "Buttons/DigitalIOButton.h"
-#include "Buttons/InternalButton.h"
-#include "Buttons/JoystickButton.h"
-#include "Buttons/NetworkButton.h"
-#include "CANJaguar.h"
-#include "Commands/Command.h"
-#include "Commands/CommandGroup.h"
-#include "Commands/PIDCommand.h"
-#include "Commands/PIDSubsystem.h"
-#include "Commands/PrintCommand.h"
-#include "Commands/Scheduler.h"
-#include "Commands/StartCommand.h"
-#include "Commands/Subsystem.h"
-#include "Commands/WaitCommand.h"
-#include "Commands/WaitForChildren.h"
-#include "Commands/WaitUntilCommand.h"
-#include "Compressor.h"
-#include "Counter.h"
-#include "Dashboard.h"
-#include "DigitalInput.h"
-#include "DigitalModule.h"
-#include "DigitalOutput.h"
-#include "DigitalSource.h"
-#include "DoubleSolenoid.h"
-#include "DriverStation.h"
-#include "DriverStationEnhancedIO.h"
-#include "DriverStationLCD.h"
-#include "Encoder.h"
-#include "ErrorBase.h"
-#include "GearTooth.h"
-#include "GenericHID.h"
-#include "Gyro.h"
-#include "HiTechnicCompass.h"
-#include "HiTechnicColorSensor.h"
-#include "I2C.h"
-#include "IterativeRobot.h"
-#include "InterruptableSensorBase.h"
-#include "Jaguar.h"
-#include "Joystick.h"
-#include "Kinect.h"
-#include "KinectStick.h"
-#include "Notifier.h"
-#include "PIDController.h"
-#include "PIDOutput.h"
-#include "PIDSource.h"
-#include "Preferences.h"
-#include "PWM.h"
-#include "Relay.h"
-#include "Resource.h"
-#include "RobotBase.h"
-#include "RobotDrive.h"
-#include "SensorBase.h"
-#include "SerialPort.h"
-#include "Servo.h"
-#include "SimpleRobot.h"
-#include "SmartDashboard/SendableChooser.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"
-#include "Utility.h"
-#include "Victor.h"
-#include "Vision/AxisCamera.h"
-#include "Watchdog.h"
-#include "WPIErrors.h"
-
-#endif /*WPILIB_H_*/
diff --git a/aos/externals/WPILib/WPILib/Watchdog.cpp b/aos/externals/WPILib/WPILib/Watchdog.cpp
deleted file mode 100644
index e88e00e..0000000
--- a/aos/externals/WPILib/WPILib/Watchdog.cpp
+++ /dev/null
@@ -1,170 +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 "Watchdog.h"
-
-constexpr double Watchdog::kDefaultWatchdogExpiration;
-
-/**
- * The Watchdog is born.
- */
-Watchdog::Watchdog()
- : m_fpgaWatchDog(NULL)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaWatchDog = tWatchdog::create(&localStatus);
- wpi_setError(localStatus);
- SetExpiration(kDefaultWatchdogExpiration);
- SetEnabled(true);
-}
-
-/**
- * Time to bury him in the back yard.
- */
-Watchdog::~Watchdog()
-{
- SetEnabled(false);
- delete m_fpgaWatchDog;
- m_fpgaWatchDog = NULL;
-}
-
-/**
- * Throw the dog a bone.
- *
- * When everything is going well, you feed your dog when you get home.
- * Let's hope you don't drive your car off a bridge on the way home...
- * Your dog won't get fed and he will starve to death.
- *
- * By the way, it's not cool to ask the neighbor (some random task) to
- * feed your dog for you. He's your responsibility!
- *
- * @returns Returns the previous state of the watchdog before feeding it.
- */
-bool Watchdog::Feed()
-{
- bool previous = GetEnabled();
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaWatchDog->strobeFeed(&localStatus);
- wpi_setError(localStatus);
- return previous;
-}
-
-/**
- * Put the watchdog out of its misery.
- *
- * Don't wait for your dying robot to starve when there is a problem.
- * Kill it quickly, cleanly, and humanely.
- */
-void Watchdog::Kill()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaWatchDog->strobeKill(&localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Read how long it has been since the watchdog was last fed.
- *
- * @return The number of seconds since last meal.
- */
-double Watchdog::GetTimer()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t timer = m_fpgaWatchDog->readTimer(&localStatus);
- wpi_setError(localStatus);
- return timer / (kSystemClockTicksPerMicrosecond * 1e6);
-}
-
-/**
- * Read what the current expiration is.
- *
- * @return The number of seconds before starvation following a meal (watchdog starves if it doesn't eat this often).
- */
-double Watchdog::GetExpiration()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- uint32_t expiration = m_fpgaWatchDog->readExpiration(&localStatus);
- wpi_setError(localStatus);
- return expiration / (kSystemClockTicksPerMicrosecond * 1e6);
-}
-
-/**
- * Configure how many seconds your watchdog can be neglected before it starves to death.
- *
- * @param expiration The number of seconds before starvation following a meal (watchdog starves if it doesn't eat this often).
- */
-void Watchdog::SetExpiration(double expiration)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaWatchDog->writeExpiration((uint32_t)(expiration * (kSystemClockTicksPerMicrosecond * 1e6)), &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Find out if the watchdog is currently enabled or disabled (mortal or immortal).
- *
- * @return Enabled or disabled.
- */
-bool Watchdog::GetEnabled()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool enabled = !m_fpgaWatchDog->readImmortal(&localStatus);
- wpi_setError(localStatus);
- return enabled;
-}
-
-/**
- * Enable or disable the watchdog timer.
- *
- * When enabled, you must keep feeding the watchdog timer to
- * keep the watchdog active, and hence the dangerous parts
- * (motor outputs, etc.) can keep functioning.
- * When disabled, the watchdog is immortal and will remain active
- * even without being fed. It will also ignore any kill commands
- * while disabled.
- *
- * @param enabled Enable or disable the watchdog.
- */
-void Watchdog::SetEnabled(bool enabled)
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- m_fpgaWatchDog->writeImmortal(!enabled, &localStatus);
- wpi_setError(localStatus);
-}
-
-/**
- * Check in on the watchdog and make sure he's still kicking.
- *
- * This indicates that your watchdog is allowing the system to operate.
- * It is still possible that the network communications is not allowing the
- * system to run, but you can check this to make sure it's not your fault.
- * Check IsSystemActive() for overall system status.
- *
- * If the watchdog is disabled, then your watchdog is immortal.
- *
- * @return Is the watchdog still alive?
- */
-bool Watchdog::IsAlive()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool alive = m_fpgaWatchDog->readStatus_Alive(&localStatus);
- wpi_setError(localStatus);
- return alive;
-}
-
-/**
- * Check on the overall status of the system.
- *
- * @return Is the system active (i.e. PWM motor outputs, etc. enabled)?
- */
-bool Watchdog::IsSystemActive()
-{
- tRioStatusCode localStatus = NiFpga_Status_Success;
- bool alive = m_fpgaWatchDog->readStatus_SystemActive(&localStatus);
- wpi_setError(localStatus);
- return alive;
-}
-
diff --git a/aos/externals/WPILib/WPILib/Watchdog.h b/aos/externals/WPILib/WPILib/Watchdog.h
deleted file mode 100644
index 6af6a01..0000000
--- a/aos/externals/WPILib/WPILib/Watchdog.h
+++ /dev/null
@@ -1,47 +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 WATCHDOG_H
-#define WATCHDOG_H
-
-#include "ChipObject.h"
-#include "SensorBase.h"
-#include "Base.h"
-
-/**
- * Watchdog timer class.
- * The watchdog timer is designed to keep the robots safe. The idea is that the robot program must
- * constantly "feed" the watchdog otherwise it will shut down all the motor outputs. That way if a
- * program breaks, rather than having the robot continue to operate at the last known speed, the
- * motors will be shut down.
- *
- * This is serious business. Don't just disable the watchdog. You can't afford it!
- *
- * http://thedailywtf.com/Articles/_0x2f__0x2f_TODO_0x3a__Uncomment_Later.aspx
- */
-class Watchdog : public SensorBase
-{
-public:
- static constexpr double kDefaultWatchdogExpiration = 0.5;
-
- Watchdog();
- virtual ~Watchdog();
- bool Feed();
- void Kill();
- double GetTimer();
- double GetExpiration();
- void SetExpiration(double expiration);
- bool GetEnabled();
- void SetEnabled(bool enabled);
- bool IsAlive();
- bool IsSystemActive();
-
-private:
- tWatchdog *m_fpgaWatchDog;
- DISALLOW_COPY_AND_ASSIGN(Watchdog);
-};
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp
deleted file mode 100644
index e9b4c89..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTable.cpp
+++ /dev/null
@@ -1,340 +0,0 @@
-#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 "OSAL/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;
-NetworkTableNode* NetworkTable::staticNode = NULL;
-void* NetworkTable::streamFactory = NULL;
-NetworkTableEntryTypeManager* NetworkTable::typeManager = NULL;
-StreamDeleter streamDeleter = NULL;
-NetworkTableMode* NetworkTable::mode = &NetworkTableMode::Server;
-int NetworkTable::port = DEFAULT_PORT;
-std::string NetworkTable::ipAddress;
-NTReentrantSemaphore NetworkTable::STATIC_LOCK;
-
-
-
-
-
-
-void NetworkTable::CheckInit(){
- printf("[NT] NetworkTable::CheckInit()...\n");
- {
- NTSynchronized sync(STATIC_LOCK);
- if(staticProvider!=NULL)
- throw new IllegalStateException("Network tables has already been initialized");
- }
-}
-
-void NetworkTable::Initialize() {
- CheckInit();
- printf("[NT] NetworkTable::Initialize()...\n");
- staticProvider = new NetworkTableProvider(*(staticNode = mode->CreateNode(ipAddress.c_str(), port, threadManager, streamFactory, streamDeleter, typeManager)));
- printf("[NT] ...NetworkTable::Initialize().\n");
-}
-
-void NetworkTable::Shutdown()
-{
- if (staticProvider!=NULL)
- {
- delete staticProvider;
- staticProvider=NULL;
- }
- if (staticNode!=NULL)
- {
- delete staticNode;
- staticNode=NULL;
- }
- if (streamDeleter!=NULL && streamFactory!=NULL)
- {
- streamDeleter(streamFactory);
- streamFactory=NULL;
- streamDeleter=NULL;
- }
- if (typeManager!=NULL)
- {
- delete typeManager;
- typeManager=NULL;
- }
-}
-
-void NetworkTable::SetTableProvider(NetworkTableProvider* provider){
- CheckInit();
- staticProvider = provider;
-}
-
-void NetworkTable::SetClientMode(){
- CheckInit();
- mode = &NetworkTableMode::Client;
-}
-
-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) {
- printf("[NT] NetworkTable::GetTable()...\n");
- if(staticProvider==NULL){
- printf("[NT] \tInitializing...\n");
- Initialize();
- }
- std::string tmp(PATH_SEPARATOR);
- tmp+=key;
- printf("[NT] ...Ready to get Table.\n");
- 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){
- {
- NTSynchronized sync(LOCK);
- return entryCache.Get(key);
- }
-}
-
-
-NetworkTable* NetworkTable::GetSubTable(std::string key) {
- {
- NTSynchronized 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
deleted file mode 100644
index 8c49e3f..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTable.h
+++ /dev/null
@@ -1,341 +0,0 @@
-#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 NetworkTableNode* staticNode;
- static void* streamFactory;
- static NetworkTableEntryTypeManager* typeManager;
- static NetworkTableMode* mode;
- static int port;
- static std::string ipAddress;
- static NTReentrantSemaphore STATIC_LOCK;
-
-
-
- std::string path;
- EntryCache entryCache;
- NetworkTableKeyCache absoluteKeyCache;
- NetworkTableProvider& provider;
- NetworkTableNode& node;
- NTReentrantSemaphore 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();
- static void Shutdown();
-
- /**
- * 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
deleted file mode 100644
index 879d0e8..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * NetworkTableConnectionListenerAdapter.cpp
- *
- * Created on: Oct 17, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables/NetworkTableConnectionListenerAdapter.h"
-
-
-NetworkTableConnectionListenerAdapter::NetworkTableConnectionListenerAdapter(IRemote* _targetSource, IRemoteConnectionListener* _targetListener):
- targetSource(_targetSource), targetListener(_targetListener){}
-NetworkTableConnectionListenerAdapter::~NetworkTableConnectionListenerAdapter(){}
-
-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
deleted file mode 100644
index 8b9ef9d..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableConnectionListenerAdapter.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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);
- virtual ~NetworkTableConnectionListenerAdapter();
- 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
deleted file mode 100644
index f472571..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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
deleted file mode 100644
index a7a332f..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableKeyListenerAdapter.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 9964e95..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 5b0fd70..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableListenerAdapter.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 95fa1e7..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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(){}
-
-static void deleteIOStreamProvider(void* ptr){
- delete (IOStreamProvider*)ptr;
-}
-static void deleteIOStreamFactory(void* ptr){
- delete (IOStreamFactory*)ptr;
-}
-
-NetworkTableNode* NetworkTableServerMode::CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager, void*& streamFactory_out, StreamDeleter& streamDeleter_out, NetworkTableEntryTypeManager*& typeManager_out){
- IOStreamProvider* streamProvider = new SocketServerStreamProvider(port);
- streamFactory_out = streamProvider;
- typeManager_out = new NetworkTableEntryTypeManager();
- streamDeleter_out = deleteIOStreamFactory;
- return new NetworkTableServer(*streamProvider, *typeManager_out, threadManager);
-}
-NetworkTableNode* NetworkTableClientMode::CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager, void*& streamFactory_out, StreamDeleter& streamDeleter_out, NetworkTableEntryTypeManager*& typeManager_out){
- IOStreamFactory* streamFactory = new SocketStreamFactory(ipAddress, port);
- streamFactory_out = streamFactory;
- typeManager_out = new NetworkTableEntryTypeManager();
- streamDeleter_out = deleteIOStreamProvider;
- return new NetworkTableClient(*streamFactory, *typeManager_out, threadManager);
-}
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h b/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h
deleted file mode 100644
index bf3e4c1..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableMode.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef _NETWORKTABLEMODE_H_
-#define _NETWORKTABLEMODE_H_
-
-
-class NetworkTableMode;
-class NetworkTableServerMode;
-class NetworkTableClientMode;
-
-#include <string>
-#include "networktables2/NetworkTableNode.h"
-#include "networktables2/thread/NTThreadManager.h"
-
-typedef void (*StreamDeleter)(void*);
-/**
- *
- * 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, void*& streamFactory_out, StreamDeleter& streamDeleter_out, NetworkTableEntryTypeManager*& typeManager_out) = 0;
-
- static NetworkTableServerMode Server;
- static NetworkTableClientMode Client;
-};
-
-class NetworkTableServerMode : public NetworkTableMode{
-public:
- NetworkTableServerMode();
- virtual NetworkTableNode* CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager, void*& streamFactory_out, StreamDeleter& streamDeleter_out, NetworkTableEntryTypeManager*& typeManager_out);
-};
-
-class NetworkTableClientMode : public NetworkTableMode{
-public:
- NetworkTableClientMode();
- virtual NetworkTableNode* CreateNode(const char* ipAddress, int port, NTThreadManager& threadManager, void*& streamFactory_out, StreamDeleter& streamDeleter_out, NetworkTableEntryTypeManager*& typeManager_out);
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp b/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp
deleted file mode 100644
index b7e94a3..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#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
deleted file mode 100644
index efb5615..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableProvider.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#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
deleted file mode 100644
index a2c97dd..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 4796606..0000000
--- a/aos/externals/WPILib/WPILib/networktables/NetworkTableSubListenerAdapter.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 8d268b2..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * AbstractNetworkTableEntryStore.cpp
- *
- * Created on: Sep 16, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/AbstractNetworkTableEntryStore.h"
-#include "networktables2/TableKeyExistsWithDifferentTypeException.h"
-#include <map>
-#include <vector>
-#include <iostream>
-#include <stdio.h>
-
- 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){
- {
- NTSynchronized sync(block_namedEntries);
- std::map<std::string, NetworkTableEntry*>::iterator value_itr = namedEntries.find(name);
- if(value_itr != namedEntries.end()) {
- return value_itr->second;
- }
- return NULL;
- }
- }
-
- NetworkTableEntry* AbstractNetworkTableEntryStore::GetEntry(EntryId entryId){
- {
- NTSynchronized sync(block_namedEntries);
-
- std::map<EntryId, NetworkTableEntry*>::iterator value_itr = idEntries.find(entryId);
- if(value_itr != idEntries.end()) {
- return value_itr->second;
- }
- return NULL;
- }
- }
-
- std::vector<std::string>* AbstractNetworkTableEntryStore::keys(){
- {
- NTSynchronized sync(block_namedEntries);
- 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(){
- {
- NTSynchronized sync(block_namedEntries);
- namedEntries.clear();
- idEntries.clear();
- }
- }
-
- /**
- * clear the id's of all entries
- */
- void AbstractNetworkTableEntryStore::clearIds(){
- {
- NTSynchronized sync(block_namedEntries);
- 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){
- {
- NTSynchronized sync(block_namedEntries);
- std::map<std::string, NetworkTableEntry*>::iterator index = namedEntries.find(name);
- NetworkTableEntry* tableEntry;
- if(index == namedEntries.end())//if the name does not exist in the current entries
- {
- tableEntry = new NetworkTableEntry(name, type, value);
- if(addEntry(tableEntry))
- {
- tableEntry->FireListener(listenerManager);
- outgoingReceiver->offerOutgoingAssignment(tableEntry);
- }
- }
- else
- {
- tableEntry = index->second;
- if(tableEntry->GetType()->id != type->id){
- throw TableKeyExistsWithDifferentTypeException(name, tableEntry->GetType());
- }
-
- EntryValue oldValue = tableEntry->GetValue();
- if(!type->areEqual(value, oldValue)){
- if(updateEntry(tableEntry, (SequenceNumber)(tableEntry->GetSequenceNumber() + 1), value)){
- outgoingReceiver->offerOutgoingUpdate(tableEntry);
- }
-
- tableEntry->FireListener(listenerManager);
- }
- }
- }
- }
-
- void AbstractNetworkTableEntryStore::PutOutgoing(NetworkTableEntry* tableEntry, EntryValue value){
- {
- NTSynchronized sync(LOCK);
- NetworkTableEntryType* type = tableEntry->GetType();
- EntryValue oldValue = tableEntry->GetValue();
- if(!type->areEqual(value, oldValue)){
- if(updateEntry(tableEntry, (SequenceNumber)(tableEntry->GetSequenceNumber() + 1), value)){
- outgoingReceiver->offerOutgoingUpdate(tableEntry);
- }
-
- tableEntry->FireListener(listenerManager);
- }
- }
- }
-
- void AbstractNetworkTableEntryStore::offerIncomingAssignment(NetworkTableEntry* entry){
- {
- NTSynchronized sync(block_namedEntries);
- std::map<std::string, NetworkTableEntry*>::iterator itr = namedEntries.find(entry->name);
- NetworkTableEntry* tableEntry;
- if(addEntry(entry)){
- if(itr != namedEntries.end()){
- tableEntry = itr->second;
- }
- 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){
- {
- NTSynchronized 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){
- {
- NTSynchronized sync(block_namedEntries);
- std::map<std::string, NetworkTableEntry*>::iterator itr;
- for(itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
- {
- NetworkTableEntry* entry = itr->second;
- 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
deleted file mode 100644
index 7d6903f..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/AbstractNetworkTableEntryStore.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * AbstractNetworkTableEntryStore.h
- *
- * Created on: Sep 16, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef ABSTRACTNETWORKTABLEENTRYSTORE_H_
-#define ABSTRACTNETWORKTABLEENTRYSTORE_H_
-
-
-
-class TableListenerManager;
-class AbstractNetworkTableEntryStore;
-
-
-#include "OSAL/Synchronized.h"
-#include <string>
-#include "networktables2/NetworkTableEntry.h"
-#include "networktables2/IncomingEntryReceiver.h"
-#include "networktables2/OutgoingEntryReceiver.h"
-#include "networktables2/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;
- NTReentrantSemaphore block_namedEntries;
- 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();
-
- NTReentrantSemaphore 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
deleted file mode 100644
index f87e905..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/FlushableOutgoingEntryReceiver.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * FlushableOutgoingEntryReceiver.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef FLUSHABLEOUTGOINGENTRYRECEIVER_H_
-#define FLUSHABLEOUTGOINGENTRYRECEIVER_H_
-
-class FlushableOutgoingEntryReceiver;
-
-#include "networktables2/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
deleted file mode 100644
index 7ee60df..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/IncomingEntryReceiver.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * IncomingEntryReceiver.h
- *
- * Created on: Sep 19, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef INCOMINGENTRYRECEIVER_H_
-#define INCOMINGENTRYRECEIVER_H_
-
-#include "networktables2/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
deleted file mode 100644
index 658c7c7..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "networktables2/NetworkTableEntry.h"
-#include "networktables2/AbstractNetworkTableEntryStore.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(const NetworkTableEntry &other) :
- name(other.name),
- id(other.id),
- sequenceNumber(other.sequenceNumber),
- type(other.type),
- m_isNew(other.m_isNew),
- m_isDirty(other.m_isDirty)
-{
- value = type->copyValue(other.value);
-}
-
-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
deleted file mode 100644
index 27223e4..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/NetworkTableEntry.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#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;
-class TableListenerManager;
-
-
-#include "networktables2/connection/DataIOStream.h"
-#include "networktables2/connection/NetworkTableConnection.h"
-#include "networktables2/type/NetworkTableEntryType.h"
-#include "networktables2/util/IllegalStateException.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);
- NetworkTableEntry(const NetworkTableEntry &);
- 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
deleted file mode 100644
index 1b4e90f..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/NetworkTableMessageType.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 6631ba3..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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){
- {
- NTSynchronized 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()){
- {
- NTSynchronized 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};
- EntryValue entryValue = entryType->internalizeValue(name, *complexData, nullValue);
- entryStore.PutOutgoing(name, type, entryValue);//TODO the entry gets copied when creating the entry should make lifecycle cleaner
- type->deleteValue(entryValue);
- }
- }
- }
- else
- entryStore.PutOutgoing(name, type, value);
-}
-
-void NetworkTableNode::PutValue(NetworkTableEntry* entry, EntryValue value){
- if(entry->GetType()->isComplex()){
- {
- NTSynchronized 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
- {
- NTSynchronized 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
deleted file mode 100644
index 1a23bd6..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/NetworkTableNode.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * NetworkTableNode.h
- *
- * Created on: Sep 24, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef NETWORKTABLENODE_H_
-#define NETWORKTABLENODE_H_
-
-
-class NetworkTableNode;
-
-#include "networktables2/AbstractNetworkTableEntryStore.h"
-#include "networktables2/client/ClientConnectionListenerManager.h"
-#include "networktables2/type/NetworkTableEntryType.h"
-#include "networktables2/type/ComplexData.h"
-#include "networktables2/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
deleted file mode 100644
index a88f7ec..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReceiver.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * OutgoingEntryReceiver.h
- *
- * Created on: Sep 19, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef OUTGOINGENTRYRECEIVER_H_
-#define OUTGOINGENTRYRECEIVER_H_
-
-class OutgoingEntryReceiver;
-
-#include "networktables2/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
deleted file mode 100644
index ae78363..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/OutgoingEntryReciever.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * 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
deleted file mode 100644
index f1ea5a8..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 334ed16..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/TableKeyExistsWithDifferentTypeException.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 40ba0c7..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 76cd1db..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/TransactionDirtier.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * TransactionDirtier.h
- *
- * Created on: Sep 24, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef TRANSACTIONDIRTIER_H_
-#define TRANSACTIONDIRTIER_H_
-
-
-class TransactionDirtier;
-
-
-#include "networktables2/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
deleted file mode 100644
index 64688e3..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/WriteManager.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * WriteManager.cpp
- *
- * Created on: Sep 25, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/WriteManager.h"
-#include "networktables2/util/System.h"
-#include "networktables2/AbstractNetworkTableEntryStore.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(){
- stop();
-
- //Note: this must occur after stop() to avoid deadlock
- transactionsLock.take();
-
- 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) {
- {
- bool test_queue_overflow=false;
- {
- NTSynchronized sync(transactionsLock);
- ((std::queue<NetworkTableEntry*>*)incomingAssignmentQueue)->push(entry);
-
- test_queue_overflow=(((std::queue<NetworkTableEntry*>*)incomingAssignmentQueue)->size()>=queueSize);
- }
- if (test_queue_overflow)
- {
- 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) {
- {
- bool test_queue_overflow=false;
- {
- NTSynchronized sync(transactionsLock);
- ((std::queue<NetworkTableEntry*>*)incomingUpdateQueue)->push(entry);
- test_queue_overflow=(((std::queue<NetworkTableEntry*>*)incomingUpdateQueue)->size()>=queueSize);
-
- }
- if (test_queue_overflow)
- {
- run();
- writeWarning("update queue overflowed. decrease the rate at which you update entries or increase the write buffer size");
- }
- }
-}
-
-
-void WriteManager::run() {
- {
- NTSynchronized 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();
- {
- NetworkTableEntry * entryCopy;
-
- {
- NTSynchronized sync(entryStore.LOCK);
- entry->MakeClean();
- wrote = true;
- entryCopy = new NetworkTableEntry(*entry);
- }
-
- receiver.offerOutgoingAssignment(entryCopy);
- delete entryCopy;
- }
- }
-
- while(!((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->empty()){
- entry = ((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->front();
- ((std::queue<NetworkTableEntry*>*)outgoingUpdateQueue)->pop();
- {
- NetworkTableEntry * entryCopy;
-
- {
- NTSynchronized sync(entryStore.LOCK);
- entry->MakeClean();
- wrote = true;
- entryCopy = new NetworkTableEntry(*entry);
- }
-
- receiver.offerOutgoingUpdate(entryCopy);
- delete entryCopy;
- }
- }
-
-
-
- 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
deleted file mode 100644
index c376b8c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/WriteManager.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * WriteManager.h
- *
- * Created on: Sep 25, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef WRITEMANAGER_H_
-#define WRITEMANAGER_H_
-
-class AbstractNetworkTableEntryStore;
-class WriteManager;
-
-
-#include "networktables2/thread/PeriodicRunnable.h"
-#include "networktables2/OutgoingEntryReceiver.h"
-#include "networktables2/thread/NTThread.h"
-#include "networktables2/thread/NTThreadManager.h"
-#include "networktables2/FlushableOutgoingEntryReceiver.h"
-#include "networktables2/NetworkTableEntry.h"
-#include <queue>
-#include "OSAL/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;
-
- NTReentrantSemaphore 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
deleted file mode 100644
index 9510c04..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * ClientConnectionAdapter.cpp
- *
- * Created on: Nov 2, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/client/ClientConnectionAdapter.h"
-#include "networktables2/util/System.h"
-
-void ClientConnectionAdapter::gotoState(ClientConnectionState* newState){
- {
- NTSynchronized sync(LOCK);
- if(connectionState!=newState){
- fprintf(stdout, "[NT] %p entered connection state: %s\n", (void*)this, newState->toString());
- fflush(stdout);
- if(newState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
- connectionListenerManager.FireConnectedEvent();
- if(connectionState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
- connectionListenerManager.FireDisconnectedEvent();
- //TODO find better way to manage memory leak
- ClientConnectionState_Error *temp=dynamic_cast<ClientConnectionState_Error *>(connectionState);
- connectionState = newState;
- if (temp)
- delete temp;
- }
- }
-}
-/**
- * @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),
- monitor(NULL),
- connection(NULL){
- connectionState = &ClientConnectionState::DISCONNECTED_FROM_SERVER;
-}
-ClientConnectionAdapter::~ClientConnectionAdapter()
-{
- if(readThread!=NULL)
- readThread->stop();
- if (connection)
- connection->close();
- if(readThread!=NULL)
- {
- delete readThread;
- readThread = NULL;
- }
- if(monitor!=NULL)
- {
- delete monitor;
- monitor = NULL;
- }
- close();
- if(connection!=NULL){
- delete connection;
- connection = NULL;
- }
-
- //TODO find better way to manage memory leak
- ClientConnectionState_Error *temp=dynamic_cast<ClientConnectionState_Error *>(connectionState);
- if (temp)
- {
- delete temp;
- connectionState=NULL;
- }
-}
-
-
-/*
- * Connection management
- */
-/**
- * Reconnect the client to the server (even if the client is not currently connected)
- */
-void ClientConnectionAdapter::reconnect() {
- //This is in reconnect so that the entry store doesn't have to be valid when this object is deleted
- //Note: clearIds() cannot be in a LOCK critical section
- entryStore.clearIds();
- {
- NTSynchronized sync(LOCK);
- close();//close the existing stream and monitor thread if needed
- try{
- IOStream* stream = streamFactory.createStream();
- if(stream==NULL)
- return;
- if (!connection)
- connection = new NetworkTableConnection(stream, typeManager);
- else
- connection->SetIOStream(stream);
- m_IsConnectionClosed=false;
- if (!monitor)
- monitor = new ConnectionMonitorThread(*this, *connection);
- if (!readThread)
- readThread = threadManager.newBlockingPeriodicThread(monitor, "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) {
- {
- NTSynchronized sync(LOCK);
- gotoState(newState);
- //Disconnect the socket
- if(connection!=NULL)
- {
- connection->close();
- connection->SetIOStream(NULL); //disconnect the table connection from the IO stream
- }
- m_IsConnectionClosed=true;
- }
-}
-
-
-
-void ClientConnectionAdapter::badMessage(BadMessageException& e) {
- close(new ClientConnectionState_Error(e));
- sleep_ms(33); //avoid busy wait
-}
-
-void ClientConnectionAdapter::ioException(IOException& e) {
- if(connectionState!=&ClientConnectionState::DISCONNECTED_FROM_SERVER)//will get io exception when on read thread connection is closed
- {
- reconnect();
- sleep_ms(500);
- }
- else
- {
- sleep_ms(33); //avoid busy wait
- }
-}
-
-NetworkTableEntry* ClientConnectionAdapter::GetEntry(EntryId id) {
- return entryStore.GetEntry(id);
-}
-
-
-bool ClientConnectionAdapter::keepAlive() {
- return true;
-}
-
-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 {
- {
- NTSynchronized 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 {
- {
- NTSynchronized sync(LOCK);
- if(connection!=NULL && connectionState==&ClientConnectionState::IN_SYNC_WITH_SERVER)
- connection->sendEntryUpdate(*entry);
- }
- } catch(IOException& e){
- ioException(e);
- }
-}
-void ClientConnectionAdapter::flush() {
- {
- NTSynchronized sync(LOCK);
- if(connection!=NULL) {
- try {
- connection->flush();
- } catch (IOException& e) {
- ioException(e);
- }
- }
- }
-}
-void ClientConnectionAdapter::ensureAlive() {
- {
- NTSynchronized sync(LOCK);
- if ((connection!=NULL)&&(!m_IsConnectionClosed)) {
- 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
deleted file mode 100644
index c718083..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionAdapter.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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"
-#include "networktables2/connection/ConnectionMonitorThread.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;
- NTReentrantSemaphore LOCK;
- NetworkTableEntryTypeManager& typeManager;
- NTThread* readThread;
- ConnectionMonitorThread* monitor;
- NetworkTableConnection* connection;
-
- void gotoState(ClientConnectionState* newState);
- bool m_IsConnectionClosed; //Keep track of when this is closed to issue reconnect
-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);
-
-
- bool 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
deleted file mode 100644
index 7530594..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionListenerManager.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 9012856..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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
deleted file mode 100644
index fdb8e3e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientConnectionState.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 15c0e1f..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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){
- {
- NTSynchronized sync(block_namedEntries);
- 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) {
- {
- NTSynchronized 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) {
- {
- NTSynchronized 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
deleted file mode 100644
index 8dd171c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/ClientNetworkTableEntryStore.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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 "OSAL/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
deleted file mode 100644
index 08bbf4b..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * NetworkTableClient.cpp
- *
- * Created on: Nov 3, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/client/NetworkTableClient.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(*new ClientConnectionAdapter((ClientNetworkTableEntryStore&)entryStore, threadManager, streamFactory, *this, typeManager)),
- writeManager(*new WriteManager(adapter, threadManager, GetEntryStore(), 1000)),
- dirtier(new TransactionDirtier(writeManager)){
-
- GetEntryStore().SetOutgoingReceiver(dirtier);
- GetEntryStore().SetIncomingReceiver(&OutgoingEntryReceiver_NULL);
- writeManager.start();
-}
-NetworkTableClient::~NetworkTableClient(){
- //Closing this now will cause a reconnect from the write manager -James
- //Close();
- delete &writeManager;
- delete &adapter;
- delete &entryStore;
- delete dirtier;
-}
-
-/**
- * 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
deleted file mode 100644
index 0dbe2f0..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/client/NetworkTableClient.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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"
-#include "networktables2/TransactionDirtier.h"
-
-/**
- * A client node in NetworkTables 2.0
- *
- * @author Mitchell
- *
- */
-class NetworkTableClient : public NetworkTableNode{
-private:
- ClientConnectionAdapter& adapter;
- WriteManager& writeManager;
- TransactionDirtier* dirtier;
-
-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
deleted file mode 100644
index bba6e09..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 5c5585a..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/BadMessageException.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 277c011..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionAdapter.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * ConnectionAdapter.h
- *
- * Created on: Sep 16, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef CONNECTIONADAPTER_H_
-#define CONNECTIONADAPTER_H_
-
-class ConnectionAdapter;
-
-#include "networktables2/NetworkTableEntry.h"
-#include "networktables2/connection/BadMessageException.h"
-#include "networktables2/util/IOException.h"
-#include "tables/ITable.h"
-
-class ConnectionAdapter
-{
-public:
- virtual ~ConnectionAdapter()
- {
- }
- //returns true if the connection should still be alive
- virtual bool 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
deleted file mode 100644
index 1cd4a02..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * ConnectionMonitorThread.cpp
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/connection/ConnectionMonitorThread.h"
-#include "networktables2/connection/BadMessageException.h"
-#include "networktables2/util/System.h"
-
-ConnectionMonitorThread::ConnectionMonitorThread(ConnectionAdapter& _adapter, NetworkTableConnection& _connection) :
- adapter(_adapter), connection(_connection) {
-}
-
-void ConnectionMonitorThread::run() {
-
- if (adapter.keepAlive())
- {
- try{
- connection.read(adapter);
- } catch(BadMessageException& e){
- adapter.badMessage(e);
- } catch(IOException& e){
- adapter.ioException(e);
- }
- }
- else
- {
- sleep_ms(10); //avoid busy-wait
- //Test to see this working properly
- //printf("--ConnectionMonitorThread::run Waiting to close\n");
- }
-}
-
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h b/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h
deleted file mode 100644
index 64c96b5..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/ConnectionMonitorThread.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ConnectionMonitorThread.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef CONNECTIONMONITORTHREAD_H_
-#define CONNECTIONMONITORTHREAD_H_
-
-
-class ConnectionMonitorThread;
-
-#include "networktables2/connection/ConnectionAdapter.h"
-#include "networktables2/connection/NetworkTableConnection.h"
-#include "networktables2/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);
- //This can be used it identify which connection adapter instance the thread procedure is running (read-only)
- const NetworkTableConnection *GetNetworkTableConnection() const {return &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
deleted file mode 100644
index f9e1b63..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "networktables2/connection/DataIOStream.h"
-
-//TODO remove this when alloca is solved
-#ifdef WIN32
-#include <malloc.h>
-#endif
-
-///This is used in case NULL is passed so all logic calls to IOstream can continue to assume there is never a null pointer
-class InertStream : public IOStream
-{
-protected:
- virtual int read(void* ptr, int numbytes) {return numbytes;} //return success
- virtual int write(const void* ptr, int numbytes) {return numbytes;}
- virtual void flush() {}
- virtual void close() {}
-};
-
-static InertStream s_InertStream;
-
-DataIOStream::DataIOStream(IOStream* _iostream) :
- iostream(_iostream)
-{
-}
-DataIOStream::~DataIOStream()
-{
- close();
- if (iostream!=&s_InertStream)
- delete iostream;
-}
-
-void DataIOStream::SetIOStream(IOStream* stream)
-{
- IOStream *temp=iostream;
- iostream=stream ? stream : &s_InertStream; //We'll never assign NULL
- if (temp!=&s_InertStream)
- delete temp;
-}
-
-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
deleted file mode 100644
index a653892..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/DataIOStream.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef DATAIOSTREAM_H_
-#define DATAIOSTREAM_H_
-
-#include <stdlib.h>
-#include "networktables2/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();
- void SetIOStream(IOStream* stream);
-
-//private:
- IOStream *iostream;
-};
-
-
-#endif
diff --git a/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp b/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp
deleted file mode 100644
index 13c61fc..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * 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::SetIOStream(IOStream* stream)
-{
- isValid=(stream!=NULL);
- ioStream->SetIOStream(stream); //just passing through
-}
-
-void NetworkTableConnection::close() {
- {
- NTSynchronized sync(WRITE_LOCK);
- if (isValid) {
- isValid = false;
- ioStream->close();
- }
- }
-}
-void NetworkTableConnection::flush() {
- {
- NTSynchronized sync(WRITE_LOCK);
- ioStream->flush();
- }
-}
-
-void NetworkTableConnection::sendMessageHeader(
- NetworkTableMessageType messageType) {
- {
- NTSynchronized sync(WRITE_LOCK);
- ioStream->writeByte((uint8_t) messageType);
- }
-}
-
-void NetworkTableConnection::sendKeepAlive() {
- {
- NTSynchronized sync(WRITE_LOCK);
- sendMessageHeader(KEEP_ALIVE);
- flush();
- }
-}
-
-void NetworkTableConnection::sendClientHello() {
- {
- NTSynchronized sync(WRITE_LOCK);
- sendMessageHeader(CLIENT_HELLO);
- ioStream->write2BytesBE(PROTOCOL_REVISION);
- flush();
- }
-}
-void NetworkTableConnection::sendServerHelloComplete() {
- {
- NTSynchronized sync(WRITE_LOCK);
- sendMessageHeader(SERVER_HELLO_COMPLETE);
- flush();
- }
-}
-
-void NetworkTableConnection::sendProtocolVersionUnsupported() {
- {
- NTSynchronized sync(WRITE_LOCK);
- sendMessageHeader(PROTOCOL_VERSION_UNSUPPORTED);
- ioStream->write2BytesBE(PROTOCOL_REVISION);
- flush();
- }
-}
-
-void NetworkTableConnection::sendEntryAssignment(NetworkTableEntry& entry) {
- {
- NTSynchronized 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) {
- {
- NTSynchronized sync(WRITE_LOCK);
- sendMessageHeader(FIELD_UPDATE);
- ioStream->write2BytesBE(entry.GetId());
- ioStream->write2BytesBE(entry.GetSequenceNumber());
- entry.SendValue(*ioStream);
- }
-}
-
-void NetworkTableConnection::read(ConnectionAdapter& adapter) {
- int messageType = (isValid)?ioStream->readByte():KEEP_ALIVE;
- 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
deleted file mode 100644
index e73a835..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/connection/NetworkTableConnection.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 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 "OSAL/Synchronized.h"
-#ifndef _WRS_KERNEL
-#include <stdint.h>
-#endif
-
-class NetworkTableConnection;
-typedef uint16_t ProtocolVersion;
-
-#include "networktables2/connection/DataIOStream.h"
-#include "networktables2/NetworkTableEntry.h"
-#include "networktables2/type/NetworkTableEntryType.h"
-#include "networktables2/type/NetworkTableEntryTypeManager.h"
-#include "networktables2/connection/ConnectionAdapter.h"
-#include "networktables2/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);
- void SetIOStream(IOStream* stream);
-private:
- NTReentrantSemaphore 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
deleted file mode 100644
index a0f3677..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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),
- incomingStreamMonitor(streamProvider, (ServerNetworkTableEntryStore&)entryStore, *this, connectionList, typeManager, threadManager),
- connectionList(&incomingStreamMonitor),
- writeManager(connectionList, threadManager, GetEntryStore(), ULONG_MAX),
- continuingReceiver(writeManager){
-
- GetEntryStore().SetIncomingReceiver(&continuingReceiver);
- GetEntryStore().SetOutgoingReceiver(&continuingReceiver);
-
- incomingStreamMonitor.start();
- writeManager.start();
-}
-//TODO implement simplified NetworkTableServer constructor
-/*NetworkTableServer::NetworkTableServer(IOStreamProvider& streamProvider){
- this(streamProvider, new NetworkTableEntryTypeManager(), new DefaultThreadManager());
-}*/
-NetworkTableServer::~NetworkTableServer(){
- Close();
- delete &entryStore;
-}
-
-void NetworkTableServer::Close(){
- try{
- //Note: streamProvider must come before the incomingStreamMonitor so the that task can complete first for the thread to close
- // [9/1/2013 Terminator]
- streamProvider.close();
- incomingStreamMonitor.stop();
- writeManager.stop();
- connectionList.closeAll();
- } 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
deleted file mode 100644
index d38e44f..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/NetworkTableServer.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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 "networktables2/server/ServerIncomingStreamMonitor.h"
-#include "networktables2/server/ServerIncomingConnectionListener.h"
-#include "networktables2/WriteManager.h"
-#include "networktables2/stream/IOStreamProvider.h"
-#include "networktables2/server/ServerConnectionList.h"
-
-/**
- * A server node in NetworkTables 2.0
- *
- * @author Mitchell
- *
- */
-class NetworkTableServer : public NetworkTableNode, public ServerIncomingConnectionListener{
-private:
- IOStreamProvider& streamProvider;
- ServerIncomingStreamMonitor incomingStreamMonitor;
- ServerConnectionList connectionList;
- WriteManager writeManager;
- 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
deleted file mode 100644
index bc15254..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerAdapterManager.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * ServerAdapterManager.h
- *
- * Created on: Sep 26, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef SERVERADAPTERMANAGER_H_
-#define SERVERADAPTERMANAGER_H_
-
-class ServerAdapterManager;
-
-#include "networktables2/server/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
deleted file mode 100644
index 62323d8..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * 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, "[NT] %p entered connection state: %s\n", (void*)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), m_IsAdapterListenerClosed(false) {
- 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, "[NT] Bad message: %s\n", e.what());
- fflush(stdout);
- gotoState(new ServerConnectionState_Error(e));
- adapterListener.close(*this, true);
- m_IsAdapterListenerClosed=true;
- if (readThread) {
- readThread->stop();
- }
-}
-
-void ServerConnectionAdapter::ioException(IOException& e) {
- fprintf(stdout, "[NT] 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);
- m_IsAdapterListenerClosed=true;
- if (readThread) {
- readThread->stop();
- }
-}
-
-
-void ServerConnectionAdapter::shutdown(bool closeStream) {
- readThread->stop();
- if(closeStream)
- connection.close();
-}
-
-bool ServerConnectionAdapter::keepAlive() {
- return !m_IsAdapterListenerClosed; //returns true as long as the adapter listener has not been flagged for closing
-}
-
-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
deleted file mode 100644
index f1a268c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionAdapter.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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 : public ConnectionAdapter, public IncomingEntryReceiver, public 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);
- bool m_IsAdapterListenerClosed;
-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();
-
- /**
- * stop the read thread and close the stream
- */
- void shutdown(bool closeStream);
-
- void offerOutgoingAssignment(NetworkTableEntry* entry);
-
- void offerOutgoingUpdate(NetworkTableEntry* entry);
-
-
- void flush();
-
- /**
- * @return the state of the connection
- */
- ServerConnectionState* getConnectionState();
-
- void ensureAlive();
-
- //return true once the close has been issued
- bool IsAdapterListenerClosed() const {return m_IsAdapterListenerClosed;}
- ConnectionAdapter &AsConnectionAdapter() {return *this;}
-protected: //from ConnectionAdapter
-
- bool keepAlive();
- void badMessage(BadMessageException& e);
- void ioException(IOException& e);
- 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);
-};
-
-
-#endif /* SERVERCONNECTIONADAPTER_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp
deleted file mode 100644
index 731333f..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * ServerConnectionList.cpp
- *
- * Created on: Sep 26, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/server/ServerConnectionList.h"
-#include "networktables2/server/ServerIncomingStreamMonitor.h"
-#include <algorithm>
-#include <stdio.h>
-
-
-
-ServerConnectionList::ServerConnectionList(ServerIncomingStreamMonitor *Factory) : m_Factory(Factory)
-{
-}
-ServerConnectionList::~ServerConnectionList()
-{
- connectionsLock.take();
- closeAll();
-}
-
-void ServerConnectionList::add(ServerConnectionAdapter& connection)
-{
- NTSynchronized sync(connectionsLock);
- connections.push_back(&connection);
-}
-
-void ServerConnectionList::close(ServerConnectionAdapter& connectionAdapter, bool closeStream)
-{
- NTSynchronized sync(connectionsLock);
- std::vector<ServerConnectionAdapter*>::iterator connectionPosition = std::find(connections.begin(), connections.end(), &connectionAdapter);
- if (connectionPosition != connections.end() && (*connectionPosition)==&connectionAdapter)
- {
- fprintf(stdout, "[NT] Close: %p\n", (void*)&connectionAdapter);
- fflush(stdout);
- connections.erase(connectionPosition);
- m_Factory->close(&connectionAdapter);
- //connectionAdapter.shutdown(closeStream);
- //delete &connectionAdapter;
- }
-}
-
-void ServerConnectionList::closeAll()
-{
- NTSynchronized sync(connectionsLock);
- while(connections.size() > 0)
- {
- close(*connections[0], true);
- }
-}
-
-void ServerConnectionList::offerOutgoingAssignment(NetworkTableEntry* entry)
-{
- NTSynchronized sync(connectionsLock);
- for(unsigned int i = 0; i < connections.size(); ++i)
- {
- connections[i]->offerOutgoingAssignment(entry);
- }
-}
-void ServerConnectionList::offerOutgoingUpdate(NetworkTableEntry* entry)
-{
- NTSynchronized sync(connectionsLock);
- for(unsigned int i = 0; i < connections.size(); ++i)
- {
- connections[i]->offerOutgoingUpdate(entry);
- }
-}
-void ServerConnectionList::flush()
-{
- NTSynchronized sync(connectionsLock);
- for(unsigned int i = 0; i < connections.size(); ++i)
- {
- connections[i]->flush();
- }
-}
-void ServerConnectionList::ensureAlive()
-{
- NTSynchronized 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
deleted file mode 100644
index 8b3211e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionList.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * ServerConnectionList.h
- *
- * Created on: Sep 26, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef SERVERCONNECTIONLIST_H_
-#define SERVERCONNECTIONLIST_H_
-
-
-
-class ServerConnectionList;
-class ServerIncomingStreamMonitor;
-
-#include "networktables2/FlushableOutgoingEntryReceiver.h"
-#include "networktables2/NetworkTableEntry.h"
-#include "networktables2/server/ServerAdapterManager.h"
-#include "networktables2/server/ServerConnectionAdapter.h"
-#include <vector>
-
-
-
-/**
- * A list of connections that the server currently has
- *
- * @author Mitchell
- *
- */
-class ServerConnectionList : public FlushableOutgoingEntryReceiver, public ServerAdapterManager{
-private:
- NTReentrantSemaphore connectionsLock;
- std::vector<ServerConnectionAdapter*> connections;
- ServerIncomingStreamMonitor * const m_Factory; //make call to close connection
-public:
- ServerConnectionList(ServerIncomingStreamMonitor *Factory);
- 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
deleted file mode 100644
index 2e48450..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 438ce32..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerConnectionState.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 82ec0d1..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingConnectionListener.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * ServerIncomingConnectionListener.h
- *
- * Created on: Sep 26, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef SERVERINCOMINGCONNECTIONLISTENER_H_
-#define SERVERINCOMINGCONNECTIONLISTENER_H_
-
-#include "networktables2/server/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
deleted file mode 100644
index 44bf367..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * ServerIncomingStreamMonitor.cpp
- *
- * Created on: Sep 26, 2012
- * Author: Mitchell Wills
- */
-
-#include "networktables2/server/ServerIncomingStreamMonitor.h"
-#include "networktables2/stream/IOStream.h"
-#include "networktables2/util/System.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)
-{
-}
-
-ServerIncomingStreamMonitor::~ServerIncomingStreamMonitor()
-{
- stop();
-}
-
-/**
- * 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)
- {
- streamProvider.close(); //This would get called on deletion too
- NTThread *temp=monitorThread;
- monitorThread = NULL; //call this before stop for the check below to ensure a new server connection adapter will not happen
- temp->stop();
- delete temp;
- }
-}
-
-void ServerIncomingStreamMonitor::run()
-{
- try
- {
- while (monitorThread!=NULL)
- {
- IOStream* newStream = streamProvider.accept();
- {
- NTSynchronized sync(BlockDeletionList);
- for (size_t i=0;i<m_DeletionList.size();i++)
- {
- ServerConnectionAdapter *Element=m_DeletionList[i];
- Element->shutdown(true); //TODO assume to always close stream
- delete Element;
- }
- m_DeletionList.clear();
- }
- //Note: monitorThread must be checked to avoid crash on exit
- // [8/31/2013 Terminator]
- if ((monitorThread!=NULL)&&(newStream != NULL))
- {
- ServerConnectionAdapter* connectionAdapter = new ServerConnectionAdapter(newStream, entryStore, entryStore, adapterListener, typeManager, threadManager);
- incomingListener.OnNewConnection(*connectionAdapter);
- }
- sleep_ms(100); //avoid busy wait
- }
- }
- catch (IOException& e)
- {
- //could not get a new stream for some reason. ignore and continue
- }
-}
-
-void ServerIncomingStreamMonitor::close(ServerConnectionAdapter *Adapter)
-{
- NTSynchronized sync(BlockDeletionList);
- m_DeletionList.push_back(Adapter);
-}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h
deleted file mode 100644
index 7b2ba5a..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerIncomingStreamMonitor.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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;
-
- NTReentrantSemaphore BlockDeletionList;
- std::vector<ServerConnectionAdapter *> m_DeletionList;
-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);
-
- ~ServerIncomingStreamMonitor();
- /**
- * Start the monitor thread
- */
- void start();
- /**
- * Stop the monitor thread
- */
- void stop();
-
- void run();
-
- void close(ServerConnectionAdapter *Adapter);
-
-};
-
-
-
-
-#endif /* SERVERINCOMINGSTREAMMONITOR_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp
deleted file mode 100644
index b49bbf5..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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)
-{
- NTSynchronized sync(block_namedEntries);
- 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)
-{
- NTSynchronized 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)
-{
- std::vector<NetworkTableEntry *> entry_list;
- {
- NTSynchronized sync(block_namedEntries);
- std::map<std::string, NetworkTableEntry*>::iterator itr;
- for (itr = namedEntries.begin(); itr != namedEntries.end(); itr++)
- {
- NetworkTableEntry* entry = itr->second;
- entry_list.push_back(entry);
- }
- }
-
- for (size_t i=0;i<entry_list.size();i++)
- connection.sendEntryAssignment(*(entry_list[i]));
-
- connection.sendServerHelloComplete();
- connection.flush();
-}
diff --git a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h b/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h
deleted file mode 100644
index f9c4621..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/server/ServerNetworkTableEntryStore.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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 "OSAL/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
deleted file mode 100644
index 55e2ac2..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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>
-#include <ioLib.h>
-#include <selectLib.h>
-#include <string.h>
-#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);
- // Set the TCP socket to be non-blocking
- int on = 1;
- if (ioctl(fd, FIONBIO, (int)&on) < 0)
- {
- ::close(fd);
- throw IOException("Could not set socket to non-blocking mode");
- }
-}
-FDIOStream::~FDIOStream(){
- close();
-}
-
-int FDIOStream::read(void* ptr, int numbytes){
- if(numbytes==0)
- return 0;
- char* bufferPointer = (char*)ptr;
- int totalRead = 0;
-
- struct timeval timeout;
- fd_set fdSet;
-
- while (totalRead < numbytes) {
- FD_ZERO(&fdSet);
- FD_SET(fd, &fdSet);
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
- int select_result = select(FD_SETSIZE, &fdSet, NULL, NULL, &timeout);
- if ( select_result < 0)
- throw IOException("Select returned an error on read");
-
- int numRead = 0;
- if (FD_ISSET(fd, &fdSet)) {
- 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);
- if(numWrote==numbytes)
- return numWrote;
-
- if (numWrote == -1 && (errno == EWOULDBLOCK || errno == EAGAIN))
- {
- // see if write timeout expires
- struct timeval timeout;
- fd_set fdSet;
-
- FD_ZERO(&fdSet);
- FD_SET(fd, &fdSet);
- timeout.tv_sec = 1; // wait 1 second for the other side to connect
- timeout.tv_usec = 0;
-
- int select_result = select(FD_SETSIZE, NULL, &fdSet, NULL, &timeout);
- if ( select_result < 0)
- throw IOException("Select returned an error on write");
-
- if (FD_ISSET(fd, &fdSet)) {
- numWrote = ::write(fd, (char*)ptr, numbytes);
- 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
deleted file mode 100644
index 574bbc6..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/FDIOStream.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * FDIOStream.h
- *
- * Created on: Sep 27, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef FDIOSTREAM_H_
-#define FDIOSTREAM_H_
-
-
-
-class FDIOStream;
-
-
-#include "networktables2/stream/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
deleted file mode 100644
index 7f08b54..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/IOStream.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 79a3920..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamFactory.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * IOStreamFactory.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef IOSTREAMFACTORY_H_
-#define IOSTREAMFACTORY_H_
-
-#include "networktables2/stream/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
deleted file mode 100644
index 77f2bf8..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/IOStreamProvider.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * IOStreamProvider.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef IOSTREAMPROVIDER_H_
-#define IOSTREAMPROVIDER_H_
-
-#include "networktables2/stream/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
deleted file mode 100644
index cf1175c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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 _WRS_KERNEL
-#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
- while (true)
- {
- fd_set fdSet;
-
- FD_ZERO(&fdSet);
- FD_SET(serverSocket, &fdSet);
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
- int select_result = select(FD_SETSIZE, &fdSet, NULL, NULL, &timeout);
- if ( select_result < 0)
- return NULL;
-
- if (FD_ISSET(serverSocket, &fdSet))
- {
- struct sockaddr clientAddr;
- memset(&clientAddr, 0, sizeof(struct sockaddr));
- addrlen_t clientAddrSize = sizeof(clientAddr);
- int connectedSocket = ::accept(serverSocket, &clientAddr, &clientAddrSize);
- if (connectedSocket == ERROR)
- return NULL;
-
- 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
deleted file mode 100644
index 8813e2e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketServerStreamProvider.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * SocketServerStreamProvider.h
- *
- * Created on: Sep 27, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef SOCKETSERVERSTREAMPROVIDER_H_
-#define SOCKETSERVERSTREAMPROVIDER_H_
-
-
-class SocketServerStreamProvider;
-
-#include "networktables2/stream/IOStream.h"
-#include "networktables2/stream/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
deleted file mode 100644
index 1033998..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 756a69c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreamFactory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 6eaf65a..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 8887197..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/stream/SocketStreams.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SocketStreams.h
- *
- * Created on: Sep 27, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef SOCKETSTREAMS_H_
-#define SOCKETSTREAMS_H_
-
-
-class SocketStreams;
-
-
-#include "networktables2/stream/IOStreamFactory.h"
-#include "networktables2/stream/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
deleted file mode 100644
index 9519a7a..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManager.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * DefaultThreadManager.h
- * Desktop
- *
- * 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"
-
-#if (defined __vxworks || defined WIN32)
-#include "OSAL/Task.h"
-#else
-#include <pthread.h>
-#endif
-
-class DefaultThreadManager : public NTThreadManager{
-public:
- virtual NTThread* newBlockingPeriodicThread(PeriodicRunnable* r, const char* name);
-};
-
-class PeriodicNTThread : public NTThread {
-private:
-#if (defined __vxworks || defined WIN32)
- const char* name;
- NTTask* thread;
-#else
- pthread_t thread;
-#endif
- PeriodicRunnable* r;
- bool run;
-#if (defined __vxworks || defined WIN32)
- int _taskMain();
- static int taskMain(PeriodicNTThread* o);
-#else//TODO make return int for pthread as well
- void _taskMain();
- static void* taskMain(PeriodicNTThread* o);
-#endif
-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
deleted file mode 100644
index ebc5edf..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/thread/DefaultThreadManger.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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 NTTask(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, "NTTask exited with uncaught exception %s\n", name);
- fflush(stdout);
- return 1;
- }
- fprintf(stdout, "NTTask exited normally: %s\n", name);
- fflush(stdout);
- return 0;
-}
-void PeriodicNTThread::stop() {
- run = false;
-}
-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
deleted file mode 100644
index 3b6e018..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/thread/NTThread.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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
deleted file mode 100644
index a376cb7..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/thread/NTThreadManager.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * NTThreadManager.h
- *
- * Created on: Sep 21, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef NTTHREADMANAGER_H_
-#define NTTHREADMANAGER_H_
-
-class NTThreadManager;
-
-#include "networktables2/thread/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
deleted file mode 100644
index fadb8c2..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/thread/PeriodicRunnable.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 3d0f84a..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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;
-}
-ArrayData::~ArrayData(){
- free(data);
-}
-
-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
deleted file mode 100644
index ffd2daa..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ArrayData.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * ArrayData.h
- *
- * Created on: Nov 14, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef ARRAYDATA_H_
-#define ARRAYDATA_H_
-
-class ArrayData;
-
-#include "networktables2/type/ArrayEntryType.h"
-#include "networktables2/type/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);
- virtual ~ArrayData();
-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
deleted file mode 100644
index ab433fe..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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);
-}
-bool ArrayEntryType::areElementsEqual(EntryValue v1, EntryValue v2){
- return m_elementType.areEqual(v1, v2);
-}
-
-
-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));
- for (int i = 0; i < otherDataArray->length; ++i) {
- array[i] = copyElement(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) {
- deleteElement(dataArray->array[i]);
- }
- if(dataArray->array != NULL)
- free(dataArray->array);
-
- free(dataArray);
- }
-}
-bool ArrayEntryType::areEqual(EntryValue v1, EntryValue v2) {
- ArrayEntryData* a1 = (ArrayEntryData*) v1.ptr;
- ArrayEntryData* a2 = (ArrayEntryData*) v2.ptr;
- if(a1->length != a2->length)
- return false;
- for (int i = 0; i < a1->length; ++i) {
- if(!areElementsEqual(a1->array[i], a2->array[i]))
- return false;
- }
- return true;
-}
-
-EntryValue ArrayEntryType::internalizeValue(std::string& key, ComplexData& externalRepresentation, EntryValue currentInteralValue) {
- // TODO: Argument 'key' appears unused.
- ArrayData& externalArrayData = (ArrayData&)externalRepresentation;
-
- EntryValue eValue = currentInteralValue;
- ArrayEntryData* internalArray = (ArrayEntryData*) currentInteralValue.ptr;
- if(internalArray == NULL){
- internalArray = (ArrayEntryData*)malloc(sizeof(ArrayEntryData));
- internalArray->length = 0;
- internalArray->array = NULL;
- eValue.ptr = internalArray;
- }
-
- if(internalArray->length==externalArrayData.size()){
- for(int i = 0; i<internalArray->length; ++i){
- deleteElement(internalArray->array[i]);
- internalArray->array[i] = copyElement(externalArrayData._get(i));
- }
- }
- else{
- if(internalArray->array != NULL)
- free(internalArray->array);
- internalArray->length = externalArrayData.size();
- if(internalArray->length == 0)
- internalArray->array = NULL;
- else
- internalArray->array = (EntryValue*)malloc(externalArrayData.size()*sizeof(EntryValue));
- for (int i = 0; i < internalArray->length; ++i) {
- internalArray->array[i] = copyElement(externalArrayData._get(i));
- }
- }
- 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, copyElement(internalArray->array[i]));
- }
-}
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h b/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h
deleted file mode 100644
index 1556b82..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ArrayEntryType.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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 "networktables2/type/ArrayData.h"
-#include "networktables2/type/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);
-
- /**
- * Compares two elements of the type of the array
- *
- * @return true if the elements are equal
- */
- bool areElementsEqual(EntryValue v1, EntryValue v2);
-
- /**
- * 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);
-
-
- bool areEqual(EntryValue v1, EntryValue v2);
-
- /**
- * 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
deleted file mode 100644
index 1cac713..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 2f078c8..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/BooleanArray.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 5473362..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 54ef618..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ComplexData.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * ComplexData.h
- *
- * Created on: Sep 24, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef COMPLEXDATA_H_
-#define COMPLEXDATA_H_
-
-
-class ComplexData;
-
-
-//#include "networktables2/type/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();
- virtual ~ComplexData(){};
-
-};
-
-
-#endif /* COMPLEXDATA_H_ */
diff --git a/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp b/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp
deleted file mode 100644
index 0d78a1b..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 0955c91..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/ComplexEntryType.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 93db397..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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;
-}
-bool DefaultEntryTypes::BOOLEAN_t::areEqual(EntryValue v1, EntryValue v2) {
- return v1.b == v2.b;
-}
-
-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 = 0;
-
- for(int i = 0; i<8; ++i){
- value<<=8;
- value |= (is.readByte()&0xFF);
- }
-
- EntryValue eValue;
- eValue.f = *reinterpret_cast<double*>(&value);
- return eValue;
-}
-bool DefaultEntryTypes::DOUBLE_t::areEqual(EntryValue v1, EntryValue v2) {
- return v1.f == v2.f;
-}
-
-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;
-}
-bool DefaultEntryTypes::STRING_t::areEqual(EntryValue v1, EntryValue v2) {
- std::string* str1 = (std::string*)v1.ptr;
- std::string* str2 = (std::string*)v2.ptr;
- return str1->compare(*str2)==0;
-}
-
-
-
-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
deleted file mode 100644
index 576537b..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/DefaultEntryTypes.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * DefaultEntryTypes.h
- *
- * Created on: Sep 24, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef DEFAULTENTRYTYPES_H_
-#define DEFAULTENTRYTYPES_H_
-
-class DefaultEntryTypes;
-
-#include "networktables2/type/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);
-
- virtual bool areEqual(EntryValue v1, EntryValue v2);
- };
- /**
- * 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);
-
- virtual bool areEqual(EntryValue v1, EntryValue v2);
- };
- /**
- * 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);
-
- virtual bool areEqual(EntryValue v1, EntryValue v2);
- };
-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
deleted file mode 100644
index 15a027c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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
deleted file mode 100644
index b6dc94e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryType.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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);
-
- /**
- * Compares two values to determine if they are equal
- * and should not push an update to other nodes
- *
- * @param v1
- * @param v2
- * @return true if the two values are equal
- */
- virtual bool areEqual(EntryValue v1, EntryValue v2) = 0;
-
- /**
- * 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
deleted file mode 100644
index f214541..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 8269f8c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NetworkTableEntryTypeManager.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * NetworkTableEntryTypeManager.h
- *
- * Created on: Sep 16, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef NETWORKTABLEENTRYTYPEMANAGER_H_
-#define NETWORKTABLEENTRYTYPEMANAGER_H_
-
-class NetworkTableEntryTypeManager;
-
-#include "networktables2/type/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
deleted file mode 100644
index 5ff4517..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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
deleted file mode 100644
index de735de..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/NumberArray.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 954906c..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/StringArray.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 97c5e95..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/type/StringArray.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 71eefc6..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/EOFException.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 22e136e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/EOFException.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * EOFException.h
- *
- * Created on: Oct 1, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef EOFEXCEPTION_H_
-#define EOFEXCEPTION_H_
-
-#include "networktables2/util/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
deleted file mode 100644
index e44b581..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/IOException.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 001f329..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/IOException.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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
deleted file mode 100644
index fd2ad6e..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 44136e6..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/IllegalStateException.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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
deleted file mode 100644
index be66609..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/StringCache.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 4406e5d..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/StringCache.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#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
deleted file mode 100644
index 30b3c90..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/System.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 50cd788..0000000
--- a/aos/externals/WPILib/WPILib/networktables2/util/System.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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/nivision.h b/aos/externals/WPILib/WPILib/nivision.h
deleted file mode 100644
index 14de95d..0000000
--- a/aos/externals/WPILib/WPILib/nivision.h
+++ /dev/null
@@ -1,5343 +0,0 @@
-/*============================================================================*/
-/* IMAQ Vision */
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) National Instruments 2001. All Rights Reserved. */
-/*----------------------------------------------------------------------------*/
-/* */
-/* Title: NIVision.h */
-/* */
-/*============================================================================*/
-#if !defined(NiVision_h)
-#define NiVision_h
-
-//============================================================================
-// Includes
-//============================================================================
-#include <stddef.h>
-
-
-//============================================================================
-// Control Defines
-//============================================================================
-#if !defined(IMAQ_IMPORT)
- #ifndef __GNUC__
- #define IMAQ_IMPORT __declspec(dllimport)
- #else
- #define IMAQ_IMPORT
- #endif
-#endif
-
-#if !defined(IMAQ_FUNC)
- #if !defined(__cplusplus)
- #define IMAQ_FUNC IMAQ_IMPORT
- #else
- #define IMAQ_FUNC extern "C" IMAQ_IMPORT
- #endif
-#endif
-
-#if !defined(IMAQ_STDCALL)
- #ifndef __GNUC__
- #define IMAQ_STDCALL __stdcall
- #else
- #define IMAQ_STDCALL
- #endif
-#endif
-
-#ifdef _CVI_
-#pragma EnableLibraryRuntimeChecking
-#include <ansi_c.h>
-#endif
-
-#define IMAQ_CALLBACK __cdecl
-
-//============================================================================
-// Manifest Constants
-//============================================================================
-#ifndef NULL
- #ifdef __cplusplus
- #define NULL 0
- #else
- #define NULL ((void *)0)
- #endif
-#endif
-
-#ifndef FALSE
- #define FALSE 0
-#endif
-
-#ifndef TRUE
- #define TRUE 1
-#endif
-
-#define IMAQ_DEFAULT_SHOW_COORDINATES TRUE
-#define IMAQ_DEFAULT_MAX_ICONS_PER_LINE 4
-#define IMAQ_DEFAULT_LEARNING_MODE IMAQ_LEARN_SHIFT_INFORMATION
-#define IMAQ_DEFAULT_BMP_COMPRESS FALSE
-#define IMAQ_DEFAULT_PNG_QUALITY 750
-#define IMAQ_DEFAULT_JPEG_QUALITY 750
-#define IMAQ_ALL_CONTOURS -1
-#define IMAQ_ALL_WINDOWS -1
-#define IMAQ_SHIFT 1
-#define IMAQ_ALT 2
-#define IMAQ_CTRL 4
-#define IMAQ_CAPS_LOCK 8
-#define IMAQ_MODAL_DIALOG -1
-#define IMAQ_INIT_RGB_TRANSPARENT { 0, 0, 0, 1 }
-#define IMAQ_INIT_RGB_RED { 0, 0, 255, 0 }
-#define IMAQ_INIT_RGB_BLUE { 255, 0, 0, 0 }
-#define IMAQ_INIT_RGB_GREEN { 0, 255, 0, 0 }
-#define IMAQ_INIT_RGB_YELLOW { 0, 255, 255, 0 }
-#define IMAQ_INIT_RGB_WHITE { 255, 255, 255, 0 }
-#define IMAQ_INIT_RGB_BLACK { 0, 0, 0, 0 }
-#define IMAQ_USE_DEFAULT_QUALITY -1
-#define IMAQ_ALL_SAMPLES -1
-#define IMAQ_ALL_OBJECTS -1
-#define IMAQ_ALL_CHARACTERS -1
-
-//============================================================================
-// Predefined Valid Characters
-//============================================================================
-#define IMAQ_ANY_CHARACTER "" //Any Character
-#define IMAQ_ALPHABETIC "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" //Alphabetic
-#define IMAQ_ALPHANUMERIC "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" //Alphanumeric
-#define IMAQ_UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" //Uppercase Letters
-#define IMAQ_LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" //Lowercase Letters
-#define IMAQ_DECIMAL_DIGITS "0123456789" //Decimal Digits
-#define IMAQ_HEXADECIMAL_DIGITS "0123456789ABCDEFabcdef" //Hexadecimal Digits
-#define IMAQ_PATTERN "\xFF" //Pattern (A single character string with the character value set to 255)
-#define IMAQ_FORCE_SPACE " " //Force Space
-
-//============================================================================
-// Macros
-//============================================================================
-#define IMAQ_NO_RECT imaqMakeRect( 0, 0, 0x7FFFFFFF, 0x7FFFFFFF)
-#define IMAQ_NO_ROTATED_RECT imaqMakeRotatedRect( 0, 0, 0x7FFFFFFF, 0x7FFFFFFF, 0)
-#define IMAQ_NO_POINT imaqMakePoint( -1, -1)
-#define IMAQ_NO_POINT_FLOAT imaqMakePointFloat( -1.0, -1.0 )
-#define IMAQ_NO_OFFSET imaqMakePointFloat( 0.0, 0.0 )
-
-
-
-//============================================================================
-// When in Borland, some functions must be mapped to different names.
-// This accomplishes said task.
-//============================================================================
-#if defined(__BORLANDC__) || (defined(_CVI_) && defined(_NI_BC_))
- #define imaqMakePoint imaqMakePoint_BC
- #define imaqMakePointFloat imaqMakePointFloat_BC
-#endif
-
-
-//============================================================================
-// When in Watcom, some functions must be mapped to different names.
-// This accomplishes said task.
-//============================================================================
-#if defined(__WATCOMC__) || (defined(_CVI_) && defined(_NI_WC_))
- #define imaqMakePoint imaqMakePoint_BC
- #define imaqMakePointFloat imaqMakePointFloat_BC
-#endif
-
-//============================================================================
-// If using Visual C++, force startup & shutdown code to run.
-//============================================================================
-#if defined(_MSC_VER) && !defined(_CVI_) && !defined(__BORLANDC__)
- #pragma comment(linker, "/INCLUDE:_nivision_startup_shutdown")
- #pragma comment(linker, "/DEFAULTLIB:nivision.lib")
-#endif
-
-//============================================================================
-// Error Codes
-//============================================================================
-#define ERR_SUCCESS 0 // No error.
-#define ERR_SYSTEM_ERROR -1074396160 // System error.
-#define ERR_OUT_OF_MEMORY -1074396159 // Not enough memory for requested operation.
-#define ERR_MEMORY_ERROR -1074396158 // Memory error.
-#define ERR_UNREGISTERED -1074396157 // Unlicensed copy of NI Vision.
-#define ERR_NEED_FULL_VERSION -1074396156 // The function requires an NI Vision 5.0 Advanced license.
-#define ERR_UNINIT -1074396155 // NI Vision did not initialize properly.
-#define ERR_IMAGE_TOO_SMALL -1074396154 // The image is not large enough for the operation.
-#define ERR_BARCODE_CODABAR -1074396153 // The barcode is not a valid Codabar barcode.
-#define ERR_BARCODE_CODE39 -1074396152 // The barcode is not a valid Code 3 of 9 barcode.
-#define ERR_BARCODE_CODE93 -1074396151 // The barcode is not a valid Code93 barcode.
-#define ERR_BARCODE_CODE128 -1074396150 // The barcode is not a valid Code128 barcode.
-#define ERR_BARCODE_EAN8 -1074396149 // The barcode is not a valid EAN8 barcode.
-#define ERR_BARCODE_EAN13 -1074396148 // The barcode is not a valid EAN13 barcode.
-#define ERR_BARCODE_I25 -1074396147 // The barcode is not a valid Interleaved 2 of 5 barcode.
-#define ERR_BARCODE_MSI -1074396146 // The barcode is not a valid MSI barcode.
-#define ERR_BARCODE_UPCA -1074396145 // The barcode is not a valid UPCA barcode.
-#define ERR_BARCODE_CODE93_SHIFT -1074396144 // The Code93 barcode contains invalid shift encoding.
-#define ERR_BARCODE_TYPE -1074396143 // The barcode type is invalid.
-#define ERR_BARCODE_INVALID -1074396142 // The image does not represent a valid linear barcode.
-#define ERR_BARCODE_CODE128_FNC -1074396141 // The FNC value in the Code128 barcode is not located before the first data value.
-#define ERR_BARCODE_CODE128_SET -1074396140 // The starting code set in the Code128 barcode is not valid.
-#define ERR_ROLLBACK_RESOURCE_OUT_OF_MEMORY -1074396139 // Not enough reserved memory in the timed environment for the requested operation.
-#define ERR_ROLLBACK_NOT_SUPPORTED -1074396138 // The function is not supported when a time limit is active.
-#define ERR_DIRECTX_DLL_NOT_FOUND -1074396137 // Quartz.dll not found. Install DirectX 8.1 or later.
-#define ERR_DIRECTX_INVALID_FILTER_QUALITY -1074396136 // The filter quality you provided is invalid. Valid quality values range from -1 to 1000.
-#define ERR_INVALID_BUTTON_LABEL -1074396135 // Invalid button label.
-#define ERR_THREAD_INITIALIZING -1074396134 // Could not execute the function in the separate thread because the thread has not completed initialization.
-#define ERR_THREAD_COULD_NOT_INITIALIZE -1074396133 // Could not execute the function in the separate thread because the thread could not initialize.
-#define ERR_MASK_NOT_TEMPLATE_SIZE -1074396132 // The mask must be the same size as the template.
-#define ERR_NOT_RECT_OR_ROTATED_RECT -1074396130 // The ROI must only have either a single Rectangle contour or a single Rotated Rectangle contour.
-#define ERR_ROLLBACK_UNBOUNDED_INTERFACE -1074396129 // During timed execution, you must use the preallocated version of this operation.
-#define ERR_ROLLBACK_RESOURCE_CONFLICT_3 -1074396128 // An image being modified by one process cannot be requested by another process while a time limit is active.
-#define ERR_ROLLBACK_RESOURCE_CONFLICT_2 -1074396127 // An image with pattern matching, calibration, or overlay information cannot be manipulated while a time limit is active.
-#define ERR_ROLLBACK_RESOURCE_CONFLICT_1 -1074396126 // An image created before a time limit is started cannot be resized while a time limit is active.
-#define ERR_INVALID_CONTRAST_THRESHOLD -1074396125 // Invalid contrast threshold. The threshold value must be greater than 0.
-#define ERR_INVALID_CALIBRATION_ROI_MODE -1074396124 // NI Vision does not support the calibration ROI mode you supplied.
-#define ERR_INVALID_CALIBRATION_MODE -1074396123 // NI Vision does not support the calibration mode you supplied.
-#define ERR_DRAWTEXT_COLOR_MUST_BE_GRAYSCALE -1074396122 // Set the foreground and background text colors to grayscale to draw on a U8 image.
-#define ERR_SATURATION_THRESHOLD_OUT_OF_RANGE -1074396121 // The value of the saturation threshold must be from 0 to 255.
-#define ERR_NOT_IMAGE -1074396120 // Not an image.
-#define ERR_CUSTOMDATA_INVALID_KEY -1074396119 // They custom data key you supplied is invalid. The only valid character values are decimal 32-126 and 161-255. There must also be no repeated, leading, or trailing spaces.
-#define ERR_INVALID_STEP_SIZE -1074396118 // Step size must be greater than zero and less than Image size
-#define ERR_MATRIX_SIZE -1074396117 // Invalid matrix size in the structuring element.
-#define ERR_CALIBRATION_INSF_POINTS -1074396116 // Insufficient number of calibration feature points.
-#define ERR_CALIBRATION_IMAGE_CORRECTED -1074396115 // The operation is invalid in a corrected image.
-#define ERR_CALIBRATION_INVALID_ROI -1074396114 // The ROI contains an invalid contour type or is not contained in the ROI learned for calibration.
-#define ERR_CALIBRATION_IMAGE_UNCALIBRATED -1074396113 // The source/input image has not been calibrated.
-#define ERR_INCOMP_MATRIX_SIZE -1074396112 // The number of pixel and real-world coordinates must be equal.
-#define ERR_CALIBRATION_FAILED_TO_FIND_GRID -1074396111 // Unable to automatically detect grid because the image is too distorted.
-#define ERR_CALIBRATION_INFO_VERSION -1074396110 // Invalid calibration information version.
-#define ERR_CALIBRATION_INVALID_SCALING_FACTOR -1074396109 // Invalid calibration scaling factor.
-#define ERR_CALIBRATION_ERRORMAP -1074396108 // The calibration error map cannot be computed.
-#define ERR_CALIBRATION_INFO_1 -1074396107 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_2 -1074396106 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_3 -1074396105 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_4 -1074396104 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_5 -1074396103 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_6 -1074396102 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_MICRO_PLANE -1074396101 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_PERSPECTIVE_PROJECTION -1074396100 // Invalid calibration template image.
-#define ERR_CALIBRATION_INFO_SIMPLE_TRANSFORM -1074396099 // Invalid calibration template image.
-#define ERR_RESERVED_MUST_BE_NULL -1074396098 // You must pass NULL for the reserved parameter.
-#define ERR_INVALID_PARTICLE_PARAMETER_VALUE -1074396097 // You entered an invalid selection in the particle parameter.
-#define ERR_NOT_AN_OBJECT -1074396096 // Not an object.
-#define ERR_CALIBRATION_DUPLICATE_REFERENCE_POINT -1074396095 // The reference points passed are inconsistent. At least two similar pixel coordinates correspond to different real-world coordinates.
-#define ERR_ROLLBACK_RESOURCE_CANNOT_UNLOCK -1074396094 // A resource conflict occurred in the timed environment. Two processes cannot manage the same resource and be time bounded.
-#define ERR_ROLLBACK_RESOURCE_LOCKED -1074396093 // A resource conflict occurred in the timed environment. Two processes cannot access the same resource and be time bounded.
-#define ERR_ROLLBACK_RESOURCE_NON_EMPTY_INITIALIZE -1074396092 // Multiple timed environments are not supported.
-#define ERR_ROLLBACK_RESOURCE_UNINITIALIZED_ENABLE -1074396091 // A time limit cannot be started until the timed environment is initialized.
-#define ERR_ROLLBACK_RESOURCE_ENABLED -1074396090 // Multiple timed environments are not supported.
-#define ERR_ROLLBACK_RESOURCE_REINITIALIZE -1074396089 // The timed environment is already initialized.
-#define ERR_ROLLBACK_RESIZE -1074396088 // The results of the operation exceeded the size limits on the output data arrays.
-#define ERR_ROLLBACK_STOP_TIMER -1074396087 // No time limit is available to stop.
-#define ERR_ROLLBACK_START_TIMER -1074396086 // A time limit could not be set.
-#define ERR_ROLLBACK_INIT_TIMER -1074396085 // The timed environment could not be initialized.
-#define ERR_ROLLBACK_DELETE_TIMER -1074396084 // No initialized timed environment is available to close.
-#define ERR_ROLLBACK_TIMEOUT -1074396083 // The time limit has expired.
-#define ERR_PALETTE_NOT_SUPPORTED -1074396082 // Only 8-bit images support the use of palettes. Either do not use a palette, or convert your image to an 8-bit image before using a palette.
-#define ERR_BAD_PASSWORD -1074396081 // Incorrect password.
-#define ERR_INVALID_IMAGE_TYPE -1074396080 // Invalid image type.
-#define ERR_INVALID_METAFILE_HANDLE -1074396079 // Invalid metafile handle.
-#define ERR_INCOMP_TYPE -1074396077 // Incompatible image type.
-#define ERR_COORD_SYS_FIRST_AXIS -1074396076 // Unable to fit a line for the primary axis.
-#define ERR_COORD_SYS_SECOND_AXIS -1074396075 // Unable to fit a line for the secondary axis.
-#define ERR_INCOMP_SIZE -1074396074 // Incompatible image size.
-#define ERR_MASK_OUTSIDE_IMAGE -1074396073 // When the mask's offset was applied, the mask was entirely outside of the image.
-#define ERR_INVALID_BORDER -1074396072 // Invalid image border.
-#define ERR_INVALID_SCAN_DIRECTION -1074396071 // Invalid scan direction.
-#define ERR_INVALID_FUNCTION -1074396070 // Unsupported function.
-#define ERR_INVALID_COLOR_MODE -1074396069 // NI Vision does not support the color mode you specified.
-#define ERR_INVALID_ACTION -1074396068 // The function does not support the requested action.
-#define ERR_IMAGES_NOT_DIFF -1074396067 // The source image and destination image must be different.
-#define ERR_INVALID_POINTSYMBOL -1074396066 // Invalid point symbol.
-#define ERR_CANT_RESIZE_EXTERNAL -1074396065 // Cannot resize an image in an acquisition buffer.
-#define ERR_EXTERNAL_NOT_SUPPORTED -1074396064 // This operation is not supported for images in an acquisition buffer.
-#define ERR_EXTERNAL_ALIGNMENT -1074396063 // The external buffer must be aligned on a 4-byte boundary. The line width and border pixels must be 4-byte aligned, as well.
-#define ERR_INVALID_TOLERANCE -1074396062 // The tolerance parameter must be greater than or equal to 0.
-#define ERR_INVALID_WINDOW_SIZE -1074396061 // The size of each dimension of the window must be greater than 2 and less than or equal to the size of the image in the corresponding dimension.
-#define ERR_JPEG2000_LOSSLESS_WITH_FLOATING_POINT -1074396060 // Lossless compression cannot be used with the floating point wavelet transform mode. Either set the wavelet transform mode to integer, or use lossy compression.
-#define ERR_INVALID_MAX_ITERATIONS -1074396059 // Invalid maximum number of iterations. Maximum number of iterations must be greater than zero.
-#define ERR_INVALID_ROTATION_MODE -1074396058 // Invalid rotation mode.
-#define ERR_INVALID_SEARCH_VECTOR_WIDTH -1074396057 // Invalid search vector width. The width must be an odd number greater than zero.
-#define ERR_INVALID_MATRIX_MIRROR_MODE -1074396056 // Invalid matrix mirror mode.
-#define ERR_INVALID_ASPECT_RATIO -1074396055 // Invalid aspect ratio. Valid aspect ratios must be greater than or equal to zero.
-#define ERR_INVALID_CELL_FILL_TYPE -1074396054 // Invalid cell fill type.
-#define ERR_INVALID_BORDER_INTEGRITY -1074396053 // Invalid border integrity. Valid values range from 0 to 100.
-#define ERR_INVALID_DEMODULATION_MODE -1074396052 // Invalid demodulation mode.
-#define ERR_INVALID_CELL_FILTER_MODE -1074396051 // Invalid cell filter mode.
-#define ERR_INVALID_ECC_TYPE -1074396050 // Invalid ECC type.
-#define ERR_INVALID_MATRIX_POLARITY -1074396049 // Invalid matrix polarity.
-#define ERR_INVALID_CELL_SAMPLE_SIZE -1074396048 // Invalid cell sample size.
-#define ERR_INVALID_LINEAR_AVERAGE_MODE -1074396047 // Invalid linear average mode.
-#define ERR_INVALID_2D_BARCODE_CONTRAST_FOR_ROI -1074396046 // When using a region of interest that is not a rectangle, you must specify the contrast mode of the barcode as either black on white or white on black.
-#define ERR_INVALID_2D_BARCODE_SUBTYPE -1074396045 // Invalid 2-D barcode Data Matrix subtype.
-#define ERR_INVALID_2D_BARCODE_SHAPE -1074396044 // Invalid 2-D barcode shape.
-#define ERR_INVALID_2D_BARCODE_CELL_SHAPE -1074396043 // Invalid 2-D barcode cell shape.
-#define ERR_INVALID_2D_BARCODE_CONTRAST -1074396042 // Invalid 2-D barcode contrast.
-#define ERR_INVALID_2D_BARCODE_TYPE -1074396041 // Invalid 2-D barcode type.
-#define ERR_DRIVER -1074396040 // Cannot access NI-IMAQ driver.
-#define ERR_IO_ERROR -1074396039 // I/O error.
-#define ERR_FIND_COORDSYS_MORE_THAN_ONE_EDGE -1074396038 // When searching for a coordinate system, the number of lines to fit must be 1.
-#define ERR_TIMEOUT -1074396037 // Trigger timeout.
-#define ERR_INVALID_SKELETONMODE -1074396036 // The Skeleton mode you specified is invalid.
-#define ERR_TEMPLATEIMAGE_NOCIRCLE -1074396035 // The template image does not contain enough information for learning the aggressive search strategy.
-#define ERR_TEMPLATEIMAGE_EDGEINFO -1074396034 // The template image does not contain enough edge information for the sample size(s) requested.
-#define ERR_TEMPLATEDESCRIPTOR_LEARNSETUPDATA -1074396033 // Invalid template descriptor.
-#define ERR_TEMPLATEDESCRIPTOR_ROTATION_SEARCHSTRATEGY -1074396032 // The template descriptor does not contain data required for the requested search strategy in rotation-invariant matching.
-#define ERR_INVALID_TETRAGON -1074396031 // The input tetragon must have four points. The points are specified clockwise starting with the top left point.
-#define ERR_TOO_MANY_CLASSIFICATION_SESSIONS -1074396030 // There are too many classification sessions open. You must close a session before you can open another one.
-#define ERR_TIME_BOUNDED_EXECUTION_NOT_SUPPORTED -1074396028 // NI Vision no longer supports time-bounded execution.
-#define ERR_INVALID_COLOR_RESOLUTION -1074396027 // Invalid Color Resolution for the Color Classifier
-#define ERR_INVALID_PROCESS_TYPE_FOR_EDGE_DETECTION -1074396026 // Invalid process type for edge detection.
-#define ERR_INVALID_ANGLE_RANGE_FOR_STRAIGHT_EDGE -1074396025 // Angle range value should be equal to or greater than zero.
-#define ERR_INVALID_MIN_COVERAGE_FOR_STRAIGHT_EDGE -1074396024 // Minimum coverage value should be greater than zero.
-#define ERR_INVALID_ANGLE_TOL_FOR_STRAIGHT_EDGE -1074396023 // The angle tolerance should be equal to or greater than 0.001.
-#define ERR_INVALID_SEARCH_MODE_FOR_STRAIGHT_EDGE -1074396022 // Invalid search mode for detecting straight edges
-#define ERR_INVALID_KERNEL_SIZE_FOR_EDGE_DETECTION -1074396021 // Invalid kernel size for edge detection. The minimum kernel size is 3, the maximum kernel size is 1073741823 and the kernel size must be odd.
-#define ERR_INVALID_GRADING_MODE -1074396020 // Invalid grading mode.
-#define ERR_INVALID_THRESHOLD_PERCENTAGE -1074396019 // Invalid threshold percentage. Valid values range from 0 to 100.
-#define ERR_INVALID_EDGE_POLARITY_SEARCH_MODE -1074396018 // Invalid edge polarity search mode.
-#define ERR_OPENING_NEWER_AIM_GRADING_DATA -1074396017 // The AIM grading data attached to the image you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_NO_VIDEO_DRIVER -1074396016 // No video driver is installed.
-#define ERR_RPC_EXECUTE_IVB -1074396015 // Unable to establish network connection with remote system.
-#define ERR_INVALID_VIDEO_BLIT -1074396014 // RT Video Out does not support displaying the supplied image type at the selected color depth.
-#define ERR_INVALID_VIDEO_MODE -1074396013 // Invalid video mode.
-#define ERR_RPC_EXECUTE -1074396012 // Unable to display remote image on network connection.
-#define ERR_RPC_BIND -1074396011 // Unable to establish network connection.
-#define ERR_INVALID_FRAME_NUMBER -1074396010 // Invalid frame number.
-#define ERR_DIRECTX -1074396009 // An internal DirectX error has occurred. Try upgrading to the latest version of DirectX.
-#define ERR_DIRECTX_NO_FILTER -1074396008 // An appropriate DirectX filter to process this file could not be found. Install the filter that was used to create this AVI. Upgrading to the latest version of DirectX may correct this error. NI Vision requires DirectX 8.1 or higher.
-#define ERR_DIRECTX_INCOMPATIBLE_COMPRESSION_FILTER -1074396007 // Incompatible compression filter.
-#define ERR_DIRECTX_UNKNOWN_COMPRESSION_FILTER -1074396006 // Unknown compression filter.
-#define ERR_INVALID_AVI_SESSION -1074396005 // Invalid AVI session.
-#define ERR_DIRECTX_CERTIFICATION_FAILURE -1074396004 // A software key is restricting the use of this compression filter.
-#define ERR_AVI_DATA_EXCEEDS_BUFFER_SIZE -1074396003 // The data for this frame exceeds the data buffer size specified when creating the AVI file.
-#define ERR_INVALID_LINEGAUGEMETHOD -1074396002 // Invalid line gauge method.
-#define ERR_TOO_MANY_AVI_SESSIONS -1074396001 // There are too many AVI sessions open. You must close a session before you can open another one.
-#define ERR_FILE_FILE_HEADER -1074396000 // Invalid file header.
-#define ERR_FILE_FILE_TYPE -1074395999 // Invalid file type.
-#define ERR_FILE_COLOR_TABLE -1074395998 // Invalid color table.
-#define ERR_FILE_ARGERR -1074395997 // Invalid parameter.
-#define ERR_FILE_OPEN -1074395996 // File is already open for writing.
-#define ERR_FILE_NOT_FOUND -1074395995 // File not found.
-#define ERR_FILE_TOO_MANY_OPEN -1074395994 // Too many files open.
-#define ERR_FILE_IO_ERR -1074395993 // File I/O error.
-#define ERR_FILE_PERMISSION -1074395992 // File access denied.
-#define ERR_FILE_INVALID_TYPE -1074395991 // NI Vision does not support the file type you specified.
-#define ERR_FILE_GET_INFO -1074395990 // Could not read Vision info from file.
-#define ERR_FILE_READ -1074395989 // Unable to read data.
-#define ERR_FILE_WRITE -1074395988 // Unable to write data.
-#define ERR_FILE_EOF -1074395987 // Premature end of file.
-#define ERR_FILE_FORMAT -1074395986 // Invalid file format.
-#define ERR_FILE_OPERATION -1074395985 // Invalid file operation.
-#define ERR_FILE_INVALID_DATA_TYPE -1074395984 // NI Vision does not support the file data type you specified.
-#define ERR_FILE_NO_SPACE -1074395983 // Disk full.
-#define ERR_INVALID_FRAMES_PER_SECOND -1074395982 // The frames per second in an AVI must be greater than zero.
-#define ERR_INSUFFICIENT_BUFFER_SIZE -1074395981 // The buffer that was passed in is not big enough to hold all of the data.
-#define ERR_COM_INITIALIZE -1074395980 // Error initializing COM.
-#define ERR_INVALID_PARTICLE_INFO -1074395979 // The image has invalid particle information. Call imaqCountParticles on the image to create particle information.
-#define ERR_INVALID_PARTICLE_NUMBER -1074395978 // Invalid particle number.
-#define ERR_AVI_VERSION -1074395977 // The AVI file was created in a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this AVI file.
-#define ERR_NUMBER_OF_PALETTE_COLORS -1074395976 // The color palette must have exactly 0 or 256 entries.
-#define ERR_AVI_TIMEOUT -1074395975 // DirectX has timed out reading or writing the AVI file. When closing an AVI file, try adding an additional delay. When reading an AVI file, try reducing CPU and disk load.
-#define ERR_UNSUPPORTED_JPEG2000_COLORSPACE_METHOD -1074395974 // NI Vision does not support reading JPEG2000 files with this colorspace method.
-#define ERR_JPEG2000_UNSUPPORTED_MULTIPLE_LAYERS -1074395973 // NI Vision does not support reading JPEG2000 files with more than one layer.
-#define ERR_DIRECTX_ENUMERATE_FILTERS -1074395972 // DirectX is unable to enumerate the compression filters. This is caused by a third-party compression filter that is either improperly installed or is preventing itself from being enumerated. Remove any recently installed compression filters and try again.
-#define ERR_INVALID_OFFSET -1074395971 // The offset you specified must be size 2.
-#define ERR_INIT -1074395960 // Initialization error.
-#define ERR_CREATE_WINDOW -1074395959 // Unable to create window.
-#define ERR_WINDOW_ID -1074395958 // Invalid window ID.
-#define ERR_ARRAY_SIZE_MISMATCH -1074395957 // The array sizes are not compatible.
-#define ERR_INVALID_QUALITY -1074395956 // The quality you provided is invalid. Valid quality values range from -1 to 1000.
-#define ERR_INVALID_MAX_WAVELET_TRANSFORM_LEVEL -1074395955 // Invalid maximum wavelet transform level. Valid values range from 0 to 255.
-#define ERR_INVALID_QUANTIZATION_STEP_SIZE -1074395954 // The quantization step size must be greater than or equal to 0.
-#define ERR_INVALID_WAVELET_TRANSFORM_MODE -1074395953 // Invalid wavelet transform mode.
-#define ERR_ROI_NOT_POINT -1074395952 // The ROI must only have a single Point contour.
-#define ERR_ROI_NOT_POINTS -1074395951 // The ROI must only have Point contours.
-#define ERR_ROI_NOT_LINE -1074395950 // The ROI must only have a single Line contour.
-#define ERR_ROI_NOT_ANNULUS -1074395949 // The ROI must only have a single Annulus contour.
-#define ERR_INVALID_MEASURE_PARTICLES_CALIBRATION_MODE -1074395948 // Invalid measure particles calibration mode.
-#define ERR_INVALID_PARTICLE_CLASSIFIER_THRESHOLD_TYPE -1074395947 // Invalid particle classifier threshold type.
-#define ERR_INVALID_DISTANCE -1074395946 // Invalid Color Segmentation Distance
-#define ERR_INVALID_PARTICLE_AREA -1074395945 // Invalid Color Segmenation Particle Area
-#define ERR_CLASS_NAME_NOT_FOUND -1074395944 // Required Class name is not found in trained labels/Class names
-#define ERR_NUMBER_LABEL_LIMIT_EXCEEDED -1074395943 // Number of Labels exceeded limit of label Image type
-#define ERR_INVALID_DISTANCE_LEVEL -1074395942 // Invalid Color Segmentation distance level
-#define ERR_INVALID_SVM_TYPE -1074395941 // Invalid SVM model type
-#define ERR_INVALID_SVM_KERNEL -1074395940 // Invalid SVM kernel type
-#define ERR_NO_SUPPORT_VECTOR_FOUND -1074395939 // No Support Vector is found at SVM training
-#define ERR_COST_LABEL_NOT_FOUND -1074395938 // Label name is not found in added samples
-#define ERR_EXCEEDED_SVM_MAX_ITERATION -1074395937 // SVM training exceeded maximim Iteration limit
-#define ERR_INVALID_SVM_PARAMETER -1074395936 // Invalid SVM Parameter
-#define ERR_INVALID_IDENTIFICATION_SCORE -1074395935 // Invalid Identification score. Must be between 0-1000.
-#define ERR_INVALID_TEXTURE_FEATURE -1074395934 // Requested for invalid texture feature
-#define ERR_INVALID_COOCCURRENCE_LEVEL -1074395933 // The coOccurrence Level must lie between 1 and the maximum pixel value of an image (255 for U8 image)
-#define ERR_INVALID_WAVELET_SUBBAND -1074395932 // Request for invalid wavelet subBand
-#define ERR_INVALID_FINAL_STEP_SIZE -1074395931 // The final step size must be lesser than the initial step size
-#define ERR_INVALID_ENERGY -1074395930 // Minimum Energy should lie between 0 and 100
-#define ERR_INVALID_TEXTURE_LABEL -1074395929 // The classification label must be texture or defect for texture defect classifier
-#define ERR_INVALID_WAVELET_TYPE -1074395928 // The wavelet type is invalid
-#define ERR_SAME_WAVELET_BANDS_SELECTED -1074395927 // Same Wavelet band is selected multiple times
-#define ERR_IMAGE_SIZE_MISMATCH -1074395926 // The two input image sizes are different
-#define ERR_NUMBER_CLASS -1074395920 // Invalid number of classes.
-#define ERR_INVALID_LUCAS_KANADE_WINDOW_SIZE -1074395888 // Both dimensions of the window size should be odd, greater than 2 and less than 16.
-#define ERR_INVALID_MATRIX_TYPE -1074395887 // The type of matrix supplied to the function is not supported.
-#define ERR_INVALID_OPTICAL_FLOW_TERMINATION_CRITERIA_TYPE -1074395886 // An invalid termination criteria was specified for the optical flow computation.
-#define ERR_LKP_NULL_PYRAMID -1074395885 // The pyramid levels where not properly allocated.
-#define ERR_INVALID_PYRAMID_LEVEL -1074395884 // The pyramid level specified cannot be negative
-#define ERR_INVALID_LKP_KERNEL -1074395883 // The kernel must be symmetric with non-zero coefficients and of odd size
-#define ERR_INVALID_HORN_SCHUNCK_LAMBDA -1074395882 // Invalid smoothing parameter in Horn Schunck operation.
-#define ERR_INVALID_HORN_SCHUNCK_TYPE -1074395881 // Invalid stopping criteria type for Horn Schunck optical flow.
-#define ERR_PARTICLE -1074395880 // Invalid particle.
-#define ERR_BAD_MEASURE -1074395879 // Invalid measure number.
-#define ERR_PROP_NODE_WRITE_NOT_SUPPORTED -1074395878 // The Image Display control does not support writing this property node.
-#define ERR_COLORMODE_REQUIRES_CHANGECOLORSPACE2 -1074395877 // The specified color mode requires the use of imaqChangeColorSpace2.
-#define ERR_UNSUPPORTED_COLOR_MODE -1074395876 // This function does not currently support the color mode you specified.
-#define ERR_BARCODE_PHARMACODE -1074395875 // The barcode is not a valid Pharmacode symbol
-#define ERR_BAD_INDEX -1074395840 // Invalid handle table index.
-#define ERR_INVALID_COMPRESSION_RATIO -1074395837 // The compression ratio must be greater than or equal to 1.
-#define ERR_TOO_MANY_CONTOURS -1074395801 // The ROI contains too many contours.
-#define ERR_PROTECTION -1074395800 // Protection error.
-#define ERR_INTERNAL -1074395799 // Internal error.
-#define ERR_INVALID_CUSTOM_SAMPLE -1074395798 // The size of the feature vector in the custom sample must match the size of those you have already added.
-#define ERR_INVALID_CLASSIFIER_SESSION -1074395797 // Not a valid classifier session.
-#define ERR_INVALID_KNN_METHOD -1074395796 // You requested an invalid Nearest Neighbor classifier method.
-#define ERR_K_TOO_LOW -1074395795 // The k parameter must be greater than two.
-#define ERR_K_TOO_HIGH -1074395794 // The k parameter must be <= the number of samples in each class.
-#define ERR_INVALID_OPERATION_ON_COMPACT_SESSION_ATTEMPTED -1074395793 // This classifier session is compact. Only the Classify and Dispose functions may be called on a compact classifier session.
-#define ERR_CLASSIFIER_SESSION_NOT_TRAINED -1074395792 // This classifier session is not trained. You may only call this function on a trained classifier session.
-#define ERR_CLASSIFIER_INVALID_SESSION_TYPE -1074395791 // This classifier function cannot be called on this type of classifier session.
-#define ERR_INVALID_DISTANCE_METRIC -1074395790 // You requested an invalid distance metric.
-#define ERR_OPENING_NEWER_CLASSIFIER_SESSION -1074395789 // The classifier session you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_NO_SAMPLES -1074395788 // This operation cannot be performed because you have not added any samples.
-#define ERR_INVALID_CLASSIFIER_TYPE -1074395787 // You requested an invalid classifier type.
-#define ERR_INVALID_PARTICLE_OPTIONS -1074395786 // The sum of Scale Dependence and Symmetry Dependence must be less than 1000.
-#define ERR_NO_PARTICLE -1074395785 // The image yielded no particles.
-#define ERR_INVALID_LIMITS -1074395784 // The limits you supplied are not valid.
-#define ERR_BAD_SAMPLE_INDEX -1074395783 // The Sample Index fell outside the range of Samples.
-#define ERR_DESCRIPTION_TOO_LONG -1074395782 // The description must be <= 255 characters.
-#define ERR_CLASSIFIER_INVALID_ENGINE_TYPE -1074395781 // The engine for this classifier session does not support this operation.
-#define ERR_INVALID_PARTICLE_TYPE -1074395780 // You requested an invalid particle type.
-#define ERR_CANNOT_COMPACT_UNTRAINED -1074395779 // You may only save a session in compact form if it is trained.
-#define ERR_INVALID_KERNEL_SIZE -1074395778 // The Kernel size must be smaller than the image size.
-#define ERR_INCOMPATIBLE_CLASSIFIER_TYPES -1074395777 // The session you read from file must be the same type as the session you passed in.
-#define ERR_INVALID_USE_OF_COMPACT_SESSION_FILE -1074395776 // You can not use a compact classification file with read options other than Read All.
-#define ERR_ROI_HAS_OPEN_CONTOURS -1074395775 // The ROI you passed in may only contain closed contours.
-#define ERR_NO_LABEL -1074395774 // You must pass in a label.
-#define ERR_NO_DEST_IMAGE -1074395773 // You must provide a destination image.
-#define ERR_INVALID_REGISTRATION_METHOD -1074395772 // You provided an invalid registration method.
-#define ERR_OPENING_NEWER_INSPECTION_TEMPLATE -1074395771 // The golden template you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_INVALID_INSPECTION_TEMPLATE -1074395770 // Invalid golden template.
-#define ERR_INVALID_EDGE_THICKNESS -1074395769 // Edge Thickness to Ignore must be greater than zero.
-#define ERR_INVALID_SCALE -1074395768 // Scale must be greater than zero.
-#define ERR_INVALID_ALIGNMENT -1074395767 // The supplied scale is invalid for your template.
-#define ERR_DEPRECATED_FUNCTION -1074395766 // This backwards-compatibility function can not be used with this session. Use newer, supported functions instead.
-#define ERR_INVALID_NORMALIZATION_METHOD -1074395763 // You must provide a valid normalization method.
-#define ERR_INVALID_NIBLACK_DEVIATION_FACTOR -1074395762 // The deviation factor for Niblack local threshold must be between 0 and 1.
-#define ERR_BOARD_NOT_FOUND -1074395760 // Board not found.
-#define ERR_BOARD_NOT_OPEN -1074395758 // Board not opened.
-#define ERR_DLL_NOT_FOUND -1074395757 // DLL not found.
-#define ERR_DLL_FUNCTION_NOT_FOUND -1074395756 // DLL function not found.
-#define ERR_TRIG_TIMEOUT -1074395754 // Trigger timeout.
-#define ERR_CONTOUR_INVALID_REFINEMENTS -1074395746 // Invalid number specified for maximum contour refinements.
-#define ERR_TOO_MANY_CURVES -1074395745 // Too many curves extracted from image. Raise the edge threshold or reduce the ROI.
-#define ERR_CONTOUR_INVALID_KERNEL_FOR_SMOOTHING -1074395744 // Invalid kernel for contour smoothing. Zero indicates no smoothing, otherwise value must be odd.
-#define ERR_CONTOUR_LINE_INVALID -1074395743 // The contour line fit is invalid. Line segment start and stop must differ.
-#define ERR_CONTOUR_TEMPLATE_IMAGE_INVALID -1074395742 // The template image must be trained with IMAQ Learn Contour Pattern or be the same size as the target image.
-#define ERR_CONTOUR_GPM_FAIL -1074395741 // Matching failed to align the template and target contours.
-#define ERR_CONTOUR_OPENING_NEWER_VERSION -1074395740 // The contour you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_CONTOUR_CONNECT_DUPLICATE -1074395739 // Only one range is allowed per curve connection constraint type.
-#define ERR_CONTOUR_CONNECT_TYPE -1074395738 // Invalid contour connection constraint type.
-#define ERR_CONTOUR_MATCH_STR_NOT_APPLICABLE -1074395737 // In order to use contour matching, you must provide a template image that has been trained with IMAQ Learn Contour Pattern
-#define ERR_CONTOUR_CURVATURE_KERNEL -1074395736 // Invalid kernel width for curvature calculation. Must be an odd value greater than 1.
-#define ERR_CONTOUR_EXTRACT_SELECTION -1074395735 // Invalid Contour Selection method for contour extraction.
-#define ERR_CONTOUR_EXTRACT_DIRECTION -1074395734 // Invalid Search Direction for contour extraction.
-#define ERR_CONTOUR_EXTRACT_ROI -1074395733 // Invalid ROI for contour extraction. The ROI must contain an annulus, rectangle or rotated rectangle.
-#define ERR_CONTOUR_NO_CURVES -1074395732 // No curves were found in the image.
-#define ERR_CONTOUR_COMPARE_KERNEL -1074395731 // Invalid Smoothing Kernel width for contour comparison. Must be zero or an odd positive integer.
-#define ERR_CONTOUR_COMPARE_SINGLE_IMAGE -1074395730 // If no template image is provided, the target image must contain both a contour with extracted points and a fitted equation.
-#define ERR_CONTOUR_INVALID -1074395729 // Invalid contour image.
-#define ERR_INVALID_2D_BARCODE_SEARCH_MODE -1074395728 // NI Vision does not support the search mode you provided.
-#define ERR_UNSUPPORTED_2D_BARCODE_SEARCH_MODE -1074395727 // NI Vision does not support the search mode you provided for the type of 2D barcode for which you are searching.
-#define ERR_MATCHFACTOR_OBSOLETE -1074395726 // matchFactor has been obsoleted. Instead, set the initialMatchListLength and matchListReductionFactor in the MatchPatternAdvancedOptions structure.
-#define ERR_DATA_VERSION -1074395725 // The data was stored with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this data.
-#define ERR_CUSTOMDATA_INVALID_SIZE -1074395724 // The size you specified is out of the valid range.
-#define ERR_CUSTOMDATA_KEY_NOT_FOUND -1074395723 // The key you specified cannot be found in the image.
-#define ERR_CLASSIFIER_CLASSIFY_IMAGE_WITH_CUSTOM_SESSION -1074395722 // Custom classifier sessions only classify feature vectors. They do not support classifying images.
-#define ERR_INVALID_BIT_DEPTH -1074395721 // NI Vision does not support the bit depth you supplied for the image you supplied.
-#define ERR_BAD_ROI -1074395720 // Invalid ROI.
-#define ERR_BAD_ROI_BOX -1074395719 // Invalid ROI global rectangle.
-#define ERR_LAB_VERSION -1074395718 // The version of LabVIEW or BridgeVIEW you are running does not support this operation.
-#define ERR_INVALID_RANGE -1074395717 // The range you supplied is invalid.
-#define ERR_INVALID_SCALING_METHOD -1074395716 // NI Vision does not support the scaling method you provided.
-#define ERR_INVALID_CALIBRATION_UNIT -1074395715 // NI Vision does not support the calibration unit you supplied.
-#define ERR_INVALID_AXIS_ORIENTATION -1074395714 // NI Vision does not support the axis orientation you supplied.
-#define ERR_VALUE_NOT_IN_ENUM -1074395713 // Value not in enumeration.
-#define ERR_WRONG_REGION_TYPE -1074395712 // You selected a region that is not of the right type.
-#define ERR_NOT_ENOUGH_REGIONS -1074395711 // You specified a viewer that does not contain enough regions.
-#define ERR_TOO_MANY_PARTICLES -1074395710 // The image has too many particles for this process.
-#define ERR_AVI_UNOPENED_SESSION -1074395709 // The AVI session has not been opened.
-#define ERR_AVI_READ_SESSION_REQUIRED -1074395708 // The AVI session is a write session, but this operation requires a read session.
-#define ERR_AVI_WRITE_SESSION_REQUIRED -1074395707 // The AVI session is a read session, but this operation requires a write session.
-#define ERR_AVI_SESSION_ALREADY_OPEN -1074395706 // This AVI session is already open. You must close it before calling the Create or Open functions.
-#define ERR_DATA_CORRUPTED -1074395705 // The data is corrupted and cannot be read.
-#define ERR_INVALID_COMPRESSION_TYPE -1074395704 // Invalid compression type.
-#define ERR_INVALID_TYPE_OF_FLATTEN -1074395703 // Invalid type of flatten.
-#define ERR_INVALID_LENGTH -1074395702 // The length of the edge detection line must be greater than zero.
-#define ERR_INVALID_MATRIX_SIZE_RANGE -1074395701 // The maximum Data Matrix barcode size must be equal to or greater than the minimum Data Matrix barcode size.
-#define ERR_REQUIRES_WIN2000_OR_NEWER -1074395700 // The function requires the operating system to be Microsoft Windows 2000 or newer.
-#define ERR_INVALID_CALIBRATION_METHOD -1074395662 // Invalid calibration method requested
-#define ERR_INVALID_OPERATION_ON_COMPACT_CALIBRATION_ATTEMPTED -1074395661 // This calibration is compact. Re-Learning calibration and retrieving thumbnails are not possible with this calibration
-#define ERR_INVALID_POLYNOMIAL_MODEL_K_COUNT -1074395660 // Invalid number of K values
-#define ERR_INVALID_DISTORTION_MODEL -1074395659 // Invalid distortion model type
-#define ERR_CAMERA_MODEL_NOT_AVAILABLE -1074395658 // Camera Model is not learned
-#define ERR_INVALID_THUMBNAIL_INDEX -1074395657 // Supplied thumbnail index is invalid
-#define ERR_SMOOTH_CONTOURS_MUST_BE_SAME -1074395656 // You must specify the same value for the smooth contours advanced match option for all templates you want to match.
-#define ERR_ENABLE_CALIBRATION_SUPPORT_MUST_BE_SAME -1074395655 // You must specify the same value for the enable calibration support advanced match option for all templates you want to match.
-#define ERR_GRADING_INFORMATION_NOT_FOUND -1074395654 // The source image does not contain grading information. You must prepare the source image for grading when reading the Data Matrix, and you cannot change the contents of the source image between reading and grading the Data Matrix.
-#define ERR_OPENING_NEWER_MULTIPLE_GEOMETRIC_TEMPLATE -1074395653 // The multiple geometric matching template you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_OPENING_NEWER_GEOMETRIC_MATCHING_TEMPLATE -1074395652 // The geometric matching template you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_EDGE_FILTER_SIZE_MUST_BE_SAME -1074395651 // You must specify the same edge filter size for all the templates you want to match.
-#define ERR_CURVE_EXTRACTION_MODE_MUST_BE_SAME -1074395650 // You must specify the same curve extraction mode for all the templates you want to match.
-#define ERR_INVALID_GEOMETRIC_FEATURE_TYPE -1074395649 // The geometric feature type specified is invalid.
-#define ERR_TEMPLATE_NOT_LEARNED -1074395648 // You supplied a template that was not learned.
-#define ERR_INVALID_MULTIPLE_GEOMETRIC_TEMPLATE -1074395647 // Invalid multiple geometric template.
-#define ERR_NO_TEMPLATE_TO_LEARN -1074395646 // Need at least one template to learn.
-#define ERR_INVALID_NUMBER_OF_LABELS -1074395645 // You supplied an invalid number of labels.
-#define ERR_LABEL_TOO_LONG -1074395644 // Labels must be <= 255 characters.
-#define ERR_INVALID_NUMBER_OF_MATCH_OPTIONS -1074395643 // You supplied an invalid number of match options.
-#define ERR_LABEL_NOT_FOUND -1074395642 // Cannot find a label that matches the one you specified.
-#define ERR_DUPLICATE_LABEL -1074395641 // Duplicate labels are not allowed.
-#define ERR_TOO_MANY_ZONES -1074395640 // The number of zones found exceeded the capacity of the algorithm.
-#define ERR_INVALID_HATCH_STYLE -1074395639 // The hatch style for the window background is invalid.
-#define ERR_INVALID_FILL_STYLE -1074395638 // The fill style for the window background is invalid.
-#define ERR_HARDWARE_DOESNT_SUPPORT_NONTEARING -1074395637 // Your hardware is not supported by DirectX and cannot be put into NonTearing mode.
-#define ERR_DIRECTX_NOT_FOUND -1074395636 // DirectX is required for this feature. Please install the latest version..
-#define ERR_INVALID_SHAPE_DESCRIPTOR -1074395635 // The passed shape descriptor is invalid.
-#define ERR_INVALID_MAX_MATCH_OVERLAP -1074395634 // Invalid max match overlap. Values must be between -1 and 100.
-#define ERR_INVALID_MIN_MATCH_SEPARATION_SCALE -1074395633 // Invalid minimum match separation scale. Values must be greater than or equal to -1.
-#define ERR_INVALID_MIN_MATCH_SEPARATION_ANGLE -1074395632 // Invalid minimum match separation angle. Values must be between -1 and 360.
-#define ERR_INVALID_MIN_MATCH_SEPARATION_DISTANCE -1074395631 // Invalid minimum match separation distance. Values must be greater than or equal to -1.
-#define ERR_INVALID_MAXIMUM_FEATURES_LEARNED -1074395630 // Invalid maximum number of features learn. Values must be integers greater than zero.
-#define ERR_INVALID_MAXIMUM_PIXEL_DISTANCE_FROM_LINE -1074395629 // Invalid maximum pixel distance from line. Values must be positive real numbers.
-#define ERR_INVALID_GEOMETRIC_MATCHING_TEMPLATE -1074395628 // Invalid geometric matching template image.
-#define ERR_NOT_ENOUGH_TEMPLATE_FEATURES_1 -1074395627 // The template does not contain enough features for geometric matching.
-#define ERR_NOT_ENOUGH_TEMPLATE_FEATURES -1074395626 // The template does not contain enough features for geometric matching.
-#define ERR_INVALID_MATCH_CONSTRAINT_TYPE -1074395625 // You specified an invalid value for the match constraint value of the range settings.
-#define ERR_INVALID_OCCLUSION_RANGE -1074395624 // Invalid occlusion range. Valid values for the bounds range from 0 to 100 and the upper bound must be greater than or equal to the lower bound.
-#define ERR_INVALID_SCALE_RANGE -1074395623 // Invalid scale range. Values for the lower bound must be a positive real numbers and the upper bound must be greater than or equal to the lower bound.
-#define ERR_INVALID_MATCH_GEOMETRIC_PATTERN_SETUP_DATA -1074395622 // Invalid match geometric pattern setup data.
-#define ERR_INVALID_LEARN_GEOMETRIC_PATTERN_SETUP_DATA -1074395621 // Invalid learn geometric pattern setup data.
-#define ERR_INVALID_CURVE_EXTRACTION_MODE -1074395620 // Invalid curve extraction mode.
-#define ERR_TOO_MANY_OCCLUSION_RANGES -1074395619 // You can specify only one occlusion range.
-#define ERR_TOO_MANY_SCALE_RANGES -1074395618 // You can specify only one scale range.
-#define ERR_INVALID_NUMBER_OF_FEATURES_RANGE -1074395617 // The minimum number of features must be less than or equal to the maximum number of features.
-#define ERR_INVALID_EDGE_FILTER_SIZE -1074395616 // Invalid edge filter size.
-#define ERR_INVALID_MINIMUM_FEATURE_STRENGTH -1074395615 // Invalid minimum strength for features. Values must be positive real numbers.
-#define ERR_INVALID_MINIMUM_FEATURE_ASPECT_RATIO -1074395614 // Invalid aspect ratio for rectangular features. Values must be positive real numbers in the range 0.01 to 1.0.
-#define ERR_INVALID_MINIMUM_FEATURE_LENGTH -1074395613 // Invalid minimum length for linear features. Values must be integers greater than 0.
-#define ERR_INVALID_MINIMUM_FEATURE_RADIUS -1074395612 // Invalid minimum radius for circular features. Values must be integers greater than 0.
-#define ERR_INVALID_MINIMUM_RECTANGLE_DIMENSION -1074395611 // Invalid minimum rectangle dimension. Values must be integers greater than 0.
-#define ERR_INVALID_INITIAL_MATCH_LIST_LENGTH -1074395610 // Invalid initial match list length. Values must be integers greater than 5.
-#define ERR_INVALID_SUBPIXEL_TOLERANCE -1074395609 // Invalid subpixel tolerance. Values must be positive real numbers.
-#define ERR_INVALID_SUBPIXEL_ITERATIONS -1074395608 // Invalid number of subpixel iterations. Values must be integers greater 10.
-#define ERR_INVALID_MAXIMUM_FEATURES_PER_MATCH -1074395607 // Invalid maximum number of features used per match. Values must be integers greater than or equal to zero.
-#define ERR_INVALID_MINIMUM_FEATURES_TO_MATCH -1074395606 // Invalid minimum number of features used for matching. Values must be integers greater than zero.
-#define ERR_INVALID_MAXIMUM_END_POINT_GAP -1074395605 // Invalid maximum end point gap. Valid values range from 0 to 32767.
-#define ERR_INVALID_COLUMN_STEP -1074395604 // Invalid column step. Valid range is 1 to 255.
-#define ERR_INVALID_ROW_STEP -1074395603 // Invalid row step. Valid range is 1 to 255.
-#define ERR_INVALID_MINIMUM_CURVE_LENGTH -1074395602 // Invalid minimum length. Valid values must be greater than or equal to zero.
-#define ERR_INVALID_EDGE_THRESHOLD -1074395601 // Invalid edge threshold. Valid values range from 1 to 360.
-#define ERR_INFO_NOT_FOUND -1074395600 // You must provide information about the subimage within the browser.
-#define ERR_NIOCR_INVALID_ACCEPTANCE_LEVEL -1074395598 // The acceptance level is outside the valid range of 0 to 1000.
-#define ERR_NIOCR_NOT_A_VALID_SESSION -1074395597 // Not a valid OCR session.
-#define ERR_NIOCR_INVALID_CHARACTER_SIZE -1074395596 // Invalid character size. Character size must be >= 1.
-#define ERR_NIOCR_INVALID_THRESHOLD_MODE -1074395595 // Invalid threshold mode value.
-#define ERR_NIOCR_INVALID_SUBSTITUTION_CHARACTER -1074395594 // Invalid substitution character. Valid substitution characters are ASCII values that range from 1 to 254.
-#define ERR_NIOCR_INVALID_NUMBER_OF_BLOCKS -1074395593 // Invalid number of blocks. Number of blocks must be >= 4 and <= 50.
-#define ERR_NIOCR_INVALID_READ_STRATEGY -1074395592 // Invalid read strategy.
-#define ERR_NIOCR_INVALID_CHARACTER_INDEX -1074395591 // Invalid character index.
-#define ERR_NIOCR_INVALID_NUMBER_OF_VALID_CHARACTER_POSITIONS -1074395590 // Invalid number of character positions. Valid values range from 0 to 255.
-#define ERR_NIOCR_INVALID_LOW_THRESHOLD_VALUE -1074395589 // Invalid low threshold value. Valid threshold values range from 0 to 255.
-#define ERR_NIOCR_INVALID_HIGH_THRESHOLD_VALUE -1074395588 // Invalid high threshold value. Valid threshold values range from 0 to 255.
-#define ERR_NIOCR_INVALID_THRESHOLD_RANGE -1074395587 // The low threshold must be less than the high threshold.
-#define ERR_NIOCR_INVALID_LOWER_THRESHOLD_LIMIT -1074395586 // Invalid lower threshold limit. Valid lower threshold limits range from 0 to 255.
-#define ERR_NIOCR_INVALID_UPPER_THRESHOLD_LIMIT -1074395585 // Invalid upper threshold limit. Valid upper threshold limits range from 0 to 255.
-#define ERR_NIOCR_INVALID_THRESHOLD_LIMITS -1074395584 // The lower threshold limit must be less than the upper threshold limit.
-#define ERR_NIOCR_INVALID_MIN_CHAR_SPACING -1074395583 // Invalid minimum character spacing value. Character spacing must be >= 1 pixel.
-#define ERR_NIOCR_INVALID_MAX_HORIZ_ELEMENT_SPACING -1074395582 // Invalid maximum horizontal element spacing value. Maximum horizontal element spacing must be >= 0.
-#define ERR_NIOCR_INVALID_MAX_VERT_ELEMENT_SPACING -1074395581 // Invalid maximum vertical element spacing value. Maximum vertical element spacing must be >= 0.
-#define ERR_NIOCR_INVALID_MIN_BOUNDING_RECT_WIDTH -1074395580 // Invalid minimum bounding rectangle width. Minimum bounding rectangle width must be >= 1.
-#define ERR_NIOCR_INVALID_ASPECT_RATIO -1074395579 // Invalid aspect ratio value. The aspect ratio must be zero or >= 100.
-#define ERR_NIOCR_INVALID_CHARACTER_SET_FILE -1074395578 // Invalid or corrupt character set file.
-#define ERR_NIOCR_CHARACTER_VALUE_CANNOT_BE_EMPTYSTRING -1074395577 // The character value must not be an empty string.
-#define ERR_NIOCR_CHARACTER_VALUE_TOO_LONG -1074395576 // Character values must be <=255 characters.
-#define ERR_NIOCR_INVALID_NUMBER_OF_EROSIONS -1074395575 // Invalid number of erosions. The number of erosions must be >= 0.
-#define ERR_NIOCR_CHARACTER_SET_DESCRIPTION_TOO_LONG -1074395574 // The character set description must be <=255 characters.
-#define ERR_NIOCR_INVALID_CHARACTER_SET_FILE_VERSION -1074395573 // The character set file was created by a newer version of NI Vision. Upgrade to the latest version of NI Vision to read the character set file.
-#define ERR_NIOCR_INTEGER_VALUE_FOR_STRING_ATTRIBUTE -1074395572 // You must specify characters for a string. A string cannot contain integers.
-#define ERR_NIOCR_GET_ONLY_ATTRIBUTE -1074395571 // This attribute is read-only.
-#define ERR_NIOCR_INTEGER_VALUE_FOR_BOOLEAN_ATTRIBUTE -1074395570 // This attribute requires a Boolean value.
-#define ERR_NIOCR_INVALID_ATTRIBUTE -1074395569 // Invalid attribute.
-#define ERR_NIOCR_STRING_VALUE_FOR_INTEGER_ATTRIBUTE -1074395568 // This attribute requires integer values.
-#define ERR_NIOCR_STRING_VALUE_FOR_BOOLEAN_ATTRIBUTE -1074395567 // String values are invalid for this attribute. Enter a boolean value.
-#define ERR_NIOCR_BOOLEAN_VALUE_FOR_INTEGER_ATTRIBUTE -1074395566 // Boolean values are not valid for this attribute. Enter an integer value.
-#define ERR_NIOCR_MUST_BE_SINGLE_CHARACTER -1074395565 // Requires a single-character string.
-#define ERR_NIOCR_INVALID_PREDEFINED_CHARACTER -1074395564 // Invalid predefined character value.
-#define ERR_NIOCR_UNLICENSED -1074395563 // This copy of NI OCR is unlicensed.
-#define ERR_NIOCR_BOOLEAN_VALUE_FOR_STRING_ATTRIBUTE -1074395562 // String values are not valid for this attribute. Enter a Boolean value.
-#define ERR_NIOCR_INVALID_NUMBER_OF_CHARACTERS -1074395561 // The number of characters in the character value must match the number of objects in the image.
-#define ERR_NIOCR_INVALID_OBJECT_INDEX -1074395560 // Invalid object index.
-#define ERR_NIOCR_INVALID_READ_OPTION -1074395559 // Invalid read option.
-#define ERR_NIOCR_INVALID_CHARACTER_SIZE_RANGE -1074395558 // The minimum character size must be less than the maximum character size.
-#define ERR_NIOCR_INVALID_BOUNDING_RECT_WIDTH_RANGE -1074395557 // The minimum character bounding rectangle width must be less than the maximum character bounding rectangle width.
-#define ERR_NIOCR_INVALID_BOUNDING_RECT_HEIGHT_RANGE -1074395556 // The minimum character bounding rectangle height must be less than the maximum character bounding rectangle height.
-#define ERR_NIOCR_INVALID_SPACING_RANGE -1074395555 // The maximum horizontal element spacing value must not exceed the minimum character spacing value.
-#define ERR_NIOCR_INVALID_READ_RESOLUTION -1074395554 // Invalid read resolution.
-#define ERR_NIOCR_INVALID_MIN_BOUNDING_RECT_HEIGHT -1074395553 // Invalid minimum bounding rectangle height. The minimum bounding rectangle height must be >= 1.
-#define ERR_NIOCR_NOT_A_VALID_CHARACTER_SET -1074395552 // Not a valid character set.
-#define ERR_NIOCR_RENAME_REFCHAR -1074395551 // A trained OCR character cannot be renamed while it is a reference character.
-#define ERR_NIOCR_INVALID_CHARACTER_VALUE -1074395550 // A character cannot have an ASCII value of 255.
-#define ERR_NIOCR_INVALID_NUMBER_OF_OBJECTS_TO_VERIFY -1074395549 // The number of objects found does not match the number of expected characters or patterns to verify.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_PREFILTER_CAP -1074395421 // The specified value for the filter cap for block matching is invalid.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_PREFILTER_SIZE -1074395420 // The specified prefilter size for block matching is invalid.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_PREFILTER_TYPE -1074395419 // The specified prefilter type for block matching is invalid.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_NUMDISPARITIES -1074395418 // The specifed value for number of disparities is invalid.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_WINDOW_SIZE -1074395417 // The specified window size for block matching is invalid.
-#define ERR_3DVISION_INVALID_SESSION_TYPE -1074395416 // This 3D vision function cannot be called on this type of 3d vision session.
-#define ERR_TOO_MANY_3DVISION_SESSIONS -1074395415 // There are too many 3D vision sessions open. You must close a session before you can open another one.
-#define ERR_OPENING_NEWER_3DVISION_SESSION -1074395414 // The 3D vision session you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_INVALID_STEREO_BLOCKMATCHING_FILTERTYPE -1074395413 // You have specified an invalid filter type for block matching.
-#define ERR_INVALID_STEREO_CAMERA_POSITION -1074395412 // You have requested results at an invalid camera position in the stereo setup.
-#define ERR_INVALID_3DVISION_SESSION -1074395411 // Not a valid 3D Vision session.
-#define ERR_INVALID_ICONS_PER_LINE -1074395410 // NI Vision does not support less than one icon per line.
-#define ERR_INVALID_SUBPIXEL_DIVISIONS -1074395409 // Invalid subpixel divisions.
-#define ERR_INVALID_DETECTION_MODE -1074395408 // Invalid detection mode.
-#define ERR_INVALID_CONTRAST -1074395407 // Invalid contrast value. Valid contrast values range from 0 to 255.
-#define ERR_COORDSYS_NOT_FOUND -1074395406 // The coordinate system could not be found on this image.
-#define ERR_INVALID_TEXTORIENTATION -1074395405 // NI Vision does not support the text orientation value you supplied.
-#define ERR_INVALID_INTERPOLATIONMETHOD_FOR_UNWRAP -1074395404 // UnwrapImage does not support the interpolation method value you supplied. Valid interpolation methods are zero order and bilinear.
-#define ERR_EXTRAINFO_VERSION -1074395403 // The image was created in a newer version of NI Vision. Upgrade to the latest version of NI Vision to use this image.
-#define ERR_INVALID_MAXPOINTS -1074395402 // The function does not support the maximum number of points that you specified.
-#define ERR_INVALID_MATCHFACTOR -1074395401 // The function does not support the matchFactor that you specified.
-#define ERR_MULTICORE_OPERATION -1074395400 // The operation you have given Multicore Options is invalid. Please see the available enumeration values for Multicore Operation.
-#define ERR_MULTICORE_INVALID_ARGUMENT -1074395399 // You have given Multicore Options an invalid argument.
-#define ERR_COMPLEX_IMAGE_REQUIRED -1074395397 // A complex image is required.
-#define ERR_COLOR_IMAGE_REQUIRED -1074395395 // The input image must be a color image.
-#define ERR_COLOR_SPECTRUM_MASK -1074395394 // The color mask removes too much color information.
-#define ERR_COLOR_TEMPLATE_IMAGE_TOO_SMALL -1074395393 // The color template image is too small.
-#define ERR_COLOR_TEMPLATE_IMAGE_TOO_LARGE -1074395392 // The color template image is too large.
-#define ERR_COLOR_TEMPLATE_IMAGE_HUE_CONTRAST_TOO_LOW -1074395391 // The contrast in the hue plane of the image is too low for learning shape features.
-#define ERR_COLOR_TEMPLATE_IMAGE_LUMINANCE_CONTRAST_TOO_LOW -1074395390 // The contrast in the luminance plane of the image is too low to learn shape features.
-#define ERR_COLOR_LEARN_SETUP_DATA -1074395389 // Invalid color learn setup data.
-#define ERR_COLOR_LEARN_SETUP_DATA_SHAPE -1074395388 // Invalid color learn setup data.
-#define ERR_COLOR_MATCH_SETUP_DATA -1074395387 // Invalid color match setup data.
-#define ERR_COLOR_MATCH_SETUP_DATA_SHAPE -1074395386 // Invalid color match setup data.
-#define ERR_COLOR_ROTATION_REQUIRES_SHAPE_FEATURE -1074395385 // Rotation-invariant color pattern matching requires a feature mode including shape.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR -1074395384 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_1 -1074395383 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_2 -1074395382 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_3 -1074395381 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_4 -1074395380 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_5 -1074395379 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_6 -1074395378 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT -1074395377 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSHIFT -1074395376 // The color template image does not contain data required for shift-invariant color matching.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT_1 -1074395375 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_SHIFT_2 -1074395374 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION -1074395373 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_NOROTATION -1074395372 // The color template image does not contain data required for rotation-invariant color matching.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_1 -1074395371 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_2 -1074395370 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_3 -1074395369 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_4 -1074395368 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_ROTATION_5 -1074395367 // Invalid color template image.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSHAPE -1074395366 // The color template image does not contain data required for color matching in shape feature mode.
-#define ERR_COLOR_TEMPLATE_DESCRIPTOR_NOSPECTRUM -1074395365 // The color template image does not contain data required for color matching in color feature mode.
-#define ERR_IGNORE_COLOR_SPECTRUM_SET -1074395364 // The ignore color spectra array is invalid.
-#define ERR_INVALID_SUBSAMPLING_RATIO -1074395363 // Invalid subsampling ratio.
-#define ERR_INVALID_WIDTH -1074395362 // Invalid pixel width.
-#define ERR_INVALID_STEEPNESS -1074395361 // Invalid steepness.
-#define ERR_COMPLEX_PLANE -1074395360 // Invalid complex plane.
-#define ERR_INVALID_COLOR_IGNORE_MODE -1074395357 // Invalid color ignore mode.
-#define ERR_INVALID_MIN_MATCH_SCORE -1074395356 // Invalid minimum match score. Acceptable values range from 0 to 1000.
-#define ERR_INVALID_NUM_MATCHES_REQUESTED -1074395355 // Invalid number of matches requested. You must request a minimum of one match.
-#define ERR_INVALID_COLOR_WEIGHT -1074395354 // Invalid color weight. Acceptable values range from 0 to 1000.
-#define ERR_INVALID_SEARCH_STRATEGY -1074395353 // Invalid search strategy.
-#define ERR_INVALID_FEATURE_MODE -1074395352 // Invalid feature mode.
-#define ERR_INVALID_RECT -1074395351 // NI Vision does not support rectangles with negative widths or negative heights.
-#define ERR_INVALID_VISION_INFO -1074395350 // NI Vision does not support the vision information type you supplied.
-#define ERR_INVALID_SKELETONMETHOD -1074395349 // NI Vision does not support the SkeletonMethod value you supplied.
-#define ERR_INVALID_3DPLANE -1074395348 // NI Vision does not support the 3DPlane value you supplied.
-#define ERR_INVALID_3DDIRECTION -1074395347 // NI Vision does not support the 3DDirection value you supplied.
-#define ERR_INVALID_INTERPOLATIONMETHOD_FOR_ROTATE -1074395346 // imaqRotate does not support the InterpolationMethod value you supplied.
-#define ERR_INVALID_FLIPAXIS -1074395345 // NI Vision does not support the axis of symmetry you supplied.
-#define ERR_FILE_FILENAME_NULL -1074395343 // You must pass a valid file name. Do not pass in NULL.
-#define ERR_INVALID_SIZETYPE -1074395340 // NI Vision does not support the SizeType value you supplied.
-#define ERR_UNKNOWN_ALGORITHM -1074395336 // You specified the dispatch status of an unknown algorithm.
-#define ERR_DISPATCH_STATUS_CONFLICT -1074395335 // You are attempting to set the same algorithm to dispatch and to not dispatch. Remove one of the conflicting settings.
-#define ERR_INVALID_CONVERSIONSTYLE -1074395334 // NI Vision does not support the Conversion Method value you supplied.
-#define ERR_INVALID_VERTICAL_TEXT_ALIGNMENT -1074395333 // NI Vision does not support the VerticalTextAlignment value you supplied.
-#define ERR_INVALID_COMPAREFUNCTION -1074395332 // NI Vision does not support the CompareFunction value you supplied.
-#define ERR_INVALID_BORDERMETHOD -1074395331 // NI Vision does not support the BorderMethod value you supplied.
-#define ERR_INVALID_BORDER_SIZE -1074395330 // Invalid border size. Acceptable values range from 0 to 50.
-#define ERR_INVALID_OUTLINEMETHOD -1074395329 // NI Vision does not support the OutlineMethod value you supplied.
-#define ERR_INVALID_INTERPOLATIONMETHOD -1074395328 // NI Vision does not support the InterpolationMethod value you supplied.
-#define ERR_INVALID_SCALINGMODE -1074395327 // NI Vision does not support the ScalingMode value you supplied.
-#define ERR_INVALID_DRAWMODE_FOR_LINE -1074395326 // imaqDrawLineOnImage does not support the DrawMode value you supplied.
-#define ERR_INVALID_DRAWMODE -1074395325 // NI Vision does not support the DrawMode value you supplied.
-#define ERR_INVALID_SHAPEMODE -1074395324 // NI Vision does not support the ShapeMode value you supplied.
-#define ERR_INVALID_FONTCOLOR -1074395323 // NI Vision does not support the FontColor value you supplied.
-#define ERR_INVALID_TEXTALIGNMENT -1074395322 // NI Vision does not support the TextAlignment value you supplied.
-#define ERR_INVALID_MORPHOLOGYMETHOD -1074395321 // NI Vision does not support the MorphologyMethod value you supplied.
-#define ERR_TEMPLATE_EMPTY -1074395320 // The template image is empty.
-#define ERR_INVALID_SUBPIX_TYPE -1074395319 // NI Vision does not support the interpolation type you supplied.
-#define ERR_INSF_POINTS -1074395318 // You supplied an insufficient number of points to perform this operation.
-#define ERR_UNDEF_POINT -1074395317 // You specified a point that lies outside the image.
-#define ERR_INVALID_KERNEL_CODE -1074395316 // Invalid kernel code.
-#define ERR_INEFFICIENT_POINTS -1074395315 // You supplied an inefficient set of points to match the minimum score.
-#define ERR_WRITE_FILE_NOT_SUPPORTED -1074395313 // Writing files is not supported on this device.
-#define ERR_LCD_CALIBRATE -1074395312 // The input image does not seem to be a valid LCD or LED calibration image.
-#define ERR_INVALID_COLOR_SPECTRUM -1074395311 // The color spectrum array you provided has an invalid number of elements or contains an element set to not-a-number (NaN).
-#define ERR_INVALID_PALETTE_TYPE -1074395310 // NI Vision does not support the PaletteType value you supplied.
-#define ERR_INVALID_WINDOW_THREAD_POLICY -1074395309 // NI Vision does not support the WindowThreadPolicy value you supplied.
-#define ERR_INVALID_COLORSENSITIVITY -1074395308 // NI Vision does not support the ColorSensitivity value you supplied.
-#define ERR_PRECISION_NOT_GTR_THAN_0 -1074395307 // The precision parameter must be greater than 0.
-#define ERR_INVALID_TOOL -1074395306 // NI Vision does not support the Tool value you supplied.
-#define ERR_INVALID_REFERENCEMODE -1074395305 // NI Vision does not support the ReferenceMode value you supplied.
-#define ERR_INVALID_MATHTRANSFORMMETHOD -1074395304 // NI Vision does not support the MathTransformMethod value you supplied.
-#define ERR_INVALID_NUM_OF_CLASSES -1074395303 // Invalid number of classes for auto threshold. Acceptable values range from 2 to 256.
-#define ERR_INVALID_THRESHOLDMETHOD -1074395302 // NI Vision does not support the threshold method value you supplied.
-#define ERR_ROI_NOT_2_LINES -1074395301 // The ROI you passed into imaqGetMeterArc must consist of two lines.
-#define ERR_INVALID_METERARCMODE -1074395300 // NI Vision does not support the MeterArcMode value you supplied.
-#define ERR_INVALID_COMPLEXPLANE -1074395299 // NI Vision does not support the ComplexPlane value you supplied.
-#define ERR_COMPLEXPLANE_NOT_REAL_OR_IMAGINARY -1074395298 // You can perform this operation on a real or an imaginary ComplexPlane only.
-#define ERR_INVALID_PARTICLEINFOMODE -1074395297 // NI Vision does not support the ParticleInfoMode value you supplied.
-#define ERR_INVALID_BARCODETYPE -1074395296 // NI Vision does not support the BarcodeType value you supplied.
-#define ERR_INVALID_INTERPOLATIONMETHOD_INTERPOLATEPOINTS -1074395295 // imaqInterpolatePoints does not support the InterpolationMethod value you supplied.
-#define ERR_CONTOUR_INDEX_OUT_OF_RANGE -1074395294 // The contour index you supplied is larger than the number of contours in the ROI.
-#define ERR_CONTOURID_NOT_FOUND -1074395293 // The supplied ContourID did not correlate to a contour inside the ROI.
-#define ERR_POINTS_ARE_COLLINEAR -1074395292 // Do not supply collinear points for this operation.
-#define ERR_SHAPEMATCH_BADIMAGEDATA -1074395291 // Shape Match requires the image to contain only pixel values of 0 or 1.
-#define ERR_SHAPEMATCH_BADTEMPLATE -1074395290 // The template you supplied for ShapeMatch contains no shape information.
-#define ERR_CONTAINER_CAPACITY_EXCEEDED_UINT_MAX -1074395289 // The operation would have exceeded the capacity of an internal container, which is limited to 4294967296 unique elements.
-#define ERR_CONTAINER_CAPACITY_EXCEEDED_INT_MAX -1074395288 // The operation would have exceeded the capacity of an internal container, which is limited to 2147483648 unique elements.
-#define ERR_INVALID_LINE -1074395287 // The line you provided contains two identical points, or one of the coordinate locations for the line is not a number (NaN).
-#define ERR_INVALID_CONCENTRIC_RAKE_DIRECTION -1074395286 // Invalid concentric rake direction.
-#define ERR_INVALID_SPOKE_DIRECTION -1074395285 // Invalid spoke direction.
-#define ERR_INVALID_EDGE_PROCESS -1074395284 // Invalid edge process.
-#define ERR_INVALID_RAKE_DIRECTION -1074395283 // Invalid rake direction.
-#define ERR_CANT_DRAW_INTO_VIEWER -1074395282 // Unable to draw to viewer. You must have the latest version of the control.
-#define ERR_IMAGE_SMALLER_THAN_BORDER -1074395281 // Your image must be larger than its border size for this operation.
-#define ERR_ROI_NOT_RECT -1074395280 // The ROI must only have a single Rectangle contour.
-#define ERR_ROI_NOT_POLYGON -1074395279 // ROI is not a polygon.
-#define ERR_LCD_NOT_NUMERIC -1074395278 // LCD image is not a number.
-#define ERR_BARCODE_CHECKSUM -1074395277 // The decoded barcode information did not pass the checksum test.
-#define ERR_LINES_PARALLEL -1074395276 // You specified parallel lines for the meter ROI.
-#define ERR_INVALID_BROWSER_IMAGE -1074395275 // Invalid browser image.
-#define ERR_DIV_BY_ZERO -1074395270 // Cannot divide by zero.
-#define ERR_NULL_POINTER -1074395269 // Null pointer.
-#define ERR_LINEAR_COEFF -1074395268 // The linear equations are not independent.
-#define ERR_COMPLEX_ROOT -1074395267 // The roots of the equation are complex.
-#define ERR_BARCODE -1074395265 // The barcode does not match the type you specified.
-#define ERR_LCD_NO_SEGMENTS -1074395263 // No lit segment.
-#define ERR_LCD_BAD_MATCH -1074395262 // The LCD does not form a known digit.
-#define ERR_GIP_RANGE -1074395261 // An internal error occurred while attempting to access an invalid coordinate on an image.
-#define ERR_HEAP_TRASHED -1074395260 // An internal memory error occurred.
-#define ERR_BAD_FILTER_WIDTH -1074395258 // The filter width must be odd for the Canny operator.
-#define ERR_INVALID_EDGE_DIR -1074395257 // You supplied an invalid edge direction in the Canny operator.
-#define ERR_EVEN_WINDOW_SIZE -1074395256 // The window size must be odd for the Canny operator.
-#define ERR_INVALID_LEARN_MODE -1074395253 // Invalid learn mode.
-#define ERR_LEARN_SETUP_DATA -1074395252 // Invalid learn setup data.
-#define ERR_INVALID_MATCH_MODE -1074395251 // Invalid match mode.
-#define ERR_MATCH_SETUP_DATA -1074395250 // Invalid match setup data.
-#define ERR_ROTATION_ANGLE_RANGE_TOO_LARGE -1074395249 // At least one range in the array of rotation angle ranges exceeds 360 degrees.
-#define ERR_TOO_MANY_ROTATION_ANGLE_RANGES -1074395248 // The array of rotation angle ranges contains too many ranges.
-#define ERR_TEMPLATE_DESCRIPTOR -1074395247 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_1 -1074395246 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_2 -1074395245 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_3 -1074395244 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_4 -1074395243 // The template descriptor was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to use this template.
-#define ERR_TEMPLATE_DESCRIPTOR_ROTATION -1074395242 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_NOROTATION -1074395241 // The template descriptor does not contain data required for rotation-invariant matching.
-#define ERR_TEMPLATE_DESCRIPTOR_ROTATION_1 -1074395240 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_SHIFT -1074395239 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_NOSHIFT -1074395238 // The template descriptor does not contain data required for shift-invariant matching.
-#define ERR_TEMPLATE_DESCRIPTOR_SHIFT_1 -1074395237 // Invalid template descriptor.
-#define ERR_TEMPLATE_DESCRIPTOR_NOSCALE -1074395236 // The template descriptor does not contain data required for scale-invariant matching.
-#define ERR_TEMPLATE_IMAGE_CONTRAST_TOO_LOW -1074395235 // The template image does not contain enough contrast.
-#define ERR_TEMPLATE_IMAGE_TOO_SMALL -1074395234 // The template image is too small.
-#define ERR_TEMPLATE_IMAGE_TOO_LARGE -1074395233 // The template image is too large.
-#define ERR_TOO_MANY_OCR_SESSIONS -1074395214 // There are too many OCR sessions open. You must close a session before you can open another one.
-#define ERR_OCR_TEMPLATE_WRONG_SIZE -1074395212 // The size of the template string must match the size of the string you are trying to correct.
-#define ERR_OCR_BAD_TEXT_TEMPLATE -1074395211 // The supplied text template contains nonstandard characters that cannot be generated by OCR.
-#define ERR_OCR_CANNOT_MATCH_TEXT_TEMPLATE -1074395210 // At least one character in the text template was of a lexical class that did not match the supplied character reports.
-#define ERR_OCR_LIB_INIT -1074395203 // The OCR library cannot be initialized correctly.
-#define ERR_OCR_LOAD_LIBRARY -1074395201 // There was a failure when loading one of the internal OCR engine or LabView libraries.
-#define ERR_OCR_INVALID_PARAMETER -1074395200 // One of the parameters supplied to the OCR function that generated this error is invalid.
-#define ERR_MARKER_INFORMATION_NOT_SUPPLIED -1074395199 // Marker image and points are not supplied
-#define ERR_INCOMPATIBLE_MARKER_IMAGE_SIZE -1074395198 // Source Image and Marker Image should be of same size.
-#define ERR_BOTH_MARKER_INPUTS_SUPPLIED -1074395197 // Both Marker Image and Points are supplied.
-#define ERR_INVALID_MORPHOLOGICAL_OPERATION -1074395196 // Invalid Morphological Operation.
-#define ERR_IMAGE_CONTAINS_NAN_VALUES -1074395195 // Float image contains NaN values
-#define ERR_OVERLAY_EXTRAINFO_OPENING_NEW_VERSION -1074395194 // The overlay information you tried to open was created with a newer version of NI Vision. Upgrade to the latest version of NI Vision to read this file.
-#define ERR_NO_CLAMP_FOUND -1074395193 // No valid clamp was found with the current configuration
-#define ERR_NO_CLAMP_WITHIN_ANGLE_RANGE -1074395192 // Supplied angle range for clamp is insufficient
-#define ERR_GHT_INVALID_USE_ALL_CURVES_VALUE -1074395188 // The use all curves advanced option specified during learn is not supported
-#define ERR_INVALID_GAUSS_SIGMA_VALUE -1074395187 // The sigma value specified for the Gaussian filter is too small.
-#define ERR_INVALID_GAUSS_FILTER_TYPE -1074395186 // The specified Gaussian filter type is not supported.
-#define ERR_INVALID_CONTRAST_REVERSAL_MODE -1074395185 // The contrast reversal mode specified during matching is invalid.
-#define ERR_INVALID_ROTATION_RANGE -1074395184 // Invalid roation angle range. The upper bound must be greater than or equal to the lower bound.
-#define ERR_GHT_INVALID_MINIMUM_LEARN_ANGLE_VALUE -1074395183 // The minimum rotation angle value specifed during learning of the template is not supported.
-#define ERR_GHT_INVALID_MAXIMUM_LEARN_ANGLE_VALUE -1074395182 // The maximum rotation angle value specifed during learning of the template is not supported.
-#define ERR_GHT_INVALID_MAXIMUM_LEARN_SCALE_FACTOR -1074395181 // The maximum scale factor specifed during learning of the template is not supported.
-#define ERR_GHT_INVALID_MINIMUM_LEARN_SCALE_FACTOR -1074395180 // The minimum scale factor specifed during learning of the template is not supported.
-#define ERR_OCR_PREPROCESSING_FAILED -1074395179 // The OCR engine failed during the preprocessing stage.
-#define ERR_OCR_RECOGNITION_FAILED -1074395178 // The OCR engine failed during the recognition stage.
-#define ERR_OCR_BAD_USER_DICTIONARY -1074395175 // The provided filename is not valid user dictionary filename.
-#define ERR_OCR_INVALID_AUTOORIENTMODE -1074395174 // NI Vision does not support the AutoOrientMode value you supplied.
-#define ERR_OCR_INVALID_LANGUAGE -1074395173 // NI Vision does not support the Language value you supplied.
-#define ERR_OCR_INVALID_CHARACTERSET -1074395172 // NI Vision does not support the CharacterSet value you supplied.
-#define ERR_OCR_INI_FILE_NOT_FOUND -1074395171 // The system could not locate the initialization file required for OCR initialization.
-#define ERR_OCR_INVALID_CHARACTERTYPE -1074395170 // NI Vision does not support the CharacterType value you supplied.
-#define ERR_OCR_INVALID_RECOGNITIONMODE -1074395169 // NI Vision does not support the RecognitionMode value you supplied.
-#define ERR_OCR_INVALID_AUTOCORRECTIONMODE -1074395168 // NI Vision does not support the AutoCorrectionMode value you supplied.
-#define ERR_OCR_INVALID_OUTPUTDELIMITER -1074395167 // NI Vision does not support the OutputDelimiter value you supplied.
-#define ERR_OCR_BIN_DIR_NOT_FOUND -1074395166 // The system could not locate the OCR binary directory required for OCR initialization.
-#define ERR_OCR_WTS_DIR_NOT_FOUND -1074395165 // The system could not locate the OCR weights directory required for OCR initialization.
-#define ERR_OCR_ADD_WORD_FAILED -1074395164 // The supplied word could not be added to the user dictionary.
-#define ERR_OCR_INVALID_CHARACTERPREFERENCE -1074395163 // NI Vision does not support the CharacterPreference value you supplied.
-#define ERR_OCR_INVALID_CORRECTIONMODE -1074395162 // NI Vision does not support the CorrectionMethod value you supplied.
-#define ERR_OCR_INVALID_CORRECTIONLEVEL -1074395161 // NI Vision does not support the CorrectionLevel value you supplied.
-#define ERR_OCR_INVALID_MAXPOINTSIZE -1074395160 // NI Vision does not support the maximum point size you supplied. Valid values range from 4 to 72.
-#define ERR_OCR_INVALID_TOLERANCE -1074395159 // NI Vision does not support the tolerance value you supplied. Valid values are non-negative.
-#define ERR_OCR_INVALID_CONTRASTMODE -1074395158 // NI Vision does not support the ContrastMode value you supplied.
-#define ERR_OCR_SKEW_DETECT_FAILED -1074395156 // The OCR attempted to detected the text skew and failed.
-#define ERR_OCR_ORIENT_DETECT_FAILED -1074395155 // The OCR attempted to detected the text orientation and failed.
-#define ERR_FONT_FILE_FORMAT -1074395153 // Invalid font file format.
-#define ERR_FONT_FILE_NOT_FOUND -1074395152 // Font file not found.
-#define ERR_OCR_CORRECTION_FAILED -1074395151 // The OCR engine failed during the correction stage.
-#define ERR_INVALID_ROUNDING_MODE -1074395150 // NI Vision does not support the RoundingMode value you supplied.
-#define ERR_DUPLICATE_TRANSFORM_TYPE -1074395149 // Found a duplicate transform type in the properties array. Each properties array may only contain one behavior for each transform type.
-#define ERR_OVERLAY_GROUP_NOT_FOUND -1074395148 // Overlay Group Not Found.
-#define ERR_BARCODE_RSSLIMITED -1074395147 // The barcode is not a valid RSS Limited symbol
-#define ERR_QR_DETECTION_VERSION -1074395146 // Couldn't determine the correct version of the QR code.
-#define ERR_QR_INVALID_READ -1074395145 // Invalid read of the QR code.
-#define ERR_QR_INVALID_BARCODE -1074395144 // The barcode that was read contains invalid parameters.
-#define ERR_QR_DETECTION_MODE -1074395143 // The data stream that was demodulated could not be read because the mode was not detected.
-#define ERR_QR_DETECTION_MODELTYPE -1074395142 // Couldn't determine the correct model of the QR code.
-#define ERR_OCR_NO_TEXT_FOUND -1074395141 // The OCR engine could not find any text in the supplied region.
-#define ERR_OCR_CHAR_REPORT_CORRUPTED -1074395140 // One of the character reports is no longer usable by the system.
-#define ERR_IMAQ_QR_DIMENSION_INVALID -1074395139 // Invalid Dimensions.
-#define ERR_OCR_REGION_TOO_SMALL -1074395138 // The OCR region provided was too small to have contained any characters.
-#define _FIRST_ERR ERR_SYSTEM_ERROR
-#define _LAST_ERR ERR_OCR_REGION_TOO_SMALL
-
-//============================================================================
-// Enumerated Types
-//============================================================================
-typedef enum PointSymbol_enum {
- IMAQ_POINT_AS_PIXEL = 0, //A single pixel represents a point in the overlay.
- IMAQ_POINT_AS_CROSS = 1, //A cross represents a point in the overlay.
- IMAQ_POINT_USER_DEFINED = 2, //The pattern supplied by the user represents a point in the overlay.
- IMAQ_POINT_SYMBOL_SIZE_GUARD = 0xFFFFFFFF
-} PointSymbol;
-
-typedef enum MeasurementValue_enum {
- IMAQ_AREA = 0, //Surface area of the particle in pixels.
- IMAQ_AREA_CALIBRATED = 1, //Surface area of the particle in calibrated units.
- IMAQ_NUM_HOLES = 2, //Number of holes in the particle.
- IMAQ_AREA_OF_HOLES = 3, //Surface area of the holes in calibrated units.
- IMAQ_TOTAL_AREA = 4, //Total surface area (holes and particle) in calibrated units.
- IMAQ_IMAGE_AREA = 5, //Surface area of the entire image in calibrated units.
- IMAQ_PARTICLE_TO_IMAGE = 6, //Ratio, expressed as a percentage, of the surface area of a particle in relation to the total area of the particle.
- IMAQ_PARTICLE_TO_TOTAL = 7, //Ratio, expressed as a percentage, of the surface area of a particle in relation to the total area of the particle.
- IMAQ_CENTER_MASS_X = 8, //X-coordinate of the center of mass.
- IMAQ_CENTER_MASS_Y = 9, //Y-coordinate of the center of mass.
- IMAQ_LEFT_COLUMN = 10, //Left edge of the bounding rectangle.
- IMAQ_TOP_ROW = 11, //Top edge of the bounding rectangle.
- IMAQ_RIGHT_COLUMN = 12, //Right edge of the bounding rectangle.
- IMAQ_BOTTOM_ROW = 13, //Bottom edge of bounding rectangle.
- IMAQ_WIDTH = 14, //Width of bounding rectangle in calibrated units.
- IMAQ_HEIGHT = 15, //Height of bounding rectangle in calibrated units.
- IMAQ_MAX_SEGMENT_LENGTH = 16, //Length of longest horizontal line segment.
- IMAQ_MAX_SEGMENT_LEFT_COLUMN = 17, //Leftmost x-coordinate of longest horizontal line segment.
- IMAQ_MAX_SEGMENT_TOP_ROW = 18, //Y-coordinate of longest horizontal line segment.
- IMAQ_PERIMETER = 19, //Outer perimeter of the particle.
- IMAQ_PERIMETER_OF_HOLES = 20, //Perimeter of all holes within the particle.
- IMAQ_SIGMA_X = 21, //Sum of the particle pixels on the x-axis.
- IMAQ_SIGMA_Y = 22, //Sum of the particle pixels on the y-axis.
- IMAQ_SIGMA_XX = 23, //Sum of the particle pixels on the x-axis squared.
- IMAQ_SIGMA_YY = 24, //Sum of the particle pixels on the y-axis squared.
- IMAQ_SIGMA_XY = 25, //Sum of the particle pixels on the x-axis and y-axis.
- IMAQ_PROJ_X = 26, //Projection corrected in X.
- IMAQ_PROJ_Y = 27, //Projection corrected in Y.
- IMAQ_INERTIA_XX = 28, //Inertia matrix coefficient in XX.
- IMAQ_INERTIA_YY = 29, //Inertia matrix coefficient in YY.
- IMAQ_INERTIA_XY = 30, //Inertia matrix coefficient in XY.
- IMAQ_MEAN_H = 31, //Mean length of horizontal segments.
- IMAQ_MEAN_V = 32, //Mean length of vertical segments.
- IMAQ_MAX_INTERCEPT = 33, //Length of longest segment of the convex hull.
- IMAQ_MEAN_INTERCEPT = 34, //Mean length of the chords in an object perpendicular to its max intercept.
- IMAQ_ORIENTATION = 35, //The orientation based on the inertia of the pixels in the particle.
- IMAQ_EQUIV_ELLIPSE_MINOR = 36, //Total length of the axis of the ellipse having the same area as the particle and a major axis equal to half the max intercept.
- IMAQ_ELLIPSE_MAJOR = 37, //Total length of major axis having the same area and perimeter as the particle in calibrated units.
- IMAQ_ELLIPSE_MINOR = 38, //Total length of minor axis having the same area and perimeter as the particle in calibrated units.
- IMAQ_ELLIPSE_RATIO = 39, //Fraction of major axis to minor axis.
- IMAQ_RECT_LONG_SIDE = 40, //Length of the long side of a rectangle having the same area and perimeter as the particle in calibrated units.
- IMAQ_RECT_SHORT_SIDE = 41, //Length of the short side of a rectangle having the same area and perimeter as the particle in calibrated units.
- IMAQ_RECT_RATIO = 42, //Ratio of rectangle long side to rectangle short side.
- IMAQ_ELONGATION = 43, //Max intercept/mean perpendicular intercept.
- IMAQ_COMPACTNESS = 44, //Particle area/(height x width).
- IMAQ_HEYWOOD = 45, //Particle perimeter/perimeter of the circle having the same area as the particle.
- IMAQ_TYPE_FACTOR = 46, //A complex factor relating the surface area to the moment of inertia.
- IMAQ_HYDRAULIC = 47, //Particle area/particle perimeter.
- IMAQ_WADDLE_DISK = 48, //Diameter of the disk having the same area as the particle in user units.
- IMAQ_DIAGONAL = 49, //Diagonal of an equivalent rectangle in user units.
- IMAQ_MEASUREMENT_VALUE_SIZE_GUARD = 0xFFFFFFFF
-} MeasurementValue;
-
-typedef enum ScalingMode_enum {
- IMAQ_SCALE_LARGER = 0, //The function duplicates pixels to make the image larger.
- IMAQ_SCALE_SMALLER = 1, //The function subsamples pixels to make the image smaller.
- IMAQ_SCALING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ScalingMode;
-
-typedef enum ScalingMethod_enum {
- IMAQ_SCALE_TO_PRESERVE_AREA = 0, //Correction functions scale the image such that the features in the corrected image have the same area as the features in the input image.
- IMAQ_SCALE_TO_FIT = 1, //Correction functions scale the image such that the corrected image is the same size as the input image.
- IMAQ_SCALING_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} ScalingMethod;
-
-typedef enum ReferenceMode_enum {
- IMAQ_COORD_X_Y = 0, //This method requires three elements in the points array.
- IMAQ_COORD_ORIGIN_X = 1, //This method requires two elements in the points array.
- IMAQ_REFERENCE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ReferenceMode;
-
-typedef enum RectOrientation_enum {
- IMAQ_BASE_INSIDE = 0, //Specifies that the base of the rectangular image lies along the inside edge of the annulus.
- IMAQ_BASE_OUTSIDE = 1, //Specifies that the base of the rectangular image lies along the outside edge of the annulus.
- IMAQ_TEXT_ORIENTATION_SIZE_GUARD = 0xFFFFFFFF
-} RectOrientation;
-
-typedef enum ShapeMode_enum {
- IMAQ_SHAPE_RECT = 1, //The function draws a rectangle.
- IMAQ_SHAPE_OVAL = 2, //The function draws an oval.
- IMAQ_SHAPE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ShapeMode;
-
-typedef enum PolarityType_enum {
- IMAQ_EDGE_RISING = 1, //The edge is a rising edge.
- IMAQ_EDGE_FALLING = -1, //The edge is a falling edge.
- IMAQ_POLARITY_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} PolarityType;
-
-typedef enum SizeType_enum {
- IMAQ_KEEP_LARGE = 0, //The function keeps large particles remaining after the erosion.
- IMAQ_KEEP_SMALL = 1, //The function keeps small particles eliminated by the erosion.
- IMAQ_SIZE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} SizeType;
-
-typedef enum Plane3D_enum {
- IMAQ_3D_REAL = 0, //The function shows the real part of complex images.
- IMAQ_3D_IMAGINARY = 1, //The function shows the imaginary part of complex images.
- IMAQ_3D_MAGNITUDE = 2, //The function shows the magnitude part of complex images.
- IMAQ_3D_PHASE = 3, //The function shows the phase part of complex images.
- IMAQ_PLANE_3D_SIZE_GUARD = 0xFFFFFFFF
-} Plane3D;
-
-typedef enum PhotometricMode_enum {
- IMAQ_WHITE_IS_ZERO = 0, //The function interprets zero-value pixels as white.
- IMAQ_BLACK_IS_ZERO = 1, //The function interprets zero-value pixels as black.
- IMAQ_PHOTOMETRIC_MODE_SIZE_GUARD = 0xFFFFFFFF
-} PhotometricMode;
-
-typedef enum ParticleInfoMode_enum {
- IMAQ_BASIC_INFO = 0, //The function returns only the following elements of each report: area, calibratedArea, boundingRect.
- IMAQ_ALL_INFO = 1, //The function returns all the information about each particle.
- IMAQ_PARTICLE_INFO_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ParticleInfoMode;
-
-typedef enum OutlineMethod_enum {
- IMAQ_EDGE_DIFFERENCE = 0, //The function uses a method that produces continuous contours by highlighting each pixel where an intensity variation occurs between itself and its three upper-left neighbors.
- IMAQ_EDGE_GRADIENT = 1, //The function uses a method that outlines contours where an intensity variation occurs along the vertical axis.
- IMAQ_EDGE_PREWITT = 2, //The function uses a method that extracts the outer contours of objects.
- IMAQ_EDGE_ROBERTS = 3, //The function uses a method that outlines the contours that highlight pixels where an intensity variation occurs along the diagonal axes.
- IMAQ_EDGE_SIGMA = 4, //The function uses a method that outlines contours and details by setting pixels to the mean value found in their neighborhood, if their deviation from this value is not significant.
- IMAQ_EDGE_SOBEL = 5, //The function uses a method that extracts the outer contours of objects.
- IMAQ_OUTLINE_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} OutlineMethod;
-
-typedef enum MorphologyMethod_enum {
- IMAQ_AUTOM = 0, //The function uses a transformation that generates simpler particles that contain fewer details.
- IMAQ_CLOSE = 1, //The function uses a transformation that fills tiny holes and smooths boundaries.
- IMAQ_DILATE = 2, //The function uses a transformation that eliminates tiny holes isolated in particles and expands the contour of the particles according to the template defined by the structuring element.
- IMAQ_ERODE = 3, //The function uses a transformation that eliminates pixels isolated in the background and erodes the contour of particles according to the template defined by the structuring element.
- IMAQ_GRADIENT = 4, //The function uses a transformation that leaves only the pixels that would be added by the dilation process or eliminated by the erosion process.
- IMAQ_GRADIENTOUT = 5, //The function uses a transformation that leaves only the pixels that would be added by the dilation process.
- IMAQ_GRADIENTIN = 6, //The function uses a transformation that leaves only the pixels that would be eliminated by the erosion process.
- IMAQ_HITMISS = 7, //The function uses a transformation that extracts each pixel located in a neighborhood exactly matching the template defined by the structuring element.
- IMAQ_OPEN = 8, //The function uses a transformation that removes small particles and smooths boundaries.
- IMAQ_PCLOSE = 9, //The function uses a transformation that fills tiny holes and smooths the inner contour of particles according to the template defined by the structuring element.
- IMAQ_POPEN = 10, //The function uses a transformation that removes small particles and smooths the contour of particles according to the template defined by the structuring element.
- IMAQ_THICK = 11, //The function uses a transformation that adds to an image those pixels located in a neighborhood that matches a template specified by the structuring element.
- IMAQ_THIN = 12, //The function uses a transformation that eliminates pixels that are located in a neighborhood matching a template specified by the structuring element.
- IMAQ_MORPHOLOGY_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} MorphologyMethod;
-
-typedef enum MeterArcMode_enum {
- IMAQ_METER_ARC_ROI = 0, //The function uses the roi parameter and ignores the base, start, and end parameters.
- IMAQ_METER_ARC_POINTS = 1, //The function uses the base,start, and end parameters and ignores the roi parameter.
- IMAQ_METER_ARC_MODE_SIZE_GUARD = 0xFFFFFFFF
-} MeterArcMode;
-
-typedef enum RakeDirection_enum {
- IMAQ_LEFT_TO_RIGHT = 0, //The function searches from the left side of the search area to the right side of the search area.
- IMAQ_RIGHT_TO_LEFT = 1, //The function searches from the right side of the search area to the left side of the search area.
- IMAQ_TOP_TO_BOTTOM = 2, //The function searches from the top side of the search area to the bottom side of the search area.
- IMAQ_BOTTOM_TO_TOP = 3, //The function searches from the bottom side of the search area to the top side of the search area.
- IMAQ_RAKE_DIRECTION_SIZE_GUARD = 0xFFFFFFFF
-} RakeDirection;
-
-typedef enum TruncateMode_enum {
- IMAQ_TRUNCATE_LOW = 0, //The function truncates low frequencies.
- IMAQ_TRUNCATE_HIGH = 1, //The function truncates high frequencies.
- IMAQ_TRUNCATE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} TruncateMode;
-
-typedef enum AttenuateMode_enum {
- IMAQ_ATTENUATE_LOW = 0, //The function attenuates low frequencies.
- IMAQ_ATTENUATE_HIGH = 1, //The function attenuates high frequencies.
- IMAQ_ATTENUATE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} AttenuateMode;
-
-typedef enum WindowThreadPolicy_enum {
- IMAQ_CALLING_THREAD = 0, //Using this policy, NI Vision creates windows in the thread that makes the first display function call for a given window number.
- IMAQ_SEPARATE_THREAD = 1, //Using this policy, NI Vision creates windows in a separate thread and processes messages for the windows automatically.
- IMAQ_WINDOW_THREAD_POLICY_SIZE_GUARD = 0xFFFFFFFF
-} WindowThreadPolicy;
-
-typedef enum WindowOptions_enum {
- IMAQ_WIND_RESIZABLE = 1, //When present, the user may resize the window interactively.
- IMAQ_WIND_TITLEBAR = 2, //When present, the title bar on the window is visible.
- IMAQ_WIND_CLOSEABLE = 4, //When present, the close box is available.
- IMAQ_WIND_TOPMOST = 8, //When present, the window is always on top.
- IMAQ_WINDOW_OPTIONS_SIZE_GUARD = 0xFFFFFFFF
-} WindowOptions;
-
-typedef enum WindowEventType_enum {
- IMAQ_NO_EVENT = 0, //No event occurred since the last call to imaqGetLastEvent().
- IMAQ_CLICK_EVENT = 1, //The user clicked on a window.
- IMAQ_DRAW_EVENT = 2, //The user drew an ROI in a window.
- IMAQ_MOVE_EVENT = 3, //The user moved a window.
- IMAQ_SIZE_EVENT = 4, //The user sized a window.
- IMAQ_SCROLL_EVENT = 5, //The user scrolled a window.
- IMAQ_ACTIVATE_EVENT = 6, //The user activated a window.
- IMAQ_CLOSE_EVENT = 7, //The user closed a window.
- IMAQ_DOUBLE_CLICK_EVENT = 8, //The user double-clicked in a window.
- IMAQ_WINDOW_EVENT_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} WindowEventType;
-
-typedef enum VisionInfoType_enum {
- IMAQ_ANY_VISION_INFO = 0, //The function checks if any extra vision information is associated with the image.
- IMAQ_PATTERN_MATCHING_INFO = 1, //The function checks if any pattern matching template information is associated with the image.
- IMAQ_CALIBRATION_INFO = 2, //The function checks if any calibration information is associated with the image.
- IMAQ_OVERLAY_INFO = 3, //The function checks if any overlay information is associated with the image.
- IMAQ_VISION_INFO_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} VisionInfoType;
-
-typedef enum SearchStrategy_enum {
- IMAQ_CONSERVATIVE = 1, //Instructs the pattern matching algorithm to use the largest possible amount of information from the image at the expense of slowing down the speed of the algorithm.
- IMAQ_BALANCED = 2, //Instructs the pattern matching algorithm to balance the amount of information from the image it uses with the speed of the algorithm.
- IMAQ_AGGRESSIVE = 3, //Instructs the pattern matching algorithm to use a lower amount of information from the image, which allows the algorithm to run quickly but at the expense of accuracy.
- IMAQ_VERY_AGGRESSIVE = 4, //Instructs the pattern matching algorithm to use the smallest possible amount of information from the image, which allows the algorithm to run at the highest speed possible but at the expense of accuracy.
- IMAQ_SEARCH_STRATEGY_SIZE_GUARD = 0xFFFFFFFF
-} SearchStrategy;
-
-typedef enum TwoEdgePolarityType_enum {
- IMAQ_NONE = 0, //The function ignores the polarity of the edges.
- IMAQ_RISING_FALLING = 1, //The polarity of the first edge is rising (dark to light) and the polarity of the second edge is falling (light to dark).
- IMAQ_FALLING_RISING = 2, //The polarity of the first edge is falling (light to dark) and the polarity of the second edge is rising (dark to light).
- IMAQ_RISING_RISING = 3, //The polarity of the first edge is rising (dark to light) and the polarity of the second edge is rising (dark to light).
- IMAQ_FALLING_FALLING = 4, //The polarity of the first edge is falling (light to dark) and the polarity of the second edge is falling (light to dark).
- IMAQ_TWO_EDGE_POLARITY_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} TwoEdgePolarityType;
-
-typedef enum ObjectType_enum {
- IMAQ_BRIGHT_OBJECTS = 0, //The function detects bright objects.
- IMAQ_DARK_OBJECTS = 1, //The function detects dark objects.
- IMAQ_OBJECT_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ObjectType;
-
-typedef enum Tool_enum {
- IMAQ_NO_TOOL = -1, //No tool is in the selected state.
- IMAQ_SELECTION_TOOL = 0, //The selection tool selects an existing ROI in an image.
- IMAQ_POINT_TOOL = 1, //The point tool draws a point on the image.
- IMAQ_LINE_TOOL = 2, //The line tool draws a line on the image.
- IMAQ_RECTANGLE_TOOL = 3, //The rectangle tool draws a rectangle on the image.
- IMAQ_OVAL_TOOL = 4, //The oval tool draws an oval on the image.
- IMAQ_POLYGON_TOOL = 5, //The polygon tool draws a polygon on the image.
- IMAQ_CLOSED_FREEHAND_TOOL = 6, //The closed freehand tool draws closed freehand shapes on the image.
- IMAQ_ANNULUS_TOOL = 7, //The annulus tool draws annuluses on the image.
- IMAQ_ZOOM_TOOL = 8, //The zoom tool controls the zoom of an image.
- IMAQ_PAN_TOOL = 9, //The pan tool shifts the view of the image.
- IMAQ_POLYLINE_TOOL = 10, //The polyline tool draws a series of connected straight lines on the image.
- IMAQ_FREEHAND_TOOL = 11, //The freehand tool draws freehand lines on the image.
- IMAQ_ROTATED_RECT_TOOL = 12, //The rotated rectangle tool draws rotated rectangles on the image.
- IMAQ_ZOOM_OUT_TOOL = 13, //The zoom out tool controls the zoom of an image.
- IMAQ_TOOL_SIZE_GUARD = 0xFFFFFFFF
-} Tool;
-
-typedef enum TIFFCompressionType_enum {
- IMAQ_NO_COMPRESSION = 0, //The function does not compress the TIFF file.
- IMAQ_JPEG = 1, //The function uses the JPEG compression algorithm to compress the TIFF file.
- IMAQ_RUN_LENGTH = 2, //The function uses a run length compression algorithm to compress the TIFF file.
- IMAQ_ZIP = 3, //The function uses the ZIP compression algorithm to compress the TIFF file.
- IMAQ_TIFF_COMPRESSION_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} TIFFCompressionType;
-
-typedef enum ThresholdMethod_enum {
- IMAQ_THRESH_CLUSTERING = 0, //The function uses a method that sorts the histogram of the image within a discrete number of classes corresponding to the number of phases perceived in an image.
- IMAQ_THRESH_ENTROPY = 1, //The function uses a method that is best for detecting particles that are present in minuscule proportions on the image.
- IMAQ_THRESH_METRIC = 2, //The function uses a method that is well-suited for images in which classes are not too disproportionate.
- IMAQ_THRESH_MOMENTS = 3, //The function uses a method that is suited for images that have poor contrast.
- IMAQ_THRESH_INTERCLASS = 4, //The function uses a method that is well-suited for images in which classes have well separated pixel value distributions.
- IMAQ_THRESHOLD_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} ThresholdMethod;
-
-typedef enum TextAlignment_enum {
- IMAQ_LEFT = 0, //Left aligns the text at the reference point.
- IMAQ_CENTER = 1, //Centers the text around the reference point.
- IMAQ_RIGHT = 2, //Right aligns the text at the reference point.
- IMAQ_TEXT_ALIGNMENT_SIZE_GUARD = 0xFFFFFFFF
-} TextAlignment;
-
-typedef enum SpokeDirection_enum {
- IMAQ_OUTSIDE_TO_INSIDE = 0, //The function searches from the outside of the search area to the inside of the search area.
- IMAQ_INSIDE_TO_OUTSIDE = 1, //The function searches from the inside of the search area to the outside of the search area.
- IMAQ_SPOKE_DIRECTION_SIZE_GUARD = 0xFFFFFFFF
-} SpokeDirection;
-
-typedef enum SkeletonMethod_enum {
- IMAQ_SKELETON_L = 0, //Uses an L-shaped structuring element in the skeleton function.
- IMAQ_SKELETON_M = 1, //Uses an M-shaped structuring element in the skeleton function.
- IMAQ_SKELETON_INVERSE = 2, //Uses an L-shaped structuring element on an inverse of the image in the skeleton function.
- IMAQ_SKELETON_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} SkeletonMethod;
-
-typedef enum VerticalTextAlignment_enum {
- IMAQ_BOTTOM = 0, //Aligns the bottom of the text at the reference point.
- IMAQ_TOP = 1, //Aligns the top of the text at the reference point.
- IMAQ_BASELINE = 2, //Aligns the baseline of the text at the reference point.
- IMAQ_VERTICAL_TEXT_ALIGNMENT_SIZE_GUARD = 0xFFFFFFFF
-} VerticalTextAlignment;
-
-typedef enum CalibrationROI_enum {
- IMAQ_FULL_IMAGE = 0, //The correction function corrects the whole image, regardless of the user-defined or calibration-defined ROIs.
- IMAQ_CALIBRATION_ROI = 1, //The correction function corrects the area defined by the calibration ROI.
- IMAQ_USER_ROI = 2, //The correction function corrects the area defined by the user-defined ROI.
- IMAQ_CALIBRATION_AND_USER_ROI = 3, //The correction function corrects the area defined by the intersection of the user-defined ROI and the calibration ROI.
- IMAQ_CALIBRATION_OR_USER_ROI = 4, //The correction function corrects the area defined by the union of the user-defined ROI and the calibration ROI.
- IMAQ_CALIBRATION_ROI_SIZE_GUARD = 0xFFFFFFFF
-} CalibrationROI;
-
-typedef enum ContourType_enum {
- IMAQ_EMPTY_CONTOUR = 0, //The contour is empty.
- IMAQ_POINT = 1, //The contour represents a point.
- IMAQ_LINE = 2, //The contour represents a line.
- IMAQ_RECT = 3, //The contour represents a rectangle.
- IMAQ_OVAL = 4, //The contour represents an oval.
- IMAQ_CLOSED_CONTOUR = 5, //The contour represents a series of connected points where the last point connects to the first.
- IMAQ_OPEN_CONTOUR = 6, //The contour represents a series of connected points where the last point does not connect to the first.
- IMAQ_ANNULUS = 7, //The contour represents an annulus.
- IMAQ_ROTATED_RECT = 8, //The contour represents a rotated rectangle.
- IMAQ_CONTOUR_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ContourType;
-
-typedef enum MathTransformMethod_enum {
- IMAQ_TRANSFORM_LINEAR = 0, //The function uses linear remapping.
- IMAQ_TRANSFORM_LOG = 1, //The function uses logarithmic remapping.
- IMAQ_TRANSFORM_EXP = 2, //The function uses exponential remapping.
- IMAQ_TRANSFORM_SQR = 3, //The function uses square remapping.
- IMAQ_TRANSFORM_SQRT = 4, //The function uses square root remapping.
- IMAQ_TRANSFORM_POWX = 5, //The function uses power X remapping.
- IMAQ_TRANSFORM_POW1X = 6, //The function uses power 1/X remapping.
- IMAQ_MATH_TRANSFORM_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} MathTransformMethod;
-
-typedef enum ComplexPlane_enum {
- IMAQ_REAL = 0, //The function operates on the real plane of the complex image.
- IMAQ_IMAGINARY = 1, //The function operates on the imaginary plane of the complex image.
- IMAQ_MAGNITUDE = 2, //The function operates on the magnitude plane of the complex image.
- IMAQ_PHASE = 3, //The function operates on the phase plane of the complex image.
- IMAQ_COMPLEX_PLANE_SIZE_GUARD = 0xFFFFFFFF
-} ComplexPlane;
-
-typedef enum PaletteType_enum {
- IMAQ_PALETTE_GRAY = 0, //The function uses a palette that has a gradual gray-level variation from black to white.
- IMAQ_PALETTE_BINARY = 1, //The function uses a palette of 16 cycles of 16 different colors that is useful with binary images.
- IMAQ_PALETTE_GRADIENT = 2, //The function uses a palette that has a gradation from red to white with a prominent range of light blue in the upper value range.
- IMAQ_PALETTE_RAINBOW = 3, //The function uses a palette that has a gradation from blue to red with a prominent range of greens in the middle value range.
- IMAQ_PALETTE_TEMPERATURE = 4, //The function uses a palette that has a gradation from light brown to dark brown.
- IMAQ_PALETTE_USER = 5, //The function uses a palette defined by the user.
- IMAQ_PALETTE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} PaletteType;
-
-typedef enum ColorSensitivity_enum {
- IMAQ_SENSITIVITY_LOW = 0, //Instructs the algorithm to divide the hue plane into a low number of sectors, allowing for simple color analysis.
- IMAQ_SENSITIVITY_MED = 1, //Instructs the algorithm to divide the hue plane into a medium number of sectors, allowing for color analysis that balances sensitivity and complexity.
- IMAQ_SENSITIVITY_HIGH = 2, //Instructs the algorithm to divide the hue plane into a high number of sectors, allowing for complex, sensitive color analysis.
- IMAQ_COLOR_SENSITIVITY_SIZE_GUARD = 0xFFFFFFFF
-} ColorSensitivity;
-
-typedef enum ColorMode_enum {
- IMAQ_RGB = 0, //The function operates in the RGB (Red, Blue, Green) color space.
- IMAQ_HSL = 1, //The function operates in the HSL (Hue, Saturation, Luminance) color space.
- IMAQ_HSV = 2, //The function operates in the HSV (Hue, Saturation, Value) color space.
- IMAQ_HSI = 3, //The function operates in the HSI (Hue, Saturation, Intensity) color space.
- IMAQ_CIE = 4, //The function operates in the CIE L*a*b* color space.
- IMAQ_CIEXYZ = 5, //The function operates in the CIE XYZ color space.
- IMAQ_COLOR_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ColorMode;
-
-typedef enum DetectionMode_enum {
- IMAQ_DETECT_PEAKS = 0, //The function detects peaks.
- IMAQ_DETECT_VALLEYS = 1, //The function detects valleys.
- IMAQ_DETECTION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DetectionMode;
-
-typedef enum CalibrationUnit_enum {
- IMAQ_UNDEFINED = 0, //The image does not have a defined unit of measurement.
- IMAQ_ANGSTROM = 1, //The unit of measure for the image is angstroms.
- IMAQ_MICROMETER = 2, //The unit of measure for the image is micrometers.
- IMAQ_MILLIMETER = 3, //The unit of measure for the image is millimeters.
- IMAQ_CENTIMETER = 4, //The unit of measure for the image is centimeters.
- IMAQ_METER = 5, //The unit of measure for the image is meters.
- IMAQ_KILOMETER = 6, //The unit of measure for the image is kilometers.
- IMAQ_MICROINCH = 7, //The unit of measure for the image is microinches.
- IMAQ_INCH = 8, //The unit of measure for the image is inches.
- IMAQ_FOOT = 9, //The unit of measure for the image is feet.
- IMAQ_NAUTICMILE = 10, //The unit of measure for the image is nautical miles.
- IMAQ_GROUNDMILE = 11, //The unit of measure for the image is ground miles.
- IMAQ_STEP = 12, //The unit of measure for the image is steps.
- IMAQ_CALIBRATION_UNIT_SIZE_GUARD = 0xFFFFFFFF
-} CalibrationUnit;
-
-typedef enum ConcentricRakeDirection_enum {
- IMAQ_COUNTER_CLOCKWISE = 0, //The function searches the search area in a counter-clockwise direction.
- IMAQ_CLOCKWISE = 1, //The function searches the search area in a clockwise direction.
- IMAQ_CONCENTRIC_RAKE_DIRECTION_SIZE_GUARD = 0xFFFFFFFF
-} ConcentricRakeDirection;
-
-typedef enum CalibrationMode_enum {
- IMAQ_PERSPECTIVE = 0, //Functions correct for distortion caused by the camera's perspective.
- IMAQ_NONLINEAR = 1, //Functions correct for distortion caused by the camera's lens.
- IMAQ_SIMPLE_CALIBRATION = 2, //Functions do not correct for distortion.
- IMAQ_CORRECTED_IMAGE = 3, //The image is already corrected.
- IMAQ_CALIBRATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} CalibrationMode;
-
-typedef enum BrowserLocation_enum {
- IMAQ_INSERT_FIRST_FREE = 0, //Inserts the thumbnail in the first available cell.
- IMAQ_INSERT_END = 1, //Inserts the thumbnail after the last occupied cell.
- IMAQ_BROWSER_LOCATION_SIZE_GUARD = 0xFFFFFFFF
-} BrowserLocation;
-
-typedef enum BrowserFrameStyle_enum {
- IMAQ_RAISED_FRAME = 0, //Each thumbnail has a raised frame.
- IMAQ_BEVELLED_FRAME = 1, //Each thumbnail has a beveled frame.
- IMAQ_OUTLINE_FRAME = 2, //Each thumbnail has an outlined frame.
- IMAQ_HIDDEN_FRAME = 3, //Each thumbnail has a hidden frame.
- IMAQ_STEP_FRAME = 4, //Each thumbnail has a stepped frame.
- IMAQ_RAISED_OUTLINE_FRAME = 5, //Each thumbnail has a raised, outlined frame.
- IMAQ_BROWSER_FRAME_STYLE_SIZE_GUARD = 0xFFFFFFFF
-} BrowserFrameStyle;
-
-typedef enum BorderMethod_enum {
- IMAQ_BORDER_MIRROR = 0, //Symmetrically copies pixel values from the image into the border.
- IMAQ_BORDER_COPY = 1, //Copies the value of the pixel closest to the edge of the image into the border.
- IMAQ_BORDER_CLEAR = 2, //Sets all pixels in the border to 0.
- IMAQ_BORDER_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} BorderMethod;
-
-typedef enum BarcodeType_enum {
- IMAQ_INVALID = -1, //The barcode is not of a type known by NI Vision.
- IMAQ_CODABAR = 1, //The barcode is of type Codabar.
- IMAQ_CODE39 = 2, //The barcode is of type Code 39.
- IMAQ_CODE93 = 4, //The barcode is of type Code 93.
- IMAQ_CODE128 = 8, //The barcode is of type Code 128.
- IMAQ_EAN8 = 16, //The barcode is of type EAN 8.
- IMAQ_EAN13 = 32, //The barcode is of type EAN 13.
- IMAQ_I2_OF_5 = 64, //The barcode is of type Code 25.
- IMAQ_MSI = 128, //The barcode is of type MSI code.
- IMAQ_UPCA = 256, //The barcode is of type UPC A.
- IMAQ_PHARMACODE = 512, //The barcode is of type Pharmacode.
- IMAQ_RSS_LIMITED = 1024, //The barcode is of type RSS Limited.
- IMAQ_BARCODE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} BarcodeType;
-
-typedef enum AxisOrientation_enum {
- IMAQ_DIRECT = 0, //The y-axis direction corresponds to the y-axis direction of the Cartesian coordinate system.
- IMAQ_INDIRECT = 1, //The y-axis direction corresponds to the y-axis direction of an image.
- IMAQ_AXIS_ORIENTATION_SIZE_GUARD = 0xFFFFFFFF
-} AxisOrientation;
-
-typedef enum ColorIgnoreMode_enum {
- IMAQ_IGNORE_NONE = 0, //Specifies that the function does not ignore any pixels.
- IMAQ_IGNORE_BLACK = 1, //Specifies that the function ignores black pixels.
- IMAQ_IGNORE_WHITE = 2, //Specifies that the function ignores white pixels.
- IMAQ_IGNORE_BLACK_AND_WHITE = 3, //Specifies that the function ignores black pixels and white pixels.
- IMAQ_BLACK_WHITE_IGNORE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ColorIgnoreMode;
-
-typedef enum LevelType_enum {
- IMAQ_ABSOLUTE = 0, //The function evaluates the threshold and hysteresis values as absolute values.
- IMAQ_RELATIVE = 1, //The function evaluates the threshold and hysteresis values relative to the dynamic range of the given path.
- IMAQ_LEVEL_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} LevelType;
-
-typedef enum MatchingMode_enum {
- IMAQ_MATCH_SHIFT_INVARIANT = 1, //Searches for occurrences of the template image anywhere in the searchRect, assuming that the pattern is not rotated more than plus or minus 4 degrees.
- IMAQ_MATCH_ROTATION_INVARIANT = 2, //Searches for occurrences of the pattern in the image with no restriction on the rotation of the pattern.
- IMAQ_MATCHING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} MatchingMode;
-
-typedef enum MappingMethod_enum {
- IMAQ_FULL_DYNAMIC = 0, //(Obsolete) When the image bit depth is 0, the function maps the full dynamic range of the 16-bit image to an 8-bit scale.
- IMAQ_DOWNSHIFT = 1, //(Obsolete) When the image bit depth is 0, the function shifts the 16-bit image pixels to the right the number of times specified by the shiftCount element of the DisplayMapping structure.
- IMAQ_RANGE = 2, //(Obsolete) When the image bit depth is 0, the function maps the pixel values in the range specified by the minimumValue and maximumValue elements of the DisplayMapping structure to an 8-bit scale.
- IMAQ_90_PCT_DYNAMIC = 3, //(Obsolete) When the image bit depth to 0, the function maps the dynamic range containing the middle 90 percent of the cumulated histogram of the image to an 8-bit (256 grayscale values) scale.
- IMAQ_PERCENT_RANGE = 4, //(Obsolete) When the image bit depth is 0, the function maps the pixel values in the relative percentage range (0 to 100) of the cumulated histogram specified by minimumValue and maximumValue to an 8-bit scale.
- IMAQ_DEFAULT_MAPPING = 10, //If the bit depth is 0, the function maps the 16-bit image to 8 bits by following the IMAQ_FULL_DYNAMIC_ALWAYS behavior; otherwise, the function shifts the image data to the right according to the IMAQ_MOST_SIGNIFICANT behavior.
- IMAQ_MOST_SIGNIFICANT = 11, //The function shifts the 16-bit image pixels to the right until the 8 most significant bits of the image data are remaining.
- IMAQ_FULL_DYNAMIC_ALWAYS = 12, //The function maps the full dynamic range of the 16-bit image to an 8-bit scale.
- IMAQ_DOWNSHIFT_ALWAYS = 13, //The function shifts the 16-bit image pixels to the right the number of times specified by the shiftCount element of the DisplayMapping structure.
- IMAQ_RANGE_ALWAYS = 14, //The function maps the pixel values in the range specified by the minimumValue and maximumValue elements of the DisplayMapping structure to an 8-bit scale.
- IMAQ_90_PCT_DYNAMIC_ALWAYS = 15, //The function maps the dynamic range containing the middle 90 percent of the cumulated histogram of the image to an 8-bit (256 grayscale values) scale.
- IMAQ_PERCENT_RANGE_ALWAYS = 16, //The function maps the pixel values in the relative percentage range (0 to 100) of the cumulated histogram specified by minimumValue and maximumValue to an 8-bit scale.
- IMAQ_MAPPING_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} MappingMethod;
-
-typedef enum ComparisonFunction_enum {
- IMAQ_CLEAR_LESS = 0, //The comparison is true if the source pixel value is less than the comparison image pixel value.
- IMAQ_CLEAR_LESS_OR_EQUAL = 1, //The comparison is true if the source pixel value is less than or equal to the comparison image pixel value.
- IMAQ_CLEAR_EQUAL = 2, //The comparison is true if the source pixel value is equal to the comparison image pixel value.
- IMAQ_CLEAR_GREATER_OR_EQUAL = 3, //The comparison is true if the source pixel value is greater than or equal to the comparison image pixel value.
- IMAQ_CLEAR_GREATER = 4, //The comparison is true if the source pixel value is greater than the comparison image pixel value.
- IMAQ_COMPARE_FUNCTION_SIZE_GUARD = 0xFFFFFFFF
-} ComparisonFunction;
-
-typedef enum LineGaugeMethod_enum {
- IMAQ_EDGE_TO_EDGE = 0, //Measures from the first edge on the line to the last edge on the line.
- IMAQ_EDGE_TO_POINT = 1, //Measures from the first edge on the line to the end point of the line.
- IMAQ_POINT_TO_EDGE = 2, //Measures from the start point of the line to the first edge on the line.
- IMAQ_POINT_TO_POINT = 3, //Measures from the start point of the line to the end point of the line.
- IMAQ_LINE_GAUGE_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} LineGaugeMethod;
-
-typedef enum Direction3D_enum {
- IMAQ_3D_NW = 0, //The viewing angle for the 3D image is from the northwest.
- IMAQ_3D_SW = 1, //The viewing angle for the 3D image is from the southwest.
- IMAQ_3D_SE = 2, //The viewing angle for the 3D image is from the southeast.
- IMAQ_3D_NE = 3, //The viewing angle for the 3D image is from the northeast.
- IMAQ_DIRECTION_3D_SIZE_GUARD = 0xFFFFFFFF
-} Direction3D;
-
-typedef enum LearningMode_enum {
- IMAQ_LEARN_ALL = 0, //The function extracts information for shift- and rotation-invariant matching.
- IMAQ_LEARN_SHIFT_INFORMATION = 1, //The function extracts information for shift-invariant matching.
- IMAQ_LEARN_ROTATION_INFORMATION = 2, //The function extracts information for rotation-invariant matching.
- IMAQ_LEARNING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} LearningMode;
-
-typedef enum KernelFamily_enum {
- IMAQ_GRADIENT_FAMILY = 0, //The kernel is in the gradient family.
- IMAQ_LAPLACIAN_FAMILY = 1, //The kernel is in the Laplacian family.
- IMAQ_SMOOTHING_FAMILY = 2, //The kernel is in the smoothing family.
- IMAQ_GAUSSIAN_FAMILY = 3, //The kernel is in the Gaussian family.
- IMAQ_KERNEL_FAMILY_SIZE_GUARD = 0xFFFFFFFF
-} KernelFamily;
-
-typedef enum InterpolationMethod_enum {
- IMAQ_ZERO_ORDER = 0, //The function uses an interpolation method that interpolates new pixel values using the nearest valid neighboring pixel.
- IMAQ_BILINEAR = 1, //The function uses an interpolation method that interpolates new pixel values using a bidirectional average of the neighboring pixels.
- IMAQ_QUADRATIC = 2, //The function uses an interpolation method that interpolates new pixel values using a quadratic approximating polynomial.
- IMAQ_CUBIC_SPLINE = 3, //The function uses an interpolation method that interpolates new pixel values by fitting them to a cubic spline curve, where the curve is based on known pixel values from the image.
- IMAQ_BILINEAR_FIXED = 4, //The function uses an interpolation method that interpolates new pixel values using a bidirectional average of the neighboring pixels.
- IMAQ_INTERPOLATION_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} InterpolationMethod;
-
-typedef enum ImageType_enum {
- IMAQ_IMAGE_U8 = 0, //The image type is 8-bit unsigned integer grayscale.
- IMAQ_IMAGE_U16 = 7, //The image type is 16-bit unsigned integer grayscale.
- IMAQ_IMAGE_I16 = 1, //The image type is 16-bit signed integer grayscale.
- IMAQ_IMAGE_SGL = 2, //The image type is 32-bit floating-point grayscale.
- IMAQ_IMAGE_COMPLEX = 3, //The image type is complex.
- IMAQ_IMAGE_RGB = 4, //The image type is RGB color.
- IMAQ_IMAGE_HSL = 5, //The image type is HSL color.
- IMAQ_IMAGE_RGB_U64 = 6, //The image type is 64-bit unsigned RGB color.
- IMAQ_IMAGE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ImageType;
-
-typedef enum ImageFeatureMode_enum {
- IMAQ_COLOR_AND_SHAPE_FEATURES = 0, //Instructs the function to use the color and the shape features of the color pattern.
- IMAQ_COLOR_FEATURES = 1, //Instructs the function to use the color features of the color pattern.
- IMAQ_SHAPE_FEATURES = 2, //Instructs the function to use the shape features of the color pattern.
- IMAQ_FEATURE_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ImageFeatureMode;
-
-typedef enum FontColor_enum {
- IMAQ_WHITE = 0, //Draws text in white.
- IMAQ_BLACK = 1, //Draws text in black.
- IMAQ_INVERT = 2, //Inverts the text pixels.
- IMAQ_BLACK_ON_WHITE = 3, //Draws text in black with a white background.
- IMAQ_WHITE_ON_BLACK = 4, //Draws text in white with a black background.
- IMAQ_FONT_COLOR_SIZE_GUARD = 0xFFFFFFFF
-} FontColor;
-
-typedef enum FlipAxis_enum {
- IMAQ_HORIZONTAL_AXIS = 0, //Flips the image over the central horizontal axis.
- IMAQ_VERTICAL_AXIS = 1, //Flips the image over the central vertical axis.
- IMAQ_CENTER_AXIS = 2, //Flips the image over both the central vertical and horizontal axes.
- IMAQ_DIAG_L_TO_R_AXIS = 3, //Flips the image over an axis from the upper left corner to lower right corner.
- IMAQ_DIAG_R_TO_L_AXIS = 4, //Flips the image over an axis from the upper right corner to lower left corner.
- IMAQ_FLIP_AXIS_SIZE_GUARD = 0xFFFFFFFF
-} FlipAxis;
-
-typedef enum EdgeProcess_enum {
- IMAQ_FIRST = 0, //The function looks for the first edge.
- IMAQ_FIRST_AND_LAST = 1, //The function looks for the first and last edge.
- IMAQ_ALL = 2, //The function looks for all edges.
- IMAQ_BEST = 3, //The function looks for the best edge.
- IMAQ_EDGE_PROCESS_SIZE_GUARD = 0xFFFFFFFF
-} EdgeProcess;
-
-typedef enum DrawMode_enum {
- IMAQ_DRAW_VALUE = 0, //Draws the boundary of the object with the specified pixel value.
- IMAQ_DRAW_INVERT = 2, //Inverts the pixel values of the boundary of the object.
- IMAQ_PAINT_VALUE = 1, //Fills the object with the given pixel value.
- IMAQ_PAINT_INVERT = 3, //Inverts the pixel values of the object.
- IMAQ_HIGHLIGHT_VALUE = 4, //The function fills the object by highlighting the enclosed pixels with the color of the object.
- IMAQ_DRAW_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DrawMode;
-
-typedef enum NearestNeighborMetric_enum {
- IMAQ_METRIC_MAXIMUM = 0, //The maximum metric.
- IMAQ_METRIC_SUM = 1, //The sum metric.
- IMAQ_METRIC_EUCLIDEAN = 2, //The Euclidean metric.
- IMAQ_NEAREST_NEIGHBOR_METRIC_SIZE_GUARD = 0xFFFFFFFF
-} NearestNeighborMetric;
-
-typedef enum ReadResolution_enum {
- IMAQ_LOW_RESOLUTION = 0, //Configures NI Vision to use low resolution during the read process.
- IMAQ_MEDIUM_RESOLUTION = 1, //Configures NI Vision to use medium resolution during the read process.
- IMAQ_HIGH_RESOLUTION = 2, //Configures NI Vision to use high resolution during the read process.
- IMAQ_READ_RESOLUTION_SIZE_GUARD = 0xFFFFFFFF
-} ReadResolution;
-
-typedef enum ThresholdMode_enum {
- IMAQ_FIXED_RANGE = 0, //Performs thresholding using the values you provide in the lowThreshold and highThreshold elements of OCRProcessingOptions.
- IMAQ_COMPUTED_UNIFORM = 1, //Calculates a single threshold value for the entire ROI.
- IMAQ_COMPUTED_LINEAR = 2, //Calculates a value on the left side of the ROI, calculates a value on the right side of the ROI, and linearly fills the middle values from left to right.
- IMAQ_COMPUTED_NONLINEAR = 3, //Divides the ROI into the number of blocks specified by the blockCount element of OCRProcessingOptions and calculates a threshold value for each block.
- IMAQ_THRESHOLD_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ThresholdMode;
-
-typedef enum ReadStrategy_enum {
- IMAQ_READ_AGGRESSIVE = 0, //Configures NI Vision to perform fewer checks when analyzing objects to determine if they match trained characters.
- IMAQ_READ_CONSERVATIVE = 1, //Configures NI Vision to perform more checks to determine if an object matches a trained character.
- IMAQ_READ_STRATEGY_SIZE_GUARD = 0xFFFFFFFF
-} ReadStrategy;
-
-typedef enum MeasurementType_enum {
- IMAQ_MT_CENTER_OF_MASS_X = 0, //X-coordinate of the point representing the average position of the total particle mass, assuming every point in the particle has a constant density.
- IMAQ_MT_CENTER_OF_MASS_Y = 1, //Y-coordinate of the point representing the average position of the total particle mass, assuming every point in the particle has a constant density.
- IMAQ_MT_FIRST_PIXEL_X = 2, //X-coordinate of the highest, leftmost particle pixel.
- IMAQ_MT_FIRST_PIXEL_Y = 3, //Y-coordinate of the highest, leftmost particle pixel.
- IMAQ_MT_BOUNDING_RECT_LEFT = 4, //X-coordinate of the leftmost particle point.
- IMAQ_MT_BOUNDING_RECT_TOP = 5, //Y-coordinate of highest particle point.
- IMAQ_MT_BOUNDING_RECT_RIGHT = 6, //X-coordinate of the rightmost particle point.
- IMAQ_MT_BOUNDING_RECT_BOTTOM = 7, //Y-coordinate of the lowest particle point.
- IMAQ_MT_MAX_FERET_DIAMETER_START_X = 8, //X-coordinate of the start of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_MAX_FERET_DIAMETER_START_Y = 9, //Y-coordinate of the start of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_MAX_FERET_DIAMETER_END_X = 10, //X-coordinate of the end of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_MAX_FERET_DIAMETER_END_Y = 11, //Y-coordinate of the end of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_MAX_HORIZ_SEGMENT_LENGTH_LEFT = 12, //X-coordinate of the leftmost pixel in the longest row of contiguous pixels in the particle.
- IMAQ_MT_MAX_HORIZ_SEGMENT_LENGTH_RIGHT = 13, //X-coordinate of the rightmost pixel in the longest row of contiguous pixels in the particle.
- IMAQ_MT_MAX_HORIZ_SEGMENT_LENGTH_ROW = 14, //Y-coordinate of all of the pixels in the longest row of contiguous pixels in the particle.
- IMAQ_MT_BOUNDING_RECT_WIDTH = 16, //Distance between the x-coordinate of the leftmost particle point and the x-coordinate of the rightmost particle point.
- IMAQ_MT_BOUNDING_RECT_HEIGHT = 17, //Distance between the y-coordinate of highest particle point and the y-coordinate of the lowest particle point.
- IMAQ_MT_BOUNDING_RECT_DIAGONAL = 18, //Distance between opposite corners of the bounding rectangle.
- IMAQ_MT_PERIMETER = 19, //Length of the outer boundary of the particle.
- IMAQ_MT_CONVEX_HULL_PERIMETER = 20, //Perimeter of the smallest convex polygon containing all points in the particle.
- IMAQ_MT_HOLES_PERIMETER = 21, //Sum of the perimeters of each hole in the particle.
- IMAQ_MT_MAX_FERET_DIAMETER = 22, //Distance between the start and end of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_EQUIVALENT_ELLIPSE_MAJOR_AXIS = 23, //Length of the major axis of the ellipse with the same perimeter and area as the particle.
- IMAQ_MT_EQUIVALENT_ELLIPSE_MINOR_AXIS = 24, //Length of the minor axis of the ellipse with the same perimeter and area as the particle.
- IMAQ_MT_EQUIVALENT_ELLIPSE_MINOR_AXIS_FERET = 25, //Length of the minor axis of the ellipse with the same area as the particle, and Major Axis equal in length to the Max Feret Diameter.
- IMAQ_MT_EQUIVALENT_RECT_LONG_SIDE = 26, //Longest side of the rectangle with the same perimeter and area as the particle.
- IMAQ_MT_EQUIVALENT_RECT_SHORT_SIDE = 27, //Shortest side of the rectangle with the same perimeter and area as the particle.
- IMAQ_MT_EQUIVALENT_RECT_DIAGONAL = 28, //Distance between opposite corners of the rectangle with the same perimeter and area as the particle.
- IMAQ_MT_EQUIVALENT_RECT_SHORT_SIDE_FERET = 29, //Shortest side of the rectangle with the same area as the particle, and longest side equal in length to the Max Feret Diameter.
- IMAQ_MT_AVERAGE_HORIZ_SEGMENT_LENGTH = 30, //Average length of a horizontal segment in the particle.
- IMAQ_MT_AVERAGE_VERT_SEGMENT_LENGTH = 31, //Average length of a vertical segment in the particle.
- IMAQ_MT_HYDRAULIC_RADIUS = 32, //The particle area divided by the particle perimeter.
- IMAQ_MT_WADDEL_DISK_DIAMETER = 33, //Diameter of a disk with the same area as the particle.
- IMAQ_MT_AREA = 35, //Area of the particle.
- IMAQ_MT_HOLES_AREA = 36, //Sum of the areas of each hole in the particle.
- IMAQ_MT_PARTICLE_AND_HOLES_AREA = 37, //Area of a particle that completely covers the image.
- IMAQ_MT_CONVEX_HULL_AREA = 38, //Area of the smallest convex polygon containing all points in the particle.
- IMAQ_MT_IMAGE_AREA = 39, //Area of the image.
- IMAQ_MT_NUMBER_OF_HOLES = 41, //Number of holes in the particle.
- IMAQ_MT_NUMBER_OF_HORIZ_SEGMENTS = 42, //Number of horizontal segments in the particle.
- IMAQ_MT_NUMBER_OF_VERT_SEGMENTS = 43, //Number of vertical segments in the particle.
- IMAQ_MT_ORIENTATION = 45, //The angle of the line that passes through the particle Center of Mass about which the particle has the lowest moment of inertia.
- IMAQ_MT_MAX_FERET_DIAMETER_ORIENTATION = 46, //The angle of the line segment connecting the two perimeter points that are the furthest apart.
- IMAQ_MT_AREA_BY_IMAGE_AREA = 48, //Percentage of the particle Area covering the Image Area.
- IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA = 49, //Percentage of the particle Area in relation to its Particle and Holes Area.
- IMAQ_MT_RATIO_OF_EQUIVALENT_ELLIPSE_AXES = 50, //Equivalent Ellipse Major Axis divided by Equivalent Ellipse Minor Axis.
- IMAQ_MT_RATIO_OF_EQUIVALENT_RECT_SIDES = 51, //Equivalent Rect Long Side divided by Equivalent Rect Short Side.
- IMAQ_MT_ELONGATION_FACTOR = 53, //Max Feret Diameter divided by Equivalent Rect Short Side (Feret).
- IMAQ_MT_COMPACTNESS_FACTOR = 54, //Area divided by the product of Bounding Rect Width and Bounding Rect Height.
- IMAQ_MT_HEYWOOD_CIRCULARITY_FACTOR = 55, //Perimeter divided by the circumference of a circle with the same area.
- IMAQ_MT_TYPE_FACTOR = 56, //Factor relating area to moment of inertia.
- IMAQ_MT_SUM_X = 58, //The sum of all x-coordinates in the particle.
- IMAQ_MT_SUM_Y = 59, //The sum of all y-coordinates in the particle.
- IMAQ_MT_SUM_XX = 60, //The sum of all x-coordinates squared in the particle.
- IMAQ_MT_SUM_XY = 61, //The sum of all x-coordinates times y-coordinates in the particle.
- IMAQ_MT_SUM_YY = 62, //The sum of all y-coordinates squared in the particle.
- IMAQ_MT_SUM_XXX = 63, //The sum of all x-coordinates cubed in the particle.
- IMAQ_MT_SUM_XXY = 64, //The sum of all x-coordinates squared times y-coordinates in the particle.
- IMAQ_MT_SUM_XYY = 65, //The sum of all x-coordinates times y-coordinates squared in the particle.
- IMAQ_MT_SUM_YYY = 66, //The sum of all y-coordinates cubed in the particle.
- IMAQ_MT_MOMENT_OF_INERTIA_XX = 68, //The moment of inertia in the x-direction twice.
- IMAQ_MT_MOMENT_OF_INERTIA_XY = 69, //The moment of inertia in the x and y directions.
- IMAQ_MT_MOMENT_OF_INERTIA_YY = 70, //The moment of inertia in the y-direction twice.
- IMAQ_MT_MOMENT_OF_INERTIA_XXX = 71, //The moment of inertia in the x-direction three times.
- IMAQ_MT_MOMENT_OF_INERTIA_XXY = 72, //The moment of inertia in the x-direction twice and the y-direction once.
- IMAQ_MT_MOMENT_OF_INERTIA_XYY = 73, //The moment of inertia in the x-direction once and the y-direction twice.
- IMAQ_MT_MOMENT_OF_INERTIA_YYY = 74, //The moment of inertia in the y-direction three times.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_XX = 75, //The normalized moment of inertia in the x-direction twice.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_XY = 76, //The normalized moment of inertia in the x- and y-directions.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_YY = 77, //The normalized moment of inertia in the y-direction twice.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_XXX = 78, //The normalized moment of inertia in the x-direction three times.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_XXY = 79, //The normalized moment of inertia in the x-direction twice and the y-direction once.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_XYY = 80, //The normalized moment of inertia in the x-direction once and the y-direction twice.
- IMAQ_MT_NORM_MOMENT_OF_INERTIA_YYY = 81, //The normalized moment of inertia in the y-direction three times.
- IMAQ_MT_HU_MOMENT_1 = 82, //The first Hu moment.
- IMAQ_MT_HU_MOMENT_2 = 83, //The second Hu moment.
- IMAQ_MT_HU_MOMENT_3 = 84, //The third Hu moment.
- IMAQ_MT_HU_MOMENT_4 = 85, //The fourth Hu moment.
- IMAQ_MT_HU_MOMENT_5 = 86, //The fifth Hu moment.
- IMAQ_MT_HU_MOMENT_6 = 87, //The sixth Hu moment.
- IMAQ_MT_HU_MOMENT_7 = 88, //The seventh Hu moment.
- IMAQ_MEASUREMENT_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} MeasurementType;
-
-typedef enum GeometricMatchingMode_enum {
- IMAQ_GEOMETRIC_MATCH_SHIFT_INVARIANT = 0, //Searches for occurrences of the pattern in the image, assuming that the pattern is not rotated more than plus or minus 5 degrees.
- IMAQ_GEOMETRIC_MATCH_ROTATION_INVARIANT = 1, //Searches for occurrences of the pattern in the image with reduced restriction on the rotation of the pattern.
- IMAQ_GEOMETRIC_MATCH_SCALE_INVARIANT = 2, //Searches for occurrences of the pattern in the image with reduced restriction on the size of the pattern.
- IMAQ_GEOMETRIC_MATCH_OCCLUSION_INVARIANT = 4, //Searches for occurrences of the pattern in the image, allowing for a specified percentage of the pattern to be occluded.
- IMAQ_GEOMETRIC_MATCHING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} GeometricMatchingMode;
-
-typedef enum ButtonLabel_enum {
- IMAQ_BUTTON_OK = 0, //The label "OK".
- IMAQ_BUTTON_SAVE = 1, //The label "Save".
- IMAQ_BUTTON_SELECT = 2, //The label "Select".
- IMAQ_BUTTON_LOAD = 3, //The label "Load".
- IMAQ_BUTTON_LABEL_SIZE_GUARD = 0xFFFFFFFF
-} ButtonLabel;
-
-typedef enum NearestNeighborMethod_enum {
- IMAQ_MINIMUM_MEAN_DISTANCE = 0, //The minimum mean distance method.
- IMAQ_K_NEAREST_NEIGHBOR = 1, //The k-nearest neighbor method.
- IMAQ_NEAREST_PROTOTYPE = 2, //The nearest prototype method.
- IMAQ_NEAREST_NEIGHBOR_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} NearestNeighborMethod;
-
-typedef enum QRMirrorMode_enum {
- IMAQ_QR_MIRROR_MODE_AUTO_DETECT = -2, //The function should determine if the QR code is mirrored.
- IMAQ_QR_MIRROR_MODE_MIRRORED = 1, //The function should expect the QR code to appear mirrored.
- IMAQ_QR_MIRROR_MODE_NORMAL = 0, //The function should expect the QR code to appear normal.
- IMAQ_QR_MIRROR_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRMirrorMode;
-
-typedef enum ColumnProcessingMode_enum {
- IMAQ_AVERAGE_COLUMNS = 0, //Averages the data extracted for edge detection.
- IMAQ_MEDIAN_COLUMNS = 1, //Takes the median of the data extracted for edge detection.
- IMAQ_COLUMN_PROCESSING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ColumnProcessingMode;
-
-typedef enum FindReferenceDirection_enum {
- IMAQ_LEFT_TO_RIGHT_DIRECT = 0, //Searches from the left side of the search area to the right side of the search area for a direct axis.
- IMAQ_LEFT_TO_RIGHT_INDIRECT = 1, //Searches from the left side of the search area to the right side of the search area for an indirect axis.
- IMAQ_TOP_TO_BOTTOM_DIRECT = 2, //Searches from the top of the search area to the bottom of the search area for a direct axis.
- IMAQ_TOP_TO_BOTTOM_INDIRECT = 3, //Searches from the top of the search area to the bottom of the search area for an indirect axis.
- IMAQ_RIGHT_TO_LEFT_DIRECT = 4, //Searches from the right side of the search area to the left side of the search area for a direct axis.
- IMAQ_RIGHT_TO_LEFT_INDIRECT = 5, //Searches from the right side of the search area to the left side of the search area for an indirect axis.
- IMAQ_BOTTOM_TO_TOP_DIRECT = 6, //Searches from the bottom of the search area to the top of the search area for a direct axis.
- IMAQ_BOTTOM_TO_TOP_INDIRECT = 7, //Searches from the bottom of the search area to the top of the search area for an indirect axis.
- IMAQ_FIND_COORD_SYS_DIR_SIZE_GUARD = 0xFFFFFFFF
-} FindReferenceDirection;
-
-typedef enum MulticoreOperation_enum {
- IMAQ_GET_CORES = 0, //The number of processor cores NI Vision is currently using.
- IMAQ_SET_CORES = 1, //The number of processor cores for NI Vision to use.
- IMAQ_USE_MAX_AVAILABLE = 2, //Use the maximum number of available processor cores.
- IMAQ_MULTICORE_OPERATION_SIZE_GUARD = 0xFFFFFFFF
-} MulticoreOperation;
-
-typedef enum GroupBehavior_enum {
- IMAQ_GROUP_CLEAR = 0, //Sets the behavior of the overlay group to clear the current settings when an image is transformed.
- IMAQ_GROUP_KEEP = 1, //Sets the behavior of the overlay group to keep the current settings when an image is transformed.
- IMAQ_GROUP_TRANSFORM = 2, //Sets the behavior of the overlay group to transform with the image.
- IMAQ_GROUP_BEHAVIOR_SIZE_GUARD = 0xFFFFFFFF
-} GroupBehavior;
-
-typedef enum QRDimensions_enum {
- IMAQ_QR_DIMENSIONS_AUTO_DETECT = 0, //The function will automatically determine the dimensions of the QR code.
- IMAQ_QR_DIMENSIONS_11x11 = 11, //Specifies the dimensions of the QR code as 11 x 11.
- IMAQ_QR_DIMENSIONS_13x13 = 13, //Specifies the dimensions of the QR code as 13 x 13.
- IMAQ_QR_DIMENSIONS_15x15 = 15, //Specifies the dimensions of the QR code as 15 x 15.
- IMAQ_QR_DIMENSIONS_17x17 = 17, //Specifies the dimensions of the QR code as 17 x 17.
- IMAQ_QR_DIMENSIONS_21x21 = 21, //Specifies the dimensions of the QR code as 21 x 21.
- IMAQ_QR_DIMENSIONS_25x25 = 25, //Specifies the dimensions of the QR code as 25 x 25.
- IMAQ_QR_DIMENSIONS_29x29 = 29, //Specifies the dimensions of the QR code as 29 x 29.
- IMAQ_QR_DIMENSIONS_33x33 = 33, //Specifies the dimensions of the QR code as 33 x 33.
- IMAQ_QR_DIMENSIONS_37x37 = 37, //Specifies the dimensions of the QR code as 37 x 37.
- IMAQ_QR_DIMENSIONS_41x41 = 41, //Specifies the dimensions of the QR code as 41 x 41.
- IMAQ_QR_DIMENSIONS_45x45 = 45, //Specifies the dimensions of the QR code as 45 x 45.
- IMAQ_QR_DIMENSIONS_49x49 = 49, //Specifies the dimensions of the QR code as 49 x 49.
- IMAQ_QR_DIMENSIONS_53x53 = 53, //Specifies the dimensions of the QR code as 53 x 53.
- IMAQ_QR_DIMENSIONS_57x57 = 57, //Specifies the dimensions of the QR code as 57 x 57.
- IMAQ_QR_DIMENSIONS_61x61 = 61, //Specifies the dimensions of the QR code as 61 x 61.
- IMAQ_QR_DIMENSIONS_65x65 = 65, //Specifies the dimensions of the QR code as 65 x 65.
- IMAQ_QR_DIMENSIONS_69x69 = 69, //Specifies the dimensions of the QR code as 69 x 69.
- IMAQ_QR_DIMENSIONS_73x73 = 73, //Specifies the dimensions of the QR code as 73 x 73.
- IMAQ_QR_DIMENSIONS_77x77 = 77, //Specifies the dimensions of the QR code as 77 x 77.
- IMAQ_QR_DIMENSIONS_81x81 = 81, //Specifies the dimensions of the QR code as 81 x 81.
- IMAQ_QR_DIMENSIONS_85x85 = 85, //Specifies the dimensions of the QR code as 85 x 85.
- IMAQ_QR_DIMENSIONS_89x89 = 89, //Specifies the dimensions of the QR code as 89 x 89.
- IMAQ_QR_DIMENSIONS_93x93 = 93, //Specifies the dimensions of the QR code as 93 x 93.
- IMAQ_QR_DIMENSIONS_97x97 = 97, //Specifies the dimensions of the QR code as 97 x 97.
- IMAQ_QR_DIMENSIONS_101x101 = 101, //Specifies the dimensions of the QR code as 101 x 101.
- IMAQ_QR_DIMENSIONS_105x105 = 105, //Specifies the dimensions of the QR code as 105 x 105.
- IMAQ_QR_DIMENSIONS_109x109 = 109, //Specifies the dimensions of the QR code as 109 x 109.
- IMAQ_QR_DIMENSIONS_113x113 = 113, //Specifies the dimensions of the QR code as 113 x 113.
- IMAQ_QR_DIMENSIONS_117x117 = 117, //Specifies the dimensions of the QR code as 117 x 117.
- IMAQ_QR_DIMENSIONS_121x121 = 121, //Specifies the dimensions of the QR code as 121 x 121.
- IMAQ_QR_DIMENSIONS_125x125 = 125, //Specifies the dimensions of the QR code as 125 x 125.
- IMAQ_QR_DIMENSIONS_129x129 = 129, //Specifies the dimensions of the QR code as 129 x 129.
- IMAQ_QR_DIMENSIONS_133x133 = 133, //Specifies the dimensions of the QR code as 133 x 133.
- IMAQ_QR_DIMENSIONS_137x137 = 137, //Specifies the dimensions of the QR code as 137 x 137.
- IMAQ_QR_DIMENSIONS_141x141 = 141, //Specifies the dimensions of the QR code as 141 x 141.
- IMAQ_QR_DIMENSIONS_145x145 = 145, //Specifies the dimensions of the QR code as 145 x 145.
- IMAQ_QR_DIMENSIONS_149x149 = 149, //Specifies the dimensions of the QR code as 149 x 149.
- IMAQ_QR_DIMENSIONS_153x153 = 153, //Specifies the dimensions of the QR code as 153 x 153.
- IMAQ_QR_DIMENSIONS_157x157 = 157, //Specifies the dimensions of the QR code as 157 x 1537.
- IMAQ_QR_DIMENSIONS_161x161 = 161, //Specifies the dimensions of the QR code as 161 x 161.
- IMAQ_QR_DIMENSIONS_165x165 = 165, //Specifies the dimensions of the QR code as 165 x 165.
- IMAQ_QR_DIMENSIONS_169x169 = 169, //Specifies the dimensions of the QR code as 169 x 169.
- IMAQ_QR_DIMENSIONS_173x173 = 173, //Specifies the dimensions of the QR code as 173 x 173.
- IMAQ_QR_DIMENSIONS_177x177 = 177, //Specifies the dimensions of the QR code as 177 x 177.
- IMAQ_QR_DIMENSIONS_SIZE_GUARD = 0xFFFFFFFF
-} QRDimensions;
-
-typedef enum QRCellFilterMode_enum {
- IMAQ_QR_CELL_FILTER_MODE_AUTO_DETECT = -2, //The function will try all filter modes and uses the one that decodes the QR code within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_QR_CELL_FILTER_MODE_AVERAGE = 0, //The function sets the pixel value for the cell to the average of the sampled pixels.
- IMAQ_QR_CELL_FILTER_MODE_MEDIAN = 1, //The function sets the pixel value for the cell to the median of the sampled pixels.
- IMAQ_QR_CELL_FILTER_MODE_CENTRAL_AVERAGE = 2, //The function sets the pixel value for the cell to the average of the pixels in the center of the cell sample.
- IMAQ_QR_CELL_FILTER_MODE_HIGH_AVERAGE = 3, //The function sets the pixel value for the cell to the average value of the half of the sampled pixels with the highest pixel values.
- IMAQ_QR_CELL_FILTER_MODE_LOW_AVERAGE = 4, //The function sets the pixel value for the cell to the average value of the half of the sampled pixels with the lowest pixel values.
- IMAQ_QR_CELL_FILTER_MODE_VERY_HIGH_AVERAGE = 5, //The function sets the pixel value for the cell to the average value of the ninth of the sampled pixels with the highest pixel values.
- IMAQ_QR_CELL_FILTER_MODE_VERY_LOW_AVERAGE = 6, //The function sets the pixel value for the cell to the average value of the ninth of the sampled pixels with the lowest pixel values.
- IMAQ_QR_CELL_FILTER_MODE_ALL = 8, //The function tries each filter mode, starting with IMAQ_QR_CELL_FILTER_MODE_AVERAGE and ending with IMAQ_QR_CELL_FILTER_MODE_VERY_LOW_AVERAGE, stopping once a filter mode decodes correctly.
- IMAQ_QR_CELL_FILTER_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRCellFilterMode;
-
-typedef enum RoundingMode_enum {
- IMAQ_ROUNDING_MODE_OPTIMIZE = 0, //Rounds the result of a division using the best available method.
- IMAQ_ROUNDING_MODE_TRUNCATE = 1, //Truncates the result of a division.
- IMAQ_ROUNDING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} RoundingMode;
-
-typedef enum QRDemodulationMode_enum {
- IMAQ_QR_DEMODULATION_MODE_AUTO_DETECT = -2, //The function will try each demodulation mode and use the one which decodes the QR code within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_QR_DEMODULATION_MODE_HISTOGRAM = 0, //The function uses a histogram of all of the QR cells to calculate a threshold.
- IMAQ_QR_DEMODULATION_MODE_LOCAL_CONTRAST = 1, //The function examines each of the cell's neighbors to determine if the cell is on or off.
- IMAQ_QR_DEMODULATION_MODE_COMBINED = 2, //The function uses the histogram of the QR code to calculate a threshold.
- IMAQ_QR_DEMODULATION_MODE_ALL = 3, //The function tries IMAQ_QR_DEMODULATION_MODE_HISTOGRAM, then IMAQ_QR_DEMODULATION_MODE_LOCAL_CONTRAST and then IMAQ_QR_DEMODULATION_MODE_COMBINED, stopping once one mode is successful.
- IMAQ_QR_DEMODULATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRDemodulationMode;
-
-typedef enum ContrastMode_enum {
- IMAQ_ORIGINAL_CONTRAST = 0, //Instructs the geometric matching algorithm to find matches with the same contrast as the template.
- IMAQ_REVERSED_CONTRAST = 1, //Instructs the geometric matching algorithm to find matches with the inverted contrast of the template.
- IMAQ_BOTH_CONTRASTS = 2, //Instructs the geometric matching algorithm to find matches with the same and inverted contrast of the template.
-} ContrastMode;
-
-typedef enum QRPolarities_enum {
- IMAQ_QR_POLARITY_AUTO_DETECT = -2, //The function should determine the polarity of the QR code.
- IMAQ_QR_POLARITY_BLACK_ON_WHITE = 0, //The function should search for a QR code with dark data on a bright background.
- IMAQ_QR_POLARITY_WHITE_ON_BLACK = 1, //The function should search for a QR code with bright data on a dark background.
- IMAQ_QR_POLARITY_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRPolarities;
-
-typedef enum QRRotationMode_enum {
- IMAQ_QR_ROTATION_MODE_UNLIMITED = 0, //The function allows for unlimited rotation.
- IMAQ_QR_ROTATION_MODE_0_DEGREES = 1, //The function allows for ??? 5 degrees of rotation.
- IMAQ_QR_ROTATION_MODE_90_DEGREES = 2, //The function allows for between 85 and 95 degrees of rotation.
- IMAQ_QR_ROTATION_MODE_180_DEGREES = 3, //The function allows for between 175 and 185 degrees of rotation.
- IMAQ_QR_ROTATION_MODE_270_DEGREES = 4, //The function allows for between 265 and 275 degrees of rotation.
- IMAQ_QR_ROTATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRRotationMode;
-
-typedef enum QRGradingMode_enum {
- IMAQ_QR_NO_GRADING = 0, //The function does not make any preparatory calculations.
- IMAQ_QR_GRADING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRGradingMode;
-
-typedef enum StraightEdgeSearchMode_enum {
- IMAQ_USE_FIRST_RAKE_EDGES = 0, //Fits a straight edge on the first points detected using a rake.
- IMAQ_USE_BEST_RAKE_EDGES = 1, //Fits a straight edge on the best points detected using a rake.
- IMAQ_USE_BEST_HOUGH_LINE = 2, //Finds the strongest straight edge using all points detected on a rake.
- IMAQ_USE_FIRST_PROJECTION_EDGE = 3, //Uses the location of the first projected edge as the straight edge.
- IMAQ_USE_BEST_PROJECTION_EDGE = 4, //Finds the strongest projected edge location to determine the straight edge.
- IMAQ_STRAIGHT_EDGE_SEARCH_SIZE_GUARD = 0xFFFFFFFF
-} StraightEdgeSearchMode;
-
-typedef enum SearchDirection_enum {
- IMAQ_SEARCH_DIRECTION_LEFT_TO_RIGHT = 0, //Searches from the left side of the search area to the right side of the search area.
- IMAQ_SEARCH_DIRECTION_RIGHT_TO_LEFT = 1, //Searches from the right side of the search area to the left side of the search area.
- IMAQ_SEARCH_DIRECTION_TOP_TO_BOTTOM = 2, //Searches from the top side of the search area to the bottom side of the search area.
- IMAQ_SEARCH_DIRECTION_BOTTOM_TO_TOP = 3, //Searches from the bottom side of the search area to the top side of the search area.
- IMAQ_SEARCH_DIRECTION_SIZE_GUARD = 0xFFFFFFFF
-} SearchDirection;
-
-typedef enum QRStreamMode_enum {
- IMAQ_QR_MODE_NUMERIC = 0, //Specifies that the data was encoded using numeric mode.
- IMAQ_QR_MODE_ALPHANUMERIC = 1, //Specifies that the data was encoded using alpha-numeric mode.
- IMAQ_QR_MODE_RAW_BYTE = 2, //Specifies that the data was not encoded but is only raw binary bytes, or encoded in JIS-8.
- IMAQ_QR_MODE_EAN128_TOKEN = 3, //Specifies that the data has a special meaning represented by the application ID.
- IMAQ_QR_MODE_EAN128_DATA = 4, //Specifies that the data has a special meaning represented by the application ID.
- IMAQ_QR_MODE_ECI = 5, //Specifies that the data was meant to be read using the language represented in the language ID.
- IMAQ_QR_MODE_KANJI = 6, //Specifies that the data was encoded in Shift-JIS16 Japanese.
- IMAQ_QR_MODE_SIZE_GUARD = 0xFFFFFFFF
-} QRStreamMode;
-
-typedef enum ParticleClassifierType_enum {
- IMAQ_PARTICLE_LARGEST = 0, //Use only the largest particle in the image.
- IMAQ_PARTICLE_ALL = 1, //Use all particles in the image.
- IMAQ_PARTICLE_CLASSIFIER_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ParticleClassifierType;
-
-typedef enum QRCellSampleSize_enum {
- IMAQ_QR_CELL_SAMPLE_SIZE_AUTO_DETECT = -2, //The function will try each sample size and use the one which decodes the QR code within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_QR_CELL_SAMPLE_SIZE1X1 = 1, //The function will use a 1x1 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE2X2 = 2, //The function will use a 2x2 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE3X3 = 3, //The function will use a 3x3 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE4X4 = 4, //The function will use a 4x4 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE5X5 = 5, //The function will use a 5x5 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE6X6 = 6, //The function will use a 6x6 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_SIZE7X7 = 7, //The function will use a 7x7 sized sample from each cell.
- IMAQ_QR_CELL_SAMPLE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} QRCellSampleSize;
-
-typedef enum RakeProcessType_enum {
- IMAQ_GET_FIRST_EDGES = 0,
- IMAQ_GET_FIRST_AND_LAST_EDGES = 1,
- IMAQ_GET_ALL_EDGES = 2,
- IMAQ_GET_BEST_EDGES = 3,
- IMAQ_RAKE_PROCESS_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} RakeProcessType;
-
-typedef enum GeometricSetupDataItem_enum {
- IMAQ_CURVE_EXTRACTION_MODE = 0, //Specifies how the function identifies curves in the image.
- IMAQ_CURVE_EDGE_THRSHOLD = 1, //Specifies the minimum contrast an edge pixel must have for it to be considered part of a curve.
- IMAQ_CURVE_EDGE_FILTER = 2, //Specifies the width of the edge filter that the function uses to identify curves in the image.
- IMAQ_MINIMUM_CURVE_LENGTH = 3, //Specifies the length, in pixels, of the smallest curve that you want the function to identify.
- IMAQ_CURVE_ROW_SEARCH_STEP_SIZE = 4, //Specifies the distance, in the y direction, between the image rows that the algorithm inspects for curve seed points.
- IMAQ_CURVE_COL_SEARCH_STEP_SIZE = 5, //Specifies the distance, in the x direction, between the image columns that the algorithm inspects for curve seed points.
- IMAQ_CURVE_MAX_END_POINT_GAP = 6, //Specifies the maximum gap, in pixels, between the endpoints of a curve that the function identifies as a closed curve.
- IMAQ_EXTRACT_CLOSED_CURVES = 7, //Specifies whether to identify only closed curves in the image.
- IMAQ_ENABLE_SUBPIXEL_CURVE_EXTRACTION = 8, //The function ignores this option.
- IMAQ_ENABLE_CORRELATION_SCORE = 9, //Specifies that the function should calculate the Correlation Score and return it for each match result.
- IMAQ_ENABLE_SUBPIXEL_ACCURACY = 10, //Determines whether to return the match results with subpixel accuracy.
- IMAQ_SUBPIXEL_ITERATIONS = 11, //Specifies the maximum number of incremental improvements used to refine matches using subpixel information.
- IMAQ_SUBPIXEL_TOLERANCE = 12, //Specifies the maximum amount of change, in pixels, between consecutive incremental improvements in the match position before the function stops refining the match position.
- IMAQ_INITIAL_MATCH_LIST_LENGTH = 13, //Specifies the maximum size of the match list.
- IMAQ_ENABLE_TARGET_TEMPLATE_CURVESCORE = 14, //Specifies whether the function should calculate the match curve to template curve score and return it for each match result.
- IMAQ_MINIMUM_MATCH_SEPARATION_DISTANCE = 15, //Specifies the minimum separation distance, in pixels, between the origins of two matches that have unique positions.
- IMAQ_MINIMUM_MATCH_SEPARATION_ANGLE = 16, //Specifies the minimum angular difference, in degrees, between two matches that have unique angles.
- IMAQ_MINIMUM_MATCH_SEPARATION_SCALE = 17, //Specifies the minimum difference in scale, expressed as a percentage, between two matches that have unique scales.
- IMAQ_MAXIMUM_MATCH_OVERLAP = 18, //Specifies whether you want the algorithm to spend less time accurately estimating the location of a match.
- IMAQ_ENABLE_COARSE_RESULT = 19, //Specifies whether you want the algorithm to spend less time accurately estimating the location of a match.
- IMAQ_ENABLE_CALIBRATION_SUPPORT = 20, //Specifies whether or not the algorithm treat the inspection image as a calibrated image.
- IMAQ_ENABLE_CONTRAST_REVERSAL = 21, //Specifies the contrast of the matches to search for.
- IMAQ_SEARCH_STRATEGY = 22, //Specifies the aggressiveness of the strategy used to find matches in the image.
- IMAQ_REFINEMENT_MATCH_FACTOR = 23, //Specifies the factor applied to the number of matches requested to determine how many matches are refined in the pyramid stage.
- IMAQ_SUBPIXEL_MATCH_FACTOR = 24, //Specifies the factor applied to the number for matches requested to determine how many matches are used for the final (subpixel) stage.
- IMAQ_MAX_REFINEMENT_ITERATIONS = 25, //Specifies maximum refinement iteration.
-} GeometricSetupDataItem;
-
-typedef enum DistortionModel_enum {
- IMAQ_POLYNOMIAL_MODEL = 0, //Polynomial model.
- IMAQ_DIVISION_MODEL = 1, //Division Model.
- IMAQ_NO_DISTORTION_MODEL = -1, //Not a distortion model.
-} DistortionModel;
-
-typedef enum CalibrationThumbnailType_enum {
- IMAQ_CAMARA_MODEL_TYPE = 0, //Camara model thumbnail type.
- IMAQ_PERSPECTIVE_TYPE = 1, //Perspective thumbnail type.
- IMAQ_MICRO_PLANE_TYPE = 2, //Micro Plane thumbnail type.
- IMAQ_CALIBRATION_THUMBNAIL_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} CalibrationThumbnailType;
-
-typedef enum SettingType_enum {
- IMAQ_ROTATION_ANGLE_RANGE = 0, //Set a range for this option to specify the angles at which you expect the Function to find template matches in the inspection image.
- IMAQ_SCALE_RANGE = 1, //Set a range for this option to specify the sizes at which you expect the Function to find template matches in the inspection image.
- IMAQ_OCCLUSION_RANGE = 2, //Set a range for this option to specify the amount of occlusion you expect for a match in the inspection image.
- IMAQ_SETTING_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} SettingType;
-
-typedef enum SegmentationDistanceLevel_enum {
- IMAQ_SEGMENTATION_LEVEL_CONSERVATIVE = 0, //Uses extensive criteria to determine the Maximum Distance.
- IMAQ_SEGMENTATION_LEVEL_AGGRESSIVE = 1, //Uses few criteria to determine the Maximum Distance.
- IMAQ_SEGMENTATION_LEVEL_SIZE_GUARD = 0xFFFFFFFF
-} SegmentationDistanceLevel;
-
-typedef enum ExtractContourSelection_enum {
- IMAQ_CLOSEST = 0, //Selects the curve closest to the ROI.
- IMAQ_LONGEST = 1, //Selects the longest curve.
- IMAQ_STRONGEST = 2, //Selects the curve with the highest edge strength averaged from each point on the curve.
- IMAQ_EXTRACT_CONTOUR_SELECTION_SIZE_GUARD = 0xFFFFFFFF
-} ExtractContourSelection;
-
-typedef enum FindTransformMode_enum {
- IMAQ_FIND_REFERENCE = 0, //Update both parts of the coordinate system.
- IMAQ_UPDATE_TRANSFORM = 1, //Update only the new reference system.
- IMAQ_FIND_TRANSFORM_MODE_SIZE_GUARD = 0xFFFFFFFF
-} FindTransformMode;
-
-typedef enum ExtractContourDirection_enum {
- IMAQ_RECT_LEFT_RIGHT = 0, //Searches the ROI from left to right.
- IMAQ_RECT_RIGHT_LEFT = 1, //Searches the ROI from right to left.
- IMAQ_RECT_TOP_BOTTOM = 2, //Searches the ROI from top to bottom.
- IMAQ_RECT_BOTTOM_TOP = 3, //Searches the ROI from bottom to top.
- IMAQ_ANNULUS_INNER_OUTER = 4, //Searches the ROI from the inner radius to the outer radius.
- IMAQ_ANNULUS_OUTER_INNER = 5, //Searches the ROI from the outer radius to the inner radius.
- IMAQ_ANNULUS_START_STOP = 6, //Searches the ROI from start angle to end angle.
- IMAQ_ANNULUS_STOP_START = 7, //Searches the ROI from end angle to start angle.
- IMAQ_EXTRACT_CONTOUR_DIRECTION_SIZE_GUARD = 0xFFFFFFFF
-} ExtractContourDirection;
-
-typedef enum EdgePolaritySearchMode_enum {
- IMAQ_SEARCH_FOR_ALL_EDGES = 0, //Searches for all edges.
- IMAQ_SEARCH_FOR_RISING_EDGES = 1, //Searches for rising edges only.
- IMAQ_SEARCH_FOR_FALLING_EDGES = 2, //Searches for falling edges only.
- IMAQ_EDGE_POLARITY_MODE_SIZE_GUARD = 0xFFFFFFFF
-} EdgePolaritySearchMode;
-
-typedef enum Connectivity_enum {
- IMAQ_FOUR_CONNECTED = 0, //Morphological reconstruction is performed in connectivity mode 4.
- IMAQ_EIGHT_CONNECTED = 1, //Morphological reconstruction is performed in connectivity mode 8.
- IMAQ_CONNECTIVITY_SIZE_GUARD = 0xFFFFFFFF
-} Connectivity;
-
-typedef enum MorphologyReconstructOperation_enum {
- IMAQ_DILATE_RECONSTRUCT = 0, //Performs Reconstruction by dilation.
- IMAQ_ERODE_RECONSTRUCT = 1, //Performs Reconstruction by erosion.
- IMAQ_MORPHOLOGY_RECONSTRUCT_OPERATION_SIZE_GUARD = 0xFFFFFFFF
-} MorphologyReconstructOperation;
-
-typedef enum WaveletType_enum {
- IMAQ_DB02 = 0,
- IMAQ_DB03 = 1,
- IMAQ_DB04 = 2, //Specifies the Wavelet Type as DB02.
- IMAQ_DB05 = 3,
- IMAQ_DB06 = 4,
- IMAQ_DB07 = 5,
- IMAQ_DB08 = 6,
- IMAQ_DB09 = 7,
- IMAQ_DB10 = 8,
- IMAQ_DB11 = 9,
- IMAQ_DB12 = 10,
- IMAQ_DB13 = 11,
- IMAQ_DB14 = 12,
- IMAQ_HAAR = 13,
- IMAQ_BIOR1_3 = 14,
- IMAQ_BIOR1_5 = 15,
- IMAQ_BIOR2_2 = 16,
- IMAQ_BIOR2_4 = 17,
- IMAQ_BIOR2_6 = 18,
- IMAQ_BIOR2_8 = 19,
- IMAQ_BIOR3_1 = 20,
- IMAQ_BIOR3_3 = 21,
- IMAQ_BIOR3_5 = 22,
- IMAQ_BIOR3_7 = 23,
- IMAQ_BIOR3_9 = 24,
- IMAQ_BIOR4_4 = 25,
- IMAQ_COIF1 = 26,
- IMAQ_COIF2 = 27,
- IMAQ_COIF3 = 28,
- IMAQ_COIF4 = 29,
- IMAQ_COIF5 = 30,
- IMAQ_SYM2 = 31,
- IMAQ_SYM3 = 32,
- IMAQ_SYM4 = 33,
- IMAQ_SYM5 = 34,
- IMAQ_SYM6 = 35,
- IMAQ_SYM7 = 36,
- IMAQ_SYM8 = 37,
- IMAQ_BIOR5_5 = 38,
- IMAQ_BIOR6_8 = 39,
- IMAQ_WAVE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} WaveletType;
-
-typedef enum ParticleClassifierThresholdType_enum {
- IMAQ_THRESHOLD_MANUAL = 0, //The classifier performs a manual threshold on the image during preprocessing.
- IMAQ_THRESHOLD_AUTO = 1, //The classifier performs an auto threshold on the image during preprocessing.
- IMAQ_THRESHOLD_LOCAL = 2, //The classifier performs a local threshold on the image during preprocessing.
-} ParticleClassifierThresholdType;
-
-typedef enum MeasureParticlesCalibrationMode_enum {
- IMAQ_CALIBRATION_MODE_PIXEL = 0, //The function takes only pixel measurements on the particles in the image.
- IMAQ_CALIBRATION_MODE_CALIBRATED = 1, //The function takes only calibrated measurements on the particles in the image.
- IMAQ_CALIBRATION_MODE_BOTH = 2, //The function takes both pixel and calibrated measurements on the particles in the image.
- IMAQ_MEASURE_PARTICLES_CALIBRATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} MeasureParticlesCalibrationMode;
-
-typedef enum GeometricMatchingSearchStrategy_enum {
- IMAQ_GEOMETRIC_MATCHING_CONSERVATIVE = 0, //Instructs the pattern matching algorithm to use the largest possible amount of information from the image at the expense of slowing down the speed of the algorithm.
- IMAQ_GEOMETRIC_MATCHING_BALANCED = 1, //Instructs the pattern matching algorithm to balance the amount of information from the image it uses with the speed of the algorithm.
- IMAQ_GEOMETRIC_MATCHING_AGGRESSIVE = 2, //Instructs the pattern matching algorithm to use a lower amount of information from the image, which allows the algorithm to run quickly but at the expense of accuracy.
- IMAQ_GEOMETRIC_MATCHING_SEARCH_STRATEGY_SIZE_GUARD = 0xFFFFFFFF
-} GeometricMatchingSearchStrategy;
-
-typedef enum ColorClassificationResolution_enum {
- IMAQ_CLASSIFIER_LOW_RESOLUTION = 0, //Low resolution version of the color classifier.
- IMAQ_CLASSIFIER_MEDIUM_RESOLUTION = 1, //Medium resolution version of the color classifier.
- IMAQ_CLASSIFIER_HIGH_RESOLUTION = 2, //High resolution version of the color classifier.
- IMAQ_CLASSIFIER_RESOLUTION_SIZE_GUARD = 0xFFFFFFFF
-} ColorClassificationResolution;
-
-typedef enum ConnectionConstraintType_enum {
- IMAQ_DISTANCE_CONSTRAINT = 0, //Specifies the distance, in pixels, within which the end points of two curves must lie in order to be considered part of a contour.
- IMAQ_ANGLE_CONSTRAINT = 1, //Specifies the range, in degrees, within which the difference between the angle of two curves, measured at the end points, must lie in order for the two curves to be considered part of a contour.
- IMAQ_CONNECTIVITY_CONSTRAINT = 2, //Specifies the distance, in pixels, within which a line extended from the end point of a curve must pass the end point of another curve in order for the two curves to be considered part of a contour.
- IMAQ_GRADIENT_CONSTRAINT = 3, //Specifies the range, in degrees, within which the gradient angles of two curves, measured at the end points, must lie in order for the two curves to be considered part of a contour.
- IMAQ_NUM_CONNECTION_CONSTRAINT_TYPES = 4, //.
- IMAQ_CONNECTION_CONSTRAINT_SIZE_GUARD = 0xFFFFFFFF
-} ConnectionConstraintType;
-
-typedef enum Barcode2DContrast_enum {
- IMAQ_ALL_BARCODE_2D_CONTRASTS = 0, //The function searches for barcodes of each contrast type.
- IMAQ_BLACK_ON_WHITE_BARCODE_2D = 1, //The function searches for 2D barcodes containing black data on a white background.
- IMAQ_WHITE_ON_BLACK_BARCODE_2D = 2, //The function searches for 2D barcodes containing white data on a black background.
- IMAQ_BARCODE_2D_CONTRAST_SIZE_GUARD = 0xFFFFFFFF
-} Barcode2DContrast;
-
-typedef enum QRModelType_enum {
- IMAQ_QR_MODELTYPE_AUTO_DETECT = 0, //Specifies that the function will auto-detect the type of QR code.
- IMAQ_QR_MODELTYPE_MICRO = 1, //Specifies the QR code is of a micro type.
- IMAQ_QR_MODELTYPE_MODEL1 = 2, //Specifies the QR code is of a model1 type.
- IMAQ_QR_MODELTYPE_MODEL2 = 3, //Specifies the QR code is of a model2 type.
- IMAQ_QR_MODEL_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} QRModelType;
-
-typedef enum WindowBackgroundFillStyle_enum {
- IMAQ_FILL_STYLE_SOLID = 0, //Fill the display window with a solid color.
- IMAQ_FILL_STYLE_HATCH = 2, //Fill the display window with a pattern defined by WindowBackgroundHatchStyle.
- IMAQ_FILL_STYLE_DEFAULT = 3, //Fill the display window with the NI Vision default pattern.
- IMAQ_FILL_STYLE_SIZE_GUARD = 0xFFFFFFFF
-} WindowBackgroundFillStyle;
-
-typedef enum ExtractionMode_enum {
- IMAQ_NORMAL_IMAGE = 0, //Specifies that the function makes no assumptions about the uniformity of objects in the image or the image background.
- IMAQ_UNIFORM_REGIONS = 1, //Specifies that the function assumes that either the objects in the image or the image background consists of uniform pixel values.
- IMAQ_EXTRACTION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} ExtractionMode;
-
-typedef enum EdgeFilterSize_enum {
- IMAQ_FINE = 0, //Specifies that the function uses a fine (narrow) edge filter.
- IMAQ_NORMAL = 1, //Specifies that the function uses a normal edge filter.
- IMAQ_CONTOUR_TRACING = 2, //Sets the Edge Filter Size to contour tracing, which provides the best results for contour extraction but increases the time required to process the image.
- IMAQ_EDGE_FILTER_SIZE_SIZE_GUARD = 0xFFFFFFFF
-} EdgeFilterSize;
-
-typedef enum Barcode2DSearchMode_enum {
- IMAQ_SEARCH_MULTIPLE = 0, //The function searches for multiple 2D barcodes.
- IMAQ_SEARCH_SINGLE_CONSERVATIVE = 1, //The function searches for 2D barcodes using the same searching algorithm as IMAQ_SEARCH_MULTIPLE but stops searching after locating one valid barcode.
- IMAQ_SEARCH_SINGLE_AGGRESSIVE = 2, //The function searches for a single 2D barcode using a method that assumes the barcode occupies a majority of the search region.
- IMAQ_BARCODE_2D_SEARCH_MODE_SIZE_GUARD = 0xFFFFFFFF
-} Barcode2DSearchMode;
-
-typedef enum DataMatrixSubtype_enum {
- IMAQ_ALL_DATA_MATRIX_SUBTYPES = 0, //The function searches for Data Matrix barcodes of all subtypes.
- IMAQ_DATA_MATRIX_SUBTYPES_ECC_000_ECC_140 = 1, //The function searches for Data Matrix barcodes of subtypes ECC 000, ECC 050, ECC 080, ECC 100 and ECC 140.
- IMAQ_DATA_MATRIX_SUBTYPE_ECC_200 = 2, //The function searches for Data Matrix ECC 200 barcodes.
- IMAQ_DATA_MATRIX_SUBTYPE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixSubtype;
-
-typedef enum FeatureType_enum {
- IMAQ_NOT_FOUND_FEATURE = 0, //Specifies the feature is not found.
- IMAQ_CIRCLE_FEATURE = 1, //Specifies the feature is a circle.
- IMAQ_ELLIPSE_FEATURE = 2, //Specifies the feature is an ellipse.
- IMAQ_CONST_CURVE_FEATURE = 3, //Specifies the features is a constant curve.
- IMAQ_RECTANGLE_FEATURE = 4, //Specifies the feature is a rectangle.
- IMAQ_LEG_FEATURE = 5, //Specifies the feature is a leg.
- IMAQ_CORNER_FEATURE = 6, //Specifies the feature is a corner.
- IMAQ_PARALLEL_LINE_PAIR_FEATURE = 7, //Specifies the feature is a parallel line pair.
- IMAQ_PAIR_OF_PARALLEL_LINE_PAIRS_FEATURE = 8, //Specifies the feature is a pair of parallel line pairs.
- IMAQ_LINE_FEATURE = 9, //Specifies the feature is a line.
- IMAQ_CLOSED_CURVE_FEATURE = 10, //Specifies the feature is a closed curve.
- IMAQ_FEATURE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} FeatureType;
-
-typedef enum Barcode2DCellShape_enum {
- IMAQ_SQUARE_CELLS = 0, //The function uses an algorithm for decoding the 2D barcode that works with square data cells.
- IMAQ_ROUND_CELLS = 1, //The function uses an algorithm for decoding the 2D barcode that works with round data cells.
- IMAQ_BARCODE_2D_CELL_SHAPE_SIZE_GUARD = 0xFFFFFFFF
-} Barcode2DCellShape;
-
-typedef enum LocalThresholdMethod_enum {
- IMAQ_NIBLACK = 0, //The function computes thresholds for each pixel based on its local statistics using the Niblack local thresholding algorithm.
- IMAQ_BACKGROUND_CORRECTION = 1, //The function performs background correction first to eliminate non-uniform lighting effects, then performs thresholding using the Otsu thresholding algorithm.
- IMAQ_LOCAL_THRESHOLD_METHOD_SIZE_GUARD = 0xFFFFFFFF
-} LocalThresholdMethod;
-
-typedef enum Barcode2DType_enum {
- IMAQ_PDF417 = 0, //The 2D barcode is of type PDF417.
- IMAQ_DATA_MATRIX_ECC_000 = 1, //The 2D barcode is of type Data Matrix ECC 000.
- IMAQ_DATA_MATRIX_ECC_050 = 2, //The 2D barcode is of type Data Matrix ECC 050.
- IMAQ_DATA_MATRIX_ECC_080 = 3, //The 2D barcode is of type Data Matrix ECC 080.
- IMAQ_DATA_MATRIX_ECC_100 = 4, //The 2D barcode is of type Data Matrix ECC 100.
- IMAQ_DATA_MATRIX_ECC_140 = 5, //The 2D barcode is of type Data Matrix ECC 140.
- IMAQ_DATA_MATRIX_ECC_200 = 6, //The 2D barcode is of type Data Matrix ECC 200.
- IMAQ_BARCODE_2D_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} Barcode2DType;
-
-typedef enum ClassifierEngineType_enum {
- IMAQ_ENGINE_NONE = 0, //No engine has been set on this classifier session.
- IMAQ_ENGINE_NEAREST_NEIGHBOR = 1, //Nearest neighbor engine.
- IMAQ_ENGINE_SUPPORT_VECTOR_MACHINE = 2,
- IMAQ_CLASSIFIER_ENGINE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ClassifierEngineType;
-
-typedef enum ClassifierType_enum {
- IMAQ_CLASSIFIER_CUSTOM = 0, //The classifier session classifies vectors of doubles.
- IMAQ_CLASSIFIER_PARTICLE = 1, //The classifier session classifies particles in binary images.
- IMAQ_CLASSIFIER_COLOR = 2, //The classifier session classifies an image based on its color.
- IMAQ_CLASSIFIER_TEXTURE = 3, //The classifier session classifies an image based on its texture.
- IMAQ_CLASSIFIER_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ClassifierType;
-
-typedef enum ParticleType_enum {
- IMAQ_PARTICLE_BRIGHT = 0, //Bright particles.
- IMAQ_PARTICLE_DARK = 1, //Dark particles.
- IMAQ_PARTICLE_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} ParticleType;
-
-typedef enum VisionInfoType2_enum {
- IMAQ_VISIONINFO_CALIBRATION = 0x01, //Used to indicate interaction with the Calibration information in an image.
- IMAQ_VISIONINFO_OVERLAY = 0x02, //Used to indicate interaction with the Overlay information in an image.
- IMAQ_VISIONINFO_GRAYTEMPLATE = 0x04, //Used to indicate interaction with the grayscale template information in an image.
- IMAQ_VISIONINFO_COLORTEMPLATE = 0x08, //Used to indicate interaction with the color template information in an image.
- IMAQ_VISIONINFO_GEOMETRICTEMPLATE = 0x10, //Used to indicate interaction with the geometric template information in an image.
- IMAQ_VISIONINFO_CUSTOMDATA = 0x20, //Used to indicate interaction with the binary or text Custom Data in an image.
- IMAQ_VISIONINFO_GOLDENTEMPLATE = 0x40, //Used to indicate interaction with the golden template information in an image.
- IMAQ_VISIONINFO_GEOMETRICTEMPLATE2 = 0x80, //Used to indicate interaction with the geometric template 2 information in an image.
- IMAQ_VISIONINFO_ALL = 0xFFFFFFFF, //Removes, checks for, or indicates the presence of all types of extra information in an image.
-} VisionInfoType2;
-
-typedef enum ReadClassifierFileMode_enum {
- IMAQ_CLASSIFIER_READ_ALL = 0, //Read all information from the classifier file.
- IMAQ_CLASSIFIER_READ_SAMPLES = 1, //Read only the samples from the classifier file.
- IMAQ_CLASSIFIER_READ_PROPERTIES = 2, //Read only the properties from the classifier file.
- IMAQ_READ_CLASSIFIER_FILE_MODES_SIZE_GUARD = 0xFFFFFFFF
-} ReadClassifierFileMode;
-
-typedef enum WriteClassifierFileMode_enum {
- IMAQ_CLASSIFIER_WRITE_ALL = 0, //Writes all information to the classifier file.
- IMAQ_CLASSIFIER_WRITE_CLASSIFY_ONLY = 1, //Write only the information needed to classify to the classifier file.
- IMAQ_WRITE_CLASSIFIER_FILE_MODES_SIZE_GUARD = 0xFFFFFFFF
-} WriteClassifierFileMode;
-
-typedef enum Barcode2DShape_enum {
- IMAQ_SQUARE_BARCODE_2D = 0, //The function searches for square 2D barcodes.
- IMAQ_RECTANGULAR_BARCODE_2D = 1, //The function searches for rectangular 2D barcodes.
- IMAQ_BARCODE_2D_SHAPE_SIZE_GUARD = 0xFFFFFFFF
-} Barcode2DShape;
-
-typedef enum DataMatrixRotationMode_enum {
- IMAQ_UNLIMITED_ROTATION = 0, //The function allows for unlimited rotation.
- IMAQ_0_DEGREES = 1, //The function allows for between -5 and 5 degrees of rotation.
- IMAQ_90_DEGREES = 2, //The function allows for between 85 and 95 degrees of rotation.
- IMAQ_180_DEGREES = 3, //The function allows for between 175 and 185 degrees of rotation.
- IMAQ_270_DEGREES = 4, //The function allows for between 265 and 275 degrees of rotation.
- IMAQ_DATA_MATRIX_ROTATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixRotationMode;
-
-typedef enum AIMGrade_enum {
- IMAQ_AIM_GRADE_F = 0, //The Data Matrix barcode received a grade of F.
- IMAQ_AIM_GRADE_D = 1, //The Data Matrix barcode received a grade of D.
- IMAQ_AIM_GRADE_C = 2, //The Data Matrix barcode received a grade of C.
- IMAQ_AIM_GRADE_B = 3, //The Data Matrix barcode received a grade of B.
- IMAQ_AIM_GRADE_A = 4, //The Data Matrix barcode received a grade of A.
- IMAQ_DATA_MATRIX_AIM_GRADE_SIZE_GUARD = 0xFFFFFFFF
-} AIMGrade;
-
-typedef enum DataMatrixCellFillMode_enum {
- IMAQ_AUTO_DETECT_CELL_FILL_MODE = -2, //Sets the function to determine the Data Matrix barcode cell fill percentage automatically.
- IMAQ_LOW_FILL = 0, //Sets the function to read Data Matrix barcodes with a cell fill percentage of less than 30 percent.
- IMAQ_NORMAL_FILL = 1, //Sets the function to read Data Matrix barcodes with a cell fill percentage greater than or equal to 30 percent.
- IMAQ_DATA_MATRIX_CELL_FILL_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixCellFillMode;
-
-typedef enum DataMatrixDemodulationMode_enum {
- IMAQ_AUTO_DETECT_DEMODULATION_MODE = -2, //The function will try each demodulation mode and use the one which decodes the Data Matrix barcode within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_HISTOGRAM = 0, //The function uses a histogram of all of the Data Matrix cells to calculate a threshold.
- IMAQ_LOCAL_CONTRAST = 1, //The function examines each of the cell's neighbors to determine if the cell is on or off.
- IMAQ_COMBINED = 2, //The function uses the histogram of the Data Matrix barcode to calculate a threshold.
- IMAQ_ALL_DEMODULATION_MODES = 3, //The function tries IMAQ_HISTOGRAM, then IMAQ_LOCAL_CONTRAST and then IMAQ_COMBINATION, stopping once one mode is successful.
- IMAQ_DATA_MATRIX_DEMODULATION_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixDemodulationMode;
-
-typedef enum DataMatrixECC_enum {
- IMAQ_AUTO_DETECT_ECC = -2, //Sets the function to determine the Data Matrix barcode ECC automatically.
- IMAQ_ECC_000 = 0, //Sets the function to read Data Matrix barcodes of ECC 000 only.
- IMAQ_ECC_050 = 50, //Sets the function to read Data Matrix barcodes of ECC 050 only.
- IMAQ_ECC_080 = 80, //Sets the function to read Data Matrix barcodes of ECC 080 only.
- IMAQ_ECC_100 = 100, //Sets the function to read Data Matrix barcodes of ECC 100 only.
- IMAQ_ECC_140 = 140, //Sets the function to read Data Matrix barcodes of ECC 140 only.
- IMAQ_ECC_000_140 = 190, //Sets the function to read Data Matrix barcodes of ECC 000, ECC 050, ECC 080, ECC 100, and ECC 140 only.
- IMAQ_ECC_200 = 200, //Sets the function to read Data Matrix barcodes of ECC 200 only.
- IMAQ_DATA_MATRIX_ECC_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixECC;
-
-typedef enum DataMatrixPolarity_enum {
- IMAQ_AUTO_DETECT_POLARITY = -2, //Sets the function to determine the Data Matrix barcode polarity automatically.
- IMAQ_BLACK_DATA_ON_WHITE_BACKGROUND = 0, //Sets the function to read Data Matrix barcodes with dark data on a bright background.
- IMAQ_WHITE_DATA_ON_BLACK_BACKGROUND = 1, //Sets the function to read Data Matrix barcodes with bright data on a dark background.
- IMAQ_DATA_MATRIX_POLARITY_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixPolarity;
-
-typedef enum DataMatrixCellFilterMode_enum {
- IMAQ_AUTO_DETECT_CELL_FILTER_MODE = -2, //The function will try all filter modes and uses the one that decodes the Data Matrix barcode within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_AVERAGE_FILTER = 0, //The function sets the pixel value for the cell to the average of the sampled pixels.
- IMAQ_MEDIAN_FILTER = 1, //The function sets the pixel value for the cell to the median of the sampled pixels.
- IMAQ_CENTRAL_AVERAGE_FILTER = 2, //The function sets the pixel value for the cell to the average of the pixels in the center of the cell sample.
- IMAQ_HIGH_AVERAGE_FILTER = 3, //The function sets the pixel value for the cell to the average value of the half of the sampled pixels with the highest pixel values.
- IMAQ_LOW_AVERAGE_FILTER = 4, //The function sets the pixel value for the cell to the average value of the half of the sampled pixels with the lowest pixel values.
- IMAQ_VERY_HIGH_AVERAGE_FILTER = 5, //The function sets the pixel value for the cell to the average value of the ninth of the sampled pixels with the highest pixel values.
- IMAQ_VERY_LOW_AVERAGE_FILTER = 6, //The function sets the pixel value for the cell to the average value of the ninth of the sampled pixels with the lowest pixel values.
- IMAQ_ALL_CELL_FILTERS = 8, //The function tries each filter mode, starting with IMAQ_AVERAGE_FILTER and ending with IMAQ_VERY_LOW_AVERAGE_FILTER, stopping once a filter mode decodes correctly.
- IMAQ_DATA_MATRIX_CELL_FILTER_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixCellFilterMode;
-
-typedef enum WindowBackgroundHatchStyle_enum {
- IMAQ_HATCH_STYLE_HORIZONTAL = 0, //The background of the display window will be horizontal bars.
- IMAQ_HATCH_STYLE_VERTICAL = 1, //The background of the display window will be vertical bars.
- IMAQ_HATCH_STYLE_FORWARD_DIAGONAL = 2, //The background of the display window will be diagonal bars.
- IMAQ_HATCH_STYLE_BACKWARD_DIAGONAL = 3, //The background of the display window will be diagonal bars.
- IMAQ_HATCH_STYLE_CROSS = 4, //The background of the display window will be intersecting horizontal and vertical bars.
- IMAQ_HATCH_STYLE_CROSS_HATCH = 5, //The background of the display window will be intersecting forward and backward diagonal bars.
- IMAQ_HATCH_STYLE_SIZE_GUARD = 0xFFFFFFFF
-} WindowBackgroundHatchStyle;
-
-typedef enum DataMatrixMirrorMode_enum {
- IMAQ_AUTO_DETECT_MIRROR = -2, //Specifies that the function should determine if the Data Matrix barcode is mirrored.
- IMAQ_APPEARS_NORMAL = 0, //Specifies that the function should expect the Data Matrix barcode to appear normal.
- IMAQ_APPEARS_MIRRORED = 1, //Specifies that the function should expect the Data Matrix barcode to appear mirrored.
- IMAQ_DATA_MATRIX_MIRROR_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixMirrorMode;
-
-typedef enum CalibrationMode2_enum {
- IMAQ_PERSPECTIVE_MODE = 0, //Functions correct for distortion caused by the camera's perspective.
- IMAQ_MICROPLANE_MODE = 1, //Functions correct for distortion caused by the camera's lens.
- IMAQ_SIMPLE_CALIBRATION_MODE = 2, //Functions do not correct for distortion.
- IMAQ_CORRECTED_IMAGE_MODE = 3, //The image is already corrected.
- IMAQ_NO_CALIBRATION_MODE = 4, //Image with No calibration.
- IMAQ_CALIBRATION_MODE2_SIZE_GUARD = 0xFFFFFFFF
-} CalibrationMode2;
-
-typedef enum DataMatrixGradingMode_enum {
- IMAQ_NO_GRADING = 0, //The function does not make any preparatory calculations.
- IMAQ_PREPARE_FOR_AIM = 1, //The function prepares the image for grading using the AIM Print Quality metrics.
- IMAQ_DATA_MATRIX_GRADING_MODE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixGradingMode;
-
-typedef enum WaveletTransformMode_enum {
- IMAQ_WAVELET_TRANSFORM_INTEGER = 0, //Uses a 5-3 reversible integer transform.
- IMAQ_WAVELET_TRANSFORM_FLOATING_POINT = 1, //Performs a 9-7 irreversible floating-point transform.
- IMAQ_WAVELET_TRANSFORM_MODE_SIZE_GUARD = 0xFFFFFFFF
-} WaveletTransformMode;
-
-typedef enum NormalizationMethod_enum {
- IMAQ_NORMALIZATION_NONE = 0, //No normalization.
- IMAQ_NORMALIZATION_HISTOGRAM_MATCHING = 1, //Adjust image so its histogram is similar to the golden template's histogram.
- IMAQ_NORMALIZATION_AVERAGE_MATCHING = 2, //Adjust image so its mean pixel value equals the golden template's mean pixel value.
- IMAQ_NORMALIZATION_SIZE_GUARD = 0xFFFFFFFF
-} NormalizationMethod;
-
-typedef enum RegistrationMethod_enum {
- IMAQ_REGISTRATION_NONE = 0, //No registration.
- IMAQ_REGISTRATION_PERSPECTIVE = 1, //Adjust image to correct for minor variations in alignment or perspective.
- IMAQ_REGISTRATION_SIZE_GUARD = 0xFFFFFFFF
-} RegistrationMethod;
-
-typedef enum LinearAveragesMode_enum {
- IMAQ_COLUMN_AVERAGES = 1, //Specifies that the function calculates the mean pixel value of each column.
- IMAQ_ROW_AVERAGES = 2, //Specifies that the function calculates the mean pixel value of each row.
- IMAQ_RISING_DIAGONAL_AVERAGES = 4, //Specifies that the function calculates the mean pixel value of each diagonal running from the lower left to the upper right of the inspected area of the image.
- IMAQ_FALLING_DIAGONAL_AVERAGES = 8, //Specifies that the function calculates the mean pixel value of each diagonal running from the upper left to the lower right of the inspected area of the image.
- IMAQ_ALL_LINEAR_AVERAGES = 15, //Specifies that the function calculates all four linear mean pixel values.
- IMAQ_LINEAR_AVERAGES_MODE_SIZE_GUARD = 0xFFFFFFFF
-} LinearAveragesMode;
-
-typedef enum CompressionType_enum {
- IMAQ_COMPRESSION_NONE = 0, //Specifies that the function should not compress the image.
- IMAQ_COMPRESSION_JPEG = 1, //Specifies that the function should use lossy JPEG compression on the image.
- IMAQ_COMPRESSION_PACKED_BINARY = 2, //Specifies that the function should use lossless binary packing on the image.
- IMAQ_COMPRESSION_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} CompressionType;
-
-typedef enum FlattenType_enum {
- IMAQ_FLATTEN_IMAGE = 0, //Flattens just the image data.
- IMAQ_FLATTEN_IMAGE_AND_VISION_INFO = 1, //Flattens the image data and any Vision information associated with the image.
- IMAQ_FLATTEN_TYPE_SIZE_GUARD = 0xFFFFFFFF
-} FlattenType;
-
-typedef enum DataMatrixCellSampleSize_enum {
- IMAQ_AUTO_DETECT_CELL_SAMPLE_SIZE = -2, //The function will try each sample size and use the one which decodes the Data Matrix barcode within the fewest iterations and utilizing the least amount of error correction.
- IMAQ_1x1 = 1, //The function will use a 1x1 sized sample from each cell.
- IMAQ_2x2 = 2, //The function will use a 2x2 sized sample from each cell.
- IMAQ_3x3 = 3, //The function will use a 3x3 sized sample from each cell.
- IMAQ_4x4 = 4, //The function will use a 4x4 sized sample from each cell.
- IMAQ_5x5 = 5, //The function will use a 5x5 sized sample from each cell.
- IMAQ_6x6 = 6, //The function will use a 6x6 sized sample from each cell.
- IMAQ_7x7 = 7, //The function will use a 7x7 sized sample from each cell.
- IMAQ_DATA_MATRIX_CELL_SAMPLE_SIZE_SIZE_GUARD = 0xFFFFFFFF
-} DataMatrixCellSampleSize;
-
-
-//============================================================================
-// Forward Declare Data Structures
-//============================================================================
-typedef struct Image_struct Image;
-typedef struct ROI_struct ROI;
-typedef struct Overlay_struct Overlay;
-typedef struct ClassifierSession_struct ClassifierSession;
-typedef struct MultipleGeometricPattern_struct MultipleGeometricPattern;
-typedef int ContourID;
-typedef unsigned long SESSION_ID;
-typedef int AVISession;
-typedef char* FilterName;
-typedef char String255[256];
-typedef struct CharSet_struct CharSet;
-typedef struct OCRSpacingOptions_struct OCRSpacingOptions;
-typedef struct OCRProcessingOptions_struct OCRProcessingOptions;
-typedef struct ReadTextOptions_struct ReadTextOptions;
-typedef struct CharInfo_struct CharInfo;
-typedef struct CharReport_struct CharReport;
-typedef struct ReadTextReport_struct ReadTextReport;
-typedef struct DivisionModel_struct DivisionModel;
-typedef struct FocalLength_struct FocalLength;
-typedef struct PolyModel_struct PolyModel;
-typedef struct DistortionModelParams_struct DistortionModelParams;
-typedef struct PointFloat_struct PointFloat;
-typedef struct InternalParameters_struct InternalParameters;
-typedef struct MaxGridSize_struct MaxGridSize;
-typedef struct ImageSize_struct ImageSize;
-typedef struct CalibrationReferencePoints_struct CalibrationReferencePoints;
-typedef struct GetCameraParametersReport_struct GetCameraParametersReport;
-typedef struct CalibrationAxisInfo_struct CalibrationAxisInfo;
-typedef struct CalibrationLearnSetupInfo_struct CalibrationLearnSetupInfo;
-typedef struct GridDescriptor_struct GridDescriptor;
-typedef struct ErrorStatistics_struct ErrorStatistics;
-typedef struct GetCalibrationInfoReport_struct GetCalibrationInfoReport;
-typedef struct EdgePolarity_struct EdgePolarity;
-typedef struct ClampSettings_struct ClampSettings;
-typedef struct PointDouble_struct PointDouble;
-typedef struct PointDoublePair_struct PointDoublePair;
-typedef struct ClampResults_struct ClampResults;
-typedef struct ClampPoints_struct ClampPoints;
-typedef struct RGBValue_struct RGBValue;
-typedef struct ClampOverlaySettings_struct ClampOverlaySettings;
-typedef struct ClampMax2Report_struct ClampMax2Report;
-typedef struct ContourFitSplineReport_struct ContourFitSplineReport;
-typedef struct LineFloat_struct LineFloat;
-typedef struct LineEquation_struct LineEquation;
-typedef struct ContourFitLineReport_struct ContourFitLineReport;
-typedef struct ContourFitPolynomialReport_struct ContourFitPolynomialReport;
-typedef struct PartialCircle_struct PartialCircle;
-typedef struct PartialEllipse_struct PartialEllipse;
-typedef struct SetupMatchPatternData_struct SetupMatchPatternData;
-typedef struct RangeSettingDouble_struct RangeSettingDouble;
-typedef struct GeometricAdvancedSetupDataOption_struct GeometricAdvancedSetupDataOption;
-typedef struct ContourInfoReport_struct ContourInfoReport;
-typedef struct ROILabel_struct ROILabel;
-typedef struct SupervisedColorSegmentationReport_struct SupervisedColorSegmentationReport;
-typedef struct LabelToROIReport_struct LabelToROIReport;
-typedef struct ColorSegmenationOptions_struct ColorSegmenationOptions;
-typedef struct ClassifiedCurve_struct ClassifiedCurve;
-typedef struct RangeDouble_struct RangeDouble;
-typedef struct RangeLabel_struct RangeLabel;
-typedef struct CurvatureAnalysisReport_struct CurvatureAnalysisReport;
-typedef struct Disparity_struct Disparity;
-typedef struct ComputeDistancesReport_struct ComputeDistancesReport;
-typedef struct MatchMode_struct MatchMode;
-typedef struct ClassifiedDisparity_struct ClassifiedDisparity;
-typedef struct ClassifyDistancesReport_struct ClassifyDistancesReport;
-typedef struct ContourComputeCurvatureReport_struct ContourComputeCurvatureReport;
-typedef struct ContourOverlaySettings_struct ContourOverlaySettings;
-typedef struct CurveParameters_struct CurveParameters;
-typedef struct ExtractContourReport_struct ExtractContourReport;
-typedef struct ConnectionConstraint_struct ConnectionConstraint;
-typedef struct ExtractTextureFeaturesReport_struct ExtractTextureFeaturesReport;
-typedef struct WaveletBandsReport_struct WaveletBandsReport;
-typedef struct CircleFitOptions_struct CircleFitOptions;
-typedef struct EdgeOptions2_struct EdgeOptions2;
-typedef struct FindCircularEdgeOptions_struct FindCircularEdgeOptions;
-typedef struct FindConcentricEdgeOptions_struct FindConcentricEdgeOptions;
-typedef struct ConcentricEdgeFitOptions_struct ConcentricEdgeFitOptions;
-typedef struct FindConcentricEdgeReport_struct FindConcentricEdgeReport;
-typedef struct FindCircularEdgeReport_struct FindCircularEdgeReport;
-typedef struct WindowSize_struct WindowSize;
-typedef struct DisplacementVector_struct DisplacementVector;
-typedef struct WaveletOptions_struct WaveletOptions;
-typedef struct CooccurrenceOptions_struct CooccurrenceOptions;
-typedef struct ParticleClassifierLocalThresholdOptions_struct ParticleClassifierLocalThresholdOptions;
-typedef struct RangeFloat_struct RangeFloat;
-typedef struct ParticleClassifierAutoThresholdOptions_struct ParticleClassifierAutoThresholdOptions;
-typedef struct ParticleClassifierPreprocessingOptions2_struct ParticleClassifierPreprocessingOptions2;
-typedef struct MeasureParticlesReport_struct MeasureParticlesReport;
-typedef struct GeometricPatternMatch3_struct GeometricPatternMatch3;
-typedef struct MatchGeometricPatternAdvancedOptions3_struct MatchGeometricPatternAdvancedOptions3;
-typedef struct ColorOptions_struct ColorOptions;
-typedef struct SampleScore_struct SampleScore;
-typedef struct ClassifierReportAdvanced_struct ClassifierReportAdvanced;
-typedef struct LearnGeometricPatternAdvancedOptions2_struct LearnGeometricPatternAdvancedOptions2;
-typedef struct ParticleFilterOptions2_struct ParticleFilterOptions2;
-typedef struct FindEdgeOptions2_struct FindEdgeOptions2;
-typedef struct FindEdgeReport_struct FindEdgeReport;
-typedef struct FindTransformRectOptions2_struct FindTransformRectOptions2;
-typedef struct FindTransformRectsOptions2_struct FindTransformRectsOptions2;
-typedef struct ReadTextReport3_struct ReadTextReport3;
-typedef struct CharacterStatistics_struct CharacterStatistics;
-typedef struct CharReport3_struct CharReport3;
-typedef struct ArcInfo2_struct ArcInfo2;
-typedef struct EdgeReport2_struct EdgeReport2;
-typedef struct SearchArcInfo_struct SearchArcInfo;
-typedef struct ConcentricRakeReport2_struct ConcentricRakeReport2;
-typedef struct SpokeReport2_struct SpokeReport2;
-typedef struct EdgeInfo_struct EdgeInfo;
-typedef struct SearchLineInfo_struct SearchLineInfo;
-typedef struct RakeReport2_struct RakeReport2;
-typedef struct TransformBehaviors_struct TransformBehaviors;
-typedef struct QRCodeDataToken_struct QRCodeDataToken;
-typedef struct ParticleFilterOptions_struct ParticleFilterOptions;
-typedef struct StraightEdgeReport2_struct StraightEdgeReport2;
-typedef struct StraightEdgeOptions_struct StraightEdgeOptions;
-typedef struct StraightEdge_struct StraightEdge;
-typedef struct QRCodeSearchOptions_struct QRCodeSearchOptions;
-typedef struct QRCodeSizeOptions_struct QRCodeSizeOptions;
-typedef struct QRCodeDescriptionOptions_struct QRCodeDescriptionOptions;
-typedef struct QRCodeReport_struct QRCodeReport;
-typedef struct AIMGradeReport_struct AIMGradeReport;
-typedef struct DataMatrixSizeOptions_struct DataMatrixSizeOptions;
-typedef struct DataMatrixDescriptionOptions_struct DataMatrixDescriptionOptions;
-typedef struct DataMatrixSearchOptions_struct DataMatrixSearchOptions;
-typedef struct DataMatrixReport_struct DataMatrixReport;
-typedef struct JPEG2000FileAdvancedOptions_struct JPEG2000FileAdvancedOptions;
-typedef struct MatchGeometricPatternAdvancedOptions2_struct MatchGeometricPatternAdvancedOptions2;
-typedef struct InspectionAlignment_struct InspectionAlignment;
-typedef struct InspectionOptions_struct InspectionOptions;
-typedef struct CharReport2_struct CharReport2;
-typedef struct CharInfo2_struct CharInfo2;
-typedef struct ReadTextReport2_struct ReadTextReport2;
-typedef struct EllipseFeature_struct EllipseFeature;
-typedef struct CircleFeature_struct CircleFeature;
-typedef struct ConstCurveFeature_struct ConstCurveFeature;
-typedef struct RectangleFeature_struct RectangleFeature;
-typedef struct LegFeature_struct LegFeature;
-typedef struct CornerFeature_struct CornerFeature;
-typedef struct LineFeature_struct LineFeature;
-typedef struct ParallelLinePairFeature_struct ParallelLinePairFeature;
-typedef struct PairOfParallelLinePairsFeature_struct PairOfParallelLinePairsFeature;
-typedef union GeometricFeature_union GeometricFeature;
-typedef struct FeatureData_struct FeatureData;
-typedef struct GeometricPatternMatch2_struct GeometricPatternMatch2;
-typedef struct ClosedCurveFeature_struct ClosedCurveFeature;
-typedef struct LineMatch_struct LineMatch;
-typedef struct LineDescriptor_struct LineDescriptor;
-typedef struct RectangleDescriptor_struct RectangleDescriptor;
-typedef struct RectangleMatch_struct RectangleMatch;
-typedef struct EllipseDescriptor_struct EllipseDescriptor;
-typedef struct EllipseMatch_struct EllipseMatch;
-typedef struct CircleMatch_struct CircleMatch;
-typedef struct CircleDescriptor_struct CircleDescriptor;
-typedef struct ShapeDetectionOptions_struct ShapeDetectionOptions;
-typedef struct Curve_struct Curve;
-typedef struct CurveOptions_struct CurveOptions;
-typedef struct Barcode2DInfo_struct Barcode2DInfo;
-typedef struct DataMatrixOptions_struct DataMatrixOptions;
-typedef struct ClassifierAccuracyReport_struct ClassifierAccuracyReport;
-typedef struct NearestNeighborClassResult_struct NearestNeighborClassResult;
-typedef struct NearestNeighborTrainingReport_struct NearestNeighborTrainingReport;
-typedef struct ParticleClassifierPreprocessingOptions_struct ParticleClassifierPreprocessingOptions;
-typedef struct ClassifierSampleInfo_struct ClassifierSampleInfo;
-typedef struct ClassScore_struct ClassScore;
-typedef struct ClassifierReport_struct ClassifierReport;
-typedef struct NearestNeighborOptions_struct NearestNeighborOptions;
-typedef struct ParticleClassifierOptions_struct ParticleClassifierOptions;
-typedef struct RGBU64Value_struct RGBU64Value;
-typedef struct GeometricPatternMatch_struct GeometricPatternMatch;
-typedef struct MatchGeometricPatternAdvancedOptions_struct MatchGeometricPatternAdvancedOptions;
-typedef struct MatchGeometricPatternOptions_struct MatchGeometricPatternOptions;
-typedef struct LearnGeometricPatternAdvancedOptions_struct LearnGeometricPatternAdvancedOptions;
-typedef struct FitEllipseOptions_struct FitEllipseOptions;
-typedef struct FitCircleOptions_struct FitCircleOptions;
-typedef struct ConstructROIOptions2_struct ConstructROIOptions2;
-typedef struct HSLValue_struct HSLValue;
-typedef struct HSVValue_struct HSVValue;
-typedef struct HSIValue_struct HSIValue;
-typedef struct CIELabValue_struct CIELabValue;
-typedef struct CIEXYZValue_struct CIEXYZValue;
-typedef union Color2_union Color2;
-typedef struct BestEllipse2_struct BestEllipse2;
-typedef struct LearnPatternAdvancedOptions_struct LearnPatternAdvancedOptions;
-typedef struct AVIInfo_struct AVIInfo;
-typedef struct LearnPatternAdvancedShiftOptions_struct LearnPatternAdvancedShiftOptions;
-typedef struct LearnPatternAdvancedRotationOptions_struct LearnPatternAdvancedRotationOptions;
-typedef struct MatchPatternAdvancedOptions_struct MatchPatternAdvancedOptions;
-typedef struct ParticleFilterCriteria2_struct ParticleFilterCriteria2;
-typedef struct BestCircle2_struct BestCircle2;
-typedef struct OCRSpacingOptions_struct OCRSpacingOptions;
-typedef struct OCRProcessingOptions_struct OCRProcessingOptions;
-typedef struct ReadTextOptions_struct ReadTextOptions;
-typedef struct CharInfo_struct CharInfo;
-#if !defined(USERINT_HEADER) && !defined(_CVI_RECT_DEFINED)
-typedef struct Rect_struct Rect;
-#endif
-typedef struct CharReport_struct CharReport;
-typedef struct ReadTextReport_struct ReadTextReport;
-#if !defined(USERINT_HEADER) && !defined(_CVI_POINT_DEFINED)
-typedef struct Point_struct Point;
-#endif
-typedef struct Annulus_struct Annulus;
-typedef struct EdgeLocationReport_struct EdgeLocationReport;
-typedef struct EdgeOptions_struct EdgeOptions;
-typedef struct EdgeReport_struct EdgeReport;
-typedef struct ExtremeReport_struct ExtremeReport;
-typedef struct FitLineOptions_struct FitLineOptions;
-typedef struct DisplayMapping_struct DisplayMapping;
-typedef struct DetectExtremesOptions_struct DetectExtremesOptions;
-typedef struct ImageInfo_struct ImageInfo;
-typedef struct LCDOptions_struct LCDOptions;
-typedef struct LCDReport_struct LCDReport;
-typedef struct LCDSegments_struct LCDSegments;
-typedef struct LearnCalibrationOptions_struct LearnCalibrationOptions;
-typedef struct LearnColorPatternOptions_struct LearnColorPatternOptions;
-typedef struct Line_struct Line;
-typedef struct LinearAverages_struct LinearAverages;
-typedef struct LineProfile_struct LineProfile;
-typedef struct MatchColorPatternOptions_struct MatchColorPatternOptions;
-typedef struct HistogramReport_struct HistogramReport;
-typedef struct ArcInfo_struct ArcInfo;
-typedef struct AxisReport_struct AxisReport;
-typedef struct BarcodeInfo_struct BarcodeInfo;
-typedef struct BCGOptions_struct BCGOptions;
-typedef struct BestCircle_struct BestCircle;
-typedef struct BestEllipse_struct BestEllipse;
-typedef struct BestLine_struct BestLine;
-typedef struct BrowserOptions_struct BrowserOptions;
-typedef struct CoordinateSystem_struct CoordinateSystem;
-typedef struct CalibrationInfo_struct CalibrationInfo;
-typedef struct CalibrationPoints_struct CalibrationPoints;
-typedef struct CaliperOptions_struct CaliperOptions;
-typedef struct CaliperReport_struct CaliperReport;
-typedef struct DrawTextOptions_struct DrawTextOptions;
-typedef struct CircleReport_struct CircleReport;
-typedef struct ClosedContour_struct ClosedContour;
-typedef struct ColorHistogramReport_struct ColorHistogramReport;
-typedef struct ColorInformation_struct ColorInformation;
-typedef struct Complex_struct Complex;
-typedef struct ConcentricRakeReport_struct ConcentricRakeReport;
-typedef struct ConstructROIOptions_struct ConstructROIOptions;
-typedef struct ContourInfo_struct ContourInfo;
-typedef union ContourUnion_union ContourUnion;
-typedef struct ContourInfo2_struct ContourInfo2;
-typedef struct ContourPoint_struct ContourPoint;
-typedef struct CoordinateTransform_struct CoordinateTransform;
-typedef struct CoordinateTransform2_struct CoordinateTransform2;
-typedef struct CannyOptions_struct CannyOptions;
-typedef struct Range_struct Range;
-typedef struct UserPointSymbol_struct UserPointSymbol;
-typedef struct View3DOptions_struct View3DOptions;
-typedef struct MatchPatternOptions_struct MatchPatternOptions;
-typedef struct TIFFFileOptions_struct TIFFFileOptions;
-typedef union Color_union Color;
-typedef union PixelValue_union PixelValue;
-typedef struct OpenContour_struct OpenContour;
-typedef struct OverlayTextOptions_struct OverlayTextOptions;
-typedef struct ParticleFilterCriteria_struct ParticleFilterCriteria;
-typedef struct ParticleReport_struct ParticleReport;
-typedef struct PatternMatch_struct PatternMatch;
-typedef struct QuantifyData_struct QuantifyData;
-typedef struct QuantifyReport_struct QuantifyReport;
-typedef struct RakeOptions_struct RakeOptions;
-typedef struct RakeReport_struct RakeReport;
-typedef struct TransformReport_struct TransformReport;
-typedef struct ShapeReport_struct ShapeReport;
-typedef struct MeterArc_struct MeterArc;
-typedef struct ThresholdData_struct ThresholdData;
-typedef struct StructuringElement_struct StructuringElement;
-typedef struct SpokeReport_struct SpokeReport;
-typedef struct SimpleEdgeOptions_struct SimpleEdgeOptions;
-typedef struct SelectParticleCriteria_struct SelectParticleCriteria;
-typedef struct SegmentInfo_struct SegmentInfo;
-typedef struct RotationAngleRange_struct RotationAngleRange;
-typedef struct RotatedRect_struct RotatedRect;
-typedef struct ROIProfile_struct ROIProfile;
-typedef struct ToolWindowOptions_struct ToolWindowOptions;
-typedef struct SpokeOptions_struct SpokeOptions;
-
-//============================================================================
-// Data Structures
-//============================================================================
-#if !defined __GNUC__ && !defined _M_X64
-#pragma pack(push,1)
-#endif
-typedef struct DivisionModel_struct {
- float kappa; //The learned kappa coefficient of division model.
-} DivisionModel;
-
-typedef struct FocalLength_struct {
- float fx; //Focal length in X direction.
- float fy; //Focal length in Y direction.
-} FocalLength;
-
-typedef struct PolyModel_struct {
- float* kCoeffs; //The learned radial coefficients of polynomial model.
- unsigned int numKCoeffs; //Number of K coefficients.
- float p1; //The P1(learned tangential coefficients of polynomial model).
- float p2; //The P2(learned tangential coefficients of polynomial model).
-} PolyModel;
-
-typedef struct DistortionModelParams_struct {
- DistortionModel distortionModel; //Type of learned distortion model.
- PolyModel polyModel; //The learned coefficients of polynomial model.
- DivisionModel divisionModel; //The learned coefficient of division model.
-} DistortionModelParams;
-
-typedef struct PointFloat_struct {
- float x; //The x-coordinate of the point.
- float y; //The y-coordinate of the point.
-} PointFloat;
-
-typedef struct InternalParameters_struct {
- char isInsufficientData;
- FocalLength focalLength;
- PointFloat opticalCenter;
-} InternalParameters;
-
-typedef struct MaxGridSize_struct {
- unsigned int xMax; //Maximum x limit for the grid size.
- unsigned int yMax; //Maximum y limit for the grid size.
-} MaxGridSize;
-
-typedef struct ImageSize_struct {
- unsigned int xRes; //X resolution of the image.
- unsigned int yRes; //Y resolution of the image.
-} ImageSize;
-
-typedef struct CalibrationReferencePoints_struct {
- PointDouble* pixelCoords; //Specifies the coordinates of the pixel reference points.
- unsigned int numPixelCoords; //Number of pixel coordinates.
- PointDouble* realCoords; //Specifies the measuring unit associated with the image.
- unsigned int numRealCoords; //Number of real coordinates.
- CalibrationUnit units; //Specifies the units of X Step and Y Step.
- ImageSize imageSize; //Specifies the size of calibration template image.
-} CalibrationReferencePoints;
-
-typedef struct GetCameraParametersReport_struct {
- double* projectionMatrix; //The projection(homography) matrix of working plane.
- unsigned int projectionMatrixRows; //Number of rows in projection matrix.
- unsigned int projectionMatrixCols; //Number of columns in projection matrix.
- DistortionModelParams distortion; //Distortion model Coefficients.
- InternalParameters internalParams; //The learned internal paramters of camera model such as focal length and optical center.
-} GetCameraParametersReport;
-
-typedef struct CalibrationAxisInfo_struct {
- PointFloat center; //The origin of the reference coordinate system, expressed in pixel units.
- float rotationAngle; //The angle of the x-axis of the real-world coordinate system, in relation to the horizontal.
- AxisOrientation axisDirection; //Specifies the direction of the calibraiton axis which is either Direct or Indirect.
-} CalibrationAxisInfo;
-
-typedef struct CalibrationLearnSetupInfo_struct {
- CalibrationMode2 calibrationMethod; //Type of calibration method used.
- DistortionModel distortionModel; //Type of learned distortion model.
- ScalingMethod scaleMode; //The aspect scaling to use when correcting an image.
- CalibrationROI roiMode; //The ROI to use when correcting an image.
- char learnCorrectionTable; //Set this input to true value if you want the correction table to be determined and stored.
-} CalibrationLearnSetupInfo;
-
-typedef struct GridDescriptor_struct {
- float xStep; //The distance in the x direction between two adjacent pixels in units specified by unit.
- float yStep; //The distance in the y direction between two adjacent pixels in units specified by unit.
- CalibrationUnit unit; //The unit of measure for the image.
-} GridDescriptor;
-
-typedef struct ErrorStatistics_struct {
- double mean; //Mean error statistics value.
- double maximum; //Maximum value of error.
- double standardDeviation; //The standard deviation error statistiscs value.
- double distortion; //The distortion error statistics value.
-} ErrorStatistics;
-
-typedef struct GetCalibrationInfoReport_struct {
- ROI* userRoi; //Specifies the ROI the user provided when learning the calibration.
- ROI* calibrationRoi; //Specifies the ROI that corresponds to the region of the image where the calibration information is accurate.
- CalibrationAxisInfo axisInfo; //Reference Coordinate System for the real-world coordinates.
- CalibrationLearnSetupInfo learnSetupInfo; //Calibration learn setup information.
- GridDescriptor gridDescriptor; //Specifies scaling constants used to calibrate the image.
- float* errorMap; //The the error map of calibration template image.
- unsigned int errorMapRows; //Number of rows in error map.
- unsigned int errorMapCols; //Number of Columns in error map.
- ErrorStatistics errorStatistics; //Error statistics of the calibration.
-} GetCalibrationInfoReport;
-
-typedef struct EdgePolarity_struct {
- EdgePolaritySearchMode start;
- EdgePolaritySearchMode end;
-} EdgePolarity;
-
-typedef struct ClampSettings_struct {
- double angleRange; //Specifies the angle range.
- EdgePolarity edgePolarity; //Specifies the edge polarity.
-} ClampSettings;
-
-typedef struct PointDouble_struct {
- double x; //The x-coordinate of the point.
- double y; //The y-coordinate of the point.
-} PointDouble;
-
-typedef struct PointDoublePair_struct {
- PointDouble start; //The Start co-ordinate of the pair.
- PointDouble end; //The End co-ordinate of the pair.
-} PointDoublePair;
-
-typedef struct ClampResults_struct {
- double distancePix; //Defines the Pixel world distance.
- double distanceRealWorld; //Defines the real world distance.
- double angleAbs; //Defines the absolute angle.
- double angleRelative; //Defines the relative angle.
-} ClampResults;
-
-typedef struct ClampPoints_struct {
- PointDoublePair pixel; //Specifies the pixel world point pair for clamp.
- PointDoublePair realWorld; //Specifies the real world point pair for clamp.
-} ClampPoints;
-
-typedef struct RGBValue_struct {
- unsigned char B; //The blue value of the color.
- unsigned char G; //The green value of the color.
- unsigned char R; //The red value of the color.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} RGBValue;
-
-typedef struct ClampOverlaySettings_struct {
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showCurves; //If TRUE, the function overlays the curves on the image.
- int showClampLocation; //If TRUE, the function overlays the clamp location on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue curvesColor; //Specifies the RGB color value to use to overlay the curves.
- RGBValue clampLocationsColor; //Specifies the RGB color value to use to overlay the clamp locations.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the group overlay name for the step overlays.
-} ClampOverlaySettings;
-
-typedef struct ClampMax2Report_struct {
- ClampResults clampResults; //Specifies the Clamp results information returned by the function.
- ClampPoints clampPoints; //Specifies the clamp points information returned by the function.
- unsigned int calibrationValid; //Specifies if the calibration information is valid or not.
-} ClampMax2Report;
-
-typedef struct ContourFitSplineReport_struct {
- PointDouble* points; //It returns the points of the best-fit B-spline curve.
- int numberOfPoints; //Number of Best fit points returned.
-} ContourFitSplineReport;
-
-typedef struct LineFloat_struct {
- PointFloat start; //The coordinate location of the start of the line.
- PointFloat end; //The coordinate location of the end of the line.
-} LineFloat;
-
-typedef struct LineEquation_struct {
- double a; //The a coefficient of the line equation.
- double b; //The b coefficient of the line equation.
- double c; //The c coefficient of the line equation.
-} LineEquation;
-
-typedef struct ContourFitLineReport_struct {
- LineFloat lineSegment; //Line Segment represents the intersection of the line equation and the contour.
- LineEquation lineEquation; //Line Equation is a structure of three coefficients A, B, and C of the equation in the normal form (Ax + By + C=0) of the best fit line.
-} ContourFitLineReport;
-
-typedef struct ContourFitPolynomialReport_struct {
- PointDouble* bestFit; //It returns the points of the best-fit polynomial.
- int numberOfPoints; //Number of Best fit points returned.
- double* polynomialCoefficients; //Polynomial Coefficients returns the coefficients of the polynomial equation.
- int numberOfCoefficients; //Number of Coefficients returned in the polynomial coefficients array.
-} ContourFitPolynomialReport;
-
-typedef struct PartialCircle_struct {
- PointFloat center; //Center of the circle.
- double radius; //Radius of the circle.
- double startAngle; //Start angle of the fitted structure.
- double endAngle; //End angle of the fitted structure.
-} PartialCircle;
-
-typedef struct PartialEllipse_struct {
- PointFloat center; //Center of the Ellipse.
- double angle; //Angle of the ellipse.
- double majorRadius; //The length of the semi-major axis of the ellipse.
- double minorRadius; //The length of the semi-minor axis of the ellipse.
- double startAngle; //Start angle of the fitted structure.
- double endAngle; //End angle of the fitted structure.
-} PartialEllipse;
-
-typedef struct SetupMatchPatternData_struct {
- unsigned char* matchSetupData; //String containing the match setup data.
- int numMatchSetupData; //Number of match setup data.
-} SetupMatchPatternData;
-
-typedef struct RangeSettingDouble_struct {
- SettingType settingType; //Match Constraints specifies the match option whose values you want to constrain by the given range.
- double min; //Min is the minimum value of the range for a given Match Constraint.
- double max; //Max is the maximum value of the range for a given Match Constraint.
-} RangeSettingDouble;
-
-typedef struct GeometricAdvancedSetupDataOption_struct {
- GeometricSetupDataItem type; //It determines the option you want to use during the matching phase.
- double value; //Value is the value for the option you want to use during the matching phase.
-} GeometricAdvancedSetupDataOption;
-
-typedef struct ContourInfoReport_struct {
- PointDouble* pointsPixel; //Points (pixel) specifies the location of every point detected on the curve, in pixels.
- unsigned int numPointsPixel; //Number of points pixel elements.
- PointDouble* pointsReal; //Points (real) specifies the location of every point detected on the curve, in calibrated units.
- unsigned int numPointsReal; //Number of points real elements.
- double* curvaturePixel; //Curvature Pixel displays the curvature profile for the selected contour, in pixels.
- unsigned int numCurvaturePixel; //Number of curvature pixels.
- double* curvatureReal; //Curvature Real displays the curvature profile for the selected contour, in calibrated units.
- unsigned int numCurvatureReal; //Number of curvature Real elements.
- double length; //Length (pixel) specifies the length, in pixels, of the curves in the image.
- double lengthReal; //Length (real) specifies the length, in calibrated units, of the curves within the curvature range.
- unsigned int hasEquation; //Has Equation specifies whether the contour has a fitted equation.
-} ContourInfoReport;
-
-typedef struct ROILabel_struct {
- char* className; //Specifies the classname you want to segment.
- unsigned int label; //Label is the label number associated with the Class Name.
-} ROILabel;
-
-typedef struct SupervisedColorSegmentationReport_struct {
- ROILabel* labelOut; //The Roi labels array.
- unsigned int numLabelOut; //The number of elements in labelOut array.
-} SupervisedColorSegmentationReport;
-
-typedef struct LabelToROIReport_struct {
- ROI** roiArray; //Array of ROIs.
- unsigned int numOfROIs; //Number of ROIs in the roiArray.
- unsigned int* labelsOutArray; //Array of labels.
- unsigned int numOfLabels; //Number of labels.
- int* isTooManyVectorsArray; //isTooManyVectorsArray array.
- unsigned int isTooManyVectorsArraySize; //Number of elements in isTooManyVectorsArray.
-} LabelToROIReport;
-
-typedef struct ColorSegmenationOptions_struct {
- unsigned int windowX; //X is the window size in x direction.
- unsigned int windowY; //Y is the window size in y direction.
- unsigned int stepSize; //Step Size is the distance between two windows.
- unsigned int minParticleArea; //Min Particle Area is the minimum number of allowed pixels.
- unsigned int maxParticleArea; //Max Particle Area is the maximum number of allowed pixels.
- short isFineSegment; //When enabled, the step processes the boundary pixels of each segmentation cluster using a step size of 1.
-} ColorSegmenationOptions;
-
-typedef struct ClassifiedCurve_struct {
- double length; //Specifies the length, in pixels, of the curves within the curvature range.
- double lengthReal; //specifies the length, in calibrated units, of the curves within the curvature range.
- double maxCurvature; //specifies the maximum curvature, in pixels, for the selected curvature range.
- double maxCurvatureReal; //specifies the maximum curvature, in calibrated units, for the selected curvature range.
- unsigned int label; //specifies the class to which the the sample belongs.
- PointDouble* curvePoints; //Curve Points is a point-coordinate cluster that defines the points of the curve.
- unsigned int numCurvePoints; //Number of curve points.
-} ClassifiedCurve;
-
-typedef struct RangeDouble_struct {
- double minValue; //The minimum value of the range.
- double maxValue; //The maximum value of the range.
-} RangeDouble;
-
-typedef struct RangeLabel_struct {
- RangeDouble range; //Specifies the range of curvature values.
- unsigned int label; //Class Label specifies the class to which the the sample belongs.
-} RangeLabel;
-
-typedef struct CurvatureAnalysisReport_struct {
- ClassifiedCurve* curves;
- unsigned int numCurves;
-} CurvatureAnalysisReport;
-
-typedef struct Disparity_struct {
- PointDouble current; //Current is a array of points that defines the target contour.
- PointDouble reference; //reference is a array of points that defines the template contour.
- double distance; //Specifies the distance, in pixels, between the template contour point and the target contour point.
-} Disparity;
-
-typedef struct ComputeDistancesReport_struct {
- Disparity* distances; //Distances is an array containing the computed distances.
- unsigned int numDistances; //Number elements in the distances array.
- Disparity* distancesReal; //Distances Real is an array containing the computed distances in calibrated units.
- unsigned int numDistancesReal; //Number of elements in real distances array.
-} ComputeDistancesReport;
-
-typedef struct MatchMode_struct {
- unsigned int rotation; //Rotation When enabled, the Function searches for occurrences of the template in the inspection image, allowing for template matches to be rotated.
- unsigned int scale; //Rotation When enabled, the Function searches for occurrences of the template in the inspection image, allowing for template matches to be rotated.
- unsigned int occlusion; //Occlusion specifies whether or not to search for occluded versions of the shape.
-} MatchMode;
-
-typedef struct ClassifiedDisparity_struct {
- double length; //Length (pixel) specifies the length, in pixels, of the curves within the curvature range.
- double lengthReal; //Length (real) specifies the length, in calibrated units, of the curves within the curvature range.
- double maxDistance; //Maximum Distance (pixel) specifies the maximum distance, in pixels, between points along the selected contour and the template contour.
- double maxDistanceReal; //Maximum Distance (real) specifies the maximum distance, in calibrated units, between points along the selected contour and the template contour.
- unsigned int label; //Class Label specifies the class to which the the sample belongs.
- PointDouble* templateSubsection; //Template subsection points is an array of points that defines the boundary of the template.
- unsigned int numTemplateSubsection; //Number of reference points.
- PointDouble* targetSubsection; //Current Points(Target subsection points) is an array of points that defines the boundary of the target.
- unsigned int numTargetSubsection; //Number of current points.
-} ClassifiedDisparity;
-
-typedef struct ClassifyDistancesReport_struct {
- ClassifiedDisparity* classifiedDistances; //Disparity array containing the classified distances.
- unsigned int numClassifiedDistances; //Number of elements in the disparity array.
-} ClassifyDistancesReport;
-
-typedef struct ContourComputeCurvatureReport_struct {
- double* curvaturePixel; //Curvature Pixel displays the curvature profile for the selected contour, in pixels.
- unsigned int numCurvaturePixel; //Number of curvature pixels.
- double* curvatureReal; //Curvature Real displays the curvature profile for the selected contour, in calibrated units.
- unsigned int numCurvatureReal; //Number of curvature Real elements.
-} ContourComputeCurvatureReport;
-
-typedef struct ContourOverlaySettings_struct {
- unsigned int overlay; //Overlay specifies whether to display the overlay on the image.
- RGBValue color; //Color is the color of the overlay.
- unsigned int width; //Width specifies the width of the overlay in pixels.
- unsigned int maintainWidth; //Maintain Width? specifies whether you want the overlay measured in screen pixels or image pixels.
-} ContourOverlaySettings;
-
-typedef struct CurveParameters_struct {
- ExtractionMode extractionMode; //Specifies the method the function uses to identify curves in the image.
- int threshold; //Specifies the minimum contrast a seed point must have in order to begin a curve.
- EdgeFilterSize filterSize; //Specifies the width of the edge filter the function uses to identify curves in the image.
- int minLength; //Specifies the length, in pixels, of the smallest curve the function will extract.
- int searchStep; //Search Step Size specifies the distance, in the y direction, between the image rows that the algorithm inspects for curve seed points.
- int maxEndPointGap; //Specifies the maximum gap, in pixels, between the endpoints of a curve that the function identifies as a closed curve.
- int subpixel; //Subpixel specifies whether to detect curve points with subpixel accuracy.
-} CurveParameters;
-
-typedef struct ExtractContourReport_struct {
- PointDouble* contourPoints; //Contour Points specifies every point found on the contour.
- int numContourPoints; //Number of contour points.
- PointDouble* sourcePoints; //Source Image Points specifies every point found on the contour in the source image.
- int numSourcePoints; //Number of source points.
-} ExtractContourReport;
-
-typedef struct ConnectionConstraint_struct {
- ConnectionConstraintType constraintType; //Constraint Type specifies what criteria to use to consider two curves part of a contour.
- RangeDouble range; //Specifies range for a given Match Constraint.
-} ConnectionConstraint;
-
-typedef struct ExtractTextureFeaturesReport_struct {
- int* waveletBands; //The array having all the Wavelet Banks used for extraction.
- int numWaveletBands; //Number of wavelet banks in the Array.
- double** textureFeatures; //2-D array to store all the Texture features extracted.
- int textureFeaturesRows; //Number of Rows in the Texture Features array.
- int textureFeaturesCols; //Number of Cols in Texture Features array.
-} ExtractTextureFeaturesReport;
-
-typedef struct WaveletBandsReport_struct {
- float** LLBand; //2-D array for LL Band.
- float** LHBand; //2-D array for LH Band.
- float** HLBand; //2-D array for HL Band.
- float** HHBand; //2-D array for HH Band.
- float** LLLBand; //2-D array for LLL Band.
- float** LLHBand; //2-D array for LLH Band.
- float LHLBand; //2-D array for LHL Band.
- float** LHHBand; //2-D array for LHH Band.
- int rows; //Number of Rows for each of the 2-D arrays.
- int cols; //Number of Columns for each of the 2-D arrays.
-} WaveletBandsReport;
-
-typedef struct CircleFitOptions_struct {
- int maxRadius; //Specifies the acceptable distance, in pixels, that a point determined to belong to the circle can be from the perimeter of the circle.
- double stepSize; //Step Size is the angle, in degrees, between each radial line in the annular region.
- RakeProcessType processType; //Method used to process the data extracted for edge detection.
-} CircleFitOptions;
-
-typedef struct EdgeOptions2_struct {
- EdgePolaritySearchMode polarity; //Specifies the polarity of the edges to be found.
- unsigned int kernelSize; //Specifies the size of the edge detection kernel.
- unsigned int width; //Specifies the number of pixels averaged perpendicular to the search direction to compute the edge profile strength at each point along the search ROI.
- float minThreshold; //Specifies the minimum edge strength (gradient magnitude) required for a detected edge.
- InterpolationMethod interpolationType; //Specifies the interpolation method used to locate the edge position.
- ColumnProcessingMode columnProcessingMode; //Specifies the method used to find the straight edge.
-} EdgeOptions2;
-
-typedef struct FindCircularEdgeOptions_struct {
- SpokeDirection direction; //Specifies the Spoke direction to search in the ROI.
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showSearchLines; //If TRUE, the function overlays the search lines used to locate the edges on the image.
- int showEdgesFound; //If TRUE, the function overlays the locations of the edges found on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue searchLinesColor; //Specifies the RGB color value to use to overlay the search lines.
- RGBValue searchEdgesColor; //Specifies the RGB color value to use to overlay the search edges.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the overlay group name to assign to the overlays.
- EdgeOptions2 edgeOptions; //Specifies the edge detection options along a single search line.
-} FindCircularEdgeOptions;
-
-typedef struct FindConcentricEdgeOptions_struct {
- ConcentricRakeDirection direction; //Specifies the Concentric Rake direction.
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showSearchLines; //If TRUE, the function overlays the search lines used to locate the edges on the image.
- int showEdgesFound; //If TRUE, the function overlays the locations of the edges found on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue searchLinesColor; //Specifies the RGB color value to use to overlay the search lines.
- RGBValue searchEdgesColor; //Specifies the RGB color value to use to overlay the search edges.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the overlay group name to assign to the overlays.
- EdgeOptions2 edgeOptions; //Specifies the edge detection options along a single search line.
-} FindConcentricEdgeOptions;
-
-typedef struct ConcentricEdgeFitOptions_struct {
- int maxRadius; //Specifies the acceptable distance, in pixels, that a point determined to belong to the circle can be from the perimeter of the circle.
- double stepSize; //The sampling factor that determines the gap between the rake lines.
- RakeProcessType processType; //Method used to process the data extracted for edge detection.
-} ConcentricEdgeFitOptions;
-
-typedef struct FindConcentricEdgeReport_struct {
- PointFloat startPt; //Pixel Coordinates for starting point of the edge.
- PointFloat endPt; //Pixel Coordinates for end point of the edge.
- PointFloat startPtCalibrated; //Real world Coordinates for starting point of the edge.
- PointFloat endPtCalibrated; //Real world Coordinates for end point of the edge.
- double angle; //Angle of the edge found.
- double angleCalibrated; //Calibrated angle of the edge found.
- double straightness; //The straightness value of the detected straight edge.
- double avgStrength; //Average strength of the egde found.
- double avgSNR; //Average SNR(Signal to Noise Ratio) for the edge found.
- int lineFound; //If the edge is found or not.
-} FindConcentricEdgeReport;
-
-typedef struct FindCircularEdgeReport_struct {
- PointFloat centerCalibrated; //Real world Coordinates of the Center.
- double radiusCalibrated; //Real world radius of the Circular Edge found.
- PointFloat center; //Pixel Coordinates of the Center.
- double radius; //Radius in pixels of the Circular Edge found.
- double roundness; //The roundness of the calculated circular edge.
- double avgStrength; //Average strength of the egde found.
- double avgSNR; //Average SNR(Signal to Noise Ratio) for the edge found.
- int circleFound; //If the circlular edge is found or not.
-} FindCircularEdgeReport;
-
-typedef struct WindowSize_struct {
- int x; //Window lenght on X direction.
- int y; //Window lenght on Y direction.
- int stepSize; //Distance between windows.
-} WindowSize;
-
-typedef struct DisplacementVector_struct {
- int x; //length on X direction.
- int y; //length on Y direction.
-} DisplacementVector;
-
-typedef struct WaveletOptions_struct {
- WaveletType typeOfWavelet; //Type of wavelet(db, bior.
- float minEnergy; //Minimum Energy in the bands to consider for texture defect detection.
-} WaveletOptions;
-
-typedef struct CooccurrenceOptions_struct {
- int level; //Level/size of matrix.
- DisplacementVector displacement; //Displacemnet between pixels to accumulate the matrix.
-} CooccurrenceOptions;
-
-typedef struct ParticleClassifierLocalThresholdOptions_struct {
- LocalThresholdMethod method; //Specifies the local thresholding method the function uses.
- ParticleType particleType; //Specifies what kind of particles to look for.
- unsigned int windowWidth; //The width of the rectangular window around the pixel on which the function performs the local threshold.
- unsigned int windowHeight; //The height of the rectangular window around the pixel on which the function performs the local threshold.
- double deviationWeight; //Specifies the k constant used in the Niblack local thresholding algorithm, which determines the weight applied to the variance calculation.
-} ParticleClassifierLocalThresholdOptions;
-
-typedef struct RangeFloat_struct {
- float minValue; //The minimum value of the range.
- float maxValue; //The maximum value of the range.
-} RangeFloat;
-
-typedef struct ParticleClassifierAutoThresholdOptions_struct {
- ThresholdMethod method; //The method for binary thresholding, which specifies how to calculate the classes.
- ParticleType particleType; //Specifies what kind of particles to look for.
- RangeFloat limits; //The limits on the automatic threshold range.
-} ParticleClassifierAutoThresholdOptions;
-
-typedef struct ParticleClassifierPreprocessingOptions2_struct {
- ParticleClassifierThresholdType thresholdType; //The type of threshold to perform on the image.
- RangeFloat manualThresholdRange; //The range of pixels to keep if manually thresholding the image.
- ParticleClassifierAutoThresholdOptions autoThresholdOptions; //The options used to auto threshold the image.
- ParticleClassifierLocalThresholdOptions localThresholdOptions; //The options used to local threshold the image.
- int rejectBorder; //Set this element to TRUE to reject border particles.
- int numErosions; //The number of erosions to perform.
-} ParticleClassifierPreprocessingOptions2;
-
-typedef struct MeasureParticlesReport_struct {
- double** pixelMeasurements; //The measurements on the particles in the image, in pixel coordinates.
- double** calibratedMeasurements; //The measurements on the particles in the image, in real-world coordinates.
- size_t numParticles; //The number of particles on which measurements were taken.
- size_t numMeasurements; //The number of measurements taken.
-} MeasureParticlesReport;
-
-typedef struct GeometricPatternMatch3_struct {
- PointFloat position; //The location of the origin of the template in the match.
- float rotation; //The rotation of the match relative to the template image, in degrees.
- float scale; //The size of the match relative to the size of the template image, expressed as a percentage.
- float score; //The accuracy of the match.
- PointFloat corner[4]; //An array of four points describing the rectangle surrounding the template image.
- int inverse; //This element is TRUE if the match is an inverse of the template image.
- float occlusion; //The percentage of the match that is occluded.
- float templateMatchCurveScore; //The accuracy of the match obtained by comparing the template curves to the curves in the match region.
- float matchTemplateCurveScore; //The accuracy of the match obtained by comparing the curves in the match region to the template curves.
- float correlationScore; //The accuracy of the match obtained by comparing the template image to the match region using a correlation metric that compares the two regions as a function of their pixel values.
- PointFloat calibratedPosition; //The location of the origin of the template in the match.
- float calibratedRotation; //The rotation of the match relative to the template image, in degrees.
- PointFloat calibratedCorner[4]; //An array of four points describing the rectangle surrounding the template image.
-} GeometricPatternMatch3;
-
-typedef struct MatchGeometricPatternAdvancedOptions3_struct {
- unsigned int subpixelIterations; //Specifies the maximum number of incremental improvements used to refine matches with subpixel information.
- double subpixelTolerance; //Specifies the maximum amount of change, in pixels, between consecutive incremental improvements in the match position before the function stops refining the match position.
- unsigned int initialMatchListLength; //Specifies the maximum size of the match list.
- int targetTemplateCurveScore; //Set this element to TRUE to specify that the function should calculate the match curve to template curve score and return it for each match result.
- int correlationScore; //Set this element to TRUE to specify that the function should calculate the correlation score and return it for each match result.
- double minMatchSeparationDistance; //Specifies the minimum separation distance, in pixels, between the origins of two matches that have unique positions.
- double minMatchSeparationAngle; //Specifies the minimum angular difference, in degrees, between two matches that have unique angles.
- double minMatchSeparationScale; //Specifies the minimum difference in scale, expressed as a percentage, between two matches that have unique scales.
- double maxMatchOverlap; //Specifies the maximum amount of overlap, expressed as a percentage, allowed between the bounding rectangles of two unique matches.
- int coarseResult; //Specifies whether you want the function to spend less time accurately estimating the location of a match.
- int enableCalibrationSupport; //Set this element to TRUE to specify the algorithm treat the inspection image as a calibrated image.
- ContrastMode enableContrastReversal; //Use this element to specify the contrast of the matches to search for in the image.
- GeometricMatchingSearchStrategy matchStrategy; //Specifies the aggressiveness of the search strategy.
- unsigned int refineMatchFactor; //Specifies the factor that is applied to the number of matches requested by the user to determine the number of matches that are refined at the initial matching stage.
- unsigned int subpixelMatchFactor; //Specifies the factor that is applied to the number of matches requested by the user to determine the number of matches that are evaluated at the final subpixel matching stage.
-} MatchGeometricPatternAdvancedOptions3;
-
-typedef struct ColorOptions_struct {
- ColorClassificationResolution colorClassificationResolution; //Specifies the color resolution of the classifier.
- unsigned int useLuminance; //Specifies if the luminance band is going to be used in the feature vector.
- ColorMode colorMode; //Specifies the color mode of the classifier.
-} ColorOptions;
-
-typedef struct SampleScore_struct {
- char* className; //The name of the class.
- float distance; //The distance from the item to this class.
- unsigned int index; //index of this sample.
-} SampleScore;
-
-typedef struct ClassifierReportAdvanced_struct {
- char* bestClassName; //The name of the best class for the sample.
- float classificationScore; //The similarity of the sample and the two closest classes in the classifier.
- float identificationScore; //The similarity of the sample and the assigned class.
- ClassScore* allScores; //All classes and their scores.
- int allScoresSize; //The number of entries in allScores.
- SampleScore* sampleScores; //All samples and their scores.
- int sampleScoresSize; //The number of entries in sampleScores.
-} ClassifierReportAdvanced;
-
-typedef struct LearnGeometricPatternAdvancedOptions2_struct {
- double minScaleFactor; //Specifies the minimum scale factor that the template is learned for.
- double maxScaleFactor; //Specifies the maximum scale factor the template is learned for.
- double minRotationAngleValue; //Specifies the minimum rotation angle the template is learned for.
- double maxRotationAngleValue; //Specifies the maximum rotation angle the template is learned for.
- unsigned int imageSamplingFactor; //Specifies the factor that is used to subsample the template and the image for the initial matching phase.
-} LearnGeometricPatternAdvancedOptions2;
-
-typedef struct ParticleFilterOptions2_struct {
- int rejectMatches; //Set this parameter to TRUE to transfer only those particles that do not meet all the criteria.
- int rejectBorder; //Set this element to TRUE to reject border particles.
- int fillHoles; //Set this element to TRUE to fill holes in particles.
- int connectivity8; //Set this parameter to TRUE to use connectivity-8 to determine whether particles are touching.
-} ParticleFilterOptions2;
-
-typedef struct FindEdgeOptions2_struct {
- RakeDirection direction; //The direction to search in the ROI.
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showSearchLines; //If TRUE, the function overlays the search lines used to locate the edges on the image.
- int showEdgesFound; //If TRUE, the function overlays the locations of the edges found on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue searchLinesColor; //Specifies the RGB color value to use to overlay the search lines.
- RGBValue searchEdgesColor; //Specifies the RGB color value to use to overlay the search edges.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the overlay group name to assign to the overlays.
- EdgeOptions2 edgeOptions; //Specifies the edge detection options along a single search line.
-} FindEdgeOptions2;
-
-typedef struct FindEdgeReport_struct {
- StraightEdge* straightEdges; //An array of straight edges detected.
- unsigned int numStraightEdges; //Indicates the number of straight edges found.
-} FindEdgeReport;
-
-typedef struct FindTransformRectOptions2_struct {
- FindReferenceDirection direction; //Specifies the direction and orientation in which the function searches for the primary axis.
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showSearchLines; //If TRUE, the function overlays the search lines used to locate the edges on the image.
- int showEdgesFound; //If TRUE, the function overlays the locations of the edges found on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue searchLinesColor; //Specifies the RGB color value to use to overlay the search lines.
- RGBValue searchEdgesColor; //Specifies the RGB color value to use to overlay the search edges.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the overlay group name to assign to the overlays.
- EdgeOptions2 edgeOptions; //Specifies the edge detection options along a single search line.
-} FindTransformRectOptions2;
-
-typedef struct FindTransformRectsOptions2_struct {
- FindReferenceDirection direction; //Specifies the direction and orientation in which the function searches for the primary axis.
- int showSearchArea; //If TRUE, the function overlays the search area on the image.
- int showSearchLines; //If TRUE, the function overlays the search lines used to locate the edges on the image.
- int showEdgesFound; //If TRUE, the function overlays the locations of the edges found on the image.
- int showResult; //If TRUE, the function overlays the hit lines to the object and the edge used to generate the hit line on the result image.
- RGBValue searchAreaColor; //Specifies the RGB color value to use to overlay the search area.
- RGBValue searchLinesColor; //Specifies the RGB color value to use to overlay the search lines.
- RGBValue searchEdgesColor; //Specifies the RGB color value to use to overlay the search edges.
- RGBValue resultColor; //Specifies the RGB color value to use to overlay the results.
- char* overlayGroupName; //Specifies the overlay group name to assign to the overlays.
- EdgeOptions2 primaryEdgeOptions; //Specifies the parameters used to compute the edge gradient information and detect the edges for the primary ROI.
- EdgeOptions2 secondaryEdgeOptions; //Specifies the parameters used to compute the edge gradient information and detect the edges for the secondary ROI.
-} FindTransformRectsOptions2;
-
-typedef struct ReadTextReport3_struct {
- const char* readString; //The read string.
- CharReport3* characterReport; //An array of reports describing the properties of each identified character.
- int numCharacterReports; //The number of identified characters.
- ROI* roiBoundingCharacters; //An array specifying the coordinates of the character bounding ROI.
-} ReadTextReport3;
-
-typedef struct CharacterStatistics_struct {
- int left; //The left offset of the character bounding rectangles in the current ROI.
- int top; //The top offset of the character bounding rectangles in the current ROI.
- int width; //The width of each of the characters you trained in the current ROI.
- int height; //The height of each trained character in the current ROI.
- int characterSize; //The size of the character in pixels.
-} CharacterStatistics;
-
-typedef struct CharReport3_struct {
- const char* character; //The character value.
- int classificationScore; //The degree to which the assigned character class represents the object better than the other character classes in the character set.
- int verificationScore; //The similarity of the character and the reference character for the character class.
- int verified; //This element is TRUE if a reference character was found for the character class and FALSE if a reference character was not found.
- int lowThreshold; //The minimum value of the threshold range used for this character.
- int highThreshold; //The maximum value of the threshold range used for this character.
- CharacterStatistics characterStats; //Describes the characters segmented in the ROI.
-} CharReport3;
-
-typedef struct ArcInfo2_struct {
- PointFloat center; //The center point of the arc.
- double radius; //The radius of the arc.
- double startAngle; //The starting angle of the arc, specified counter-clockwise from the x-axis.
- double endAngle; //The ending angle of the arc, specified counter-clockwise from the x-axis.
-} ArcInfo2;
-
-typedef struct EdgeReport2_struct {
- EdgeInfo* edges; //An array of edges detected.
- unsigned int numEdges; //Indicates the number of edges detected.
- double* gradientInfo; //An array that contains the calculated edge strengths along the user-defined search area.
- unsigned int numGradientInfo; //Indicates the number of elements contained in gradientInfo.
- int calibrationValid; //Indicates if the calibration data corresponding to the location of the edges is correct.
-} EdgeReport2;
-
-typedef struct SearchArcInfo_struct {
- ArcInfo2 arcCoordinates; //Describes the arc used for edge detection.
- EdgeReport2 edgeReport; //Describes the edges found in this search line.
-} SearchArcInfo;
-
-typedef struct ConcentricRakeReport2_struct {
- EdgeInfo* firstEdges; //The first edge point detected along each search line in the ROI.
- unsigned int numFirstEdges; //The number of points in the firstEdges array.
- EdgeInfo* lastEdges; //The last edge point detected along each search line in the ROI.
- unsigned int numLastEdges; //The number of points in the lastEdges array.
- SearchArcInfo* searchArcs; //Contains the arcs used for edge detection and the edge information for each arc.
- unsigned int numSearchArcs; //The number of arcs in the searchArcs array.
-} ConcentricRakeReport2;
-
-typedef struct SpokeReport2_struct {
- EdgeInfo* firstEdges; //The first edge point detected along each search line in the ROI.
- unsigned int numFirstEdges; //The number of points in the firstEdges array.
- EdgeInfo* lastEdges; //The last edge point detected along each search line in the ROI.
- unsigned int numLastEdges; //The number of points in the lastEdges array.
- SearchLineInfo* searchLines; //The search lines used for edge detection.
- unsigned int numSearchLines; //The number of search lines used in the edge detection.
-} SpokeReport2;
-
-typedef struct EdgeInfo_struct {
- PointFloat position; //The location of the edge in the image.
- PointFloat calibratedPosition; //The position of the edge in the image in real-world coordinates.
- double distance; //The location of the edge from the first point along the boundary of the input ROI.
- double calibratedDistance; //The location of the edge from the first point along the boundary of the input ROI in real-world coordinates.
- double magnitude; //The intensity contrast at the edge.
- double noisePeak; //The strength of the noise associated with the current edge.
- int rising; //Indicates the polarity of the edge.
-} EdgeInfo;
-
-typedef struct SearchLineInfo_struct {
- LineFloat lineCoordinates; //The endpoints of the search line.
- EdgeReport2 edgeReport; //Describes the edges found in this search line.
-} SearchLineInfo;
-
-typedef struct RakeReport2_struct {
- EdgeInfo* firstEdges; //The first edge point detected along each search line in the ROI.
- unsigned int numFirstEdges; //The number of points in the firstEdges array.
- EdgeInfo* lastEdges; //The last edge point detected along each search line in the ROI.
- unsigned int numLastEdges; //The number of points in the lastEdges array.
- SearchLineInfo* searchLines; //The search lines used for edge detection.
- unsigned int numSearchLines; //The number of search lines used in the edge detection.
-} RakeReport2;
-
-typedef struct TransformBehaviors_struct {
- GroupBehavior ShiftBehavior; //Specifies the behavior of an overlay group when a shift operation is applied to an image.
- GroupBehavior ScaleBehavior; //Specifies the behavior of an overlay group when a scale operation is applied to an image.
- GroupBehavior RotateBehavior; //Specifies the behavior of an overlay group when a rotate operation is applied to an image.
- GroupBehavior SymmetryBehavior; //Specifies the behavior of an overlay group when a symmetry operation is applied to an image.
-} TransformBehaviors;
-
-typedef struct QRCodeDataToken_struct {
- QRStreamMode mode; //Specifies the stream mode or the format of the data that is encoded in the QR code.
- unsigned int modeData; //Indicates specifiers used by the user to postprocess the data if it requires it.
- unsigned char* data; //Shows the encoded data in the QR code.
- unsigned int dataLength; //Specifies the length of the data found in the QR code.
-} QRCodeDataToken;
-
-typedef struct ParticleFilterOptions_struct {
- int rejectMatches; //Set this parameter to TRUE to transfer only those particles that do not meet all the criteria.
- int rejectBorder; //Set this element to TRUE to reject border particles.
- int connectivity8; //Set this parameter to TRUE to use connectivity-8 to determine whether particles are touching.
-} ParticleFilterOptions;
-
-typedef struct StraightEdgeReport2_struct {
- StraightEdge* straightEdges; //Contains an array of found straight edges.
- unsigned int numStraightEdges; //Indicates the number of straight edges found.
- SearchLineInfo* searchLines; //Contains an array of all search lines used in the detection.
- unsigned int numSearchLines; //The number of search lines used in the edge detection.
-} StraightEdgeReport2;
-
-typedef struct StraightEdgeOptions_struct {
- unsigned int numLines; //Specifies the number of straight edges to find.
- StraightEdgeSearchMode searchMode; //Specifies the method used to find the straight edge.
- double minScore; //Specifies the minimum score of a detected straight edge.
- double maxScore; //Specifies the maximum score of a detected edge.
- double orientation; //Specifies the angle at which the straight edge is expected to be found.
- double angleRange; //Specifies the +/- range around the orientation within which the straight edge is expected to be found.
- double angleTolerance; //Specifies the expected angular accuracy of the straight edge.
- unsigned int stepSize; //Specifies the gap in pixels between the search lines used with the rake-based methods.
- double minSignalToNoiseRatio; //Specifies the minimum signal to noise ratio (SNR) of the edge points used to fit the straight edge.
- double minCoverage; //Specifies the minimum number of points as a percentage of the number of search lines that need to be included in the detected straight edge.
- unsigned int houghIterations; //Specifies the number of iterations used in the Hough-based method.
-} StraightEdgeOptions;
-
-typedef struct StraightEdge_struct {
- LineFloat straightEdgeCoordinates; //End points of the detected straight edge in pixel coordinates.
- LineFloat calibratedStraightEdgeCoordinates; //End points of the detected straight edge in real-world coordinates.
- double angle; //Angle of the found edge using the pixel coordinates.
- double calibratedAngle; //Angle of the found edge using the real-world coordinates.
- double score; //Describes the score of the detected edge.
- double straightness; //The straightness value of the detected straight edge.
- double averageSignalToNoiseRatio; //Describes the average signal to noise ratio (SNR) of the detected edge.
- int calibrationValid; //Indicates if the calibration data for the straight edge is valid.
- EdgeInfo* usedEdges; //An array of edges that were used to determine this straight line.
- unsigned int numUsedEdges; //Indicates the number of edges in the usedEdges array.
-} StraightEdge;
-
-typedef struct QRCodeSearchOptions_struct {
- QRRotationMode rotationMode; //Specifies the amount of QR code rotation the function should allow for.
- unsigned int skipLocation; //If set to TRUE, specifies that the function should assume that the QR code occupies the entire image (or the entire search region).
- unsigned int edgeThreshold; //The strength of the weakest edge the function uses to find the coarse location of the QR code in the image.
- QRDemodulationMode demodulationMode; //The demodulation mode the function uses to locate the QR code.
- QRCellSampleSize cellSampleSize; //The cell sample size the function uses to locate the QR code.
- QRCellFilterMode cellFilterMode; //The cell filter mode the function uses to locate the QR code.
- unsigned int skewDegreesAllowed; //Specifies the amount of skew in the QR code the function should allow for.
-} QRCodeSearchOptions;
-
-typedef struct QRCodeSizeOptions_struct {
- unsigned int minSize; //Specifies the minimum size (in pixels) of the QR code in the image.
- unsigned int maxSize; //Specifies the maximum size (in pixels) of the QR code in the image.
-} QRCodeSizeOptions;
-
-typedef struct QRCodeDescriptionOptions_struct {
- QRDimensions dimensions; //The number of rows and columns that are populated for the QR code, measured in cells.
- QRPolarities polarity; //The polarity of the QR code.
- QRMirrorMode mirror; //This element is TRUE if the QR code appears mirrored in the image and FALSE if the QR code appears normally in the image.
- QRModelType modelType; //This option allows you to specify the type of QR code.
-} QRCodeDescriptionOptions;
-
-typedef struct QRCodeReport_struct {
- unsigned int found; //This element is TRUE if the function located and decoded a QR code and FALSE if the function failed to locate and decode a QR code.
- unsigned char* data; //The data encoded in the QR code.
- unsigned int dataLength; //The length of the data array.
- PointFloat boundingBox[4]; //An array of four points describing the rectangle surrounding the QR code.
- QRCodeDataToken* tokenizedData; //Contains the data tokenized in exactly the way it was encoded in the code.
- unsigned int sizeOfTokenizedData; //Size of the tokenized data.
- unsigned int numErrorsCorrected; //The number of errors the function corrected when decoding the QR code.
- unsigned int dimensions; //The number of rows and columns that are populated for the QR code, measured in cells.
- unsigned int version; //The version of the QR code.
- QRModelType modelType; //This option allows you to specify what type of QR code this is.
- QRStreamMode streamMode; //The format of the data encoded in the stream.
- QRPolarities matrixPolarity; //The polarity of the QR code.
- unsigned int mirrored; //This element is TRUE if the QR code appears mirrored in the image and FALSE if the QR code appears normally in the image.
- unsigned int positionInAppendStream; //Indicates what position the QR code is in with respect to the stream of data in all codes.
- unsigned int sizeOfAppendStream; //Specifies how many QR codes are part of a larger array of codes.
- int firstEAN128ApplicationID; //The first EAN-128 Application ID encountered in the stream.
- int firstECIDesignator; //The first Regional Language Designator encountered in the stream.
- unsigned int appendStreamIdentifier; //Specifies what stream the QR code is in relation to when the code is part of a larger array of codes.
- unsigned int minimumEdgeStrength; //The strength of the weakest edge the function used to find the coarse location of the QR code in the image.
- QRDemodulationMode demodulationMode; //The demodulation mode the function used to locate the QR code.
- QRCellSampleSize cellSampleSize; //The cell sample size the function used to locate the QR code.
- QRCellFilterMode cellFilterMode; //The cell filter mode the function used to locate the QR code.
-} QRCodeReport;
-
-typedef struct AIMGradeReport_struct {
- AIMGrade overallGrade; //The overall letter grade, which is equal to the lowest of the other five letter grades.
- AIMGrade decodingGrade; //The letter grade assigned to a Data Matrix barcode based on the success of the function in decoding the Data Matrix barcode.
- AIMGrade symbolContrastGrade; //The letter grade assigned to a Data Matrix barcode based on the symbol contrast raw score.
- float symbolContrast; //The symbol contrast raw score representing the percentage difference between the mean of the reflectance of the darkest 10 percent and lightest 10 percent of the Data Matrix barcode.
- AIMGrade printGrowthGrade; //The print growth letter grade for the Data Matrix barcode.
- float printGrowth; //The print growth raw score for the barcode, which is based on the extent to which dark or light markings appropriately fill their module boundaries.
- AIMGrade axialNonuniformityGrade; //The axial nonuniformity grade for the Data Matrix barcode.
- float axialNonuniformity; //The axial nonuniformity raw score for the barcode, which is based on how much the sampling point spacing differs from one axis to another.
- AIMGrade unusedErrorCorrectionGrade; //The unused error correction letter grade for the Data Matrix barcode.
- float unusedErrorCorrection; //The unused error correction raw score for the Data Matrix barcode, which is based on the extent to which regional or spot damage in the Data Matrix barcode has eroded the reading safety margin provided by the error correction.
-} AIMGradeReport;
-
-typedef struct DataMatrixSizeOptions_struct {
- unsigned int minSize; //Specifies the minimum size (in pixels) of the Data Matrix barcode in the image.
- unsigned int maxSize; //Specifies the maximum size (in pixels) of the Data Matrix barcode in the image.
- unsigned int quietZoneWidth; //Specifies the expected minimum size of the quiet zone, in pixels.
-} DataMatrixSizeOptions;
-
-typedef struct DataMatrixDescriptionOptions_struct {
- float aspectRatio; //Specifies the ratio of the width of each Data Matrix barcode cell (in pixels) to the height of the Data Matrix barcode (in pixels).
- unsigned int rows; //Specifies the number of rows in the Data Matrix barcode.
- unsigned int columns; //Specifies the number of columns in the Data Matrix barcode.
- int rectangle; //Set this element to TRUE to specify that the Data Matrix barcode is rectangular.
- DataMatrixECC ecc; //Specifies the ECC used for this Data Matrix barcode.
- DataMatrixPolarity polarity; //Specifies the data-to-background contrast for the Data Matrix barcode.
- DataMatrixCellFillMode cellFill; //Specifies the fill percentage for a cell of the Data Matrix barcode that is in the "ON" state.
- float minBorderIntegrity; //Specifies the minimum percentage of the border (locator pattern and timing pattern) the function should expect in the Data Matrix barcode.
- DataMatrixMirrorMode mirrorMode; //Specifies if the Data Matrix barcode appears normally in the image or if the barcode appears mirrored in the image.
-} DataMatrixDescriptionOptions;
-
-typedef struct DataMatrixSearchOptions_struct {
- DataMatrixRotationMode rotationMode; //Specifies the amount of Data Matrix barcode rotation the function should allow for.
- int skipLocation; //If set to TRUE, specifies that the function should assume that the Data Matrix barcode occupies the entire image (or the entire search region).
- unsigned int edgeThreshold; //Specifies the minimum contrast a pixel must have in order to be considered part of a matrix cell edge.
- DataMatrixDemodulationMode demodulationMode; //Specifies the mode the function should use to demodulate (determine which cells are on and which cells are off) the Data Matrix barcode.
- DataMatrixCellSampleSize cellSampleSize; //Specifies the sample size, in pixels, the function should take to determine if each cell is on or off.
- DataMatrixCellFilterMode cellFilterMode; //Specifies the mode the function uses to determine the pixel value for each cell.
- unsigned int skewDegreesAllowed; //Specifies the amount of skew in the Data Matrix barcode the function should allow for.
- unsigned int maxIterations; //Specifies the maximum number of iterations before the function stops looking for the Data Matrix barcode.
- unsigned int initialSearchVectorWidth; //Specifies the number of pixels the function should average together to determine the location of an edge.
-} DataMatrixSearchOptions;
-
-typedef struct DataMatrixReport_struct {
- int found; //This element is TRUE if the function located and decoded a Data Matrix barcode and FALSE if the function failed to locate and decode a Data Matrix barcode.
- int binary; //This element is TRUE if the Data Matrix barcode contains binary data and FALSE if the Data Matrix barcode contains text data.
- unsigned char* data; //The data encoded in the Data Matrix barcode.
- unsigned int dataLength; //The length of the data array.
- PointFloat boundingBox[4]; //An array of four points describing the rectangle surrounding the Data Matrix barcode.
- unsigned int numErrorsCorrected; //The number of errors the function corrected when decoding the Data Matrix barcode.
- unsigned int numErasuresCorrected; //The number of erasures the function corrected when decoding the Data Matrix barcode.
- float aspectRatio; //Specifies the aspect ratio of the Data Matrix barcode in the image, which equals the ratio of the width of a Data Matrix barcode cell (in pixels) to the height of a Data Matrix barcode cell (in pixels).
- unsigned int rows; //The number of rows in the Data Matrix barcode.
- unsigned int columns; //The number of columns in the Data Matrix barcode.
- DataMatrixECC ecc; //The Error Correction Code (ECC) used by the Data Matrix barcode.
- DataMatrixPolarity polarity; //The polarity of the Data Matrix barcode.
- DataMatrixCellFillMode cellFill; //The cell fill percentage of the Data Matrix barcode.
- float borderIntegrity; //The percentage of the Data Matrix barcode border that appears correctly in the image.
- int mirrored; //This element is TRUE if the Data Matrix barcode appears mirrored in the image and FALSE if the Data Matrix barcode appears normally in the image.
- unsigned int minimumEdgeStrength; //The strength of the weakest edge the function used to find the coarse location of the Data Matrix barcode in the image.
- DataMatrixDemodulationMode demodulationMode; //The demodulation mode the function used to locate the Data Matrix barcode.
- DataMatrixCellSampleSize cellSampleSize; //The cell sample size the function used to locate the Data Matrix barcode.
- DataMatrixCellFilterMode cellFilterMode; //The cell filter mode the function used to locate the Data Matrix barcode.
- unsigned int iterations; //The number of iterations the function took in attempting to locate the Data Matrix barcode.
-} DataMatrixReport;
-
-typedef struct JPEG2000FileAdvancedOptions_struct {
- WaveletTransformMode waveletMode; //Determines which wavelet transform to use when writing the file.
- int useMultiComponentTransform; //Set this parameter to TRUE to use an additional transform on RGB images.
- unsigned int maxWaveletTransformLevel; //Specifies the maximum allowed level of wavelet transform.
- float quantizationStepSize; //Specifies the absolute base quantization step size for derived quantization mode.
-} JPEG2000FileAdvancedOptions;
-
-typedef struct MatchGeometricPatternAdvancedOptions2_struct {
- int minFeaturesUsed; //Specifies the minimum number of features the function uses when matching.
- int maxFeaturesUsed; //Specifies the maximum number of features the function uses when matching.
- int subpixelIterations; //Specifies the maximum number of incremental improvements used to refine matches with subpixel information.
- double subpixelTolerance; //Specifies the maximum amount of change, in pixels, between consecutive incremental improvements in the match position before the function stops refining the match position.
- int initialMatchListLength; //Specifies the maximum size of the match list.
- float matchTemplateCurveScore; //Set this element to TRUE to specify that the function should calculate the match curve to template curve score and return it for each match result.
- int correlationScore; //Set this element to TRUE to specify that the function should calculate the correlation score and return it for each match result.
- double minMatchSeparationDistance; //Specifies the minimum separation distance, in pixels, between the origins of two matches that have unique positions.
- double minMatchSeparationAngle; //Specifies the minimum angular difference, in degrees, between two matches that have unique angles.
- double minMatchSeparationScale; //Specifies the minimum difference in scale, expressed as a percentage, between two matches that have unique scales.
- double maxMatchOverlap; //Specifies the maximum amount of overlap, expressed as a percentage, allowed between the bounding rectangles of two unique matches.
- int coarseResult; //Specifies whether you want the function to spend less time accurately estimating the location of a match.
- int smoothContours; //Set this element to TRUE to specify smoothing be done on the contours of the inspection image before feature extraction.
- int enableCalibrationSupport; //Set this element to TRUE to specify the algorithm treat the inspection image as a calibrated image.
-} MatchGeometricPatternAdvancedOptions2;
-
-typedef struct InspectionAlignment_struct {
- PointFloat position; //The location of the center of the golden template in the image under inspection.
- float rotation; //The rotation of the golden template in the image under inspection, in degrees.
- float scale; //The percentage of the size of the area under inspection compared to the size of the golden template.
-} InspectionAlignment;
-
-typedef struct InspectionOptions_struct {
- RegistrationMethod registrationMethod; //Specifies how the function registers the golden template and the target image.
- NormalizationMethod normalizationMethod; //Specifies how the function normalizes the golden template to the target image.
- int edgeThicknessToIgnore; //Specifies desired thickness of edges to be ignored.
- float brightThreshold; //Specifies the threshold for areas where the target image is brighter than the golden template.
- float darkThreshold; //Specifies the threshold for areas where the target image is darker than the golden template.
- int binary; //Specifies whether the function should return a binary image giving the location of defects, or a grayscale image giving the intensity of defects.
-} InspectionOptions;
-
-typedef struct CharReport2_struct {
- const char* character; //The character value.
- PointFloat corner[4]; //An array of four points that describes the rectangle that surrounds the character.
- int lowThreshold; //The minimum value of the threshold range used for this character.
- int highThreshold; //The maximum value of the threshold range used for this character.
- int classificationScore; //The degree to which the assigned character class represents the object better than the other character classes in the character set.
- int verificationScore; //The similarity of the character and the reference character for the character class.
- int verified; //This element is TRUE if a reference character was found for the character class and FALSE if a reference character was not found.
-} CharReport2;
-
-typedef struct CharInfo2_struct {
- const char* charValue; //Retrieves the character value of the corresponding character in the character set.
- const Image* charImage; //The image you used to train this character.
- const Image* internalImage; //The internal representation that NI Vision uses to match objects to this character.
- int isReferenceChar; //This element is TRUE if the character is the reference character for the character class.
-} CharInfo2;
-
-typedef struct ReadTextReport2_struct {
- const char* readString; //The read string.
- CharReport2* characterReport; //An array of reports describing the properties of each identified character.
- int numCharacterReports; //The number of identified characters.
-} ReadTextReport2;
-
-typedef struct EllipseFeature_struct {
- PointFloat position; //The location of the center of the ellipse.
- double rotation; //The orientation of the semi-major axis of the ellipse with respect to the horizontal.
- double minorRadius; //The length of the semi-minor axis of the ellipse.
- double majorRadius; //The length of the semi-major axis of the ellipse.
-} EllipseFeature;
-
-typedef struct CircleFeature_struct {
- PointFloat position; //The location of the center of the circle.
- double radius; //The radius of the circle.
-} CircleFeature;
-
-typedef struct ConstCurveFeature_struct {
- PointFloat position; //The center of the circle that this constant curve lies upon.
- double radius; //The radius of the circle that this constant curve lies upon.
- double startAngle; //When traveling along the constant curve from one endpoint to the next in a counterclockwise manner, this is the angular component of the vector originating at the center of the constant curve and pointing towards the first endpoint of the constant curve.
- double endAngle; //When traveling along the constant curve from one endpoint to the next in a counterclockwise manner, this is the angular component of the vector originating at the center of the constant curve and pointing towards the second endpoint of the constant curve.
-} ConstCurveFeature;
-
-typedef struct RectangleFeature_struct {
- PointFloat position; //The center of the rectangle.
- PointFloat corner[4]; //The four corners of the rectangle.
- double rotation; //The orientation of the rectangle with respect to the horizontal.
- double width; //The width of the rectangle.
- double height; //The height of the rectangle.
-} RectangleFeature;
-
-typedef struct LegFeature_struct {
- PointFloat position; //The location of the leg feature.
- PointFloat corner[4]; //The four corners of the leg feature.
- double rotation; //The orientation of the leg with respect to the horizontal.
- double width; //The width of the leg.
- double height; //The height of the leg.
-} LegFeature;
-
-typedef struct CornerFeature_struct {
- PointFloat position; //The location of the corner feature.
- double rotation; //The angular component of the vector bisecting the corner from position.
- double enclosedAngle; //The measure of the enclosed angle of the corner.
- int isVirtual;
-} CornerFeature;
-
-typedef struct LineFeature_struct {
- PointFloat startPoint; //The starting point of the line.
- PointFloat endPoint; //The ending point of the line.
- double length; //The length of the line measured in pixels from the start point to the end point.
- double rotation; //The orientation of the line with respect to the horizontal.
-} LineFeature;
-
-typedef struct ParallelLinePairFeature_struct {
- PointFloat firstStartPoint; //The starting point of the first line of the pair.
- PointFloat firstEndPoint; //The ending point of the first line of the pair.
- PointFloat secondStartPoint; //The starting point of the second line of the pair.
- PointFloat secondEndPoint; //The ending point of the second line of the pair.
- double rotation; //The orientation of the feature with respect to the horizontal.
- double distance; //The distance from the first line to the second line.
-} ParallelLinePairFeature;
-
-typedef struct PairOfParallelLinePairsFeature_struct {
- ParallelLinePairFeature firstParallelLinePair; //The first parallel line pair.
- ParallelLinePairFeature secondParallelLinePair; //The second parallel line pair.
- double rotation; //The orientation of the feature with respect to the horizontal.
- double distance; //The distance from the midline of the first parallel line pair to the midline of the second parallel line pair.
-} PairOfParallelLinePairsFeature;
-
-typedef union GeometricFeature_union {
- CircleFeature* circle; //A pointer to a CircleFeature.
- EllipseFeature* ellipse; //A pointer to an EllipseFeature.
- ConstCurveFeature* constCurve; //A pointer to a ConstCurveFeature.
- RectangleFeature* rectangle; //A pointer to a RectangleFeature.
- LegFeature* leg; //A pointer to a LegFeature.
- CornerFeature* corner; //A pointer to a CornerFeature.
- ParallelLinePairFeature* parallelLinePair; //A pointer to a ParallelLinePairFeature.
- PairOfParallelLinePairsFeature* pairOfParallelLinePairs; //A pointer to a PairOfParallelLinePairsFeature.
- LineFeature* line; //A pointer to a LineFeature.
- ClosedCurveFeature* closedCurve; //A pointer to a ClosedCurveFeature.
-} GeometricFeature;
-
-typedef struct FeatureData_struct {
- FeatureType type; //An enumeration representing the type of the feature.
- PointFloat* contourPoints; //A set of points describing the contour of the feature.
- int numContourPoints; //The number of points in the contourPoints array.
- GeometricFeature feature; //The feature data specific to this type of feature.
-} FeatureData;
-
-typedef struct GeometricPatternMatch2_struct {
- PointFloat position; //The location of the origin of the template in the match.
- float rotation; //The rotation of the match relative to the template image, in degrees.
- float scale; //The size of the match relative to the size of the template image, expressed as a percentage.
- float score; //The accuracy of the match.
- PointFloat corner[4]; //An array of four points describing the rectangle surrounding the template image.
- int inverse; //This element is TRUE if the match is an inverse of the template image.
- float occlusion; //The percentage of the match that is occluded.
- float templateMatchCurveScore; //The accuracy of the match obtained by comparing the template curves to the curves in the match region.
- float matchTemplateCurveScore; //The accuracy of the match obtained by comparing the curves in the match region to the template curves.
- float correlationScore; //The accuracy of the match obtained by comparing the template image to the match region using a correlation metric that compares the two regions as a function of their pixel values.
- String255 label; //The label corresponding to this match when the match is returned by imaqMatchMultipleGeometricPatterns().
- FeatureData* featureData; //The features used in this match.
- int numFeatureData; //The size of the featureData array.
- PointFloat calibratedPosition; //The location of the origin of the template in the match.
- float calibratedRotation; //The rotation of the match relative to the template image, in degrees.
- PointFloat calibratedCorner[4]; //An array of four points describing the rectangle surrounding the template image.
-} GeometricPatternMatch2;
-
-typedef struct ClosedCurveFeature_struct {
- PointFloat position; //The center of the closed curve feature.
- double arcLength; //The arc length of the closed curve feature.
-} ClosedCurveFeature;
-
-typedef struct LineMatch_struct {
- PointFloat startPoint; //The starting point of the matched line.
- PointFloat endPoint; //The ending point of the matched line.
- double length; //The length of the line measured in pixels from the start point to the end point.
- double rotation; //The orientation of the matched line.
- double score; //The score of the matched line.
-} LineMatch;
-
-typedef struct LineDescriptor_struct {
- double minLength; //Specifies the minimum length of a line the function will return.
- double maxLength; //Specifies the maximum length of a line the function will return.
-} LineDescriptor;
-
-typedef struct RectangleDescriptor_struct {
- double minWidth; //Specifies the minimum width of a rectangle the algorithm will return.
- double maxWidth; //Specifies the maximum width of a rectangle the algorithm will return.
- double minHeight; //Specifies the minimum height of a rectangle the algorithm will return.
- double maxHeight; //Specifies the maximum height of a rectangle the algorithm will return.
-} RectangleDescriptor;
-
-typedef struct RectangleMatch_struct {
- PointFloat corner[4]; //The corners of the matched rectangle.
- double rotation; //The orientation of the matched rectangle.
- double width; //The width of the matched rectangle.
- double height; //The height of the matched rectangle.
- double score; //The score of the matched rectangle.
-} RectangleMatch;
-
-typedef struct EllipseDescriptor_struct {
- double minMajorRadius; //Specifies the minimum length of the semi-major axis of an ellipse the function will return.
- double maxMajorRadius; //Specifies the maximum length of the semi-major axis of an ellipse the function will return.
- double minMinorRadius; //Specifies the minimum length of the semi-minor axis of an ellipse the function will return.
- double maxMinorRadius; //Specifies the maximum length of the semi-minor axis of an ellipse the function will return.
-} EllipseDescriptor;
-
-typedef struct EllipseMatch_struct {
- PointFloat position; //The location of the center of the matched ellipse.
- double rotation; //The orientation of the matched ellipse.
- double majorRadius; //The length of the semi-major axis of the matched ellipse.
- double minorRadius; //The length of the semi-minor axis of the matched ellipse.
- double score; //The score of the matched ellipse.
-} EllipseMatch;
-
-typedef struct CircleMatch_struct {
- PointFloat position; //The location of the center of the matched circle.
- double radius; //The radius of the matched circle.
- double score; //The score of the matched circle.
-} CircleMatch;
-
-typedef struct CircleDescriptor_struct {
- double minRadius; //Specifies the minimum radius of a circle the function will return.
- double maxRadius; //Specifies the maximum radius of a circle the function will return.
-} CircleDescriptor;
-
-typedef struct ShapeDetectionOptions_struct {
- unsigned int mode; //Specifies the method used when looking for the shape in the image.
- RangeFloat* angleRanges; //An array of angle ranges, in degrees, where each range specifies how much you expect the shape to be rotated in the image.
- int numAngleRanges; //The size of the orientationRanges array.
- RangeFloat scaleRange; //A range that specifies the sizes of the shapes you expect to be in the image, expressed as a ratio percentage representing the size of the pattern in the image divided by size of the original pattern multiplied by 100.
- double minMatchScore;
-} ShapeDetectionOptions;
-
-typedef struct Curve_struct {
- PointFloat* points; //The points on the curve.
- unsigned int numPoints; //The number of points in the curve.
- int closed; //This element is TRUE if the curve is closed and FALSE if the curve is open.
- double curveLength; //The length of the curve.
- double minEdgeStrength; //The lowest edge strength detected on the curve.
- double maxEdgeStrength; //The highest edge strength detected on the curve.
- double averageEdgeStrength; //The average of all edge strengths detected on the curve.
-} Curve;
-
-typedef struct CurveOptions_struct {
- ExtractionMode extractionMode; //Specifies the method the function uses to identify curves in the image.
- int threshold; //Specifies the minimum contrast a seed point must have in order to begin a curve.
- EdgeFilterSize filterSize; //Specifies the width of the edge filter the function uses to identify curves in the image.
- int minLength; //Specifies the length, in pixels, of the smallest curve the function will extract.
- int rowStepSize; //Specifies the distance, in the y direction, between lines the function inspects for curve seed points.
- int columnStepSize; //Specifies the distance, in the x direction, between columns the function inspects for curve seed points.
- int maxEndPointGap; //Specifies the maximum gap, in pixels, between the endpoints of a curve that the function identifies as a closed curve.
- int onlyClosed; //Set this element to TRUE to specify that the function should only identify closed curves in the image.
- int subpixelAccuracy; //Set this element to TRUE to specify that the function identifies the location of curves with subpixel accuracy by interpolating between points to find the crossing of threshold.
-} CurveOptions;
-
-typedef struct Barcode2DInfo_struct {
- Barcode2DType type; //The type of the 2D barcode.
- int binary; //This element is TRUE if the 2D barcode contains binary data and FALSE if the 2D barcode contains text data.
- unsigned char* data; //The data encoded in the 2D barcode.
- unsigned int dataLength; //The length of the data array.
- PointFloat boundingBox[4]; //An array of four points describing the rectangle surrounding the 2D barcode.
- unsigned int numErrorsCorrected; //The number of errors the function corrected when decoding the 2D barcode.
- unsigned int numErasuresCorrected; //The number of erasures the function corrected when decoding the 2D barcode.
- unsigned int rows; //The number of rows in the 2D barcode.
- unsigned int columns; //The number of columns in the 2D barcode.
-} Barcode2DInfo;
-
-typedef struct DataMatrixOptions_struct {
- Barcode2DSearchMode searchMode; //Specifies the mode the function uses to search for barcodes.
- Barcode2DContrast contrast; //Specifies the contrast of the barcodes that the function searches for.
- Barcode2DCellShape cellShape; //Specifies the shape of the barcode data cells, which affects how the function decodes the barcode.
- Barcode2DShape barcodeShape; //Specifies the shape of the barcodes that the function searches for.
- DataMatrixSubtype subtype; //Specifies the Data Matrix subtypes of the barcodes that the function searches for.
-} DataMatrixOptions;
-
-typedef struct ClassifierAccuracyReport_struct {
- int size; //The size of the arrays in this structure.
- float accuracy; //The overall accuracy of the classifier, from 0 to 1000.
- char** classNames; //The names of the classes of this classifier.
- double* classAccuracy; //An array of size elements that contains accuracy information for each class.
- double* classPredictiveValue; //An array containing size elements that contains the predictive values of each class.
- int** classificationDistribution; //A two-dimensional array containing information about how the classifier classifies its samples.
-} ClassifierAccuracyReport;
-
-typedef struct NearestNeighborClassResult_struct {
- char* className; //The name of the class.
- float standardDeviation; //The standard deviation of the members of this class.
- int count; //The number of samples in this class.
-} NearestNeighborClassResult;
-
-typedef struct NearestNeighborTrainingReport_struct {
- float** classDistancesTable; //The confidence in the training.
- NearestNeighborClassResult* allScores; //All classes and their scores.
- int allScoresSize; //The number of entries in allScores.
-} NearestNeighborTrainingReport;
-
-typedef struct ParticleClassifierPreprocessingOptions_struct {
- int manualThreshold; //Set this element to TRUE to specify the threshold range manually.
- RangeFloat manualThresholdRange; //If a manual threshold is being done, the range of pixels to keep.
- ThresholdMethod autoThresholdMethod; //If an automatic threshold is being done, the method used to calculate the threshold range.
- RangeFloat limits; //The limits on the automatic threshold range.
- ParticleType particleType; //Specifies what kind of particles to look for.
- int rejectBorder; //Set this element to TRUE to reject border particles.
- int numErosions; //The number of erosions to perform.
-} ParticleClassifierPreprocessingOptions;
-
-typedef struct ClassifierSampleInfo_struct {
- char* className; //The name of the class this sample is in.
- double* featureVector; //The feature vector of this sample, or NULL if this is not a custom classifier session.
- int featureVectorSize; //The number of elements in the feature vector.
- Image* thumbnail; //A thumbnail image of this sample, or NULL if no image was specified.
-} ClassifierSampleInfo;
-
-typedef struct ClassScore_struct {
- char* className; //The name of the class.
- float distance; //The distance from the item to this class.
-} ClassScore;
-
-typedef struct ClassifierReport_struct {
- char* bestClassName; //The name of the best class for the sample.
- float classificationScore; //The similarity of the sample and the two closest classes in the classifier.
- float identificationScore; //The similarity of the sample and the assigned class.
- ClassScore* allScores; //All classes and their scores.
- int allScoresSize; //The number of entries in allScores.
-} ClassifierReport;
-
-typedef struct NearestNeighborOptions_struct {
- NearestNeighborMethod method; //The method to use.
- NearestNeighborMetric metric; //The metric to use.
- int k; //The value of k, if the IMAQ_K_NEAREST_NEIGHBOR method is used.
-} NearestNeighborOptions;
-
-typedef struct ParticleClassifierOptions_struct {
- float scaleDependence; //The relative importance of scale when classifying particles.
- float mirrorDependence; //The relative importance of mirror symmetry when classifying particles.
-} ParticleClassifierOptions;
-
-typedef struct RGBU64Value_struct {
- unsigned short B; //The blue value of the color.
- unsigned short G; //The green value of the color.
- unsigned short R; //The red value of the color.
- unsigned short alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} RGBU64Value;
-
-typedef struct GeometricPatternMatch_struct {
- PointFloat position; //The location of the origin of the template in the match.
- float rotation; //The rotation of the match relative to the template image, in degrees.
- float scale; //The size of the match relative to the size of the template image, expressed as a percentage.
- float score; //The accuracy of the match.
- PointFloat corner[4]; //An array of four points describing the rectangle surrounding the template image.
- int inverse; //This element is TRUE if the match is an inverse of the template image.
- float occlusion; //The percentage of the match that is occluded.
- float templateMatchCurveScore; //The accuracy of the match obtained by comparing the template curves to the curves in the match region.
- float matchTemplateCurveScore; //The accuracy of the match obtained by comparing the curves in the match region to the template curves.
- float correlationScore; //The accuracy of the match obtained by comparing the template image to the match region using a correlation metric that compares the two regions as a function of their pixel values.
-} GeometricPatternMatch;
-
-typedef struct MatchGeometricPatternAdvancedOptions_struct {
- int minFeaturesUsed; //Specifies the minimum number of features the function uses when matching.
- int maxFeaturesUsed; //Specifies the maximum number of features the function uses when matching.
- int subpixelIterations; //Specifies the maximum number of incremental improvements used to refine matches with subpixel information.
- double subpixelTolerance; //Specifies the maximum amount of change, in pixels, between consecutive incremental improvements in the match position before the function stops refining the match position.
- int initialMatchListLength; //Specifies the maximum size of the match list.
- int matchTemplateCurveScore; //Set this element to TRUE to specify that the function should calculate the match curve to template curve score and return it for each match result.
- int correlationScore; //Set this element to TRUE to specify that the function should calculate the correlation score and return it for each match result.
- double minMatchSeparationDistance; //Specifies the minimum separation distance, in pixels, between the origins of two matches that have unique positions.
- double minMatchSeparationAngle; //Specifies the minimum angular difference, in degrees, between two matches that have unique angles.
- double minMatchSeparationScale; //Specifies the minimum difference in scale, expressed as a percentage, between two matches that have unique scales.
- double maxMatchOverlap; //Specifies the maximum amount of overlap, expressed as a percentage, allowed between the bounding rectangles of two unique matches.
- int coarseResult; //Specifies whether you want the function to spend less time accurately estimating the location of a match.
-} MatchGeometricPatternAdvancedOptions;
-
-typedef struct MatchGeometricPatternOptions_struct {
- unsigned int mode; //Specifies the method imaqMatchGeometricPattern() uses when looking for the pattern in the image.
- int subpixelAccuracy; //Set this element to TRUE to specify that the function should calculate match locations with subpixel accuracy.
- RangeFloat* angleRanges; //An array of angle ranges, in degrees, where each range specifies how much you expect the template to be rotated in the image.
- int numAngleRanges; //Number of angle ranges in the angleRanges array.
- RangeFloat scaleRange; //A range that specifies the sizes of the pattern you expect to be in the image, expressed as a ratio percentage representing the size of the pattern in the image divided by size of the original pattern multiplied by 100.
- RangeFloat occlusionRange; //A range that specifies the percentage of the pattern you expect to be occluded in the image.
- int numMatchesRequested; //Number of valid matches expected.
- float minMatchScore; //The minimum score a match can have for the function to consider the match valid.
-} MatchGeometricPatternOptions;
-
-typedef struct LearnGeometricPatternAdvancedOptions_struct {
- int minRectLength; //Specifies the minimum length for each side of a rectangular feature.
- double minRectAspectRatio; //Specifies the minimum aspect ratio of a rectangular feature.
- int minRadius; //Specifies the minimum radius for a circular feature.
- int minLineLength; //Specifies the minimum length for a linear feature.
- double minFeatureStrength; //Specifies the minimum strength for a feature.
- int maxFeaturesUsed; //Specifies the maximum number of features the function uses when learning.
- int maxPixelDistanceFromLine; //Specifies the maximum number of pixels between an edge pixel and a linear feature for the function to consider that edge pixel as part of the linear feature.
-} LearnGeometricPatternAdvancedOptions;
-
-typedef struct FitEllipseOptions_struct {
- int rejectOutliers; //Whether to use every given point or only a subset of the points to fit the ellipse.
- double minScore; //Specifies the required quality of the fitted ellipse.
- double pixelRadius; //The acceptable distance, in pixels, that a point determined to belong to the ellipse can be from the circumference of the ellipse.
- int maxIterations; //Specifies the number of refinement iterations you allow the function to perform on the initial subset of points.
-} FitEllipseOptions;
-
-typedef struct FitCircleOptions_struct {
- int rejectOutliers; //Whether to use every given point or only a subset of the points to fit the circle.
- double minScore; //Specifies the required quality of the fitted circle.
- double pixelRadius; //The acceptable distance, in pixels, that a point determined to belong to the circle can be from the circumference of the circle.
- int maxIterations; //Specifies the number of refinement iterations you allow the function to perform on the initial subset of points.
-} FitCircleOptions;
-
-typedef struct ConstructROIOptions2_struct {
- int windowNumber; //The window number of the image window.
- const char* windowTitle; //Specifies the message string that the function displays in the title bar of the window.
- PaletteType type; //The palette type to use.
- RGBValue* palette; //If type is IMAQ_PALETTE_USER, this array is the palette of colors to use with the window.
- int numColors; //If type is IMAQ_PALETTE_USER, this element is the number of colors in the palette array.
- unsigned int maxContours; //The maximum number of contours the user will be able to select.
-} ConstructROIOptions2;
-
-typedef struct HSLValue_struct {
- unsigned char L; //The color luminance.
- unsigned char S; //The color saturation.
- unsigned char H; //The color hue.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} HSLValue;
-
-typedef struct HSVValue_struct {
- unsigned char V; //The color value.
- unsigned char S; //The color saturation.
- unsigned char H; //The color hue.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} HSVValue;
-
-typedef struct HSIValue_struct {
- unsigned char I; //The color intensity.
- unsigned char S; //The color saturation.
- unsigned char H; //The color hue.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} HSIValue;
-
-typedef struct CIELabValue_struct {
- double b; //The yellow/blue information of the color.
- double a; //The red/green information of the color.
- double L; //The color lightness.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} CIELabValue;
-
-typedef struct CIEXYZValue_struct {
- double Z; //The Z color information.
- double Y; //The color luminance.
- double X; //The X color information.
- unsigned char alpha; //The alpha value of the color, which represents extra information about a color image, such as gamma correction.
-} CIEXYZValue;
-
-typedef union Color2_union {
- RGBValue rgb; //The information needed to describe a color in the RGB (Red, Green, and Blue) color space.
- HSLValue hsl; //The information needed to describe a color in the HSL (Hue, Saturation, and Luminance) color space.
- HSVValue hsv; //The information needed to describe a color in the HSI (Hue, Saturation, and Value) color space.
- HSIValue hsi; //The information needed to describe a color in the HSI (Hue, Saturation, and Intensity) color space.
- CIELabValue cieLab; //The information needed to describe a color in the CIE L*a*b* (L, a, b) color space.
- CIEXYZValue cieXYZ; //The information needed to describe a color in the CIE XYZ (X, Y, Z) color space.
- int rawValue; //The integer value for the data in the color union.
-} Color2;
-
-typedef struct BestEllipse2_struct {
- PointFloat center; //The coordinate location of the center of the ellipse.
- PointFloat majorAxisStart; //The coordinate location of the start of the major axis of the ellipse.
- PointFloat majorAxisEnd; //The coordinate location of the end of the major axis of the ellipse.
- PointFloat minorAxisStart; //The coordinate location of the start of the minor axis of the ellipse.
- PointFloat minorAxisEnd; //The coordinate location of the end of the minor axis of the ellipse.
- double area; //The area of the ellipse.
- double perimeter; //The length of the perimeter of the ellipse.
- double error; //Represents the least square error of the fitted ellipse to the entire set of points.
- int valid; //This element is TRUE if the function achieved the minimum score within the number of allowed refinement iterations and FALSE if the function did not achieve the minimum score.
- int* pointsUsed; //An array of the indexes for the points array indicating which points the function used to fit the ellipse.
- int numPointsUsed; //The number of points the function used to fit the ellipse.
-} BestEllipse2;
-
-typedef struct LearnPatternAdvancedOptions_struct {
- LearnPatternAdvancedShiftOptions* shiftOptions; //Use this element to control the behavior of imaqLearnPattern2() during the shift-invariant learning phase.
- LearnPatternAdvancedRotationOptions* rotationOptions; //Use this element to control the behavior of imaqLearnPattern2()during the rotation-invariant learning phase.
-} LearnPatternAdvancedOptions;
-
-typedef struct AVIInfo_struct {
- unsigned int width; //The width of each frame.
- unsigned int height; //The height of each frame.
- ImageType imageType; //The type of images this AVI contains.
- unsigned int numFrames; //The number of frames in the AVI.
- unsigned int framesPerSecond; //The number of frames per second this AVI should be shown at.
- char* filterName; //The name of the compression filter used to create this AVI.
- int hasData; //Specifies whether this AVI has data attached to each frame or not.
- unsigned int maxDataSize; //If this AVI has data, the maximum size of the data in each frame.
-} AVIInfo;
-
-typedef struct LearnPatternAdvancedShiftOptions_struct {
- int initialStepSize; //The largest number of image pixels to shift the sample across the inspection image during the initial phase of shift-invariant matching.
- int initialSampleSize; //Specifies the number of template pixels that you want to include in a sample for the initial phase of shift-invariant matching.
- double initialSampleSizeFactor; //Specifies the size of the sample for the initial phase of shift-invariant matching as a percent of the template size, in pixels.
- int finalSampleSize; //Specifies the number of template pixels you want to add to initialSampleSize for the final phase of shift-invariant matching.
- double finalSampleSizeFactor; //Specifies the size of the sample for the final phase of shift-invariant matching as a percent of the edge points in the template, in pixels.
- int subpixelSampleSize; //Specifies the number of template pixels that you want to include in a sample for the subpixel phase of shift-invariant matching.
- double subpixelSampleSizeFactor; //Specifies the size of the sample for the subpixel phase of shift-invariant matching as a percent of the template size, in pixels.
-} LearnPatternAdvancedShiftOptions;
-
-typedef struct LearnPatternAdvancedRotationOptions_struct {
- SearchStrategy searchStrategySupport; //Specifies the aggressiveness of the rotation search strategy available during the matching phase.
- int initialStepSize; //The largest number of image pixels to shift the sample across the inspection image during the initial phase of matching.
- int initialSampleSize; //Specifies the number of template pixels that you want to include in a sample for the initial phase of rotation-invariant matching.
- double initialSampleSizeFactor; //Specifies the size of the sample for the initial phase of rotation-invariant matching as a percent of the template size, in pixels.
- int initialAngularAccuracy; //Sets the angle accuracy, in degrees, to use during the initial phase of rotation-invariant matching.
- int finalSampleSize; //Specifies the number of template pixels you want to add to initialSampleSize for the final phase of rotation-invariant matching.
- double finalSampleSizeFactor; //Specifies the size of the sample for the final phase of rotation-invariant matching as a percent of the edge points in the template, in pixels.
- int finalAngularAccuracy; //Sets the angle accuracy, in degrees, to use during the final phase of the rotation-invariant matching.
- int subpixelSampleSize; //Specifies the number of template pixels that you want to include in a sample for the subpixel phase of rotation-invariant matching.
- double subpixelSampleSizeFactor; //Specifies the size of the sample for the subpixel phase of rotation-invariant matching as a percent of the template size, in pixels.
-} LearnPatternAdvancedRotationOptions;
-
-typedef struct MatchPatternAdvancedOptions_struct {
- int subpixelIterations; //Defines the maximum number of incremental improvements used to refine matching using subpixel information.
- double subpixelTolerance; //Defines the maximum amount of change, in pixels, between consecutive incremental improvements in the match position that you want to trigger the end of the refinement process.
- int initialMatchListLength; //Specifies the maximum size of the match list.
- int matchListReductionFactor; //Specifies the reduction of the match list as matches are refined.
- int initialStepSize; //Specifies the number of pixels to shift the sample across the inspection image during the initial phase of shift-invariant matching.
- SearchStrategy searchStrategy; //Specifies the aggressiveness of the rotation search strategy.
- int intermediateAngularAccuracy; //Specifies the accuracy to use during the intermediate phase of rotation-invariant matching.
-} MatchPatternAdvancedOptions;
-
-typedef struct ParticleFilterCriteria2_struct {
- MeasurementType parameter; //The morphological measurement that the function uses for filtering.
- float lower; //The lower bound of the criteria range.
- float upper; //The upper bound of the criteria range.
- int calibrated; //Set this element to TRUE to take calibrated measurements.
- int exclude; //Set this element to TRUE to indicate that a match occurs when the measurement is outside the criteria range.
-} ParticleFilterCriteria2;
-
-typedef struct BestCircle2_struct {
- PointFloat center; //The coordinate location of the center of the circle.
- double radius; //The radius of the circle.
- double area; //The area of the circle.
- double perimeter; //The length of the perimeter of the circle.
- double error; //Represents the least square error of the fitted circle to the entire set of points.
- int valid; //This element is TRUE if the function achieved the minimum score within the number of allowed refinement iterations and FALSE if the function did not achieve the minimum score.
- int* pointsUsed; //An array of the indexes for the points array indicating which points the function used to fit the circle.
- int numPointsUsed; //The number of points the function used to fit the circle.
-} BestCircle2;
-
-typedef struct OCRSpacingOptions_struct {
- int minCharSpacing; //The minimum number of pixels that must be between two characters for NI Vision to train or read the characters separately.
- int minCharSize; //The minimum number of pixels required for an object to be a potentially identifiable character.
- int maxCharSize; //The maximum number of pixels required for an object to be a potentially identifiable character.
- int maxHorizontalElementSpacing; //The maximum horizontal spacing, in pixels, allowed between character elements to train or read the character elements as a single character.
- int maxVerticalElementSpacing; //The maximum vertical element spacing in pixels.
- int minBoundingRectWidth; //The minimum possible width, in pixels, for a character bounding rectangle.
- int maxBoundingRectWidth; //The maximum possible width, in pixels, for a character bounding rectangle.
- int minBoundingRectHeight; //The minimum possible height, in pixels, for a character bounding rectangle.
- int maxBoundingRectHeight; //The maximum possible height, in pixels, for a character bounding rectangle.
- int autoSplit; //Set this element to TRUE to automatically adjust the location of the character bounding rectangle when characters overlap vertically.
-} OCRSpacingOptions;
-
-typedef struct OCRProcessingOptions_struct {
- ThresholdMode mode; //The thresholding mode.
- int lowThreshold; //The low threshold value when you set mode to IMAQ_FIXED_RANGE.
- int highThreshold; //The high threshold value when you set mode to IMAQ_FIXED_RANGE.
- int blockCount; //The number of blocks for threshold calculation algorithms that require blocks.
- int fastThreshold; //Set this element to TRUE to use a faster, less accurate threshold calculation algorithm.
- int biModalCalculation; //Set this element to TRUE to calculate both the low and high threshold values when using the fast thresholding method.
- int darkCharacters; //Set this element to TRUE to read or train dark characters on a light background.
- int removeParticlesTouchingROI; //Set this element to TRUE to remove the particles touching the ROI.
- int erosionCount; //The number of erosions to perform.
-} OCRProcessingOptions;
-
-typedef struct ReadTextOptions_struct {
- String255 validChars[255]; //An array of strings that specifies the valid characters.
- int numValidChars; //The number of strings in the validChars array that you have initialized.
- char substitutionChar; //The character to substitute for objects that the function cannot match with any of the trained characters.
- ReadStrategy readStrategy; //The read strategy, which determines how closely the function analyzes images in the reading process to match objects with trained characters.
- int acceptanceLevel; //The minimum acceptance level at which an object is considered a trained character.
- int aspectRatio; //The maximum aspect ratio variance percentage for valid characters.
- ReadResolution readResolution; //The read resolution, which determines how much of the trained character data the function uses to match objects to trained characters.
-} ReadTextOptions;
-
-typedef struct CharInfo_struct {
- const char* charValue; //Retrieves the character value of the corresponding character in the character set.
- const Image* charImage; //The image you used to train this character.
- const Image* internalImage; //The internal representation that NI Vision uses to match objects to this character.
-} CharInfo;
-
-#if !defined(USERINT_HEADER) && !defined(_CVI_RECT_DEFINED)
-typedef struct Rect_struct {
- int top; //Location of the top edge of the rectangle.
- int left; //Location of the left edge of the rectangle.
- int height; //Height of the rectangle.
- int width; //Width of the rectangle.
-} Rect;
-#define _CVI_RECT_DEFINED
-#endif
-
-typedef struct CharReport_struct {
- const char* character; //The character value.
- PointFloat corner[4]; //An array of four points that describes the rectangle that surrounds the character.
- int reserved; //This element is reserved.
- int lowThreshold; //The minimum value of the threshold range used for this character.
- int highThreshold; //The maximum value of the threshold range used for this character.
-} CharReport;
-
-typedef struct ReadTextReport_struct {
- const char* readString; //The read string.
- const CharReport* characterReport; //An array of reports describing the properties of each identified character.
- int numCharacterReports; //The number of identified characters.
-} ReadTextReport;
-
-#if !defined(USERINT_HEADER) && !defined(_CVI_POINT_DEFINED)
-typedef struct Point_struct {
- int x; //The x-coordinate of the point.
- int y; //The y-coordinate of the point.
-} Point;
-#define _CVI_POINT_DEFINED
-#endif
-
-typedef struct Annulus_struct {
- Point center; //The coordinate location of the center of the annulus.
- int innerRadius; //The internal radius of the annulus.
- int outerRadius; //The external radius of the annulus.
- double startAngle; //The start angle, in degrees, of the annulus.
- double endAngle; //The end angle, in degrees, of the annulus.
-} Annulus;
-
-typedef struct EdgeLocationReport_struct {
- PointFloat* edges; //The coordinate location of all edges detected by the search line.
- int numEdges; //The number of points in the edges array.
-} EdgeLocationReport;
-
-typedef struct EdgeOptions_struct {
- unsigned threshold; //Specifies the threshold value for the contrast of the edge.
- unsigned width; //The number of pixels that the function averages to find the contrast at either side of the edge.
- unsigned steepness; //The span, in pixels, of the slope of the edge projected along the path specified by the input points.
- InterpolationMethod subpixelType; //The method for interpolating.
- unsigned subpixelDivisions; //The number of samples the function obtains from a pixel.
-} EdgeOptions;
-
-typedef struct EdgeReport_struct {
- float location; //The location of the edge from the first point in the points array.
- float contrast; //The contrast at the edge.
- PolarityType polarity; //The polarity of the edge.
- float reserved; //This element is reserved.
- PointFloat coordinate; //The coordinates of the edge.
-} EdgeReport;
-
-typedef struct ExtremeReport_struct {
- double location; //The locations of the extreme.
- double amplitude; //The amplitude of the extreme.
- double secondDerivative; //The second derivative of the extreme.
-} ExtremeReport;
-
-typedef struct FitLineOptions_struct {
- float minScore; //Specifies the required quality of the fitted line.
- float pixelRadius; //Specifies the neighborhood pixel relationship for the initial subset of points being used.
- int numRefinements; //Specifies the number of refinement iterations you allow the function to perform on the initial subset of points.
-} FitLineOptions;
-
-typedef struct DisplayMapping_struct {
- MappingMethod method; //Describes the method for converting 16-bit pixels to 8-bit pixels.
- int minimumValue; //When method is IMAQ_RANGE, minimumValue represents the value that is mapped to 0.
- int maximumValue; //When method is IMAQ_RANGE, maximumValue represents the value that is mapped to 255.
- int shiftCount; //When method is IMAQ_DOWNSHIFT, shiftCount represents the number of bits the function right-shifts the 16-bit pixel values.
-} DisplayMapping;
-
-typedef struct DetectExtremesOptions_struct {
- double threshold; //Defines which extremes are too small.
- int width; //Specifies the number of consecutive data points the function uses in the quadratic least-squares fit.
-} DetectExtremesOptions;
-
-typedef struct ImageInfo_struct {
- CalibrationUnit imageUnit; //If you set calibration information with imaqSetSimpleCalibrationInfo(), imageUnit is the calibration unit.
- float stepX; //If you set calibration information with imaqSetCalibrationInfo(), stepX is the distance in the calibration unit between two pixels in the x direction.
- float stepY; //If you set calibration information with imaqSetCalibrationInfo(), stepY is the distance in the calibration unit between two pixels in the y direction.
- ImageType imageType; //The type of the image.
- int xRes; //The number of columns in the image.
- int yRes; //The number of rows in the image.
- int xOffset; //If you set mask offset information with imaqSetMaskOffset(), xOffset is the offset of the mask origin in the x direction.
- int yOffset; //If you set mask offset information with imaqSetMaskOffset(), yOffset is the offset of the mask origin in the y direction.
- int border; //The number of border pixels around the image.
- int pixelsPerLine; //The number of pixels stored for each line of the image.
- void* reserved0; //This element is reserved.
- void* reserved1; //This element is reserved.
- void* imageStart; //A pointer to pixel (0,0).
-} ImageInfo;
-
-typedef struct LCDOptions_struct {
- int litSegments; //Set this parameter to TRUE if the segments are brighter than the background.
- float threshold; //Determines whether a segment is ON or OFF.
- int sign; //Indicates whether the function must read the sign of the indicator.
- int decimalPoint; //Determines whether to look for a decimal separator after each digit.
-} LCDOptions;
-
-typedef struct LCDReport_struct {
- const char* text; //A string of the characters of the LCD.
- LCDSegments* segmentInfo; //An array of LCDSegment structures describing which segments of each digit are on.
- int numCharacters; //The number of characters that the function reads.
- int reserved; //This element is reserved.
-} LCDReport;
-
-typedef struct LCDSegments_struct {
- unsigned a:1; //True if the a segment is on.
- unsigned b:1; //True if the b segment is on.
- unsigned c:1; //True if the c segment is on.
- unsigned d:1; //True if the d segment is on.
- unsigned e:1; //True if the e segment is on.
- unsigned f:1; //True if the f segment is on.
- unsigned g:1; //True if the g segment is on.
- unsigned reserved:25; //This element is reserved.
-} LCDSegments;
-
-typedef struct LearnCalibrationOptions_struct {
- CalibrationMode mode; //Specifies the type of algorithm you want to use to reduce distortion in your image.
- ScalingMethod method; //Defines the scaling method correction functions use to correct the image.
- CalibrationROI roi; //Specifies the ROI correction functions use when correcting an image.
- int learnMap; //Set this element to TRUE if you want the function to calculate and store an error map during the learning process.
- int learnTable; //Set this element to TRUE if you want the function to calculate and store the correction table.
-} LearnCalibrationOptions;
-
-typedef struct LearnColorPatternOptions_struct {
- LearningMode learnMode; //Specifies the invariance mode the function uses when learning the pattern.
- ImageFeatureMode featureMode; //Specifies the features the function uses when learning the color pattern.
- int threshold; //Specifies the saturation threshold the function uses to distinguish between two colors that have the same hue values.
- ColorIgnoreMode ignoreMode; //Specifies whether the function excludes certain colors from the color features of the template image.
- ColorInformation* colorsToIgnore; //An array of ColorInformation structures providing a set of colors to exclude from the color features of the template image.
- int numColorsToIgnore; //The number of ColorInformation structures in the colorsToIgnore array.
-} LearnColorPatternOptions;
-
-typedef struct Line_struct {
- Point start; //The coordinate location of the start of the line.
- Point end; //The coordinate location of the end of the line.
-} Line;
-
-typedef struct LinearAverages_struct {
- float* columnAverages; //An array containing the mean pixel value of each column.
- int columnCount; //The number of elements in the columnAverages array.
- float* rowAverages; //An array containing the mean pixel value of each row.
- int rowCount; //The number of elements in the rowAverages array.
- float* risingDiagAverages; //An array containing the mean pixel value of each diagonal running from the lower left to the upper right of the inspected area of the image.
- int risingDiagCount; //The number of elements in the risingDiagAverages array.
- float* fallingDiagAverages; //An array containing the mean pixel value of each diagonal running from the upper left to the lower right of the inspected area of the image.
- int fallingDiagCount; //The number of elements in the fallingDiagAverages array.
-} LinearAverages;
-
-typedef struct LineProfile_struct {
- float* profileData; //An array containing the value of each pixel in the line.
- Rect boundingBox; //The bounding rectangle of the line.
- float min; //The smallest pixel value in the line profile.
- float max; //The largest pixel value in the line profile.
- float mean; //The mean value of the pixels in the line profile.
- float stdDev; //The standard deviation of the line profile.
- int dataCount; //The size of the profileData array.
-} LineProfile;
-
-typedef struct MatchColorPatternOptions_struct {
- MatchingMode matchMode; //Specifies the method to use when looking for the color pattern in the image.
- ImageFeatureMode featureMode; //Specifies the features to use when looking for the color pattern in the image.
- int minContrast; //Specifies the minimum contrast expected in the image.
- int subpixelAccuracy; //Set this parameter to TRUE to return areas in the image that match the pattern area with subpixel accuracy.
- RotationAngleRange* angleRanges; //An array of angle ranges, in degrees, where each range specifies how much you expect the pattern to be rotated in the image.
- int numRanges; //Number of angle ranges in the angleRanges array.
- double colorWeight; //Determines the percent contribution of the color score to the final color pattern matching score.
- ColorSensitivity sensitivity; //Specifies the sensitivity of the color information in the image.
- SearchStrategy strategy; //Specifies how the color features of the image are used during the search phase.
- int numMatchesRequested; //Number of valid matches expected.
- float minMatchScore; //The minimum score a match can have for the function to consider the match valid.
-} MatchColorPatternOptions;
-
-typedef struct HistogramReport_struct {
- int* histogram; //An array describing the number of pixels that fell into each class.
- int histogramCount; //The number of elements in the histogram array.
- float min; //The smallest pixel value that the function classified.
- float max; //The largest pixel value that the function classified.
- float start; //The smallest pixel value that fell into the first class.
- float width; //The size of each class.
- float mean; //The mean value of the pixels that the function classified.
- float stdDev; //The standard deviation of the pixels that the function classified.
- int numPixels; //The number of pixels that the function classified.
-} HistogramReport;
-
-typedef struct ArcInfo_struct {
- Rect boundingBox; //The coordinate location of the bounding box of the arc.
- double startAngle; //The counterclockwise angle from the x-axis in degrees to the start of the arc.
- double endAngle; //The counterclockwise angle from the x-axis in degrees to the end of the arc.
-} ArcInfo;
-
-typedef struct AxisReport_struct {
- PointFloat origin; //The origin of the coordinate system, which is the intersection of the two axes of the coordinate system.
- PointFloat mainAxisEnd; //The end of the main axis, which is the result of the computation of the intersection of the main axis with the rectangular search area.
- PointFloat secondaryAxisEnd; //The end of the secondary axis, which is the result of the computation of the intersection of the secondary axis with the rectangular search area.
-} AxisReport;
-
-typedef struct BarcodeInfo_struct {
- const char* outputString; //A string containing the decoded barcode data.
- int size; //The size of the output string.
- char outputChar1; //The contents of this character depend on the barcode type.
- char outputChar2; //The contents of this character depend on the barcode type.
- double confidenceLevel; //A quality measure of the decoded barcode ranging from 0 to 100, with 100 being the best.
- BarcodeType type; //The type of barcode.
-} BarcodeInfo;
-
-typedef struct BCGOptions_struct {
- float brightness; //Adjusts the brightness of the image.
- float contrast; //Adjusts the contrast of the image.
- float gamma; //Performs gamma correction.
-} BCGOptions;
-
-typedef struct BestCircle_struct {
- PointFloat center; //The coordinate location of the center of the circle.
- double radius; //The radius of the circle.
- double area; //The area of the circle.
- double perimeter; //The length of the perimeter of the circle.
- double error; //Represents the least square error of the fitted circle to the entire set of points.
-} BestCircle;
-
-typedef struct BestEllipse_struct {
- PointFloat center; //The coordinate location of the center of the ellipse.
- PointFloat majorAxisStart; //The coordinate location of the start of the major axis of the ellipse.
- PointFloat majorAxisEnd; //The coordinate location of the end of the major axis of the ellipse.
- PointFloat minorAxisStart; //The coordinate location of the start of the minor axis of the ellipse.
- PointFloat minorAxisEnd; //The coordinate location of the end of the minor axis of the ellipse.
- double area; //The area of the ellipse.
- double perimeter; //The length of the perimeter of the ellipse.
-} BestEllipse;
-
-typedef struct BestLine_struct {
- PointFloat start; //The coordinate location of the start of the line.
- PointFloat end; //The coordinate location of the end of the line.
- LineEquation equation; //Defines the three coefficients of the equation of the best fit line.
- int valid; //This element is TRUE if the function achieved the minimum score within the number of allowed refinement iterations and FALSE if the function did not achieve the minimum score.
- double error; //Represents the least square error of the fitted line to the entire set of points.
- int* pointsUsed; //An array of the indexes for the points array indicating which points the function used to fit the line.
- int numPointsUsed; //The number of points the function used to fit the line.
-} BestLine;
-
-typedef struct BrowserOptions_struct {
- int width; //The width to make the browser.
- int height; //The height to make the browser image.
- int imagesPerLine; //The number of images to place on a single line.
- RGBValue backgroundColor; //The background color of the browser.
- int frameSize; //Specifies the number of pixels with which to border each thumbnail.
- BrowserFrameStyle style; //The style for the frame around each thumbnail.
- float ratio; //Specifies the width to height ratio of each thumbnail.
- RGBValue focusColor; //The color to use to display focused cells.
-} BrowserOptions;
-
-typedef struct CoordinateSystem_struct {
- PointFloat origin; //The origin of the coordinate system.
- float angle; //The angle, in degrees, of the x-axis of the coordinate system relative to the image x-axis.
- AxisOrientation axisOrientation; //The direction of the y-axis of the coordinate reference system.
-} CoordinateSystem;
-
-typedef struct CalibrationInfo_struct {
- float* errorMap; //The error map for the calibration.
- int mapColumns; //The number of columns in the error map.
- int mapRows; //The number of rows in the error map.
- ROI* userRoi; //Specifies the ROI the user provided when learning the calibration.
- ROI* calibrationRoi; //Specifies the ROI that corresponds to the region of the image where the calibration information is accurate.
- LearnCalibrationOptions options; //Specifies the calibration options the user provided when learning the calibration.
- GridDescriptor grid; //Specifies the scaling constants for the image.
- CoordinateSystem system; //Specifies the coordinate system for the real world coordinates.
- RangeFloat range; //The range of the grayscale the function used to represent the circles in the grid image.
- float quality; //The quality score of the learning process, which is a value between 0-1000.
-} CalibrationInfo;
-
-typedef struct CalibrationPoints_struct {
- PointFloat* pixelCoordinates; //The array of pixel coordinates.
- PointFloat* realWorldCoordinates; //The array of corresponding real-world coordinates.
- int numCoordinates; //The number of coordinates in both of the arrays.
-} CalibrationPoints;
-
-typedef struct CaliperOptions_struct {
- TwoEdgePolarityType polarity; //Specifies the edge polarity of the edge pairs.
- float separation; //The distance between edge pairs.
- float separationDeviation; //Sets the range around the separation value.
-} CaliperOptions;
-
-typedef struct CaliperReport_struct {
- float edge1Contrast; //The contrast of the first edge.
- PointFloat edge1Coord; //The coordinates of the first edge.
- float edge2Contrast; //The contrast of the second edge.
- PointFloat edge2Coord; //The coordinates of the second edge.
- float separation; //The distance between the two edges.
- float reserved; //This element is reserved.
-} CaliperReport;
-
-typedef struct DrawTextOptions_struct {
- char fontName[32]; //The font name to use.
- int fontSize; //The size of the font.
- int bold; //Set this parameter to TRUE to bold text.
- int italic; //Set this parameter to TRUE to italicize text.
- int underline; //Set this parameter to TRUE to underline text.
- int strikeout; //Set this parameter to TRUE to strikeout text.
- TextAlignment textAlignment; //Sets the alignment of text.
- FontColor fontColor; //Sets the font color.
-} DrawTextOptions;
-
-typedef struct CircleReport_struct {
- Point center; //The coordinate point of the center of the circle.
- int radius; //The radius of the circle, in pixels.
- int area; //The area of the circle, in pixels.
-} CircleReport;
-
-typedef struct ClosedContour_struct {
- Point* points; //The points that make up the closed contour.
- int numPoints; //The number of points in the array.
-} ClosedContour;
-
-typedef struct ColorHistogramReport_struct {
- HistogramReport plane1; //The histogram report of the first color plane.
- HistogramReport plane2; //The histogram report of the second plane.
- HistogramReport plane3; //The histogram report of the third plane.
-} ColorHistogramReport;
-
-typedef struct ColorInformation_struct {
- int infoCount; //The size of the info array.
- int saturation; //The saturation level the function uses to learn the color information.
- double* info; //An array of color information that represents the color spectrum analysis of a region of an image in a compact form.
-} ColorInformation;
-
-typedef struct Complex_struct {
- float r; //The real part of the value.
- float i; //The imaginary part of the value.
-} Complex;
-
-typedef struct ConcentricRakeReport_struct {
- ArcInfo* rakeArcs; //An array containing the location of each concentric arc line used for edge detection.
- int numArcs; //The number of arc lines in the rakeArcs array.
- PointFloat* firstEdges; //The coordinate location of all edges detected as first edges.
- int numFirstEdges; //The number of points in the first edges array.
- PointFloat* lastEdges; //The coordinate location of all edges detected as last edges.
- int numLastEdges; //The number of points in the last edges array.
- EdgeLocationReport* allEdges; //An array of reports describing the location of the edges located by each concentric rake arc line.
- int* linesWithEdges; //An array of indices into the rakeArcs array indicating the concentric rake arc lines on which the function detected at least one edge.
- int numLinesWithEdges; //The number of concentric rake arc lines along which the function detected edges.
-} ConcentricRakeReport;
-
-typedef struct ConstructROIOptions_struct {
- int windowNumber; //The window number of the image window.
- const char* windowTitle; //Specifies the message string that the function displays in the title bar of the window.
- PaletteType type; //The palette type to use.
- RGBValue* palette; //If type is IMAQ_PALETTE_USER, this array is the palette of colors to use with the window.
- int numColors; //If type is IMAQ_PALETTE_USER, this element is the number of colors in the palette array.
-} ConstructROIOptions;
-
-typedef struct ContourInfo_struct {
- ContourType type; //The contour type.
- unsigned numPoints; //The number of points that make up the contour.
- Point* points; //The points describing the contour.
- RGBValue contourColor; //The contour color.
-} ContourInfo;
-
-typedef union ContourUnion_union {
- Point* point; //Use this member when the contour is of type IMAQ_POINT.
- Line* line; //Use this member when the contour is of type IMAQ_LINE.
- Rect* rect; //Use this member when the contour is of type IMAQ_RECT.
- Rect* ovalBoundingBox; //Use this member when the contour is of type IMAQ_OVAL.
- ClosedContour* closedContour; //Use this member when the contour is of type IMAQ_CLOSED_CONTOUR.
- OpenContour* openContour; //Use this member when the contour is of type IMAQ_OPEN_CONTOUR.
- Annulus* annulus; //Use this member when the contour is of type IMAQ_ANNULUS.
- RotatedRect* rotatedRect; //Use this member when the contour is of type IMAQ_ROTATED_RECT.
-} ContourUnion;
-
-typedef struct ContourInfo2_struct {
- ContourType type; //The contour type.
- RGBValue color; //The contour color.
- ContourUnion structure; //The information necessary to describe the contour in coordinate space.
-} ContourInfo2;
-
-typedef struct ContourPoint_struct {
- double x; //The x-coordinate value in the image.
- double y; //The y-coordinate value in the image.
- double curvature; //The change in slope at this edge point of the segment.
- double xDisplacement; //The x displacement of the current edge pixel from a cubic spline fit of the current edge segment.
- double yDisplacement; //The y displacement of the current edge pixel from a cubic spline fit of the current edge segment.
-} ContourPoint;
-
-typedef struct CoordinateTransform_struct {
- Point initialOrigin; //The origin of the initial coordinate system.
- float initialAngle; //The angle, in degrees, of the x-axis of the initial coordinate system relative to the image x-axis.
- Point finalOrigin; //The origin of the final coordinate system.
- float finalAngle; //The angle, in degrees, of the x-axis of the final coordinate system relative to the image x-axis.
-} CoordinateTransform;
-
-typedef struct CoordinateTransform2_struct {
- CoordinateSystem referenceSystem; //Defines the coordinate system for input coordinates.
- CoordinateSystem measurementSystem; //Defines the coordinate system in which the function should perform measurements.
-} CoordinateTransform2;
-
-typedef struct CannyOptions_struct {
- float sigma; //The sigma of the Gaussian smoothing filter that the function applies to the image before edge detection.
- float upperThreshold; //The upper fraction of pixel values in the image from which the function chooses a seed or starting point of an edge segment.
- float lowerThreshold; //The function multiplies this value by upperThreshold to determine the lower threshold for all the pixels in an edge segment.
- int windowSize; //The window size of the Gaussian filter that the function applies to the image.
-} CannyOptions;
-
-typedef struct Range_struct {
- int minValue; //The minimum value of the range.
- int maxValue; //The maximum value of the range.
-} Range;
-
-typedef struct UserPointSymbol_struct {
- int cols; //Number of columns in the symbol.
- int rows; //Number of rows in the symbol.
- int* pixels; //The pixels of the symbol.
-} UserPointSymbol;
-
-typedef struct View3DOptions_struct {
- int sizeReduction; //A divisor the function uses when determining the final height and width of the 3D image.
- int maxHeight; //Defines the maximum height of a pixel from the image source drawn in 3D.
- Direction3D direction; //Defines the 3D orientation.
- float alpha; //Determines the angle between the horizontal and the baseline.
- float beta; //Determines the angle between the horizontal and the second baseline.
- int border; //Defines the border size.
- int background; //Defines the background color.
- Plane3D plane; //Indicates the view a function uses to show complex images.
-} View3DOptions;
-
-typedef struct MatchPatternOptions_struct {
- MatchingMode mode; //Specifies the method to use when looking for the pattern in the image.
- int minContrast; //Specifies the minimum contrast expected in the image.
- int subpixelAccuracy; //Set this element to TRUE to return areas in the image that match the pattern area with subpixel accuracy.
- RotationAngleRange* angleRanges; //An array of angle ranges, in degrees, where each range specifies how much you expect the pattern to be rotated in the image.
- int numRanges; //Number of angle ranges in the angleRanges array.
- int numMatchesRequested; //Number of valid matches expected.
- int matchFactor; //Controls the number of potential matches that the function examines.
- float minMatchScore; //The minimum score a match can have for the function to consider the match valid.
-} MatchPatternOptions;
-
-typedef struct TIFFFileOptions_struct {
- int rowsPerStrip; //Indicates the number of rows that the function writes per strip.
- PhotometricMode photoInterp; //Designates which photometric interpretation to use.
- TIFFCompressionType compressionType; //Indicates the type of compression to use on the TIFF file.
-} TIFFFileOptions;
-
-typedef union Color_union {
- RGBValue rgb; //The information needed to describe a color in the RGB (Red, Green, and Blue) color space.
- HSLValue hsl; //The information needed to describe a color in the HSL (Hue, Saturation, and Luminance) color space.
- HSVValue hsv; //The information needed to describe a color in the HSI (Hue, Saturation, and Value) color space.
- HSIValue hsi; //The information needed to describe a color in the HSI (Hue, Saturation, and Intensity) color space.
- int rawValue; //The integer value for the data in the color union.
-} Color;
-
-typedef union PixelValue_union {
- float grayscale; //A grayscale pixel value.
- RGBValue rgb; //A RGB pixel value.
- HSLValue hsl; //A HSL pixel value.
- Complex complex; //A complex pixel value.
- RGBU64Value rgbu64; //An unsigned 64-bit RGB pixel value.
-} PixelValue;
-
-typedef struct OpenContour_struct {
- Point* points; //The points that make up the open contour.
- int numPoints; //The number of points in the array.
-} OpenContour;
-
-typedef struct OverlayTextOptions_struct {
- const char* fontName; //The name of the font to use.
- int fontSize; //The size of the font.
- int bold; //Set this element to TRUE to bold the text.
- int italic; //Set this element to TRUE to italicize the text.
- int underline; //Set this element to TRUE to underline the text.
- int strikeout; //Set this element to TRUE to strikeout the text.
- TextAlignment horizontalTextAlignment; //Sets the alignment of the text.
- VerticalTextAlignment verticalTextAlignment; //Sets the vertical alignment for the text.
- RGBValue backgroundColor; //Sets the color for the text background pixels.
- double angle; //The counterclockwise angle, in degrees, of the text relative to the x-axis.
-} OverlayTextOptions;
-
-typedef struct ParticleFilterCriteria_struct {
- MeasurementValue parameter; //The morphological measurement that the function uses for filtering.
- float lower; //The lower bound of the criteria range.
- float upper; //The upper bound of the criteria range.
- int exclude; //Set this element to TRUE to indicate that a match occurs when the value is outside the criteria range.
-} ParticleFilterCriteria;
-
-typedef struct ParticleReport_struct {
- int area; //The number of pixels in the particle.
- float calibratedArea; //The size of the particle, calibrated to the calibration information of the image.
- float perimeter; //The length of the perimeter, calibrated to the calibration information of the image.
- int numHoles; //The number of holes in the particle.
- int areaOfHoles; //The total surface area, in pixels, of all the holes in a particle.
- float perimeterOfHoles; //The length of the perimeter of all the holes in the particle calibrated to the calibration information of the image.
- Rect boundingBox; //The smallest rectangle that encloses the particle.
- float sigmaX; //The sum of the particle pixels on the x-axis.
- float sigmaY; //The sum of the particle pixels on the y-axis.
- float sigmaXX; //The sum of the particle pixels on the x-axis, squared.
- float sigmaYY; //The sum of the particle pixels on the y-axis, squared.
- float sigmaXY; //The sum of the particle pixels on the x-axis and y-axis.
- int longestLength; //The length of the longest horizontal line segment.
- Point longestPoint; //The location of the leftmost pixel of the longest segment in the particle.
- int projectionX; //The length of the particle when projected onto the x-axis.
- int projectionY; //The length of the particle when projected onto the y-axis.
- int connect8; //This element is TRUE if the function used connectivity-8 to determine if particles are touching.
-} ParticleReport;
-
-typedef struct PatternMatch_struct {
- PointFloat position; //The location of the center of the match.
- float rotation; //The rotation of the match relative to the template image, in degrees.
- float scale; //The size of the match relative to the size of the template image, expressed as a percentage.
- float score; //The accuracy of the match.
- PointFloat corner[4]; //An array of four points describing the rectangle surrounding the template image.
-} PatternMatch;
-
-typedef struct QuantifyData_struct {
- float mean; //The mean value of the pixel values.
- float stdDev; //The standard deviation of the pixel values.
- float min; //The smallest pixel value.
- float max; //The largest pixel value.
- float calibratedArea; //The area, calibrated to the calibration information of the image.
- int pixelArea; //The area, in number of pixels.
- float relativeSize; //The proportion, expressed as a percentage, of the associated region relative to the whole image.
-} QuantifyData;
-
-typedef struct QuantifyReport_struct {
- QuantifyData global; //Statistical data of the whole image.
- QuantifyData* regions; //An array of QuantifyData structures containing statistical data of each region of the image.
- int regionCount; //The number of regions.
-} QuantifyReport;
-
-typedef struct RakeOptions_struct {
- int threshold; //Specifies the threshold value for the contrast of the edge.
- int width; //The number of pixels that the function averages to find the contrast at either side of the edge.
- int steepness; //The span, in pixels, of the slope of the edge projected along the path specified by the input points.
- int subsamplingRatio; //Specifies the number of pixels that separate two consecutive search lines.
- InterpolationMethod subpixelType; //The method for interpolating.
- int subpixelDivisions; //The number of samples the function obtains from a pixel.
-} RakeOptions;
-
-typedef struct RakeReport_struct {
- LineFloat* rakeLines; //The coordinate location of each of the rake lines used by the function.
- int numRakeLines; //The number of lines in the rakeLines array.
- PointFloat* firstEdges; //The coordinate location of all edges detected as first edges.
- unsigned int numFirstEdges; //The number of points in the firstEdges array.
- PointFloat* lastEdges; //The coordinate location of all edges detected as last edges.
- unsigned int numLastEdges; //The number of points in the lastEdges array.
- EdgeLocationReport* allEdges; //An array of reports describing the location of the edges located by each rake line.
- int* linesWithEdges; //An array of indices into the rakeLines array indicating the rake lines on which the function detected at least one edge.
- int numLinesWithEdges; //The number of rake lines along which the function detected edges.
-} RakeReport;
-
-typedef struct TransformReport_struct {
- PointFloat* points; //An array of transformed coordinates.
- int* validPoints; //An array of values that describe the validity of each of the coordinates according to the region of interest you calibrated using either imaqLearnCalibrationGrid() or imaqLearnCalibrationPoints().
- int numPoints; //The length of both the points array and the validPoints array.
-} TransformReport;
-
-typedef struct ShapeReport_struct {
- Rect coordinates; //The bounding rectangle of the object.
- Point centroid; //The coordinate location of the centroid of the object.
- int size; //The size, in pixels, of the object.
- double score; //A value ranging between 1 and 1,000 that specifies how similar the object in the image is to the template.
-} ShapeReport;
-
-typedef struct MeterArc_struct {
- PointFloat needleBase; //The coordinate location of the base of the meter needle.
- PointFloat* arcCoordPoints; //An array of points describing the coordinate location of the meter arc.
- int numOfArcCoordPoints; //The number of points in the arcCoordPoints array.
- int needleColor; //This element is TRUE when the meter has a light-colored needle on a dark background.
-} MeterArc;
-
-typedef struct ThresholdData_struct {
- float rangeMin; //The lower boundary of the range to keep.
- float rangeMax; //The upper boundary of the range to keep.
- float newValue; //If useNewValue is TRUE, newValue is the replacement value for pixels within the range.
- int useNewValue; //If TRUE, the function sets pixel values within [rangeMin, rangeMax] to the value specified in newValue.
-} ThresholdData;
-
-typedef struct StructuringElement_struct {
- int matrixCols; //Number of columns in the matrix.
- int matrixRows; //Number of rows in the matrix.
- int hexa; //Set this element to TRUE if you specify a hexagonal structuring element in kernel.
- int* kernel; //The values of the structuring element.
-} StructuringElement;
-
-typedef struct SpokeReport_struct {
- LineFloat* spokeLines; //The coordinate location of each of the spoke lines used by the function.
- int numSpokeLines; //The number of lines in the spokeLines array.
- PointFloat* firstEdges; //The coordinate location of all edges detected as first edges.
- int numFirstEdges; //The number of points in the firstEdges array.
- PointFloat* lastEdges; //The coordinate location of all edges detected as last edges.
- int numLastEdges; //The number of points in the lastEdges array.
- EdgeLocationReport* allEdges; //An array of reports describing the location of the edges located by each spoke line.
- int* linesWithEdges; //An array of indices into the spokeLines array indicating the rake lines on which the function detected at least one edge.
- int numLinesWithEdges; //The number of spoke lines along which the function detects edges.
-} SpokeReport;
-
-typedef struct SimpleEdgeOptions_struct {
- LevelType type; //Determines how the function evaluates the threshold and hysteresis values.
- int threshold; //The pixel value at which an edge occurs.
- int hysteresis; //A value that helps determine edges in noisy images.
- EdgeProcess process; //Determines which edges the function looks for.
- int subpixel; //Set this element to TRUE to find edges with subpixel accuracy by interpolating between points to find the crossing of the given threshold.
-} SimpleEdgeOptions;
-
-typedef struct SelectParticleCriteria_struct {
- MeasurementValue parameter; //The morphological measurement that the function uses for filtering.
- float lower; //The lower boundary of the criteria range.
- float upper; //The upper boundary of the criteria range.
-} SelectParticleCriteria;
-
-typedef struct SegmentInfo_struct {
- int numberOfPoints; //The number of points in the segment.
- int isOpen; //If TRUE, the contour is open.
- double weight; //The significance of the edge in terms of the gray values that constitute the edge.
- ContourPoint* points; //The points of the segment.
-} SegmentInfo;
-
-typedef struct RotationAngleRange_struct {
- float lower; //The lowest amount of rotation, in degrees, a valid pattern can have.
- float upper; //The highest amount of rotation, in degrees, a valid pattern can have.
-} RotationAngleRange;
-
-typedef struct RotatedRect_struct {
- int top; //Location of the top edge of the rectangle before rotation.
- int left; //Location of the left edge of the rectangle before rotation.
- int height; //Height of the rectangle.
- int width; //Width of the rectangle.
- double angle; //The rotation, in degrees, of the rectangle.
-} RotatedRect;
-
-typedef struct ROIProfile_struct {
- LineProfile report; //Quantifying information about the points along the edge of each contour in the ROI.
- Point* pixels; //An array of the points along the edge of each contour in the ROI.
-} ROIProfile;
-
-typedef struct ToolWindowOptions_struct {
- int showSelectionTool; //If TRUE, the selection tool becomes visible.
- int showZoomTool; //If TRUE, the zoom tool becomes visible.
- int showPointTool; //If TRUE, the point tool becomes visible.
- int showLineTool; //If TRUE, the line tool becomes visible.
- int showRectangleTool; //If TRUE, the rectangle tool becomes visible.
- int showOvalTool; //If TRUE, the oval tool becomes visible.
- int showPolygonTool; //If TRUE, the polygon tool becomes visible.
- int showClosedFreehandTool; //If TRUE, the closed freehand tool becomes visible.
- int showPolyLineTool; //If TRUE, the polyline tool becomes visible.
- int showFreehandTool; //If TRUE, the freehand tool becomes visible.
- int showAnnulusTool; //If TRUE, the annulus becomes visible.
- int showRotatedRectangleTool; //If TRUE, the rotated rectangle tool becomes visible.
- int showPanTool; //If TRUE, the pan tool becomes visible.
- int showZoomOutTool; //If TRUE, the zoom out tool becomes visible.
- int reserved2; //This element is reserved and should be set to FALSE.
- int reserved3; //This element is reserved and should be set to FALSE.
- int reserved4; //This element is reserved and should be set to FALSE.
-} ToolWindowOptions;
-
-typedef struct SpokeOptions_struct {
- int threshold; //Specifies the threshold value for the contrast of the edge.
- int width; //The number of pixels that the function averages to find the contrast at either side of the edge.
- int steepness; //The span, in pixels, of the slope of the edge projected along the path specified by the input points.
- double subsamplingRatio; //The angle, in degrees, between each radial search line in the spoke.
- InterpolationMethod subpixelType; //The method for interpolating.
- int subpixelDivisions; //The number of samples the function obtains from a pixel.
-} SpokeOptions;
-
-#if !defined __GNUC__ && !defined _M_X64
-#pragma pack(pop)
-#endif
-
-//============================================================================
-// Callback Function Type
-//============================================================================
-#ifndef __GNUC__
-typedef void (IMAQ_CALLBACK* EventCallback)(WindowEventType event, int windowNumber, Tool tool, Rect rect);
-#endif
-
-//============================================================================
-// Globals
-//============================================================================
-#ifndef __GNUC__
-#pragma const_seg("IMAQVisionColorConstants")
-#endif
-static const RGBValue IMAQ_RGB_TRANSPARENT = { 0, 0, 0, 1 };
-static const RGBValue IMAQ_RGB_RED = { 0, 0, 255, 0 };
-static const RGBValue IMAQ_RGB_BLUE = { 255, 0, 0, 0 };
-static const RGBValue IMAQ_RGB_GREEN = { 0, 255, 0, 0 };
-static const RGBValue IMAQ_RGB_YELLOW = { 0, 255, 255, 0 };
-static const RGBValue IMAQ_RGB_WHITE = { 255, 255, 255, 0 };
-static const RGBValue IMAQ_RGB_BLACK = { 0, 0, 0, 0 };
-#ifndef __GNUC__
-#pragma const_seg()
-#endif
-
-//============================================================================
-// Backwards Compatibility
-//============================================================================
-typedef ColorSensitivity ColorComplexity;
-#define IMAQ_COMPLEXITY_LOW IMAQ_SENSITIVITY_LOW
-#define IMAQ_COMPLEXITY_MED IMAQ_SENSITIVITY_MED
-#define IMAQ_COMPLEXITY_HIGH IMAQ_SENSITIVITY_HIGH
-#define ERR_INVALID_COLORCOMPLEXITY ERR_INVALID_COLORSENSITIVITY
-
-//============================================================================
-// Logical functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAnd(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqAndConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqCompare(Image* dest, const Image* source, const Image* compareImage, ComparisonFunction compare);
-IMAQ_FUNC int IMAQ_STDCALL imaqCompareConstant(Image* dest, const Image* source, PixelValue value, ComparisonFunction compare);
-IMAQ_FUNC int IMAQ_STDCALL imaqLogicalDifference(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqLogicalDifferenceConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqNand(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqNandConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqNor(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqNorConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqOr(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqOrConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqXnor(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqXnorConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqXor(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqXorConstant(Image* dest, const Image* source, PixelValue value);
-
-//============================================================================
-// Particle Analysis functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCountParticles(Image* image, int connectivity8, int* numParticles);
-IMAQ_FUNC int IMAQ_STDCALL imaqMeasureParticle(Image* image, int particleNumber, int calibrated, MeasurementType measurement, double* value);
-IMAQ_FUNC MeasureParticlesReport* IMAQ_STDCALL imaqMeasureParticles(Image* image, MeasureParticlesCalibrationMode calibrationMode, const MeasurementType* measurements, size_t numMeasurements);
-IMAQ_FUNC int IMAQ_STDCALL imaqParticleFilter4(Image* dest, Image* source, const ParticleFilterCriteria2* criteria, int criteriaCount, const ParticleFilterOptions2* options, const ROI* roi, int* numParticles);
-
-//============================================================================
-// Morphology functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqConvexHull(Image* dest, Image* source, int connectivity8);
-IMAQ_FUNC int IMAQ_STDCALL imaqDanielssonDistance(Image* dest, Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqFillHoles(Image* dest, const Image* source, int connectivity8);
-IMAQ_FUNC CircleReport* IMAQ_STDCALL imaqFindCircles(Image* dest, Image* source, float minRadius, float maxRadius, int* numCircles);
-IMAQ_FUNC int IMAQ_STDCALL imaqLabel2(Image* dest, Image* source, int connectivity8, int* particleCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqMorphology(Image* dest, Image* source, MorphologyMethod method, const StructuringElement* structuringElement);
-IMAQ_FUNC int IMAQ_STDCALL imaqRejectBorder(Image* dest, Image* source, int connectivity8);
-IMAQ_FUNC int IMAQ_STDCALL imaqSegmentation(Image* dest, Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqSeparation(Image* dest, Image* source, int erosions, const StructuringElement* structuringElement);
-IMAQ_FUNC int IMAQ_STDCALL imaqSimpleDistance(Image* dest, Image* source, const StructuringElement* structuringElement);
-IMAQ_FUNC int IMAQ_STDCALL imaqSizeFilter(Image* dest, Image* source, int connectivity8, int erosions, SizeType keepSize, const StructuringElement* structuringElement);
-IMAQ_FUNC int IMAQ_STDCALL imaqSkeleton(Image* dest, Image* source, SkeletonMethod method);
-
-
-//============================================================================
-// Acquisition functions
-//============================================================================
-IMAQ_FUNC Image* IMAQ_STDCALL imaqCopyFromRing(SESSION_ID sessionID, Image* image, int imageToCopy, int* imageNumber, Rect rect);
-IMAQ_FUNC Image* IMAQ_STDCALL imaqEasyAcquire(const char* interfaceName);
-IMAQ_FUNC Image* IMAQ_STDCALL imaqExtractFromRing(SESSION_ID sessionID, int imageToExtract, int* imageNumber);
-IMAQ_FUNC Image* IMAQ_STDCALL imaqGrab(SESSION_ID sessionID, Image* image, int immediate);
-IMAQ_FUNC int IMAQ_STDCALL imaqReleaseImage(SESSION_ID sessionID);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetupGrab(SESSION_ID sessionID, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetupRing(SESSION_ID sessionID, Image** images, int numImages, int skipCount, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetupSequence(SESSION_ID sessionID, Image** images, int numImages, int skipCount, Rect rect);
-IMAQ_FUNC Image* IMAQ_STDCALL imaqSnap(SESSION_ID sessionID, Image* image, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqStartAcquisition(SESSION_ID sessionID);
-IMAQ_FUNC int IMAQ_STDCALL imaqStopAcquisition(SESSION_ID sessionID);
-
-//============================================================================
-// Arithmetic functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAbsoluteDifference(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqAbsoluteDifferenceConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqAdd(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqAddConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqAverage(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqAverageConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqDivide2(Image* dest, const Image* sourceA, const Image* sourceB, RoundingMode roundingMode);
-IMAQ_FUNC int IMAQ_STDCALL imaqDivideConstant2(Image* dest, const Image* source, PixelValue value, RoundingMode roundingMode);
-IMAQ_FUNC int IMAQ_STDCALL imaqMax(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqMaxConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqMin(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqMinConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqModulo(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqModuloConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqMulDiv(Image* dest, const Image* sourceA, const Image* sourceB, float value);
-IMAQ_FUNC int IMAQ_STDCALL imaqMultiply(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqMultiplyConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqSubtract(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC int IMAQ_STDCALL imaqSubtractConstant(Image* dest, const Image* source, PixelValue value);
-
-//============================================================================
-// Caliper functions
-//============================================================================
-IMAQ_FUNC CaliperReport* IMAQ_STDCALL imaqCaliperTool(const Image* image, const Point* points, int numPoints, const EdgeOptions* edgeOptions, const CaliperOptions* caliperOptions, int* numEdgePairs);
-IMAQ_FUNC ConcentricRakeReport2* IMAQ_STDCALL imaqConcentricRake2(Image* image, ROI* roi, ConcentricRakeDirection direction, EdgeProcess process, int stepSize, EdgeOptions2* edgeOptions);
-IMAQ_FUNC ExtremeReport* IMAQ_STDCALL imaqDetectExtremes(const double* pixels, int numPixels, DetectionMode mode, const DetectExtremesOptions* options, int* numExtremes);
-IMAQ_FUNC int IMAQ_STDCALL imaqDetectRotation(const Image* referenceImage, const Image* testImage, PointFloat referenceCenter, PointFloat testCenter, int radius, float precision, double* angle);
-IMAQ_FUNC EdgeReport2* IMAQ_STDCALL imaqEdgeTool4(Image* image, ROI* roi, EdgeProcess processType, EdgeOptions2* edgeOptions, const unsigned int reverseDirection);
-IMAQ_FUNC FindEdgeReport* IMAQ_STDCALL imaqFindEdge2(Image* image, const ROI* roi, const CoordinateSystem* baseSystem, const CoordinateSystem* newSystem, const FindEdgeOptions2* findEdgeOptions, const StraightEdgeOptions* straightEdgeOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqFindTransformRect2(Image* image, const ROI* roi, FindTransformMode mode, CoordinateSystem* baseSystem, CoordinateSystem* newSystem, const FindTransformRectOptions2* findTransformOptions, const StraightEdgeOptions* straightEdgeOptions, AxisReport* axisReport);
-IMAQ_FUNC int IMAQ_STDCALL imaqFindTransformRects2(Image* image, const ROI* primaryROI, const ROI* secondaryROI, FindTransformMode mode, CoordinateSystem* baseSystem, CoordinateSystem* newSystem, const FindTransformRectsOptions2* findTransformOptions, const StraightEdgeOptions* primaryStraightEdgeOptions, const StraightEdgeOptions* secondaryStraightEdgeOptions, AxisReport* axisReport);
-IMAQ_FUNC int IMAQ_STDCALL imaqLineGaugeTool2(const Image* image, Point start, Point end, LineGaugeMethod method, const EdgeOptions* edgeOptions, const CoordinateTransform2* transform, float* distance);
-IMAQ_FUNC RakeReport2* IMAQ_STDCALL imaqRake2(Image* image, ROI* roi, RakeDirection direction, EdgeProcess process, int stepSize, EdgeOptions2* edgeOptions);
-IMAQ_FUNC PointFloat* IMAQ_STDCALL imaqSimpleEdge(const Image* image, const Point* points, int numPoints, const SimpleEdgeOptions* options, int* numEdges);
-IMAQ_FUNC SpokeReport2* IMAQ_STDCALL imaqSpoke2(Image* image, ROI* roi, SpokeDirection direction, EdgeProcess process, int stepSize, EdgeOptions2* edgeOptions);
-IMAQ_FUNC StraightEdgeReport2* IMAQ_STDCALL imaqStraightEdge(const Image* image, const ROI* roi, SearchDirection searchDirection, const EdgeOptions2* edgeOptions, const StraightEdgeOptions* straightEdgeOptions);
-IMAQ_FUNC StraightEdgeReport2* IMAQ_STDCALL imaqStraightEdge2(const Image* image, const ROI* roi, SearchDirection searchDirection, const EdgeOptions2* edgeOptions, const StraightEdgeOptions* straightEdgeOptions, unsigned int optimizedMode);
-
-//============================================================================
-// Spatial Filters functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCannyEdgeFilter(Image* dest, const Image* source, const CannyOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqConvolve2(Image* dest, Image* source, float* kernel, int matrixRows, int matrixCols, float normalize, Image* mask, RoundingMode roundingMode);
-IMAQ_FUNC int IMAQ_STDCALL imaqCorrelate(Image* dest, Image* source, const Image* templateImage, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqEdgeFilter(Image* dest, Image* source, OutlineMethod method, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqLowPass(Image* dest, Image* source, int width, int height, float tolerance, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqMedianFilter(Image* dest, Image* source, int width, int height, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqNthOrderFilter(Image* dest, Image* source, int width, int height, int n, const Image* mask);
-
-//============================================================================
-// Drawing functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqDrawLineOnImage(Image* dest, const Image* source, DrawMode mode, Point start, Point end, float newPixelValue);
-IMAQ_FUNC int IMAQ_STDCALL imaqDrawShapeOnImage(Image* dest, const Image* source, Rect rect, DrawMode mode, ShapeMode shape, float newPixelValue);
-IMAQ_FUNC int IMAQ_STDCALL imaqDrawTextOnImage(Image* dest, const Image* source, Point coord, const char* text, const DrawTextOptions* options, int* fontNameUsed);
-
-//============================================================================
-// Interlacing functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqInterlaceCombine(Image* frame, const Image* odd, const Image* even);
-IMAQ_FUNC int IMAQ_STDCALL imaqInterlaceSeparate(const Image* frame, Image* odd, Image* even);
-
-//============================================================================
-// Image Information functions
-//============================================================================
-IMAQ_FUNC char** IMAQ_STDCALL imaqEnumerateCustomKeys(const Image* image, unsigned int* size);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetBitDepth(const Image* image, unsigned int* bitDepth);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetBytesPerPixel(const Image* image, int* byteCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetImageInfo(const Image* image, ImageInfo* info);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetImageSize(const Image* image, int* width, int* height);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetImageType(const Image* image, ImageType* type);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetMaskOffset(const Image* image, Point* offset);
-IMAQ_FUNC void* IMAQ_STDCALL imaqGetPixelAddress(const Image* image, Point pixel);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetVisionInfoTypes(const Image* image, unsigned int* present);
-IMAQ_FUNC int IMAQ_STDCALL imaqIsImageEmpty(const Image* image, int* empty);
-IMAQ_FUNC void* IMAQ_STDCALL imaqReadCustomData(const Image* image, const char* key, unsigned int* size);
-IMAQ_FUNC int IMAQ_STDCALL imaqRemoveCustomData(Image* image, const char* key);
-IMAQ_FUNC int IMAQ_STDCALL imaqRemoveVisionInfo2(const Image* image, unsigned int info);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetBitDepth(Image* image, unsigned int bitDepth);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetImageSize(Image* image, int width, int height);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetMaskOffset(Image* image, Point offset);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteCustomData(Image* image, const char* key, const void* data, unsigned int size);
-
-//============================================================================
-// Display functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAreToolsContextSensitive(int* sensitive);
-IMAQ_FUNC int IMAQ_STDCALL imaqCloseWindow(int windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqDisplayImage(const Image* image, int windowNumber, int resize);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetLastKey(char* keyPressed, int* windowNumber, int* modifiers);
-IMAQ_FUNC void* IMAQ_STDCALL imaqGetSystemWindowHandle(int windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowCenterPos(int windowNumber, Point* centerPosition);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetToolContextSensitivity(int sensitive);
-IMAQ_FUNC int IMAQ_STDCALL imaqShowWindow(int windowNumber, int visible);
-
-//============================================================================
-// Image Manipulation functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCast(Image* dest, const Image* source, ImageType type, const float* lookup, int shift);
-IMAQ_FUNC int IMAQ_STDCALL imaqCopyRect(Image* dest, const Image* source, Rect rect, Point destLoc);
-IMAQ_FUNC int IMAQ_STDCALL imaqDuplicate(Image* dest, const Image* source);
-IMAQ_FUNC void* IMAQ_STDCALL imaqFlatten(const Image* image, FlattenType type, CompressionType compression, int quality, unsigned int* size);
-IMAQ_FUNC int IMAQ_STDCALL imaqFlip(Image* dest, const Image* source, FlipAxis axis);
-IMAQ_FUNC int IMAQ_STDCALL imaqMask(Image* dest, const Image* source, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqResample(Image* dest, const Image* source, int newWidth, int newHeight, InterpolationMethod method, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqRotate2(Image* dest, const Image* source, float angle, PixelValue fill, InterpolationMethod method, int maintainSize);
-IMAQ_FUNC int IMAQ_STDCALL imaqScale(Image* dest, const Image* source, int xScale, int yScale, ScalingMode scaleMode, Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqShift(Image* dest, const Image* source, int shiftX, int shiftY, PixelValue fill);
-IMAQ_FUNC int IMAQ_STDCALL imaqTranspose(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqUnflatten(Image* image, const void* data, unsigned int size);
-IMAQ_FUNC int IMAQ_STDCALL imaqUnwrapImage(Image* dest, const Image* source, Annulus annulus, RectOrientation orientation, InterpolationMethod method);
-IMAQ_FUNC int IMAQ_STDCALL imaqView3D(Image* dest, Image* source, const View3DOptions* options);
-
-//============================================================================
-// File I/O functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCloseAVI(AVISession session);
-IMAQ_FUNC AVISession IMAQ_STDCALL imaqCreateAVI(const char* fileName, const char* compressionFilter, int quality, unsigned int framesPerSecond, unsigned int maxDataSize);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetAVIInfo(AVISession session, AVIInfo* info);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetFileInfo(const char* fileName, CalibrationUnit* calibrationUnit, float* calibrationX, float* calibrationY, int* width, int* height, ImageType* imageType);
-IMAQ_FUNC FilterName* IMAQ_STDCALL imaqGetFilterNames(int* numFilters);
-IMAQ_FUNC char** IMAQ_STDCALL imaqLoadImagePopup(const char* defaultDirectory, const char* defaultFileSpec, const char* fileTypeList, const char* title, int allowMultiplePaths, ButtonLabel buttonLabel, int restrictDirectory, int restrictExtension, int allowCancel, int allowMakeDirectory, int* cancelled, int* numPaths);
-IMAQ_FUNC AVISession IMAQ_STDCALL imaqOpenAVI(const char* fileName);
-IMAQ_FUNC int IMAQ_STDCALL imaqReadAVIFrame(Image* image, AVISession session, unsigned int frameNum, void* data, unsigned int* dataSize);
-IMAQ_FUNC int IMAQ_STDCALL imaqReadFile(Image* image, const char* fileName, RGBValue* colorTable, int* numColors);
-IMAQ_FUNC int IMAQ_STDCALL imaqReadVisionFile(Image* image, const char* fileName, RGBValue* colorTable, int* numColors);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteAVIFrame(Image* image, AVISession session, const void* data, unsigned int dataLength);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteBMPFile(const Image* image, const char* fileName, int compress, const RGBValue* colorTable);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteFile(const Image* image, const char* fileName, const RGBValue* colorTable);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteJPEGFile(const Image* image, const char* fileName, unsigned int quality, void* colorTable);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteJPEG2000File(const Image* image, const char* fileName, int lossless, float compressionRatio, const JPEG2000FileAdvancedOptions* advancedOptions, const RGBValue* colorTable);
-IMAQ_FUNC int IMAQ_STDCALL imaqWritePNGFile2(const Image* image, const char* fileName, unsigned int compressionSpeed, const RGBValue* colorTable, int useBitDepth);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteTIFFFile(const Image* image, const char* fileName, const TIFFFileOptions* options, const RGBValue* colorTable);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteVisionFile(const Image* image, const char* fileName, const RGBValue* colorTable);
-
-
-//============================================================================
-// Analytic Geometry functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqBuildCoordinateSystem(const Point* points, ReferenceMode mode, AxisOrientation orientation, CoordinateSystem* system);
-IMAQ_FUNC BestCircle2* IMAQ_STDCALL imaqFitCircle2(const PointFloat* points, int numPoints, const FitCircleOptions* options);
-IMAQ_FUNC BestEllipse2* IMAQ_STDCALL imaqFitEllipse2(const PointFloat* points, int numPoints, const FitEllipseOptions* options);
-IMAQ_FUNC BestLine* IMAQ_STDCALL imaqFitLine(const PointFloat* points, int numPoints, const FitLineOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetAngle(PointFloat start1, PointFloat end1, PointFloat start2, PointFloat end2, float* angle);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetBisectingLine(PointFloat start1, PointFloat end1, PointFloat start2, PointFloat end2, PointFloat* bisectStart, PointFloat* bisectEnd);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetDistance(PointFloat point1, PointFloat point2, float* distance);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetIntersection(PointFloat start1, PointFloat end1, PointFloat start2, PointFloat end2, PointFloat* intersection);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetMidLine(PointFloat refLineStart, PointFloat refLineEnd, PointFloat point, PointFloat* midLineStart, PointFloat* midLineEnd);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetPerpendicularLine(PointFloat refLineStart, PointFloat refLineEnd, PointFloat point, PointFloat* perpLineStart, PointFloat* perpLineEnd, double* distance);
-IMAQ_FUNC SegmentInfo* IMAQ_STDCALL imaqGetPointsOnContour(const Image* image, int* numSegments);
-IMAQ_FUNC Point* IMAQ_STDCALL imaqGetPointsOnLine(Point start, Point end, int* numPoints);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetPolygonArea(const PointFloat* points, int numPoints, float* area);
-IMAQ_FUNC float* IMAQ_STDCALL imaqInterpolatePoints(const Image* image, const Point* points, int numPoints, InterpolationMethod method, int subpixel, int* interpCount);
-
-//============================================================================
-// Clipboard functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqClipboardToImage(Image* dest, RGBValue* palette);
-IMAQ_FUNC int IMAQ_STDCALL imaqImageToClipboard(const Image* image, const RGBValue* palette);
-
-//============================================================================
-// Border functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqFillBorder(Image* image, BorderMethod method);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetBorderSize(const Image* image, int* borderSize);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetBorderSize(Image* image, int size);
-
-//============================================================================
-// Image Management functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqArrayToImage(Image* image, const void* array, int numCols, int numRows);
-IMAQ_FUNC Image* IMAQ_STDCALL imaqCreateImage(ImageType type, int borderSize);
-IMAQ_FUNC void* IMAQ_STDCALL imaqImageToArray(const Image* image, Rect rect, int* columns, int* rows);
-
-//============================================================================
-// Color Processing functions
-//============================================================================
-IMAQ_FUNC Color2 IMAQ_STDCALL imaqChangeColorSpace2(const Color2* sourceColor, ColorMode sourceSpace, ColorMode destSpace, double offset, const CIEXYZValue* whiteReference);
-IMAQ_FUNC int IMAQ_STDCALL imaqColorBCGTransform(Image* dest, const Image* source, const BCGOptions* redOptions, const BCGOptions* greenOptions, const BCGOptions* blueOptions, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqColorEqualize(Image* dest, const Image* source, int colorEqualization);
-IMAQ_FUNC ColorHistogramReport* IMAQ_STDCALL imaqColorHistogram2(Image* image, int numClasses, ColorMode mode, const CIEXYZValue* whiteReference, Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqColorLookup(Image* dest, const Image* source, ColorMode mode, const Image* mask, const short* plane1, const short* plane2, const short* plane3);
-IMAQ_FUNC int IMAQ_STDCALL imaqColorThreshold(Image* dest, const Image* source, int replaceValue, ColorMode mode, const Range* plane1Range, const Range* plane2Range, const Range* plane3Range);
-IMAQ_FUNC SupervisedColorSegmentationReport* IMAQ_STDCALL imaqSupervisedColorSegmentation(ClassifierSession* session, Image* labelImage, const Image* srcImage, const ROI* roi, const ROILabel* labelIn, unsigned int numLabelIn, int maxDistance, int minIdentificationScore, const ColorSegmenationOptions* segmentOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetColorSegmentationMaxDistance(ClassifierSession* session, const ColorSegmenationOptions* segmentOptions, SegmentationDistanceLevel distLevel, int* maxDistance);
-
-//============================================================================
-// Transform functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqBCGTransform(Image* dest, const Image* source, const BCGOptions* options, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqEqualize(Image* dest, const Image* source, float min, float max, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqInverse(Image* dest, const Image* source, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqMathTransform(Image* dest, const Image* source, MathTransformMethod method, float rangeMin, float rangeMax, float power, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqWatershedTransform(Image* dest, const Image* source, int connectivity8, int* zoneCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqLookup2(Image* dest, const Image* source, const int* table, const Image* mask);
-
-
-//============================================================================
-// Window Management functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAreScrollbarsVisible(int windowNumber, int* visible);
-IMAQ_FUNC int IMAQ_STDCALL imaqBringWindowToTop(int windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetMousePos(Point* position, int* windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowBackground(int windowNumber, WindowBackgroundFillStyle* fillStyle, WindowBackgroundHatchStyle* hatchStyle, RGBValue* fillColor, RGBValue* backgroundColor);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowDisplayMapping(int windowNum, DisplayMapping* mapping);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowGrid(int windowNumber, int* xResolution, int* yResolution);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowHandle(int* handle);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowPos(int windowNumber, Point* position);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowSize(int windowNumber, int* width, int* height);
-IMAQ_FUNC char* IMAQ_STDCALL imaqGetWindowTitle(int windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowZoom2(int windowNumber, float* xZoom, float* yZoom);
-IMAQ_FUNC int IMAQ_STDCALL imaqIsWindowNonTearing(int windowNumber, int* nonTearing);
-IMAQ_FUNC int IMAQ_STDCALL imaqIsWindowVisible(int windowNumber, int* visible);
-IMAQ_FUNC int IMAQ_STDCALL imaqMoveWindow(int windowNumber, Point position);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetupWindow(int windowNumber, int configuration);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowBackground(int windowNumber, WindowBackgroundFillStyle fillStyle, WindowBackgroundHatchStyle hatchStyle, const RGBValue* fillColor, const RGBValue* backgroundColor);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowDisplayMapping(int windowNumber, const DisplayMapping* mapping);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowGrid(int windowNumber, int xResolution, int yResolution);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowMaxContourCount(int windowNumber, unsigned int maxContourCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowNonTearing(int windowNumber, int nonTearing);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowPalette(int windowNumber, PaletteType type, const RGBValue* palette, int numColors);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowSize(int windowNumber, int width, int height);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowThreadPolicy(WindowThreadPolicy policy);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowTitle(int windowNumber, const char* title);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowZoomToFit(int windowNumber, int zoomToFit);
-IMAQ_FUNC int IMAQ_STDCALL imaqShowScrollbars(int windowNumber, int visible);
-IMAQ_FUNC int IMAQ_STDCALL imaqZoomWindow2(int windowNumber, float xZoom, float yZoom, Point center);
-
-//============================================================================
-// Utilities functions
-//============================================================================
-IMAQ_FUNC const float* IMAQ_STDCALL imaqGetKernel(KernelFamily family, int size, int number);
-IMAQ_FUNC Annulus IMAQ_STDCALL imaqMakeAnnulus(Point center, int innerRadius, int outerRadius, double startAngle, double endAngle);
-IMAQ_FUNC Point IMAQ_STDCALL imaqMakePoint(int xCoordinate, int yCoordinate);
-IMAQ_FUNC PointFloat IMAQ_STDCALL imaqMakePointFloat(float xCoordinate, float yCoordinate);
-IMAQ_FUNC Rect IMAQ_STDCALL imaqMakeRect(int top, int left, int height, int width);
-IMAQ_FUNC Rect IMAQ_STDCALL imaqMakeRectFromRotatedRect(RotatedRect rotatedRect);
-IMAQ_FUNC RotatedRect IMAQ_STDCALL imaqMakeRotatedRect(int top, int left, int height, int width, double angle);
-IMAQ_FUNC RotatedRect IMAQ_STDCALL imaqMakeRotatedRectFromRect(Rect rect);
-IMAQ_FUNC int IMAQ_STDCALL imaqMulticoreOptions(MulticoreOperation operation, unsigned int* customNumCores);
-
-//============================================================================
-// Tool Window functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCloseToolWindow(void);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetCurrentTool(Tool* currentTool);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetLastEvent(WindowEventType* type, int* windowNumber, Tool* tool, Rect* rect);
-IMAQ_FUNC void* IMAQ_STDCALL imaqGetToolWindowHandle(void);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetToolWindowPos(Point* position);
-IMAQ_FUNC int IMAQ_STDCALL imaqIsToolWindowVisible(int* visible);
-IMAQ_FUNC int IMAQ_STDCALL imaqMoveToolWindow(Point position);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetCurrentTool(Tool currentTool);
-#ifndef __GNUC__
-IMAQ_FUNC int IMAQ_STDCALL imaqSetEventCallback(EventCallback callback, int synchronous);
-#endif
-IMAQ_FUNC int IMAQ_STDCALL imaqSetToolColor(const RGBValue* color);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetupToolWindow(int showCoordinates, int maxIconsPerLine, const ToolWindowOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqShowToolWindow(int visible);
-
-//============================================================================
-// Meter functions
-//============================================================================
-IMAQ_FUNC MeterArc* IMAQ_STDCALL imaqGetMeterArc(int lightNeedle, MeterArcMode mode, const ROI* roi, PointFloat base, PointFloat start, PointFloat end);
-IMAQ_FUNC int IMAQ_STDCALL imaqReadMeter(const Image* image, const MeterArc* arcInfo, double* percentage, PointFloat* endOfNeedle);
-
-//============================================================================
-// Calibration functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCopyCalibrationInfo2(Image* dest, Image* source, Point offset);
-IMAQ_FUNC int IMAQ_STDCALL imaqCorrectCalibratedImage(Image* dest, const Image* source, PixelValue fill, InterpolationMethod method, const ROI* roi);
-IMAQ_FUNC CalibrationInfo* IMAQ_STDCALL imaqGetCalibrationInfo2(const Image* image);
-IMAQ_FUNC CalibrationInfo* IMAQ_STDCALL imaqGetCalibrationInfo3(Image* image, unsigned int isGetErrorMap);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnCalibrationGrid(Image* image, const ROI* roi, const LearnCalibrationOptions* options, const GridDescriptor* grid, const CoordinateSystem* system, const RangeFloat* range, float* quality);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnCalibrationPoints(Image* image, const CalibrationPoints* points, const ROI* roi, const LearnCalibrationOptions* options, const GridDescriptor* grid, const CoordinateSystem* system, float* quality);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetCoordinateSystem(Image* image, const CoordinateSystem* system);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetSimpleCalibration(Image* image, ScalingMethod method, int learnTable, const GridDescriptor* grid, const CoordinateSystem* system);
-IMAQ_FUNC TransformReport* IMAQ_STDCALL imaqTransformPixelToRealWorld(const Image* image, const PointFloat* pixelCoordinates, int numCoordinates);
-IMAQ_FUNC TransformReport* IMAQ_STDCALL imaqTransformRealWorldToPixel(const Image* image, const PointFloat* realWorldCoordinates, int numCoordinates);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetSimpleCalibration2(Image* image, const GridDescriptor* gridDescriptor);
-IMAQ_FUNC int IMAQ_STDCALL imaqCalibrationSetAxisInfo(Image* image, CoordinateSystem* axisInfo);
-IMAQ_FUNC int IMAQ_STDCALL imaqCalibrationGetThumbnailImage(Image* templateImage, Image* image, CalibrationThumbnailType type, unsigned int index);
-IMAQ_FUNC GetCalibrationInfoReport* IMAQ_STDCALL imaqCalibrationGetCalibrationInfo(Image* image, unsigned int isGetErrorMap);
-IMAQ_FUNC GetCameraParametersReport* IMAQ_STDCALL imaqCalibrationGetCameraParameters(Image* templateImage);
-IMAQ_FUNC int IMAQ_STDCALL imaqCalibrationCompactInformation(Image* image);
-
-//============================================================================
-// Pixel Manipulation functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqArrayToComplexPlane(Image* dest, const Image* source, const float* newPixels, ComplexPlane plane);
-IMAQ_FUNC float* IMAQ_STDCALL imaqComplexPlaneToArray(const Image* image, ComplexPlane plane, Rect rect, int* rows, int* columns);
-IMAQ_FUNC int IMAQ_STDCALL imaqExtractColorPlanes(const Image* image, ColorMode mode, Image* plane1, Image* plane2, Image* plane3);
-IMAQ_FUNC int IMAQ_STDCALL imaqExtractComplexPlane(Image* dest, const Image* source, ComplexPlane plane);
-IMAQ_FUNC int IMAQ_STDCALL imaqFillImage(Image* image, PixelValue value, const Image* mask);
-IMAQ_FUNC void* IMAQ_STDCALL imaqGetLine(const Image* image, Point start, Point end, int* numPoints);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetPixel(const Image* image, Point pixel, PixelValue* value);
-IMAQ_FUNC int IMAQ_STDCALL imaqReplaceColorPlanes(Image* dest, const Image* source, ColorMode mode, const Image* plane1, const Image* plane2, const Image* plane3);
-IMAQ_FUNC int IMAQ_STDCALL imaqReplaceComplexPlane(Image* dest, const Image* source, const Image* newValues, ComplexPlane plane);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetLine(Image* image, const void* array, int arraySize, Point start, Point end);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetPixel(Image* image, Point coord, PixelValue value);
-
-//============================================================================
-// Color Matching functions
-//============================================================================
-IMAQ_FUNC ColorInformation* IMAQ_STDCALL imaqLearnColor(const Image* image, const ROI* roi, ColorSensitivity sensitivity, int saturation);
-IMAQ_FUNC int* IMAQ_STDCALL imaqMatchColor(const Image* image, const ColorInformation* info, const ROI* roi, int* numScores);
-
-//============================================================================
-// Frequency Domain Analysis functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAttenuate(Image* dest, const Image* source, AttenuateMode highlow);
-IMAQ_FUNC int IMAQ_STDCALL imaqConjugate(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqFFT(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqFlipFrequencies(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqInverseFFT(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqTruncate(Image* dest, const Image* source, TruncateMode highlow, float ratioToKeep);
-
-//============================================================================
-// Barcode I/O functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqGradeDataMatrixBarcodeAIM(const Image* image, AIMGradeReport* report);
-IMAQ_FUNC BarcodeInfo* IMAQ_STDCALL imaqReadBarcode(const Image* image, BarcodeType type, const ROI* roi, int validate);
-IMAQ_FUNC DataMatrixReport* IMAQ_STDCALL imaqReadDataMatrixBarcode2(Image* image, const ROI* roi, DataMatrixGradingMode prepareForGrading, const DataMatrixDescriptionOptions* descriptionOptions, const DataMatrixSizeOptions* sizeOptions, const DataMatrixSearchOptions* searchOptions);
-IMAQ_FUNC Barcode2DInfo* IMAQ_STDCALL imaqReadPDF417Barcode(const Image* image, const ROI* roi, Barcode2DSearchMode searchMode, unsigned int* numBarcodes);
-IMAQ_FUNC QRCodeReport* IMAQ_STDCALL imaqReadQRCode(Image* image, const ROI* roi, QRGradingMode reserved, const QRCodeDescriptionOptions* descriptionOptions, const QRCodeSizeOptions* sizeOptions, const QRCodeSearchOptions* searchOptions);
-
-//============================================================================
-// LCD functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqFindLCDSegments(ROI* roi, const Image* image, const LCDOptions* options);
-IMAQ_FUNC LCDReport* IMAQ_STDCALL imaqReadLCD(const Image* image, const ROI* roi, const LCDOptions* options);
-
-//============================================================================
-// Shape Matching functions
-//============================================================================
-IMAQ_FUNC ShapeReport* IMAQ_STDCALL imaqMatchShape(Image* dest, Image* source, const Image* templateImage, int scaleInvariant, int connectivity8, double tolerance, int* numMatches);
-
-//============================================================================
-// Contours functions
-//============================================================================
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddAnnulusContour(ROI* roi, Annulus annulus);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddClosedContour(ROI* roi, const Point* points, int numPoints);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddLineContour(ROI* roi, Point start, Point end);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddOpenContour(ROI* roi, const Point* points, int numPoints);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddOvalContour(ROI* roi, Rect boundingBox);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddPointContour(ROI* roi, Point point);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddRectContour(ROI* roi, Rect rect);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddRotatedRectContour2(ROI* roi, RotatedRect rect);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqCopyContour(ROI* destRoi, const ROI* sourceRoi, ContourID id);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqGetContour(const ROI* roi, unsigned int index);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetContourColor(const ROI* roi, ContourID id, RGBValue* contourColor);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetContourCount(const ROI* roi);
-IMAQ_FUNC ContourInfo2* IMAQ_STDCALL imaqGetContourInfo2(const ROI* roi, ContourID id);
-IMAQ_FUNC int IMAQ_STDCALL imaqMoveContour(ROI* roi, ContourID id, int deltaX, int deltaY);
-IMAQ_FUNC int IMAQ_STDCALL imaqRemoveContour(ROI* roi, ContourID id);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetContourColor(ROI* roi, ContourID id, const RGBValue* color);
-
-//============================================================================
-// Regions of Interest functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqConstructROI2(const Image* image, ROI* roi, Tool initialTool, const ToolWindowOptions* tools, const ConstructROIOptions2* options, int* okay);
-IMAQ_FUNC ROI* IMAQ_STDCALL imaqCreateROI(void);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetROIBoundingBox(const ROI* roi, Rect* boundingBox);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetROIColor(const ROI* roi, RGBValue* roiColor);
-IMAQ_FUNC ROI* IMAQ_STDCALL imaqGetWindowROI(int windowNumber);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetROIColor(ROI* roi, const RGBValue* color);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowROI(int windowNumber, const ROI* roi);
-
-//============================================================================
-// Image Analysis functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCentroid(const Image* image, PointFloat* centroid, const Image* mask);
-IMAQ_FUNC Curve* IMAQ_STDCALL imaqExtractCurves(const Image* image, const ROI* roi, const CurveOptions* curveOptions, unsigned int* numCurves);
-IMAQ_FUNC HistogramReport* IMAQ_STDCALL imaqHistogram(const Image* image, int numClasses, float min, float max, const Image* mask);
-IMAQ_FUNC LinearAverages* IMAQ_STDCALL imaqLinearAverages2(Image* image, LinearAveragesMode mode, Rect rect);
-IMAQ_FUNC LineProfile* IMAQ_STDCALL imaqLineProfile(const Image* image, Point start, Point end);
-IMAQ_FUNC QuantifyReport* IMAQ_STDCALL imaqQuantify(const Image* image, const Image* mask);
-
-//============================================================================
-// Error Management functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqClearError(void);
-IMAQ_FUNC char* IMAQ_STDCALL imaqGetErrorText(int errorCode);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetLastError(void);
-IMAQ_FUNC const char* IMAQ_STDCALL imaqGetLastErrorFunc(void);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetError(int errorCode, const char* function);
-
-//============================================================================
-// Threshold functions
-//============================================================================
-IMAQ_FUNC ThresholdData* IMAQ_STDCALL imaqAutoThreshold2(Image* dest, const Image* source, int numClasses, ThresholdMethod method, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqLocalThreshold(Image* dest, const Image* source, unsigned int windowWidth, unsigned int windowHeight, LocalThresholdMethod method, double deviationWeight, ObjectType type, float replaceValue);
-IMAQ_FUNC int IMAQ_STDCALL imaqMagicWand(Image* dest, const Image* source, Point coord, float tolerance, int connectivity8, float replaceValue);
-IMAQ_FUNC int IMAQ_STDCALL imaqMultithreshold(Image* dest, const Image* source, const ThresholdData* ranges, int numRanges);
-IMAQ_FUNC int IMAQ_STDCALL imaqThreshold(Image* dest, const Image* source, float rangeMin, float rangeMax, int useNewValue, float newValue);
-
-//============================================================================
-// Memory Management functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqDispose(void* object);
-
-//============================================================================
-// Pattern Matching functions
-//============================================================================
-IMAQ_FUNC CircleMatch* IMAQ_STDCALL imaqDetectCircles(const Image* image, const CircleDescriptor* circleDescriptor, const CurveOptions* curveOptions, const ShapeDetectionOptions* shapeDetectionOptions, const ROI* roi, int* numMatchesReturned);
-IMAQ_FUNC EllipseMatch* IMAQ_STDCALL imaqDetectEllipses(const Image* image, const EllipseDescriptor* ellipseDescriptor, const CurveOptions* curveOptions, const ShapeDetectionOptions* shapeDetectionOptions, const ROI* roi, int* numMatchesReturned);
-IMAQ_FUNC LineMatch* IMAQ_STDCALL imaqDetectLines(const Image* image, const LineDescriptor* lineDescriptor, const CurveOptions* curveOptions, const ShapeDetectionOptions* shapeDetectionOptions, const ROI* roi, int* numMatchesReturned);
-IMAQ_FUNC RectangleMatch* IMAQ_STDCALL imaqDetectRectangles(const Image* image, const RectangleDescriptor* rectangleDescriptor, const CurveOptions* curveOptions, const ShapeDetectionOptions* shapeDetectionOptions, const ROI* roi, int* numMatchesReturned);
-IMAQ_FUNC FeatureData* IMAQ_STDCALL imaqGetGeometricFeaturesFromCurves(const Curve* curves, unsigned int numCurves, const FeatureType* featureTypes, unsigned int numFeatureTypes, unsigned int* numFeatures);
-IMAQ_FUNC FeatureData* IMAQ_STDCALL imaqGetGeometricTemplateFeatureInfo(const Image* pattern, unsigned int* numFeatures);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnColorPattern(Image* image, const LearnColorPatternOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnGeometricPattern(Image* image, PointFloat originOffset, const CurveOptions* curveOptions, const LearnGeometricPatternAdvancedOptions* advancedLearnOptions, const Image* mask);
-IMAQ_FUNC MultipleGeometricPattern* IMAQ_STDCALL imaqLearnMultipleGeometricPatterns(const Image** patterns, unsigned int numberOfPatterns, const String255* labels);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnPattern3(Image* image, LearningMode learningMode, LearnPatternAdvancedOptions* advancedOptions, const Image* mask);
-IMAQ_FUNC PatternMatch* IMAQ_STDCALL imaqMatchColorPattern(const Image* image, Image* pattern, const MatchColorPatternOptions* options, Rect searchRect, int* numMatches);
-IMAQ_FUNC GeometricPatternMatch2* IMAQ_STDCALL imaqMatchGeometricPattern2(const Image* image, const Image* pattern, const CurveOptions* curveOptions, const MatchGeometricPatternOptions* matchOptions, const MatchGeometricPatternAdvancedOptions2* advancedMatchOptions, const ROI* roi, int* numMatches);
-IMAQ_FUNC GeometricPatternMatch2* IMAQ_STDCALL imaqMatchMultipleGeometricPatterns(const Image* image, const MultipleGeometricPattern* multiplePattern, const ROI* roi, int* numMatches);
-IMAQ_FUNC MultipleGeometricPattern* IMAQ_STDCALL imaqReadMultipleGeometricPatternFile(const char* fileName, String255 description);
-IMAQ_FUNC PatternMatch* IMAQ_STDCALL imaqRefineMatches(const Image* image, const Image* pattern, const PatternMatch* candidatesIn, int numCandidatesIn, MatchPatternOptions* options, MatchPatternAdvancedOptions* advancedOptions, int* numCandidatesOut);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetMultipleGeometricPatternsOptions(MultipleGeometricPattern* multiplePattern, const char* label, const CurveOptions* curveOptions, const MatchGeometricPatternOptions* matchOptions, const MatchGeometricPatternAdvancedOptions2* advancedMatchOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteMultipleGeometricPatternFile(const MultipleGeometricPattern* multiplePattern, const char* fileName, const char* description);
-IMAQ_FUNC GeometricPatternMatch3* IMAQ_STDCALL imaqMatchGeometricPattern3(const Image* image, const Image* pattern, const CurveOptions* curveOptions, const MatchGeometricPatternOptions* matchOptions, const MatchGeometricPatternAdvancedOptions3* advancedMatchOptions, const ROI* roi, size_t* numMatches);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnGeometricPattern2(Image* image, PointFloat originOffset, double angleOffset, const CurveOptions* curveOptions, const LearnGeometricPatternAdvancedOptions2* advancedLearnOptions, const Image* mask);
-IMAQ_FUNC PatternMatch* IMAQ_STDCALL imaqMatchPattern3(const Image* image, const Image* pattern, const MatchPatternOptions* options, const MatchPatternAdvancedOptions* advancedOptions, const ROI* roi, int* numMatches);
-
-//============================================================================
-// Overlay functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqClearOverlay(Image* image, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqCopyOverlay(Image* dest, const Image* source, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetOverlayProperties(const Image* image, const char* group, TransformBehaviors* transformBehaviors);
-IMAQ_FUNC int IMAQ_STDCALL imaqMergeOverlay(Image* dest, const Image* source, const RGBValue* palette, unsigned int numColors, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayArc(Image* image, const ArcInfo* arc, const RGBValue* color, DrawMode drawMode, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayBitmap(Image* image, Point destLoc, const RGBValue* bitmap, unsigned int numCols, unsigned int numRows, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayClosedContour(Image* image, const Point* points, int numPoints, const RGBValue* color, DrawMode drawMode, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayLine(Image* image, Point start, Point end, const RGBValue* color, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayMetafile(Image* image, const void* metafile, Rect rect, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayOpenContour(Image* image, const Point* points, int numPoints, const RGBValue* color, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayOval(Image* image, Rect boundingBox, const RGBValue* color, DrawMode drawMode, char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayPoints(Image* image, const Point* points, int numPoints, const RGBValue* colors, int numColors, PointSymbol symbol, const UserPointSymbol* userSymbol, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayRect(Image* image, Rect rect, const RGBValue* color, DrawMode drawMode, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayROI(Image* image, const ROI* roi, PointSymbol symbol, const UserPointSymbol* userSymbol, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqOverlayText(Image* image, Point origin, const char* text, const RGBValue* color, const OverlayTextOptions* options, const char* group);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetOverlayProperties(Image* image, const char* group, TransformBehaviors* transformBehaviors);
-
-//============================================================================
-// OCR functions
-//============================================================================
-IMAQ_FUNC CharSet* IMAQ_STDCALL imaqCreateCharSet(void);
-IMAQ_FUNC int IMAQ_STDCALL imaqDeleteChar(CharSet* set, int index);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetCharCount(const CharSet* set);
-IMAQ_FUNC CharInfo2* IMAQ_STDCALL imaqGetCharInfo2(const CharSet* set, int index);
-IMAQ_FUNC int IMAQ_STDCALL imaqReadOCRFile(const char* fileName, CharSet* set, String255 setDescription, ReadTextOptions* readOptions, OCRProcessingOptions* processingOptions, OCRSpacingOptions* spacingOptions);
-IMAQ_FUNC ReadTextReport3* IMAQ_STDCALL imaqReadText3(const Image* image, const CharSet* set, const ROI* roi, const ReadTextOptions* readOptions, const OCRProcessingOptions* processingOptions, const OCRSpacingOptions* spacingOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqRenameChar(CharSet* set, int index, const char* newCharValue);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetReferenceChar(const CharSet* set, int index, int isReferenceChar);
-IMAQ_FUNC int IMAQ_STDCALL imaqTrainChars(const Image* image, CharSet* set, int index, const char* charValue, const ROI* roi, const OCRProcessingOptions* processingOptions, const OCRSpacingOptions* spacingOptions);
-IMAQ_FUNC int* IMAQ_STDCALL imaqVerifyPatterns(const Image* image, const CharSet* set, const String255* expectedPatterns, int patternCount, const ROI* roi, int* numScores);
-IMAQ_FUNC int* IMAQ_STDCALL imaqVerifyText(const Image* image, const CharSet* set, const char* expectedString, const ROI* roi, int* numScores);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteOCRFile(const char* fileName, const CharSet* set, const char* setDescription, const ReadTextOptions* readOptions, const OCRProcessingOptions* processingOptions, const OCRSpacingOptions* spacingOptions);
-
-//============================================================================
-// Geometric Matching functions
-//============================================================================
-IMAQ_FUNC ExtractContourReport* IMAQ_STDCALL imaqExtractContour(Image* image, const ROI* roi, ExtractContourDirection direction, CurveParameters* curveParams, const ConnectionConstraint* connectionConstraintParams, unsigned int numOfConstraints, ExtractContourSelection selection, Image* contourImage);
-IMAQ_FUNC int IMAQ_STDCALL imaqContourOverlay(Image* image, const Image* contourImage, const ContourOverlaySettings* pointsSettings, const ContourOverlaySettings* eqnSettings, const char* groupName);
-IMAQ_FUNC ContourComputeCurvatureReport* IMAQ_STDCALL imaqContourComputeCurvature(const Image* contourImage, unsigned int kernel);
-IMAQ_FUNC CurvatureAnalysisReport* IMAQ_STDCALL imaqContourClassifyCurvature(const Image* contourImage, unsigned int kernel, RangeLabel* curvatureClasses, unsigned int numCurvatureClasses);
-IMAQ_FUNC ComputeDistancesReport* IMAQ_STDCALL imaqContourComputeDistances(const Image* targetImage, const Image* templateImage, const SetupMatchPatternData* matchSetupData, unsigned int smoothingKernel);
-IMAQ_FUNC ClassifyDistancesReport* IMAQ_STDCALL imaqContourClassifyDistances(const Image* targetImage, const Image* templateImage, const SetupMatchPatternData* matchSetupData, unsigned int smoothingKernel, const RangeLabel* distanceRanges, unsigned int numDistanceRanges);
-IMAQ_FUNC ContourInfoReport* IMAQ_STDCALL imaqContourInfo(const Image* contourImage);
-IMAQ_FUNC SetupMatchPatternData* IMAQ_STDCALL imaqContourSetupMatchPattern(MatchMode* matchMode, unsigned int enableSubPixelAccuracy, CurveParameters* curveParams, unsigned int useLearnCurveParameters, const RangeSettingDouble* rangeSettings, unsigned int numRangeSettings);
-IMAQ_FUNC int IMAQ_STDCALL imaqContourAdvancedSetupMatchPattern(SetupMatchPatternData* matchSetupData, GeometricAdvancedSetupDataOption* geometricOptions, unsigned int numGeometricOptions);
-IMAQ_FUNC ContourFitLineReport* IMAQ_STDCALL imaqContourFitLine(Image* image, double pixelRadius);
-IMAQ_FUNC PartialCircle* IMAQ_STDCALL imaqContourFitCircle(Image* image, double pixelRadius, int rejectOutliers);
-IMAQ_FUNC PartialEllipse* IMAQ_STDCALL imaqContourFitEllipse(Image* image, double pixelRadius, int rejectOutliers);
-IMAQ_FUNC ContourFitSplineReport* IMAQ_STDCALL imaqContourFitSpline(Image* image, int degree, int numberOfControlPoints);
-IMAQ_FUNC ContourFitPolynomialReport* IMAQ_STDCALL imaqContourFitPolynomial(Image* image, int order);
-
-//============================================================================
-// Edge Detection functions
-//============================================================================
-IMAQ_FUNC FindCircularEdgeReport* IMAQ_STDCALL imaqFindCircularEdge2(Image* image, const ROI* roi, const CoordinateSystem* baseSystem, const CoordinateSystem* newSystem, const FindCircularEdgeOptions* edgeOptions, const CircleFitOptions* circleFitOptions);
-IMAQ_FUNC FindConcentricEdgeReport* IMAQ_STDCALL imaqFindConcentricEdge2(Image* image, const ROI* roi, const CoordinateSystem* baseSystem, const CoordinateSystem* newSystem, const FindConcentricEdgeOptions* edgeOptions, const ConcentricEdgeFitOptions* concentricEdgeFitOptions);
-
-//============================================================================
-// Morphology Reconstruction functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqGrayMorphologyReconstruct(Image* dstImage, Image* srcImage, const Image* markerImage, PointFloat* points, int numOfPoints, MorphologyReconstructOperation operation, const StructuringElement* structuringElement, const ROI* roi);
-IMAQ_FUNC int IMAQ_STDCALL imaqMorphologyReconstruct(Image* dstImage, Image* srcImage, const Image* markerImage, PointFloat* points, int numOfPoints, MorphologyReconstructOperation operation, Connectivity connectivity, const ROI* roi);
-
-//============================================================================
-// Texture functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqDetectTextureDefect(ClassifierSession* session, Image* destImage, const Image* srcImage, const ROI* roi, int initialStepSize, int finalStepSize, unsigned char defectPixelValue, double minClassificationScore);
-IMAQ_FUNC int IMAQ_STDCALL imaqClassificationTextureDefectOptions(ClassifierSession* session, WindowSize* windowOptions, WaveletOptions* waveletOptions, void** bandsUsed, int* numBandsUsed, CooccurrenceOptions* cooccurrenceOptions, unsigned char setOperation);
-IMAQ_FUNC int IMAQ_STDCALL imaqCooccurrenceMatrix(const Image* srcImage, const ROI* roi, int levelPixel, const DisplacementVector* displacementVec, void* featureOptionArray, unsigned int featureOptionArraySize, void** cooccurrenceMatrixArray, int* coocurrenceMatrixRows, int* coocurrenceMatrixCols, void** featureVectorArray, int* featureVectorArraySize);
-IMAQ_FUNC ExtractTextureFeaturesReport* IMAQ_STDCALL imaqExtractTextureFeatures(const Image* srcImage, const ROI* roi, const WindowSize* windowOptions, const WaveletOptions* waveletOptions, void* waveletBands, unsigned int numWaveletBands, const CooccurrenceOptions* cooccurrenceOptions, unsigned char useWindow);
-IMAQ_FUNC WaveletBandsReport* IMAQ_STDCALL imaqExtractWaveletBands(const Image* srcImage, const WaveletOptions* waveletOptions, void* waveletBands, unsigned int numWaveletBands);
-
-//============================================================================
-// Regions of Interest Manipulation functions
-//============================================================================
-IMAQ_FUNC ROI* IMAQ_STDCALL imaqMaskToROI(const Image* mask, int* withinLimit);
-IMAQ_FUNC ROIProfile* IMAQ_STDCALL imaqROIProfile(const Image* image, const ROI* roi);
-IMAQ_FUNC int IMAQ_STDCALL imaqROIToMask(Image* mask, const ROI* roi, int fillValue, const Image* imageModel, int* inSpace);
-IMAQ_FUNC int IMAQ_STDCALL imaqTransformROI2(ROI* roi, const CoordinateSystem* baseSystem, const CoordinateSystem* newSystem);
-IMAQ_FUNC LabelToROIReport* IMAQ_STDCALL imaqLabelToROI(const Image* image, const unsigned int* labelsIn, unsigned int numLabelsIn, int maxNumVectors, int isExternelEdges);
-
-//============================================================================
-// Morphology functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqGrayMorphology(Image* dest, Image* source, MorphologyMethod method, const StructuringElement* structuringElement);
-
-//============================================================================
-// Classification functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqAddClassifierSample(Image* image, ClassifierSession* session, const ROI* roi, const char* sampleClass, double* featureVector, unsigned int vectorSize);
-IMAQ_FUNC ClassifierReportAdvanced* IMAQ_STDCALL imaqAdvanceClassify(Image* image, const ClassifierSession* session, const ROI* roi, double* featureVector, unsigned int vectorSize);
-IMAQ_FUNC ClassifierReport* IMAQ_STDCALL imaqClassify(Image* image, const ClassifierSession* session, const ROI* roi, double* featureVector, unsigned int vectorSize);
-IMAQ_FUNC ClassifierSession* IMAQ_STDCALL imaqCreateClassifier(ClassifierType type);
-IMAQ_FUNC int IMAQ_STDCALL imaqDeleteClassifierSample(ClassifierSession* session, int index);
-IMAQ_FUNC ClassifierAccuracyReport* IMAQ_STDCALL imaqGetClassifierAccuracy(const ClassifierSession* session);
-IMAQ_FUNC ClassifierSampleInfo* IMAQ_STDCALL imaqGetClassifierSampleInfo(const ClassifierSession* session, int index, int* numSamples);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetColorClassifierOptions(const ClassifierSession* session, ColorOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetNearestNeighborOptions(const ClassifierSession* session, NearestNeighborOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetParticleClassifierOptions2(const ClassifierSession* session, ParticleClassifierPreprocessingOptions2* preprocessingOptions, ParticleClassifierOptions* options);
-IMAQ_FUNC ClassifierSession* IMAQ_STDCALL imaqReadClassifierFile(ClassifierSession* session, const char* fileName, ReadClassifierFileMode mode, ClassifierType* type, ClassifierEngineType* engine, String255 description);
-IMAQ_FUNC int IMAQ_STDCALL imaqRelabelClassifierSample(ClassifierSession* session, int index, const char* newClass);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetParticleClassifierOptions2(ClassifierSession* session, const ParticleClassifierPreprocessingOptions2* preprocessingOptions, const ParticleClassifierOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetColorClassifierOptions(ClassifierSession* session, const ColorOptions* options);
-IMAQ_FUNC NearestNeighborTrainingReport* IMAQ_STDCALL imaqTrainNearestNeighborClassifier(ClassifierSession* session, const NearestNeighborOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqWriteClassifierFile(const ClassifierSession* session, const char* fileName, WriteClassifierFileMode mode, const String255 description);
-
-//============================================================================
-// Measure Distances functions
-//============================================================================
-IMAQ_FUNC ClampMax2Report* IMAQ_STDCALL imaqClampMax2(Image* image, const ROI* roi, const CoordinateSystem* baseSystem, const CoordinateSystem* newSystem, const CurveOptions* curveSettings, const ClampSettings* clampSettings, const ClampOverlaySettings* clampOverlaySettings);
-
-//============================================================================
-// Inspection functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqCompareGoldenTemplate(const Image* image, const Image* goldenTemplate, Image* brightDefects, Image* darkDefects, const InspectionAlignment* alignment, const InspectionOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnGoldenTemplate(Image* goldenTemplate, PointFloat originOffset, const Image* mask);
-//============================================================================
-// Obsolete functions
-//============================================================================
-IMAQ_FUNC int IMAQ_STDCALL imaqRotate(Image* dest, const Image* source, float angle, PixelValue fill, InterpolationMethod method);
-IMAQ_FUNC int IMAQ_STDCALL imaqWritePNGFile(const Image* image, const char* fileName, unsigned int compressionSpeed, const RGBValue* colorTable);
-IMAQ_FUNC ParticleReport* IMAQ_STDCALL imaqSelectParticles(const Image* image, const ParticleReport* reports, int reportCount, int rejectBorder, const SelectParticleCriteria* criteria, int criteriaCount, int* selectedCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqParticleFilter(Image* dest, Image* source, const ParticleFilterCriteria* criteria, int criteriaCount, int rejectMatches, int connectivity8);
-IMAQ_FUNC ParticleReport* IMAQ_STDCALL imaqGetParticleInfo(Image* image, int connectivity8, ParticleInfoMode mode, int* reportCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqCalcCoeff(const Image* image, const ParticleReport* report, MeasurementValue parameter, float* coefficient);
-IMAQ_FUNC EdgeReport* IMAQ_STDCALL imaqEdgeTool(const Image* image, const Point* points, int numPoints, const EdgeOptions* options, int* numEdges);
-IMAQ_FUNC CircleReport* IMAQ_STDCALL imaqCircles(Image* dest, const Image* source, float minRadius, float maxRadius, int* numCircles);
-IMAQ_FUNC int IMAQ_STDCALL imaqLabel(Image* dest, Image* source, int connectivity8, int* particleCount);
-IMAQ_FUNC int IMAQ_STDCALL imaqFitEllipse(const PointFloat* points, int numPoints, BestEllipse* ellipse);
-IMAQ_FUNC int IMAQ_STDCALL imaqFitCircle(const PointFloat* points, int numPoints, BestCircle* circle);
-IMAQ_FUNC Color IMAQ_STDCALL imaqChangeColorSpace(const Color* sourceColor, ColorMode sourceSpace, ColorMode destSpace);
-IMAQ_FUNC PatternMatch* IMAQ_STDCALL imaqMatchPattern(const Image* image, Image* pattern, const MatchPatternOptions* options, Rect searchRect, int* numMatches);
-IMAQ_FUNC int IMAQ_STDCALL imaqConvex(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqIsVisionInfoPresent(const Image* image, VisionInfoType type, int* present);
-IMAQ_FUNC int IMAQ_STDCALL imaqLineGaugeTool(const Image* image, Point start, Point end, LineGaugeMethod method, const EdgeOptions* edgeOptions, const CoordinateTransform* reference, float* distance);
-IMAQ_FUNC int IMAQ_STDCALL imaqBestCircle(const PointFloat* points, int numPoints, PointFloat* center, double* radius);
-IMAQ_FUNC int IMAQ_STDCALL imaqSavePattern(const Image* pattern, const char* fileName);
-IMAQ_FUNC int IMAQ_STDCALL imaqLoadPattern(Image* pattern, const char* fileName);
-IMAQ_FUNC int IMAQ_STDCALL imaqTransformROI(ROI* roi, Point originStart, float angleStart, Point originFinal, float angleFinal);
-IMAQ_FUNC int IMAQ_STDCALL imaqCoordinateReference(const Point* points, ReferenceMode mode, Point* origin, float* angle);
-IMAQ_FUNC ContourInfo* IMAQ_STDCALL imaqGetContourInfo(const ROI* roi, ContourID id);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetWindowOverlay(int windowNumber, const Overlay* overlay);
-IMAQ_FUNC Overlay* IMAQ_STDCALL imaqCreateOverlayFromROI(const ROI* roi);
-IMAQ_FUNC Overlay* IMAQ_STDCALL imaqCreateOverlayFromMetafile(const void* metafile);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetCalibrationInfo(Image* image, CalibrationUnit unit, float xDistance, float yDistance);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetCalibrationInfo(const Image* image, CalibrationUnit* unit, float* xDistance, float* yDistance);
-IMAQ_FUNC int IMAQ_STDCALL imaqConstructROI(const Image* image, ROI* roi, Tool initialTool, const ToolWindowOptions* tools, const ConstructROIOptions* options, int* okay);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetParticleClassifierOptions(const ClassifierSession* session, ParticleClassifierPreprocessingOptions* preprocessingOptions, ParticleClassifierOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqZoomWindow(int windowNumber, int xZoom, int yZoom, Point center);
-IMAQ_FUNC int IMAQ_STDCALL imaqGetWindowZoom(int windowNumber, int* xZoom, int* yZoom);
-IMAQ_FUNC int IMAQ_STDCALL imaqParticleFilter3(Image* dest, Image* source, const ParticleFilterCriteria2* criteria, int criteriaCount, const ParticleFilterOptions* options, const ROI* roi, int* numParticles);
-IMAQ_FUNC ReadTextReport2* IMAQ_STDCALL imaqReadText2(const Image* image, const CharSet* set, const ROI* roi, const ReadTextOptions* readOptions, const OCRProcessingOptions* processingOptions, const OCRSpacingOptions* spacingOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnPattern2(Image* image, LearningMode learningMode, LearnPatternAdvancedOptions* advancedOptions);
-IMAQ_FUNC int IMAQ_STDCALL imaqConvolve(Image* dest, Image* source, const float* kernel, int matrixRows, int matrixCols, float normalize, const Image* mask);
-IMAQ_FUNC int IMAQ_STDCALL imaqDivideConstant(Image* dest, const Image* source, PixelValue value);
-IMAQ_FUNC int IMAQ_STDCALL imaqDivide(Image* dest, const Image* sourceA, const Image* sourceB);
-IMAQ_FUNC EdgeReport2* IMAQ_STDCALL imaqEdgeTool3(const Image* image, const ROI* roi, EdgeProcess processType, const EdgeOptions2* edgeOptions);
-IMAQ_FUNC ConcentricRakeReport* IMAQ_STDCALL imaqConcentricRake(const Image* image, const ROI* roi, ConcentricRakeDirection direction, EdgeProcess process, const RakeOptions* options);
-IMAQ_FUNC SpokeReport* IMAQ_STDCALL imaqSpoke(const Image* image, const ROI* roi, SpokeDirection direction, EdgeProcess process, const SpokeOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqLearnPattern(Image* image, LearningMode learningMode);
-IMAQ_FUNC int IMAQ_STDCALL imaqLookup(Image* dest, const Image* source, const short* table, const Image* mask);
-IMAQ_FUNC PatternMatch* IMAQ_STDCALL imaqMatchPattern2(const Image* image, const Image* pattern, const MatchPatternOptions* options, const MatchPatternAdvancedOptions* advancedOptions, Rect searchRect, int* numMatches);
-IMAQ_FUNC int IMAQ_STDCALL imaqSetParticleClassifierOptions(ClassifierSession* session, const ParticleClassifierPreprocessingOptions* preprocessingOptions, const ParticleClassifierOptions* options);
-IMAQ_FUNC int IMAQ_STDCALL imaqCopyCalibrationInfo(Image* dest, const Image* source);
-IMAQ_FUNC int IMAQ_STDCALL imaqParticleFilter2(Image* dest, Image* source, const ParticleFilterCriteria2* criteria, int criteriaCount, int rejectMatches, int connectivity8, int* numParticles);
-IMAQ_FUNC EdgeReport* IMAQ_STDCALL imaqEdgeTool2(const Image* image, const Point* points, int numPoints, EdgeProcess process, const EdgeOptions* options, int* numEdges);
-IMAQ_FUNC ContourID IMAQ_STDCALL imaqAddRotatedRectContour(ROI* roi, RotatedRect rect);
-IMAQ_FUNC Barcode2DInfo* IMAQ_STDCALL imaqReadDataMatrixBarcode(const Image* image, const ROI* roi, const DataMatrixOptions* options, unsigned int* numBarcodes);
-IMAQ_FUNC LinearAverages* IMAQ_STDCALL imaqLinearAverages(const Image* image, Rect rect);
-IMAQ_FUNC GeometricPatternMatch* IMAQ_STDCALL imaqMatchGeometricPattern(const Image* image, const Image* pattern, const CurveOptions* curveOptions, const MatchGeometricPatternOptions* matchOptions, const MatchGeometricPatternAdvancedOptions* advancedMatchOptions, const ROI* roi, int* numMatches);
-IMAQ_FUNC CharInfo* IMAQ_STDCALL imaqGetCharInfo(const CharSet* set, int index);
-IMAQ_FUNC ReadTextReport* IMAQ_STDCALL imaqReadText(const Image* image, const CharSet* set, const ROI* roi, const ReadTextOptions* readOptions, const OCRProcessingOptions* processingOptions, const OCRSpacingOptions* spacingOptions);
-IMAQ_FUNC ThresholdData* IMAQ_STDCALL imaqAutoThreshold(Image* dest, Image* source, int numClasses, ThresholdMethod method);
-IMAQ_FUNC ColorHistogramReport* IMAQ_STDCALL imaqColorHistogram(Image* image, int numClasses, ColorMode mode, const Image* mask);
-IMAQ_FUNC RakeReport* IMAQ_STDCALL imaqRake(const Image* image, const ROI* roi, RakeDirection direction, EdgeProcess process, const RakeOptions* options);
-#endif
-
diff --git a/aos/externals/WPILib/WPILib/pcre.h b/aos/externals/WPILib/WPILib/pcre.h
deleted file mode 100644
index f8ddcbf..0000000
--- a/aos/externals/WPILib/WPILib/pcre.h
+++ /dev/null
@@ -1,338 +0,0 @@
-/*************************************************
-* Perl-Compatible Regular Expressions *
-*************************************************/
-
-/* This is the public header file for the PCRE library, to be #included by
-applications that call the PCRE functions.
-
- Copyright (c) 1997-2008 University of Cambridge
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the University of Cambridge nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-#ifndef _PCRE_H
-#define _PCRE_H
-
-/* The current PCRE version information. */
-
-#define PCRE_MAJOR 7
-#define PCRE_MINOR 8
-#define PCRE_PRERELEASE
-#define PCRE_DATE 2008-09-05
-
-/* When an application links to a PCRE DLL in Windows, the symbols that are
-imported have to be identified as such. When building PCRE, the appropriate
-export setting is defined in pcre_internal.h, which includes this file. So we
-don't change existing definitions of PCRE_EXP_DECL and PCRECPP_EXP_DECL. */
-
-/**
- * NI CHANGE
- *
- * We don't build the DLL version. We only build the static lib version.
- * Since we don't want to have to #define PCRE_STATIC in every component that
- * includes pcre.h, we're just going to go ahead and define it here.
- *
- * Adam Kemp, 12/15/2008
-*/
-#define PCRE_STATIC
-
-#if defined(_WIN32) && !defined(PCRE_STATIC)
-# ifndef PCRE_EXP_DECL
-# define PCRE_EXP_DECL extern __declspec(dllimport)
-# endif
-# ifdef __cplusplus
-# ifndef PCRECPP_EXP_DECL
-# define PCRECPP_EXP_DECL extern __declspec(dllimport)
-# endif
-# ifndef PCRECPP_EXP_DEFN
-# define PCRECPP_EXP_DEFN __declspec(dllimport)
-# endif
-# endif
-#endif
-
-/* By default, we use the standard "extern" declarations. */
-
-#ifndef PCRE_EXP_DECL
-# ifdef __cplusplus
-# define PCRE_EXP_DECL extern "C"
-# else
-# define PCRE_EXP_DECL extern
-# endif
-#endif
-
-#ifdef __cplusplus
-# ifndef PCRECPP_EXP_DECL
-# define PCRECPP_EXP_DECL extern
-# endif
-# ifndef PCRECPP_EXP_DEFN
-# define PCRECPP_EXP_DEFN
-# endif
-#endif
-
-/**
- * NI CHANGE
- *
- * We use __cdecl on win32 and the default calling convention elsewhere.
- *
- * Originall this macro did not appear in this file, but it was used in
- * internal headers. I consider it an oversight on the part of the pcre
- * developers that * it was not used in this file. If these functions use
- * specific calling conventions then their prototypes should include that
- * calling convention in case some other project uses a different default.
- *
- * Adam Kemp 12/15/2008
-*/
-#ifndef PCRE_CALL_CONVENTION
-# if defined(_WIN32) /* 32-bit and 64-bit */
-# define PCRE_CALL_CONVENTION __cdecl
-# else
-# define PCRE_CALL_CONVENTION
-# endif
-#else
-# define PCRE_CALL_CONVENTION
-#endif
-
-/* Have to include stdlib.h in order to ensure that size_t is defined;
-it is needed here for malloc. */
-
-#include <stdlib.h>
-
-/* Allow for C++ users */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Options */
-
-#define PCRE_CASELESS 0x00000001
-#define PCRE_MULTILINE 0x00000002
-#define PCRE_DOTALL 0x00000004
-#define PCRE_EXTENDED 0x00000008
-#define PCRE_ANCHORED 0x00000010
-#define PCRE_DOLLAR_ENDONLY 0x00000020
-#define PCRE_EXTRA 0x00000040
-#define PCRE_NOTBOL 0x00000080
-#define PCRE_NOTEOL 0x00000100
-#define PCRE_UNGREEDY 0x00000200
-#define PCRE_NOTEMPTY 0x00000400
-#define PCRE_UTF8 0x00000800
-#define PCRE_NO_AUTO_CAPTURE 0x00001000
-#define PCRE_NO_UTF8_CHECK 0x00002000
-#define PCRE_AUTO_CALLOUT 0x00004000
-#define PCRE_PARTIAL 0x00008000
-#define PCRE_DFA_SHORTEST 0x00010000
-#define PCRE_DFA_RESTART 0x00020000
-#define PCRE_FIRSTLINE 0x00040000
-#define PCRE_DUPNAMES 0x00080000
-#define PCRE_NEWLINE_CR 0x00100000
-#define PCRE_NEWLINE_LF 0x00200000
-#define PCRE_NEWLINE_CRLF 0x00300000
-#define PCRE_NEWLINE_ANY 0x00400000
-#define PCRE_NEWLINE_ANYCRLF 0x00500000
-#define PCRE_BSR_ANYCRLF 0x00800000
-#define PCRE_BSR_UNICODE 0x01000000
-#define PCRE_JAVASCRIPT_COMPAT 0x02000000
-
-/* Exec-time and get/set-time error codes */
-
-#define PCRE_ERROR_NOMATCH (-1)
-#define PCRE_ERROR_NULL (-2)
-#define PCRE_ERROR_BADOPTION (-3)
-#define PCRE_ERROR_BADMAGIC (-4)
-#define PCRE_ERROR_UNKNOWN_OPCODE (-5)
-#define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */
-#define PCRE_ERROR_NOMEMORY (-6)
-#define PCRE_ERROR_NOSUBSTRING (-7)
-#define PCRE_ERROR_MATCHLIMIT (-8)
-#define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */
-#define PCRE_ERROR_BADUTF8 (-10)
-#define PCRE_ERROR_BADUTF8_OFFSET (-11)
-#define PCRE_ERROR_PARTIAL (-12)
-#define PCRE_ERROR_BADPARTIAL (-13)
-#define PCRE_ERROR_INTERNAL (-14)
-#define PCRE_ERROR_BADCOUNT (-15)
-#define PCRE_ERROR_DFA_UITEM (-16)
-#define PCRE_ERROR_DFA_UCOND (-17)
-#define PCRE_ERROR_DFA_UMLIMIT (-18)
-#define PCRE_ERROR_DFA_WSSIZE (-19)
-#define PCRE_ERROR_DFA_RECURSE (-20)
-#define PCRE_ERROR_RECURSIONLIMIT (-21)
-#define PCRE_ERROR_NULLWSLIMIT (-22) /* No longer actually used */
-#define PCRE_ERROR_BADNEWLINE (-23)
-
-/* Request types for pcre_fullinfo() */
-
-#define PCRE_INFO_OPTIONS 0
-#define PCRE_INFO_SIZE 1
-#define PCRE_INFO_CAPTURECOUNT 2
-#define PCRE_INFO_BACKREFMAX 3
-#define PCRE_INFO_FIRSTBYTE 4
-#define PCRE_INFO_FIRSTCHAR 4 /* For backwards compatibility */
-#define PCRE_INFO_FIRSTTABLE 5
-#define PCRE_INFO_LASTLITERAL 6
-#define PCRE_INFO_NAMEENTRYSIZE 7
-#define PCRE_INFO_NAMECOUNT 8
-#define PCRE_INFO_NAMETABLE 9
-#define PCRE_INFO_STUDYSIZE 10
-#define PCRE_INFO_DEFAULT_TABLES 11
-#define PCRE_INFO_OKPARTIAL 12
-#define PCRE_INFO_JCHANGED 13
-#define PCRE_INFO_HASCRORLF 14
-
-/* Request types for pcre_config(). Do not re-arrange, in order to remain
-compatible. */
-
-#define PCRE_CONFIG_UTF8 0
-#define PCRE_CONFIG_NEWLINE 1
-#define PCRE_CONFIG_LINK_SIZE 2
-#define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD 3
-#define PCRE_CONFIG_MATCH_LIMIT 4
-#define PCRE_CONFIG_STACKRECURSE 5
-#define PCRE_CONFIG_UNICODE_PROPERTIES 6
-#define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7
-#define PCRE_CONFIG_BSR 8
-
-/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
-these bits, just add new ones on the end, in order to remain compatible. */
-
-#define PCRE_EXTRA_STUDY_DATA 0x0001
-#define PCRE_EXTRA_MATCH_LIMIT 0x0002
-#define PCRE_EXTRA_CALLOUT_DATA 0x0004
-#define PCRE_EXTRA_TABLES 0x0008
-#define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010
-
-/* Types */
-
-struct real_pcre; /* declaration; the definition is private */
-typedef struct real_pcre pcre;
-
-/* When PCRE is compiled as a C++ library, the subject pointer type can be
-replaced with a custom type. For conventional use, the public interface is a
-const char *. */
-
-#ifndef PCRE_SPTR
-#define PCRE_SPTR const char *
-#endif
-
-/* The structure for passing additional data to pcre_exec(). This is defined in
-such as way as to be extensible. Always add new fields at the end, in order to
-remain compatible. */
-
-typedef struct pcre_extra {
- unsigned long int flags; /* Bits for which fields are set */
- void *study_data; /* Opaque data from pcre_study() */
- unsigned long int match_limit; /* Maximum number of calls to match() */
- void *callout_data; /* Data passed back in callouts */
- const unsigned char *tables; /* Pointer to character tables */
- unsigned long int match_limit_recursion; /* Max recursive calls to match() */
-} pcre_extra;
-
-/* The structure for passing out data via the pcre_callout_function. We use a
-structure so that new fields can be added on the end in future versions,
-without changing the API of the function, thereby allowing old clients to work
-without modification. */
-
-typedef struct pcre_callout_block {
- int version; /* Identifies version of block */
- /* ------------------------ Version 0 ------------------------------- */
- int callout_number; /* Number compiled into pattern */
- int *offset_vector; /* The offset vector */
- PCRE_SPTR subject; /* The subject being matched */
- int subject_length; /* The length of the subject */
- int start_match; /* Offset to start of this match attempt */
- int current_position; /* Where we currently are in the subject */
- int capture_top; /* Max current capture */
- int capture_last; /* Most recently closed capture */
- void *callout_data; /* Data passed in with the call */
- /* ------------------- Added for Version 1 -------------------------- */
- int pattern_position; /* Offset to next item in the pattern */
- int next_item_length; /* Length of next item in the pattern */
- /* ------------------------------------------------------------------ */
-} pcre_callout_block;
-
-/* Indirection for store get and free functions. These can be set to
-alternative malloc/free functions if required. Special ones are used in the
-non-recursive case for "frames". There is also an optional callout function
-that is triggered by the (?) regex item. For Virtual Pascal, these definitions
-have to take another form. */
-
-#ifndef VPCOMPAT
-PCRE_EXP_DECL void* (PCRE_CALL_CONVENTION *pcre_malloc)(size_t);
-PCRE_EXP_DECL void (PCRE_CALL_CONVENTION *pcre_free)(void *);
-PCRE_EXP_DECL void* (PCRE_CALL_CONVENTION *pcre_stack_malloc)(size_t);
-PCRE_EXP_DECL void (PCRE_CALL_CONVENTION *pcre_stack_free)(void *);
-PCRE_EXP_DECL int (PCRE_CALL_CONVENTION *pcre_callout)(pcre_callout_block *);
-#else /* VPCOMPAT */
-PCRE_EXP_DECL void* PCRE_CALL_CONVENTION pcre_malloc(size_t);
-PCRE_EXP_DECL void PCRE_CALL_CONVENTION pcre_free(void *);
-PCRE_EXP_DECL void* PCRE_CALL_CONVENTION pcre_stack_malloc(size_t);
-PCRE_EXP_DECL void PCRE_CALL_CONVENTION pcre_stack_free(void *);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_callout(pcre_callout_block *);
-#endif /* VPCOMPAT */
-
-/* Exported PCRE functions */
-
-PCRE_EXP_DECL pcre* PCRE_CALL_CONVENTION pcre_compile(const char *, int, const char **, int *,
- const unsigned char *);
-PCRE_EXP_DECL pcre* PCRE_CALL_CONVENTION pcre_compile2(const char *, int, int *, const char **,
- int *, const unsigned char *);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_config(int, void *);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_copy_named_substring(const pcre *, const char *,
- int *, int, const char *, char *, int);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_copy_substring(const char *, int *, int, int, char *,
- int);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_dfa_exec(const pcre *, const pcre_extra *,
- const char *, int, int, int, int *, int , int *, int);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
- int, int, int, int *, int);
-PCRE_EXP_DECL void PCRE_CALL_CONVENTION pcre_free_substring(const char *);
-PCRE_EXP_DECL void PCRE_CALL_CONVENTION pcre_free_substring_list(const char **);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_fullinfo(const pcre *, const pcre_extra *, int,
- void *);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_get_named_substring(const pcre *, const char *,
- int *, int, const char *, const char **);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_get_stringnumber(const pcre *, const char *);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_get_stringtable_entries(const pcre *, const char *,
- char **, char **);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_get_substring(const char *, int *, int, int,
- const char **);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_get_substring_list(const char *, int *, int,
- const char ***);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_info(const pcre *, int *, int *);
-PCRE_EXP_DECL const unsigned char* PCRE_CALL_CONVENTION pcre_maketables(void);
-PCRE_EXP_DECL int PCRE_CALL_CONVENTION pcre_refcount(pcre *, int);
-PCRE_EXP_DECL pcre_extra* PCRE_CALL_CONVENTION pcre_study(const pcre *, int, const char **);
-PCRE_EXP_DECL const char* PCRE_CALL_CONVENTION pcre_version(void);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* End of pcre.h */
diff --git a/aos/externals/WPILib/WPILib/tables/IRemote.h b/aos/externals/WPILib/WPILib/tables/IRemote.h
deleted file mode 100644
index ea5e98f..0000000
--- a/aos/externals/WPILib/WPILib/tables/IRemote.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * IRemote.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef IREMOTE_H_
-#define IREMOTE_H_
-
-class IRemote;
-
-
-#include "tables/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
deleted file mode 100644
index cf7c583..0000000
--- a/aos/externals/WPILib/WPILib/tables/IRemoteConnectionListener.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * IRemoteConnectionListener.h
- *
- * Created on: Sep 22, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef IREMOTECONNECTIONLISTENER_H_
-#define IREMOTECONNECTIONLISTENER_H_
-
-
-class IRemoteConnectionListener;
-
-#include "tables/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
deleted file mode 100644
index 93cb4b4..0000000
--- a/aos/externals/WPILib/WPILib/tables/ITable.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * 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 "tables/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
deleted file mode 100644
index af114c3..0000000
--- a/aos/externals/WPILib/WPILib/tables/ITableListener.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * ITableListener.h
- *
- * Created on: Sep 19, 2012
- * Author: Mitchell Wills
- */
-
-#ifndef ITABLELISTENER_H_
-#define ITABLELISTENER_H_
-
-
-class ITableListener;
-
-
-#include "tables/ITable.h"
-
-
-
-
-/**
- * A listener that listens to changes in values in a {@link ITable}
- *
- * @author Mitchell
- *
- */
-class ITableListener {
- public:
- virtual ~ITableListener(){};
- /**
- * 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
deleted file mode 100644
index 1f979d3..0000000
--- a/aos/externals/WPILib/WPILib/tables/ITableProvider.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 {
-public:
- /**
- * 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
deleted file mode 100644
index 2a8ffcc..0000000
--- a/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 510cd8d..0000000
--- a/aos/externals/WPILib/WPILib/tables/TableKeyNotDefinedException.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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_ */
diff --git a/aos/externals/WPILib/WPILib/visa/Makefile b/aos/externals/WPILib/WPILib/visa/Makefile
deleted file mode 100644
index bc19164..0000000
--- a/aos/externals/WPILib/WPILib/visa/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/visa/visa.h b/aos/externals/WPILib/WPILib/visa/visa.h
deleted file mode 100644
index 3c6ad30..0000000
--- a/aos/externals/WPILib/WPILib/visa/visa.h
+++ /dev/null
@@ -1,1064 +0,0 @@
-/*---------------------------------------------------------------------------*/
-/* Distributed by IVI Foundation Inc. */
-/* Contains National Instruments extensions. */
-/* Do not modify the contents of this file. */
-/*---------------------------------------------------------------------------*/
-/* */
-/* Title : VISA.H */
-/* Date : 10-09-2006 */
-/* Purpose : Include file for the VISA Library 4.0 specification */
-/* */
-/*---------------------------------------------------------------------------*/
-/* When using NI-VISA extensions, you must link with the VISA library that */
-/* comes with NI-VISA. Currently, the extensions provided by NI-VISA are: */
-/* */
-/* PXI (Compact PCI eXtensions for Instrumentation) and PCI support. To use */
-/* this, you must define the macro NIVISA_PXI before including this header. */
-/* You must also create an INF file with the VISA Driver Development Wizard. */
-/* */
-/* A fast set of macros for viPeekXX/viPokeXX that guarantees binary */
-/* compatibility with other implementations of VISA. To use this, you must */
-/* define the macro NIVISA_PEEKPOKE before including this header. */
-/* */
-/* Support for USB devices that do not conform to a specific class. To use */
-/* this, you must define the macro NIVISA_USB before including this header. */
-/* You must also create an INF file with the VISA Driver Development Wizard. */
-/*---------------------------------------------------------------------------*/
-
-#ifndef __VISA_HEADER__
-#define __VISA_HEADER__
-
-#include <stdarg.h>
-
-#if !defined(__VISATYPE_HEADER__)
-#include "visatype.h"
-#endif
-
-#define VI_SPEC_VERSION (0x00400000UL)
-
-#if defined(__cplusplus) || defined(__cplusplus__)
- extern "C" {
-#endif
-
-#if defined(_CVI_)
-#pragma EnableLibraryRuntimeChecking
-#endif
-
-/*- VISA Types --------------------------------------------------------------*/
-
-typedef ViObject ViEvent;
-typedef ViEvent _VI_PTR ViPEvent;
-typedef ViObject ViFindList;
-typedef ViFindList _VI_PTR ViPFindList;
-
-#if defined(_VI_INT64_UINT64_DEFINED) && defined(_VISA_ENV_IS_64_BIT)
-typedef ViUInt64 ViBusAddress;
-typedef ViUInt64 ViBusSize;
-typedef ViUInt64 ViAttrState;
-#else
-typedef ViUInt32 ViBusAddress;
-typedef ViUInt32 ViBusSize;
-typedef ViUInt32 ViAttrState;
-#endif
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-typedef ViUInt64 ViBusAddress64;
-typedef ViBusAddress64 _VI_PTR ViPBusAddress64;
-#endif
-
-typedef ViUInt32 ViEventType;
-typedef ViEventType _VI_PTR ViPEventType;
-typedef ViEventType _VI_PTR ViAEventType;
-typedef void _VI_PTR ViPAttrState;
-typedef ViAttr _VI_PTR ViPAttr;
-typedef ViAttr _VI_PTR ViAAttr;
-
-typedef ViString ViKeyId;
-typedef ViPString ViPKeyId;
-typedef ViUInt32 ViJobId;
-typedef ViJobId _VI_PTR ViPJobId;
-typedef ViUInt32 ViAccessMode;
-typedef ViAccessMode _VI_PTR ViPAccessMode;
-typedef ViBusAddress _VI_PTR ViPBusAddress;
-typedef ViUInt32 ViEventFilter;
-
-typedef va_list ViVAList;
-
-typedef ViStatus (_VI_FUNCH _VI_PTR ViHndlr)
- (ViSession vi, ViEventType eventType, ViEvent event, ViAddr userHandle);
-
-/*- Resource Manager Functions and Operations -------------------------------*/
-
-ViStatus _VI_FUNC viOpenDefaultRM (ViPSession vi);
-ViStatus _VI_FUNC viFindRsrc (ViSession sesn, ViString expr, ViPFindList vi,
- ViPUInt32 retCnt, ViChar _VI_FAR desc[]);
-ViStatus _VI_FUNC viFindNext (ViFindList vi, ViChar _VI_FAR desc[]);
-ViStatus _VI_FUNC viParseRsrc (ViSession rmSesn, ViRsrc rsrcName,
- ViPUInt16 intfType, ViPUInt16 intfNum);
-ViStatus _VI_FUNC viParseRsrcEx (ViSession rmSesn, ViRsrc rsrcName, ViPUInt16 intfType,
- ViPUInt16 intfNum, ViChar _VI_FAR rsrcClass[],
- ViChar _VI_FAR expandedUnaliasedName[],
- ViChar _VI_FAR aliasIfExists[]);
-ViStatus _VI_FUNC viOpen (ViSession sesn, ViRsrc name, ViAccessMode mode,
- ViUInt32 timeout, ViPSession vi);
-
-/*- Resource Template Operations --------------------------------------------*/
-
-ViStatus _VI_FUNC viClose (ViObject vi);
-ViStatus _VI_FUNC viSetAttribute (ViObject vi, ViAttr attrName, ViAttrState attrValue);
-ViStatus _VI_FUNC viGetAttribute (ViObject vi, ViAttr attrName, void _VI_PTR attrValue);
-ViStatus _VI_FUNC viStatusDesc (ViObject vi, ViStatus status, ViChar _VI_FAR desc[]);
-ViStatus _VI_FUNC viTerminate (ViObject vi, ViUInt16 degree, ViJobId jobId);
-
-ViStatus _VI_FUNC viLock (ViSession vi, ViAccessMode lockType, ViUInt32 timeout,
- ViKeyId requestedKey, ViChar _VI_FAR accessKey[]);
-ViStatus _VI_FUNC viUnlock (ViSession vi);
-ViStatus _VI_FUNC viEnableEvent (ViSession vi, ViEventType eventType, ViUInt16 mechanism,
- ViEventFilter context);
-ViStatus _VI_FUNC viDisableEvent (ViSession vi, ViEventType eventType, ViUInt16 mechanism);
-ViStatus _VI_FUNC viDiscardEvents (ViSession vi, ViEventType eventType, ViUInt16 mechanism);
-ViStatus _VI_FUNC viWaitOnEvent (ViSession vi, ViEventType inEventType, ViUInt32 timeout,
- ViPEventType outEventType, ViPEvent outContext);
-ViStatus _VI_FUNC viInstallHandler(ViSession vi, ViEventType eventType, ViHndlr handler,
- ViAddr userHandle);
-ViStatus _VI_FUNC viUninstallHandler(ViSession vi, ViEventType eventType, ViHndlr handler,
- ViAddr userHandle);
-
-/*- Basic I/O Operations ----------------------------------------------------*/
-
-ViStatus _VI_FUNC viRead (ViSession vi, ViPBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);
-ViStatus _VI_FUNC viReadAsync (ViSession vi, ViPBuf buf, ViUInt32 cnt, ViPJobId jobId);
-ViStatus _VI_FUNC viReadToFile (ViSession vi, ViConstString filename, ViUInt32 cnt,
- ViPUInt32 retCnt);
-ViStatus _VI_FUNC viWrite (ViSession vi, ViBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);
-ViStatus _VI_FUNC viWriteAsync (ViSession vi, ViBuf buf, ViUInt32 cnt, ViPJobId jobId);
-ViStatus _VI_FUNC viWriteFromFile (ViSession vi, ViConstString filename, ViUInt32 cnt,
- ViPUInt32 retCnt);
-ViStatus _VI_FUNC viAssertTrigger (ViSession vi, ViUInt16 protocol);
-ViStatus _VI_FUNC viReadSTB (ViSession vi, ViPUInt16 status);
-ViStatus _VI_FUNC viClear (ViSession vi);
-
-/*- Formatted and Buffered I/O Operations -----------------------------------*/
-
-ViStatus _VI_FUNC viSetBuf (ViSession vi, ViUInt16 mask, ViUInt32 size);
-ViStatus _VI_FUNC viFlush (ViSession vi, ViUInt16 mask);
-
-ViStatus _VI_FUNC viBufWrite (ViSession vi, ViBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);
-ViStatus _VI_FUNC viBufRead (ViSession vi, ViPBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);
-
-ViStatus _VI_FUNCC viPrintf (ViSession vi, ViString writeFmt, ...);
-ViStatus _VI_FUNC viVPrintf (ViSession vi, ViString writeFmt, ViVAList params);
-ViStatus _VI_FUNCC viSPrintf (ViSession vi, ViPBuf buf, ViString writeFmt, ...);
-ViStatus _VI_FUNC viVSPrintf (ViSession vi, ViPBuf buf, ViString writeFmt,
- ViVAList parms);
-
-ViStatus _VI_FUNCC viScanf (ViSession vi, ViString readFmt, ...);
-ViStatus _VI_FUNC viVScanf (ViSession vi, ViString readFmt, ViVAList params);
-ViStatus _VI_FUNCC viSScanf (ViSession vi, ViBuf buf, ViString readFmt, ...);
-ViStatus _VI_FUNC viVSScanf (ViSession vi, ViBuf buf, ViString readFmt,
- ViVAList parms);
-
-ViStatus _VI_FUNCC viQueryf (ViSession vi, ViString writeFmt, ViString readFmt, ...);
-ViStatus _VI_FUNC viVQueryf (ViSession vi, ViString writeFmt, ViString readFmt,
- ViVAList params);
-
-/*- Memory I/O Operations ---------------------------------------------------*/
-
-ViStatus _VI_FUNC viIn8 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViPUInt8 val8);
-ViStatus _VI_FUNC viOut8 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViUInt8 val8);
-ViStatus _VI_FUNC viIn16 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViPUInt16 val16);
-ViStatus _VI_FUNC viOut16 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViUInt16 val16);
-ViStatus _VI_FUNC viIn32 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViPUInt32 val32);
-ViStatus _VI_FUNC viOut32 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViUInt32 val32);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-ViStatus _VI_FUNC viIn64 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViPUInt64 val64);
-ViStatus _VI_FUNC viOut64 (ViSession vi, ViUInt16 space,
- ViBusAddress offset, ViUInt64 val64);
-
-ViStatus _VI_FUNC viIn8Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViPUInt8 val8);
-ViStatus _VI_FUNC viOut8Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViUInt8 val8);
-ViStatus _VI_FUNC viIn16Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViPUInt16 val16);
-ViStatus _VI_FUNC viOut16Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViUInt16 val16);
-ViStatus _VI_FUNC viIn32Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViPUInt32 val32);
-ViStatus _VI_FUNC viOut32Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViUInt32 val32);
-ViStatus _VI_FUNC viIn64Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViPUInt64 val64);
-ViStatus _VI_FUNC viOut64Ex (ViSession vi, ViUInt16 space,
- ViBusAddress64 offset, ViUInt64 val64);
-#endif
-
-ViStatus _VI_FUNC viMoveIn8 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt8 buf8);
-ViStatus _VI_FUNC viMoveOut8 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt8 buf8);
-ViStatus _VI_FUNC viMoveIn16 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt16 buf16);
-ViStatus _VI_FUNC viMoveOut16 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt16 buf16);
-ViStatus _VI_FUNC viMoveIn32 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt32 buf32);
-ViStatus _VI_FUNC viMoveOut32 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt32 buf32);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-ViStatus _VI_FUNC viMoveIn64 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt64 buf64);
-ViStatus _VI_FUNC viMoveOut64 (ViSession vi, ViUInt16 space, ViBusAddress offset,
- ViBusSize length, ViAUInt64 buf64);
-
-ViStatus _VI_FUNC viMoveIn8Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt8 buf8);
-ViStatus _VI_FUNC viMoveOut8Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt8 buf8);
-ViStatus _VI_FUNC viMoveIn16Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt16 buf16);
-ViStatus _VI_FUNC viMoveOut16Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt16 buf16);
-ViStatus _VI_FUNC viMoveIn32Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt32 buf32);
-ViStatus _VI_FUNC viMoveOut32Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt32 buf32);
-ViStatus _VI_FUNC viMoveIn64Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt64 buf64);
-ViStatus _VI_FUNC viMoveOut64Ex (ViSession vi, ViUInt16 space, ViBusAddress64 offset,
- ViBusSize length, ViAUInt64 buf64);
-#endif
-
-ViStatus _VI_FUNC viMove (ViSession vi, ViUInt16 srcSpace, ViBusAddress srcOffset,
- ViUInt16 srcWidth, ViUInt16 destSpace,
- ViBusAddress destOffset, ViUInt16 destWidth,
- ViBusSize srcLength);
-ViStatus _VI_FUNC viMoveAsync (ViSession vi, ViUInt16 srcSpace, ViBusAddress srcOffset,
- ViUInt16 srcWidth, ViUInt16 destSpace,
- ViBusAddress destOffset, ViUInt16 destWidth,
- ViBusSize srcLength, ViPJobId jobId);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-ViStatus _VI_FUNC viMoveEx (ViSession vi, ViUInt16 srcSpace, ViBusAddress64 srcOffset,
- ViUInt16 srcWidth, ViUInt16 destSpace,
- ViBusAddress64 destOffset, ViUInt16 destWidth,
- ViBusSize srcLength);
-ViStatus _VI_FUNC viMoveAsyncEx (ViSession vi, ViUInt16 srcSpace, ViBusAddress64 srcOffset,
- ViUInt16 srcWidth, ViUInt16 destSpace,
- ViBusAddress64 destOffset, ViUInt16 destWidth,
- ViBusSize srcLength, ViPJobId jobId);
-#endif
-
-ViStatus _VI_FUNC viMapAddress (ViSession vi, ViUInt16 mapSpace, ViBusAddress mapOffset,
- ViBusSize mapSize, ViBoolean access,
- ViAddr suggested, ViPAddr address);
-ViStatus _VI_FUNC viUnmapAddress (ViSession vi);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-ViStatus _VI_FUNC viMapAddressEx (ViSession vi, ViUInt16 mapSpace, ViBusAddress64 mapOffset,
- ViBusSize mapSize, ViBoolean access,
- ViAddr suggested, ViPAddr address);
-#endif
-
-void _VI_FUNC viPeek8 (ViSession vi, ViAddr address, ViPUInt8 val8);
-void _VI_FUNC viPoke8 (ViSession vi, ViAddr address, ViUInt8 val8);
-void _VI_FUNC viPeek16 (ViSession vi, ViAddr address, ViPUInt16 val16);
-void _VI_FUNC viPoke16 (ViSession vi, ViAddr address, ViUInt16 val16);
-void _VI_FUNC viPeek32 (ViSession vi, ViAddr address, ViPUInt32 val32);
-void _VI_FUNC viPoke32 (ViSession vi, ViAddr address, ViUInt32 val32);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-void _VI_FUNC viPeek64 (ViSession vi, ViAddr address, ViPUInt64 val64);
-void _VI_FUNC viPoke64 (ViSession vi, ViAddr address, ViUInt64 val64);
-#endif
-
-/*- Shared Memory Operations ------------------------------------------------*/
-
-ViStatus _VI_FUNC viMemAlloc (ViSession vi, ViBusSize size, ViPBusAddress offset);
-ViStatus _VI_FUNC viMemFree (ViSession vi, ViBusAddress offset);
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-ViStatus _VI_FUNC viMemAllocEx (ViSession vi, ViBusSize size, ViPBusAddress64 offset);
-ViStatus _VI_FUNC viMemFreeEx (ViSession vi, ViBusAddress64 offset);
-#endif
-
-/*- Interface Specific Operations -------------------------------------------*/
-
-ViStatus _VI_FUNC viGpibControlREN(ViSession vi, ViUInt16 mode);
-ViStatus _VI_FUNC viGpibControlATN(ViSession vi, ViUInt16 mode);
-ViStatus _VI_FUNC viGpibSendIFC (ViSession vi);
-ViStatus _VI_FUNC viGpibCommand (ViSession vi, ViBuf cmd, ViUInt32 cnt, ViPUInt32 retCnt);
-ViStatus _VI_FUNC viGpibPassControl(ViSession vi, ViUInt16 primAddr, ViUInt16 secAddr);
-
-ViStatus _VI_FUNC viVxiCommandQuery(ViSession vi, ViUInt16 mode, ViUInt32 cmd,
- ViPUInt32 response);
-ViStatus _VI_FUNC viAssertUtilSignal(ViSession vi, ViUInt16 line);
-ViStatus _VI_FUNC viAssertIntrSignal(ViSession vi, ViInt16 mode, ViUInt32 statusID);
-ViStatus _VI_FUNC viMapTrigger (ViSession vi, ViInt16 trigSrc, ViInt16 trigDest,
- ViUInt16 mode);
-ViStatus _VI_FUNC viUnmapTrigger (ViSession vi, ViInt16 trigSrc, ViInt16 trigDest);
-ViStatus _VI_FUNC viUsbControlOut (ViSession vi, ViInt16 bmRequestType, ViInt16 bRequest,
- ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength,
- ViBuf buf);
-ViStatus _VI_FUNC viUsbControlIn (ViSession vi, ViInt16 bmRequestType, ViInt16 bRequest,
- ViUInt16 wValue, ViUInt16 wIndex, ViUInt16 wLength,
- ViPBuf buf, ViPUInt16 retCnt);
-
-/*- Attributes (platform independent size) ----------------------------------*/
-
-#define VI_ATTR_RSRC_CLASS (0xBFFF0001UL)
-#define VI_ATTR_RSRC_NAME (0xBFFF0002UL)
-#define VI_ATTR_RSRC_IMPL_VERSION (0x3FFF0003UL)
-#define VI_ATTR_RSRC_LOCK_STATE (0x3FFF0004UL)
-#define VI_ATTR_MAX_QUEUE_LENGTH (0x3FFF0005UL)
-#define VI_ATTR_USER_DATA_32 (0x3FFF0007UL)
-#define VI_ATTR_FDC_CHNL (0x3FFF000DUL)
-#define VI_ATTR_FDC_MODE (0x3FFF000FUL)
-#define VI_ATTR_FDC_GEN_SIGNAL_EN (0x3FFF0011UL)
-#define VI_ATTR_FDC_USE_PAIR (0x3FFF0013UL)
-#define VI_ATTR_SEND_END_EN (0x3FFF0016UL)
-#define VI_ATTR_TERMCHAR (0x3FFF0018UL)
-#define VI_ATTR_TMO_VALUE (0x3FFF001AUL)
-#define VI_ATTR_GPIB_READDR_EN (0x3FFF001BUL)
-#define VI_ATTR_IO_PROT (0x3FFF001CUL)
-#define VI_ATTR_DMA_ALLOW_EN (0x3FFF001EUL)
-#define VI_ATTR_ASRL_BAUD (0x3FFF0021UL)
-#define VI_ATTR_ASRL_DATA_BITS (0x3FFF0022UL)
-#define VI_ATTR_ASRL_PARITY (0x3FFF0023UL)
-#define VI_ATTR_ASRL_STOP_BITS (0x3FFF0024UL)
-#define VI_ATTR_ASRL_FLOW_CNTRL (0x3FFF0025UL)
-#define VI_ATTR_RD_BUF_OPER_MODE (0x3FFF002AUL)
-#define VI_ATTR_RD_BUF_SIZE (0x3FFF002BUL)
-#define VI_ATTR_WR_BUF_OPER_MODE (0x3FFF002DUL)
-#define VI_ATTR_WR_BUF_SIZE (0x3FFF002EUL)
-#define VI_ATTR_SUPPRESS_END_EN (0x3FFF0036UL)
-#define VI_ATTR_TERMCHAR_EN (0x3FFF0038UL)
-#define VI_ATTR_DEST_ACCESS_PRIV (0x3FFF0039UL)
-#define VI_ATTR_DEST_BYTE_ORDER (0x3FFF003AUL)
-#define VI_ATTR_SRC_ACCESS_PRIV (0x3FFF003CUL)
-#define VI_ATTR_SRC_BYTE_ORDER (0x3FFF003DUL)
-#define VI_ATTR_SRC_INCREMENT (0x3FFF0040UL)
-#define VI_ATTR_DEST_INCREMENT (0x3FFF0041UL)
-#define VI_ATTR_WIN_ACCESS_PRIV (0x3FFF0045UL)
-#define VI_ATTR_WIN_BYTE_ORDER (0x3FFF0047UL)
-#define VI_ATTR_GPIB_ATN_STATE (0x3FFF0057UL)
-#define VI_ATTR_GPIB_ADDR_STATE (0x3FFF005CUL)
-#define VI_ATTR_GPIB_CIC_STATE (0x3FFF005EUL)
-#define VI_ATTR_GPIB_NDAC_STATE (0x3FFF0062UL)
-#define VI_ATTR_GPIB_SRQ_STATE (0x3FFF0067UL)
-#define VI_ATTR_GPIB_SYS_CNTRL_STATE (0x3FFF0068UL)
-#define VI_ATTR_GPIB_HS488_CBL_LEN (0x3FFF0069UL)
-#define VI_ATTR_CMDR_LA (0x3FFF006BUL)
-#define VI_ATTR_VXI_DEV_CLASS (0x3FFF006CUL)
-#define VI_ATTR_MAINFRAME_LA (0x3FFF0070UL)
-#define VI_ATTR_MANF_NAME (0xBFFF0072UL)
-#define VI_ATTR_MODEL_NAME (0xBFFF0077UL)
-#define VI_ATTR_VXI_VME_INTR_STATUS (0x3FFF008BUL)
-#define VI_ATTR_VXI_TRIG_STATUS (0x3FFF008DUL)
-#define VI_ATTR_VXI_VME_SYSFAIL_STATE (0x3FFF0094UL)
-#define VI_ATTR_WIN_BASE_ADDR_32 (0x3FFF0098UL)
-#define VI_ATTR_WIN_SIZE_32 (0x3FFF009AUL)
-#define VI_ATTR_ASRL_AVAIL_NUM (0x3FFF00ACUL)
-#define VI_ATTR_MEM_BASE_32 (0x3FFF00ADUL)
-#define VI_ATTR_ASRL_CTS_STATE (0x3FFF00AEUL)
-#define VI_ATTR_ASRL_DCD_STATE (0x3FFF00AFUL)
-#define VI_ATTR_ASRL_DSR_STATE (0x3FFF00B1UL)
-#define VI_ATTR_ASRL_DTR_STATE (0x3FFF00B2UL)
-#define VI_ATTR_ASRL_END_IN (0x3FFF00B3UL)
-#define VI_ATTR_ASRL_END_OUT (0x3FFF00B4UL)
-#define VI_ATTR_ASRL_REPLACE_CHAR (0x3FFF00BEUL)
-#define VI_ATTR_ASRL_RI_STATE (0x3FFF00BFUL)
-#define VI_ATTR_ASRL_RTS_STATE (0x3FFF00C0UL)
-#define VI_ATTR_ASRL_XON_CHAR (0x3FFF00C1UL)
-#define VI_ATTR_ASRL_XOFF_CHAR (0x3FFF00C2UL)
-#define VI_ATTR_WIN_ACCESS (0x3FFF00C3UL)
-#define VI_ATTR_RM_SESSION (0x3FFF00C4UL)
-#define VI_ATTR_VXI_LA (0x3FFF00D5UL)
-#define VI_ATTR_MANF_ID (0x3FFF00D9UL)
-#define VI_ATTR_MEM_SIZE_32 (0x3FFF00DDUL)
-#define VI_ATTR_MEM_SPACE (0x3FFF00DEUL)
-#define VI_ATTR_MODEL_CODE (0x3FFF00DFUL)
-#define VI_ATTR_SLOT (0x3FFF00E8UL)
-#define VI_ATTR_INTF_INST_NAME (0xBFFF00E9UL)
-#define VI_ATTR_IMMEDIATE_SERV (0x3FFF0100UL)
-#define VI_ATTR_INTF_PARENT_NUM (0x3FFF0101UL)
-#define VI_ATTR_RSRC_SPEC_VERSION (0x3FFF0170UL)
-#define VI_ATTR_INTF_TYPE (0x3FFF0171UL)
-#define VI_ATTR_GPIB_PRIMARY_ADDR (0x3FFF0172UL)
-#define VI_ATTR_GPIB_SECONDARY_ADDR (0x3FFF0173UL)
-#define VI_ATTR_RSRC_MANF_NAME (0xBFFF0174UL)
-#define VI_ATTR_RSRC_MANF_ID (0x3FFF0175UL)
-#define VI_ATTR_INTF_NUM (0x3FFF0176UL)
-#define VI_ATTR_TRIG_ID (0x3FFF0177UL)
-#define VI_ATTR_GPIB_REN_STATE (0x3FFF0181UL)
-#define VI_ATTR_GPIB_UNADDR_EN (0x3FFF0184UL)
-#define VI_ATTR_DEV_STATUS_BYTE (0x3FFF0189UL)
-#define VI_ATTR_FILE_APPEND_EN (0x3FFF0192UL)
-#define VI_ATTR_VXI_TRIG_SUPPORT (0x3FFF0194UL)
-#define VI_ATTR_TCPIP_ADDR (0xBFFF0195UL)
-#define VI_ATTR_TCPIP_HOSTNAME (0xBFFF0196UL)
-#define VI_ATTR_TCPIP_PORT (0x3FFF0197UL)
-#define VI_ATTR_TCPIP_DEVICE_NAME (0xBFFF0199UL)
-#define VI_ATTR_TCPIP_NODELAY (0x3FFF019AUL)
-#define VI_ATTR_TCPIP_KEEPALIVE (0x3FFF019BUL)
-#define VI_ATTR_4882_COMPLIANT (0x3FFF019FUL)
-#define VI_ATTR_USB_SERIAL_NUM (0xBFFF01A0UL)
-#define VI_ATTR_USB_INTFC_NUM (0x3FFF01A1UL)
-#define VI_ATTR_USB_PROTOCOL (0x3FFF01A7UL)
-#define VI_ATTR_USB_MAX_INTR_SIZE (0x3FFF01AFUL)
-#define VI_ATTR_PXI_DEV_NUM (0x3FFF0201UL)
-#define VI_ATTR_PXI_FUNC_NUM (0x3FFF0202UL)
-#define VI_ATTR_PXI_BUS_NUM (0x3FFF0205UL)
-#define VI_ATTR_PXI_CHASSIS (0x3FFF0206UL)
-#define VI_ATTR_PXI_SLOTPATH (0xBFFF0207UL)
-#define VI_ATTR_PXI_SLOT_LBUS_LEFT (0x3FFF0208UL)
-#define VI_ATTR_PXI_SLOT_LBUS_RIGHT (0x3FFF0209UL)
-#define VI_ATTR_PXI_TRIG_BUS (0x3FFF020AUL)
-#define VI_ATTR_PXI_STAR_TRIG_BUS (0x3FFF020BUL)
-#define VI_ATTR_PXI_STAR_TRIG_LINE (0x3FFF020CUL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR0 (0x3FFF0211UL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR1 (0x3FFF0212UL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR2 (0x3FFF0213UL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR3 (0x3FFF0214UL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR4 (0x3FFF0215UL)
-#define VI_ATTR_PXI_MEM_TYPE_BAR5 (0x3FFF0216UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR0 (0x3FFF0221UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR1 (0x3FFF0222UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR2 (0x3FFF0223UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR3 (0x3FFF0224UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR4 (0x3FFF0225UL)
-#define VI_ATTR_PXI_MEM_BASE_BAR5 (0x3FFF0226UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR0 (0x3FFF0231UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR1 (0x3FFF0232UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR2 (0x3FFF0233UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR3 (0x3FFF0234UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR4 (0x3FFF0235UL)
-#define VI_ATTR_PXI_MEM_SIZE_BAR5 (0x3FFF0236UL)
-#define VI_ATTR_PXI_IS_EXPRESS (0x3FFF0240UL)
-#define VI_ATTR_PXI_SLOT_LWIDTH (0x3FFF0241UL)
-#define VI_ATTR_PXI_MAX_LWIDTH (0x3FFF0242UL)
-#define VI_ATTR_PXI_ACTUAL_LWIDTH (0x3FFF0243UL)
-#define VI_ATTR_PXI_DSTAR_BUS (0x3FFF0244UL)
-#define VI_ATTR_PXI_DSTAR_SET (0x3FFF0245UL)
-
-#define VI_ATTR_JOB_ID (0x3FFF4006UL)
-#define VI_ATTR_EVENT_TYPE (0x3FFF4010UL)
-#define VI_ATTR_SIGP_STATUS_ID (0x3FFF4011UL)
-#define VI_ATTR_RECV_TRIG_ID (0x3FFF4012UL)
-#define VI_ATTR_INTR_STATUS_ID (0x3FFF4023UL)
-#define VI_ATTR_STATUS (0x3FFF4025UL)
-#define VI_ATTR_RET_COUNT_32 (0x3FFF4026UL)
-#define VI_ATTR_BUFFER (0x3FFF4027UL)
-#define VI_ATTR_RECV_INTR_LEVEL (0x3FFF4041UL)
-#define VI_ATTR_OPER_NAME (0xBFFF4042UL)
-#define VI_ATTR_GPIB_RECV_CIC_STATE (0x3FFF4193UL)
-#define VI_ATTR_RECV_TCPIP_ADDR (0xBFFF4198UL)
-#define VI_ATTR_USB_RECV_INTR_SIZE (0x3FFF41B0UL)
-#define VI_ATTR_USB_RECV_INTR_DATA (0xBFFF41B1UL)
-
-/*- Attributes (platform dependent size) ------------------------------------*/
-
-#if defined(_VI_INT64_UINT64_DEFINED) && defined(_VISA_ENV_IS_64_BIT)
-#define VI_ATTR_USER_DATA_64 (0x3FFF000AUL)
-#define VI_ATTR_RET_COUNT_64 (0x3FFF4028UL)
-#define VI_ATTR_USER_DATA (VI_ATTR_USER_DATA_64)
-#define VI_ATTR_RET_COUNT (VI_ATTR_RET_COUNT_64)
-#else
-#define VI_ATTR_USER_DATA (VI_ATTR_USER_DATA_32)
-#define VI_ATTR_RET_COUNT (VI_ATTR_RET_COUNT_32)
-#endif
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-#define VI_ATTR_WIN_BASE_ADDR_64 (0x3FFF009BUL)
-#define VI_ATTR_WIN_SIZE_64 (0x3FFF009CUL)
-#define VI_ATTR_MEM_BASE_64 (0x3FFF00D0UL)
-#define VI_ATTR_MEM_SIZE_64 (0x3FFF00D1UL)
-#endif
-#if defined(_VI_INT64_UINT64_DEFINED) && defined(_VISA_ENV_IS_64_BIT)
-#define VI_ATTR_WIN_BASE_ADDR (VI_ATTR_WIN_BASE_ADDR_64)
-#define VI_ATTR_WIN_SIZE (VI_ATTR_WIN_SIZE_64)
-#define VI_ATTR_MEM_BASE (VI_ATTR_MEM_BASE_64)
-#define VI_ATTR_MEM_SIZE (VI_ATTR_MEM_SIZE_64)
-#else
-#define VI_ATTR_WIN_BASE_ADDR (VI_ATTR_WIN_BASE_ADDR_32)
-#define VI_ATTR_WIN_SIZE (VI_ATTR_WIN_SIZE_32)
-#define VI_ATTR_MEM_BASE (VI_ATTR_MEM_BASE_32)
-#define VI_ATTR_MEM_SIZE (VI_ATTR_MEM_SIZE_32)
-#endif
-
-/*- Event Types -------------------------------------------------------------*/
-
-#define VI_EVENT_IO_COMPLETION (0x3FFF2009UL)
-#define VI_EVENT_TRIG (0xBFFF200AUL)
-#define VI_EVENT_SERVICE_REQ (0x3FFF200BUL)
-#define VI_EVENT_CLEAR (0x3FFF200DUL)
-#define VI_EVENT_EXCEPTION (0xBFFF200EUL)
-#define VI_EVENT_GPIB_CIC (0x3FFF2012UL)
-#define VI_EVENT_GPIB_TALK (0x3FFF2013UL)
-#define VI_EVENT_GPIB_LISTEN (0x3FFF2014UL)
-#define VI_EVENT_VXI_VME_SYSFAIL (0x3FFF201DUL)
-#define VI_EVENT_VXI_VME_SYSRESET (0x3FFF201EUL)
-#define VI_EVENT_VXI_SIGP (0x3FFF2020UL)
-#define VI_EVENT_VXI_VME_INTR (0xBFFF2021UL)
-#define VI_EVENT_PXI_INTR (0x3FFF2022UL)
-#define VI_EVENT_TCPIP_CONNECT (0x3FFF2036UL)
-#define VI_EVENT_USB_INTR (0x3FFF2037UL)
-
-#define VI_ALL_ENABLED_EVENTS (0x3FFF7FFFUL)
-
-/*- Completion and Error Codes ----------------------------------------------*/
-
-#define VI_SUCCESS_EVENT_EN (0x3FFF0002L) /* 3FFF0002, 1073676290 */
-#define VI_SUCCESS_EVENT_DIS (0x3FFF0003L) /* 3FFF0003, 1073676291 */
-#define VI_SUCCESS_QUEUE_EMPTY (0x3FFF0004L) /* 3FFF0004, 1073676292 */
-#define VI_SUCCESS_TERM_CHAR (0x3FFF0005L) /* 3FFF0005, 1073676293 */
-#define VI_SUCCESS_MAX_CNT (0x3FFF0006L) /* 3FFF0006, 1073676294 */
-#define VI_SUCCESS_DEV_NPRESENT (0x3FFF007DL) /* 3FFF007D, 1073676413 */
-#define VI_SUCCESS_TRIG_MAPPED (0x3FFF007EL) /* 3FFF007E, 1073676414 */
-#define VI_SUCCESS_QUEUE_NEMPTY (0x3FFF0080L) /* 3FFF0080, 1073676416 */
-#define VI_SUCCESS_NCHAIN (0x3FFF0098L) /* 3FFF0098, 1073676440 */
-#define VI_SUCCESS_NESTED_SHARED (0x3FFF0099L) /* 3FFF0099, 1073676441 */
-#define VI_SUCCESS_NESTED_EXCLUSIVE (0x3FFF009AL) /* 3FFF009A, 1073676442 */
-#define VI_SUCCESS_SYNC (0x3FFF009BL) /* 3FFF009B, 1073676443 */
-
-#define VI_WARN_QUEUE_OVERFLOW (0x3FFF000CL) /* 3FFF000C, 1073676300 */
-#define VI_WARN_CONFIG_NLOADED (0x3FFF0077L) /* 3FFF0077, 1073676407 */
-#define VI_WARN_NULL_OBJECT (0x3FFF0082L) /* 3FFF0082, 1073676418 */
-#define VI_WARN_NSUP_ATTR_STATE (0x3FFF0084L) /* 3FFF0084, 1073676420 */
-#define VI_WARN_UNKNOWN_STATUS (0x3FFF0085L) /* 3FFF0085, 1073676421 */
-#define VI_WARN_NSUP_BUF (0x3FFF0088L) /* 3FFF0088, 1073676424 */
-#define VI_WARN_EXT_FUNC_NIMPL (0x3FFF00A9L) /* 3FFF00A9, 1073676457 */
-
-#define VI_ERROR_SYSTEM_ERROR (_VI_ERROR+0x3FFF0000L) /* BFFF0000, -1073807360 */
-#define VI_ERROR_INV_OBJECT (_VI_ERROR+0x3FFF000EL) /* BFFF000E, -1073807346 */
-#define VI_ERROR_RSRC_LOCKED (_VI_ERROR+0x3FFF000FL) /* BFFF000F, -1073807345 */
-#define VI_ERROR_INV_EXPR (_VI_ERROR+0x3FFF0010L) /* BFFF0010, -1073807344 */
-#define VI_ERROR_RSRC_NFOUND (_VI_ERROR+0x3FFF0011L) /* BFFF0011, -1073807343 */
-#define VI_ERROR_INV_RSRC_NAME (_VI_ERROR+0x3FFF0012L) /* BFFF0012, -1073807342 */
-#define VI_ERROR_INV_ACC_MODE (_VI_ERROR+0x3FFF0013L) /* BFFF0013, -1073807341 */
-#define VI_ERROR_TMO (_VI_ERROR+0x3FFF0015L) /* BFFF0015, -1073807339 */
-#define VI_ERROR_CLOSING_FAILED (_VI_ERROR+0x3FFF0016L) /* BFFF0016, -1073807338 */
-#define VI_ERROR_INV_DEGREE (_VI_ERROR+0x3FFF001BL) /* BFFF001B, -1073807333 */
-#define VI_ERROR_INV_JOB_ID (_VI_ERROR+0x3FFF001CL) /* BFFF001C, -1073807332 */
-#define VI_ERROR_NSUP_ATTR (_VI_ERROR+0x3FFF001DL) /* BFFF001D, -1073807331 */
-#define VI_ERROR_NSUP_ATTR_STATE (_VI_ERROR+0x3FFF001EL) /* BFFF001E, -1073807330 */
-#define VI_ERROR_ATTR_READONLY (_VI_ERROR+0x3FFF001FL) /* BFFF001F, -1073807329 */
-#define VI_ERROR_INV_LOCK_TYPE (_VI_ERROR+0x3FFF0020L) /* BFFF0020, -1073807328 */
-#define VI_ERROR_INV_ACCESS_KEY (_VI_ERROR+0x3FFF0021L) /* BFFF0021, -1073807327 */
-#define VI_ERROR_INV_EVENT (_VI_ERROR+0x3FFF0026L) /* BFFF0026, -1073807322 */
-#define VI_ERROR_INV_MECH (_VI_ERROR+0x3FFF0027L) /* BFFF0027, -1073807321 */
-#define VI_ERROR_HNDLR_NINSTALLED (_VI_ERROR+0x3FFF0028L) /* BFFF0028, -1073807320 */
-#define VI_ERROR_INV_HNDLR_REF (_VI_ERROR+0x3FFF0029L) /* BFFF0029, -1073807319 */
-#define VI_ERROR_INV_CONTEXT (_VI_ERROR+0x3FFF002AL) /* BFFF002A, -1073807318 */
-#define VI_ERROR_QUEUE_OVERFLOW (_VI_ERROR+0x3FFF002DL) /* BFFF002D, -1073807315 */
-#define VI_ERROR_NENABLED (_VI_ERROR+0x3FFF002FL) /* BFFF002F, -1073807313 */
-#define VI_ERROR_ABORT (_VI_ERROR+0x3FFF0030L) /* BFFF0030, -1073807312 */
-#define VI_ERROR_RAW_WR_PROT_VIOL (_VI_ERROR+0x3FFF0034L) /* BFFF0034, -1073807308 */
-#define VI_ERROR_RAW_RD_PROT_VIOL (_VI_ERROR+0x3FFF0035L) /* BFFF0035, -1073807307 */
-#define VI_ERROR_OUTP_PROT_VIOL (_VI_ERROR+0x3FFF0036L) /* BFFF0036, -1073807306 */
-#define VI_ERROR_INP_PROT_VIOL (_VI_ERROR+0x3FFF0037L) /* BFFF0037, -1073807305 */
-#define VI_ERROR_BERR (_VI_ERROR+0x3FFF0038L) /* BFFF0038, -1073807304 */
-#define VI_ERROR_IN_PROGRESS (_VI_ERROR+0x3FFF0039L) /* BFFF0039, -1073807303 */
-#define VI_ERROR_INV_SETUP (_VI_ERROR+0x3FFF003AL) /* BFFF003A, -1073807302 */
-#define VI_ERROR_QUEUE_ERROR (_VI_ERROR+0x3FFF003BL) /* BFFF003B, -1073807301 */
-#define VI_ERROR_ALLOC (_VI_ERROR+0x3FFF003CL) /* BFFF003C, -1073807300 */
-#define VI_ERROR_INV_MASK (_VI_ERROR+0x3FFF003DL) /* BFFF003D, -1073807299 */
-#define VI_ERROR_IO (_VI_ERROR+0x3FFF003EL) /* BFFF003E, -1073807298 */
-#define VI_ERROR_INV_FMT (_VI_ERROR+0x3FFF003FL) /* BFFF003F, -1073807297 */
-#define VI_ERROR_NSUP_FMT (_VI_ERROR+0x3FFF0041L) /* BFFF0041, -1073807295 */
-#define VI_ERROR_LINE_IN_USE (_VI_ERROR+0x3FFF0042L) /* BFFF0042, -1073807294 */
-#define VI_ERROR_NSUP_MODE (_VI_ERROR+0x3FFF0046L) /* BFFF0046, -1073807290 */
-#define VI_ERROR_SRQ_NOCCURRED (_VI_ERROR+0x3FFF004AL) /* BFFF004A, -1073807286 */
-#define VI_ERROR_INV_SPACE (_VI_ERROR+0x3FFF004EL) /* BFFF004E, -1073807282 */
-#define VI_ERROR_INV_OFFSET (_VI_ERROR+0x3FFF0051L) /* BFFF0051, -1073807279 */
-#define VI_ERROR_INV_WIDTH (_VI_ERROR+0x3FFF0052L) /* BFFF0052, -1073807278 */
-#define VI_ERROR_NSUP_OFFSET (_VI_ERROR+0x3FFF0054L) /* BFFF0054, -1073807276 */
-#define VI_ERROR_NSUP_VAR_WIDTH (_VI_ERROR+0x3FFF0055L) /* BFFF0055, -1073807275 */
-#define VI_ERROR_WINDOW_NMAPPED (_VI_ERROR+0x3FFF0057L) /* BFFF0057, -1073807273 */
-#define VI_ERROR_RESP_PENDING (_VI_ERROR+0x3FFF0059L) /* BFFF0059, -1073807271 */
-#define VI_ERROR_NLISTENERS (_VI_ERROR+0x3FFF005FL) /* BFFF005F, -1073807265 */
-#define VI_ERROR_NCIC (_VI_ERROR+0x3FFF0060L) /* BFFF0060, -1073807264 */
-#define VI_ERROR_NSYS_CNTLR (_VI_ERROR+0x3FFF0061L) /* BFFF0061, -1073807263 */
-#define VI_ERROR_NSUP_OPER (_VI_ERROR+0x3FFF0067L) /* BFFF0067, -1073807257 */
-#define VI_ERROR_INTR_PENDING (_VI_ERROR+0x3FFF0068L) /* BFFF0068, -1073807256 */
-#define VI_ERROR_ASRL_PARITY (_VI_ERROR+0x3FFF006AL) /* BFFF006A, -1073807254 */
-#define VI_ERROR_ASRL_FRAMING (_VI_ERROR+0x3FFF006BL) /* BFFF006B, -1073807253 */
-#define VI_ERROR_ASRL_OVERRUN (_VI_ERROR+0x3FFF006CL) /* BFFF006C, -1073807252 */
-#define VI_ERROR_TRIG_NMAPPED (_VI_ERROR+0x3FFF006EL) /* BFFF006E, -1073807250 */
-#define VI_ERROR_NSUP_ALIGN_OFFSET (_VI_ERROR+0x3FFF0070L) /* BFFF0070, -1073807248 */
-#define VI_ERROR_USER_BUF (_VI_ERROR+0x3FFF0071L) /* BFFF0071, -1073807247 */
-#define VI_ERROR_RSRC_BUSY (_VI_ERROR+0x3FFF0072L) /* BFFF0072, -1073807246 */
-#define VI_ERROR_NSUP_WIDTH (_VI_ERROR+0x3FFF0076L) /* BFFF0076, -1073807242 */
-#define VI_ERROR_INV_PARAMETER (_VI_ERROR+0x3FFF0078L) /* BFFF0078, -1073807240 */
-#define VI_ERROR_INV_PROT (_VI_ERROR+0x3FFF0079L) /* BFFF0079, -1073807239 */
-#define VI_ERROR_INV_SIZE (_VI_ERROR+0x3FFF007BL) /* BFFF007B, -1073807237 */
-#define VI_ERROR_WINDOW_MAPPED (_VI_ERROR+0x3FFF0080L) /* BFFF0080, -1073807232 */
-#define VI_ERROR_NIMPL_OPER (_VI_ERROR+0x3FFF0081L) /* BFFF0081, -1073807231 */
-#define VI_ERROR_INV_LENGTH (_VI_ERROR+0x3FFF0083L) /* BFFF0083, -1073807229 */
-#define VI_ERROR_INV_MODE (_VI_ERROR+0x3FFF0091L) /* BFFF0091, -1073807215 */
-#define VI_ERROR_SESN_NLOCKED (_VI_ERROR+0x3FFF009CL) /* BFFF009C, -1073807204 */
-#define VI_ERROR_MEM_NSHARED (_VI_ERROR+0x3FFF009DL) /* BFFF009D, -1073807203 */
-#define VI_ERROR_LIBRARY_NFOUND (_VI_ERROR+0x3FFF009EL) /* BFFF009E, -1073807202 */
-#define VI_ERROR_NSUP_INTR (_VI_ERROR+0x3FFF009FL) /* BFFF009F, -1073807201 */
-#define VI_ERROR_INV_LINE (_VI_ERROR+0x3FFF00A0L) /* BFFF00A0, -1073807200 */
-#define VI_ERROR_FILE_ACCESS (_VI_ERROR+0x3FFF00A1L) /* BFFF00A1, -1073807199 */
-#define VI_ERROR_FILE_IO (_VI_ERROR+0x3FFF00A2L) /* BFFF00A2, -1073807198 */
-#define VI_ERROR_NSUP_LINE (_VI_ERROR+0x3FFF00A3L) /* BFFF00A3, -1073807197 */
-#define VI_ERROR_NSUP_MECH (_VI_ERROR+0x3FFF00A4L) /* BFFF00A4, -1073807196 */
-#define VI_ERROR_INTF_NUM_NCONFIG (_VI_ERROR+0x3FFF00A5L) /* BFFF00A5, -1073807195 */
-#define VI_ERROR_CONN_LOST (_VI_ERROR+0x3FFF00A6L) /* BFFF00A6, -1073807194 */
-#define VI_ERROR_MACHINE_NAVAIL (_VI_ERROR+0x3FFF00A7L) /* BFFF00A7, -1073807193 */
-#define VI_ERROR_NPERMISSION (_VI_ERROR+0x3FFF00A8L) /* BFFF00A8, -1073807192 */
-
-/*- Other VISA Definitions --------------------------------------------------*/
-
-#define VI_VERSION_MAJOR(ver) ((((ViVersion)ver) & 0xFFF00000UL) >> 20)
-#define VI_VERSION_MINOR(ver) ((((ViVersion)ver) & 0x000FFF00UL) >> 8)
-#define VI_VERSION_SUBMINOR(ver) ((((ViVersion)ver) & 0x000000FFUL) )
-
-#define VI_FIND_BUFLEN (256)
-
-#define VI_INTF_GPIB (1)
-#define VI_INTF_VXI (2)
-#define VI_INTF_GPIB_VXI (3)
-#define VI_INTF_ASRL (4)
-#define VI_INTF_PXI (5)
-#define VI_INTF_TCPIP (6)
-#define VI_INTF_USB (7)
-
-#define VI_PROT_NORMAL (1)
-#define VI_PROT_FDC (2)
-#define VI_PROT_HS488 (3)
-#define VI_PROT_4882_STRS (4)
-#define VI_PROT_USBTMC_VENDOR (5)
-
-#define VI_FDC_NORMAL (1)
-#define VI_FDC_STREAM (2)
-
-#define VI_LOCAL_SPACE (0)
-#define VI_A16_SPACE (1)
-#define VI_A24_SPACE (2)
-#define VI_A32_SPACE (3)
-#define VI_A64_SPACE (4)
-#define VI_PXI_ALLOC_SPACE (9)
-#define VI_PXI_CFG_SPACE (10)
-#define VI_PXI_BAR0_SPACE (11)
-#define VI_PXI_BAR1_SPACE (12)
-#define VI_PXI_BAR2_SPACE (13)
-#define VI_PXI_BAR3_SPACE (14)
-#define VI_PXI_BAR4_SPACE (15)
-#define VI_PXI_BAR5_SPACE (16)
-#define VI_OPAQUE_SPACE (0xFFFF)
-
-#define VI_UNKNOWN_LA (-1)
-#define VI_UNKNOWN_SLOT (-1)
-#define VI_UNKNOWN_LEVEL (-1)
-#define VI_UNKNOWN_CHASSIS (-1)
-
-#define VI_QUEUE (1)
-#define VI_HNDLR (2)
-#define VI_SUSPEND_HNDLR (4)
-#define VI_ALL_MECH (0xFFFF)
-
-#define VI_ANY_HNDLR (0)
-
-#define VI_TRIG_ALL (-2)
-#define VI_TRIG_SW (-1)
-#define VI_TRIG_TTL0 (0)
-#define VI_TRIG_TTL1 (1)
-#define VI_TRIG_TTL2 (2)
-#define VI_TRIG_TTL3 (3)
-#define VI_TRIG_TTL4 (4)
-#define VI_TRIG_TTL5 (5)
-#define VI_TRIG_TTL6 (6)
-#define VI_TRIG_TTL7 (7)
-#define VI_TRIG_ECL0 (8)
-#define VI_TRIG_ECL1 (9)
-#define VI_TRIG_PANEL_IN (27)
-#define VI_TRIG_PANEL_OUT (28)
-
-#define VI_TRIG_PROT_DEFAULT (0)
-#define VI_TRIG_PROT_ON (1)
-#define VI_TRIG_PROT_OFF (2)
-#define VI_TRIG_PROT_SYNC (5)
-#define VI_TRIG_PROT_RESERVE (6)
-#define VI_TRIG_PROT_UNRESERVE (7)
-
-#define VI_READ_BUF (1)
-#define VI_WRITE_BUF (2)
-#define VI_READ_BUF_DISCARD (4)
-#define VI_WRITE_BUF_DISCARD (8)
-#define VI_IO_IN_BUF (16)
-#define VI_IO_OUT_BUF (32)
-#define VI_IO_IN_BUF_DISCARD (64)
-#define VI_IO_OUT_BUF_DISCARD (128)
-
-#define VI_FLUSH_ON_ACCESS (1)
-#define VI_FLUSH_WHEN_FULL (2)
-#define VI_FLUSH_DISABLE (3)
-
-#define VI_NMAPPED (1)
-#define VI_USE_OPERS (2)
-#define VI_DEREF_ADDR (3)
-#define VI_DEREF_ADDR_BYTE_SWAP (4)
-
-#define VI_TMO_IMMEDIATE (0L)
-#define VI_TMO_INFINITE (0xFFFFFFFFUL)
-
-#define VI_NO_LOCK (0)
-#define VI_EXCLUSIVE_LOCK (1)
-#define VI_SHARED_LOCK (2)
-#define VI_LOAD_CONFIG (4)
-
-#define VI_NO_SEC_ADDR (0xFFFF)
-
-#define VI_ASRL_PAR_NONE (0)
-#define VI_ASRL_PAR_ODD (1)
-#define VI_ASRL_PAR_EVEN (2)
-#define VI_ASRL_PAR_MARK (3)
-#define VI_ASRL_PAR_SPACE (4)
-
-#define VI_ASRL_STOP_ONE (10)
-#define VI_ASRL_STOP_ONE5 (15)
-#define VI_ASRL_STOP_TWO (20)
-
-#define VI_ASRL_FLOW_NONE (0)
-#define VI_ASRL_FLOW_XON_XOFF (1)
-#define VI_ASRL_FLOW_RTS_CTS (2)
-#define VI_ASRL_FLOW_DTR_DSR (4)
-
-#define VI_ASRL_END_NONE (0)
-#define VI_ASRL_END_LAST_BIT (1)
-#define VI_ASRL_END_TERMCHAR (2)
-#define VI_ASRL_END_BREAK (3)
-
-#define VI_STATE_ASSERTED (1)
-#define VI_STATE_UNASSERTED (0)
-#define VI_STATE_UNKNOWN (-1)
-
-#define VI_BIG_ENDIAN (0)
-#define VI_LITTLE_ENDIAN (1)
-
-#define VI_DATA_PRIV (0)
-#define VI_DATA_NPRIV (1)
-#define VI_PROG_PRIV (2)
-#define VI_PROG_NPRIV (3)
-#define VI_BLCK_PRIV (4)
-#define VI_BLCK_NPRIV (5)
-#define VI_D64_PRIV (6)
-#define VI_D64_NPRIV (7)
-
-#define VI_WIDTH_8 (1)
-#define VI_WIDTH_16 (2)
-#define VI_WIDTH_32 (4)
-#define VI_WIDTH_64 (8)
-
-#define VI_GPIB_REN_DEASSERT (0)
-#define VI_GPIB_REN_ASSERT (1)
-#define VI_GPIB_REN_DEASSERT_GTL (2)
-#define VI_GPIB_REN_ASSERT_ADDRESS (3)
-#define VI_GPIB_REN_ASSERT_LLO (4)
-#define VI_GPIB_REN_ASSERT_ADDRESS_LLO (5)
-#define VI_GPIB_REN_ADDRESS_GTL (6)
-
-#define VI_GPIB_ATN_DEASSERT (0)
-#define VI_GPIB_ATN_ASSERT (1)
-#define VI_GPIB_ATN_DEASSERT_HANDSHAKE (2)
-#define VI_GPIB_ATN_ASSERT_IMMEDIATE (3)
-
-#define VI_GPIB_HS488_DISABLED (0)
-#define VI_GPIB_HS488_NIMPL (-1)
-
-#define VI_GPIB_UNADDRESSED (0)
-#define VI_GPIB_TALKER (1)
-#define VI_GPIB_LISTENER (2)
-
-#define VI_VXI_CMD16 (0x0200)
-#define VI_VXI_CMD16_RESP16 (0x0202)
-#define VI_VXI_RESP16 (0x0002)
-#define VI_VXI_CMD32 (0x0400)
-#define VI_VXI_CMD32_RESP16 (0x0402)
-#define VI_VXI_CMD32_RESP32 (0x0404)
-#define VI_VXI_RESP32 (0x0004)
-
-#define VI_ASSERT_SIGNAL (-1)
-#define VI_ASSERT_USE_ASSIGNED (0)
-#define VI_ASSERT_IRQ1 (1)
-#define VI_ASSERT_IRQ2 (2)
-#define VI_ASSERT_IRQ3 (3)
-#define VI_ASSERT_IRQ4 (4)
-#define VI_ASSERT_IRQ5 (5)
-#define VI_ASSERT_IRQ6 (6)
-#define VI_ASSERT_IRQ7 (7)
-
-#define VI_UTIL_ASSERT_SYSRESET (1)
-#define VI_UTIL_ASSERT_SYSFAIL (2)
-#define VI_UTIL_DEASSERT_SYSFAIL (3)
-
-#define VI_VXI_CLASS_MEMORY (0)
-#define VI_VXI_CLASS_EXTENDED (1)
-#define VI_VXI_CLASS_MESSAGE (2)
-#define VI_VXI_CLASS_REGISTER (3)
-#define VI_VXI_CLASS_OTHER (4)
-
-#define VI_PXI_ADDR_NONE (0)
-#define VI_PXI_ADDR_MEM (1)
-#define VI_PXI_ADDR_IO (2)
-#define VI_PXI_ADDR_CFG (3)
-
-#define VI_TRIG_UNKNOWN (-1)
-
-#define VI_PXI_LBUS_UNKNOWN (-1)
-#define VI_PXI_LBUS_NONE (0)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_0 (1000)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_1 (1001)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_2 (1002)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_3 (1003)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_4 (1004)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_5 (1005)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_6 (1006)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_7 (1007)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_8 (1008)
-#define VI_PXI_LBUS_STAR_TRIG_BUS_9 (1009)
-#define VI_PXI_STAR_TRIG_CONTROLLER (1413)
-
-/*- Backward Compatibility Macros -------------------------------------------*/
-
-#define viGetDefaultRM(vi) viOpenDefaultRM(vi)
-#define VI_ERROR_INV_SESSION (VI_ERROR_INV_OBJECT)
-#define VI_INFINITE (VI_TMO_INFINITE)
-#define VI_NORMAL (VI_PROT_NORMAL)
-#define VI_FDC (VI_PROT_FDC)
-#define VI_HS488 (VI_PROT_HS488)
-#define VI_ASRL488 (VI_PROT_4882_STRS)
-#define VI_ASRL_IN_BUF (VI_IO_IN_BUF)
-#define VI_ASRL_OUT_BUF (VI_IO_OUT_BUF)
-#define VI_ASRL_IN_BUF_DISCARD (VI_IO_IN_BUF_DISCARD)
-#define VI_ASRL_OUT_BUF_DISCARD (VI_IO_OUT_BUF_DISCARD)
-
-/*- National Instruments ----------------------------------------------------*/
-
-#define VI_INTF_RIO (8)
-#define VI_INTF_FIREWIRE (9)
-
-#define VI_ATTR_SYNC_MXI_ALLOW_EN (0x3FFF0161UL) /* ViBoolean, read/write */
-
-/* This is for VXI SERVANT resources */
-
-#define VI_EVENT_VXI_DEV_CMD (0xBFFF200FUL)
-#define VI_ATTR_VXI_DEV_CMD_TYPE (0x3FFF4037UL) /* ViInt16, read-only */
-#define VI_ATTR_VXI_DEV_CMD_VALUE (0x3FFF4038UL) /* ViUInt32, read-only */
-
-#define VI_VXI_DEV_CMD_TYPE_16 (16)
-#define VI_VXI_DEV_CMD_TYPE_32 (32)
-
-ViStatus _VI_FUNC viVxiServantResponse(ViSession vi, ViInt16 mode, ViUInt32 resp);
-/* mode values include VI_VXI_RESP16, VI_VXI_RESP32, and the next 2 values */
-#define VI_VXI_RESP_NONE (0)
-#define VI_VXI_RESP_PROT_ERROR (-1)
-
-/* This allows extended Serial support on Win32 and on NI ENET Serial products */
-
-#define VI_ATTR_ASRL_DISCARD_NULL (0x3FFF00B0UL)
-#define VI_ATTR_ASRL_CONNECTED (0x3FFF01BBUL)
-#define VI_ATTR_ASRL_BREAK_STATE (0x3FFF01BCUL)
-#define VI_ATTR_ASRL_BREAK_LEN (0x3FFF01BDUL)
-#define VI_ATTR_ASRL_ALLOW_TRANSMIT (0x3FFF01BEUL)
-#define VI_ATTR_ASRL_WIRE_MODE (0x3FFF01BFUL)
-
-#define VI_ASRL_WIRE_485_4 (0)
-#define VI_ASRL_WIRE_485_2_DTR_ECHO (1)
-#define VI_ASRL_WIRE_485_2_DTR_CTRL (2)
-#define VI_ASRL_WIRE_485_2_AUTO (3)
-#define VI_ASRL_WIRE_232_DTE (128)
-#define VI_ASRL_WIRE_232_DCE (129)
-#define VI_ASRL_WIRE_232_AUTO (130)
-
-#define VI_EVENT_ASRL_BREAK (0x3FFF2023UL)
-#define VI_EVENT_ASRL_CTS (0x3FFF2029UL)
-#define VI_EVENT_ASRL_DSR (0x3FFF202AUL)
-#define VI_EVENT_ASRL_DCD (0x3FFF202CUL)
-#define VI_EVENT_ASRL_RI (0x3FFF202EUL)
-#define VI_EVENT_ASRL_CHAR (0x3FFF2035UL)
-#define VI_EVENT_ASRL_TERMCHAR (0x3FFF2024UL)
-
-/* This is for fast viPeek/viPoke macros */
-
-#if defined(NIVISA_PEEKPOKE)
-
-#if defined(NIVISA_PEEKPOKE_SUPP)
-#undef NIVISA_PEEKPOKE_SUPP
-#endif
-
-#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) && !defined(_NI_mswin16_)
-/* This macro is supported for all Win32 compilers, including CVI. */
-#define NIVISA_PEEKPOKE_SUPP
-#elif (defined(_WINDOWS) || defined(_Windows)) && !defined(_CVI_) && !defined(_NI_mswin16_)
-/* This macro is supported for Borland and Microsoft compilers on Win16, but not CVI. */
-#define NIVISA_PEEKPOKE_SUPP
-#elif defined(_CVI_) && defined(_NI_sparc_)
-/* This macro is supported for Solaris 1 and 2, from CVI only. */
-#define NIVISA_PEEKPOKE_SUPP
-#else
-/* This macro is not supported on other platforms. */
-#endif
-
-#if defined(NIVISA_PEEKPOKE_SUPP)
-
-extern ViBoolean NI_viImplVISA1;
-ViStatus _VI_FUNC NI_viOpenDefaultRM (ViPSession vi);
-#define viOpenDefaultRM(vi) NI_viOpenDefaultRM(vi)
-
-#define viPeek8(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((ViPUInt8)(val)) = *((volatile ViUInt8 _VI_PTR)(addr))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPeek8)((vi),(addr),(val)); \
- } \
- }
-
-#define viPoke8(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((volatile ViUInt8 _VI_PTR)(addr)) = ((ViUInt8)(val))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPoke8)((vi),(addr),(val)); \
- } \
- }
-
-#define viPeek16(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((ViPUInt16)(val)) = *((volatile ViUInt16 _VI_PTR)(addr))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPeek16)((vi),(addr),(val)); \
- } \
- }
-
-#define viPoke16(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((volatile ViUInt16 _VI_PTR)(addr)) = ((ViUInt16)(val))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPoke16)((vi),(addr),(val)); \
- } \
- }
-
-#define viPeek32(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((ViPUInt32)(val)) = *((volatile ViUInt32 _VI_PTR)(addr))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPeek32)((vi),(addr),(val)); \
- } \
- }
-
-#define viPoke32(vi,addr,val) \
- { \
- if ((NI_viImplVISA1) && (*((ViPUInt32)(vi)))) \
- { \
- do (*((volatile ViUInt32 _VI_PTR)(addr)) = ((ViUInt32)(val))); \
- while (**((volatile ViUInt8 _VI_PTR _VI_PTR)(vi)) & 0x10); \
- } \
- else \
- { \
- (viPoke32)((vi),(addr),(val)); \
- } \
- }
-
-#endif
-
-#endif
-
-#if defined(NIVISA_PXI) || defined(PXISAVISA_PXI)
-
-#if 0
-/* The following 2 attributes were incorrectly implemented in earlier
- versions of NI-VISA. You should now query VI_ATTR_MANF_ID or
- VI_ATTR_MODEL_CODE. Those attributes contain sub-vendor information
- when it exists. To get both the actual primary and subvendor codes
- from the device, you should call viIn16 using VI_PXI_CFG_SPACE. */
-#define VI_ATTR_PXI_SUB_MANF_ID (0x3FFF0203UL)
-#define VI_ATTR_PXI_SUB_MODEL_CODE (0x3FFF0204UL)
-#endif
-
-#define VI_ATTR_PXI_SRC_TRIG_BUS (0x3FFF020DUL)
-#define VI_ATTR_PXI_DEST_TRIG_BUS (0x3FFF020EUL)
-
-#define VI_ATTR_PXI_RECV_INTR_SEQ (0x3FFF4240UL)
-#define VI_ATTR_PXI_RECV_INTR_DATA (0x3FFF4241UL)
-
-#endif
-
-#if defined(NIVISA_USB)
-
-#define VI_ATTR_USB_BULK_OUT_PIPE (0x3FFF01A2UL)
-#define VI_ATTR_USB_BULK_IN_PIPE (0x3FFF01A3UL)
-#define VI_ATTR_USB_INTR_IN_PIPE (0x3FFF01A4UL)
-#define VI_ATTR_USB_CLASS (0x3FFF01A5UL)
-#define VI_ATTR_USB_SUBCLASS (0x3FFF01A6UL)
-#define VI_ATTR_USB_ALT_SETTING (0x3FFF01A8UL)
-#define VI_ATTR_USB_END_IN (0x3FFF01A9UL)
-#define VI_ATTR_USB_NUM_INTFCS (0x3FFF01AAUL)
-#define VI_ATTR_USB_NUM_PIPES (0x3FFF01ABUL)
-#define VI_ATTR_USB_BULK_OUT_STATUS (0x3FFF01ACUL)
-#define VI_ATTR_USB_BULK_IN_STATUS (0x3FFF01ADUL)
-#define VI_ATTR_USB_INTR_IN_STATUS (0x3FFF01AEUL)
-#define VI_ATTR_USB_CTRL_PIPE (0x3FFF01B0UL)
-
-#define VI_USB_PIPE_STATE_UNKNOWN (-1)
-#define VI_USB_PIPE_READY (0)
-#define VI_USB_PIPE_STALLED (1)
-
-#define VI_USB_END_NONE (0)
-#define VI_USB_END_SHORT (4)
-#define VI_USB_END_SHORT_OR_COUNT (5)
-
-#endif
-
-#define VI_ATTR_FIREWIRE_DEST_UPPER_OFFSET (0x3FFF01F0UL)
-#define VI_ATTR_FIREWIRE_SRC_UPPER_OFFSET (0x3FFF01F1UL)
-#define VI_ATTR_FIREWIRE_WIN_UPPER_OFFSET (0x3FFF01F2UL)
-#define VI_ATTR_FIREWIRE_VENDOR_ID (0x3FFF01F3UL)
-#define VI_ATTR_FIREWIRE_LOWER_CHIP_ID (0x3FFF01F4UL)
-#define VI_ATTR_FIREWIRE_UPPER_CHIP_ID (0x3FFF01F5UL)
-
-#define VI_FIREWIRE_DFLT_SPACE (5)
-
-#if defined(__cplusplus) || defined(__cplusplus__)
- }
-#endif
-
-#endif
-
-/*- The End -----------------------------------------------------------------*/
diff --git a/aos/externals/WPILib/WPILib/visa/visatype.h b/aos/externals/WPILib/WPILib/visa/visatype.h
deleted file mode 100644
index ef089dd..0000000
--- a/aos/externals/WPILib/WPILib/visa/visatype.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*---------------------------------------------------------------------------*/
-/* Distributed by IVI Foundation Inc. */
-/* */
-/* Do not modify the contents of this file. */
-/*---------------------------------------------------------------------------*/
-/* */
-/* Title : VISATYPE.H */
-/* Date : 04-14-2006 */
-/* Purpose : Fundamental VISA data types and macro definitions */
-/* */
-/*---------------------------------------------------------------------------*/
-
-#ifndef __VISATYPE_HEADER__
-#define __VISATYPE_HEADER__
-
-#if defined(_WIN64)
-#define _VI_FAR
-#define _VI_FUNC __fastcall
-#define _VI_FUNCC __fastcall
-#define _VI_FUNCH __fastcall
-#define _VI_SIGNED signed
-#elif (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) && !defined(_NI_mswin16_)
-#define _VI_FAR
-#define _VI_FUNC __stdcall
-#define _VI_FUNCC __cdecl
-#define _VI_FUNCH __stdcall
-#define _VI_SIGNED signed
-#elif defined(_CVI_) && defined(_NI_i386_)
-#define _VI_FAR
-#define _VI_FUNC _pascal
-#define _VI_FUNCC
-#define _VI_FUNCH _pascal
-#define _VI_SIGNED signed
-#elif (defined(_WINDOWS) || defined(_Windows)) && !defined(_NI_mswin16_)
-#define _VI_FAR _far
-#define _VI_FUNC _far _pascal _export
-#define _VI_FUNCC _far _cdecl _export
-#define _VI_FUNCH _far _pascal
-#define _VI_SIGNED signed
-#elif (defined(hpux) || defined(__hpux)) && (defined(__cplusplus) || defined(__cplusplus__))
-#define _VI_FAR
-#define _VI_FUNC
-#define _VI_FUNCC
-#define _VI_FUNCH
-#define _VI_SIGNED
-#else
-#define _VI_FAR
-#define _VI_FUNC
-#define _VI_FUNCC
-#define _VI_FUNCH
-#define _VI_SIGNED signed
-#endif
-
-#define _VI_ERROR (-2147483647L-1) /* 0x80000000 */
-#define _VI_PTR _VI_FAR *
-
-/*- VISA Types --------------------------------------------------------------*/
-
-#ifndef _VI_INT64_UINT64_DEFINED
-#if defined(_WIN64) || ((defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) && !defined(_NI_mswin16_))
-#if (defined(_MSC_VER) && (_MSC_VER >= 1200)) || (defined(_CVI_) && (_CVI_ >= 700)) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520))
-typedef unsigned __int64 ViUInt64;
-typedef _VI_SIGNED __int64 ViInt64;
-#define _VI_INT64_UINT64_DEFINED
-#if defined(_WIN64)
-#define _VISA_ENV_IS_64_BIT
-#else
-/* This is a 32-bit OS, not a 64-bit OS */
-#endif
-#endif
-#elif defined(__GNUC__) && (__GNUC__ >= 3)
-#include <limits.h>
-#include <sys/types.h>
-typedef u_int64_t ViUInt64;
-typedef int64_t ViInt64;
-#define _VI_INT64_UINT64_DEFINED
-#if defined(LONG_MAX) && (LONG_MAX > 0x7FFFFFFFL)
-#define _VISA_ENV_IS_64_BIT
-#else
-/* This is a 32-bit OS, not a 64-bit OS */
-#endif
-#else
-/* This platform does not support 64-bit types */
-#endif
-#endif
-
-#if defined(_VI_INT64_UINT64_DEFINED)
-typedef ViUInt64 _VI_PTR ViPUInt64;
-typedef ViUInt64 _VI_PTR ViAUInt64;
-typedef ViInt64 _VI_PTR ViPInt64;
-typedef ViInt64 _VI_PTR ViAInt64;
-#endif
-
-#if defined(LONG_MAX) && (LONG_MAX > 0x7FFFFFFFL)
-typedef unsigned int ViUInt32;
-typedef _VI_SIGNED int ViInt32;
-#else
-typedef unsigned long ViUInt32;
-typedef _VI_SIGNED long ViInt32;
-#endif
-
-typedef ViUInt32 _VI_PTR ViPUInt32;
-typedef ViUInt32 _VI_PTR ViAUInt32;
-typedef ViInt32 _VI_PTR ViPInt32;
-typedef ViInt32 _VI_PTR ViAInt32;
-
-typedef unsigned short ViUInt16;
-typedef ViUInt16 _VI_PTR ViPUInt16;
-typedef ViUInt16 _VI_PTR ViAUInt16;
-
-typedef _VI_SIGNED short ViInt16;
-typedef ViInt16 _VI_PTR ViPInt16;
-typedef ViInt16 _VI_PTR ViAInt16;
-
-typedef unsigned char ViUInt8;
-typedef ViUInt8 _VI_PTR ViPUInt8;
-typedef ViUInt8 _VI_PTR ViAUInt8;
-
-typedef _VI_SIGNED char ViInt8;
-typedef ViInt8 _VI_PTR ViPInt8;
-typedef ViInt8 _VI_PTR ViAInt8;
-
-typedef char ViChar;
-typedef ViChar _VI_PTR ViPChar;
-typedef ViChar _VI_PTR ViAChar;
-
-typedef unsigned char ViByte;
-typedef ViByte _VI_PTR ViPByte;
-typedef ViByte _VI_PTR ViAByte;
-
-typedef void _VI_PTR ViAddr;
-typedef ViAddr _VI_PTR ViPAddr;
-typedef ViAddr _VI_PTR ViAAddr;
-
-typedef float ViReal32;
-typedef ViReal32 _VI_PTR ViPReal32;
-typedef ViReal32 _VI_PTR ViAReal32;
-
-typedef double ViReal64;
-typedef ViReal64 _VI_PTR ViPReal64;
-typedef ViReal64 _VI_PTR ViAReal64;
-
-typedef ViPByte ViBuf;
-typedef ViPByte ViPBuf;
-typedef ViPByte _VI_PTR ViABuf;
-
-typedef ViPChar ViString;
-typedef ViPChar ViPString;
-typedef ViPChar _VI_PTR ViAString;
-
-typedef ViString ViRsrc;
-typedef ViString ViPRsrc;
-typedef ViString _VI_PTR ViARsrc;
-
-typedef ViUInt16 ViBoolean;
-typedef ViBoolean _VI_PTR ViPBoolean;
-typedef ViBoolean _VI_PTR ViABoolean;
-
-typedef ViInt32 ViStatus;
-typedef ViStatus _VI_PTR ViPStatus;
-typedef ViStatus _VI_PTR ViAStatus;
-
-typedef ViUInt32 ViVersion;
-typedef ViVersion _VI_PTR ViPVersion;
-typedef ViVersion _VI_PTR ViAVersion;
-
-typedef ViUInt32 ViObject;
-typedef ViObject _VI_PTR ViPObject;
-typedef ViObject _VI_PTR ViAObject;
-
-typedef ViObject ViSession;
-typedef ViSession _VI_PTR ViPSession;
-typedef ViSession _VI_PTR ViASession;
-
-typedef ViUInt32 ViAttr;
-
-#ifndef _VI_CONST_STRING_DEFINED
-typedef const ViChar * ViConstString;
-#define _VI_CONST_STRING_DEFINED
-#endif
-
-/*- Completion and Error Codes ----------------------------------------------*/
-
-#define VI_SUCCESS (0L)
-
-/*- Other VISA Definitions --------------------------------------------------*/
-
-#define VI_NULL (0)
-
-#define VI_TRUE (1)
-#define VI_FALSE (0)
-
-/*- Backward Compatibility Macros -------------------------------------------*/
-
-#define VISAFN _VI_FUNC
-#define ViPtr _VI_PTR
-
-#endif
-
-/*- The End -----------------------------------------------------------------*/
-
diff --git a/aos/externals/WPILib/make.rb b/aos/externals/WPILib/make.rb
deleted file mode 100644
index a22969d..0000000
--- a/aos/externals/WPILib/make.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-
-$excludes = [/Vision2009/,/CInterfaces/,/NetworkTables/,/SmartDashboard/,/Commands/,/Buttons/,/Preferences/,/swp$/]
-
-files = `find WPILib`.split(/\n/).collect do |file|
- if(file =~ /.*\.cpp/)
- file.gsub!(/cpp\Z/,"o")
- $excludes.each do |exclude|
- if(file && file =~ exclude)
- file = nil
- end
- end
- file
- end
-end.compact
-
-make = "make -f ../module.mk"
-defines = "DEFINES=-D\'SVN_REV=\\\"2262\\\"\'"
-added_includes = "ADDED_INCLUDES=-I./WPILib/"
-outfile = "wpilib.out PROJECT_TARGET=wpilib.out"
-objects = "PROJECT_OBJECTS=\"#{files.join(" ")}\""
-
-cmd = "#{make} #{outfile} #{added_includes} #{defines} #{objects}"
-system cmd
diff --git a/aos/linux_code/README.txt b/aos/linux_code/README.txt
index 143cefb..65feb21 100644
--- a/aos/linux_code/README.txt
+++ b/aos/linux_code/README.txt
@@ -1,9 +1,9 @@
-see ../README.txt for stuff affecting crio and linux code
+see ../README.txt for stuff affecting all code
The folder is called linux_code because it mainly deals with code that uses the queue system, which only works under GNU/Linux for a variety of reasons, some fundamental (futexes) and some because nobody bothers to fix them.
The layout is designed with multiple linux boxes in mind.
-The code for the linux box that talks the cRIO etc is in ../prime/.
+The code for the linux box that sends motor outputs etc is in ../prime/.
[NOTES]
Any code should call aos::Init() (or aos::InitNRT() for processes that don't need to be realtime) before making any calls to any of the aos functions.
diff --git a/aos/linux_code/starter/netconsole.cc b/aos/linux_code/starter/netconsole.cc
deleted file mode 100644
index c4ca5b9..0000000
--- a/aos/linux_code/starter/netconsole.cc
+++ /dev/null
@@ -1,233 +0,0 @@
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <sys/stat.h>
-
-#include "aos/common/logging/logging_impl.h"
-#include "aos/common/util/inet_addr.h"
-#include "aos/linux_code/configuration.h"
-#include "aos/common/network_port.h"
-#include "aos/linux_code/init.h"
-#include "aos/common/byteorder.h"
-
-namespace aos {
-namespace {
-
-struct FDsToCopy {
- const int input;
- const int output;
-
- const struct sockaddr_in *const interface_address;
- const struct sockaddr_in *const source_address;
-};
-
-void *FDCopyThread(void *to_copy_in) {
- FDsToCopy *to_copy = static_cast<FDsToCopy *>(to_copy_in);
-
- char buffer[32768];
- ssize_t position = 0;
- while (true) {
- CHECK_GE(position, 0);
- CHECK_LE(position, static_cast<ssize_t>(sizeof(buffer)));
- if (position != sizeof(buffer)) {
- ssize_t read_bytes;
- bool good_data = true;
- if (to_copy->interface_address != nullptr ||
- to_copy->source_address != nullptr) {
- char control_buffer[0x100];
- struct msghdr header;
- memset(static_cast<void *>(&header), 0, sizeof(header));
- header.msg_control = control_buffer;
- header.msg_controllen = sizeof(control_buffer);
- struct iovec iovecs[1];
- iovecs[0].iov_base = buffer + position;
- iovecs[0].iov_len = sizeof(buffer) - position;
- header.msg_iov = iovecs;
- header.msg_iovlen = sizeof(iovecs) / sizeof(iovecs[0]);
- struct sockaddr_in sender_address;
- header.msg_name = &sender_address;
- header.msg_namelen = sizeof(sender_address);
-
- read_bytes = recvmsg(to_copy->input, &header, 0);
- if (read_bytes != -1) {
- if (to_copy->interface_address != nullptr) {
- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR(&header);
- cmsg != NULL;
- cmsg = CMSG_NXTHDR(&header, cmsg)) {
- if (cmsg->cmsg_level == IPPROTO_IP &&
- cmsg->cmsg_type == IP_PKTINFO) {
- unsigned char *data = CMSG_DATA(cmsg);
- struct in_pktinfo *pktinfo;
- memcpy(&pktinfo, &data, sizeof(void *));
- if (pktinfo->ipi_spec_dst.s_addr !=
- to_copy->interface_address->sin_addr.s_addr) {
- good_data = false;
- }
- }
- }
- }
- if (to_copy->source_address != nullptr) {
- CHECK_GE(header.msg_namelen, sizeof(struct sockaddr_in));
- if (to_copy->source_address->sin_port != hton<uint16_t>(0)) {
- if (sender_address.sin_port !=
- to_copy->source_address->sin_port) {
- good_data = false;
- }
- }
- if (sender_address.sin_addr.s_addr !=
- to_copy->source_address->sin_addr.s_addr) {
- good_data = false;
- }
- }
- }
- } else {
- read_bytes = read(to_copy->input,
- buffer + position, sizeof(buffer) - position);
- }
- if (read_bytes == -1) {
- if (errno != EINTR) {
- PLOG(FATAL, "read(%d, %p, %zd) failed",
- to_copy->input, buffer + position, position - sizeof(buffer));
- }
- } else if (read_bytes == 0 && to_copy->interface_address == NULL) {
- // read(2) says that this means EOF
- return NULL;
- }
- if (good_data) {
- position += read_bytes;
- }
- }
-
- CHECK_GE(position, 0);
- CHECK_LE(position, static_cast<ssize_t>(sizeof(buffer)));
- if (position > 0) {
- ssize_t sent_bytes = write(to_copy->output, buffer, position);
- if (sent_bytes == -1) {
- if (errno != EINTR) {
- PLOG(FATAL, "write(%d, %p, %zd) failed",
- to_copy->output, buffer, position);
- }
- } else if (sent_bytes != 0) {
- if (sent_bytes == position) {
- position = 0;
- } else {
- memmove(buffer, buffer + sent_bytes, position - sent_bytes);
- position -= sent_bytes;
- }
- }
- }
- }
-}
-
-int NetconsoleMain(int argc, char **argv) {
- WriteCoreDumps();
- logging::Init();
- logging::AddImplementation(new logging::StreamLogImplementation(stdout));
-
- int input, output;
- if (argc > 1) {
- output = open(argv[1], O_APPEND | O_CREAT | O_WRONLY | O_TRUNC, 0666);
- if (output == -1) {
- if (errno == EACCES || errno == ELOOP || errno == ENOSPC ||
- errno == ENOTDIR || errno == EROFS || errno == ETXTBSY) {
- PLOG(FATAL, "opening output file '%s' failed", argv[1]);
- }
- PLOG(FATAL, "open('%s', stuff, 0644) failed", argv[1]);
- }
- fprintf(stderr, "Writing output to '%s'.\n", argv[1]);
- input = -1;
- fprintf(stderr, "Not taking any input.\n");
- } else {
- output = STDOUT_FILENO;
- fprintf(stderr, "Writing output to stdout.\n");
- input = STDIN_FILENO;
- fprintf(stderr, "Reading stdin.\n");
- }
-
- int on = 1;
-
- int from_crio = socket(AF_INET, SOCK_DGRAM, 0);
- if (from_crio == -1) {
- PLOG(FATAL, "socket(AF_INET, SOCK_DGRAM, 0) failed");
- }
- if (setsockopt(from_crio, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) {
- PLOG(FATAL, "SOL_SOCKET::SO_REUSEADDR=%d(%d) failed", on, from_crio);
- }
- if (setsockopt(from_crio, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) == -1) {
- PLOG(FATAL, "SOL_SOCKET::SO_BROADCAST=%d(%d) failed", on, from_crio);
- }
- if (setsockopt(from_crio, IPPROTO_IP, IP_PKTINFO, &on, sizeof(on)) == -1) {
- PLOG(FATAL, "IPROTO_IP::IP_PKTINFO=%d(%d) failed", on, from_crio);
- }
- union {
- struct sockaddr_in in;
- struct sockaddr addr;
- } address, crio_address;
-
- address.in.sin_family = AF_INET;
- address.in.sin_port = hton<uint16_t>(6666);
- address.in.sin_addr.s_addr = INADDR_ANY;
-
- crio_address.in.sin_family = AF_INET;
- crio_address.in.sin_port = hton<uint16_t>(0);
- crio_address.in.sin_addr = ::aos::configuration::GetOwnIPAddress();
- ::aos::util::SetLastSegment(&crio_address.in.sin_addr,
- ::aos::NetworkAddress::kCRIO);
-
- if (bind(from_crio, &address.addr, sizeof(address)) == -1) {
- PLOG(FATAL, "bind(%d, %p, %zu) failed",
- from_crio, &address.addr, sizeof(address));
- }
-
- pthread_t input_thread, output_thread;
-
- address.in.sin_addr = ::aos::configuration::GetOwnIPAddress();
- ::aos::util::SetLastSegment(&address.in.sin_addr, NetworkAddress::kCRIO);
- fprintf(stderr, "Using cRIO IP %s.\n",
- inet_ntoa(address.in.sin_addr));
-
- if (input != -1) {
- int to_crio = socket(AF_INET, SOCK_DGRAM, 0);
- if (to_crio == -1) {
- PLOG(FATAL, "socket(AF_INET, SOCK_DGRAM, 0) failed");
- }
- if (setsockopt(to_crio, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) {
- PLOG(FATAL, "SOL_SOCKET::SO_REUSEADDR=%d(%d) failed", on, to_crio);
- }
- address.in.sin_port = hton<uint16_t>(6668);
- if (connect(to_crio, &address.addr, sizeof(address)) == -1) {
- PLOG(FATAL, "connect(%d, %p, %zu) failed",
- to_crio, &address.addr, sizeof(address));
- }
- FDsToCopy input_fds{input, to_crio, nullptr, nullptr};
- if (pthread_create(&input_thread, NULL, FDCopyThread, &input_fds) == -1) {
- PLOG(FATAL, "pthread_create(%p, NULL, %p, %p) failed",
- &input_thread, FDCopyThread, &input_fds);
- }
- }
-
- address.in.sin_addr = ::aos::configuration::GetOwnIPAddress();
- FDsToCopy output_fds{from_crio, output, &address.in, &crio_address.in};
- if (pthread_create(&output_thread, NULL, FDCopyThread, &output_fds) == -1) {
- PLOG(FATAL, "pthread_create(%p, NULL, %p, %p) failed",
- &output_thread, FDCopyThread, &output_fds);
- }
-
- // input_thread will finish when stdin gets an EOF
- if (pthread_join((input == -1) ? output_thread : input_thread, NULL) == -1) {
- PLOG(FATAL, "pthread_join(a_thread, NULL) failed");
- }
- exit(EXIT_SUCCESS);
-}
-
-} // namespace
-} // namespace aos
-
-int main(int argc, char **argv) {
- return ::aos::NetconsoleMain(argc, argv);
-}
diff --git a/aos/linux_code/starter/starter.gyp b/aos/linux_code/starter/starter.gyp
index ee8c9ab..9a16647 100644
--- a/aos/linux_code/starter/starter.gyp
+++ b/aos/linux_code/starter/starter.gyp
@@ -1,19 +1,6 @@
{
'targets': [
{
- 'target_name': 'netconsole',
- 'type': 'executable',
- 'sources': [
- 'netconsole.cc',
- ],
- 'dependencies': [
- '<(AOS)/build/aos.gyp:logging',
- '<(AOS)/linux_code/linux_code.gyp:configuration',
- '<(AOS)/common/util/util.gyp:inet_addr',
- '<(AOS)/linux_code/linux_code.gyp:init',
- ],
- },
- {
'target_name': 'starter_exe',
'type': 'executable',
'sources': [
@@ -32,19 +19,8 @@
{
'destination': '<(rsync_dir)',
'files': [
- 'starter_loop.sh',
+ 'starter.sh',
],
- 'conditions': [
- ['FULL_COMPILER=="gcc_frc"', {
- 'files': [
- 'starter_roborio.sh',
- ],
- }, {
- 'files': [
- 'starter.sh',
- ],
- }
- ]],
},
],
},
diff --git a/aos/linux_code/starter/starter.sh b/aos/linux_code/starter/starter.sh
index 7bdf606..d2a0ae1 100755
--- a/aos/linux_code/starter/starter.sh
+++ b/aos/linux_code/starter/starter.sh
@@ -1,36 +1,7 @@
#!/bin/bash
-echo '/home/driver/tmp/robot_logs/%e-%s-%p-%t.coredump' > /proc/sys/kernel/core_pattern
+# NI already has a core pattern, so we probably shouldn't change it.
+#echo '/home/driver/tmp/robot_logs/%e-%s-%p-%t.coredump' > /proc/sys/kernel/core_pattern
-chrt -o 0 bash -c "export PATH=$PATH:/home/driver/robot_code/bin; starter_loop.sh $*" &
-STARTER_LOOP_PID=$!
-echo Starter is ${STARTER_LOOP_PID}.
-#chrt -o 0 bash -c "while true; do cd /home/driver/mjpg-streamer2; ./server.sh; sleep 5; done" &
-
-# Log everything from the serial port...
-#SERIAL_LOG_FILE=$(date "/home/driver/tmp/robot_logs/serial_log.%F_%H-%M-%S")
-#chrt -o 0 bash -c "( stty -echo -echoe -echok 9600; cat > ${SERIAL_LOG_FILE} ) < /dev/ttyUSB0" &
-
-# Wireshark _everything_ we can see...
-#DUMPCAP_LOG_FILE=$(date "/home/driver/tmp/robot_logs/dumpcap.%F_%H-%M-%S")
-#DUMPCAP_STDOUT_FILE=$(date "/home/driver/tmp/robot_logs/stdout_dumpcap.%F_%H-%M-%S")
-#chrt -o 0 bash -c "dumpcap -i eth0 -w ${DUMPCAP_LOG_FILE} -f 'not port 8080 and not net 10.9.71.13' > ${DUMPCAP_STDOUT_FILE}" &
-
-# Run netconsole to record what the cRIO sends.
-chrt -o 0 bash -c '
-NETCONSOLE_BASE=/home/driver/tmp/robot_logs/netconsole-
-existing=$(ls ${NETCONSOLE_BASE}*)
-if [[ $? -eq 0 ]]; then
- i=$(echo ${existing} | sed "s,${NETCONSOLE_BASE},,g; s/ /\n/g" | sort -g | tail -n1)
-else
- i=0
-fi
-while true; do
- /home/driver/robot_code/bin/netconsole ${NETCONSOLE_BASE}$((++i))
- sleep 1
-done
-' &
-NETCONSOLE_PID=$!
-echo Netconsole is ${NETCONSOLE_PID}.
-
-echo $$ > /tmp/starter.pid
+export PATH=$PATH:/home/admin/robot_code
+exec starter_loop.sh "$@"
diff --git a/aos/linux_code/starter/starter_loop.sh b/aos/linux_code/starter/starter_loop.sh
deleted file mode 100755
index 83d34cc..0000000
--- a/aos/linux_code/starter/starter_loop.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-for ((i=1; 1; i++)); do
- starter_exe $* 1>/tmp/starter${i}_stdout 2>/tmp/starter${i}_stderr
- sleep 2
-done
diff --git a/aos/linux_code/starter/starter_roborio.sh b/aos/linux_code/starter/starter_roborio.sh
deleted file mode 100755
index d2a0ae1..0000000
--- a/aos/linux_code/starter/starter_roborio.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# NI already has a core pattern, so we probably shouldn't change it.
-#echo '/home/driver/tmp/robot_logs/%e-%s-%p-%t.coredump' > /proc/sys/kernel/core_pattern
-
-export PATH=$PATH:/home/admin/robot_code
-exec starter_loop.sh "$@"
diff --git a/aos/prime/input/input.gyp b/aos/prime/input/input.gyp
index 09cfbf6..25ba45d 100644
--- a/aos/prime/input/input.gyp
+++ b/aos/prime/input/input.gyp
@@ -10,7 +10,6 @@
'<(AOS)/common/input/input.gyp:driver_station_data',
'<(AOS)/common/messages/messages.gyp:robot_state',
'<(AOS)/common/network/network.gyp:socket',
- '<(EXTERNALS):WPILib-NetworkRobotValues',
'<(AOS)/build/aos.gyp:logging',
'<(AOS)/common/logging/logging.gyp:queue_logging',
],
@@ -18,16 +17,5 @@
'<(AOS)/common/input/input.gyp:driver_station_data',
],
},
- {
- 'target_name': 'joystick_proxy',
- 'type': 'executable',
- 'sources': [
- 'joystick_proxy.cc',
- ],
- 'dependencies': [
- '<(AOS)/prime/input/input.gyp:joystick_input',
- '<(AOS)/linux_code/linux_code.gyp:init',
- ],
- },
],
}
diff --git a/aos/prime/input/joystick_input.cc b/aos/prime/input/joystick_input.cc
index c9b890a..08441c2 100644
--- a/aos/prime/input/joystick_input.cc
+++ b/aos/prime/input/joystick_input.cc
@@ -2,10 +2,6 @@
#include <string.h>
-#include "aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.h"
-
-#include "aos/common/network_port.h"
-#include "aos/common/network/receive_socket.h"
#include "aos/common/messages/robot_state.q.h"
#include "aos/common/logging/logging.h"
#include "aos/common/logging/queue_logging.h"
@@ -13,59 +9,6 @@
namespace aos {
namespace input {
-void JoystickProxy::Run() {
- network::ReceiveSocket sock(NetworkPort::kDS);
- // If true, this code won't try to read anything from the network and instead
- // feed all 0s to the joystick code.
- // The RobotState messages will be marked as fake so anything that outputs
- // values won't while this is enabled.
- static const bool kFakeJoysticks = false;
-
- NetworkRobotJoysticks joysticks;
- char buffer[sizeof(joysticks) + ::buffers::kOverhead];
-
- while (true) {
- if (kFakeJoysticks) {
- ::aos::time::SleepFor(::aos::time::Time::InSeconds(0.02));
- memset(&joysticks, 0, sizeof(joysticks));
- } else {
- int received = sock.Receive(buffer, sizeof(buffer));
- if (received == -1) {
- PLOG(WARNING, "socket receive failed")
- continue;
- }
-
- if (!joysticks.DeserializeFrom(buffer, received)) {
- LOG(WARNING, "deserializing data from %d bytes failed\n", received);
- continue;
- }
- }
-
- auto new_state = robot_state.MakeMessage();
- new_state->test_mode = joysticks.control.test_mode();
- new_state->fms_attached = joysticks.control.fms_attached();
- new_state->enabled = joysticks.control.enabled();
- new_state->autonomous = joysticks.control.autonomous();
- new_state->team_id = joysticks.team_number;
- new_state->fake = kFakeJoysticks;
-
- for (int i = 0; i < 4; ++i) {
- new_state->joysticks[i].buttons = joysticks.joysticks[i].buttons;
- for (int j = 0; j < 4; ++j) {
- // TODO(brians): check this math against what our joysticks report as
- // their logical minimums and maximums
- new_state->joysticks[i].axis[j] = joysticks.joysticks[i].axes[j] / 127.0;
- }
- }
-
- LOG_STRUCT(DEBUG, "sending", *new_state);
-
- if (!new_state.Send()) {
- LOG(WARNING, "sending robot_state failed\n");
- }
- }
-}
-
void JoystickInput::Run() {
driver_station::Data data;
while (true) {
diff --git a/aos/prime/input/joystick_proxy.cc b/aos/prime/input/joystick_proxy.cc
deleted file mode 100644
index fe23f4a..0000000
--- a/aos/prime/input/joystick_proxy.cc
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "aos/linux_code/init.h"
-#include "aos/prime/input/joystick_input.h"
-
-int main() {
- ::aos::Init();
- ::aos::input::JoystickProxy proxy;
- proxy.Run();
- ::aos::Cleanup();
-}
diff --git a/aos/prime/output/motor_output.cc b/aos/prime/output/motor_output.cc
deleted file mode 100644
index b6d59e2..0000000
--- a/aos/prime/output/motor_output.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-#include "aos/prime/output/motor_output.h"
-
-#include <math.h>
-
-#include "aos/common/util/phased_loop.h"
-#include "aos/common/logging/logging.h"
-#include "aos/common/network_port.h"
-#include "aos/common/messages/robot_state.q.h"
-
-namespace aos {
-
-// 255 = 2.5ms, 0 = 0.5ms (or something close to that)
-// got 211->210 as first transition that made a speed difference and 53->54 on
-// the other side
-// going 2 to each side to make sure we get the full range
-const MotorOutput::MotorControllerBounds MotorOutput::kTalonBounds
- {213, 135, 132, 129, 50};
-const MotorOutput::MotorControllerBounds MotorOutput::kVictorBounds
- {210, 138, 132, 126, 56};
-
-uint8_t MotorOutput::MotorControllerBounds::Map(double value) const {
- if (value == 0.0) return kCenter;
- if (value > 12.0) return Map(12.0);
- if (value < -12.0) return Map(-12.0);
- uint8_t r;
- if (value > 0.0) {
- r = static_cast<uint8_t>(kDeadbandMax + (value * (kMax - kDeadbandMax)) +
- 0.5);
- } else {
- r = static_cast<uint8_t>(kDeadbandMin + (value * (kDeadbandMin - kMin)) +
- 0.5);
- }
- if (r < kMin) return kMin;
- if (r > kMax) return kMax;
- return r;
-}
-
-MotorOutput::MotorOutput()
- : socket_(NetworkPort::kMotors, ::aos::NetworkAddress::kCRIO) {
- if (socket_.LastStatus() != 0) {
- LOG(FATAL, "opening output socket failed (returned %d)\n",
- socket_.LastStatus());
- }
- values_.solenoid_values = 0;
-}
-
-void MotorOutput::Run() {
- ::aos::time::Time::EnableMockTime();
- while (true) {
- ::aos::time::Time::UpdateMockTime();
- time::PhasedLoopXMS(5, 1000);
- ::aos::time::Time::UpdateMockTime();
-
- no_robot_state_.Print();
- fake_robot_state_.Print();
- sending_failed_.Print();
-
- values_.digital_module = -1;
- // 0 means output disabled.
- memset(&values_.pwm_outputs, 0x00, sizeof(values_.pwm_outputs));
- values_.digital_output_enables = 0;
- values_.digital_output_values = 0;
- values_.pressure_switch_channel = 0;
- values_.compressor_channel = 0;
- values_.solenoid_module = -1;
-
- RunIteration();
-
- ::aos::robot_state.FetchLatest();
- if (!::aos::robot_state.get()) {
- LOG_INTERVAL(no_robot_state_);
- continue;
- }
- if (::aos::robot_state->fake) {
- LOG_INTERVAL(fake_robot_state_);
- continue;
- }
-
- char buffer[sizeof(values_) + ::buffers::kOverhead];
- ssize_t size = values_.SerializeTo(buffer, sizeof(buffer));
- if (size <= 0) {
- LOG(WARNING, "serializing outputs failed\n");
- continue;
- }
- if (socket_.Send(buffer, size) != size) {
- LOG_INTERVAL(sending_failed_);
- continue;
- } else {
- LOG(DEBUG, "sent outputs\n");
- }
- }
-}
-
-void MotorOutput::SetSolenoid(uint8_t channel, bool set) {
- if (set) {
- values_.solenoid_values |= 1 << (channel - 1);
- } else {
- values_.solenoid_values &= ~(1 << (channel - 1));
- }
-}
-
-void MotorOutput::SetPWMOutput(uint8_t channel, double value,
- const MotorControllerBounds &bounds) {
- values_.pwm_outputs[channel - 1] = bounds.Map(value);
-}
-
-void MotorOutput::SetRawPWMOutput(uint8_t channel, uint8_t value) {
- values_.pwm_outputs[channel - 1] = value;
-}
-
-void MotorOutput::DisablePWMOutput(uint8_t channel) {
- values_.pwm_outputs[channel - 1] = 0;
-}
-
-void MotorOutput::SetDigitalOutput(uint8_t channel, bool value) {
- const uint8_t shift_amount = 15 - channel;
- values_.digital_output_enables |= 1 << shift_amount;
- if (value) {
- values_.digital_output_values |= 1 << shift_amount;
- } else {
- values_.digital_output_values &= ~(1 << shift_amount);
- }
-}
-
-} // namespace aos
diff --git a/aos/prime/output/motor_output.h b/aos/prime/output/motor_output.h
deleted file mode 100644
index 7d856bc..0000000
--- a/aos/prime/output/motor_output.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef AOS_LINUX_CODE_OUTPUT_MOTOR_OUTPUT_H_
-#define AOS_LINUX_CODE_OUTPUT_MOTOR_OUTPUT_H_
-
-#include <stdint.h>
-#include <string.h>
-#include <algorithm>
-#include <string>
-
-#include "aos/externals/WPILib/WPILib/NetworkRobot/NetworkRobotValues.h"
-#include "aos/common/network/send_socket.h"
-#include "aos/common/byteorder.h"
-#include "aos/common/type_traits.h"
-#include "aos/common/util/log_interval.h"
-
-namespace aos {
-
-// A class for sending output values to a cRIO.
-// values_ gets completely reset each time through, so RunIteration() needs to
-// set everything each time (except solenoids).
-class MotorOutput {
- public:
- MotorOutput();
- void Run();
-
- // A container for holding the constants that WPILib uses for each type of
- // motor controller to map floating point values to 1-byte PWM values to
- // actually use.
- struct MotorControllerBounds {
- // What 1.0 maps to.
- const uint8_t kMax;
- // The smallest value to map a positive speed to.
- const uint8_t kDeadbandMax;
- // What 0.0 maps to.
- const uint8_t kCenter;
- // The biggest value to map a negative speed to.
- const uint8_t kDeadbandMin;
- // What -1.0 maps to.
- const uint8_t kMin;
-
- // Applies the mapping.
- uint8_t Map(double value) const;
- };
-
- protected:
- // Brian got the values here by trying values with hardware on 11/23/12.
- static const MotorControllerBounds kTalonBounds;
- // Taken from WPILib.
- static const MotorControllerBounds kVictorBounds;
-
- // Helper methods for filling out values_.
- // All channels are the 1-indexed numbers that usually go into WPILib.
- void SetSolenoid(uint8_t channel, bool set);
- void SetPWMOutput(uint8_t channel, double value,
- const MotorControllerBounds &bounds);
- void SetRawPWMOutput(uint8_t channel, uint8_t value);
- void DisablePWMOutput(uint8_t channel);
- void SetDigitalOutput(uint8_t channel, bool value);
-
- // The data that's going to get sent over.
- // Gets reset (everything set so that it won't do anything) each time through
- // except for solenoids.
- NetworkRobotMotors values_;
-
- private:
- // Subclasses need to actually fill out values_ here.
- virtual void RunIteration() = 0;
-
- network::SendSocket socket_;
-
- util::SimpleLogInterval no_robot_state_ =
- util::SimpleLogInterval(::aos::time::Time::InSeconds(0.5), INFO,
- "no robot state -> not outputting");
- util::SimpleLogInterval fake_robot_state_ =
- util::SimpleLogInterval(::aos::time::Time::InSeconds(0.5), DEBUG,
- "fake robot state -> not outputting");
- util::SimpleLogInterval sending_failed_ =
- util::SimpleLogInterval(::aos::time::Time::InSeconds(0.1), WARNING,
- "sending outputs failed");
-};
-
-} // namespace aos
-
-#endif
diff --git a/aos/prime/output/motor_output_test.cc b/aos/prime/output/motor_output_test.cc
deleted file mode 100644
index 52a5091..0000000
--- a/aos/prime/output/motor_output_test.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "aos/prime/output/motor_output.h"
-
-#include "gtest/gtest.h"
-
-namespace aos {
-namespace testing {
-
-TEST(MotorControllerBoundsTest, Limits) {
- MotorOutput::MotorControllerBounds test_bounds
- {200, 135, 128, 126, 110};
- EXPECT_EQ(test_bounds.Map(1.0), test_bounds.kMax);
- EXPECT_EQ(test_bounds.Map(-1.0), test_bounds.kMin);
- EXPECT_EQ(test_bounds.Map(0.0), test_bounds.kCenter);
- EXPECT_EQ(test_bounds.Map(0.55), 171);
- EXPECT_EQ(test_bounds.Map(0.5), 168);
- EXPECT_EQ(test_bounds.Map(0.45), 164);
- EXPECT_EQ(test_bounds.Map(-0.5), 118);
-}
-
-} // namespace testing
-} // namespace aos
diff --git a/aos/prime/output/output.gyp b/aos/prime/output/output.gyp
deleted file mode 100644
index 1fadff0..0000000
--- a/aos/prime/output/output.gyp
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- 'targets': [
- {
- 'target_name': 'motor_output',
- 'type': 'static_library',
- 'sources': [
- 'motor_output.cc',
- ],
- 'dependencies': [
- '<(AOS)/common/network/network.gyp:socket',
- '<(AOS)/common/util/util.gyp:phased_loop',
- '<(EXTERNALS):WPILib-NetworkRobotValues',
- '<(AOS)/build/aos.gyp:logging',
- '<(AOS)/common/messages/messages.gyp:robot_state',
- '<(AOS)/common/util/util.gyp:log_interval',
- ],
- 'export_dependent_settings': [
- '<(AOS)/common/network/network.gyp:socket',
- '<(EXTERNALS):WPILib-NetworkRobotValues',
- '<(AOS)/common/util/util.gyp:log_interval',
- ],
- },
- {
- 'target_name': 'motor_output_test',
- 'type': 'executable',
- 'sources': [
- 'motor_output_test.cc',
- ],
- 'dependencies': [
- 'motor_output',
- '<(EXTERNALS):gtest',
- ],
- },
- ],
-}