SoDaRadio-5.0.3-master:8901fb5
Public Member Functions | Private Member Functions | Private Attributes | List of all members
SoDa::BaseBandRX Class Reference

BaseBandRX – this is the audio processing chain for the recieve path. More...

#include <BaseBandRX.hxx>

Inheritance diagram for SoDa::BaseBandRX:
SoDa::SoDaThread SoDa::SoDaBase SoDa::Debug

Public Member Functions

 BaseBandRX (Params *params, DatMBox *rx_stream, CmdMBox *cmd_stream, AudioIfc *audio_ifc)
 the constructor More...
 
void run ()
 the run method – does the work of the audio receiver process More...
 
- Public Member Functions inherited from SoDa::SoDaThread
 SoDaThread (const std::string &oname)
 
void start ()
 Execute the threads run loop. More...
 
void join ()
 more properly "Wait for this thread to exit its run loop". More...
 
bool waitForJoin (unsigned int m)
 wait for the thread to stop running, or the specified time to pass. More...
 
void execCommand (Command *cmd)
 Execute (dispatch) a message removed from the command stream to one of the basic Command handler functions. More...
 
- Public Member Functions inherited from SoDa::SoDaBase
 SoDaBase (const std::string &oname)
 The constructor – pass a name for the object. More...
 
std::string & getObjName ()
 get the name of this object More...
 
SoDaBasefindSoDaObject (const std::string &oname)
 find a SoDa Object by name. More...
 
double getTime ()
 Get a time stamp in nS resolution that monotonically increases and that is very inexpensive (typically < 100nS). More...
 
- Public Member Functions inherited from SoDa::Debug
 Debug (std::string _unit_name=std::string("UNKNOWN"))
 
 Debug (const char *_unit_name_cstr)
 
 Debug (unsigned int _debug_level, std::string _unit_name=std::string("UNKNOWN"))
 
 Debug (unsigned int _debug_level, const char *_unit_name_cstr)
 
void debugMsg (const std::string &msg, unsigned int threshold=1)
 
void debugMsg (const boost::format &fmt, unsigned int threshold=1)
 
void debugMsg (const char *msg, unsigned int threshold=1)
 
void setDebugLevel (unsigned int v)
 
unsigned int getDebugLevel ()
 

Private Member Functions

void execGetCommand (Command *cmd)
 execute GET commands from the command channel More...
 
void execSetCommand (Command *cmd)
 handle SET commands from the command channel More...
 
void execRepCommand (Command *cmd)
 handle Report commands from the command channel More...
 
void demodulateSSB (std::complex< float > *drxbuf, SoDa::Command::ModulationType mod)
 demodulate the input stream as an SSB signal place the resulting audio buffer on the audio output queue. More...
 
void demodulateAM (std::complex< float > *drxbuf)
 demodulate the input stream as an amplitude modulated signal place the resulting audio buffer on the audio output queue. More...
 
void demodulateNBFM (std::complex< float > *drxbuf, SoDa::Command::ModulationType mod, float af_gain)
 demodulate the input stream as a narrowband frequency modulated signal place the resulting audio buffer on the audio output queue. More...
 
void demodulateWBFM (SoDaBuf *rxbuf, SoDa::Command::ModulationType mod, float af_gain)
 demodulate the input stream as a wideband frequency modulated signal place the resulting audio buffer on the audio output queue. More...
 
void demodulate (SoDaBuf *rxbuf)
 apply the currently selected demodulation scheme to the input RX buffer place the resulting audio buffer on the audio output queue. More...
 
void repAFFilterShape ()
 send a report of the lower and upper edges of the IF passband based on the current filter and modulation type. More...
 
void pendAudioBuffer (float *b)
 put an audio buffer on the "pending for output" list More...
 
float * getNextAudioBuffer ()
 return the next queued audio buffer to pass to the audio output device More...
 
void flushAudioBuffers ()
 empty the queue of pending audio buffers, we're going into TX mode. More...
 
void freeAudioBuffer (float *b)
 add an audio buffer to the free list, we've dispatched it. More...
 
float * getFreeAudioBuffer ()
 remove a buffer from the free list, or allocate one if the free list is empty. More...
 
int readyAudioBuffers ()
 return number audio buffers available More...
 
void buildFilterMap ()
 build the audio filter map for selected bandwidths More...
 

Private Attributes

unsigned int audio_buffer_size
 size of output audio buffer chunk More...
 
