Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

VrSigProc Class Reference

The base class for all signal processing modules. More...

#include <VrSigProc.h>

Inheritance diagram for VrSigProc:

GrAdd< iType, oType > GrAGC< iType, oType > GrArbFunc< iType, oType > GrAtscFPLL GrComplexVCOMixer< iType, oType > GrCostasLoop< iType, oType > GrFFT_vCC GrFFT_vFC GrFloatToComplex GrImag< oType > GrKeepOneInN GrLimiter< iType, oType > GrMagnitude< iType, oType > GrMixer< iType, oType > GrMultiply< iType, oType > GrPAMMod< iType, oType > GrParallelToSerial GrReal< oType > GrSerialToParallel GrSink GrSource GrSSBMod< oType > GrWeaverModTail< iType, oType > VrAmp< iType, oType > VrAWGN< iType > VrBits2Symbols VrFixOffset< iType, oType > VrHistoryProc< iType, oType > VrHistoryProc< atsc_data_segment, atsc_data_segment > VrHistoryProc< atsc_data_segment, atsc_soft_data_segment > VrHistoryProc< atsc_data_segment, oType > VrHistoryProc< atsc_mpeg_packet, atsc_mpeg_packet_no_sync > VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet > VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet_rs_encoded > VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_data_segment > VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_no_sync > VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_rs_encoded > VrHistoryProc< atsc_soft_data_segment, atsc_mpeg_packet_rs_encoded > VrHistoryProc< complex, oType > VrHistoryProc< float, atsc_soft_data_segment > VrHistoryProc< float, float > VrHistoryProc< float, short > VrHistoryProc< float, short > VrHistoryProc< float, VrComplex > VrHistoryProc< iType, char > VrHistoryProc< iType, iType > VrHistoryProc< iType, VrComplex > VrHistoryProc< short, float > VrHistoryProc< short, int > VrHistoryProc< short, VrComplex > VrHistoryProc< T, T > VrHistoryProc< VrComplex, VrComplex > VrIIRfilter< iType, oType > VrMixer< iType, oType > VrMUX< T > VrNop< ioType > VrSink< iType > VrSink< unsigned long > VrSink< VrComplex > VrSource< oType > VrSource< unsigned long > VrSum< iType, oType > List of all members.

Public Member Functions

 VrSigProc (int number_of_outputs, unsigned int arg_itype_size, unsigned int arg_type_size)
virtual ~VrSigProc ()
bool connect_proc (VrSigProc *proc, port n)
 connect our next input to proc's nth output
virtual const char * name ()
 default name for a module (override with actual name)
virtual int forecast (VrSampleRange output, VrSampleRange inputs[])
 map output range to required input ranges
