Interface ByteClockedSignalSource
- All Superinterfaces:
AbstractClockedSignalSource,AbstractSignalSource,ByteSignalSource,ByteSupplier,Component,Process
- All Known Implementing Classes:
ByteClockedSignalSource.AbstractRandom,ByteDelay,ByteMultiDelay,ByteProcessMux,ByteSaH,ByteStoredSignalSource
byte whose observable state is driven
by a clock.
This interface excludes signal sources whose state changes asynchronously, but is neutral with respect to whether values are computed on the fly when demanded, or stored when available and then just retrieved.
The operation of the driving clock works as specified by the Process superinterface. For example, a main loop may use the following
pattern:
RealtimeContext rc = ...;
ByteClockedSignalSource c = ...;
c.setRealtimeContext(rc);
c.init();
while (...) {
c.step();
byte v = c.getAsByte();
...
}
Every iteration of the main loop increases the clock index of the
component c. The behavior of instances of this interface is
typically specified in terms of the current clock index.
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface eu.bandm.sig.adlib2.Process
Process.Proxy -
Field Summary
Fields inherited from interface eu.bandm.sig.adlib2.AbstractClockedSignalSource
STREAM_CHARACTERISTICS, STREAM_SIZE -
Method Summary
Modifier and TypeMethodDescriptionstatic ByteClockedSignalSourceadHoc(byte... elems) Returns a new signal source that produces the given values, one per clock tick.default ByteClockedSignalSourcestatic ByteClockedSignalSourcecount(byte from) Returns a new signal source whose value increases by one at every clock tick.static ByteClockedSignalSourcecountdown(byte from) Returns a new signal source whose value decreases by one at every clock tick.static ByteClockedSignalSourcecycle(byte... elems) Returns a new signal source that produces the given values repeatedly, one per clock tick.default voiddrain(RealtimeContext rc, byte[] buffer) Write elements from this signal source to a buffer.default voiddrain(RealtimeContext rc, byte[] buffer, int offset, int length) Write elements from this signal source to a buffer.default ByteClockedSignalSourcestatic ByteClockedSignalSourcerandom()static ByteClockedSignalSourcerandom(long seed) static ByteClockedSignalSourcerandom(OptionalLong seed) Methods inherited from interface eu.bandm.sig.adlib2.ByteSignalSource
abs, add, asDouble, asFloat, asInt, clockedAfter, delayed, delayed, divide, equal, getAsByte, getConstantAsByte, getValueClass, greaterOrEqual, greaterThan, guard, hasConstantAsByte, invariant, lessOrEqual, lessThan, map, max, min, modulo, multiply, negate, negative, nonEqual, nonnegative, nonpositive, nonzero, positive, power, probe, relateWith, sampleAndHold, stored, subtract, zero, zipWithMethods inherited from interface eu.bandm.sig.adlib2.Process
afterEvery, andThen, conditional, every, every, getProcess, init, setRealtimeContext, step
-
Method Details
-
after
-
during
-
adHoc
Returns a new signal source that produces the given values, one per clock tick.After the given values are exhausted, that is after as many clock ticks as there are elements in the array, the default value of the element type is held indefinitely.
At clock index
n,this.getAsByte() == (n < elems.length ? elems[n] : (byte)0)holds.- Parameters:
elems- the array of values to produce
-
cycle
Returns a new signal source that produces the given values repeatedly, one per clock tick.When the given values are exhausted the iteration starts over.
At clock index
n,this.getAsByte() == elems[n % elems.length]holds.- Parameters:
elems- the array of values to produce
-
count
Returns a new signal source whose value increases by one at every clock tick.Initialization resets the value to the given initial value.
At clock index
n,this.getAsByte() == from + nholds.- Parameters:
from- the value at the first clock tick after initialization
-
countdown
Returns a new signal source whose value decreases by one at every clock tick. The value stops at zero, and does not decrease further to become negative.Initialization resets the value to the given initial value.
At clock index
n,this.getAsByte() == Math.max(from - n, 0)holds.- Parameters:
from- the value at the first clock tick after initialization- Throws:
IllegalArgumentException- iffromis negative
-
dt
-
random
-
random
-
random
-
drain
Write elements from this signal source to a buffer.Invoking this method as
drain(rc, b)is equivalent to invokingdrain(rc, b, 0, b.length).- Parameters:
rc- the realtime contextbuffer- the buffer to write to- See Also:
-
drain
Write elements from this signal source to a buffer.This method first invokes
Process.setRealtimeContext(RealtimeContext)andProcess.init()to put this signal source in a deterministic initial state. Then it iteratesProcess.step()andByteSignalSource.getAsByte()in turn to obtain successive values to write into the buffer.Invalid uses that would cause write access outside the bounds of the buffer are detected late; all preceding valid effects occur before an exception is thrown.
- Parameters:
rc- the realtime contextbuffer- the buffer to write tooffset- the first index to write tolength- the number of values to write- Throws:
NullPointerException- isbufferis nullIllegalArgumentException- iflengthis negativeArrayIndexOutOfBoundsException- ifoffset < 0oroffset + length > buffer.length
-