unsigned int rf_buffer_size
 size of input RF buffer chunk More...
 
double audio_sample_rate
 sample rate of audio output – assumed 48KHz More...
 
double rf_sample_rate
 sample rate of RF input from USRP – assumed 625KHz More...
 
bool audio_rx_stream_enabled
 if true, send pending audio buffers to output More...
 
bool audio_rx_stream_needs_start
 if true, the audio output device needs a wakeup More...
 
bool sidetone_stream_enabled
 if true, send CW sidetone to audio output More...
 
SoDa::Command::ModulationType rx_modulation
 current receive modulation mode (USB,LSB,CW_U,CW_L,NBFM,WBFM,AM,...) More...
 
DatMBoxrx_stream
 mailbox producing rx sample stream from USRP More...
 
CmdMBoxcmd_stream
 mailbox producing command stream from user More...
 
unsigned int rx_subs
 mailbox subscription ID for rx data stream More...
 
unsigned int cmd_subs
 mailbox subscription ID for command stream More...
 
AudioIfcaudio_ifc
 pointer to the audio interface (output) object More...
 
bool in_catchup
 when true, the audio server has fallen behind... More...
 
bool in_fallback
 when true, the audio server has gotten ahead... More...
 
unsigned int catchup_rand_mask
 a mask to use for fast selection of a random index into an audio buffer. More...
 
std::queue< float * > free_buffers
 a pool of free audio buffers More...
 
std::queue< float * > ready_buffers
 a list of audio buffers ready to send to the output More...
 
boost::mutex free_lock
 lock for the free_buffers pool More...
 
boost::mutex ready_lock
 lock for the ready_buffers_pool More...
 
float * sidetone_silence
 a sequence of zero samples to stuff silence into the audio More...
 
SoDa::ReSample625to48rf_resampler
 downsample the RF input to 48KS/s More...
 
SoDa::ReSample625to48wbfm_resampler
 downsample the RF input to 48KS/s for WBFM unit More...
 
SoDa::Command::AudioFilterBW af_filter_selection
 currently audio filter selector More...
 
SoDa::OSFiltercur_audio_filter
 currently selected audio filter More...
 
SoDa::OSFilterfm_audio_filter
 audio filter for FM (wider passband) More...
 
SoDa::OSFilteram_pre_filter
 Before AM demod, we do some (6KHz) prefilter. More...
 
SoDa::OSFilternbfm_pre_filter
 Before NBFM demod, we do some (15KHz) prefilter – rf rate. More...
 
SoDa::OSFilteram_audio_filter
 After AM demod, we do a second filter. More...
 
std::map< SoDa::Command::AudioFilterBW, SoDa::OSFilter * > filter_map
 map filter selectors to the filter objects More...
 
SoDa::HilbertTransformerhilbert
 hilbert transform object for SSB/CW widgets More...
 
float af_gain
 audio gain setting for RX mode More...
 
float af_sidetone_gain
 audio gain setting for TX/CW mode More...
 
float * cur_af_gain
 pointer to the gain setting for this mode More...
 
float last_phase_samp
 history value used to calculate dPhase/dt in FM atan based discriminator. More...
 
MedianFilter3< float > fmMedianFilter
 simple 3 point median filter for FM units More...
 
unsigned int dbg_ctr
 debug counter, used to support one-time or infrequent bulletins More...
 
std::ofstream dbg_out
 
bool audio_save_enable
 
std::ofstream audio_file
 
std::ofstream audio_file2
 

Additional Inherited Members

- Static Public Member Functions inherited from SoDa::Debug
static void setDefaultLevel (unsigned int v)
 
static unsigned int getDefaultLevel ()
 
static void setGlobalLevel (unsigned int v)
 
static unsigned int getGlobalLevel ()
 
- Static Public Attributes inherited from SoDa::Debug
static boost::mutex debug_msg_mutex
 
- Protected Member Functions inherited from SoDa::Debug
std::string curDateTime ()
 
- Protected Attributes inherited from SoDa::Debug
std::string unit_name
 the name of the unit reporting status More...
 
unsigned int debug_level
 the debug level (threshold) for messages More...
 
- Static Protected Attributes inherited from SoDa::Debug
static unsigned int default_debug_level = 0
 
static unsigned int global_debug_level = 0
 

Detailed Description

BaseBandRX – this is the audio processing chain for the recieve path.

SoDa_Radio_RX_Signal_Path.svg