virtual float memoryTouched ()
virtual int work (VrSampleRange output, void *o[], VrSampleRange inputs[], void *i[])=0
 Generate up to output.size output points at o[output#][sample#] using data at the inputptrs[input#][sample#].
virtual float averageInputUse (int n)
virtual int checkOutputSamplingFrequency (float)
bool isSink ()
 return true iff this VrSigProc is a sink
virtual int setSamplingFrequency (double sf)
virtual bool dataReady (VrSampleRange r)
 has the data been computed?
virtual void size_setup (unsigned int size)
virtual void setup ()
VrSampleIndex getMarkedWP ()
unsigned int getMaxOutputSize ()
VrSampleIndex getWP ()
double getSamplingFrequency ()
virtual int callback (int attribute_number, float value)

Protected Member Functions

virtual VrSigProcgetUpstreamModuleN (port p)
double getInputSamplingFrequencyN (port p)
void setOutputSize (int o)
 set required multiple for number of items produced
unsigned int getOutputSize ()
void setup_upstream ()
int getNumberInputs ()
bool is_synced (VrSampleIndex arg_index)
void sync (VrSampleIndex arg_index)
 force rest of procedure to run sequentially
VrSampleIndex proc_minRP ()

Protected Attributes

VrBuffer ** outBuffer
unsigned int maxDSReadSize
 max Down Stream Read Size. How big a read we might get. maxOutSize should never exceed this.
unsigned int numberInputs
unsigned int numberOutputs

Private Member Functions

 MUTEX_DECLARE (mutex)
void attach_writer (writerLL *r)
void detach_writer (writerLL *r)
void init_base ()
 Cause initialize methods to be called. This is called on all sinks for which isConnectedToSource is true, and results in the pre_initialize and initialize methods being called in the order source to sink.
virtual void pre_initialize ()
 Set sampling frequency based on upstream sampling freq.
virtual void initialize ()
 Initialize any local state that is dependent on sampling frequency.
virtual bool isConnectedToSource ()
int minwritespace (VrSampleIndex newWP, unsigned int desired)
void initOutputBuffers (int n)
virtual void initOutputBuffer (int n)
void initMarkedData ()
virtual unsigned int mapSizeUp (int i, unsigned int size)
virtual bool dataMarked (VrSampleRange r)
 is data marked to be computed?
virtual int markData (VrSampleRange r)
 figure out what data to compute
virtual int markDataUpstream (VrSampleRange *inputs, bool *dataMarkedUpstream)
 propagate marking upstream
virtual bool compute ()
 compute the marked data

Private Attributes

int uses_sync
double proc_samplingFrequency
volatile VrSampleIndex WP
 data before this has been written
volatile VrSampleIndex markedWP
 data before this has been marked and will be written
unsigned int maxOutSize
 maximum size that we should ever output at once.
VrConnect ** inputConn
unsigned int setupCalled
unsigned int outputSize
unsigned int type_size
unsigned int itype_size
unsigned int initializeCalled
VrSampleRange myMarkedData
VrSampleRangeinputs_forecasted
writerLLmyWriterLL
readerLLmyReaderLLs
volatile writerLLfirst
volatile writerLLlast

Static Private Attributes

static const int MARK_ALREADY = 2
 all data is already computed
static const int MARK_READY = 1
 data is ready to be computed (and has been marked)
static const int MARK_READY_NO_MARK = 0
 data is ready on this level or above,
static const int MARK_NO_READY = -1
 no data is ready to be computed
static const int MARK_THREAD = -2
 data is marked by another thread
static const int MARK_continue = -3
 flag distinct from all others (keep last)

Friends

class VrMultiTask

Detailed Description

The base class for all signal processing modules.

All signal processing modules are descendants from VrSigProc. In the simplest case a user defines a subclass of VrSigProc and overrides the forecast and work methods.


Constructor & Destructor Documentation

VrSigProc::VrSigProc int  number_of_outputs,
unsigned int  arg_itype_size,
unsigned int  arg_type_size
 

VrSigProc::~VrSigProc  )  [virtual]
 


Member Function Documentation

void VrSigProc::attach_writer writerLL r  )  [private]
 

virtual float VrSigProc::averageInputUse int  n  )  [inline, virtual]
 

Reimplemented in VrDecimatingSigProc< iType, oType >, VrSkippingSink< iType >, VrDecimatingSigProc< float, float >, VrDecimatingSigProc< iType, VrComplex >, VrDecimatingSigProc< iType, char >, VrDecimatingSigProc< float, VrComplex >, VrDecimatingSigProc< short, VrComplex >, VrDecimatingSigProc< short, int >, VrDecimatingSigProc< float, atsc_soft_data_segment >, VrDecimatingSigProc< float, short >, VrDecimatingSigProc< char, char >, VrDecimatingSigProc< iType, iType >, VrDecimatingSigProc< VrComplex, VrComplex >, VrDecimatingSigProc< iType, VrComplex >, and VrSkippingSink< VrComplex >.

virtual int VrSigProc::callback int  attribute_number,
float  value
[inline, virtual]
 

virtual int VrSigProc::checkOutputSamplingFrequency float   )  [inline, virtual]
 

Reimplemented in VrDecimatingSigProc< iType, oType >, GrAtscConvert2xTo20, VrDecimatingSigProc< float, float >, VrDecimatingSigProc< iType, VrComplex >, VrDecimatingSigProc< iType, char >, VrDecimatingSigProc< float, VrComplex >, VrDecimatingSigProc< short, VrComplex >, VrDecimatingSigProc< short, int >, VrDecimatingSigProc< float, atsc_soft_data_segment >, VrDecimatingSigProc< float, short >, VrDecimatingSigProc< char, char >, VrDecimatingSigProc< iType, iType >, VrDecimatingSigProc< VrComplex, VrComplex >, and VrDecimatingSigProc< iType, VrComplex >.

