mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-27 02:01:42 +00:00
Switches DigitalPWM to Handles (#121)
This commit is contained in:
committed by
Peter Johnson
parent
f77a976fbb
commit
47694ef810
@@ -10,7 +10,6 @@ package edu.wpi.first.wpilibj;
|
||||
import edu.wpi.first.wpilibj.communication.FRCNetworkCommunicationsLibrary.tResourceType;
|
||||
import edu.wpi.first.wpilibj.communication.UsageReporting;
|
||||
import edu.wpi.first.wpilibj.hal.DIOJNI;
|
||||
import edu.wpi.first.wpilibj.hal.PWMJNI;
|
||||
import edu.wpi.first.wpilibj.livewindow.LiveWindowSendable;
|
||||
import edu.wpi.first.wpilibj.tables.ITable;
|
||||
import edu.wpi.first.wpilibj.tables.ITableListener;
|
||||
@@ -21,10 +20,9 @@ import edu.wpi.first.wpilibj.tables.ITableListener;
|
||||
*/
|
||||
public class DigitalOutput extends DigitalSource implements LiveWindowSendable {
|
||||
|
||||
private static final long invalidPwmGenerator = 0xffffffff;
|
||||
private static final int invalidPwmGenerator = 0;
|
||||
private int m_pwmGenerator = invalidPwmGenerator;
|
||||
|
||||
private long m_pwmGenerator = invalidPwmGenerator;
|
||||
|
||||
private int m_channel = 0;
|
||||
private int m_handle = 0;
|
||||
|
||||
@@ -118,7 +116,7 @@ public class DigitalOutput extends DigitalSource implements LiveWindowSendable {
|
||||
* @param rate The frequency to output all digital output PWM signals.
|
||||
*/
|
||||
public void setPWMRate(double rate) {
|
||||
PWMJNI.setPWMRate(rate);
|
||||
DIOJNI.setDigitalPWMRate(rate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -137,9 +135,9 @@ public class DigitalOutput extends DigitalSource implements LiveWindowSendable {
|
||||
if (m_pwmGenerator != invalidPwmGenerator) {
|
||||
return;
|
||||
}
|
||||
m_pwmGenerator = PWMJNI.allocatePWM();
|
||||
PWMJNI.setPWMDutyCycle(m_pwmGenerator, initialDutyCycle);
|
||||
PWMJNI.setPWMOutputChannel(m_pwmGenerator, m_channel);
|
||||
m_pwmGenerator = DIOJNI.allocateDigitalPWM();
|
||||
DIOJNI.setDigitalPWMDutyCycle(m_pwmGenerator, initialDutyCycle);
|
||||
DIOJNI.setDigitalPWMOutputChannel(m_pwmGenerator, m_channel);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,9 +150,9 @@ public class DigitalOutput extends DigitalSource implements LiveWindowSendable {
|
||||
return;
|
||||
}
|
||||
// Disable the output by routing to a dead bit.
|
||||
PWMJNI.setPWMOutputChannel(m_pwmGenerator, kDigitalChannels);
|
||||
PWMJNI.freePWM(m_pwmGenerator);
|
||||
m_pwmGenerator = 0;
|
||||
DIOJNI.setDigitalPWMOutputChannel(m_pwmGenerator, kDigitalChannels);
|
||||
DIOJNI.freeDigitalPWM(m_pwmGenerator);
|
||||
m_pwmGenerator = invalidPwmGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,7 +168,7 @@ public class DigitalOutput extends DigitalSource implements LiveWindowSendable {
|
||||
if (m_pwmGenerator == invalidPwmGenerator) {
|
||||
return;
|
||||
}
|
||||
PWMJNI.setPWMDutyCycle(m_pwmGenerator, dutyCycle);
|
||||
DIOJNI.setDigitalPWMDutyCycle(m_pwmGenerator, dutyCycle);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,4 +26,14 @@ public class DIOJNI extends JNIWrapper {
|
||||
public static native boolean isAnyPulsing();
|
||||
|
||||
public static native short getLoopTiming();
|
||||
|
||||
public static native int allocateDigitalPWM();
|
||||
|
||||
public static native void freeDigitalPWM(int pwmGenerator);
|
||||
|
||||
public static native void setDigitalPWMRate(double rate);
|
||||
|
||||
public static native void setDigitalPWMDutyCycle(int pwmGenerator, double dutyCycle);
|
||||
|
||||
public static native void setDigitalPWMOutputChannel(int pwmGenerator, int pin);
|
||||
}
|
||||
|
||||
@@ -20,14 +20,4 @@ public class PWMJNI extends DIOJNI {
|
||||
public static native void latchPWMZero(int pwmPortHandle);
|
||||
|
||||
public static native void setPWMPeriodScale(int pwmPortHandle, int squelchMask);
|
||||
|
||||
public static native long allocatePWM();
|
||||
|
||||
public static native void freePWM(long pwmGenerator);
|
||||
|
||||
public static native void setPWMRate(double rate);
|
||||
|
||||
public static native void setPWMDutyCycle(long pwmGenerator, double dutyCycle);
|
||||
|
||||
public static native void setPWMOutputChannel(long pwmGenerator, int pin);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user