controllers manager sample buffer processing and channel management.
General cleanup across all modules to remove the executor from each
of the start() methods. Removed the B100 tuner class since it's not
yet implemented.
controllers manager sample buffer processing and channel management.
General cleanup across all modules to remove the executor from each
of the start() methods. Removed the B100 tuner class since it's not
yet implemented.
occured when the ChannelProcessionManager was allocating a new channel
causing the tuner to invoke the updateLOFrequency() method that was
trying to find a center tune frequency that would accommodate all of the
channels, specifically in the instance where the distance between the
highest channel and the middle channel was exactly one-half of the
tuner's bandwidth. This situation would cause the calculated adjustment
to be zero and would cause an infinite loop, locking all channels from
accessing the any channel startup/teardown events and causing running
channels to block with buffer overflows. Added 1 to the adjustment to
ensure that the initial adjustment placed the center overlapping channel
fully to the left of the center DC spike so that on the next iteration
that channel would no longer be overlapping.
state and replaces it with a processing chain heartbeat that is generated
by the sample source.
Previously, the state monitor was running on a separate thread and this
was causing multi-threading issues. With this update, all channel state
operations (and all module operations) occur on the source's buffer
processing thread.
Tweaked buffer size limits and buffer handling to attempt to avoid overflow situations in the first place.
Resolved an issue where the tuner processor was not deregistering correctly from the LIBUSB tuner processor during tuner shutdown.
detect encrypted audio state so that encrypted audio is not (incorrectly)
decoded and played back to the user.
Processes HDU and LDU2 messages to identify encrypted call state. Once
established, all subsequent LDU1/2 messages are decoded only if the call
is unencrypted. If an LDU1 message is received out-of-sequence, meaning
that the initial HDU message was missed, then the LDU1 is cached until
we receive an LDU2 message and correctly determine the call encryption
state.