Added support for CAN Talon SRX in C++ and Java.

Currently, the JNI bindings are generated by Swig and, unfortunately,
  the interface available through Java is lower-level than that for C++
  (ie, direct access to the ctre code through the JNI bindings, rather
   than an interface on top of that), but it does work.
See eclipse plugins for some short samples.
There are a couple of short unit tests as placeholders.
Still needs some cleaning up.

Change-Id: Iae2f74693ca6b80bf7d5aca0625c66aa6e0b7f85

Added quick samples for C++/Java CAN Talon stuff.

Change-Id: I3acb27d6fd5568d88931e0d678c09973d436735d
This commit is contained in:
James Kuszmaul
2014-11-17 16:02:41 -05:00
parent f590cda8f9
commit 28a41e4ac2
36 changed files with 3883 additions and 538 deletions

View File

@@ -0,0 +1,70 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008-2014. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
package edu.wpi.first.wpilibj;
import static org.junit.Assert.assertTrue;
import java.util.logging.Logger;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import edu.wpi.first.wpilibj.fixtures.SampleFixture;
import edu.wpi.first.wpilibj.test.AbstractComsSetup;
import edu.wpi.first.wpilibj.hal.CanTalonSRX;
/**
* Basic test (borrowed straight from SampleTest) for running the CAN TalonSRX.
*/
public class CANTalonTest extends AbstractComsSetup {
private static final Logger logger = Logger.getLogger(SampleTest.class.getName());
static SampleFixture fixture = new SampleFixture();
protected Logger getClassLogger(){
return logger;
}
@BeforeClass
public static void classSetup() {
// Set up the fixture before the test is created
fixture.setup();
}
@Before
public void setUp() {
// Reset the fixture elements before every test
fixture.reset();
}
@AfterClass
public static void tearDown() {
// Clean up the fixture after the test
fixture.teardown();
}
/**
* Briefly run a CAN Talon and assert true.
*/
@Test
public void test() {
// The constructor takes a device ID (settable in roboRIO web interface).
CanTalonSRX talon = new CanTalonSRX(0);
// Make sure that the Talon is in the basic throttle mode.
talon.SetModeSelect(0);
// Set Talon to 50% forwards throttle.
talon.Set(0.5);
Timer.delay(1.5);
// Turn Talon off.
talon.Set(0.0);
assertTrue(true);
}
}

View File

@@ -18,6 +18,9 @@ import org.junit.Test;
import edu.wpi.first.wpilibj.fixtures.SampleFixture;
import edu.wpi.first.wpilibj.test.AbstractComsSetup;
import edu.wpi.first.wpilibj.hal.CanTalonSRX;
import edu.wpi.first.wpilibj.hal.SWIGTYPE_p_UINT8;
/**
* Sample test for a sample PID controller. This demonstrates the general
* pattern of how to create a test and use testing fixtures and categories.
@@ -60,6 +63,10 @@ public class SampleTest extends AbstractComsSetup {
*/
@Test
public void test() {
CanTalonSRX cantalon = new CanTalonSRX();
cantalon.Set(0.5);
Timer.delay(0.5);
cantalon.Set(0.0);
assertTrue(true);
}

View File

@@ -22,6 +22,7 @@ import edu.wpi.first.wpilibj.test.AbstractTestSuite;
AnalogCrossConnectTest.class,
AnalogPotentiometerTest.class,
BuiltInAccelerometerTest.class,
CANTalonTest.class,
CounterTest.class,
DIOCrossConnectTest.class,
EncoderTest.class,