bool VrSigProc::compute  )  [private, virtual]
 

compute the marked data

Compute is the second part of the markData / compute dyad. These two methods are called from VrMultiTask::schedule to schedule and compute the work of the signal processing modules.

Note that this can run in parallel. All of the scheduling is done in markData, so there is very little overhead or contention here.

Returns:
true if we successfully computed all marked data. We return false if some module is not able to successfully compute the amount of data that it was expected to.

bool VrSigProc::connect_proc VrSigProc proc,
port  n
 

connect our next input to proc's nth output

Connect our next input to PROC's Pth output.

bool VrSigProc::dataMarked VrSampleRange  r  )  [private, virtual]
 

is data marked to be computed?

Returns:
true if all data in r is marked to be computed

bool VrSigProc::dataReady VrSampleRange  r  )  [virtual]
 

has the data been computed?

Returns:
true if all data in r has been computed.

void VrSigProc::detach_writer writerLL r  )  [private]
 

int VrSigProc::forecast VrSampleRange  output,
VrSampleRange  inputs[]
[virtual]
 

map output range to required input ranges

Reimplemented in VrAudioDecoder< iType >, VrAudioEncoder< iType >, VrComplexDemod< iType >, VrCorr< iType, oType >, VrDecimatingSigProc< iType, oType >, VrHistoryProc< iType, oType >, VrInterpolatingSigProc< iType, oType >, VrInterpolatingSigProcNoWork< iType, oType >, VrSyncCorr< iType >, VrSyncFilter< iType >, VrSkippingSink< iType >, GrAtscBitTimingLoop, GrAtscBitTimingLoop2, GrAtscBitTimingLoop3, GrAtscConvert2xTo20, GrAtscEqualizer, GrAtscFieldSyncDemux, GrAtscFieldSyncMux, GrAtscSegSymSyncImpl, GrFractionalInterpolatingSigProc< iType, oType >, GrKeepOneInN, GrParallelToSerial, GrSerialToParallel, GrTestSink, GrTestSkippingSink, VrDecimatingSigProc< float, float >, VrDecimatingSigProc< iType, VrComplex >, VrDecimatingSigProc< iType, char >, VrDecimatingSigProc< float, VrComplex >, VrDecimatingSigProc< short, VrComplex >, VrDecimatingSigProc< short, int >, VrDecimatingSigProc< float, atsc_soft_data_segment >, VrDecimatingSigProc< float, short >, VrDecimatingSigProc< char, char >, VrDecimatingSigProc< iType, iType >, VrDecimatingSigProc< VrComplex, VrComplex >, VrDecimatingSigProc< iType, VrComplex >, VrHistoryProc< short, VrComplex >, VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_no_sync >, VrHistoryProc< float, float >, VrHistoryProc< iType, VrComplex >, VrHistoryProc< atsc_data_segment, atsc_data_segment >, VrHistoryProc< atsc_soft_data_segment, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< short, int >, VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< VrComplex, VrComplex >, VrHistoryProc< iType, iType >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_data_segment >, VrHistoryProc< atsc_mpeg_packet, atsc_mpeg_packet_no_sync >, VrHistoryProc< complex, oType >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< float, atsc_soft_data_segment >, VrHistoryProc< float, short >, VrHistoryProc< char, char >, VrHistoryProc< float, VrComplex >, VrHistoryProc< atsc_data_segment, oType >, VrHistoryProc< T, T >, VrHistoryProc< float, short >, VrHistoryProc< iType, char >, VrHistoryProc< atsc_data_segment, atsc_soft_data_segment >, VrHistoryProc< short, float >, VrInterpolatingSigProcNoWork< atsc_data_segment, oType >, VrSyncCorr< char >, and VrSkippingSink< VrComplex >.

double VrSigProc::getInputSamplingFrequencyN port  p  )  [protected]
 