The BaseBandRX unit accepts the 3rd IF (nominally 80kHz to 200kHz) from the USRPRX thread on the rx_stream.

In most cases (all but Wide Band FM) the rx stream is downselected by a 625 to 48 resampler before being passed through an audio filter and finally demodulated.

As each buffer/timeslice is demodulated, it is placed on a queue of outbound audio blocks for the host processor's audio system. Since there is some slop in the timing (specifically, the clock governing the radio is not necessarily in sync with the audio system clock) the BaseBandRX unit monitors the backlog of outbound audio buffers. When this backlog gets longer than about 400mS, the unit will "drop out" a sample here and there until the downstream sound system catches up.

BaseBandRX supports CW_U (upper sideband CW), CW_L (lower sideband CW), USB, and LSB modulation via the phasing method, since both I and Q channels are available. AM is performed with a simple magnitude detector.

Definition at line 75 of file BaseBandRX.hxx.

Constructor & Destructor Documentation

◆ BaseBandRX()

SoDa::BaseBandRX::BaseBandRX ( Params params,
DatMBox rx_stream,
CmdMBox cmd_stream,
AudioIfc audio_ifc 
)

Member Function Documentation

◆ buildFilterMap()

void SoDa::BaseBandRX::buildFilterMap ( )
private

◆ demodulate()

void SoDa::BaseBandRX::demodulate ( SoDaBuf rxbuf)
private

apply the currently selected demodulation scheme to the input RX buffer place the resulting audio buffer on the audio output queue.

Parameters
rxbufRF input buffer

Definition at line 246 of file BaseBandRX.cxx.

References SoDa::Command::AM, am_pre_filter, SoDa::ReSample625to48::apply(), SoDa::OSFilter::apply(), audio_buffer_size, cur_af_gain, cur_audio_filter, SoDa::Command::CW_L, SoDa::Command::CW_U, demodulateAM(), demodulateNBFM(), demodulateSSB(), demodulateWBFM(), SoDa::SoDaBuf::getComplexBuf(), SoDa::Command::LSB, SoDa::Command::NBFM, nbfm_pre_filter, rf_resampler, rx_modulation, SoDa::Command::USB, and SoDa::Command::WBFM.

Referenced by run().

◆ demodulateAM()

void SoDa::BaseBandRX::demodulateAM ( std::complex< float > *  drxbuf)
private

demodulate the input stream as an amplitude modulated signal place the resulting audio buffer on the audio output queue.

Parameters
drxbufdownsampled RF input buffer

Definition at line 220 of file BaseBandRX.cxx.

References am_audio_filter, SoDa::OSFilter::apply(), audio_buffer_size, getFreeAudioBuffer(), and pendAudioBuffer().

Referenced by demodulate().

◆ demodulateNBFM()

void SoDa::BaseBandRX::demodulateNBFM ( std::complex< float > *  drxbuf,
SoDa::Command::ModulationType  mod,
float  af_gain 
)
private

demodulate the input stream as a narrowband frequency modulated signal place the resulting audio buffer on the audio output queue.

Parameters
drxbufdownsampled RF input buffer
modmodulation type – NBFM
af_gainfactor to goose the audio output

Definition at line 160 of file BaseBandRX.cxx.

References SoDa::OSFilter::apply(), audio_buffer_size, audio_file2, audio_save_enable, cur_audio_filter, getFreeAudioBuffer(), last_phase_samp, and pendAudioBuffer().

Referenced by demodulate().

◆ demodulateSSB()

void SoDa::BaseBandRX::demodulateSSB ( std::complex< float > *  drxbuf,
SoDa::Command::ModulationType  mod 
)
private

demodulate the input stream as an SSB signal place the resulting audio buffer on the audio output queue.

Parameters
drxbufdownsampled RF input buffer
modmodulation type – LSB, USB, CW_U, or CW_R

Definition at line 201 of file BaseBandRX.cxx.

References SoDa::HilbertTransformer::applyIQ(), audio_buffer_size, SoDa::Command::CW_L, getFreeAudioBuffer(), hilbert, SoDa::Command::LSB, and pendAudioBuffer().

Referenced by demodulate().

◆ demodulateWBFM()

void SoDa::BaseBandRX::demodulateWBFM ( SoDaBuf rxbuf,
SoDa::Command::ModulationType  mod,
float  af_gain 
)
private

demodulate the input stream as a wideband frequency modulated signal place the resulting audio buffer on the audio output queue.

