public interface PulseCounter extends Peripheral
PulseCounter
interface provides methods for controlling a pulse counter. A pulse counter can count pulses
(or events) on a digital input line (possibly a GPIO pin).
A PulseCounter
instance can be opened by a call to one of the PeripheralManager.open()
methods.
Once opened, an application can either start a pulse counting session using the startCounting()
method and retrieve the current pulse count on-the-fly by calling the getCount()
method; or
it can start a pulse counting session with a terminal count value and a counting time interval using the
startCounting(int, long, com.oracle.deviceaccess.counter.CountingListener)
and get asynchronously notified
once the terminal count value has been reached or the counting time interval has expired. In both cases, the
application can retrieve the current pulse count at any time (on-the-fly) by calling the getCount()
.
The pulse counting session can be suspended by calling suspendCounting()
and later on resumed from its
previous count value by calling resumeCounting()
. Suspending the pulse counting also suspends the session
counting time interval timer if active.
The pulse count value can be reset at anytime during counting by calling resetCounting()
. This also resets
the session counting time interval timer if active.
Finally, the pulse counting can be stopped by calling stopCounting()
.
When an application is no longer using a pulse counter it should call the PulseCounter.close()
method to release the pulse counter. Any further attempt to use a pulse counter which has been closed will result in
a PeripheralNotAvailableException
been thrown.
Note that asynchronous notification of pulse counting conditions is only loosely tied to hardware-level interrupt
requests. The platform does not guarantee notification in a deterministic/timely manner.CountingListener
BIG_ENDIAN, LITTLE_ENDIAN, MIXED_ENDIAN, UNDEFINED_ID
Modifier and Type | Method and Description |
---|---|
int |
getCount()
Gets the pulse count measured so far during the current (if still active) or previous counting session.
|
void |
resetCounting()
Resets the current count value.
|
void |
resumeCounting()
Resumes the counting starting from the frozen count value.
|
void |
startCounting()
Starts a pulse counting session.
|
void |
startCounting(int limit,
long interval,
CountingListener listener)
Starts an asynchronous pulse counting session.
|
void |
stopCounting()
Stops the pulse counting and freezes the current count value.
|
void |
suspendCounting()
Suspends the pulse counting and freezes the current count value.
|
close, getID, getName, getProperties, isOpen
int getCount() throws java.io.IOException, PeripheralNotAvailableException
0
is returned if
none has been measured so far.java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).void resetCounting() throws java.io.IOException, PeripheralNotAvailableException
java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).InvalidStateException
- if counting is not active.void resumeCounting() throws java.io.IOException, PeripheralNotAvailableException
java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).InvalidStateException
- if counting is not active.void startCounting() throws java.io.IOException, PeripheralNotAvailableException
0
without any further notification. To be notified of such
conditions the startCounting(int, long, com.oracle.deviceaccess.counter.CountingListener)
method should
be used instead.java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).InvalidStateException
- if counting is already active.void startCounting(int limit, long interval, CountingListener listener) throws java.io.IOException, PeripheralNotAvailableException
CountingListener
instance will be
asynchronously invoked when the pulse count reaches the provided terminal count value or the specified counting
time interval expires - whichever happens first.
The pulse count value is first reset and will be reset every time the terminal count value is reached or the
counting time interval expires.
If limit
is equal or less than 0
then the counting time interval will end only after the time
specified by interval
has passed. If interval
is equal or less than 0
then the counting
time interval will end only after the pulse count has reached the terminal count value specified by limit
.
Pulse counting and notification will immediately start and will repeat until it is stopped by a call to
stopCounting()
.
Only one pulse counting session can be going on at any time.listener
- the CountingListener
instance to be notified when the pulse count reaches the terminal count
value.limit
- the terminal count value.interval
- the counting time interval (in microseconds).java.io.IOException
- if an IO error occurred.java.lang.IllegalArgumentException
- if limit
and interval
are both equal or less than 0
.java.lang.NullPointerException
- if listener
is null
.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).InvalidStateException
- if counting is already active.void stopCounting() throws java.io.IOException, PeripheralNotAvailableException
java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).void suspendCounting() throws java.io.IOException, PeripheralNotAvailableException
java.io.IOException
- if an IO error occurred.PeripheralNotAvailableException
- if the peripheral is not currently available (has been closed).InvalidStateException
- if counting is not active.Copyright (c) 1990, 2013, Oracle and/or its affiliates. All rights reserved.