VrSampleIndex VrSigProc::getMarkedWP  )  [inline]
 

unsigned int VrSigProc::getMaxOutputSize  )  [inline]
 

int VrSigProc::getNumberInputs  )  [inline, protected]
 

unsigned int VrSigProc::getOutputSize  )  [inline, protected]
 

double VrSigProc::getSamplingFrequency  )  [inline]
 

VrSigProc * VrSigProc::getUpstreamModuleN port  p  )  [protected, virtual]
 

VrSampleIndex VrSigProc::getWP  )  [inline]
 

void VrSigProc::init_base  )  [private]
 

Cause initialize methods to be called. This is called on all sinks for which isConnectedToSource is true, and results in the pre_initialize and initialize methods being called in the order source to sink.

virtual void VrSigProc::initialize  )  [inline, private, virtual]
 

Initialize any local state that is dependent on sampling frequency.

Reimplemented in VrAudioDecoder< iType >, VrAudioEncoder< iType >, VrComplexDemod< iType >, VrComplexFIRfilter< iType >, VrCorr< iType, oType >, VrDigMod< iType, oType >, VrIIRfilter< iType, oType >, VrMixer< iType, oType >, VrPulseCorrelator< iType >, VrQuadratureDemod< oType >, VrRealFIRfilter< iType, oType >, VrSquelch< T >, VrSum< iType, oType >, VrSyncCorr< iType >, VrSyncFilter< iType >, VrAudioSink< iType >, VrAudioSource< oType >, VrComplexPlotSink, VrFileSink< iType >, VrPointSink, VrScopeSink< iType >, VrSigSource< oType >, VrTestCopySlow< iType, oType >, VrTestCountSink< iType >, VrTestCountSource< oType >, VrUDPSink< iType >, GrAtscFPLL, GrAdd< iType, oType >, GrAGC< iType, oType >, GrComplexVCOMixer< iType, oType >, GrCostasLoop< iType, oType >, GrFastChannelizer< iType >, GrFIRfilterCCC, GrFIRfilterCCF, GrFIRfilterFCC, GrFIRfilterFFF, GrFIRfilterFSF, GrFIRfilterSCC, GrFIRfilterSIS, GrFreqXlatingFIRfilterCCC, GrFreqXlatingFIRfilterCCF, GrFreqXlatingFIRfilterFCC, GrFreqXlatingFIRfilterFCF, GrFreqXlatingFIRfilterSCC, GrFreqXlatingFIRfilterSCF, GrIIRfilter< iType, oType, taptype >, GrMixer< iType, oType >, GrMultiply< iType, oType >, GrWeaverModHead< iType, oType >, GrAudioSink< iType >, GrAudioSource< oType >, GrFFTAvgSink< iType >, GrFFTSink< iType >, GrOscopeSinkC, GrOscopeSinkF, GrUsrpSink, VrChirpSource< oType >, and VrSyncCorr< char >.

void VrSigProc::initMarkedData  )  [private]
 

void VrSigProc::initOutputBuffer int  n  )  [private, virtual]
 

Reimplemented in VrGuppiSource< oType >, and GrMC4020Source< oType >.

void VrSigProc::initOutputBuffers int  n  )  [private]
 

bool VrSigProc::is_synced VrSampleIndex  arg_index  )  [inline, protected]
 

Returns:
true if we're working on the current output block, else false, indicating that we're working on a future output block

bool VrSigProc::isConnectedToSource  )  [private, virtual]
 

Reimplemented in VrSource< oType >, GrSource, and VrSource< unsigned long >.

bool VrSigProc::isSink  ) 
 

return true iff this VrSigProc is a sink

unsigned int VrSigProc::mapSizeUp int  i,
unsigned int  size
[private, virtual]
 

