mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
Implement PCM One Shot feature. Fixes artf4731 (#539)
This commit is contained in:
committed by
Peter Johnson
parent
a338ee8be0
commit
7a250a1b93
@@ -180,6 +180,95 @@ public class PCMTest extends AbstractComsSetup {
|
||||
solenoid.free();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if the correct solenoids turn on and off when they should.
|
||||
*/
|
||||
@Test
|
||||
public void testOneShot() throws Exception {
|
||||
reset();
|
||||
|
||||
Solenoid solenoid1 = new Solenoid(0);
|
||||
Solenoid solenoid2 = new Solenoid(1);
|
||||
|
||||
solenoid1.set(false);
|
||||
solenoid2.set(false);
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
|
||||
// Pulse Solenoid #1 on, and turn Solenoid #2 off
|
||||
solenoid1.setPulseDuration(2 * kSolenoidDelayTime);
|
||||
solenoid1.startPulse();
|
||||
solenoid2.set(false);
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertFalse("Solenoid #1 did not turn on", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertTrue("Solenoid #1 did not report on", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
Timer.delay(2 * kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
|
||||
// Turn Solenoid #1 off, and pulse Solenoid #2 on
|
||||
solenoid1.set(false);
|
||||
solenoid2.setPulseDuration(2 * kSolenoidDelayTime);
|
||||
solenoid2.startPulse();
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertFalse("Solenoid #2 did not turn on", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertTrue("Solenoid #2 did not report on", solenoid2.get());
|
||||
Timer.delay(2 * kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
|
||||
// Pulse both Solenoids on
|
||||
solenoid1.setPulseDuration(2 * kSolenoidDelayTime);
|
||||
solenoid2.setPulseDuration(2 * kSolenoidDelayTime);
|
||||
solenoid1.startPulse();
|
||||
solenoid2.startPulse();
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertFalse("Solenoid #1 did not turn on", fakeSolenoid1.get());
|
||||
assertFalse("Solenoid #2 did not turn on", fakeSolenoid2.get());
|
||||
assertTrue("Solenoid #1 did not report on", solenoid1.get());
|
||||
assertTrue("Solenoid #2 did not report on", solenoid2.get());
|
||||
Timer.delay(2 * kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
|
||||
// Pulse both Solenoids on with different durations
|
||||
solenoid1.setPulseDuration(1.5 * kSolenoidDelayTime);
|
||||
solenoid2.setPulseDuration(2.5 * kSolenoidDelayTime);
|
||||
solenoid1.startPulse();
|
||||
solenoid2.startPulse();
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertFalse("Solenoid #1 did not turn on", fakeSolenoid1.get());
|
||||
assertFalse("Solenoid #2 did not turn on", fakeSolenoid2.get());
|
||||
assertTrue("Solenoid #1 did not report on", solenoid1.get());
|
||||
assertTrue("Solenoid #2 did not report on", solenoid2.get());
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertFalse("Solenoid #2 did not turn on", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertTrue("Solenoid #2 did not report on", solenoid2.get());
|
||||
Timer.delay(kSolenoidDelayTime);
|
||||
assertTrue("Solenoid #1 did not turn off", fakeSolenoid1.get());
|
||||
assertTrue("Solenoid #2 did not turn off", fakeSolenoid2.get());
|
||||
assertFalse("Solenoid #1 did not report off", solenoid1.get());
|
||||
assertFalse("Solenoid #2 did not report off", solenoid2.get());
|
||||
|
||||
solenoid1.free();
|
||||
solenoid2.free();
|
||||
}
|
||||
|
||||
protected Logger getClassLogger() {
|
||||
return logger;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user