Files
allwpilib/hal
Kevin O'Connor 003dc0dc2b Pass errors to DS in C++ and Java
Squashed commit of the following:

commit f317b3522e312cf7e7bb9eb0494f2f96a7f6363c
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Mon Oct 20 17:15:46 2014 -0400

    Send unhandled exceptions back to the DS.

    Change-Id: I0e658fdb6d43593ee20457f20f71f4f4cd2d21c3

commit f834ef8c791945697ad483c27b4167eb917ac242
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Mon Oct 20 16:05:24 2014 -0400

    Add StackTrace to Java errors

    Change-Id: I83b162afcc5f294703705770fbcd8623b0895539

commit 02e040b0c79067ce046ada29e26004e0460fceb0
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Mon Oct 20 15:07:44 2014 -0400

    HAL Errors to DS in Java

    Change-Id: I5fb51e4066bbc26ea59ca513c03c5ec5ace98831

commit 03775ddc42b129c27fdf403f17f0796009311c3c
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Mon Oct 20 13:38:18 2014 -0400

    Update AnalogInput to report errors for getting and setting sample rate

    Change-Id: I00eb78f52fc5b17a60bc84456f0ec9842cc40ef7

commit 4c10cb79612ae81e3cbb6bd4d6da8cf3b8955821
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Mon Oct 20 11:46:03 2014 -0400

    Define errors in HAL

    Change-Id: I96595472e42ba61f0f3d0da17caf01a748d0422a

commit 56cb5dcd93e5e849a016f63ac9d0dc245a23eb2b
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Fri Oct 17 10:59:29 2014 -0400

    Throttle errors (1 report per second per error code) and fix issue with GetTime conflicting with GetTime from Timer.h/Timer.cpp

    Change-Id: Ibe4dc2e400fc4671b240b876a46959256ea65ad7

commit 71c78826e548682ecd0c1548255f8a6552cece32
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Thu Oct 16 16:41:04 2014 -0400

    Feed errors to DS from C++

    Change-Id: I009a7798499fd93e9fdd976ff00aa74c0bd094ae

commit 81030c6cee7f18a5ddf0e95c4e402a6cf7b5de6c
Author: Kevin O'Connor <koconnor@usfirst.org>
Date:   Thu Oct 16 16:40:50 2014 -0400

    Don't try to de-mangle lines without any symbols in them

    Change-Id: Icea02494b68f2ec9116d6cbf20a35a3a132234f8

Change-Id: If7717025b03914183736ccd95da5c9d49819a6f3
2014-10-24 13:23:17 -04:00
..
2014-10-24 13:23:17 -04:00

Purpose

The HAL is a hardware abstraction layer that provides a uniform interface that can be used to access a number of primarily I/O features in the underlying platform. The features include:

  • Analog input, accumulation and triggers
  • PWM, Relay and Solenoid output
  • Digital input and output
  • I2C and SPI communication
  • Encoders and counters
  • Interrupts and Notifiers

The initial goal is to allow a higher level like WPILib to support both the CRIO and the upcoming Athena platform only by changing which version of the HAL it's running on.

Editing

You can always use any text editor and then build with Maven. There are also eclipse project files so that it can be edited in the same eclipse environment that teams develop with. For the AthenaXX, this can be found in the root directory of this project. It imports as an FRC Robot C++ Eclipse project. The Windriver project can be imported from the src directory.

Building with Maven

There are multiple build targets that the HAL supports. Instructions for setting up the environment and building each of these is described below. Current targets are listed below:

  • All: All of the following targets.
  • include: The header files for the HAL.
  • Azalea: CRIO C++ build.
  • AthenaXX: Athena Dos Equis C++ build.
  • AthenaXXJava: Athena Dos Equis Java build with auto-generated JNA wrappers.

Output from each build target is placed in the directory target/<target-name>. So, the Azalea output is placed in target/Azalea.

All

Note: Windows only due to the Windriver requirement.

  1. Ensure that C:\WindRiver\gnu\3.4.4-vxworks-6.3\x86-win32\bin is on the system path so that ccppc and arppc can be accessed.
  2. Set the environment variable WIND_BASE to C:\WindRiver\vxworks-6.3.
  3. Ensure that $HOME/wpilib/toolchains/arm-none-linux-gnueabi-4.4.1/bin/ is on the system path so that arm-none-linux-gnueabi-g++ and arm-none-linux-gnueabi-ar can be accessed.
  4. Checkout and install the NI-Libraries from Github: https://github.com/first/NI-Libraries.
  5. Run the following maven command: mvn clean install
  6. Success

include

  1. cd into the include directory: cd include
  2. Run the following maven command: mvn clean install
  3. Success

Azalea

Note: Windows only.

  1. Ensure that C:\WindRiver\gnu\3.4.4-vxworks-6.3\x86-win32\bin is on the system path so that ccppc and arppc can be accessed.
  2. Set the environment variable WIND_BASE to C:\WindRiver\vxworks-6.3.
  3. cd into the AthenaXX directory: cd AthenaXX
  4. cd into the Azalea directory: cd Azalea
  5. Run the following maven command: mvn clean install
  6. Success

AthenaXX

  1. Ensure that $HOME/wpilib/toolchains/arm-none-linux-gnueabi-4.4.1/bin/ is on the system path so that arm-none-linux-gnueabi-g++ and arm-none-linux-gnueabi-ar can be accessed.
  2. Install the include target.
  3. cd into the AthenaXX directory: cd AthenaXX
  4. Run the following maven command: mvn clean install
  5. Success

AthenaXXJava

  1. Ensure that $HOME/wpilib/toolchains/arm-none-linux-gnueabi-4.4.1/bin/ is on the system path so that arm-none-linux-gnueabi-g++ and arm-none-linux-gnueabi-ar can be accessed.
  2. Checkout and install the NI-Libraries from Github: https://github.com/first/NI-Libraries.
  3. Install the include target.
  4. cd into the AthenaXXJava directory: cd AthenaXXJava
  5. Run the following maven command: mvn clean install
  6. Success