Reimplemented in VrDecimatingSigProc< iType, oType >, VrHistoryProc< iType, oType >, VrSkippingSink< iType >, VrDecimatingSigProc< float, float >, VrDecimatingSigProc< iType, VrComplex >, VrDecimatingSigProc< iType, char >, VrDecimatingSigProc< float, VrComplex >, VrDecimatingSigProc< short, VrComplex >, VrDecimatingSigProc< short, int >, VrDecimatingSigProc< float, atsc_soft_data_segment >, VrDecimatingSigProc< float, short >, VrDecimatingSigProc< char, char >, VrDecimatingSigProc< iType, iType >, VrDecimatingSigProc< VrComplex, VrComplex >, VrDecimatingSigProc< iType, VrComplex >, VrHistoryProc< short, VrComplex >, VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_no_sync >, VrHistoryProc< float, float >, VrHistoryProc< iType, VrComplex >, VrHistoryProc< atsc_data_segment, atsc_data_segment >, VrHistoryProc< atsc_soft_data_segment, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< short, int >, VrHistoryProc< atsc_mpeg_packet_no_sync, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< VrComplex, VrComplex >, VrHistoryProc< iType, iType >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_data_segment >, VrHistoryProc< atsc_mpeg_packet, atsc_mpeg_packet_no_sync >, VrHistoryProc< complex, oType >, VrHistoryProc< atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_rs_encoded >, VrHistoryProc< float, atsc_soft_data_segment >, VrHistoryProc< float, short >, VrHistoryProc< char, char >, VrHistoryProc< float, VrComplex >, VrHistoryProc< atsc_data_segment, oType >, VrHistoryProc< T, T >, VrHistoryProc< float, short >, VrHistoryProc< iType, char >, VrHistoryProc< atsc_data_segment, atsc_soft_data_segment >, VrHistoryProc< short, float >, and VrSkippingSink< VrComplex >.

int VrSigProc::markData VrSampleRange  r  )  [private, virtual]
 

figure out what data to compute

markData is the first part of the markData / VrSigProc::compute dyad. These two methods are called from VrMultiTask::schedule to schedule and compute the work of the signal processing modules.

markData is called from the downstream side (starting with the sinks) to determine what data to schedule for future computation.

Note that markData does NOT run in parallel (VrMultiTask is holding its mutex whenever it calls markData, and is the root of all calls to markData).

This function also has many side effects, including sometimes setting startMarkedModule. Really needs to be cleaned up.

Returns:
MARK_ALREADY if all data is already computed.

MARK_READY if data is ready to be computed (and has been marked).

MARK_READY_NO_MARK if data is ready on this level or above but no further data should be marked.

MARK_NO_READY if no data is ready to be computed.

MARK_THREAD if data is marked by another thread.

Check if unmarked data precedes us *

Mark data to be computed *

initialize pointers to thread-specific marking data *

save which range this thread marked *

save which input ranges were forcasted as needed for this marking *

create our entry in writer linked list *

create our entries in the reader linked lists upstream *

set the starting module for this compute block to this *

int VrSigProc::markDataUpstream VrSampleRange inputs,
bool *  dataMarkedUpstream
[private, virtual]
 

propagate marking upstream

This is the embodiment of a bunch of heuristics determining which data to schedule when (Explain this mess.)

dataMarkedUpstream is set iff we successfully marked data upstream

Returns:
MARK_continue if the process was successful and we should continue to work on this module's data. Otherwise return a more specific MARK_xxx value indicating our status.

float VrSigProc::memoryTouched  )  [virtual]
 

Returns the total number of bytes read (ignores written bytes) per second by the upstream chain ending with this module zero has a special meaning (no outputs in cache)

Reimplemented in VrFakeGuppiSource< oType >, VrGuppiSource< oType >, and GrMC4020Source< oType >.

int VrSigProc::minwritespace VrSampleIndex  newWP,
unsigned int  desired
[private]
 

VrSigProc::MUTEX_DECLARE mutex   )  [private]
 

virtual const char* VrSigProc::name  )  [inline, virtual]
 

default name for a module (override with actual name)