Note the wideband FM unit takes the raw RX buffer rather than the downsampled rx buffer.

Parameters
rxbufRF input buffer
modmodulation type – WBFM
af_gainfactor to goose the audio output

Definition at line 123 of file BaseBandRX.cxx.

References SoDa::ReSample625to48::apply(), SoDa::OSFilter::apply(), fm_audio_filter, SoDa::SoDaBuf::getComplexBuf(), getFreeAudioBuffer(), last_phase_samp, pendAudioBuffer(), rf_buffer_size, and wbfm_resampler.

Referenced by demodulate().

◆ execGetCommand()

void SoDa::BaseBandRX::execGetCommand ( SoDa::Command cmd)
privatevirtual

◆ execRepCommand()

void SoDa::BaseBandRX::execRepCommand ( SoDa::Command cmd)
privatevirtual

handle Report commands from the command channel

Parameters
cmdthe incoming command

Reimplemented from SoDa::SoDaThread.

Definition at line 421 of file BaseBandRX.cxx.

◆ execSetCommand()

void SoDa::BaseBandRX::execSetCommand ( SoDa::Command cmd)
privatevirtual

◆ flushAudioBuffers()

void SoDa::BaseBandRX::flushAudioBuffers ( )
private

empty the queue of pending audio buffers, we're going into TX mode.

Definition at line 603 of file BaseBandRX.cxx.

References freeAudioBuffer(), ready_buffers, and ready_lock.

Referenced by execSetCommand().

◆ freeAudioBuffer()

void SoDa::BaseBandRX::freeAudioBuffer ( float *  b)
private

add an audio buffer to the free list, we've dispatched it.

Parameters
bpointer to audio buffer.

Definition at line 558 of file BaseBandRX.cxx.

References free_buffers, and free_lock.

Referenced by flushAudioBuffers(), and run().

◆ getFreeAudioBuffer()

float * SoDa::BaseBandRX::getFreeAudioBuffer ( )
private

remove a buffer from the free list, or allocate one if the free list is empty.

Returns
a pointer to a free audio buffer

Definition at line 563 of file BaseBandRX.cxx.

References audio_buffer_size, free_buffers, and free_lock.

Referenced by BaseBandRX(), demodulateAM(), demodulateNBFM(), demodulateSSB(), and demodulateWBFM().

◆ getNextAudioBuffer()

float * SoDa::BaseBandRX::getNextAudioBuffer ( )
private

return the next queued audio buffer to pass to the audio output device

Returns
a pointer to the next buffer in sequence

Definition at line 593 of file BaseBandRX.cxx.

References ready_buffers, and ready_lock.

Referenced by run().

◆ pendAudioBuffer()

void SoDa::BaseBandRX::pendAudioBuffer ( float *  b)
private

put an audio buffer on the "pending for output" list

Parameters
bpointer to an audio buffer

Definition at line 582 of file BaseBandRX.cxx.

References audio_buffer_size, audio_file, audio_save_enable, ready_buffers, and ready_lock.

Referenced by BaseBandRX(), demodulateAM(), demodulateNBFM(), demodulateSSB(), and demodulateWBFM().

◆ readyAudioBuffers()

int SoDa::BaseBandRX::readyAudioBuffers ( )
private

return number audio buffers available

Definition at line 576 of file BaseBandRX.cxx.

References ready_buffers, and ready_lock.

Referenced by execGetCommand(), and run().

◆ repAFFilterShape()

void SoDa::BaseBandRX::repAFFilterShape ( )
private

send a report of the lower and upper edges of the IF passband based on the current filter and modulation type.

Definition at line 297 of file BaseBandRX.cxx.

References SoDa::Command::AM, cmd_stream, cur_audio_filter, SoDa::Command::CW_L, SoDa::Command::CW_U, SoDa::OSFilter::getFilterEdges(), SoDa::Command::LSB, SoDa::MultiMBox< T >::put(), SoDa::Command::REP, SoDa::Command::RX_AF_FILTER_SHAPE, rx_modulation, and SoDa::Command::USB.

Referenced by execSetCommand().

◆ run()

void SoDa::BaseBandRX::run ( )
virtual

Member Data Documentation

◆ af_filter_selection

SoDa::Command::AudioFilterBW SoDa::BaseBandRX::af_filter_selection
private

currently audio filter selector

Definition at line 253 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execGetCommand(), and execSetCommand().

◆ af_gain

float SoDa::BaseBandRX::af_gain
private

