Package edu.wpi.first.wpilibj
Class InterruptableSensorBase
- java.lang.Object
-
- edu.wpi.first.wpilibj.InterruptableSensorBase
-
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
DigitalSource
public abstract class InterruptableSensorBase extends Object implements AutoCloseable
Base for sensors to be used with interrupts.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classInterruptableSensorBase.WaitResult
-
Field Summary
Fields Modifier and Type Field Description protected intm_interruptThe interrupt resource.protected booleanm_isSynchronousInterruptFlags if the interrupt being allocated is synchronous.
-
Constructor Summary
Constructors Constructor Description InterruptableSensorBase()Create a new InterrupatableSensorBase.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidallocateInterrupts(boolean watcher)Allocate the interrupt.voidcancelInterrupts()Cancel interrupts on this device.voidclose()voiddisableInterrupts()Disable Interrupts without without deallocating structures.voidenableInterrupts()Enable interrupts to occur on this input.abstract intgetAnalogTriggerTypeForRouting()If this is an analog trigger.abstract intgetPortHandleForRouting()The channel routing number.doublereadFallingTimestamp()Return the timestamp for the falling interrupt that occurred most recently.doublereadRisingTimestamp()Return the timestamp for the rising interrupt that occurred most recently.voidrequestInterrupts()Request one of the 8 interrupts synchronously on this digital input.voidrequestInterrupts(InterruptHandlerFunction<?> handler)Request one of the 8 interrupts asynchronously on this digital input.voidrequestInterrupts(Consumer<InterruptableSensorBase.WaitResult> handler)Request one of the 8 interrupts asynchronously on this digital input.voidsetUpSourceEdge(boolean risingEdge, boolean fallingEdge)Set which edge to trigger interrupts on.InterruptableSensorBase.WaitResultwaitForInterrupt(double timeout)In synchronous mode, wait for the defined interrupt to occur.InterruptableSensorBase.WaitResultwaitForInterrupt(double timeout, boolean ignorePrevious)In synchronous mode, wait for the defined interrupt to occur.
-
-
-
Method Detail
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable
-
getAnalogTriggerTypeForRouting
public abstract int getAnalogTriggerTypeForRouting()
If this is an analog trigger.- Returns:
- true if this is an analog trigger.
-
getPortHandleForRouting
public abstract int getPortHandleForRouting()
The channel routing number.- Returns:
- channel routing number
-
requestInterrupts
public void requestInterrupts(Consumer<InterruptableSensorBase.WaitResult> handler)
Request one of the 8 interrupts asynchronously on this digital input.- Parameters:
handler- TheConsumerthat will be called whenever there is an interrupt on this device. Request interrupts in synchronous mode where the user program interrupt handler will be called when an interrupt occurs. The default is interrupt on rising edges only.
-
requestInterrupts
public void requestInterrupts(InterruptHandlerFunction<?> handler)
Request one of the 8 interrupts asynchronously on this digital input.- Parameters:
handler- TheInterruptHandlerFunctionthat contains the methodInterruptHandlerFunction.interruptFired(int, Object)that will be called whenever there is an interrupt on this device. Request interrupts in synchronous mode where the user program interrupt handler will be called when an interrupt occurs. The default is interrupt on rising edges only.
-
requestInterrupts
public void requestInterrupts()
Request one of the 8 interrupts synchronously on this digital input. Request interrupts in synchronous mode where the user program will have to explicitly wait for the interrupt to occur usingwaitForInterrupt(double, boolean). The default is interrupt on rising edges only.
-
allocateInterrupts
protected void allocateInterrupts(boolean watcher)
Allocate the interrupt.- Parameters:
watcher- true if the interrupt should be in synchronous mode where the user program will have to explicitly wait for the interrupt to occur.
-
cancelInterrupts
public void cancelInterrupts()
Cancel interrupts on this device. This deallocates all the chipobject structures and disables any interrupts.
-
waitForInterrupt
public InterruptableSensorBase.WaitResult waitForInterrupt(double timeout, boolean ignorePrevious)
In synchronous mode, wait for the defined interrupt to occur.- Parameters:
timeout- Timeout in secondsignorePrevious- If true, ignore interrupts that happened before waitForInterrupt was called.- Returns:
- Result of the wait.
-
waitForInterrupt
public InterruptableSensorBase.WaitResult waitForInterrupt(double timeout)
In synchronous mode, wait for the defined interrupt to occur.- Parameters:
timeout- Timeout in seconds- Returns:
- Result of the wait.
-
enableInterrupts
public void enableInterrupts()
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.
-
disableInterrupts
public void disableInterrupts()
Disable Interrupts without without deallocating structures.
-
readRisingTimestamp
public double readRisingTimestamp()
Return the timestamp for the rising interrupt that occurred most recently. This is in the same time domain as getClock(). The rising-edge interrupt should be enabled withsetUpSourceEdge(boolean, boolean).- Returns:
- Timestamp in seconds since boot.
-
readFallingTimestamp
public double readFallingTimestamp()
Return the timestamp for the falling interrupt that occurred most recently. This is in the same time domain as getClock(). The falling-edge interrupt should be enabled withsetUpSourceEdge(boolean, boolean).- Returns:
- Timestamp in seconds since boot.
-
setUpSourceEdge
public void setUpSourceEdge(boolean risingEdge, boolean fallingEdge)Set which edge to trigger interrupts on.- Parameters:
risingEdge- true to interrupt on rising edgefallingEdge- true to interrupt on falling edge
-
-