Reimplemented in VrSink< iType >, VrSource< oType >, VrAmp< iType, oType >, VrAudioDecoder< iType >, VrAudioEncoder< iType >, VrAWGN< iType >, VrComplexDemod< iType >, VrComplexFIRfilter< iType >, VrCorr< iType, oType >, VrDigMod< iType, oType >, VrMixer< iType, oType >, VrMUX< T >, VrNop< ioType >, VrPulseCorrelator< iType >, VrQuadratureDemod< oType >, VrRealFIRfilter< iType, oType >, VrSum< iType, oType >, VrSyncCorr< iType >, VrSyncFilter< iType >, VrAudioSink< iType >, VrAudioSource< oType >, VrComplexPlotSink, VrFakeGuppiSource< oType >, VrFileSink< iType >, VrFileSource< oType >, VrGuppiSource< oType >, VrNullSink< iType >, VrPointSink, VrScopeSink< iType >, VrTestCountSink< iType >, VrTestCountSource< oType >, VrUDPSink< iType >, VrUDPSource< oType >, GrAtscBitTimingLoop, GrAtscBitTimingLoop2, GrAtscBitTimingLoop3, GrAtscConvert2xTo20, GrAtscDataSegToSoftDataSeg, GrAtscDeinterleaver, GrAtscDerandomizer, GrAtscEqualizer, GrAtscFieldSyncChecker, GrAtscFieldSyncCorrelator, GrAtscFieldSyncDemux, GrAtscFieldSyncMux, GrAtscFPLL, GrAtscInterleaver, GrAtscRandomizer, GrAtscRSDecoder, GrAtscRSEncoder, GrAtscSegSymSyncImpl, GrAtscSymbolMapper< oType >, GrAtscTrellisEncoder, GrAtscViterbiDecoder, GrAdd< iType, oType >, GrAGC< iType, oType >, GrArbFunc< iType, oType >, GrCircularSink< iType >, GrComplexVCOMixer< iType, oType >, GrConvertFS, GrConvertSF, GrCostasLoop< iType, oType >, GrDelay< iType, oType >, GrFastChannelizer< iType >, GrFFT_vCC, GrFFT_vFC, GrFIRfilterCCC, GrFIRfilterCCF, GrFIRfilterFCC, GrFIRfilterFFF, GrFIRfilterFSF, GrFIRfilterSCC, GrFIRfilterSIS, GrFloatToComplex, GrFreqXlatingFIRfilterCCC, GrFreqXlatingFIRfilterCCF, GrFreqXlatingFIRfilterFCC, GrFreqXlatingFIRfilterFCF, GrFreqXlatingFIRfilterSCC, GrFreqXlatingFIRfilterSCF, GrHilbert< iType >, GrIIRfilter< iType, oType, taptype >, GrImag< oType >, GrInterpolator< iType, oType >, GrKeepOneInN, GrLimiter< iType, oType >, GrMagnitude< iType, oType >, GrMixer< iType, oType >, GrMultiply< iType, oType >, GrPAMMod< iType, oType >, GrParallelToSerial, GrReal< oType >, GrRemoveDcFFF, GrSerialToParallel, GrSSBMod< oType >, GrWeaverModHead< iType, oType >, GrWeaverModTail< iType, oType >, GrZOH< iType, oType >, VrFixOffset< iType, oType >, GrSink, GrSource, GrAudioSink< iType >, GrAudioSource< oType >, GrBitSource< oType >, GrComplexNCOSource, GrFFTAvgSink< iType >, GrFFTSink< iType >, GrFileDescriptorSink, GrFileDescriptorSource, GrFileSink, GrFileSource, GrMC4020Source< oType >, GrNoiseSource< oType >, GrNullSink, GrNullSource, GrOscopeSinkC, GrOscopeSinkF, GrSimpleScopeSink< iType >, GrTCPSink< iType >, GrUsrpSink, GrUsrpSource, VrChirpSource< oType >, GrTestSink, GrTestSkippingSink, GrTestSource, VrSink< unsigned long >, VrSink< VrComplex >, VrSource< unsigned long >, and VrSyncCorr< char >.

void VrSigProc::pre_initialize  )  [private, virtual]
 

Set sampling frequency based on upstream sampling freq.

This method handles automatically setting the sampling frequency for this module based on the sampling frequency of the upstream modules. For most modules, our sampling frequency is the same as our upstream neighbor. VrInterpolatingSigProc and VrDecimatingSigProc override this.

This method is called immediately prior to initialize.