audio gain setting for RX mode

Definition at line 268 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execGetCommand(), and execSetCommand().

◆ af_sidetone_gain

float SoDa::BaseBandRX::af_sidetone_gain
private

audio gain setting for TX/CW mode

Definition at line 269 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and execSetCommand().

◆ am_audio_filter

SoDa::OSFilter* SoDa::BaseBandRX::am_audio_filter
private

After AM demod, we do a second filter.

Definition at line 258 of file BaseBandRX.hxx.

Referenced by buildFilterMap(), and demodulateAM().

◆ am_pre_filter

SoDa::OSFilter* SoDa::BaseBandRX::am_pre_filter
private

Before AM demod, we do some (6KHz) prefilter.

Definition at line 256 of file BaseBandRX.hxx.

Referenced by buildFilterMap(), and demodulate().

◆ audio_buffer_size

unsigned int SoDa::BaseBandRX::audio_buffer_size
private

size of output audio buffer chunk

Definition at line 173 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), buildFilterMap(), demodulate(), demodulateAM(), demodulateNBFM(), demodulateSSB(), getFreeAudioBuffer(), pendAudioBuffer(), and run().

◆ audio_file

std::ofstream SoDa::BaseBandRX::audio_file
private

Definition at line 284 of file BaseBandRX.hxx.

Referenced by pendAudioBuffer(), and run().

◆ audio_file2

std::ofstream SoDa::BaseBandRX::audio_file2
private

Definition at line 285 of file BaseBandRX.hxx.

Referenced by demodulateNBFM(), and run().

◆ audio_ifc

AudioIfc* SoDa::BaseBandRX::audio_ifc
private

pointer to the audio interface (output) object

Definition at line 188 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execSetCommand(), and run().

◆ audio_rx_stream_enabled

bool SoDa::BaseBandRX::audio_rx_stream_enabled
private

if true, send pending audio buffers to output

Definition at line 177 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execSetCommand(), and run().

◆ audio_rx_stream_needs_start

bool SoDa::BaseBandRX::audio_rx_stream_needs_start
private

if true, the audio output device needs a wakeup

Definition at line 178 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execSetCommand(), and run().

◆ audio_sample_rate

double SoDa::BaseBandRX::audio_sample_rate
private

sample rate of audio output – assumed 48KHz

Definition at line 175 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and buildFilterMap().

◆ audio_save_enable

bool SoDa::BaseBandRX::audio_save_enable
private

Definition at line 283 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), demodulateNBFM(), pendAudioBuffer(), and run().

◆ catchup_rand_mask

unsigned int SoDa::BaseBandRX::catchup_rand_mask
private

a mask to use for fast selection of a random index into an audio buffer.

Definition at line 233 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ cmd_stream

CmdMBox* SoDa::BaseBandRX::cmd_stream
private

mailbox producing command stream from user

Definition at line 184 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), execGetCommand(), execSetCommand(), repAFFilterShape(), and run().

◆ cmd_subs

unsigned int SoDa::BaseBandRX::cmd_subs
private

mailbox subscription ID for command stream

Definition at line 186 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ cur_af_gain

float* SoDa::BaseBandRX::cur_af_gain
private

pointer to the gain setting for this mode

Definition at line 270 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), demodulate(), and execSetCommand().

◆ cur_audio_filter

SoDa::OSFilter* SoDa::BaseBandRX::cur_audio_filter
private

currently selected audio filter

Definition at line 254 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), demodulate(), demodulateNBFM(), execSetCommand(), and repAFFilterShape().

◆ dbg_ctr

unsigned int SoDa::BaseBandRX::dbg_ctr
private

debug counter, used to support one-time or infrequent bulletins

Definition at line 279 of file BaseBandRX.hxx.

Referenced by BaseBandRX().

◆ dbg_out

std::ofstream SoDa::BaseBandRX::dbg_out
private

Definition at line 280 of file BaseBandRX.hxx.

◆ filter_map

std::map<SoDa::Command::AudioFilterBW, SoDa::OSFilter *> SoDa::BaseBandRX::filter_map
private

map filter selectors to the filter objects

Definition at line 262 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), buildFilterMap(), and execSetCommand().

◆ fm_audio_filter

SoDa::OSFilter* SoDa::BaseBandRX::fm_audio_filter
private

audio filter for FM (wider passband)

Definition at line 255 of file BaseBandRX.hxx.

Referenced by buildFilterMap(), and demodulateWBFM().