Reimplemented in VrDecimatingSigProc< iType, oType >, VrInterpolatingSigProc< iType, oType >, VrInterpolatingSigProcNoWork< iType, oType >, VrSkippingSink< iType >, GrAtscConvert2xTo20, GrAtscFieldSyncMux, GrAtscSegSymSyncImpl, GrFractionalInterpolatingSigProc< iType, oType >, GrKeepOneInN, GrParallelToSerial, GrSerialToParallel, VrDecimatingSigProc< float, float >, VrDecimatingSigProc< iType, VrComplex >, VrDecimatingSigProc< iType, char >, VrDecimatingSigProc< float, VrComplex >, VrDecimatingSigProc< short, VrComplex >, VrDecimatingSigProc< short, int >, VrDecimatingSigProc< float, atsc_soft_data_segment >, VrDecimatingSigProc< float, short >, VrDecimatingSigProc< char, char >, VrDecimatingSigProc< iType, iType >, VrDecimatingSigProc< VrComplex, VrComplex >, VrDecimatingSigProc< iType, VrComplex >, VrInterpolatingSigProcNoWork< atsc_data_segment, oType >, and VrSkippingSink< VrComplex >.

VrSampleIndex VrSigProc::proc_minRP  )  [protected]
 

Returns the minimum RP in downstream buffers' readers. computes the most up to date value possible.

void VrSigProc::setOutputSize int  o  )  [inline, protected]
 

set required multiple for number of items produced

int VrSigProc::setSamplingFrequency double  sf  )  [virtual]
 

void VrSigProc::setup  )  [virtual]
 

Reimplemented in VrSink< iType >, GrSink, VrSink< unsigned long >, and VrSink< VrComplex >.

void VrSigProc::setup_upstream  )  [protected]
 

Reimplemented in VrSink< iType >, GrSink, VrSink< unsigned long >, and VrSink< VrComplex >.

void VrSigProc::size_setup unsigned int  size  )  [virtual]
 

void VrSigProc::sync VrSampleIndex  arg_index  )  [protected]
 

force rest of procedure to run sequentially

Call sync (arg_index) from work(...) to ensure the rest of the procedure runs sequentially...

virtual int VrSigProc::work VrSampleRange  output,
void *  o[],
VrSampleRange  inputs[],
void *  i[]
[pure virtual]
 

Generate up to output.size output points at o[output#][sample#] using data at the inputptrs[input#][sample#].

Pointers start at corresponding VrSampleIndex in the range params. output.size is a multiple of outputSize. Returns the number of outputs (<= output.size) that it was able to compute with the given input ranges. If this value is < output.size, forecast() will need to be called again.

Implemented in VrSink< iType >, VrSource< oType >, VrAmp< iType, oType >, VrAWGN< iType >, VrBits2Symbols, VrComplexDemod< iType >, VrComplexFIRfilter< iType >, VrCorr< iType, oType >, VrDigMod< iType, oType >, VrIIRfilter< iType, oType >, VrInterpolatingSigProc< iType, oType >, VrMixer< iType, oType >, VrMUX< T >, VrNop< ioType >, VrQuadratureDemod< oType >, VrRealFIRfilter< iType, oType >, VrSum< iType, oType >, VrSyncCorr< iType >, VrSyncFilter< iType >, GrAtscBitTimingLoop, GrAtscBitTimingLoop2, GrAtscBitTimingLoop3, GrAtscConvert2xTo20, GrAtscDataSegToSoftDataSeg, GrAtscDeinterleaver, GrAtscDerandomizer, GrAtscEqualizer, GrAtscFieldSyncChecker, GrAtscFieldSyncCorrelator, GrAtscFieldSyncDemux, GrAtscFieldSyncMux, GrAtscFPLL, GrAtscInterleaver, GrAtscRandomizer, GrAtscRSDecoder, GrAtscRSEncoder, GrAtscSegSymSyncImpl, GrAtscSymbolMapper< oType >, GrAtscTrellisEncoder, GrAtscViterbiDecoder, GrAdd< iType, oType >, GrAGC< iType, oType >, GrArbFunc< iType, oType >, GrComplexVCOMixer< iType, oType >, GrConvertFS, GrConvertSF, GrCostasLoop< iType, oType >, GrDelay< iType, oType >, GrFastChannelizer< iType >, GrFFT_vCC, GrFFT_vFC, GrFIRfilterCCC, GrFIRfilterCCF, GrFIRfilterFCC, GrFIRfilterFFF, GrFIRfilterFSF, GrFIRfilterSCC, GrFIRfilterSIS, GrFloatToComplex, GrFreqXlatingFIRfilterCCC, GrFreqXlatingFIRfilterCCF, GrFreqXlatingFIRfilterFCC, GrFreqXlatingFIRfilterFCF, GrFreqXlatingFIRfilterSCC, GrFreqXlatingFIRfilterSCF, GrHilbert< iType >, GrIIRfilter< iType, oType, taptype >, GrImag< oType >, GrInterpolator< iType, oType >, GrKeepOneInN, GrLimiter< iType, oType >, GrMagnitude< iType, oType >, GrMixer< iType, oType >, GrMultiply< iType, oType >, GrPAMMod< iType, oType >, GrParallelToSerial, GrReal< oType >, GrRemoveDcFFF, GrSerialToParallel, GrSSBMod< oType >, GrWeaverModHead< iType, oType >, GrWeaverModTail< iType, oType >, GrZOH< iType, oType >, VrFixOffset< iType, oType >, GrSink, GrSource, VrSink< unsigned long >, VrSink< VrComplex >, VrSource< unsigned long >, and VrSyncCorr< char >.


Friends And Related Function Documentation

friend class VrMultiTask [friend]
 


Member Data Documentation

volatile writerLL* VrSigProc::first [private]
 

Reimplemented in VrCorr< iType, oType >, VrSyncCorr< iType >, and VrSyncCorr< char >.

unsigned int VrSigProc::initializeCalled [private]
 

VrConnect** VrSigProc::inputConn [private]
 

VrSampleRange* VrSigProc::inputs_forecasted [private]
 

unsigned int VrSigProc::itype_size [private]
 

volatile writerLL * VrSigProc::last [private]
 

Reimplemented in GrTestSink, GrTestSkippingSink, and GrTestSource.

const int VrSigProc::MARK_ALREADY = 2 [static, private]
 

all data is already computed

const int VrSigProc::MARK_continue = -3 [static, private]
 

flag distinct from all others (keep last)

const int VrSigProc::MARK_NO_READY = -1 [static, private]
 

no data is ready to be computed

const int VrSigProc::MARK_READY = 1 [static, private]
 

data is ready to be computed (and has been marked)

const int VrSigProc::MARK_READY_NO_MARK = 0 [static, private]
 

data is ready on this level or above,

const int VrSigProc::MARK_THREAD = -2 [static, private]
 

data is marked by another thread

volatile VrSampleIndex VrSigProc::markedWP [private]
 

data before this has been marked and will be written

unsigned int VrSigProc::maxDSReadSize [protected]
 

max Down Stream Read Size. How big a read we might get. maxOutSize should never exceed this.

unsigned int VrSigProc::maxOutSize [private]
 

maximum size that we should ever output at once.

due to cache size and latency contraints we may actually output anywhere < 2*maxOutSize to prevent unnecessarily small chunks from being marked

VrSampleRange VrSigProc::myMarkedData [private]
 

readerLL* VrSigProc::myReaderLLs [private]
 

writerLL* VrSigProc::myWriterLL [private]
 

unsigned int VrSigProc::numberInputs [protected]
 

unsigned int VrSigProc::numberOutputs [protected]
 

VrBuffer** VrSigProc::outBuffer [protected]
 

unsigned int VrSigProc::outputSize [private]
 

double VrSigProc::proc_samplingFrequency [private]
 

unsigned int VrSigProc::setupCalled [private]
 

unsigned int VrSigProc::type_size [private]
 

int VrSigProc::uses_sync [private]
 

volatile VrSampleIndex VrSigProc::WP [private]
 

data before this has been written


The documentation for this class was generated from the following files:
Generated on Tue Mar 15 23:48:08 2005 for GNU Radio by  doxygen 1.4.0