◆ fmMedianFilter

MedianFilter3<float> SoDa::BaseBandRX::fmMedianFilter
private

simple 3 point median filter for FM units

Definition at line 276 of file BaseBandRX.hxx.

◆ free_buffers

std::queue<float *> SoDa::BaseBandRX::free_buffers
private

a pool of free audio buffers

Definition at line 235 of file BaseBandRX.hxx.

Referenced by execGetCommand(), freeAudioBuffer(), and getFreeAudioBuffer().

◆ free_lock

boost::mutex SoDa::BaseBandRX::free_lock
private

lock for the free_buffers pool

Definition at line 238 of file BaseBandRX.hxx.

Referenced by freeAudioBuffer(), and getFreeAudioBuffer().

◆ hilbert

SoDa::HilbertTransformer* SoDa::BaseBandRX::hilbert
private

hilbert transform object for SSB/CW widgets

Definition at line 265 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and demodulateSSB().

◆ in_catchup

bool SoDa::BaseBandRX::in_catchup
private

when true, the audio server has fallen behind...

Definition at line 231 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ in_fallback

bool SoDa::BaseBandRX::in_fallback
private

when true, the audio server has gotten ahead...

Definition at line 232 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ last_phase_samp

float SoDa::BaseBandRX::last_phase_samp
private

history value used to calculate dPhase/dt in FM atan based discriminator.

Definition at line 273 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), demodulateNBFM(), and demodulateWBFM().

◆ nbfm_pre_filter

SoDa::OSFilter* SoDa::BaseBandRX::nbfm_pre_filter
private

Before NBFM demod, we do some (15KHz) prefilter – rf rate.

Definition at line 257 of file BaseBandRX.hxx.

Referenced by buildFilterMap(), and demodulate().

◆ ready_buffers

std::queue<float *> SoDa::BaseBandRX::ready_buffers
private

a list of audio buffers ready to send to the output

Definition at line 236 of file BaseBandRX.hxx.

Referenced by flushAudioBuffers(), getNextAudioBuffer(), pendAudioBuffer(), and readyAudioBuffers().

◆ ready_lock

boost::mutex SoDa::BaseBandRX::ready_lock
private

lock for the ready_buffers_pool

Definition at line 239 of file BaseBandRX.hxx.

Referenced by flushAudioBuffers(), getNextAudioBuffer(), pendAudioBuffer(), and readyAudioBuffers().

◆ rf_buffer_size

unsigned int SoDa::BaseBandRX::rf_buffer_size
private

size of input RF buffer chunk

Definition at line 174 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), buildFilterMap(), and demodulateWBFM().

◆ rf_resampler

SoDa::ReSample625to48* SoDa::BaseBandRX::rf_resampler
private

downsample the RF input to 48KS/s

Definition at line 244 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and demodulate().

◆ rf_sample_rate

double SoDa::BaseBandRX::rf_sample_rate
private

sample rate of RF input from USRP – assumed 625KHz

Definition at line 176 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and buildFilterMap().

◆ rx_modulation

SoDa::Command::ModulationType SoDa::BaseBandRX::rx_modulation
private

current receive modulation mode (USB,LSB,CW_U,CW_L,NBFM,WBFM,AM,...)

Definition at line 181 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), demodulate(), execSetCommand(), and repAFFilterShape().

◆ rx_stream

DatMBox* SoDa::BaseBandRX::rx_stream
private

mailbox producing rx sample stream from USRP

Definition at line 183 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ rx_subs

unsigned int SoDa::BaseBandRX::rx_subs
private

mailbox subscription ID for rx data stream

Definition at line 185 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and run().

◆ sidetone_silence

float* SoDa::BaseBandRX::sidetone_silence
private

a sequence of zero samples to stuff silence into the audio

Definition at line 241 of file BaseBandRX.hxx.

Referenced by BaseBandRX().

◆ sidetone_stream_enabled

bool SoDa::BaseBandRX::sidetone_stream_enabled
private

if true, send CW sidetone to audio output

Definition at line 179 of file BaseBandRX.hxx.

Referenced by execSetCommand().

◆ wbfm_resampler

SoDa::ReSample625to48* SoDa::BaseBandRX::wbfm_resampler
private

downsample the RF input to 48KS/s for WBFM unit

Definition at line 246 of file BaseBandRX.hxx.

Referenced by BaseBandRX(), and demodulateWBFM().


The documentation for this class was generated from the following files: