diff --git a/annotated.html b/annotated.html index 378a36e..b15c94b 100644 --- a/annotated.html +++ b/annotated.html @@ -3,15 +3,16 @@ - + libsdr: Class List + @@ -32,7 +33,7 @@ - + @@ -75,7 +76,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,111 +92,115 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\Nsdr
 oCAutoCastThis class performs some automatic casts to a certain buffer type if possible specified by the template argument
 oCIQBaseBandThis class performs several operations on the complex (integral) input stream, it first filters out some part of the input stream using a FIR band pass (band pass is centerred around Ff with width width) then shifts the center frequency Fc to 0 and finally sub-samples the resulting stream
 oCBaseBandThis class performs several operations on the real input stream, It first filters out some part of the input stream using a FIR band pass filter then shifts the center frequency to 0 and finally sub-samples the resulting stream such that the selected base-band is well represented
 oCBufferOwnerAbstract class (interface) of a buffer owner
 oCRawBufferBase class of all buffers, represents an untyped array of bytes
 oCBufferA typed buffer
 oCBufferSetA set of buffers, that tracks their usage
 oCRawRingBufferA simple ring buffer
 oCRingBufferA simple typed ring-buffer
 oCBufferNodeA simple buffering node, that ensures a fixed buffer size
 oCCombineA combine node
 oCCombineSinkA single sink of a Combine node
 oCInterleaveInterleaves several input streams
 oCAMDemodAmplitude modulation (AM) demodulator from an I/Q signal
 oCUSBDemodSSB upper side band (USB) demodulator from an I/Q signal
 oCFMDemodDemodulates FM from an I/Q signal
 oCFMDeemphA tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal
 oCSDRErrorBase class of all SDR exceptions
 oCConfigErrorThe configuration error class
 oCRuntimeErrorThe runtime error class
 oCFFTPlanTrivial FFT implementation for buffer sizes of N=2**K
 oCFFTFFT module class, provides static methods to perfrom a FFT directly
 oCFFTPlan< double >Template specialization for a FFT transform on std::complex<double> values
 oCFFTPlan< float >Template specialization for a FFT transform on std::complex<float> values
 oCFilterSinkPerforms the FFT forward transform
 oCFilterSourcePerforms the overlap-add FFT filtering and back-transform
 oCFilterNodeA FFT filter bank node wich consists of several filters
 oCFIRLowPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 oCFIRHighPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 oCFIRBandPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 oCFIRBandStopCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 oCFIRFilterGeneric FIR filter class
 oCFIRLowPassLow-pass FIR filter specialization
 oCFIRHighPassHigh-pass FIR filter specialization
 oCFIRBandPassBand-pass FIR filter specialization
 oCFIRBandStopBand-stop FIR filter specialization
 oCFreqShiftBaseA performant implementation of a frequency shift operation on integer signals
 oCLogMessageA log message
 oCLogHandlerBase class of all log message handlers
 oCStreamLogHandlerSerializes log message into the specified stream
 oCLoggerThe logger class (singleton)
 oCConfigA collection of configuration information that is send by a source to all connected sinks to propergate and check the configuration of the processing network
 oCSinkBaseBasic interface of all Sinks
 oCSinkTyped sink
 oCSourceGeneric source class
 oCBlockingSourceIterface of a blocking source
 oCProxyA NOP node
 oCOptionsConvenience functions for command line arguments
 |oCDefinitionArgument definition
 |\CValueThe argument value
 oCPortAudio"Namespace" to collect all static, PortAudio related functions
 oCPortSinkPortAudio playback node
 oCPortSourcePortAudio input stream as a Source
 oCBPSK31A simple BPSK31 "demodulator"
 oCVaricodeSimple varicode (Huffman code) decoder node
 oCDelegateInterfaceInterface of a delegate
 oCDelegateSpecific delegate to a method of an object
 oCQueueCentral message queue (singleton)
 |\CMessageThe internal used message type
 oCRTLSourceImplements a uint_8 I/Q source for RTL2832 based TV dongles
 oCSigGenArbitrary function generator
 oCIQSigGenArbitrary function generator
 oCSubSampleSimple averaging sub-sampler
 oCFracSubSampleBaseImplements a fractional sub-sampler
 oCInpolSubSamplerAn interpolating sub-sampler
 oCTraitsForward declaration of type tratis template
 oCTraits< uint8_t >Template specialization of type tratis for uint8_t scalar
 oCTraits< std::complex< uint8_t > >Template specialization of type tratis for complex uint8_t scalar
 oCTraits< int8_t >Template specialization of type tratis for int8_t scalar
 oCTraits< std::complex< int8_t > >Template specialization of type tratis for complex int8_t scalar
 oCTraits< uint16_t >Template specialization of type traits for uint16_t scalar
 oCTraits< std::complex< uint16_t > >Template specialization of type traits for complex uint16_t scalar
 oCTraits< int16_t >Template specialization of type traits for int16_t scalar
 oCTraits< std::complex< int16_t > >Template specialization of type traits for complex int16_t scalar
 oCTraits< float >Template specialization of type traits for float scalar
 oCTraits< std::complex< float > >Template specialization of type traits for complex float scalar
 oCTraits< double >Template specialization of type traits for float scalar
 oCTraits< std::complex< double > >Template specialization of type traits for complex float scalar
 oCRealImagPartExtracts the real or imaginary part of a complex valued data stream
 oCRealPartSelects the real part of a complex signal
 oCImagPartSelects the imaginary part of a complex signal
 oCIQBalanceA simple node, that allows to balance an IQ signal
 oCToComplexTiny helper node to transform a real part into a complex, including a possible type-cast
 oCCastExplicit type cast node
 oCUnsignedToSignedPerforms a reinterprete cast from an unsinged value to a singed one
 oCSignedToUnsignedPerforms a reinterprete cast from an unsinged value to a singed one
 oCFreqShiftPerforms a frequency shift on a complex input signal, by multiplying it with $e^{i\omega t}$
 oCStreamSourceReads raw samples from an imput stream, (ie a file)
 oCStreamSinkSerializes the incomming buffers as raw data
 oCScaleSimple scaling node
 oCAGCAn automatic gain control node
 oCDebugStoreKeeps a copy of the last buffer received
 oCDebugDumpDumps buffers in a human readable form
 oCGWNSourceA Gaussian White Noise source
 oCWavSinkStores the received buffers into a WAV file
 \CWavSourceA simple imput source that reads from a wav file
 Nsdr
 CAFSKA simple (Audio) Frequency Shift Keying (AFSK) demodulator
 CAGCAn automatic gain control node
 CAMDemodAmplitude modulation (AM) demodulator from an I/Q signal
 CAutoCastThis class performs some automatic casts to a certain buffer type (if possible) specified by the template argument
 CAX25Decodes AX25 (PacketRadio) messages from a bit stream
 CBaseBandThis class performs several operations on the real input stream, It first filters out some part of the input stream using a FIR band pass filter then shifts the center frequency to 0 and finally sub-samples the resulting stream such that the selected base-band is well represented
 CBaudotImplements a Baudot decoder
 CBlockingSourceIterface of a blocking source
 CBPSK31A simple BPSK31 "demodulator"
 CBufferA typed buffer
 CBufferNodeA simple buffering node, that ensures a fixed buffer size
 CBufferOwnerAbstract class (interface) of a buffer owner
 CBufferSetA set of buffers, that tracks their usage
 CCastExplicit type cast node
 CCombineA combine node
 CCombineSinkA single sink of a Combine node
 CConfigA collection of configuration information that is send by a source to all connected sinks to propergate and check the configuration of the processing network
 CConfigErrorThe configuration error class
 CDebugDumpDumps buffers in a human readable form
 CDebugStoreKeeps a copy of the last buffer received
 CDelegateSpecific delegate to a method of an object
 CDelegateInterfaceInterface of a delegate
 CFFTFFT module class, provides static methods to perfrom a FFT directly
 CFFTPlanTrivial FFT implementation for buffer sizes of N=2**K
 CFFTPlan< double >Template specialization for a FFT transform on std::complex<double> values
 CFFTPlan< float >Template specialization for a FFT transform on std::complex<float> values
 CFilterNodeA FFT filter bank node wich consists of several filters
 CFilterSinkPerforms the FFT forward transform
 CFilterSourcePerforms the overlap-add FFT filtering and back-transform
 CFIRBandPassBand-pass FIR filter specialization
 CFIRBandPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 CFIRBandStopBand-stop FIR filter specialization
 CFIRBandStopCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 CFIRFilterGeneric FIR filter class
 CFIRHighPassHigh-pass FIR filter specialization
 CFIRHighPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 CFIRLowPassLow-pass FIR filter specialization
 CFIRLowPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
 CFMDeemphA tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal
 CFMDemodDemodulates FM from an I/Q signal
 CFracSubSampleBaseImplements a fractional sub-sampler
 CFreqShiftPerforms a frequency shift on a complex input signal, by multiplying it with $e^{i\omega t}$
 CFreqShiftBaseA performant implementation of a frequency-shift operation on integer signals
 CGWNSourceA Gaussian White Noise source
 CImagPartSelects the imaginary part of a complex signal
 CInpolSubSamplerAn interpolating sub-sampler
 CInterleaveInterleaves several input streams
 CIQBalanceA simple node, that allows to balance an IQ signal
 CIQBaseBandThis class performs several operations on the complex (integral) input stream, it first filters out some part of the input stream using a FIR band pass (band pass is centerred around Ff with width width) then shifts the center frequency Fc to 0 and finally sub-samples the resulting stream
 CIQSigGenArbitrary function generator
 CLoggerThe logger class (singleton)
 CLogHandlerBase class of all log-message handlers
 CLogMessageA log message
 COptionsConvenience functions for command line arguments
 CPortAudio"Namespace" to collect all static, PortAudio related functions
 CPortSinkPortAudio playback node
 CPortSourcePortAudio input stream as a Source
 CProxyA NOP node
 CQueueCentral message queue (singleton)
 CRawBufferBase class of all buffers, represents an untyped array of bytes
 CRawRingBufferA simple ring buffer
 CRealImagPartExtracts the real or imaginary part of a complex valued data stream
 CRealPartSelects the real part of a complex signal
 CRingBufferA simple typed ring-buffer
 CRTLSourceImplements a uint_8 I/Q source for RTL2832 based TV dongles
 CRuntimeErrorThe runtime error class
 CScaleSimple scaling node
 CSDRErrorBase class of all SDR exceptions
 CSigGenArbitrary function generator
 CSignedToUnsignedPerforms a reinterprete cast from an unsinged value to a singed one
 CSinkTyped sink
 CSinkBaseBasic interface of all Sinks
 CSourceGeneric source class
 CStreamLogHandlerSerializes log message into the specified stream
 CStreamSinkSerializes the incomming buffers as raw data
 CStreamSourceReads raw samples from an imput stream, (ie a file)
 CSubSampleSimple averaging sub-sampler
 CTextDumpDumps the received uin8_t byte-stream as (ASCII) text
 CToComplexTiny helper node to transform a real part into a complex, including a possible type-cast
 CTraitsForward declaration of type tratis template
 CTraits< double >Template specialization of type traits for float scalar
 CTraits< float >Template specialization of type traits for float scalar
 CTraits< int16_t >Template specialization of type traits for int16_t scalar
 CTraits< int8_t >Template specialization of type tratis for int8_t scalar
 CTraits< std::complex< double > >Template specialization of type traits for complex float scalar
 CTraits< std::complex< float > >Template specialization of type traits for complex float scalar
 CTraits< std::complex< int16_t > >Template specialization of type traits for complex int16_t scalar
 CTraits< std::complex< int8_t > >Template specialization of type tratis for complex int8_t scalar
 CTraits< std::complex< uint16_t > >Template specialization of type traits for complex uint16_t scalar
 CTraits< std::complex< uint8_t > >Template specialization of type tratis for complex uint8_t scalar
 CTraits< uint16_t >Template specialization of type traits for uint16_t scalar
 CTraits< uint8_t >Template specialization of type tratis for uint8_t scalar
 CUnsignedToSignedPerforms a reinterprete cast from an unsinged value to a singed one
 CUSBDemodSSB upper side band (USB) demodulator from an I/Q signal
 CVaricodeSimple varicode (Huffman code) decoder node
 CWavSinkStores the received buffers into a WAV file
 CWavSourceA simple imput source that reads from a wav file
diff --git a/autocast_8hh_source.html b/autocast_8hh_source.html index e9fdb31..75b6b76 100644 --- a/autocast_8hh_source.html +++ b/autocast_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/autocast.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/autocast.hh Source File + @@ -32,7 +33,7 @@
- + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,20 +92,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_AUTOCAST_HH__
-
2 #define __SDR_AUTOCAST_HH__
-
3 
+
2 #define __SDR_AUTOCAST_HH__
+
3 
4 #include "node.hh"
5 #include "traits.hh"
6 #include "logger.hh"
7 
-
8 namespace sdr {
+
8 namespace sdr {
9 
13 template <class Scalar>
14 class AutoCast: public SinkBase, public Source
15 {
16 public:
-
19  : SinkBase(), Source(), _buffer(), _cast(0)
+
19  : SinkBase(), Source(), _buffer(), _cast(0)
20  {
21  // pass...
22  }
@@ -116,264 +117,274 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
29  // Check type cast combination
31  switch (src_cfg.type()) {
-
32  case Config::Type_u8:
-
33  case Config::Type_s8: _cast = _identity; break;
-
34  case Config::Type_u16:
-
35  case Config::Type_s16: _cast = _int16_int8; break;
+
32  case Config::Type_u8: _cast = _uint8_int8; break;
+
33  case Config::Type_s8: _cast = _identity; break;
+
34  case Config::Type_u16: _cast = _uint16_int8; break;
+
35  case Config::Type_s16: _cast = _int16_int8; break;
36  default: break;
37  }
39  switch (src_cfg.type()) {
-
40  case Config::Type_u8: _cast = _uint8_cint8; break;
-
41  case Config::Type_s8: _cast = _int8_cint8; break;
-
42  case Config::Type_cu8: _cast = _cuint8_cint8; break;
-
43  case Config::Type_cs8: _cast = _identity; break;
-
44  case Config::Type_u16:
-
45  case Config::Type_s16: _cast = _int16_cint8; break;
-
46  default: break;
-
47  }
- -
49  switch (src_cfg.type()) {
-
50  case Config::Type_u8:
-
51  case Config::Type_s8: _cast = _int8_int16; break;
-
52  case Config::Type_u16:
-
53  case Config::Type_s16: _cast = _identity; break;
-
54  default: break;
-
55  }
- -
57  switch (src_cfg.type()) {
-
58  case Config::Type_u8: _cast = _uint8_cint16; break;
-
59  case Config::Type_s8: _cast = _int8_cint16; break;
-
60  case Config::Type_cu8: _cast = _cuint8_cint16; break;
-
61  case Config::Type_cs8: _cast = _cint8_cint16; break;
-
62  case Config::Type_u16: _cast = _uint16_cint16; break;
-
63  case Config::Type_s16: _cast = _int16_cint16; break;
-
64  case Config::Type_cu16:
-
65  case Config::Type_cs16: _cast = _identity; break;
-
66  default: break;
-
67  }
-
68  }
-
69 
-
70  // Check if there exists a cast to the required type
-
71  if (0 == _cast) {
-
72  ConfigError err;
-
73  err << "AutoCast: Can not cast from type " << src_cfg.type() << " to " << Traits<Scalar>::scalarId;
-
74  throw err;
-
75  }
-
76 
-
77  // Allocate buffer
-
78  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
-
79 
-
80  LogMessage msg(LOG_DEBUG);
-
81  msg << "Configure AutoCast node:" << std::endl
-
82  << " input type: " << src_cfg.type() << std::endl
-
83  << " output type: " << Traits<Scalar>::scalarId;
-
84  Logger::get().log(msg);
-
85 
-
86  // Propergate config
-
87  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(), src_cfg.bufferSize(), 1));
-
88  }
-
89 
-
90  virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite) {
-
91  // If no conversion is selected
-
92  if (0 == _cast) { return; }
-
93  // If the identity conversion is selected -> forward buffer
-
94  if (_identity == _cast) { this->send(buffer, allow_overwrite); return; }
-
95  // Otherwise cast
-
96  size_t bytes = _cast(buffer, _buffer);
-
97  this->send(RawBuffer(_buffer, 0, bytes), false);
-
98  }
-
99 
-
100 
-
101 protected:
- -
105  size_t (*_cast)(const RawBuffer &in, const RawBuffer &out);
-
106 
-
107 protected:
-
109  static size_t _identity(const RawBuffer &in, const RawBuffer &out) {
-
110  memcpy(out.ptr(), in.data(), in.bytesLen());
-
111  return in.bytesLen();
-
112  }
-
113 
-
115  static size_t _int16_int8(const RawBuffer &in, const RawBuffer &out) {
-
116  size_t N = in.bytesLen()/2;
-
117  for (size_t i=0; i<N; i++) {
-
118  reinterpret_cast<int8_t *>(out.data())[i] = reinterpret_cast<int16_t *>(in.data())[i]>>8;
-
119  }
-
120  return N;
-
121  }
-
122 
-
124  static size_t _uint8_cint8(const RawBuffer &in, const RawBuffer &out) {
-
125  size_t N = in.bytesLen();
-
126  uint8_t *values = reinterpret_cast<uint8_t *>(in.data());
-
127  for (size_t i=0; i<N; i++) {
-
128  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] =
-
129  (int16_t(values[i])-127);
-
130  }
-
131  return 2*N;
-
132  }
-
133 
-
135  static size_t _int8_cint8(const RawBuffer &in, const RawBuffer &out) {
-
136  size_t N = in.bytesLen();
-
137  for (size_t i=0; i<N; i++) {
-
138  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] = reinterpret_cast<int8_t *>(in.data())[i];
-
139  }
-
140  return 2*N;
-
141  }
-
142 
-
144  static size_t _cuint8_cint8(const RawBuffer &in, const RawBuffer &out) {
-
145  size_t N = in.bytesLen()/2;
-
146  std::complex<uint8_t> *values = reinterpret_cast<std::complex<uint8_t> *>(in.data());
-
147  for (size_t i=0; i<N; i++) {
-
148  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] =
-
149  std::complex<int8_t>(int16_t(values[i].real())-127, int16_t(values[i].imag())-127);
-
150  }
-
151  return 2*N;
-
152  }
-
153 
-
155  static size_t _int16_cint8(const RawBuffer &in, const RawBuffer &out) {
-
156  size_t N = in.bytesLen()/2;
-
157  for (size_t i=0; i<N; i++) {
-
158  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] = reinterpret_cast<int16_t *>(in.data())[i]>>8;
-
159  }
-
160  return 2*N;
-
161  }
-
162 
-
164  static size_t _cint16_cint8(const RawBuffer &in, const RawBuffer &out) {
-
165  size_t N = in.bytesLen()/4;
-
166  std::complex<int16_t> *values = reinterpret_cast<std::complex<int16_t> *>(in.data());
-
167  for (size_t i=0; i<N; i++) {
-
168  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] = std::complex<int8_t>(values[i].real()>>8, values[i].imag()>>8);
-
169  }
-
170  return 2*N;
-
171  }
-
172 
-
174  static size_t _int8_int16(const RawBuffer &in, const RawBuffer &out) {
-
175  size_t N = in.bytesLen();
-
176  int8_t *values = reinterpret_cast<int8_t *>(in.data());
-
177  for (size_t i=0; i<N; i++) {
-
178  reinterpret_cast<int16_t *>(out.data())[i] = int16_t(values[i])<<8;
-
179  }
-
180  return 2*N;
-
181  }
-
182 
-
184  static size_t _uint8_cint16(const RawBuffer &in, const RawBuffer &out) {
-
185  size_t N = in.bytesLen();
-
186  uint8_t *values = reinterpret_cast<uint8_t *>(in.data());
-
187  for (size_t i=0; i<N; i++) {
-
188  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
-
189  = std::complex<int16_t>((int16_t(values[i])-127)<<8);
-
190  }
-
191  return 4*N;
-
192  }
-
193 
-
195  static size_t _int8_cint16(const RawBuffer &in, const RawBuffer &out) {
-
196  size_t N = in.bytesLen();
-
197  int8_t *values = reinterpret_cast<int8_t *>(in.data());
-
198  for (size_t i=0; i<N; i++) {
-
199  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
-
200  = std::complex<int16_t>(int16_t(values[i])*(1<<8));
-
201  }
-
202  return 4*N;
-
203  }
-
204 
-
206  static size_t _cuint8_cint16(const RawBuffer &in, const RawBuffer &out) {
-
207  size_t N = in.bytesLen()/2;
-
208  std::complex<uint8_t> *values = reinterpret_cast<std::complex<uint8_t> *>(in.data());
-
209  for (size_t i=0; i<N; i++) {
-
210  reinterpret_cast<std::complex<int16_t> *>(out.data())[i] =
-
211  std::complex<int16_t>((int16_t(values[i].real())-127)*(1<<8),
-
212  (int16_t(values[i].imag())-127)*(1<<8));
-
213  }
-
214  return 4*N;
-
215  }
-
216 
-
218  static size_t _cint8_cint16(const RawBuffer &in, const RawBuffer &out) {
-
219  size_t N = in.bytesLen()/2;
-
220  std::complex<int8_t> *values = reinterpret_cast<std::complex<int8_t> *>(in.data());
-
221  for (size_t i=0; i<N; i++) {
-
222  reinterpret_cast<std::complex<int16_t> *>(out.data())[i] =
-
223  std::complex<int16_t>(int16_t(values[i].real())*(1<<8),
-
224  int16_t(values[i].imag())*(1<<8));
-
225  }
-
226  return 4*N;
-
227  }
-
228 
-
230  static size_t _uint16_cint16(const RawBuffer &in, const RawBuffer &out) {
-
231  size_t N = in.bytesLen()/2;
-
232  uint16_t *values = reinterpret_cast<uint16_t *>(in.data());
-
233  for (size_t i=0; i<N; i++) {
-
234  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
-
235  = std::complex<int16_t>(int32_t(values[i])-(1<<15));
-
236  }
-
237  return 4*N;
-
238  }
-
239 
-
241  static size_t _int16_cint16(const RawBuffer &in, const RawBuffer &out) {
-
242  size_t N = in.bytesLen()/2;
-
243  int16_t *values = reinterpret_cast<int16_t *>(in.data());
-
244  for (size_t i=0; i<N; i++) {
-
245  reinterpret_cast<std::complex<int16_t> *>(out.data())[i] = std::complex<int16_t>(values[i]);
-
246  }
-
247  return 4*N;
-
248  }
-
249 };
-
250 
-
251 
-
252 }
-
253 #endif // __SDR_AUTOCAST_HH__
-
static size_t _int16_int8(const RawBuffer &in, const RawBuffer &out)
int16 -> int8
Definition: autocast.hh:115
+
40  case Config::Type_u8: _cast = _uint8_cint8; break;
+
41  case Config::Type_s8: _cast = _int8_cint8; break;
+
42  case Config::Type_cu8: _cast = _uint8_int8; break;
+
43  case Config::Type_cs8: _cast = _identity; break;
+
44  case Config::Type_u16: _cast = _uint16_cint8; break;
+
45  case Config::Type_s16: _cast = _int16_cint8; break;
+
46  case Config::Type_cu16: _cast = _uint16_int8; break;
+
47  case Config::Type_cs16: _cast = _int16_int8; break;
+
48  default: break;
+
49  }
+ +
51  switch (src_cfg.type()) {
+
52  case Config::Type_u8: _cast = _uint8_int16; break;
+
53  case Config::Type_s8: _cast = _int8_int16; break;
+
54  case Config::Type_u16: _cast = _uint16_int16; break;
+
55  case Config::Type_s16: _cast = _identity; break;
+
56  default: break;
+
57  }
+ +
59  switch (src_cfg.type()) {
+
60  case Config::Type_u8: _cast = _uint8_cint16; break;
+
61  case Config::Type_s8: _cast = _int8_cint16; break;
+
62  case Config::Type_cu8: _cast = _uint8_int16; break;
+
63  case Config::Type_cs8: _cast = _int8_int16; break;
+
64  case Config::Type_u16: _cast = _uint16_cint16; break;
+
65  case Config::Type_s16: _cast = _int16_cint16; break;
+
66  case Config::Type_cu16: _cast = _uint16_int16; break;
+
67  case Config::Type_cs16: _cast = _identity; break;
+
68  default: break;
+
69  }
+
70  }
+
71 
+
72  // Check if there exists a cast to the required type
+
73  if (0 == _cast) {
+
74  ConfigError err;
+
75  err << "AutoCast: Can not cast from type " << src_cfg.type() << " to " << Traits<Scalar>::scalarId;
+
76  throw err;
+
77  }
+
78 
+
79  // Allocate buffer
+
80  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
+
81 
+
82  LogMessage msg(LOG_DEBUG);
+
83  msg << "Configure AutoCast node:" << std::endl
+
84  << " input type: " << src_cfg.type() << std::endl
+
85  << " output type: " << Traits<Scalar>::scalarId;
+
86  Logger::get().log(msg);
+
87 
+
88  // Propergate config
+
89  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(), src_cfg.bufferSize(), 1));
+
90  }
+
91 
+
92  virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite) {
+
93  // If no conversion is selected
+
94  if (0 == _cast) { return; }
+
95  // If the identity conversion is selected -> forward buffer
+
96  if (_identity == _cast) { this->send(buffer, allow_overwrite); return; }
+
97  // Otherwise cast
+
98  size_t bytes = _cast(buffer, _buffer);
+
99  this->send(RawBuffer(_buffer, 0, bytes), false);
+
100  }
+
101 
+
102 
+
103 protected:
+ +
107  size_t (*_cast)(const RawBuffer &in, const RawBuffer &out);
+
108 
+
109 protected:
+
111  static size_t _identity(const RawBuffer &in, const RawBuffer &out) {
+
112  memcpy(out.ptr(), in.data(), in.bytesLen());
+
113  return in.bytesLen();
+
114  }
+
115 
+
117  static size_t _uint8_int8(const RawBuffer &in, const RawBuffer &out) {
+
118  size_t N = in.bytesLen();
+
119  for (size_t i=0; i<N; i++) {
+
120  reinterpret_cast<int8_t *>(out.data())[i] =
+
121  int16_t(reinterpret_cast<uint8_t *>(in.data())[i]) - 127;
+
122  }
+
123  return N;
+
124  }
+
125 
+
127  static size_t _uint16_int8(const RawBuffer &in, const RawBuffer &out) {
+
128  size_t N = in.bytesLen()/2;
+
129  for (size_t i=0; i<N; i++) {
+
130  reinterpret_cast<int8_t *>(out.data())[i] =
+
131  int16_t(reinterpret_cast<uint16_t *>(in.data())[i]>>8) - 127;
+
132  }
+
133  return N;
+
134  }
+
135 
+
137  static size_t _int16_int8(const RawBuffer &in, const RawBuffer &out) {
+
138  size_t N = in.bytesLen()/2;
+
139  for (size_t i=0; i<N; i++) {
+
140  reinterpret_cast<int8_t *>(out.data())[i] =
+
141  reinterpret_cast<int16_t *>(in.data())[i]>>8;
+
142  }
+
143  return N;
+
144  }
+
145 
+
147  static size_t _uint8_cint8(const RawBuffer &in, const RawBuffer &out) {
+
148  size_t N = in.bytesLen();
+
149  uint8_t *values = reinterpret_cast<uint8_t *>(in.data());
+
150  for (size_t i=0; i<N; i++) {
+
151  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] =
+
152  (int16_t(values[i])-127);
+
153  }
+
154  return 2*N;
+
155  }
+
156 
+
158  static size_t _int8_cint8(const RawBuffer &in, const RawBuffer &out) {
+
159  size_t N = in.bytesLen();
+
160  for (size_t i=0; i<N; i++) {
+
161  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] =
+
162  reinterpret_cast<int8_t *>(in.data())[i];
+
163  }
+
164  return 2*N;
+
165  }
+
166 
+
168  static size_t _uint16_cint8(const RawBuffer &in, const RawBuffer &out) {
+
169  size_t N = in.bytesLen()/2;
+
170  for (size_t i=0; i<N; i++) {
+
171  reinterpret_cast<std::complex<int8_t> *>(out.data())[i]
+
172  = int32_t(reinterpret_cast<int16_t *>(in.data())[i]>>8)-((2<<15)-1);
+
173  }
+
174  return 2*N;
+
175  }
+
176 
+
178  static size_t _int16_cint8(const RawBuffer &in, const RawBuffer &out) {
+
179  size_t N = in.bytesLen()/2;
+
180  for (size_t i=0; i<N; i++) {
+
181  reinterpret_cast<std::complex<int8_t> *>(out.data())[i] = reinterpret_cast<int16_t *>(in.data())[i]>>8;
+
182  }
+
183  return 2*N;
+
184  }
+
185 
+
187  static size_t _uint8_int16(const RawBuffer &in, const RawBuffer &out) {
+
188  size_t N = in.bytesLen();
+
189  int8_t *values = reinterpret_cast<int8_t *>(in.data());
+
190  for (size_t i=0; i<N; i++) {
+
191  reinterpret_cast<int16_t *>(out.data())[i] = (int16_t(values[i])-127)<<8;
+
192  }
+
193  return 2*N;
+
194  }
+
195 
+
197  static size_t _int8_int16(const RawBuffer &in, const RawBuffer &out) {
+
198  size_t N = in.bytesLen();
+
199  int8_t *values = reinterpret_cast<int8_t *>(in.data());
+
200  for (size_t i=0; i<N; i++) {
+
201  reinterpret_cast<int16_t *>(out.data())[i] = int16_t(values[i])<<8;
+
202  }
+
203  return 2*N;
+
204  }
+
205 
+
207  static size_t _uint16_int16(const RawBuffer &in, const RawBuffer &out) {
+
208  size_t N = in.bytesLen()/2;
+
209  uint16_t *values = reinterpret_cast<uint16_t *>(in.data());
+
210  for (size_t i=0; i<N; i++) {
+
211  reinterpret_cast<int16_t *>(out.data())[i] = int32_t(values[i])-((2<<15)-1);
+
212  }
+
213  return 2*N;
+
214  }
+
215 
+
217  static size_t _uint8_cint16(const RawBuffer &in, const RawBuffer &out) {
+
218  size_t N = in.bytesLen();
+
219  uint8_t *values = reinterpret_cast<uint8_t *>(in.data());
+
220  for (size_t i=0; i<N; i++) {
+
221  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
+
222  = std::complex<int16_t>((int16_t(values[i])-127)<<8);
+
223  }
+
224  return 4*N;
+
225  }
+
226 
+
228  static size_t _int8_cint16(const RawBuffer &in, const RawBuffer &out) {
+
229  size_t N = in.bytesLen();
+
230  int8_t *values = reinterpret_cast<int8_t *>(in.data());
+
231  for (size_t i=0; i<N; i++) {
+
232  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
+
233  = std::complex<int16_t>(int16_t(values[i])*(1<<8));
+
234  }
+
235  return 4*N;
+
236  }
+
237 
+
239  static size_t _uint16_cint16(const RawBuffer &in, const RawBuffer &out) {
+
240  size_t N = in.bytesLen()/2;
+
241  uint16_t *values = reinterpret_cast<uint16_t *>(in.data());
+
242  for (size_t i=0; i<N; i++) {
+
243  reinterpret_cast<std::complex<int16_t> *>(out.data())[i]
+
244  = std::complex<int16_t>(int32_t(values[i])-(1<<15));
+
245  }
+
246  return 4*N;
+
247  }
+
248 
+
250  static size_t _int16_cint16(const RawBuffer &in, const RawBuffer &out) {
+
251  size_t N = in.bytesLen()/2;
+
252  int16_t *values = reinterpret_cast<int16_t *>(in.data());
+
253  for (size_t i=0; i<N; i++) {
+
254  reinterpret_cast<std::complex<int16_t> *>(out.data())[i] = std::complex<int16_t>(values[i]);
+
255  }
+
256  return 4*N;
+
257  }
+
258 };
+
259 
+
260 
+
261 }
+
262 #endif // __SDR_AUTOCAST_HH__
+
static size_t _int16_int8(const RawBuffer &in, const RawBuffer &out)
int16 -> int8
Definition: autocast.hh:137
A collection of configuration information that is send by a source to all connected sinks to properga...
Definition: node.hh:35
Base class of all buffers, represents an untyped array of bytes.
Definition: buffer.hh:32
-
Buffer< Scalar > _buffer
Output buffer.
Definition: autocast.hh:103
-
static size_t _cint8_cint16(const RawBuffer &in, const RawBuffer &out)
complex int8 -> complex int16.
Definition: autocast.hh:218
+
Buffer< Scalar > _buffer
Output buffer.
Definition: autocast.hh:105
+
static size_t _uint16_cint8(const RawBuffer &in, const RawBuffer &out)
uint16 -> complex int 8.
Definition: autocast.hh:168
Real signed 16b ints.
Definition: node.hh:44
virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)
Sends the given buffer to all connected sinks.
Definition: node.cc:67
Complex (aka I/Q) type of unsigned 16b ints.
Definition: node.hh:49
+
Definition: afsk.hh:6
Real signed 8b ints.
Definition: node.hh:42
Generic source class.
Definition: node.hh:213
Real unsigned 8b ints.
Definition: node.hh:41
-
static size_t _cuint8_cint16(const RawBuffer &in, const RawBuffer &out)
complex unsigned int8 -> complex int16.
Definition: autocast.hh:206
-
static size_t _cint16_cint8(const RawBuffer &in, const RawBuffer &out)
complex int16 -> complex int 8.
Definition: autocast.hh:164
size_t bytesLen() const
Returns the size of the buffer by the view.
Definition: buffer.hh:73
-
size_t(* _cast)(const RawBuffer &in, const RawBuffer &out)
Cast function.
Definition: autocast.hh:105
+
static size_t _uint8_int16(const RawBuffer &in, const RawBuffer &out)
uint8 -> int16.
Definition: autocast.hh:187
char * data() const
Returns the pointer to the data of the buffer view.
Definition: buffer.hh:69
Real unsigned 16b ints.
Definition: node.hh:43
-
static size_t _int8_cint8(const RawBuffer &in, const RawBuffer &out)
int8 -> complex int8.
Definition: autocast.hh:135
+
static size_t _int8_cint8(const RawBuffer &in, const RawBuffer &out)
int8 -> complex int8.
Definition: autocast.hh:158
virtual void setConfig(const Config &config)
Stores the configuration and propergates it if the configuration has been changed.
Definition: node.cc:98
-
virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite)
Needs to be implemented by any sub-type to process the received data.
Definition: autocast.hh:90
+
virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite)
Needs to be implemented by any sub-type to process the received data.
Definition: autocast.hh:92
void log(const LogMessage &message)
Logs a message.
Definition: logger.cc:100
Type type() const
Returns the type.
Definition: node.hh:71
+
size_t(* _cast)(const RawBuffer &in, const RawBuffer &out)
Cast function.
Definition: autocast.hh:107
+
static size_t _uint8_int8(const RawBuffer &in, const RawBuffer &out)
uint8_t -> int8_t
Definition: autocast.hh:117
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
The configuration error class.
Definition: exception.hh:24
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
-
static size_t _int8_int16(const RawBuffer &in, const RawBuffer &out)
int8 -> int16.
Definition: autocast.hh:174
-
static size_t _int16_cint8(const RawBuffer &in, const RawBuffer &out)
int16 -> complex int 8.
Definition: autocast.hh:155
+
static size_t _int8_int16(const RawBuffer &in, const RawBuffer &out)
int8 -> int16.
Definition: autocast.hh:197
+
static size_t _int16_cint8(const RawBuffer &in, const RawBuffer &out)
int16 -> complex int 8.
Definition: autocast.hh:178
AutoCast()
Constructor.
Definition: autocast.hh:18
-
static size_t _int16_cint16(const RawBuffer &in, const RawBuffer &out)
int16 -> complex int16.
Definition: autocast.hh:241
-
This class performs some automatic casts to a certain buffer type if possible specified by the templa...
Definition: autocast.hh:14
+
static size_t _int16_cint16(const RawBuffer &in, const RawBuffer &out)
int16 -> complex int16.
Definition: autocast.hh:250
+
This class performs some automatic casts to a certain buffer type (if possible) specified by the temp...
Definition: autocast.hh:14
Basic interface of all Sinks.
Definition: node.hh:174
char * ptr() const
Returns the pointer to the data (w/o view).
Definition: buffer.hh:67
Complex (aka I/Q) type of signed 8b ints.
Definition: node.hh:48
virtual void config(const Config &src_cfg)
Configures the auto cast node.
Definition: autocast.hh:25
-
static size_t _uint8_cint16(const RawBuffer &in, const RawBuffer &out)
unsinged int8 -> complex int16.
Definition: autocast.hh:184
-
static size_t _int8_cint16(const RawBuffer &in, const RawBuffer &out)
int8 -> complex int16.
Definition: autocast.hh:195
+
static size_t _uint8_cint16(const RawBuffer &in, const RawBuffer &out)
unsinged int8 -> complex int16.
Definition: autocast.hh:217
+
static size_t _int8_cint16(const RawBuffer &in, const RawBuffer &out)
int8 -> complex int16.
Definition: autocast.hh:228
Complex (aka I/Q) type of signed 16b ints.
Definition: node.hh:50
+
static size_t _uint16_int16(const RawBuffer &in, const RawBuffer &out)
uint16 -> int16.
Definition: autocast.hh:207
Complex (aka I/Q) type of unsigned 8b ints.
Definition: node.hh:47
+
static size_t _uint16_int8(const RawBuffer &in, const RawBuffer &out)
uint16 -> int8
Definition: autocast.hh:127
Forward declaration of type tratis template.
Definition: traits.hh:20
-
static size_t _uint16_cint16(const RawBuffer &in, const RawBuffer &out)
uint16 -> complex int16.
Definition: autocast.hh:230
-
static size_t _uint8_cint8(const RawBuffer &in, const RawBuffer &out)
uint8 -> complex int8.
Definition: autocast.hh:124
-
static size_t _identity(const RawBuffer &in, const RawBuffer &out)
Performs no cast at all.
Definition: autocast.hh:109
+
static size_t _uint16_cint16(const RawBuffer &in, const RawBuffer &out)
uint16 -> complex int16.
Definition: autocast.hh:239
+
static size_t _uint8_cint8(const RawBuffer &in, const RawBuffer &out)
uint8 -> complex int8.
Definition: autocast.hh:147
+
static size_t _identity(const RawBuffer &in, const RawBuffer &out)
Performs no cast at all.
Definition: autocast.hh:111
-
static size_t _cuint8_cint8(const RawBuffer &in, const RawBuffer &out)
std::complex<uint8_t> -> std::complex<int8_t>.
Definition: autocast.hh:144
double sampleRate() const
Returns the sample rate.
Definition: node.hh:77
diff --git a/baseband_8hh_source.html b/baseband_8hh_source.html index 3c55d5b..78c1579 100644 --- a/baseband_8hh_source.html +++ b/baseband_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/baseband.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/baseband.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_BASEBAND_HH__
-
2 #define __SDR_BASEBAND_HH__
-
3 
+
2 #define __SDR_BASEBAND_HH__
+
3 
4 #include "node.hh"
5 #include "config.hh"
6 #include "utils.hh"
@@ -100,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
8 #include "operators.hh"
9 #include "freqshift.hh"
10 
-
11 namespace sdr {
+
11 namespace sdr {
12 
13 
21 template <class Scalar>
@@ -113,8 +114,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
32 
33 public:
35  IQBaseBand(double Fc, double width, size_t order, size_t sub_sample, double oFs=0.0)
-
36  : Sink<CScalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
-
37  _Fc(Fc), _Ff(Fc), _Fs(0), _width(width), _order(std::max(size_t(1), order)),
+
36  : Sink<CScalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
+
37  _Fc(Fc), _Ff(Fc), _Fs(0), _width(width), _order(std::max(size_t(1), order)),
38  _sub_sample(sub_sample), _oFs(oFs), _ring_offset(0), _sample_count(0),
39  _last(0), _kernel(_order)
40  {
@@ -124,8 +125,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
44  }
45 
47  IQBaseBand(double Fc, double Ff, double width, size_t order, size_t sub_sample, double oFs=0.0)
-
48  : Sink<CScalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
-
49  _Fc(Fc), _Ff(Ff), _Fs(0), _width(width), _order(std::max(size_t(1), order)),
+
48  : Sink<CScalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
+
49  _Fc(Fc), _Ff(Ff), _Fs(0), _width(width), _order(std::max(size_t(1), order)),
50  _sub_sample(sub_sample), _oFs(oFs), _ring_offset(0), _sample_count(0),
51  _last(0), _kernel(_order)
52  {
@@ -207,11 +208,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
143  _process(buffer, _buffer);
144  } else {
145 #ifdef SDR_DEBUG
-
146  LogMessage msg(LOG_WARNING);
+
146  LogMessage msg(LOG_WARNING);
147  msg << "IQBaseBand: Drop buffer: Output buffer still in use.";
148  Logger::get().log(msg);
149 #endif
-
150  }
+
150  }
151  }
152 
153 
@@ -272,7 +273,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
211  // If _sample_count samples have been averaged:
212  if (_sub_sample == _sample_count) {
213  // Store average in output buffer
- +
214  CSScalar value = _last/CSScalar(_sub_sample);
215  out[j] = value;
216  // reset average, sample count and increment output buffer index j
217  _last = 0; _sample_count=0; j++;
@@ -283,9 +284,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
222  this->send(out.head(j), true);
223  }
224 
-
226  inline CSScalar _filter_ring() const
+
226  inline CSScalar _filter_ring() const
227  {
-
228  CSScalar res = 0;
+
228  CSScalar res = 0;
229  size_t idx = _ring_offset+1;
230  if (_order == idx) { idx = 0; }
231  for (size_t i=0; i<_order; i++, idx++) {
@@ -330,7 +331,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
278  double _oFs;
280  size_t _ring_offset;
- +
284  CSScalar _last;
286  size_t _sourceBs;
287 
@@ -352,7 +353,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
315 public:
322  BaseBand(double Fc, double width, size_t order, size_t sub_sample)
323  : Sink<Scalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
-
324  _Ff(Fc), _width(width), _order(std::max(size_t(1), order)),
+
324  _Ff(Fc), _width(width), _order(std::max(size_t(1), order)),
325  _sub_sample(sub_sample), _ring_offset(0), _sample_count(0),
326  _last(0), _kernel(_order)
327  {
@@ -363,7 +364,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
332 
340  BaseBand(double Fc, double Ff, double width, size_t order, size_t sub_sample)
341  : Sink<Scalar>(), Source(), FreqShiftBase<Scalar>(Fc, 0),
-
342  _Ff(Ff), _width(width), _order(std::max(size_t(1), order)),
+
342  _Ff(Ff), _width(width), _order(std::max(size_t(1), order)),
343  _sub_sample(sub_sample), _ring_offset(0), _sample_count(0),
344  _last(0), _kernel(_order)
345  {
@@ -430,11 +431,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
410  _process(buffer, _buffer);
411  } else {
412 #ifdef SDR_DEBUG
-
413  LogMessage msg(LOG_WARNING);
+
413  LogMessage msg(LOG_WARNING);
414  msg << "BaseBand: Drop buffer: Output buffer still in use.";
415  Logger::get().log(msg);
416 #endif
-
417  }
+
417  }
418  }
419 
420 
@@ -463,9 +464,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
446  this->send(out.head(j), true);
447  }
448 
- +
450  inline CSScalar _filter_ring()
451  {
-
452  CSScalar res = 0;
+
452  CSScalar res = 0;
453  size_t idx = _ring_offset+1;
454  if (_order == idx) { idx = 0; }
455  for (size_t i=0; i<_order; i++, idx++) {
@@ -513,7 +514,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
503  size_t _ring_offset;
504 
- +
508  CSScalar _last;
509 
@@ -550,8 +551,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
IQBaseBand(double Fc, double width, size_t order, size_t sub_sample, double oFs=0.0)
Constructor, the filter center frequency Ff equals the given center frequency Fc. ...
Definition: baseband.hh:35
void _process(const Buffer< Scalar > &in, const Buffer< CScalar > &out)
Performs the actual procssing.
Definition: baseband.hh:425
Typed sink.
Definition: node.hh:192
+
Definition: afsk.hh:6
double centerFrequency() const
Returns the center frequency.
Definition: baseband.hh:82
bool isEmpty() const
Returns true if the buffer is invalid/empty.
Definition: buffer.hh:77
+
Definition: operators.hh:9
void setCenterFrequency(double Fc)
Resets the center frequency.
Definition: baseband.hh:84
virtual void setFrequencyShift(double F)
Sets the frequency shift and updates the LUT.
Definition: freqshift.hh:53
bool hasSampleRate() const
If true, the configuration has a sample rate.
Definition: node.hh:75
@@ -593,25 +596,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
size_t _sample_count
Holds the current number of samples averaged.
Definition: baseband.hh:282
Buffer< CScalar > _buffer
The output buffer.
Definition: baseband.hh:524
-
A performant implementation of a frequency shift operation on integer signals.
Definition: freqshift.hh:14
+
A performant implementation of a frequency-shift operation on integer signals.
Definition: freqshift.hh:14
int32_t _Fc
The frequency shift of the base band.
Definition: baseband.hh:266
virtual void config(const Config &src_cfg)
Configures the BaseBand node.
Definition: baseband.hh:115
size_t _order
The order of the band pass filter.
Definition: baseband.hh:499
The configuration error class.
Definition: exception.hh:24
Buffer< CSScalar > _lut
look-up table
Definition: baseband.hh:513
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
std::complex< Scalar > CScalar
The complex type of the input stream.
Definition: baseband.hh:26
void setSubsample(size_t sub_sample)
Resets the sub sampling.
Definition: baseband.hh:105
-
size_t _lut_count
The current LUT index times (1<<4).
Definition: baseband.hh:517
+
size_t _lut_count
The current LUT index times (1<<4).
Definition: baseband.hh:517
static const size_t _lut_size
Size of the look-up table.
Definition: baseband.hh:528
FreqShiftBase< Scalar >::SScalar SScalar
The real super scalar.
Definition: baseband.hh:311
This class performs several operations on the real input stream, It first filters out some part of th...
Definition: baseband.hh:305
CSScalar applyFrequencyShift(CSScalar value)
Performs the frequency shift on a single sample.
Definition: freqshift.hh:58
size_t _sub_sample
The number of averages taken for subsampling.
Definition: baseband.hh:501
double _Ff
The center frequency of the band pass filter.
Definition: baseband.hh:495
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
-
bool isUnused() const
We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner hol...
Definition: buffer.hh:87
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
+
bool isUnused() const
We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner hold...
Definition: buffer.hh:87
BaseBand(double Fc, double Ff, double width, size_t order, size_t sub_sample)
Constructs a new BaseBand instance.
Definition: baseband.hh:340
Forward declaration of type tratis template.
Definition: traits.hh:20
Buffer< CSScalar > _kernel
The filter kernel of order _order.
Definition: baseband.hh:289
@@ -619,7 +622,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
CSScalar _last
Holds the current sum of the last _sample_count samples.
Definition: baseband.hh:284
double filterWidth() const
Returns the filter width.
Definition: baseband.hh:96
double _width
The width of the band pass filter.
Definition: baseband.hh:497
-
size_t _lut_inc
The LUT index increment per (1<<4) samples.
Definition: baseband.hh:515
+
size_t _lut_inc
The LUT index increment per (1<<4) samples.
Definition: baseband.hh:515
Buffer< CSScalar > _kernel
The filter kernel of order _order.
Definition: baseband.hh:520
CSScalar _filter_ring() const
Applies the filter on the data stored in the ring buffer.
Definition: baseband.hh:226
Buffer< SScalar > _ring
A ring buffer of past values.
Definition: baseband.hh:522
@@ -631,9 +634,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/buffer_8hh_source.html b/buffer_8hh_source.html index 99be77f..ca9f65c 100644 --- a/buffer_8hh_source.html +++ b/buffer_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/buffer.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/buffer.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_BUFFER_HH__
-
2 #define __SDR_BUFFER_HH__
-
3 
+
2 #define __SDR_BUFFER_HH__
+
3 
4 #include <vector>
5 #include <map>
6 #include <list>
@@ -106,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
14 #include "exception.hh"
15 
16 
-
17 namespace sdr {
+
17 namespace sdr {
18 
19 // Forward declarations
20 class RawBuffer;
@@ -220,13 +221,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
167 
170  inline T &operator[] (int idx) const {
171 #ifdef SDR_DEBUG
-
172  if ((idx >= _size) || (idx < 0)) {
+
172  if ((idx >= _size) || (idx < 0)) {
173  RuntimeError err;
174  err << "Index " << idx << " out of bounds [0," << _size << ")";
175  throw err;
176  }
177 #endif
-
178  return reinterpret_cast<T *>(_ptr+_b_offset)[idx];
+
178  return reinterpret_cast<T *>(_ptr+_b_offset)[idx];
179  }
180 
182  inline double norm2() const {
@@ -393,13 +394,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
376 
378  char &operator[] (int idx) {
379 #ifdef SDR_DEBUG
-
380  if ((idx < 0) || (idx>=(int)_b_stored)) {
+
380  if ((idx < 0) || (idx>=(int)_b_stored)) {
381  RuntimeError err;
382  err << "RawRingBuffer: Index " << idx << " out of bounds [0," << bytesLen() << ").";
383  throw err;
384  }
385 #endif
-
386  int i = _take_idx+idx;
+
386  int i = _take_idx+idx;
387  if (i >= (int)_storage_size) { i -= _storage_size; }
388  return *(ptr()+i);
389  }
@@ -528,7 +529,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
543 }
544 
545 #endif // __SDR_BUFFER_HH__
-
RawRingBuffer()
Empty constructor.
Definition: buffer.cc:82
+
RawRingBuffer()
Empty constructor.
Definition: buffer.cc:84
Buffer(const RawBuffer &other)
Explicit type cast.
Definition: buffer.hh:143
size_t _b_offset
Holds the offset of the buffer in bytes.
Definition: buffer.hh:98
double norm(double p) const
Returns the norm of the buffer.
Definition: buffer.hh:200
@@ -538,7 +539,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
size_t _take_idx
The current read pointer.
Definition: buffer.hh:464
const RingBuffer< Scalar > & operator=(const RingBuffer< Scalar > &other)
Assigment operator, turns this buffer into a reference to the other ring buffer.
Definition: buffer.hh:490
size_t _stored
The number of stored elements.
Definition: buffer.hh:540
-
virtual ~RawRingBuffer()
Destructor.
Definition: buffer.cc:100
+
virtual ~RawRingBuffer()
Destructor.
Definition: buffer.cc:102
Buffer()
Empty constructor.
Definition: buffer.hh:115
virtual void bufferUnused(const RawBuffer &buffer)=0
Gets called once an owned buffer gets unused.
Buffer< T > & operator/=(const T &a)
In-place, element wise division of the buffer with the scalar a.
Definition: buffer.hh:217
@@ -548,8 +549,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual ~RingBuffer()
Destructor.
Definition: buffer.hh:487
size_t bytesLen() const
Returns the number of bytes available for reading.
Definition: buffer.hh:392
void clear()
Clear the ring-buffer.
Definition: buffer.hh:453
-
void ref() const
Increment reference counter.
Definition: buffer.cc:55
+
void ref() const
Increment reference counter.
Definition: buffer.cc:57
size_t stored() const
Returns the number of stored elements.
Definition: buffer.hh:502
+
Definition: afsk.hh:6
bool take(const RawBuffer &dest, size_t N)
Take N bytes from the ring buffer and store it into the given buffer dest.
Definition: buffer.hh:426
bool isEmpty() const
Returns true if the buffer is invalid/empty.
Definition: buffer.hh:77
size_t storageSize() const
Returns the raw buffer size in bytes.
Definition: buffer.hh:75
@@ -598,11 +600,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
char * ptr() const
Returns the pointer to the data (w/o view).
Definition: buffer.hh:67
const RawBuffer & operator=(const RawBuffer &other)
Assignment.
Definition: buffer.hh:54
Abstract class (interface) of a buffer owner.
Definition: buffer.hh:24
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
-
bool isUnused() const
We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner hol...
Definition: buffer.hh:87
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
+
bool isUnused() const
We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner hold...
Definition: buffer.hh:87
void drop(size_t N)
Drops N elements from the ring buffer.
Definition: buffer.hh:527
int * _refcount
The reference counter.
Definition: buffer.hh:102
-
virtual ~RawBuffer()
Destructor.
Definition: buffer.cc:49
+
virtual ~RawBuffer()
Destructor.
Definition: buffer.cc:51
Buffer< Scalar > getBuffer()
Obtains a free buffer.
Definition: buffer.hh:318
bool put(const RawBuffer &src)
Puts the given data into the ring-buffer.
Definition: buffer.hh:401
size_t _size
Holds the number of elements of type T in the buffer.
Definition: buffer.hh:250
@@ -614,9 +616,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/buffernode_8hh_source.html b/buffernode_8hh_source.html index c82c6ce..6c82c72 100644 --- a/buffernode_8hh_source.html +++ b/buffernode_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/buffernode.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/buffernode.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_BUFFERNODE_HH__
-
2 #define __SDR_BUFFERNODE_HH__
-
3 
+
2 #define __SDR_BUFFERNODE_HH__
+
3 
4 #include "node.hh"
5 #include "config.hh"
6 #include "logger.hh"
@@ -101,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
9 #include <cstring>
10 
11 
-
12 namespace sdr {
+
12 namespace sdr {
13 
17 template <class Scalar>
18 class BufferNode : public Sink<Scalar>, public Source
@@ -190,6 +191,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)
Sends the given buffer to all connected sinks.
Definition: node.cc:67
BufferNode(size_t bufferSize)
Constructs a new buffer node.
Definition: buffernode.hh:23
Typed sink.
Definition: node.hh:192
+
Definition: afsk.hh:6
size_t numBuffers() const
Returns the max.
Definition: node.hh:89
Generic source class.
Definition: node.hh:213
size_t _bufferSize
The desired buffer size.
Definition: buffernode.hh:95
@@ -202,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Buffer< Scalar > _temp
An intermediate buffer to hold left-over samples from the previous buffers.
Definition: buffernode.hh:99
Type type() const
Returns the type.
Definition: node.hh:71
The configuration error class.
Definition: exception.hh:24
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
BufferSet< Scalar > _bufferSet
A set of output buffers.
Definition: buffernode.hh:97
@@ -211,9 +213,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/bug.html b/bug.html index 148f862..6bba8ed 100644 --- a/bug.html +++ b/bug.html @@ -3,15 +3,16 @@ - + libsdr: Bug List + @@ -32,7 +33,7 @@ - + @@ -66,7 +67,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -83,7 +84,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Member sdr::BaseBand< Scalar >::setSampleRate (double Fs)
-
Also signal config change of the sourcce by setConfig()!
+
Also signal config change of the sourcce by setConfig()!
Member sdr::PortSource< Scalar >::next ()
Drop data if output buffer is in use.
Member sdr::StreamSink< Scalar >::process (const Buffer< Scalar > &buffer, bool allow_overwrite)
@@ -92,9 +93,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classes.html b/classes.html index 1ac49c7..ef1cd7d 100644 --- a/classes.html +++ b/classes.html @@ -3,15 +3,16 @@ - + libsdr: Class Index + @@ -32,7 +33,7 @@
- + @@ -75,7 +76,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -92,60 +93,61 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | F | G | I | L | M | O | P | Q | R | S | T | U | V | W
- - - - + + + + + + - - - + - - - + - - + - - + - - - - + + - - - + + - - - + + + - - + +
  A  
-
DelegateInterface (sdr)   
  I  
+
Options::Definition (sdr)   
  I  
  R  
Traits< float > (sdr)   
  F  
-
Traits< int16_t > (sdr)   
AGC (sdr)   ImagPart (sdr)   RawBuffer (sdr)   Traits< int8_t > (sdr)   
AMDemod (sdr)   FFT (sdr)   InpolSubSampler (sdr)   RawRingBuffer (sdr)   Traits< std::complex< double > > (sdr)   
AutoCast (sdr)   FFTPlan (sdr)   Interleave (sdr)   RealImagPart (sdr)   Traits< std::complex< float > > (sdr)   
Delegate (sdr)   Traits< int16_t > (sdr)   
AFSK (sdr)   DelegateInterface (sdr)   ImagPart (sdr)   RawBuffer (sdr)   Traits< int8_t > (sdr)   
AGC (sdr)   
  F  
+
InpolSubSampler (sdr)   RawRingBuffer (sdr)   Traits< std::complex< double > > (sdr)   
AMDemod (sdr)   Interleave (sdr)   RealImagPart (sdr)   Traits< std::complex< float > > (sdr)   
AutoCast (sdr)   FFT (sdr)   IQBalance (sdr)   RealPart (sdr)   Traits< std::complex< int16_t > > (sdr)   
AX25 (sdr)   FFTPlan (sdr)   IQBaseBand (sdr)   RingBuffer (sdr)   Traits< std::complex< int8_t > > (sdr)   
  B  
-
FFTPlan< double > (sdr)   IQBalance (sdr)   RealPart (sdr)   Traits< std::complex< int16_t > > (sdr)   
FFTPlan< float > (sdr)   IQBaseBand (sdr)   RingBuffer (sdr)   Traits< std::complex< int8_t > > (sdr)   
BaseBand (sdr)   FilterNode (sdr)   IQSigGen (sdr)   RTLSource (sdr)   Traits< std::complex< uint16_t > > (sdr)   
BlockingSource (sdr)   FilterSink (sdr)   
  L  
+
FFTPlan< double > (sdr)   IQSigGen (sdr)   RTLSource (sdr)   Traits< std::complex< uint16_t > > (sdr)   
FFTPlan< float > (sdr)   
  L  
RuntimeError (sdr)   Traits< std::complex< uint8_t > > (sdr)   
BPSK31 (sdr)   FilterSource (sdr)   
  S  
+
BaseBand (sdr)   FilterNode (sdr)   
  S  
Traits< uint16_t > (sdr)   
Buffer (sdr)   FIRBandPass (sdr)   Logger (sdr)   Traits< uint8_t > (sdr)   
BufferNode (sdr)   FIRBandPassCoeffs (sdr)   LogHandler (sdr)   Scale (sdr)   
  U  
+
Baudot (sdr)   FilterSink (sdr)   Logger (sdr)   Traits< uint8_t > (sdr)   
BlockingSource (sdr)   FilterSource (sdr)   LogHandler (sdr)   Scale (sdr)   
  U  
BufferOwner (sdr)   FIRBandStop (sdr)   LogMessage (sdr)   SDRError (sdr)   
BufferSet (sdr)   FIRBandStopCoeffs (sdr)   
  M  
+
BPSK31 (sdr)   FIRBandPass (sdr)   LogMessage (sdr)   SDRError (sdr)   
Buffer (sdr)   FIRBandPassCoeffs (sdr)   
  M  
SigGen (sdr)   UnsignedToSigned (sdr)   
  C  
-
FIRFilter (sdr)   SignedToUnsigned (sdr)   USBDemod (sdr)   
FIRHighPass (sdr)   Queue::Message (sdr)   Sink (sdr)   
  V  
+
BufferNode (sdr)   FIRBandStop (sdr)   SignedToUnsigned (sdr)   USBDemod (sdr)   
BufferOwner (sdr)   FIRBandStopCoeffs (sdr)   Queue::Message (sdr)   Sink (sdr)   
  V  
Cast (sdr)   FIRHighPassCoeffs (sdr)   
  O  
+
BufferSet (sdr)   FIRFilter (sdr)   
  O  
SinkBase (sdr)   
Combine (sdr)   FIRLowPass (sdr)   Source (sdr)   Options::Value (sdr)   
CombineSink (sdr)   FIRLowPassCoeffs (sdr)   Options (sdr)   StreamLogHandler (sdr)   Varicode (sdr)   
Config (sdr)   FMDeemph (sdr)   
  P  
+
  C  
+
FIRHighPass (sdr)   Source (sdr)   Options::Value (sdr)   
FIRHighPassCoeffs (sdr)   Options (sdr)   StreamLogHandler (sdr)   Varicode (sdr)   
Cast (sdr)   FIRLowPass (sdr)   
  P  
StreamSink (sdr)   
  W  
ConfigError (sdr)   FMDemod (sdr)   StreamSource (sdr)   
  D  
-
FracSubSampleBase (sdr)   PortAudio (sdr)   SubSample (sdr)   WavSink (sdr)   
FreqShift (sdr)   PortSink (sdr)   
  T  
+
Combine (sdr)   FIRLowPassCoeffs (sdr)   StreamSource (sdr)   
CombineSink (sdr)   FMDeemph (sdr)   PortAudio (sdr)   SubSample (sdr)   WavSink (sdr)   
Config (sdr)   FMDemod (sdr)   PortSink (sdr)   
  T  
WavSource (sdr)   
DebugDump (sdr)   FreqShiftBase (sdr)   PortSource (sdr)   
DebugStore (sdr)   
  G  
-
Proxy (sdr)   ToComplex (sdr)   
Options::Definition (sdr)   
  Q  
+
ConfigError (sdr)   FracSubSampleBase (sdr)   PortSource (sdr)   
  D  
+
FreqShift (sdr)   Proxy (sdr)   TextDump (sdr)   
FreqShiftBase (sdr)   
  Q  
+
ToComplex (sdr)   
DebugDump (sdr)   
  G  
Traits (sdr)   
Delegate (sdr)   GWNSource (sdr)   Traits< double > (sdr)   
Queue (sdr)   
DebugStore (sdr)   Queue (sdr)   Traits< double > (sdr)   
GWNSource (sdr)   
A | B | C | D | F | G | I | L | M | O | P | Q | R | S | T | U | V | W
diff --git a/classsdr_1_1_a_g_c-members.html b/classsdr_1_1_a_g_c-members.html index 81a2ba9..92086e6 100644 --- a/classsdr_1_1_a_g_c-members.html +++ b/classsdr_1_1_a_g_c-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -135,9 +136,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_a_g_c.html b/classsdr_1_1_a_g_c.html index b2870a2..67dce30 100644 --- a/classsdr_1_1_a_g_c.html +++ b/classsdr_1_1_a_g_c.html @@ -3,15 +3,16 @@ - + libsdr: sdr::AGC< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,128 +118,128 @@ Inheritance diagram for sdr::AGC< Scalar >:

Public Member Functions

 AGC (double tau=0.1, double target=0) - Constructor. More...
+ Constructor. More...
  bool enabled () const - Returns true, if the AGC is enabled. More...
+ Returns true, if the AGC is enabled. More...
  void enable (bool enabled) - Enable/disable the AGC node. More...
+ Enable/disable the AGC node. More...
  float gain () const - Returns the current gain factor. More...
+ Returns the current gain factor. More...
  void setGain (float gain) - Resets the current gain factor. More...
+ Resets the current gain factor. More...
  double tau () const - Returns the time-constant of the AGC. More...
+ Returns the time-constant of the AGC. More...
  void setTau (double tau) - Sets the time-constant of the AGC. More...
+ Sets the time-constant of the AGC. More...
  virtual void config (const Config &src_cfg) - Configures the AGC node. More...
+ Configures the AGC node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the amplification and adjusts the gain. More...
+ Performs the amplification and adjusts the gain. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

bool _enabled
 If true, the automatic gain adjustment is enabled. More...
 If true, the automatic gain adjustment is enabled. More...
 
float _tau
 The time-constant of the AGC. More...
 The time-constant of the AGC. More...
 
float _lambda
 One over the time-constant. More...
 One over the time-constant. More...
 
float _sd
 The averaged std. More...
 The averaged std. More...
 
float _target
 The target level of the output signal. More...
 The target level of the output signal. More...
 
float _gain
 The current gain factor. More...
 The current gain factor. More...
 
double _sample_rate
 The current sample-rate. More...
 The current sample-rate. More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::AGC< Scalar >

An automatic gain control node.

@@ -712,14 +713,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_a_m_demod-members.html b/classsdr_1_1_a_m_demod-members.html index b2049d6..b7b2469 100644 --- a/classsdr_1_1_a_m_demod-members.html +++ b/classsdr_1_1_a_m_demod-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -123,9 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_a_m_demod.html b/classsdr_1_1_a_m_demod.html index ed08a30..e515ab4 100644 --- a/classsdr_1_1_a_m_demod.html +++ b/classsdr_1_1_a_m_demod.html @@ -3,15 +3,16 @@ - + libsdr: sdr::AMDemod< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,92 +118,92 @@ Inheritance diagram for sdr::AMDemod< Scalar >:

Public Member Functions

 AMDemod () - Constructor. More...
+ Constructor. More...
  virtual ~AMDemod () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the AM demod. More...
+ Configures the AM demod. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Handles the I/Q input buffer. More...
+ Handles the I/Q input buffer. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - +

Protected Attributes

Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::AMDemod< Scalar >

Amplitude modulation (AM) demodulator from an I/Q signal.

@@ -358,14 +359,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_auto_cast-members.html b/classsdr_1_1_auto_cast-members.html index 3330c2c..b9c3a0d 100644 --- a/classsdr_1_1_auto_cast-members.html +++ b/classsdr_1_1_auto_cast-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -97,12 +98,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

This is the complete list of members for sdr::AutoCast< Scalar >, including all inherited members.

- - - + - - @@ -113,30 +110,35 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + +
_buffersdr::AutoCast< Scalar >protected
_castsdr::AutoCast< Scalar >protected
_cint16_cint8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_cint8_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_castsdr::AutoCast< Scalar >protected
_configsdr::Sourceprotected
_cuint8_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_cuint8_cint8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_eossdr::Sourceprotected
_identity(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_int16_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_int8_int16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_sinkssdr::Sourceprotected
_uint16_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_cint8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
addEOS(T *instance, void(T::*function)())sdr::Sourceinline
AutoCast()sdr::AutoCast< Scalar >inline
config(const Config &src_cfg)sdr::AutoCast< Scalar >inlinevirtual
connect(SinkBase *sink, bool direct=false)sdr::Source
disconnect(SinkBase *sink)sdr::Source
handleBuffer(const RawBuffer &buffer, bool allow_overwrite)sdr::AutoCast< Scalar >inlinevirtual
propagateConfig(const Config &config)sdr::Sourceprotected
sampleRate() const sdr::Sourcevirtual
send(const RawBuffer &buffer, bool allow_overwrite=false)sdr::Sourcevirtual
setConfig(const Config &config)sdr::Sourcevirtual
signalEOS()sdr::Sourceprotected
SinkBase()sdr::SinkBase
Source()sdr::Source
type() const sdr::Sourcevirtual
~SinkBase()sdr::SinkBasevirtual
~Source()sdr::Sourcevirtual
_uint16_cint8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint16_int16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint16_int8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_cint16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_cint8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_int16(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
_uint8_int8(const RawBuffer &in, const RawBuffer &out)sdr::AutoCast< Scalar >inlineprotectedstatic
addEOS(T *instance, void(T::*function)())sdr::Sourceinline
AutoCast()sdr::AutoCast< Scalar >inline
config(const Config &src_cfg)sdr::AutoCast< Scalar >inlinevirtual
connect(SinkBase *sink, bool direct=false)sdr::Source
disconnect(SinkBase *sink)sdr::Source
handleBuffer(const RawBuffer &buffer, bool allow_overwrite)sdr::AutoCast< Scalar >inlinevirtual
propagateConfig(const Config &config)sdr::Sourceprotected
sampleRate() const sdr::Sourcevirtual
send(const RawBuffer &buffer, bool allow_overwrite=false)sdr::Sourcevirtual
setConfig(const Config &config)sdr::Sourcevirtual
signalEOS()sdr::Sourceprotected
SinkBase()sdr::SinkBase
Source()sdr::Source
type() const sdr::Sourcevirtual
~SinkBase()sdr::SinkBasevirtual
~Source()sdr::Sourcevirtual
diff --git a/classsdr_1_1_auto_cast.html b/classsdr_1_1_auto_cast.html index b69aa1b..a72d070 100644 --- a/classsdr_1_1_auto_cast.html +++ b/classsdr_1_1_auto_cast.html @@ -3,15 +3,16 @@ - + libsdr: sdr::AutoCast< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -99,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
-

This class performs some automatic casts to a certain buffer type if possible specified by the template argument. +

This class performs some automatic casts to a certain buffer type (if possible) specified by the template argument. More...

#include <autocast.hh>

@@ -117,131 +118,136 @@ Inheritance diagram for sdr::AutoCast< Scalar >:

Public Member Functions

 AutoCast () - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the auto cast node. More...
+ Configures the auto cast node. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Needs to be implemented by any sub-type to process the received data. More...
+ Needs to be implemented by any sub-type to process the received data. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + + + + + + + - + - + - + - - - + + + - + - - - + + + - + + + + - + - + - - - - - - - + - +

Static Protected Member Functions

static size_t _identity (const RawBuffer &in, const RawBuffer &out)
 Performs no cast at all. More...
 Performs no cast at all. More...
 
+static size_t _uint8_int8 (const RawBuffer &in, const RawBuffer &out)
 uint8_t -> int8_t
 
+static size_t _uint16_int8 (const RawBuffer &in, const RawBuffer &out)
 uint16 -> int8
 
static size_t _int16_int8 (const RawBuffer &in, const RawBuffer &out)
 int16 -> int8
 int16 -> int8
 
static size_t _uint8_cint8 (const RawBuffer &in, const RawBuffer &out)
 uint8 -> complex int8. More...
 uint8 -> complex int8. More...
 
static size_t _int8_cint8 (const RawBuffer &in, const RawBuffer &out)
 int8 -> complex int8. More...
 int8 -> complex int8. More...
 
static size_t _cuint8_cint8 (const RawBuffer &in, const RawBuffer &out)
 std::complex<uint8_t> -> std::complex<int8_t>. More...
 
static size_t _uint16_cint8 (const RawBuffer &in, const RawBuffer &out)
 uint16 -> complex int 8. More...
 
static size_t _int16_cint8 (const RawBuffer &in, const RawBuffer &out)
 int16 -> complex int 8. More...
 int16 -> complex int 8. More...
 
static size_t _cint16_cint8 (const RawBuffer &in, const RawBuffer &out)
 complex int16 -> complex int 8. More...
 
static size_t _uint8_int16 (const RawBuffer &in, const RawBuffer &out)
 uint8 -> int16. More...
 
static size_t _int8_int16 (const RawBuffer &in, const RawBuffer &out)
 int8 -> int16. More...
 int8 -> int16. More...
 
static size_t _uint16_int16 (const RawBuffer &in, const RawBuffer &out)
 uint16 -> int16. More...
 
static size_t _uint8_cint16 (const RawBuffer &in, const RawBuffer &out)
 unsinged int8 -> complex int16. More...
 unsinged int8 -> complex int16. More...
 
static size_t _int8_cint16 (const RawBuffer &in, const RawBuffer &out)
 int8 -> complex int16. More...
 int8 -> complex int16. More...
 
static size_t _cuint8_cint16 (const RawBuffer &in, const RawBuffer &out)
 complex unsigned int8 -> complex int16. More...
 
static size_t _cint8_cint16 (const RawBuffer &in, const RawBuffer &out)
 complex int8 -> complex int16. More...
 
static size_t _uint16_cint16 (const RawBuffer &in, const RawBuffer &out)
 uint16 -> complex int16. More...
 uint16 -> complex int16. More...
 
static size_t _int16_cint16 (const RawBuffer &in, const RawBuffer &out)
 int16 -> complex int16. More...
 int16 -> complex int16. More...
 
- + - - - + + + - + - + - +

Protected Attributes

Buffer< Scalar > _buffer
 Output buffer. More...
 Output buffer. More...
 
size_t(* _cast )(const RawBuffer &in, const RawBuffer &out)
 Cast function. More...
 
size_t(* _cast )(const RawBuffer &in, const RawBuffer &out)
 Cast function. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::AutoCast< Scalar >

-

This class performs some automatic casts to a certain buffer type if possible specified by the template argument.

+

This class performs some automatic casts to a certain buffer type (if possible) specified by the template argument.

Currently only integer casts are supported.

Constructor & Destructor Documentation

@@ -272,158 +278,6 @@ template<class Scalar >

Member Function Documentation

- -
-
-
-template<class Scalar >
- - - - - -
- - - - - - - - - - - - - - - - - - -
static size_t sdr::AutoCast< Scalar >::_cint16_cint8 (const RawBufferin,
const RawBufferout 
)
-
-inlinestaticprotected
-
- -

complex int16 -> complex int 8.

- -
-
- -
-
-
-template<class Scalar >
- - - - - -
- - - - - - - - - - - - - - - - - - -
static size_t sdr::AutoCast< Scalar >::_cint8_cint16 (const RawBufferin,
const RawBufferout 
)
-
-inlinestaticprotected
-
- -

complex int8 -> complex int16.

- -
-
- -
-
-
-template<class Scalar >
- - - - - -
- - - - - - - - - - - - - - - - - - -
static size_t sdr::AutoCast< Scalar >::_cuint8_cint16 (const RawBufferin,
const RawBufferout 
)
-
-inlinestaticprotected
-
- -

complex unsigned int8 -> complex int16.

- -
-
- -
-
-
-template<class Scalar >
- - - - - -
- - - - - - - - - - - - - - - - - - -
static size_t sdr::AutoCast< Scalar >::_cuint8_cint8 (const RawBufferin,
const RawBufferout 
)
-
-inlinestaticprotected
-
- -

std::complex<uint8_t> -> std::complex<int8_t>.

- -
-
@@ -688,6 +542,82 @@ template<class Scalar >

uint16 -> complex int16.

+
+ + +
+
+
+template<class Scalar >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static size_t sdr::AutoCast< Scalar >::_uint16_cint8 (const RawBufferin,
const RawBufferout 
)
+
+inlinestaticprotected
+
+ +

uint16 -> complex int 8.

+ +
+
+ +
+
+
+template<class Scalar >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static size_t sdr::AutoCast< Scalar >::_uint16_int16 (const RawBufferin,
const RawBufferout 
)
+
+inlinestaticprotected
+
+ +

uint16 -> int16.

+
@@ -764,6 +694,44 @@ template<class Scalar >

uint8 -> complex int8.

+ + + +
+
+
+template<class Scalar >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static size_t sdr::AutoCast< Scalar >::_uint8_int16 (const RawBufferin,
const RawBufferout 
)
+
+inlinestaticprotected
+
+ +

uint8 -> int16.

+
@@ -861,7 +829,7 @@ template<class Scalar > - +
@@ -871,7 +839,7 @@ template<class Scalar >
- +
size_t(* sdr::AutoCast< Scalar >::_cast)(const RawBuffer &in, const RawBuffer &out)size_t(* sdr::AutoCast< Scalar >::_cast) (const RawBuffer &in, const RawBuffer &out)
@@ -886,14 +854,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_b_p_s_k31-members.html b/classsdr_1_1_b_p_s_k31-members.html index cadc510..f00ce83 100644 --- a/classsdr_1_1_b_p_s_k31-members.html +++ b/classsdr_1_1_b_p_s_k31-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -155,9 +156,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_b_p_s_k31.html b/classsdr_1_1_b_p_s_k31.html index 1526aaf..02a0d69 100644 --- a/classsdr_1_1_b_p_s_k31.html +++ b/classsdr_1_1_b_p_s_k31.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BPSK31< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -118,192 +119,192 @@ Inheritance diagram for sdr::BPSK31< Scalar >:

Public Member Functions

 BPSK31 (double dF=0.1) - Constructs a new BPSK31 demodulator. More...
+ Constructs a new BPSK31 demodulator. More...
  virtual ~BPSK31 () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
+ Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Needs to be implemented by any sub-type to process the received data. More...
+ Needs to be implemented by any sub-type to process the received data. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - +

Protected Member Functions

bool _hasTransition () const
 Returns true if there is a phase transition at the current sample. More...
 Returns true if there is a phase transition at the current sample. More...
 
int _currentContellation () const
 Returns the current constellation. More...
 Returns the current constellation. More...
 
float _phaseError (const std::complex< float > &value) const
 Computes the phase error. More...
 Computes the phase error. More...
 
void _updatePLL (const std::complex< float > &sample)
 Updates the PLL (_F and _P). More...
 Updates the PLL (_F and _P). More...
 
void _updateSampler (const std::complex< Scalar > &value)
 Updates the sub-sampler. More...
 Updates the sub-sampler. More...
 
void _errorTracking (const std::complex< float > &sample)
 Updates the PPL state (_mu and _omega). More...
 Updates the PPL state (_mu and _omega). More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

size_t _superSample
 Holds the number of phase constellations per bit. More...
 Holds the number of phase constellations per bit. More...
 
float _P
 Phase of the carrier PLL. More...
 Phase of the carrier PLL. More...
 
float _F
 Frequency of the carrier PLL. More...
 Frequency of the carrier PLL. More...
 
float _Fmin
 Lower frequency limit of the carrier PLL. More...
 Lower frequency limit of the carrier PLL. More...
 
float _Fmax
 Upper frequency limit of the carrier PLL. More...
 Upper frequency limit of the carrier PLL. More...
 
float _alpha
 Gain factor of the carrier PLL. More...
 Gain factor of the carrier PLL. More...
 
float _beta
 Gain factor of the carrier PLL. More...
 Gain factor of the carrier PLL. More...
 
Buffer< std::complex< float > > _dl
 The delay line for the interpolating sub-sampler. More...
 The delay line for the interpolating sub-sampler. More...
 
size_t _dl_idx
 The current index of the delay line. More...
 The current index of the delay line. More...
 
float _mu
 Holds the fractional sub-sampling counter. More...
 Holds the fractional sub-sampling counter. More...
 
float _gain_mu
 Gain factor of the sub-sampler. More...
 Gain factor of the sub-sampler. More...
 
float _theta
 Constant phase shift between real axis and first constellation. More...
 Constant phase shift between real axis and first constellation. More...
 
float _omega
 Current sub-sample rate. More...
 Current sub-sample rate. More...
 
float _omega_rel
 Relative error of the subsample rate. More...
 Relative error of the subsample rate. More...
 
float _min_omega
 Minimum of the sub-sample rate. More...
 Minimum of the sub-sample rate. More...
 
float _max_omega
 Maximum of the sub-sample rate. More...
 Maximum of the sub-sample rate. More...
 
float _gain_omega
 Gain of the sub-sample rate correction. More...
 Gain of the sub-sample rate correction. More...
 
std::complex< float > _p_0T
 Phase at T = 0 (samples). More...
 Phase at T = 0 (samples). More...
 
std::complex< float > _p_1T
 Phase at T=-1 (samples). More...
 Phase at T=-1 (samples). More...
 
std::complex< float > _p_2T
 Phase at T=-2 (samples). More...
 Phase at T=-2 (samples). More...
 
std::complex< float > _c_0T
 Constellation at T=0 (samples). More...
 Constellation at T=0 (samples). More...
 
std::complex< float > _c_1T
 Constellation at T=-1 (samples). More...
 Constellation at T=-1 (samples). More...
 
std::complex< float > _c_2T
 Constellation at T=-2 (samples). More...
 Constellation at T=-2 (samples). More...
 
Buffer< float > _hist
 The last _superSample phases. More...
 The last _superSample phases. More...
 
size_t _hist_idx
 Current phase history index. More...
 Current phase history index. More...
 
int _last_constellation
 The last output constellation. More...
 The last output constellation. More...
 
Buffer< uint8_t > _buffer
 Output buffer. More...
 Output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::BPSK31< Scalar >

A simple BPSK31 "demodulator".

-

This node consumes a complex input stream with a sample-rate of at least 2000Hz and produces a bitstream with 31.25 Hz "sample-rate". Use the Varicode node to decode this bitstream to ASCII chars. The BPSK31 signal should be centered around 0Hz. This node uses a simple PLL to adjust for small detunings.

+

This node consumes a complex input stream with a sample rate of at least 2000Hz and produces a bitstream with 31.25 Hz "sample rate". Use the Varicode node to decode this bitstream to ASCII chars. The BPSK31 signal should be centered around 0Hz. This node uses a simple PLL to adjust for small detunings.

Constructor & Destructor Documentation

@@ -1256,14 +1257,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_base_band-members.html b/classsdr_1_1_base_band-members.html index e1698d3..c2c4810 100644 --- a/classsdr_1_1_base_band-members.html +++ b/classsdr_1_1_base_band-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -154,9 +155,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_base_band.html b/classsdr_1_1_base_band.html index aa15680..6832bb8 100644 --- a/classsdr_1_1_base_band.html +++ b/classsdr_1_1_base_band.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BaseBand< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -113,229 +114,226 @@ Inheritance diagram for sdr::BaseBand< Scalar >:
sdr::Sink< Scalar > sdr::Source -sdr::FreqShiftBase< Scalar > +sdr::FreqShiftBase< Scalar > sdr::SinkBase - - + + - - + + - - + + - + - + - +

Public Types

typedef FreqShiftBase< Scalar >
-::CScalar 
CScalar
 The complex input scalar. More...
typedef FreqShiftBase< Scalar >::CScalar CScalar
 The complex input scalar. More...
 
typedef FreqShiftBase< Scalar >
-::SScalar 
SScalar
 The real super scalar. More...
typedef FreqShiftBase< Scalar >::SScalar SScalar
 The real super scalar. More...
 
typedef FreqShiftBase< Scalar >
-::CSScalar 
CSScalar
 The complex super scalar. More...
typedef FreqShiftBase< Scalar >::CSScalar CSScalar
 The complex super scalar. More...
 
- Public Types inherited from sdr::FreqShiftBase< Scalar >
typedef std::complex< Scalar > CScalar
 The complex input signal. More...
 The complex input signal. More...
 
typedef Traits< Scalar >::SScalar SScalar
 The compute (super) scalar of the input type. More...
 The compute (super) scalar of the input type. More...
 
typedef std::complex< SScalarCSScalar
 The complex compute (super) scalar of the input type. More...
 The complex compute (super) scalar of the input type. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 BaseBand (double Fc, double width, size_t order, size_t sub_sample)
 Constructs a new BaseBand instance. More...
 Constructs a new BaseBand instance. More...
 
 BaseBand (double Fc, double Ff, double width, size_t order, size_t sub_sample)
 Constructs a new BaseBand instance. More...
 Constructs a new BaseBand instance. More...
 
virtual ~BaseBand ()
 Destructor. More...
 Destructor. More...
 
virtual void config (const Config &src_cfg)
 Configures the base band node. More...
 Configures the base band node. More...
 
virtual void setSampleRate (double Fs)
 Sets the sample rate and updates the LUT. More...
 Sets the sample rate and updates the LUT. More...
 
virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite)
 Processes the input buffer. More...
 Processes the input buffer. More...
 
- Public Member Functions inherited from sdr::Sink< Scalar >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- Public Member Functions inherited from sdr::FreqShiftBase< Scalar >
 FreqShiftBase (double F, double Fs)
 Constructor. More...
 Constructor. More...
 
virtual ~FreqShiftBase ()
 Destructor. More...
 Destructor. More...
 
double sampleRate () const
 Returns the sample rate. More...
 Returns the sample rate. More...
 
double frequencyShift () const
 Returns the frequency shift. More...
 Returns the frequency shift. More...
 
virtual void setFrequencyShift (double F)
 Sets the frequency shift and updates the LUT. More...
 Sets the frequency shift and updates the LUT. More...
 
CSScalar applyFrequencyShift (CSScalar value)
 Performs the frequency shift on a single sample. More...
 Performs the frequency shift on a single sample. More...
 
- + - + - + - + - + - +

Protected Member Functions

void _process (const Buffer< Scalar > &in, const Buffer< CScalar > &out)
 Performs the actual procssing. More...
 Performs the actual procssing. More...
 
CSScalar _filter_ring ()
 Applies the filter on the data stored in the ring buffer. More...
 Applies the filter on the data stored in the ring buffer. More...
 
void _update_filter_kernel ()
 Calculates or updates the filter kernel. More...
 Calculates or updates the filter kernel. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Member Functions inherited from sdr::FreqShiftBase< Scalar >
void _update_lut_incr ()
 Updates the multiplier LUT. More...
 Updates the multiplier LUT. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

double _Ff
 The center frequency of the band pass filter. More...
 The center frequency of the band pass filter. More...
 
double _width
 The width of the band pass filter. More...
 The width of the band pass filter. More...
 
size_t _order
 The order of the band pass filter. More...
 The order of the band pass filter. More...
 
size_t _sub_sample
 The number of averages taken for subsampling. More...
 The number of averages taken for subsampling. More...
 
size_t _ring_offset
 The current index of the ring buffer. More...
 The current index of the ring buffer. More...
 
size_t _sample_count
 The current number of averages. More...
 The current number of averages. More...
 
CSScalar _last
 The current sum of the last _sample_count samples. More...
 The current sum of the last _sample_count samples. More...
 
bool _shift_freq
 If true, Fc!=0. More...
 If true, Fc!=0. More...
 
Buffer< CSScalar_lut
 $\exp(i\phi)$ look-up table
 $\exp(i\phi)$ look-up table
 
size_t _lut_inc
 The LUT index increment per (1<<4) samples. More...
 The LUT index increment per (1<<4) samples. More...
 
size_t _lut_count
 The current LUT index times (1<<4). More...
 The current LUT index times (1<<4). More...
 
Buffer< CSScalar_kernel
 The filter kernel of order _order. More...
 The filter kernel of order _order. More...
 
Buffer< SScalar_ring
 A ring buffer of past values. More...
 A ring buffer of past values. More...
 
Buffer< CScalar_buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- Protected Attributes inherited from sdr::FreqShiftBase< Scalar >
double _freq_shift
 The current frequency shift. More...
 The current frequency shift. More...
 
double _Fs
 The current sample rate. More...
 The current sample rate. More...
 
size_t _lut_inc
 The LUT increment. More...
 The LUT increment. More...
 
size_t _lut_count
 The LUT index counter. More...
 The LUT index counter. More...
 
Buffer< CSScalar_lut
 The LUT. More...
 The LUT. More...
 
- + - +

Static Protected Attributes

static const size_t _lut_size =128
 Size of the look-up table. More...
 Size of the look-up table. More...
 
- Static Protected Attributes inherited from sdr::FreqShiftBase< Scalar >
static const size_t _lut_size = 128
 The size of the LUT. More...
 The size of the LUT. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::BaseBand< Scalar >

This class performs several operations on the real input stream, It first filters out some part of the input stream using a FIR band pass filter then shifts the center frequency to 0 and finally sub-samples the resulting stream such that the selected base-band is well represented.

@@ -1076,14 +1074,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_blocking_source-members.html b/classsdr_1_1_blocking_source-members.html index 1e8a7ed..511b855 100644 --- a/classsdr_1_1_blocking_source-members.html +++ b/classsdr_1_1_blocking_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -124,9 +125,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_blocking_source.html b/classsdr_1_1_blocking_source.html index cdcef57..f34ed19 100644 --- a/classsdr_1_1_blocking_source.html +++ b/classsdr_1_1_blocking_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BlockingSource Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,89 +117,89 @@ Inheritance diagram for sdr::BlockingSource:

Public Member Functions

 BlockingSource (bool parallel=false, bool connect_idle=true, bool stop_queue_on_eos=false) - Constructor. More...
+ Constructor. More...
  virtual ~BlockingSource () - Destructor. More...
+ Destructor. More...
  virtual void next ()=0 - This method gets called either by the Queue on idle events or by a thread to read more data from the input stream. More...
+ This method gets called either by the Queue on idle events or by a thread to read more data from the input stream. More...
  bool isActive () const - Returns true if the source is active. More...
+ Returns true if the source is active. More...
  virtual void start () - This function starts the input stream. More...
+ This function starts the input stream. More...
  virtual void stop () - This function stops the input stream. More...
+ This function stops the input stream. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - +

Protected Member Functions

void _parallel_main ()
 The parallel main loop. More...
 The parallel main loop. More...
 
void _nonvirt_idle_cb ()
 The non-virtual idle callback. More...
 The non-virtual idle callback. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - +

Protected Attributes

bool _is_active
 If true, the source is active. More...
 If true, the source is active. More...
 
bool _is_parallel
 If true, the surce is processed in parallel. More...
 If true, the surce is processed in parallel. More...
 
pthread_t _thread
 The thread of the source. More...
 The thread of the source. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

@@ -492,15 +493,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_buffer-members.html b/classsdr_1_1_buffer-members.html index 90434b8..58c764a 100644 --- a/classsdr_1_1_buffer-members.html +++ b/classsdr_1_1_buffer-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -142,9 +143,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_buffer.html b/classsdr_1_1_buffer.html index 38e02bc..d4f8771 100644 --- a/classsdr_1_1_buffer.html +++ b/classsdr_1_1_buffer.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Buffer< T > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,143 +116,143 @@ Inheritance diagram for sdr::Buffer< T >:

Public Member Functions

 Buffer () - Empty constructor. More...
+ Empty constructor. More...
   Buffer (T *data, size_t size) - Constructor from raw data. More...
+ Constructor from raw data. More...
   Buffer (size_t N, BufferOwner *owner=0) - Creates a buffer with N samples. More...
+ Creates a buffer with N samples. More...
   Buffer (const Buffer< T > &other) - Create a new reference to the buffer. More...
+ Create a new reference to the buffer. More...
  virtual ~Buffer () - Destructor. More...
+ Destructor. More...
   Buffer (const RawBuffer &other) - Explicit type cast. More...
+ Explicit type cast. More...
  const Buffer< T > & operator= (const Buffer< T > other) - Assignment operator, turns this buffer into a reference to the other buffer. More...
+ Assignment operator, turns this buffer into a reference to the other buffer. More...
  bool operator< (const Buffer< T > &other) const - This is used to store buffers in sets. More...
+ This is used to store buffers in sets. More...
  size_t size () const - Returns the number of elements of type T in this buffer. More...
+ Returns the number of elements of type T in this buffer. More...
  T & operator[] (int idx) const - Element access. More...
+ Element access. More...
  double norm2 () const - Returns the $l^2$ norm of the buffer. More...
+ Returns the $l^2$ norm of the buffer. More...
  double norm () const - Returns the $l^1$ norm of the buffer. More...
+ Returns the $l^1$ norm of the buffer. More...
  double norm (double p) const - Returns the $l^p$ norm of the buffer. More...
+ Returns the $l^p$ norm of the buffer. More...
  Buffer< T > & operator*= (const T &a) - In-place, element wise product of the buffer with the scalar a. More...
+ In-place, element wise product of the buffer with the scalar a. More...
  Buffer< T > & operator/= (const T &a) - In-place, element wise division of the buffer with the scalar a. More...
+ In-place, element wise division of the buffer with the scalar a. More...
  template<class oT > Buffer< oT > as () const - Explicit type cast. More...
+ Explicit type cast. More...
  Buffer< T > sub (size_t offset, size_t len) const - Returns a new view on this buffer. More...
+ Returns a new view on this buffer. More...
  Buffer< T > head (size_t n) const - Returns a new view on this buffer. More...
+ Returns a new view on this buffer. More...
  Buffer< T > tail (size_t n) const - Returns a new view on this buffer. More...
+ Returns a new view on this buffer. More...
  - Public Member Functions inherited from sdr::RawBuffer  RawBuffer () - Constructs an empty buffer. More...
+ Constructs an empty buffer. More...
   RawBuffer (char *data, size_t offset, size_t len) - Constructor from unowned data. More...
+ Constructor from unowned data. More...
   RawBuffer (size_t N, BufferOwner *owner=0) - Constructs a buffer and allocates N bytes. More...
+ Constructs a buffer and allocates N bytes. More...
   RawBuffer (const RawBuffer &other) - Copy constructor. More...
+ Copy constructor. More...
   RawBuffer (const RawBuffer &other, size_t offset, size_t len) - Creates a new view on the buffer. More...
+ Creates a new view on the buffer. More...
  virtual ~RawBuffer () - Destructor. More...
+ Destructor. More...
  const RawBufferoperator= (const RawBuffer &other) - Assignment. More...
+ Assignment. More...
  char * ptr () const - Returns the pointer to the data (w/o view). More...
+ Returns the pointer to the data (w/o view). More...
  char * data () const - Returns the pointer to the data of the buffer view. More...
+ Returns the pointer to the data of the buffer view. More...
  size_t bytesOffset () const - Returns the offset of the data by the view. More...
+ Returns the offset of the data by the view. More...
  size_t bytesLen () const - Returns the size of the buffer by the view. More...
+ Returns the size of the buffer by the view. More...
  size_t storageSize () const - Returns the raw buffer size in bytes. More...
+ Returns the raw buffer size in bytes. More...
  bool isEmpty () const - Returns true if the buffer is invalid/empty. More...
+ Returns true if the buffer is invalid/empty. More...
  void ref () const - Increment reference counter. More...
+ Increment reference counter. More...
  void unref () - Dereferences the buffer. More...
+ Dereferences the buffer. More...
  int refCount () const - Returns the reference counter. More...
+ Returns the reference counter. More...
  bool isUnused () const - We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
+ We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
  - + - + - + - + - + - + - +

Protected Attributes

size_t _size
 Holds the number of elements of type T in the buffer. More...
 Holds the number of elements of type T in the buffer. More...
 
- Protected Attributes inherited from sdr::RawBuffer
char * _ptr
 Holds the pointer to the data or 0, if buffer is empty. More...
 Holds the pointer to the data or 0, if buffer is empty. More...
 
size_t _storage_size
 Holds the size of the buffer in bytes. More...
 Holds the size of the buffer in bytes. More...
 
size_t _b_offset
 Holds the offset of the buffer in bytes. More...
 Holds the offset of the buffer in bytes. More...
 
size_t _b_length
 Holds the length of the buffer (view) in bytes. More...
 Holds the length of the buffer (view) in bytes. More...
 
int * _refcount
 The reference counter. More...
 The reference counter. More...
 
BufferOwner_owner
 Holds a weak reference the buffer owner. More...
 Holds a weak reference the buffer owner. More...
 

Detailed Description

-

template<class T>
+

template<class T>
class sdr::Buffer< T >

A typed buffer.

@@ -843,14 +844,14 @@ template<class T>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_buffer_node-members.html b/classsdr_1_1_buffer_node-members.html index ae3dc01..823d1aa 100644 --- a/classsdr_1_1_buffer_node-members.html +++ b/classsdr_1_1_buffer_node-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_buffer_node.html b/classsdr_1_1_buffer_node.html index 76f7292..475c07a 100644 --- a/classsdr_1_1_buffer_node.html +++ b/classsdr_1_1_buffer_node.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BufferNode< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,98 +118,98 @@ Inheritance diagram for sdr::BufferNode< Scalar >:

Public Member Functions

 BufferNode (size_t bufferSize) - Constructs a new buffer node. More...
+ Constructs a new buffer node. More...
  virtual void config (const Config &src_cfg) - Configures the buffer node. More...
+ Configures the buffer node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Process the incomming data. More...
+ Process the incomming data. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - +

Protected Attributes

size_t _bufferSize
 The desired buffer size. More...
 The desired buffer size. More...
 
BufferSet< Scalar > _bufferSet
 A set of output buffers. More...
 A set of output buffers. More...
 
Buffer< Scalar > _temp
 An intermediate buffer to hold left-over samples from the previous buffers. More...
 An intermediate buffer to hold left-over samples from the previous buffers. More...
 
size_t _samplesLeft
 Number of samples left. More...
 Number of samples left. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::BufferNode< Scalar >

A simple buffering node, that ensures a fixed buffer size.

@@ -417,14 +418,14 @@ template<class Scalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_buffer_owner-members.html b/classsdr_1_1_buffer_owner-members.html index c6ff59b..126d168 100644 --- a/classsdr_1_1_buffer_owner-members.html +++ b/classsdr_1_1_buffer_owner-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -100,9 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_buffer_owner.html b/classsdr_1_1_buffer_owner.html index 46c19bd..415d1c2 100644 --- a/classsdr_1_1_buffer_owner.html +++ b/classsdr_1_1_buffer_owner.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BufferOwner Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,7 +116,7 @@ Inheritance diagram for sdr::BufferOwner:

Public Member Functions

virtual void bufferUnused (const RawBuffer &buffer)=0 - Gets called once an owned buffer gets unused. More...
+ Gets called once an owned buffer gets unused. More...
 

Detailed Description

@@ -151,14 +152,14 @@ Public Member Functions
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_buffer_set-members.html b/classsdr_1_1_buffer_set-members.html index 8d23dc0..3ad5881 100644 --- a/classsdr_1_1_buffer_set-members.html +++ b/classsdr_1_1_buffer_set-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,9 +109,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_buffer_set.html b/classsdr_1_1_buffer_set.html index 503de58..2bf7278 100644 --- a/classsdr_1_1_buffer_set.html +++ b/classsdr_1_1_buffer_set.html @@ -3,15 +3,16 @@ - + libsdr: sdr::BufferSet< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,39 +116,38 @@ Inheritance diagram for sdr::BufferSet< Scalar >:

Public Member Functions

 BufferSet (size_t N, size_t size) - Preallocates N buffers of size size. More...
+ Preallocates N buffers of size size. More...
  virtual ~BufferSet () - Destructor, unreferences all buffers. More...
+ Destructor, unreferences all buffers. More...
  bool hasBuffer () - Returns true if there is a free buffer. More...
+ Returns true if there is a free buffer. More...
  Buffer< Scalar > getBuffer () - Obtains a free buffer. More...
+ Obtains a free buffer. More...
  virtual void bufferUnused (const RawBuffer &buffer) - Callback gets called once the buffer gets unused. More...
+ Callback gets called once the buffer gets unused. More...
  void resize (size_t numBuffers) - Resize the buffer set. More...
+ Resize the buffer set. More...
  - + - - + + - +

Protected Attributes

size_t _bufferSize
 Size of each buffer. More...
 Size of each buffer. More...
 
std::map< void *, Buffer
-< Scalar > > 
_buffers
 Holds a reference to each buffer of the buffer set, referenced by the data pointer of the buffer. More...
std::map< void *, Buffer< Scalar > > _buffers
 Holds a reference to each buffer of the buffer set, referenced by the data pointer of the buffer. More...
 
std::vector< void * > _free_buffers
 A vector of all unused buffers. More...
 A vector of all unused buffers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::BufferSet< Scalar >

A set of buffers, that tracks their usage.

@@ -406,14 +406,14 @@ template<class Scalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_cast-members.html b/classsdr_1_1_cast-members.html index 24e8e38..80d285c 100644 --- a/classsdr_1_1_cast-members.html +++ b/classsdr_1_1_cast-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -131,9 +132,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_cast.html b/classsdr_1_1_cast.html index b99c7cf..e19e42a 100644 --- a/classsdr_1_1_cast.html +++ b/classsdr_1_1_cast.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Cast< iScalar, oScalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,119 +120,119 @@ Inheritance diagram for sdr::Cast< iScalar, oScalar >:

Public Types

typedef Traits< iScalar >::SScalar iSScalar - Specifies the input super scalar. More...
+ Specifies the input super scalar. More...
  typedef Traits< oScalar >::SScalar oSScalar - Specified the output super scalar. More...
+ Specified the output super scalar. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 Cast (oScalar scale=1, iScalar shift=0)
 Constructs a type-cast with optional scaleing. More...
 Constructs a type-cast with optional scaleing. More...
 
virtual void config (const Config &src_cfg)
 Configures the type-cast node. More...
 Configures the type-cast node. More...
 
virtual void process (const Buffer< iScalar > &buffer, bool allow_overwrite)
 Performs the type-cast node. More...
 Performs the type-cast node. More...
 
double scale () const
 Returns the scaling. More...
 Returns the scaling. More...
 
void setScale (double scale)
 Sets the scaling. More...
 Sets the scaling. More...
 
- Public Member Functions inherited from sdr::Sink< iScalar >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _process (const Buffer< iScalar > &in, const Buffer< oScalar > &out)
 Internal used method to perform the type-case out-of-place. More...
 Internal used method to perform the type-case out-of-place. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - +

Protected Attributes

bool _can_overwrite
 If true, the type-cast (an scaleing) can be performed in-place. More...
 If true, the type-cast (an scaleing) can be performed in-place. More...
 
bool _do_scale
 If true, the output gets scaled. More...
 If true, the output gets scaled. More...
 
oScalar _scale
 The scaling. More...
 The scaling. More...
 
iScalar _shift
 Another scaling, using integer shift operation (faster). More...
 Another scaling, using integer shift operation (faster). More...
 
Buffer< oScalar > _buffer
 The output buffer, unused if the type-cast is performed in-place . More...
 The output buffer, unused if the type-cast is performed in-place . More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class iScalar, class oScalar>
+

template<class iScalar, class oScalar>
class sdr::Cast< iScalar, oScalar >

Explicit type cast node.

@@ -593,14 +594,14 @@ template<class iScalar , class oScalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_combine-members.html b/classsdr_1_1_combine-members.html index b218ae5..59a5ef3 100644 --- a/classsdr_1_1_combine-members.html +++ b/classsdr_1_1_combine-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,9 +110,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_combine.html b/classsdr_1_1_combine.html index f0ec1ee..3459495 100644 --- a/classsdr_1_1_combine.html +++ b/classsdr_1_1_combine.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Combine< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,39 +118,38 @@ Inheritance diagram for sdr::Combine< Scalar >:

Public Member Functions

 Combine (size_t N) - Constructor,
- N specifies the number of sinks. More...
+ Constructor,
+ N specifies the number of sinks. More...
  virtual ~Combine () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &cfg)=0 - Needs to be overridden. More...
+ Needs to be overridden. More...
  virtual void process (std::vector< RingBuffer< Scalar > > &buffers, size_t N)=0 - Needs to be overridden. More...
+ Needs to be overridden. More...
  - + - +

Protected Member Functions

void notifyConfig (size_t idx, const Config &cfg)
 Unifies the configuration of all sinks. More...
 Unifies the configuration of all sinks. More...
 
void notifyData (size_t idx)
 Determines the minimum amount of data that is available on all ring buffers. More...
 Determines the minimum amount of data that is available on all ring buffers. More...
 
- + - - + + - +

Protected Attributes

std::vector< RingBuffer< Scalar > > _buffers
 The ring buffers of all combine sinks. More...
 The ring buffers of all combine sinks. More...
 
std::vector< CombineSink
-< Scalar > * > 
_sinks
 The combine sinks. More...
std::vector< CombineSink< Scalar > * > _sinks
 The combine sinks. More...
 
Config _config
 The output configuration. More...
 The output configuration. More...
 

@@ -159,7 +159,7 @@ class 

CombineSink< Scal
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::Combine< Scalar >

A combine node.

@@ -189,7 +189,7 @@ template<class Scalar>

-

Constructor,
+

Constructor,
N specifies the number of sinks.

@@ -432,14 +432,14 @@ template<class Scalar>
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_combine_sink-members.html b/classsdr_1_1_combine_sink-members.html index ab98382..b707fe5 100644 --- a/classsdr_1_1_combine_sink-members.html +++ b/classsdr_1_1_combine_sink-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -111,9 +112,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_combine_sink.html b/classsdr_1_1_combine_sink.html index 8591969..c0411fc 100644 --- a/classsdr_1_1_combine_sink.html +++ b/classsdr_1_1_combine_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::CombineSink< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,52 +117,53 @@ Inheritance diagram for sdr::CombineSink< Scalar >:

Public Member Functions

 CombineSink (Combine< Scalar > *combine, size_t index, RingBuffer< Scalar > &buffer) - Constructor. More...
+ Constructor. More...
  virtual ~CombineSink () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the sink. More...
+ Configures the sink. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Handles the given buffer. More...
+ Handles the given buffer. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - + - + - +

Protected Attributes

size_t _index
 The index of the sink within the combine node. More...
 The index of the sink within the combine node. More...
 
Combine< Scalar > * _parent
 A reference to the combine node. More...
 A reference to the combine node. More...
 
RingBuffer< Scalar > & _buffer
 The input ring-buffer. More...
 The input ring-buffer. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::CombineSink< Scalar >

A single sink of a Combine node.

+

Do not use this node explicitly, consider using Combine.

Constructor & Destructor Documentation

@@ -379,14 +381,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_config-members.html b/classsdr_1_1_config-members.html index 6cf86fc..3b13ae0 100644 --- a/classsdr_1_1_config-members.html +++ b/classsdr_1_1_config-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -141,9 +142,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_config.html b/classsdr_1_1_config.html index ab03af0..596a4b4 100644 --- a/classsdr_1_1_config.html +++ b/classsdr_1_1_config.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Config Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,126 +108,126 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - +

Public Types

enum  Type {
+
enum  Type {
  Type_UNDEFINED = 0, Type_u8, Type_s8, Type_u16, -
+
  Type_s16, Type_f32, Type_f64, Type_cu8, -
+
  Type_cs8, Type_cu16, Type_cs16, Type_cf32, -
+
  Type_cf64 -
+
}
 The type IDs. More...
 The type IDs. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 Config ()
 Empty constructor, will result into an invalid configuration. More...
 Empty constructor, will result into an invalid configuration. More...
 
 Config (Type type, double sampleRate, size_t bufferSize, size_t numBuffers)
 Constructor. More...
 Constructor. More...
 
 Config (const Config &other)
 Copy constructor. More...
 Copy constructor. More...
 
const Configoperator= (const Config &other)
 Assignment operator. More...
 Assignment operator. More...
 
bool operator== (const Config &other) const
 Coparison operator. More...
 Coparison operator. More...
 
bool hasType () const
 If true, the configuration has a type. More...
 If true, the configuration has a type. More...
 
Type type () const
 Returns the type. More...
 Returns the type. More...
 
void setType (Type type)
 Sets the type. More...
 Sets the type. More...
 
bool hasSampleRate () const
 If true, the configuration has a sample rate. More...
 If true, the configuration has a sample rate. More...
 
double sampleRate () const
 Returns the sample rate. More...
 Returns the sample rate. More...
 
void setSampleRate (double rate)
 Sets the sample rate. More...
 Sets the sample rate. More...
 
bool hasBufferSize () const
 If true, the configuration has a buffer size. More...
 If true, the configuration has a buffer size. More...
 
size_t bufferSize () const
 Returns the max. More...
 Returns the max. More...
 
void setBufferSize (size_t size)
 Sets the max. More...
 Sets the max. More...
 
bool hasNumBuffers () const
 If true, the configuration has a number of buffers. More...
 If true, the configuration has a number of buffers. More...
 
size_t numBuffers () const
 Returns the max. More...
 Returns the max. More...
 
void setNumBuffers (size_t N)
 Sets the max. More...
 Sets the max. More...
 
template<>
Config::Type typeId ()
 Type-id for uint8. More...
 Type-id for uint8. More...
 
template<>
Config::Type typeId ()
 Type-id for int8. More...
 Type-id for int8. More...
 
template<>
Config::Type typeId ()
 Type-id for uint16. More...
 Type-id for uint16. More...
 
template<>
Config::Type typeId ()
 Type-id for int16. More...
 Type-id for int16. More...
 
template<>
Config::Type typeId ()
 Type-id for float. More...
 Type-id for float. More...
 
template<>
Config::Type typeId ()
 Type-id for double. More...
 Type-id for double. More...
 
- +

Static Public Member Functions

template<typename T >
static Type typeId ()
 Returns the type-id of the template type. More...
 Returns the type-id of the template type. More...
 
- + - + - + - +

Protected Attributes

Type _type
 Holds the type of the source. More...
 Holds the type of the source. More...
 
double _sampleRate
 Holds the sample rate of the source. More...
 Holds the sample rate of the source. More...
 
size_t _bufferSize
 Holds the max. More...
 Holds the max. More...
 
size_t _numBuffers
 Holds the max. More...
 Holds the max. More...
 

Detailed Description

@@ -244,40 +245,40 @@ Protected Attributes

The type IDs.

- - - - - - - - - - - -
Enumerator
Type_u8  +
Enumerator
Type_u8 

Real unsigned 8b ints.

Type_s8  +
Type_s8 

Real signed 8b ints.

Type_u16  +
Type_u16 

Real unsigned 16b ints.

Type_s16  +
Type_s16 

Real signed 16b ints.

Type_f32  +
Type_f32 

Real 32b floats aka. "float".

Type_f64  +
Type_f64 

Real 64b floats aka. "double".

Type_cu8  +
Type_cu8 

Complex (aka I/Q) type of unsigned 8b ints.

Type_cs8  +
Type_cs8 

Complex (aka I/Q) type of signed 8b ints.

Type_cu16  +
Type_cu16 

Complex (aka I/Q) type of unsigned 16b ints.

Type_cs16  +
Type_cs16 

Complex (aka I/Q) type of signed 16b ints.

Type_cf32  +
Type_cf32 

Complex (aka I/Q) type of 32bit floats aka. std::complex<float>.

Type_cf64  +
Type_cf64 

Complex (aka I/Q) type of 64bit floats aka. std::complex<double>.

@@ -986,15 +987,15 @@ template<>

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_config_error-members.html b/classsdr_1_1_config_error-members.html index 72701be..942dfdc 100644 --- a/classsdr_1_1_config_error-members.html +++ b/classsdr_1_1_config_error-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_config_error.html b/classsdr_1_1_config_error.html index 67bc623..00c6a75 100644 --- a/classsdr_1_1_config_error.html +++ b/classsdr_1_1_config_error.html @@ -3,15 +3,16 @@ - + libsdr: sdr::ConfigError Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,26 +115,26 @@ Inheritance diagram for sdr::ConfigError:

Public Member Functions

 ConfigError () - Constructor. More...
+ Constructor. More...
   ConfigError (const ConfigError &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~ConfigError () throw () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::SDRError  SDRError () - Constructor. More...
+ Constructor. More...
   SDRError (const SDRError &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~SDRError () throw () - Destructor. More...
+ Destructor. More...
  virtual const char * what () const throw () - Implements the std::exception interface. More...
+ Implements the std::exception interface. More...
 

Detailed Description

@@ -222,14 +223,14 @@ Public Member Functions
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_debug_dump-members.html b/classsdr_1_1_debug_dump-members.html index 6229bf4..ada742f 100644 --- a/classsdr_1_1_debug_dump-members.html +++ b/classsdr_1_1_debug_dump-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,9 +110,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_debug_dump.html b/classsdr_1_1_debug_dump.html index 0918430..c0459d9 100644 --- a/classsdr_1_1_debug_dump.html +++ b/classsdr_1_1_debug_dump.html @@ -3,15 +3,16 @@ - + libsdr: sdr::DebugDump< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,43 +117,43 @@ Inheritance diagram for sdr::DebugDump< Scalar >:

Public Member Functions

 DebugDump (std::ostream &stream=std::cerr) - Constructor. More...
+ Constructor. More...
  virtual ~DebugDump () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the dump-node. More...
+ Configures the dump-node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Dumps the received buffer. More...
+ Dumps the received buffer. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - +

Protected Attributes

std::ostream & _stream
 A reference to the output stream. More...
 A reference to the output stream. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::DebugDump< Scalar >

Dumps buffers in a human readable form.

@@ -309,14 +310,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_debug_store-members.html b/classsdr_1_1_debug_store-members.html index 9671bcf..832473b 100644 --- a/classsdr_1_1_debug_store-members.html +++ b/classsdr_1_1_debug_store-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -112,9 +113,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_debug_store.html b/classsdr_1_1_debug_store.html index 0751952..1d496e2 100644 --- a/classsdr_1_1_debug_store.html +++ b/classsdr_1_1_debug_store.html @@ -3,15 +3,16 @@ - + libsdr: sdr::DebugStore< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,49 +117,49 @@ Inheritance diagram for sdr::DebugStore< Scalar >:

Public Member Functions

 DebugStore () - Constrctor. More...
+ Constrctor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Stores the given buffer. More...
+ Stores the given buffer. More...
  const Buffer< Scalar > & buffer () const - Retunrs a reference to the last received buffer. More...
+ Retunrs a reference to the last received buffer. More...
  void clear () - Clears the buffer. More...
+ Clears the buffer. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - + - +

Public Attributes

Buffer< Scalar > _buffer
 A pre-allocated buffer, that will hold the last data received. More...
 A pre-allocated buffer, that will hold the last data received. More...
 
Buffer< Scalar > _view
 A view to the last data received. More...
 A view to the last data received. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::DebugStore< Scalar >

Keeps a copy of the last buffer received.

@@ -349,14 +350,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_delegate-members.html b/classsdr_1_1_delegate-members.html index fa583e4..9bb36cd 100644 --- a/classsdr_1_1_delegate-members.html +++ b/classsdr_1_1_delegate-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -96,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

This is the complete list of members for sdr::Delegate< T >, including all inherited members.

- + @@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
_functionsdr::Delegate< T >protected
_functionsdr::Delegate< T >protected
_instancesdr::Delegate< T >protected
Delegate(T *instance, void(T::*func)(void))sdr::Delegate< T >inline
instance()sdr::Delegate< T >inlinevirtual
diff --git a/classsdr_1_1_delegate.html b/classsdr_1_1_delegate.html index 24061c9..f5dfc2f 100644 --- a/classsdr_1_1_delegate.html +++ b/classsdr_1_1_delegate.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Delegate< T > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,29 +116,29 @@ Inheritance diagram for sdr::Delegate< T >:

Public Member Functions

 Delegate (T *instance, void(T::*func)(void)) - Constructs a delegate to the method func of the instance instance. More...
+ Constructs a delegate to the method func of the instance instance. More...
  virtual ~Delegate () - Destructor. More...
+ Destructor. More...
  virtual void operator() () - Callback, simply calls the method of the instance given to the constructor. More...
+ Callback, simply calls the method of the instance given to the constructor. More...
  virtual void * instance () - Returns the instance of the delegate. More...
+ Returns the instance of the delegate. More...
  - + - - - + + +

Protected Attributes

T * _instance
 The instance. More...
 The instance. More...
 
void(T::* _function )(void)
 The method. More...
 
void(T::* _function )(void)
 The method. More...
 

Detailed Description

-

template<class T>
+

template<class T>
class sdr::Delegate< T >

Specific delegate to a method of an object .

@@ -267,7 +268,7 @@ template<class T >

Member Data Documentation

- +
@@ -277,7 +278,7 @@ template<class T >
- +
void(T::* sdr::Delegate< T >::_function)(void)void(T::* sdr::Delegate< T >::_function) (void)
@@ -316,14 +317,14 @@ template<class T >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_delegate_interface-members.html b/classsdr_1_1_delegate_interface-members.html index b622036..27c70a9 100644 --- a/classsdr_1_1_delegate_interface-members.html +++ b/classsdr_1_1_delegate_interface-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -101,9 +102,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_delegate_interface.html b/classsdr_1_1_delegate_interface.html index 7ef7ad7..953c84a 100644 --- a/classsdr_1_1_delegate_interface.html +++ b/classsdr_1_1_delegate_interface.html @@ -3,15 +3,16 @@ - + libsdr: sdr::DelegateInterface Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,10 +115,10 @@ Inheritance diagram for sdr::DelegateInterface:

Public Member Functions

virtual void operator() ()=0 - Call back interface. More...
+ Call back interface. More...
  virtual void * instance ()=0 - Returns the instance of the delegate. More...
+ Returns the instance of the delegate. More...
 

Detailed Description

@@ -178,14 +179,14 @@ Public Member Functions
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_f_t-members.html b/classsdr_1_1_f_f_t-members.html index e2e72b1..1d122fc 100644 --- a/classsdr_1_1_f_f_t-members.html +++ b/classsdr_1_1_f_f_t-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -104,9 +105,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_f_t.html b/classsdr_1_1_f_f_t.html index 34a633c..67de8dd 100644 --- a/classsdr_1_1_f_f_t.html +++ b/classsdr_1_1_f_f_t.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FFT Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,18 +109,18 @@ Public Types enum  Direction { FORWARD, BACKWARD } - Direction type. More...
+ Direction type. More...
  - + - +

Static Public Member Functions

template<class Scalar >
static void exec (const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out, FFT::Direction dir)
 Performs a FFT transform. More...
 Performs a FFT transform. More...
 
template<class Scalar >
static void exec (const Buffer< std::complex< Scalar > > &inplace, FFT::Direction dir)
 Performs an in-place FFT transform. More...
 Performs an in-place FFT transform. More...
 

Detailed Description

@@ -223,14 +224,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_f_t_plan-members.html b/classsdr_1_1_f_f_t_plan-members.html index 7aec5ba..6442fbe 100644 --- a/classsdr_1_1_f_f_t_plan-members.html +++ b/classsdr_1_1_f_f_t_plan-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,9 +109,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_f_t_plan.html b/classsdr_1_1_f_f_t_plan.html index e1be3b5..b4e16cd 100644 --- a/classsdr_1_1_f_f_t_plan.html +++ b/classsdr_1_1_f_f_t_plan.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FFTPlan< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,44 +109,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef Traits< Scalar >::SScalar SScalar - The super-scalar of the input type. More...
+ The super-scalar of the input type. More...
  - + - + - +

Public Member Functions

 FFTPlan (const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out, FFT::Direction dir)
 Constructs a FFT plan for the input and output buffers. More...
 Constructs a FFT plan for the input and output buffers. More...
 
virtual ~FFTPlan ()
 Destructor. More...
 Destructor. More...
 
void operator() ()
 Performs the FFT. More...
 Performs the FFT. More...
 
- +

Protected Member Functions

void _calc (std::complex< Scalar > *a, std::complex< Scalar > *b, size_t N, size_t stride)
 Actual FFT implmenetation. More...
 Actual FFT implmenetation. More...
 
- + - + - + - +

Protected Attributes

size_t _N
 FFT size, needs to be a power of 2. More...
 FFT size, needs to be a power of 2. More...
 
Buffer< std::complex< Scalar > > _in
 The input buffer. More...
 The input buffer. More...
 
Buffer< std::complex< Scalar > > _out
 The output buffer. More...
 The output buffer. More...
 
Buffer< std::complex< SScalar > > _lut
 The exp(-i 2 pi k / N) look-up table. More...
 The exp(-i 2 pi k / N) look-up table. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FFTPlan< Scalar >

Trivial FFT implementation for buffer sizes of N=2**K.

@@ -414,15 +415,15 @@ template<class Scalar>


The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_f_f_t_plan_3_01double_01_4-members.html b/classsdr_1_1_f_f_t_plan_3_01double_01_4-members.html index 213e359..4f1b9b2 100644 --- a/classsdr_1_1_f_f_t_plan_3_01double_01_4-members.html +++ b/classsdr_1_1_f_f_t_plan_3_01double_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_f_t_plan_3_01double_01_4.html b/classsdr_1_1_f_f_t_plan_3_01double_01_4.html index 6f6b1a6..e97e7a4 100644 --- a/classsdr_1_1_f_f_t_plan_3_01double_01_4.html +++ b/classsdr_1_1_f_f_t_plan_3_01double_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FFTPlan< double > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,32 +107,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

 FFTPlan (const Buffer< std::complex< double > > &in, const Buffer< std::complex< double > > &out, FFT::Direction dir) - Constructor. More...
+ Constructor. More...
   FFTPlan (const Buffer< std::complex< double > > &inplace, FFT::Direction dir) - Constructor. More...
+ Constructor. More...
  virtual ~FFTPlan () - Destructor. More...
+ Destructor. More...
  void operator() () - Performs the transformation. More...
+ Performs the transformation. More...
  - + - + - +

Protected Attributes

Buffer< std::complex< double > > _in
 Input buffer. More...
 Input buffer. More...
 
Buffer< std::complex< double > > _out
 Output buffer. More...
 Output buffer. More...
 
fftw_plan _plan
 The FFT plan. More...
 The FFT plan. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::FFTPlan< double >

Template specialization for a FFT transform on std::complex<double> values.

@@ -333,14 +334,14 @@ class sdr::FFTPlan< double >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_f_t_plan_3_01float_01_4-members.html b/classsdr_1_1_f_f_t_plan_3_01float_01_4-members.html index c3c44fe..a812e24 100644 --- a/classsdr_1_1_f_f_t_plan_3_01float_01_4-members.html +++ b/classsdr_1_1_f_f_t_plan_3_01float_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_f_t_plan_3_01float_01_4.html b/classsdr_1_1_f_f_t_plan_3_01float_01_4.html index 3d3a065..bc39c58 100644 --- a/classsdr_1_1_f_f_t_plan_3_01float_01_4.html +++ b/classsdr_1_1_f_f_t_plan_3_01float_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FFTPlan< float > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,32 +107,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

 FFTPlan (const Buffer< std::complex< float > > &in, const Buffer< std::complex< float > > &out, FFT::Direction dir) - Constructor. More...
+ Constructor. More...
   FFTPlan (const Buffer< std::complex< float > > &inplace, FFT::Direction dir) - Constructor. More...
+ Constructor. More...
  virtual ~FFTPlan () - Destructor. More...
+ Destructor. More...
  void operator() () - Performs the FFT transform. More...
+ Performs the FFT transform. More...
  - + - + - +

Protected Attributes

Buffer< std::complex< float > > _in
 Input buffer. More...
 Input buffer. More...
 
Buffer< std::complex< float > > _out
 Output buffer. More...
 Output buffer. More...
 
fftwf_plan _plan
 The fft plan. More...
 The fft plan. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::FFTPlan< float >

Template specialization for a FFT transform on std::complex<float> values.

@@ -333,14 +334,14 @@ class sdr::FFTPlan< float >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_band_pass-members.html b/classsdr_1_1_f_i_r_band_pass-members.html index e63e2c1..2bea600 100644 --- a/classsdr_1_1_f_i_r_band_pass-members.html +++ b/classsdr_1_1_f_i_r_band_pass-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -142,9 +143,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_band_pass.html b/classsdr_1_1_f_i_r_band_pass.html index f3e383d..1d83864 100644 --- a/classsdr_1_1_f_i_r_band_pass.html +++ b/classsdr_1_1_f_i_r_band_pass.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRBandPass< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,93 +118,93 @@ Inheritance diagram for sdr::FIRBandPass< Scalar >:

Public Member Functions

 FIRBandPass (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRBandPass () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::FIRFilter< Scalar, FIRBandPassCoeffs >  FIRFilter (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRFilter () - Destructor. More...
+ Destructor. More...
  bool enabled () const - Returns true if the filter is enabled. More...
+ Returns true if the filter is enabled. More...
  void enable (bool enable) - Enable/Disable the filter. More...
+ Enable/Disable the filter. More...
  size_t order () const - Returns the order of the filter. More...
+ Returns the order of the filter. More...
  virtual void setOrder (size_t order) - Sets the order of the filter and updates the filter coefficients. More...
+ Sets the order of the filter and updates the filter coefficients. More...
  double lowerFreq () const - Returns the lower edge frequency. More...
+ Returns the lower edge frequency. More...
  void setLowerFreq (double Fl) - Sets the lower edge frequency. More...
+ Sets the lower edge frequency. More...
  double uppertFreq () const - Returns the upper edge frequency. More...
+ Returns the upper edge frequency. More...
  void setUpperFreq (double Fu) - Sets the upper edge frequency. More...
+ Sets the upper edge frequency. More...
  virtual void config (const Config &src_cfg) - Configures the filter. More...
+ Configures the filter. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the filtering. More...
+ Performs the filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

@@ -211,56 +212,56 @@ Additional Inherited Members

- Protected Member Functions inherited from sdr::FIRFilter< Scalar, FIRBandPassCoeffs >
void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 performs the actual computation
 performs the actual computation
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::FIRFilter< Scalar, FIRBandPassCoeffs >
bool _enabled
 If true, the filtering is enabled. More...
 If true, the filtering is enabled. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
double _Fl
 The lower edge frequency. More...
 The lower edge frequency. More...
 
double _Fu
 The upper edge frequency. More...
 The upper edge frequency. More...
 
double _Fs
 Current sample rate. More...
 Current sample rate. More...
 
std::vector< double > _alpha
 The current filter coefficients. More...
 The current filter coefficients. More...
 
Buffer< Scalar > _ring
 A "ring-buffer" used to perform the filtering. More...
 A "ring-buffer" used to perform the filtering. More...
 
size_t _ring_offset
 Offset of the "ring-buffer". More...
 Offset of the "ring-buffer". More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if filtering is performed in-place. More...
 The output buffer, unused if filtering is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FIRBandPass< Scalar >

Band-pass FIR filter specialization.

@@ -337,14 +338,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_band_pass_coeffs-members.html b/classsdr_1_1_f_i_r_band_pass_coeffs-members.html index 9e44561..01af2c2 100644 --- a/classsdr_1_1_f_i_r_band_pass_coeffs-members.html +++ b/classsdr_1_1_f_i_r_band_pass_coeffs-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -100,9 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_band_pass_coeffs.html b/classsdr_1_1_f_i_r_band_pass_coeffs.html index 29281f3..5d62f64 100644 --- a/classsdr_1_1_f_i_r_band_pass_coeffs.html +++ b/classsdr_1_1_f_i_r_band_pass_coeffs.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRBandPassCoeffs Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Static Public Member Functions

static void coeffs (std::vector< double > &alpha, double Fl, double Fu, double Fs) - Calculates the filter coefficients. More...
+ Calculates the filter coefficients. More...
 

Detailed Description

@@ -160,14 +161,14 @@ Static Public Member Functions

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_band_stop-members.html b/classsdr_1_1_f_i_r_band_stop-members.html index 226d44d..25a943f 100644 --- a/classsdr_1_1_f_i_r_band_stop-members.html +++ b/classsdr_1_1_f_i_r_band_stop-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -142,9 +143,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_band_stop.html b/classsdr_1_1_f_i_r_band_stop.html index 1682e9a..9fa1f4b 100644 --- a/classsdr_1_1_f_i_r_band_stop.html +++ b/classsdr_1_1_f_i_r_band_stop.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRBandStop< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,93 +118,93 @@ Inheritance diagram for sdr::FIRBandStop< Scalar >:

Public Member Functions

 FIRBandStop (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRBandStop () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::FIRFilter< Scalar, FIRBandStopCoeffs >  FIRFilter (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRFilter () - Destructor. More...
+ Destructor. More...
  bool enabled () const - Returns true if the filter is enabled. More...
+ Returns true if the filter is enabled. More...
  void enable (bool enable) - Enable/Disable the filter. More...
+ Enable/Disable the filter. More...
  size_t order () const - Returns the order of the filter. More...
+ Returns the order of the filter. More...
  virtual void setOrder (size_t order) - Sets the order of the filter and updates the filter coefficients. More...
+ Sets the order of the filter and updates the filter coefficients. More...
  double lowerFreq () const - Returns the lower edge frequency. More...
+ Returns the lower edge frequency. More...
  void setLowerFreq (double Fl) - Sets the lower edge frequency. More...
+ Sets the lower edge frequency. More...
  double uppertFreq () const - Returns the upper edge frequency. More...
+ Returns the upper edge frequency. More...
  void setUpperFreq (double Fu) - Sets the upper edge frequency. More...
+ Sets the upper edge frequency. More...
  virtual void config (const Config &src_cfg) - Configures the filter. More...
+ Configures the filter. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the filtering. More...
+ Performs the filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

@@ -211,56 +212,56 @@ Additional Inherited Members

- Protected Member Functions inherited from sdr::FIRFilter< Scalar, FIRBandStopCoeffs >
void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 performs the actual computation
 performs the actual computation
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::FIRFilter< Scalar, FIRBandStopCoeffs >
bool _enabled
 If true, the filtering is enabled. More...
 If true, the filtering is enabled. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
double _Fl
 The lower edge frequency. More...
 The lower edge frequency. More...
 
double _Fu
 The upper edge frequency. More...
 The upper edge frequency. More...
 
double _Fs
 Current sample rate. More...
 Current sample rate. More...
 
std::vector< double > _alpha
 The current filter coefficients. More...
 The current filter coefficients. More...
 
Buffer< Scalar > _ring
 A "ring-buffer" used to perform the filtering. More...
 A "ring-buffer" used to perform the filtering. More...
 
size_t _ring_offset
 Offset of the "ring-buffer". More...
 Offset of the "ring-buffer". More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if filtering is performed in-place. More...
 The output buffer, unused if filtering is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FIRBandStop< Scalar >

Band-stop FIR filter specialization.

@@ -337,14 +338,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_band_stop_coeffs-members.html b/classsdr_1_1_f_i_r_band_stop_coeffs-members.html index 166e11e..6972750 100644 --- a/classsdr_1_1_f_i_r_band_stop_coeffs-members.html +++ b/classsdr_1_1_f_i_r_band_stop_coeffs-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -100,9 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_band_stop_coeffs.html b/classsdr_1_1_f_i_r_band_stop_coeffs.html index 8085f9a..6ad6cdf 100644 --- a/classsdr_1_1_f_i_r_band_stop_coeffs.html +++ b/classsdr_1_1_f_i_r_band_stop_coeffs.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRBandStopCoeffs Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Static Public Member Functions

static void coeffs (std::vector< double > &alpha, double Fl, double Fu, double Fs) - Calculates the filter coefficients. More...
+ Calculates the filter coefficients. More...
 

Detailed Description

@@ -160,14 +161,14 @@ Static Public Member Functions

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_filter-members.html b/classsdr_1_1_f_i_r_filter-members.html index 4f83ea9..c193511 100644 --- a/classsdr_1_1_f_i_r_filter-members.html +++ b/classsdr_1_1_f_i_r_filter-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -140,9 +141,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_filter.html b/classsdr_1_1_f_i_r_filter.html index 71e882b..d3bc454 100644 --- a/classsdr_1_1_f_i_r_filter.html +++ b/classsdr_1_1_f_i_r_filter.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRFilter< Scalar, FilterCoeffs > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -118,144 +119,144 @@ Inheritance diagram for sdr::FIRFilter< Scalar, FilterCoeffs >:

Public Member Functions

 FIRFilter (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRFilter () - Destructor. More...
+ Destructor. More...
  bool enabled () const - Returns true if the filter is enabled. More...
+ Returns true if the filter is enabled. More...
  void enable (bool enable) - Enable/Disable the filter. More...
+ Enable/Disable the filter. More...
  size_t order () const - Returns the order of the filter. More...
+ Returns the order of the filter. More...
  virtual void setOrder (size_t order) - Sets the order of the filter and updates the filter coefficients. More...
+ Sets the order of the filter and updates the filter coefficients. More...
  double lowerFreq () const - Returns the lower edge frequency. More...
+ Returns the lower edge frequency. More...
  void setLowerFreq (double Fl) - Sets the lower edge frequency. More...
+ Sets the lower edge frequency. More...
  double uppertFreq () const - Returns the upper edge frequency. More...
+ Returns the upper edge frequency. More...
  void setUpperFreq (double Fu) - Sets the upper edge frequency. More...
+ Sets the upper edge frequency. More...
  virtual void config (const Config &src_cfg) - Configures the filter. More...
+ Configures the filter. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the filtering. More...
+ Performs the filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - +

Protected Member Functions

void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 performs the actual computation
 performs the actual computation
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

bool _enabled
 If true, the filtering is enabled. More...
 If true, the filtering is enabled. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
double _Fl
 The lower edge frequency. More...
 The lower edge frequency. More...
 
double _Fu
 The upper edge frequency. More...
 The upper edge frequency. More...
 
double _Fs
 Current sample rate. More...
 Current sample rate. More...
 
std::vector< double > _alpha
 The current filter coefficients. More...
 The current filter coefficients. More...
 
Buffer< Scalar > _ring
 A "ring-buffer" used to perform the filtering. More...
 A "ring-buffer" used to perform the filtering. More...
 
size_t _ring_offset
 Offset of the "ring-buffer". More...
 Offset of the "ring-buffer". More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if filtering is performed in-place. More...
 The output buffer, unused if filtering is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar, class FilterCoeffs>
+

template<class Scalar, class FilterCoeffs>
class sdr::FIRFilter< Scalar, FilterCoeffs >

Generic FIR filter class.

@@ -841,14 +842,14 @@ template<class Scalar, class FilterCoeffs>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_high_pass-members.html b/classsdr_1_1_f_i_r_high_pass-members.html index 67d0957..6be5b57 100644 --- a/classsdr_1_1_f_i_r_high_pass-members.html +++ b/classsdr_1_1_f_i_r_high_pass-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -144,9 +145,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_high_pass.html b/classsdr_1_1_f_i_r_high_pass.html index ab5523c..842ab0d 100644 --- a/classsdr_1_1_f_i_r_high_pass.html +++ b/classsdr_1_1_f_i_r_high_pass.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRHighPass< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,99 +118,99 @@ Inheritance diagram for sdr::FIRHighPass< Scalar >:

Public Member Functions

 FIRHighPass (size_t order, double Fc) - Constructor. More...
+ Constructor. More...
  virtual ~FIRHighPass () - Destructor. More...
+ Destructor. More...
  double freq () const - Returns the filter frequency. More...
+ Returns the filter frequency. More...
  void setFreq (double freq) - Sets the filter frequency. More...
+ Sets the filter frequency. More...
  - Public Member Functions inherited from sdr::FIRFilter< Scalar, FIRHighPassCoeffs >  FIRFilter (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRFilter () - Destructor. More...
+ Destructor. More...
  bool enabled () const - Returns true if the filter is enabled. More...
+ Returns true if the filter is enabled. More...
  void enable (bool enable) - Enable/Disable the filter. More...
+ Enable/Disable the filter. More...
  size_t order () const - Returns the order of the filter. More...
+ Returns the order of the filter. More...
  virtual void setOrder (size_t order) - Sets the order of the filter and updates the filter coefficients. More...
+ Sets the order of the filter and updates the filter coefficients. More...
  double lowerFreq () const - Returns the lower edge frequency. More...
+ Returns the lower edge frequency. More...
  void setLowerFreq (double Fl) - Sets the lower edge frequency. More...
+ Sets the lower edge frequency. More...
  double uppertFreq () const - Returns the upper edge frequency. More...
+ Returns the upper edge frequency. More...
  void setUpperFreq (double Fu) - Sets the upper edge frequency. More...
+ Sets the upper edge frequency. More...
  virtual void config (const Config &src_cfg) - Configures the filter. More...
+ Configures the filter. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the filtering. More...
+ Performs the filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

@@ -217,56 +218,56 @@ Additional Inherited Members

- Protected Member Functions inherited from sdr::FIRFilter< Scalar, FIRHighPassCoeffs >
void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 performs the actual computation
 performs the actual computation
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::FIRFilter< Scalar, FIRHighPassCoeffs >
bool _enabled
 If true, the filtering is enabled. More...
 If true, the filtering is enabled. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
double _Fl
 The lower edge frequency. More...
 The lower edge frequency. More...
 
double _Fu
 The upper edge frequency. More...
 The upper edge frequency. More...
 
double _Fs
 Current sample rate. More...
 Current sample rate. More...
 
std::vector< double > _alpha
 The current filter coefficients. More...
 The current filter coefficients. More...
 
Buffer< Scalar > _ring
 A "ring-buffer" used to perform the filtering. More...
 A "ring-buffer" used to perform the filtering. More...
 
size_t _ring_offset
 Offset of the "ring-buffer". More...
 Offset of the "ring-buffer". More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if filtering is performed in-place. More...
 The output buffer, unused if filtering is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FIRHighPass< Scalar >

High-pass FIR filter specialization.

@@ -393,14 +394,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_high_pass_coeffs-members.html b/classsdr_1_1_f_i_r_high_pass_coeffs-members.html index 36b28d2..0234eba 100644 --- a/classsdr_1_1_f_i_r_high_pass_coeffs-members.html +++ b/classsdr_1_1_f_i_r_high_pass_coeffs-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -100,9 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_high_pass_coeffs.html b/classsdr_1_1_f_i_r_high_pass_coeffs.html index f35b0dd..a786630 100644 --- a/classsdr_1_1_f_i_r_high_pass_coeffs.html +++ b/classsdr_1_1_f_i_r_high_pass_coeffs.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRHighPassCoeffs Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Static Public Member Functions

static void coeffs (std::vector< double > &alpha, double Fl, double Fu, double Fs) - Calculates the filter coefficients. More...
+ Calculates the filter coefficients. More...
 

Detailed Description

@@ -160,14 +161,14 @@ Static Public Member Functions

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_low_pass-members.html b/classsdr_1_1_f_i_r_low_pass-members.html index a790d49..d9e7c22 100644 --- a/classsdr_1_1_f_i_r_low_pass-members.html +++ b/classsdr_1_1_f_i_r_low_pass-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -144,9 +145,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_low_pass.html b/classsdr_1_1_f_i_r_low_pass.html index c0209be..2855641 100644 --- a/classsdr_1_1_f_i_r_low_pass.html +++ b/classsdr_1_1_f_i_r_low_pass.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRLowPass< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,99 +118,99 @@ Inheritance diagram for sdr::FIRLowPass< Scalar >:

Public Member Functions

 FIRLowPass (size_t order, double Fc) - Constructor. More...
+ Constructor. More...
  virtual ~FIRLowPass () - Destructor. More...
+ Destructor. More...
  double freq () const - Returns the filter frequency. More...
+ Returns the filter frequency. More...
  void setFreq (double freq) - Sets the filter frequency. More...
+ Sets the filter frequency. More...
  - Public Member Functions inherited from sdr::FIRFilter< Scalar, FIRLowPassCoeffs >  FIRFilter (size_t order, double Fl, double Fu) - Constructor. More...
+ Constructor. More...
  virtual ~FIRFilter () - Destructor. More...
+ Destructor. More...
  bool enabled () const - Returns true if the filter is enabled. More...
+ Returns true if the filter is enabled. More...
  void enable (bool enable) - Enable/Disable the filter. More...
+ Enable/Disable the filter. More...
  size_t order () const - Returns the order of the filter. More...
+ Returns the order of the filter. More...
  virtual void setOrder (size_t order) - Sets the order of the filter and updates the filter coefficients. More...
+ Sets the order of the filter and updates the filter coefficients. More...
  double lowerFreq () const - Returns the lower edge frequency. More...
+ Returns the lower edge frequency. More...
  void setLowerFreq (double Fl) - Sets the lower edge frequency. More...
+ Sets the lower edge frequency. More...
  double uppertFreq () const - Returns the upper edge frequency. More...
+ Returns the upper edge frequency. More...
  void setUpperFreq (double Fu) - Sets the upper edge frequency. More...
+ Sets the upper edge frequency. More...
  virtual void config (const Config &src_cfg) - Configures the filter. More...
+ Configures the filter. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the filtering. More...
+ Performs the filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

@@ -217,56 +218,56 @@ Additional Inherited Members

- Protected Member Functions inherited from sdr::FIRFilter< Scalar, FIRLowPassCoeffs >
void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 performs the actual computation
 performs the actual computation
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::FIRFilter< Scalar, FIRLowPassCoeffs >
bool _enabled
 If true, the filtering is enabled. More...
 If true, the filtering is enabled. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
double _Fl
 The lower edge frequency. More...
 The lower edge frequency. More...
 
double _Fu
 The upper edge frequency. More...
 The upper edge frequency. More...
 
double _Fs
 Current sample rate. More...
 Current sample rate. More...
 
std::vector< double > _alpha
 The current filter coefficients. More...
 The current filter coefficients. More...
 
Buffer< Scalar > _ring
 A "ring-buffer" used to perform the filtering. More...
 A "ring-buffer" used to perform the filtering. More...
 
size_t _ring_offset
 Offset of the "ring-buffer". More...
 Offset of the "ring-buffer". More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if filtering is performed in-place. More...
 The output buffer, unused if filtering is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FIRLowPass< Scalar >

Low-pass FIR filter specialization.

@@ -393,14 +394,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_i_r_low_pass_coeffs-members.html b/classsdr_1_1_f_i_r_low_pass_coeffs-members.html index f956fea..a650b62 100644 --- a/classsdr_1_1_f_i_r_low_pass_coeffs-members.html +++ b/classsdr_1_1_f_i_r_low_pass_coeffs-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -100,9 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_i_r_low_pass_coeffs.html b/classsdr_1_1_f_i_r_low_pass_coeffs.html index 5a69c41..7126b01 100644 --- a/classsdr_1_1_f_i_r_low_pass_coeffs.html +++ b/classsdr_1_1_f_i_r_low_pass_coeffs.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FIRLowPassCoeffs Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Static Public Member Functions

static void coeffs (std::vector< double > &alpha, double Fl, double Fu, double Fs) - Calculates the filter coefficients. More...
+ Calculates the filter coefficients. More...
 

Detailed Description

@@ -160,14 +161,14 @@ Static Public Member Functions

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_m_deemph-members.html b/classsdr_1_1_f_m_deemph-members.html index c7179bf..b30feeb 100644 --- a/classsdr_1_1_f_m_deemph-members.html +++ b/classsdr_1_1_f_m_deemph-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -129,9 +130,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_m_deemph.html b/classsdr_1_1_f_m_deemph.html index 2b3352d..a9b5264 100644 --- a/classsdr_1_1_f_m_deemph.html +++ b/classsdr_1_1_f_m_deemph.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FMDeemph< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -118,110 +119,110 @@ Inheritance diagram for sdr::FMDeemph< Scalar >:

Public Member Functions

 FMDeemph (bool enabled=true) - Constructor. More...
+ Constructor. More...
  virtual ~FMDeemph () - Destructor. More...
+ Destructor. More...
  bool isEnabled () const - Returns true if the filter node is enabled. More...
+ Returns true if the filter node is enabled. More...
  void enable (bool enabled) - Enable/Disable the filter node. More...
+ Enable/Disable the filter node. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Dispatches in- or out-of-place filtering. More...
+ Dispatches in- or out-of-place filtering. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - +

Protected Member Functions

void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 Performs the actual filtering. More...
 Performs the actual filtering. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - +

Protected Attributes

bool _enabled
 If true, the filter is enabled. More...
 If true, the filter is enabled. More...
 
int _alpha
 Filter constant. More...
 Filter constant. More...
 
Scalar _avg
 Current averaged value. More...
 Current averaged value. More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FMDeemph< Scalar >

A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal.

@@ -544,14 +545,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_f_m_demod-members.html b/classsdr_1_1_f_m_demod-members.html index 5eb3e24..0d8f1b0 100644 --- a/classsdr_1_1_f_m_demod-members.html +++ b/classsdr_1_1_f_m_demod-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -128,9 +129,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_f_m_demod.html b/classsdr_1_1_f_m_demod.html index 662be90..ee1b6cf 100644 --- a/classsdr_1_1_f_m_demod.html +++ b/classsdr_1_1_f_m_demod.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FMDemod< iScalar, oScalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,110 +120,110 @@ Inheritance diagram for sdr::FMDemod< iScalar, oScalar >:

Public Types

typedef Traits< iScalar >::SScalar SScalar - The super scalar. More...
+ The super scalar. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 FMDemod ()
 Constructor. More...
 Constructor. More...
 
virtual ~FMDemod ()
 Destructor. More...
 Destructor. More...
 
virtual void config (const Config &src_cfg)
 Configures the FM demodulator. More...
 Configures the FM demodulator. More...
 
virtual void process (const Buffer< std::complex< iScalar > > &buffer, bool allow_overwrite)
 Performs the FM demodulation. More...
 Performs the FM demodulation. More...
 
- Public Member Functions inherited from sdr::Sink< std::complex< iScalar > >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _process (const Buffer< std::complex< iScalar > > &in, const Buffer< oScalar > &out)
 The actual demodulation. More...
 The actual demodulation. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - +

Protected Attributes

int _shift
 Output rescaling. More...
 Output rescaling. More...
 
std::complex< iScalar > _last_value
 The last input value. More...
 The last input value. More...
 
bool _can_overwrite
 If true, in-place demodulation is poissible. More...
 If true, in-place demodulation is poissible. More...
 
Buffer< oScalar > _buffer
 The output buffer, unused if demodulation is performed in-place. More...
 The output buffer, unused if demodulation is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class iScalar, class oScalar = iScalar>
+

template<class iScalar, class oScalar = iScalar>
class sdr::FMDemod< iScalar, oScalar >

Demodulates FM from an I/Q signal.

@@ -506,14 +507,14 @@ template<class iScalar , class oScalar = iScalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_filter_node-members.html b/classsdr_1_1_filter_node-members.html index 90df393..9b8ccad 100644 --- a/classsdr_1_1_filter_node-members.html +++ b/classsdr_1_1_filter_node-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,9 +109,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_filter_node.html b/classsdr_1_1_filter_node.html index 1fd4812..3ddf47b 100644 --- a/classsdr_1_1_filter_node.html +++ b/classsdr_1_1_filter_node.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FilterNode< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,40 +107,38 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

 FilterNode (size_t block_size=1024) - Constructor. More...
+ Constructor. More...
  virtual ~FilterNode () - Destructor. More...
+ Destructor. More...
  Sink< std::complex< Scalar > > * sink () const - The filter sink. More...
+ The filter sink. More...
  FilterSource< Scalar > * addFilter (double fmin, double fmax) - Adds a filter to the filter bank. More...
+ Adds a filter to the filter bank. More...
  - + - + - - + + - + - - + +

Protected Attributes

size_t _block_size
 The block size of the filters. More...
 The block size of the filters. More...
 
double _sample_rate
 The current sample rate. More...
 The current sample rate. More...
 
BufferNode< std::complex
-< Scalar > > * 
_buffer
 The input buffer (to ensure buffers of _block_size size. More...
BufferNode< std::complex< Scalar > > * _buffer
 The input buffer (to ensure buffers of _block_size size. More...
 
FilterSink< Scalar > * _fft_fwd
 The filter sink (forward FFT). More...
 The filter sink (forward FFT). More...
 
std::list< FilterSource
-< Scalar > * > 
_filters
 The filter bank. More...
std::list< FilterSource< Scalar > * > _filters
 The filter bank. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FilterNode< Scalar >

A FFT filter bank node wich consists of several filters.

@@ -387,14 +386,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_filter_sink-members.html b/classsdr_1_1_filter_sink-members.html index 91eea9c..683292b 100644 --- a/classsdr_1_1_filter_sink-members.html +++ b/classsdr_1_1_filter_sink-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -126,9 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_filter_sink.html b/classsdr_1_1_filter_sink.html index b5909ea..ba2db21 100644 --- a/classsdr_1_1_filter_sink.html +++ b/classsdr_1_1_filter_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FilterSink< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,101 +118,101 @@ Inheritance diagram for sdr::FilterSink< Scalar >:

Public Member Functions

 FilterSink (size_t block_size) - Constructor, best performance with block-size being a power of 2. More...
+ Constructor, best performance with block-size being a power of 2. More...
  virtual ~FilterSink () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Performs the FFT forward transform. More...
+ Performs the FFT forward transform. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - +

Protected Attributes

size_t _block_size
 The block size. More...
 The block size. More...
 
Buffer< std::complex< Scalar > > _in_buffer
 The input buffer. More...
 The input buffer. More...
 
Buffer< std::complex< Scalar > > _out_buffer
 The output buffer (transformed). More...
 The output buffer (transformed). More...
 
FFTPlan< Scalar > _plan
 The plan for the FFT forward transform. More...
 The plan for the FFT forward transform. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FilterSink< Scalar >

Performs the FFT forward transform.

@@ -220,7 +221,7 @@ class sdr::FilterSink< Scalar >

-template<class Scalar >
+template<class Scalar>
- +
@@ -248,7 +249,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -276,7 +277,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -306,7 +307,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -347,7 +348,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
@@ -371,7 +372,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -395,7 +396,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -419,7 +420,7 @@ template<class Scalar >
-template<class Scalar >
+template<class Scalar>
@@ -440,14 +441,14 @@ template<class Scalar >
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_filter_source-members.html b/classsdr_1_1_filter_source-members.html index 56716e0..e8b281e 100644 --- a/classsdr_1_1_filter_source-members.html +++ b/classsdr_1_1_filter_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -134,9 +135,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_filter_source.html b/classsdr_1_1_filter_source.html index ef0cbfa..5fab18e 100644 --- a/classsdr_1_1_filter_source.html +++ b/classsdr_1_1_filter_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FilterSource< Scalar > Class Template Reference + @@ -32,7 +33,7 @@
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -118,125 +119,125 @@ Inheritance diagram for sdr::FilterSource< Scalar >:

Public Member Functions

 FilterSource (size_t block_size, double fmin, double fmax)
 Constructor. More...
 Constructor. More...
 
virtual ~FilterSource ()
 Destructor. More...
 Destructor. More...
 
void setFreq (double fmin, double fmax)
 Set the frequency range. More...
 Set the frequency range. More...
 
virtual void config (const Config &src_cfg)
 Configures the filter node. More...
 Configures the filter node. More...
 
virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
 Performs the FFT filtering and back-transform. More...
 Performs the FFT filtering and back-transform. More...
 
- Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _updateFilter ()
 Updates the sink-filter. More...
 Updates the sink-filter. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

size_t _block_size
 Holds the block size of the filter. More...
 Holds the block size of the filter. More...
 
double _sample_rate
 The current sample-rate. More...
 The current sample-rate. More...
 
Buffer< std::complex< Scalar > > _in_buffer
 An input buffer. More...
 An input buffer. More...
 
Buffer< std::complex< Scalar > > _trafo_buffer
 A compute buffer. More...
 A compute buffer. More...
 
Buffer< std::complex< Scalar > > _last_trafo
 Holds a copy of the second-half of the last output signal. More...
 Holds a copy of the second-half of the last output signal. More...
 
Buffer< std::complex< Scalar > > _kern
 Holds the current filter kernel. More...
 Holds the current filter kernel. More...
 
BufferSet< std::complex< Scalar > > _buffers
 The output buffers. More...
 The output buffers. More...
 
double _fmin
 The lower frequency range. More...
 The lower frequency range. More...
 
double _fmax
 The upper frequency range. More...
 The upper frequency range. More...
 
FFTPlan< Scalar > _plan
 The FFT plan for the FFT back-transform. More...
 The FFT plan for the FFT back-transform. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FilterSource< Scalar >

Performs the overlap-add FFT filtering and back-transform.

@@ -690,14 +691,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_frac_sub_sample_base-members.html b/classsdr_1_1_frac_sub_sample_base-members.html index 88adf21..49a6827 100644 --- a/classsdr_1_1_frac_sub_sample_base-members.html +++ b/classsdr_1_1_frac_sub_sample_base-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,9 +110,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_frac_sub_sample_base.html b/classsdr_1_1_frac_sub_sample_base.html index b78bf00..7d74de8 100644 --- a/classsdr_1_1_frac_sub_sample_base.html +++ b/classsdr_1_1_frac_sub_sample_base.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FracSubSampleBase< Scalar > Class Template Reference + @@ -32,7 +33,7 @@
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,44 +108,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef Traits< Scalar >::SScalar SScalar
 The input & output type super-scalar. More...
 The input & output type super-scalar. More...
 
- + - + - + - + - + - +

Public Member Functions

 FracSubSampleBase (double frac)
 Constructor. More...
 Constructor. More...
 
virtual ~FracSubSampleBase ()
 Destructor. More...
 Destructor. More...
 
void setFrac (double frac)
 Resets the sample rate fraction. More...
 Resets the sample rate fraction. More...
 
double frac () const
 Returns the effective sub-sample fraction. More...
 Returns the effective sub-sample fraction. More...
 
void reset ()
 Reset sample counter. More...
 Reset sample counter. More...
 
Buffer< Scalar > subsample (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 Performs the sub-sampling. More...
 Performs the sub-sampling. More...
 
- + - + - +

Protected Attributes

SScalar _avg
 The average. More...
 The average. More...
 
size_t _sample_count
 The number of samples collected times (1<<16). More...
 The number of samples collected times (1<<16). More...
 
size_t _period
 The sub-sample period. More...
 The sub-sample period. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FracSubSampleBase< Scalar >

Implements a fractional sub-sampler.

@@ -423,14 +424,14 @@ template<class Scalar >


The documentation for this class was generated from the following file:
diff --git a/classsdr_1_1_freq_shift-members.html b/classsdr_1_1_freq_shift-members.html index e4acba2..e045c48 100644 --- a/classsdr_1_1_freq_shift-members.html +++ b/classsdr_1_1_freq_shift-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -130,9 +131,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_freq_shift.html b/classsdr_1_1_freq_shift.html index 64afbf9..1292fb1 100644 --- a/classsdr_1_1_freq_shift.html +++ b/classsdr_1_1_freq_shift.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FreqShift< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,118 +118,117 @@ Inheritance diagram for sdr::FreqShift< Scalar >:

Public Member Functions

 FreqShift (double shift, Scalar scale=1.0) - Constructs a frequency shift node with optional scaleing of the result. More...
+ Constructs a frequency shift node with optional scaleing of the result. More...
  virtual ~FreqShift () - Destructor. More...
+ Destructor. More...
  double shift () const - Returns the frequency shift. More...
+ Returns the frequency shift. More...
  void setShift (double shift) - Sets the frequency shift. More...
+ Sets the frequency shift. More...
  virtual void config (const Config &src_cfg) - Configures the frequency shift node. More...
+ Configures the frequency shift node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Performs the frequency shift. More...
+ Performs the frequency shift. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - +

Protected Attributes

Buffer< std::complex< Scalar > > _buffer
 The output buffer. More...
 The output buffer. More...
 
double _shift
 The frequency shift $f$ in Hz ( $\omega=2\pi f$). More...
 The frequency shift $f$ in Hz ( $\omega=2\pi f$). More...
 
Scalar _scale
 The optional scale. More...
 The optional scale. More...
 
std::complex< double > _factor
 The current exponental factor, gets updated for every sample. More...
 The current exponental factor, gets updated for every sample. More...
 
double _sample_rate
 The current sample rate. More...
 The current sample rate. More...
 
std::complex< double > _delta
 $\exp(i\omega t)$. More...
 $\exp(i\omega t)$. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FreqShift< Scalar >

Performs a frequency shift on a complex input signal, by multiplying it with $e^{i\omega t}$.

-

Please note, this node performs not optimal in cases, where the input scalar is an integer, as the computation is performed using double precision floating point numbers.

-
Deprecated:
Implement a more efficient variant using FreqShiftBase.
+

Please note, this node performs not optimal in cases, where the input scalar is an integer, as the computation is performed using double precision floating point numbers.

Deprecated:
Implement a more efficient variant using FreqShiftBase.

Constructor & Destructor Documentation

@@ -567,14 +567,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_freq_shift_base-members.html b/classsdr_1_1_freq_shift_base-members.html index 9fd85e7..065fbc9 100644 --- a/classsdr_1_1_freq_shift_base-members.html +++ b/classsdr_1_1_freq_shift_base-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,9 +117,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_freq_shift_base.html b/classsdr_1_1_freq_shift_base.html index 1fdb9dd..5196e08 100644 --- a/classsdr_1_1_freq_shift_base.html +++ b/classsdr_1_1_freq_shift_base.html @@ -3,15 +3,16 @@ - + libsdr: sdr::FreqShiftBase< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -101,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
-

A performant implementation of a frequency shift operation on integer signals. +

A performant implementation of a frequency-shift operation on integer signals. More...

#include <freqshift.hh>

@@ -119,74 +120,74 @@ Inheritance diagram for sdr::FreqShiftBase< Scalar >:

Public Types

typedef std::complex< Scalar > CScalar - The complex input signal. More...
+ The complex input signal. More...
  typedef Traits< Scalar >::SScalar SScalar - The compute (super) scalar of the input type. More...
+ The compute (super) scalar of the input type. More...
  typedef std::complex< SScalarCSScalar - The complex compute (super) scalar of the input type. More...
+ The complex compute (super) scalar of the input type. More...
  - + - + - + - + - + - + - +

Public Member Functions

 FreqShiftBase (double F, double Fs)
 Constructor. More...
 Constructor. More...
 
virtual ~FreqShiftBase ()
 Destructor. More...
 Destructor. More...
 
double sampleRate () const
 Returns the sample rate. More...
 Returns the sample rate. More...
 
virtual void setSampleRate (double Fs)
 Sets the sample rate and updates the LUT. More...
 Sets the sample rate and updates the LUT. More...
 
double frequencyShift () const
 Returns the frequency shift. More...
 Returns the frequency shift. More...
 
virtual void setFrequencyShift (double F)
 Sets the frequency shift and updates the LUT. More...
 Sets the frequency shift and updates the LUT. More...
 
CSScalar applyFrequencyShift (CSScalar value)
 Performs the frequency shift on a single sample. More...
 Performs the frequency shift on a single sample. More...
 
- +

Protected Member Functions

void _update_lut_incr ()
 Updates the multiplier LUT. More...
 Updates the multiplier LUT. More...
 
- + - + - + - + - +

Protected Attributes

double _freq_shift
 The current frequency shift. More...
 The current frequency shift. More...
 
double _Fs
 The current sample rate. More...
 The current sample rate. More...
 
size_t _lut_inc
 The LUT increment. More...
 The LUT increment. More...
 
size_t _lut_count
 The LUT index counter. More...
 The LUT index counter. More...
 
Buffer< CSScalar_lut
 The LUT. More...
 The LUT. More...
 
- +

Static Protected Attributes

static const size_t _lut_size = 128
 The size of the LUT. More...
 The size of the LUT. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::FreqShiftBase< Scalar >

-

A performant implementation of a frequency shift operation on integer signals.

+

A performant implementation of a frequency-shift operation on integer signals.

Member Typedef Documentation

@@ -616,14 +617,14 @@ template<class Scalar>

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_g_w_n_source-members.html b/classsdr_1_1_g_w_n_source-members.html index 0f6acd0..f31d787 100644 --- a/classsdr_1_1_g_w_n_source-members.html +++ b/classsdr_1_1_g_w_n_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -121,9 +122,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_g_w_n_source.html b/classsdr_1_1_g_w_n_source.html index c7462d0..54db0e5 100644 --- a/classsdr_1_1_g_w_n_source.html +++ b/classsdr_1_1_g_w_n_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::GWNSource< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,84 +117,84 @@ Inheritance diagram for sdr::GWNSource< Scalar >:

Public Member Functions

 GWNSource (double sample_rate, size_t buffer_size=1024) - Constructor. More...
+ Constructor. More...
  virtual ~GWNSource () - Destructor. More...
+ Destructor. More...
  void next () - Samples and emits the next chunk of data. More...
+ Samples and emits the next chunk of data. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - +

Protected Member Functions

void _getNormal (double &a, double &b)
 Sample two std. More...
 Sample two std. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - +

Protected Attributes

double _sample_rate
 The sample rate. More...
 The sample rate. More...
 
size_t _buffer_size
 The size of the buffer. More...
 The size of the buffer. More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
double _mean
 The mean value of the GWN. More...
 The mean value of the GWN. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::GWNSource< Scalar >

A Gaussian White Noise source.

@@ -429,14 +430,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_i_q_balance-members.html b/classsdr_1_1_i_q_balance-members.html index 44571b5..514a672 100644 --- a/classsdr_1_1_i_q_balance-members.html +++ b/classsdr_1_1_i_q_balance-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -129,9 +130,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_i_q_balance.html b/classsdr_1_1_i_q_balance.html index dae9832..61ea12f 100644 --- a/classsdr_1_1_i_q_balance.html +++ b/classsdr_1_1_i_q_balance.html @@ -3,15 +3,16 @@ - + libsdr: sdr::IQBalance< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,113 +120,113 @@ Inheritance diagram for sdr::IQBalance< Scalar >:

Public Types

typedef Traits< Scalar >::SScalar SScalar - The internal used compute scalar. More...
+ The internal used compute scalar. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 IQBalance (double balance=0.0)
 Constructor. More...
 Constructor. More...
 
virtual ~IQBalance ()
 Destructor. More...
 Destructor. More...
 
double balance () const
 Retunrs the balance. More...
 Retunrs the balance. More...
 
void setBalance (double balance)
 Sets the I/Q balance. More...
 Sets the I/Q balance. More...
 
virtual void config (const Config &src_cfg)
 Configures the node. More...
 Configures the node. More...
 
virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
 Processes a buffer. More...
 Processes a buffer. More...
 
- Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _process (const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out)
 The actual implementation. More...
 The actual implementation. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - +

Protected Attributes

int32_t _realFact
 Scaleing factor for the real part. More...
 Scaleing factor for the real part. More...
 
int32_t _imagFact
 Scaleing factor for the imaginary part. More...
 Scaleing factor for the imaginary part. More...
 
Buffer< std::complex< Scalar > > _buffer
 The working buffer. More...
 The working buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::IQBalance< Scalar >

A simple node, that allows to balance an IQ signal.

@@ -546,14 +547,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_i_q_base_band-members.html b/classsdr_1_1_i_q_base_band-members.html index cc7accb..800d86f 100644 --- a/classsdr_1_1_i_q_base_band-members.html +++ b/classsdr_1_1_i_q_base_band-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -168,9 +169,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_i_q_base_band.html b/classsdr_1_1_i_q_base_band.html index 7a18c64..ff6347f 100644 --- a/classsdr_1_1_i_q_base_band.html +++ b/classsdr_1_1_i_q_base_band.html @@ -3,15 +3,16 @@ - + libsdr: sdr::IQBaseBand< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -112,7 +113,7 @@ Inheritance diagram for sdr::IQBaseBand< Scalar >:
sdr::Sink< std::complex< Scalar > > sdr::Source -sdr::FreqShiftBase< Scalar > +sdr::FreqShiftBase< Scalar > sdr::SinkBase @@ -120,254 +121,254 @@ Inheritance diagram for sdr::IQBaseBand< Scalar >:

Public Types

typedef std::complex< Scalar > CScalar - The complex type of the input stream. More...
+ The complex type of the input stream. More...
  typedef int32_t SScalar - The (real) computation scalar type (super scalar), the computations are performed with this scalar type. More...
+ The (real) computation scalar type (super scalar), the computations are performed with this scalar type. More...
  typedef std::complex< SScalarCSScalar - Complex SScalar type. More...
+ Complex SScalar type. More...
  - Public Types inherited from sdr::FreqShiftBase< Scalar > typedef std::complex< Scalar > CScalar - The complex input signal. More...
+ The complex input signal. More...
  typedef Traits< Scalar >::SScalar SScalar - The compute (super) scalar of the input type. More...
+ The compute (super) scalar of the input type. More...
  typedef std::complex< SScalarCSScalar - The complex compute (super) scalar of the input type. More...
+ The complex compute (super) scalar of the input type. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 IQBaseBand (double Fc, double width, size_t order, size_t sub_sample, double oFs=0.0)
 Constructor, the filter center frequency Ff equals the given center frequency Fc. More...
 Constructor, the filter center frequency Ff equals the given center frequency Fc. More...
 
 IQBaseBand (double Fc, double Ff, double width, size_t order, size_t sub_sample, double oFs=0.0)
 Constructor. More...
 Constructor. More...
 
virtual ~IQBaseBand ()
 Destructor. More...
 Destructor. More...
 
size_t order () const
 Returns the order of the band-pass filter. More...
 Returns the order of the band-pass filter. More...
 
void setOrder (size_t o)
 (Re-) Sets the filter order. More...
 (Re-) Sets the filter order. More...
 
double centerFrequency () const
 Returns the center frequency. More...
 Returns the center frequency. More...
 
void setCenterFrequency (double Fc)
 Resets the center frequency. More...
 Resets the center frequency. More...
 
double filterFrequency () const
 Returns the filter frequency. More...
 Returns the filter frequency. More...
 
void setFilterFrequency (double Ff)
 (Re-) Sets the filter frequency. More...
 (Re-) Sets the filter frequency. More...
 
double filterWidth () const
 Returns the filter width. More...
 Returns the filter width. More...
 
void setFilterWidth (double width)
 Sets the filter width. More...
 Sets the filter width. More...
 
size_t subSample () const
 Returns the sub sampling. More...
 Returns the sub sampling. More...
 
void setSubsample (size_t sub_sample)
 Resets the sub sampling. More...
 Resets the sub sampling. More...
 
void setOutputSampleRate (double Fs)
 Resets the output sample rate. More...
 Resets the output sample rate. More...
 
virtual void config (const Config &src_cfg)
 Configures the BaseBand node. More...
 Configures the BaseBand node. More...
 
virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
 Processes the given buffer. More...
 Processes the given buffer. More...
 
- Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- Public Member Functions inherited from sdr::FreqShiftBase< Scalar >
 FreqShiftBase (double F, double Fs)
 Constructor. More...
 Constructor. More...
 
virtual ~FreqShiftBase ()
 Destructor. More...
 Destructor. More...
 
double sampleRate () const
 Returns the sample rate. More...
 Returns the sample rate. More...
 
virtual void setSampleRate (double Fs)
 Sets the sample rate and updates the LUT. More...
 Sets the sample rate and updates the LUT. More...
 
double frequencyShift () const
 Returns the frequency shift. More...
 Returns the frequency shift. More...
 
virtual void setFrequencyShift (double F)
 Sets the frequency shift and updates the LUT. More...
 Sets the frequency shift and updates the LUT. More...
 
CSScalar applyFrequencyShift (CSScalar value)
 Performs the frequency shift on a single sample. More...
 Performs the frequency shift on a single sample. More...
 
- + - + - + - + - + - + - +

Protected Member Functions

void _reconfigure ()
 Reconfigures the node. More...
 Reconfigures the node. More...
 
void _process (const Buffer< CScalar > &in, const Buffer< CScalar > &out)
 Performs the base-band selection, frequency shift and sub-sampling. More...
 Performs the base-band selection, frequency shift and sub-sampling. More...
 
CSScalar _filter_ring () const
 Applies the filter on the data stored in the ring buffer. More...
 Applies the filter on the data stored in the ring buffer. More...
 
void _update_filter_kernel ()
 Updates the band-pass filter kernel. More...
 Updates the band-pass filter kernel. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Member Functions inherited from sdr::FreqShiftBase< Scalar >
void _update_lut_incr ()
 Updates the multiplier LUT. More...
 Updates the multiplier LUT. More...
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

int32_t _Fc
 The frequency shift of the base band. More...
 The frequency shift of the base band. More...
 
int32_t _Ff
 The center frequency of the base band. More...
 The center frequency of the base band. More...
 
int32_t _Fs
 The input sample rate. More...
 The input sample rate. More...
 
int32_t _width
 The filter width. More...
 The filter width. More...
 
size_t _order
 The order of the filter. More...
 The order of the filter. More...
 
size_t _sub_sample
 The number of sample averages for the sub sampling. More...
 The number of sample averages for the sub sampling. More...
 
double _oFs
 Holds the desired output sample rate, _sub_sample will be adjusted accordingly. More...
 Holds the desired output sample rate, _sub_sample will be adjusted accordingly. More...
 
size_t _ring_offset
 The current index of the ring buffer. More...
 The current index of the ring buffer. More...
 
size_t _sample_count
 Holds the current number of samples averaged. More...
 Holds the current number of samples averaged. More...
 
CSScalar _last
 Holds the current sum of the last _sample_count samples. More...
 Holds the current sum of the last _sample_count samples. More...
 
size_t _sourceBs
 Buffer size of the source. More...
 Buffer size of the source. More...
 
Buffer< CSScalar_kernel
 The filter kernel of order _order. More...
 The filter kernel of order _order. More...
 
Buffer< CSScalar_ring
 A ring buffer of past values. More...
 A ring buffer of past values. More...
 
Buffer< CScalar_buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- Protected Attributes inherited from sdr::FreqShiftBase< Scalar >
double _freq_shift
 The current frequency shift. More...
 The current frequency shift. More...
 
double _Fs
 The current sample rate. More...
 The current sample rate. More...
 
size_t _lut_inc
 The LUT increment. More...
 The LUT increment. More...
 
size_t _lut_count
 The LUT index counter. More...
 The LUT index counter. More...
 
Buffer< CSScalar_lut
 The LUT. More...
 The LUT. More...
 
- +

Additional Inherited Members

- Static Protected Attributes inherited from sdr::FreqShiftBase< Scalar >
static const size_t _lut_size = 128
 The size of the LUT. More...
 The size of the LUT. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::IQBaseBand< Scalar >

This class performs several operations on the complex (integral) input stream, it first filters out some part of the input stream using a FIR band pass (band pass is centerred around Ff with width width) then shifts the center frequency Fc to 0 and finally sub-samples the resulting stream.

-

This node can be used to select a portion of the input stream and reduce the rate of the stream, allowing for some more expensive operations to be performed on the output stream.

+

This node can be used to select a portion of the input spectrum and for the reduction of the stream rate, allowing for some more expensive operations to be performed on the output stream.

Member Typedef Documentation

@@ -1401,14 +1402,14 @@ template<class Scalar >

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_i_q_sig_gen-members.html b/classsdr_1_1_i_q_sig_gen-members.html index 894d5a8..1e6d738 100644 --- a/classsdr_1_1_i_q_sig_gen-members.html +++ b/classsdr_1_1_i_q_sig_gen-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_i_q_sig_gen.html b/classsdr_1_1_i_q_sig_gen.html index 70712df..48027aa 100644 --- a/classsdr_1_1_i_q_sig_gen.html +++ b/classsdr_1_1_i_q_sig_gen.html @@ -3,15 +3,16 @@ - + libsdr: sdr::IQSigGen< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,96 +116,96 @@ Inheritance diagram for sdr::IQSigGen< Scalar >:

Public Member Functions

 IQSigGen (double samplerate, size_t buffersize, double tmax=-1) - Constructs the function generator. More...
+ Constructs the function generator. More...
  virtual ~IQSigGen () - Destructor. More...
+ Destructor. More...
  void next () - Computes the next buffer. More...
+ Computes the next buffer. More...
  void addSine (double freq, double ampl=1, double phase=0) - Add a sine function to the function generator. More...
+ Add a sine function to the function generator. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

double _sampleRate
 The sample rate of the function generator. More...
 The sample rate of the function generator. More...
 
double _dt
 The sample period. More...
 The sample period. More...
 
double _t
 The current time. More...
 The current time. More...
 
double _tMax
 The maximum time. More...
 The maximum time. More...
 
double _scale
 The scaling of the signal. More...
 The scaling of the signal. More...
 
std::list< std::vector< double > > _signals
 A list of functions. More...
 A list of functions. More...
 
size_t _bufferSize
 The size of the output buffer. More...
 The size of the output buffer. More...
 
Buffer< std::complex< Scalar > > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::IQSigGen< Scalar >

Arbitrary function generator.

@@ -547,14 +548,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_imag_part-members.html b/classsdr_1_1_imag_part-members.html index 0c6ca0f..53a8603 100644 --- a/classsdr_1_1_imag_part-members.html +++ b/classsdr_1_1_imag_part-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_imag_part.html b/classsdr_1_1_imag_part.html index 70bd6b8..29aa931 100644 --- a/classsdr_1_1_imag_part.html +++ b/classsdr_1_1_imag_part.html @@ -3,15 +3,16 @@ - + libsdr: sdr::ImagPart< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,97 +118,97 @@ Inheritance diagram for sdr::ImagPart< Scalar >:

Public Member Functions

 ImagPart (double scale=1.0) - Constructor. More...
+ Constructor. More...
  - Public Member Functions inherited from sdr::RealImagPart< Scalar >  RealImagPart (bool select_real, double scale=1.0) - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Processes the incomming data. More...
+ Processes the incomming data. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::RealImagPart< Scalar >
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
bool _select_real
 Real/Imag selection. More...
 Real/Imag selection. More...
 
double _scale
 The scale. More...
 The scale. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::ImagPart< Scalar >

Selects the imaginary part of a complex signal.

@@ -241,14 +242,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_inpol_sub_sampler-members.html b/classsdr_1_1_inpol_sub_sampler-members.html index 6f088f5..ed96f19 100644 --- a/classsdr_1_1_inpol_sub_sampler-members.html +++ b/classsdr_1_1_inpol_sub_sampler-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -127,9 +128,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_inpol_sub_sampler.html b/classsdr_1_1_inpol_sub_sampler.html index b18bd88..0b9be90 100644 --- a/classsdr_1_1_inpol_sub_sampler.html +++ b/classsdr_1_1_inpol_sub_sampler.html @@ -3,15 +3,16 @@ - + libsdr: sdr::InpolSubSampler< iScalar, oScalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,104 +118,104 @@ Inheritance diagram for sdr::InpolSubSampler< iScalar, oScalar >:

Public Member Functions

 InpolSubSampler (float frac) - Constructor. More...
+ Constructor. More...
  virtual ~InpolSubSampler () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the sub-sampling node. More...
+ Configures the sub-sampling node. More...
  virtual void process (const Buffer< iScalar > &buffer, bool allow_overwrite) - Performs the sub-sampling. More...
+ Performs the sub-sampling. More...
  - Public Member Functions inherited from sdr::Sink< iScalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - +

Protected Attributes

float _frac
 The sub-sampling fraction. More...
 The sub-sampling fraction. More...
 
float _mu
 The current (fractional) sample count. More...
 The current (fractional) sample count. More...
 
Buffer< oScalar > _dl
 A delay-line (buffer) for the interpolation. More...
 A delay-line (buffer) for the interpolation. More...
 
size_t _dl_idx
 Index of the delay-line. More...
 Index of the delay-line. More...
 
Buffer< oScalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class iScalar, class oScalar = iScalar>
+

template<class iScalar, class oScalar = iScalar>
class sdr::InpolSubSampler< iScalar, oScalar >

An interpolating sub-sampler.

@@ -474,14 +475,14 @@ template<class iScalar , class oScalar = iScalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_interleave-members.html b/classsdr_1_1_interleave-members.html index 2255bd0..1ff5185 100644 --- a/classsdr_1_1_interleave-members.html +++ b/classsdr_1_1_interleave-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -126,9 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_interleave.html b/classsdr_1_1_interleave.html index 855831d..787fd50 100644 --- a/classsdr_1_1_interleave.html +++ b/classsdr_1_1_interleave.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Interleave< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,104 +117,103 @@ Inheritance diagram for sdr::Interleave< Scalar >:

Public Member Functions

 Interleave (size_t N) - Constructor. More...
+ Constructor. More...
  Sink< Scalar > * sink (size_t i) - Retunrs the i-th sink. More...
+ Retunrs the i-th sink. More...
  virtual void config (const Config &cfg) - Configures the interleave node. More...
+ Configures the interleave node. More...
  virtual void process (std::vector< RingBuffer< Scalar > > &buffers, size_t N) - Processes the data from all sinks. More...
+ Processes the data from all sinks. More...
  - Public Member Functions inherited from sdr::Combine< Scalar >  Combine (size_t N) - Constructor,
- N specifies the number of sinks. More...
+ Constructor,
+ N specifies the number of sinks. More...
  virtual ~Combine () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - - + + - + - + - + - +

Protected Attributes

size_t _N
 The number of sinks. More...
 The number of sinks. More...
 
Buffer< Scalar > _buffer
 The putput buffer. More...
 The putput buffer. More...
 
- Protected Attributes inherited from sdr::Combine< Scalar >
std::vector< RingBuffer< Scalar > > _buffers
 The ring buffers of all combine sinks. More...
 The ring buffers of all combine sinks. More...
 
std::vector< CombineSink
-< Scalar > * > 
_sinks
 The combine sinks. More...
std::vector< CombineSink< Scalar > * > _sinks
 The combine sinks. More...
 
Config _config
 The output configuration. More...
 The output configuration. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - + - + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Combine< Scalar >
void notifyConfig (size_t idx, const Config &cfg)
 Unifies the configuration of all sinks. More...
 Unifies the configuration of all sinks. More...
 
void notifyData (size_t idx)
 Determines the minimum amount of data that is available on all ring buffers. More...
 Determines the minimum amount of data that is available on all ring buffers. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::Interleave< Scalar >

Interleaves several input streams.

@@ -395,14 +395,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_log_handler-members.html b/classsdr_1_1_log_handler-members.html index 69c0aab..85a24b1 100644 --- a/classsdr_1_1_log_handler-members.html +++ b/classsdr_1_1_log_handler-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -102,9 +103,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_log_handler.html b/classsdr_1_1_log_handler.html index 270535c..25918b6 100644 --- a/classsdr_1_1_log_handler.html +++ b/classsdr_1_1_log_handler.html @@ -3,15 +3,16 @@ - + libsdr: sdr::LogHandler Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -98,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
-

Base class of all log message handlers. +

Base class of all log-message handlers. More...

#include <logger.hh>

@@ -115,20 +116,20 @@ Inheritance diagram for sdr::LogHandler:

Public Member Functions

virtual ~LogHandler () - Destructor. More...
+ Destructor. More...
  virtual void handle (const LogMessage &msg)=0 - Needs to be implemented by sub-classes to handle log messages. More...
+ Needs to be implemented by sub-classes to handle log messages. More...
  - +

Protected Member Functions

 LogHandler ()
 Hidden constructor. More...
 Hidden constructor. More...
 

Detailed Description

-

Base class of all log message handlers.

+

Base class of all log-message handlers.

Constructor & Destructor Documentation

@@ -210,15 +211,15 @@ Protected Member Functions

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_log_message-members.html b/classsdr_1_1_log_message-members.html index 5aeb549..ed336fc 100644 --- a/classsdr_1_1_log_message-members.html +++ b/classsdr_1_1_log_message-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_log_message.html b/classsdr_1_1_log_message.html index 22754cb..f57f6e2 100644 --- a/classsdr_1_1_log_message.html +++ b/classsdr_1_1_log_message.html @@ -3,15 +3,16 @@ - + libsdr: sdr::LogMessage Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,29 +115,30 @@ Inheritance diagram for sdr::LogMessage:

Public Member Functions

 LogMessage (LogLevel level, const std::string &msg="") - Constructor. More...
+ Constructor. More...
   LogMessage (const LogMessage &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~LogMessage () - Destructor. More...
+ Destructor. More...
  LogLevel level () const - Returns the level of the message. More...
+ Returns the level of the message. More...
  std::string message () const - Returns the message. More...
+ Returns the message. More...
  - +

Protected Attributes

LogLevel _level
 The level of the message. More...
 The level of the message. More...
 

Detailed Description

A log message.

+

Bundles a message with a level.

Constructor & Destructor Documentation

@@ -283,15 +285,15 @@ Protected Attributes

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_logger-members.html b/classsdr_1_1_logger-members.html index 579925f..62dcd9d 100644 --- a/classsdr_1_1_logger-members.html +++ b/classsdr_1_1_logger-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_logger.html b/classsdr_1_1_logger.html index 72c0ef2..c4d08b4 100644 --- a/classsdr_1_1_logger.html +++ b/classsdr_1_1_logger.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Logger Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,37 +110,37 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

virtual ~Logger () - Destructor. More...
+ Destructor. More...
  void log (const LogMessage &message) - Logs a message. More...
+ Logs a message. More...
  void addHandler (LogHandler *handler) - Adds a message handler. More...
+ Adds a message handler. More...
  - +

Static Public Member Functions

static Loggerget ()
 Returns the singleton instance of the logger. More...
 Returns the singleton instance of the logger. More...
 
- +

Protected Member Functions

 Logger ()
 Hidden constructor. More...
 Hidden constructor. More...
 
- +

Protected Attributes

std::list< LogHandler * > _handler
 All registered handlers. More...
 All registered handlers. More...
 
- +

Static Protected Attributes

static Logger_instance = 0
 The singleton instance. More...
 The singleton instance. More...
 

Detailed Description

@@ -305,15 +306,15 @@ Static Protected Attributes

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_options-members.html b/classsdr_1_1_options-members.html index fb65eb6..094cf5a 100644 --- a/classsdr_1_1_options-members.html +++ b/classsdr_1_1_options-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -110,9 +111,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_options.html b/classsdr_1_1_options.html index 092df36..a74aca3 100644 --- a/classsdr_1_1_options.html +++ b/classsdr_1_1_options.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Options Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,10 +110,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Classes

struct  Definition - Argument definition. More...
+ Argument definition. More...
  class  Value - The argument value. More...
+ The argument value. More...
  FLOAT, ANY } - +

@@ -122,34 +123,34 @@ Public Types

 Possible argument types. More...
 Possible argument types. More...
 
- + - + - +

Public Member Functions

 Options ()
 Empty constructor. More...
 Empty constructor. More...
 
bool has (const char *name)
 Returns true if the specified option was found (long name). More...
 Returns true if the specified option was found (long name). More...
 
const Valueget (const char *name)
 Returns the argument of the specified option (long name). More...
 Returns the argument of the specified option (long name). More...
 
- + - +

Static Public Member Functions

static bool parse (const Definition defs[], int argc, char *argv[], Options &options)
 Parse the given arguments (argc, argv) using the definitions defs and stores the results into options. More...
 Parse the given arguments (argc, argv) using the definitions defs and stores the results into options. More...
 
static void print_help (std::ostream &stream, const Definition defs[])
 Serializes a help text derived from given the definitions into stream. More...
 Serializes a help text derived from given the definitions into stream. More...
 
- +

Protected Attributes

std::map< std::string, Value_options
 The table of option names and argument values. More...
 The table of option names and argument values. More...
 

Detailed Description

@@ -167,16 +168,16 @@ Protected Attributes

Possible argument types.

- - - -
Enumerator
FLAG  +
Enumerator
FLAG 

No argument (flag).

INTEGER  +
INTEGER 

Integer argument.

FLOAT  +
FLOAT 

Floating point argument.

ANY  +
ANY 

Any argument (string).

@@ -347,15 +348,15 @@ Protected Attributes

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_options_1_1_value-members.html b/classsdr_1_1_options_1_1_value-members.html index b1ce514..f46f44f 100644 --- a/classsdr_1_1_options_1_1_value-members.html +++ b/classsdr_1_1_options_1_1_value-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -123,9 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_options_1_1_value.html b/classsdr_1_1_options_1_1_value.html index 7868e8f..4b5d02e 100644 --- a/classsdr_1_1_options_1_1_value.html +++ b/classsdr_1_1_options_1_1_value.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Options::Value Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,46 +108,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

 Value () - Empty constructor. More...
+ Empty constructor. More...
   Value (long value) - Integer constructor. More...
+ Integer constructor. More...
   Value (double value) - Floating point constructor. More...
+ Floating point constructor. More...
   Value (const std::string &value) - String constructor. More...
+ String constructor. More...
   Value (const Value &other) - Copy constructor. More...
+ Copy constructor. More...
   ~Value () - Destructor. More...
+ Destructor. More...
  const Valueoperator= (const Value &other) - Assignment. More...
+ Assignment. More...
  bool isNone () const - Returns true if the value is empty. More...
+ Returns true if the value is empty. More...
  bool isInteger () const - Returns true if the value is an integer. More...
+ Returns true if the value is an integer. More...
  bool isFloat () const - Returns true if the value is a floating point number. More...
+ Returns true if the value is a floating point number. More...
  bool isString () const - Returns true if the value is a string. More...
+ Returns true if the value is a string. More...
  long toInteger () const - Turns the value into an integer. More...
+ Turns the value into an integer. More...
  double toFloat () const - Turns the value into a floating point number. More...
+ Turns the value into a floating point number. More...
  std::string toString () const - Turns the value into a string. More...
+ Turns the value into a string. More...
  FLOAT, STRING } - +

@@ -156,26 +157,26 @@ Protected Types

 Value type. More...
 Value type. More...
 
- + - - - - +

Protected Attributes

Type _type
 The type of the value. More...
 The type of the value. More...
 
union {
+
   long   as_int
 
+
   double   as_float
 
+
   char *   as_string
 
_value
 Values. More...
 Values. More...
 

Detailed Description

@@ -201,16 +202,16 @@ Protected Attributes

Value type.

- - - -
Enumerator
NONE  +
Enumerator
NONE 

Empty or invalid value.

INTEGER  +
INTEGER 

An integer (long int).

FLOAT  +
FLOAT 

A floating point number (double).

STRING  +
STRING 

An ASCII string.

@@ -500,15 +501,15 @@ Protected Attributes

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_port_audio-members.html b/classsdr_1_1_port_audio-members.html index 2f52e99..933cfa3 100644 --- a/classsdr_1_1_port_audio-members.html +++ b/classsdr_1_1_port_audio-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,9 +108,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_port_audio.html b/classsdr_1_1_port_audio.html index 0df63e2..1e5b9ec 100644 --- a/classsdr_1_1_port_audio.html +++ b/classsdr_1_1_port_audio.html @@ -3,15 +3,16 @@ - + libsdr: sdr::PortAudio Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -105,28 +106,28 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Static Public Member Functions

static void init () - Initializes the PortAudio system, must be called first. More...
+ Initializes the PortAudio system, must be called first. More...
  static void terminate () - Shutdown. More...
+ Shutdown. More...
  static int numDevices () - Returns the number of devices available. More...
+ Returns the number of devices available. More...
  static int defaultInputDevice () - Returns the index of the default input device. More...
+ Returns the index of the default input device. More...
  static int defaultOutputDevice () - Returns the index of the default output device. More...
+ Returns the index of the default output device. More...
  static bool hasInputStream (int idx) - Returns true of the given device provides an input chanel. More...
+ Returns true of the given device provides an input chanel. More...
  static bool hasOutputStream (int idx) - Returns true of the given device provides an output chanel. More...
+ Returns true of the given device provides an output chanel. More...
  static std::string deviceName (int idx) - Returns the device name. More...
+ Returns the device name. More...
 

Detailed Description

@@ -336,15 +337,15 @@ Static Public Member Functions

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_port_sink-members.html b/classsdr_1_1_port_sink-members.html index 9c801a4..0dbacf4 100644 --- a/classsdr_1_1_port_sink-members.html +++ b/classsdr_1_1_port_sink-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,9 +108,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_port_sink.html b/classsdr_1_1_port_sink.html index c900deb..8537b99 100644 --- a/classsdr_1_1_port_sink.html +++ b/classsdr_1_1_port_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::PortSink Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,32 +116,32 @@ Inheritance diagram for sdr::PortSink:

Public Member Functions

 PortSink () - Constructor. More...
+ Constructor. More...
  virtual ~PortSink () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the PortAudio output. More...
+ Configures the PortAudio output. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Playback. More...
+ Playback. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - + - +

Protected Attributes

PaStream * _stream
 The PortAudio stream. More...
 The PortAudio stream. More...
 
size_t _frame_size
 The frame-size. More...
 The frame-size. More...
 

Detailed Description

@@ -301,15 +302,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_port_source-members.html b/classsdr_1_1_port_source-members.html index 98b30dd..713a8a3 100644 --- a/classsdr_1_1_port_source-members.html +++ b/classsdr_1_1_port_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -128,9 +129,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_port_source.html b/classsdr_1_1_port_source.html index f387d02..40e2a2b 100644 --- a/classsdr_1_1_port_source.html +++ b/classsdr_1_1_port_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::PortSource< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,105 +117,105 @@ Inheritance diagram for sdr::PortSource< Scalar >:

Public Member Functions

 PortSource (double sampleRate, size_t bufferSize, int dev=-1) - Constructor. More...
+ Constructor. More...
  virtual ~PortSource () - Destructor. More...
+ Destructor. More...
  void next () - Reads (blocking) the next buffer from the PortAudio stream. More...
+ Reads (blocking) the next buffer from the PortAudio stream. More...
  int deviceIndex () const - Returns the currently selected input device. More...
+ Returns the currently selected input device. More...
  void setDeviceIndex (int idx=-1) - Selects the input device, throws a ConfigError exception if the device can not be setup as an input device. More...
+ Selects the input device, throws a ConfigError exception if the device can not be setup as an input device. More...
  bool hasSampleRate (double sampleRate) - Checks if the given sample rate is supported by the device. More...
+ Checks if the given sample rate is supported by the device. More...
  void setSampleRate (double sampleRate) - Resets the sample rate of the input device. More...
+ Resets the sample rate of the input device. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - +

Protected Member Functions

void _initializeStream (int idx=-1)
 Device setup. More...
 Device setup. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - + - + - +

Protected Attributes

bool _streamIsOpen
 If true, the PortAudio stream, _stream is open. More...
 If true, the PortAudio stream, _stream is open. More...
 
PaStream * _stream
 The PortAudio input stream. More...
 The PortAudio input stream. More...
 
PaSampleFormat _fmt
 The current format of the PortAudio stream. More...
 The current format of the PortAudio stream. More...
 
double _sampleRate
 The current sample rate. More...
 The current sample rate. More...
 
int _deviceIndex
 The current input device index. More...
 The current input device index. More...
 
bool _is_real
 If true, the input stream is real (1 chanel), otherwise complex (2 chanels). More...
 If true, the input stream is real (1 chanel), otherwise complex (2 chanels). More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::PortSource< Scalar >

PortAudio input stream as a Source.

@@ -399,7 +400,7 @@ template<class Scalar >

Reads (blocking) the next buffer from the PortAudio stream.

This function can be connected to the idle event of the Queue.

-
Todo:
Signal loss of samples in debug mode.
+
Todo:
Signal loss of samples in debug mode.
Bug:
Drop data if output buffer is in use.

@@ -632,14 +633,14 @@ template<class Scalar >
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_proxy-members.html b/classsdr_1_1_proxy-members.html index 228ea61..08a9136 100644 --- a/classsdr_1_1_proxy-members.html +++ b/classsdr_1_1_proxy-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,9 +120,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_proxy.html b/classsdr_1_1_proxy.html index aad71a6..4737791 100644 --- a/classsdr_1_1_proxy.html +++ b/classsdr_1_1_proxy.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Proxy Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,72 +116,72 @@ Inheritance diagram for sdr::Proxy:

Public Member Functions

 Proxy () - Constructor. More...
+ Constructor. More...
  virtual ~Proxy () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Forwards the buffer. More...
+ Forwards the buffer. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

@@ -296,15 +297,15 @@ Additional Inherited Members
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_queue-members.html b/classsdr_1_1_queue-members.html index 24cfb12..15a471f 100644 --- a/classsdr_1_1_queue-members.html +++ b/classsdr_1_1_queue-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -126,9 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_queue.html b/classsdr_1_1_queue.html index 51d9767..d2bf53a 100644 --- a/classsdr_1_1_queue.html +++ b/classsdr_1_1_queue.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Queue Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,106 +110,106 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Classes

class  Message - The internal used message type. More...
+ The internal used message type. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

virtual ~Queue ()
 Destructor. More...
 Destructor. More...
 
void send (const RawBuffer &buffer, SinkBase *sink, bool allow_overwrite=false)
 Adds a buffer and its receiver to the queue. More...
 Adds a buffer and its receiver to the queue. More...
 
void start ()
 Enters the queue loop, if parallel=true was passed to get, exec will execute the queue loop in a separate thread and returns immediately. More...
 Enters the queue loop, if parallel=true was passed to get, exec will execute the queue loop in a separate thread and returns immediately. More...
 
void stop ()
 Signals the queue to stop processing. More...
 Signals the queue to stop processing. More...
 
void wait ()
 Wait for the queue to exit the queue loop. More...
 Wait for the queue to exit the queue loop. More...
 
bool isStopped () const
 Returns true if the queue loop is stopped. More...
 Returns true if the queue loop is stopped. More...
 
bool isRunning () const
 Returns true if the queue loop is running. More...
 Returns true if the queue loop is running. More...
 
template<class T >
void addIdle (T *instance, void(T::*function)(void))
 Adds a callback to the idle event. More...
 Adds a callback to the idle event. More...
 
template<class T >
void remIdle (T *instance)
 Removes all callbacks of the given instance from the idle signal. More...
 Removes all callbacks of the given instance from the idle signal. More...
 
template<class T >
void addStart (T *instance, void(T::*function)(void))
 Adds a callback to the start event. More...
 Adds a callback to the start event. More...
 
template<class T >
void remStart (T *instance)
 Removes all callbacks of the given instance from the start signal. More...
 Removes all callbacks of the given instance from the start signal. More...
 
template<class T >
void addStop (T *instance, void(T::*function)(void))
 Adds a callback to the stop event. More...
 Adds a callback to the stop event. More...
 
template<class T >
void remStop (T *instance)
 Removes all callbacks of the given instance from the stop signal. More...
 Removes all callbacks of the given instance from the stop signal. More...
 
- +

Static Public Member Functions

static Queueget ()
 Get a reference to the global instance of the queue. More...
 Get a reference to the global instance of the queue. More...
 
- + - + - + - + - +

Protected Member Functions

 Queue ()
 Hidden constructor, use get to get the singleton instance. More...
 Hidden constructor, use get to get the singleton instance. More...
 
void _main ()
 The actual queue loop. More...
 The actual queue loop. More...
 
void _signalIdle ()
 Emits the idle signal. More...
 Emits the idle signal. More...
 
void _signalStart ()
 Emits the start signal. More...
 Emits the start signal. More...
 
void _signalStop ()
 Emits the stop signal. More...
 Emits the stop signal. More...
 
- + - + - + - + - + - + - + - +

Protected Attributes

bool _running
 While this is true, the queue loop is executed. More...
 While this is true, the queue loop is executed. More...
 
pthread_t _thread
 If _parallel is true, the thread of the queue loop. More...
 If _parallel is true, the thread of the queue loop. More...
 
pthread_mutex_t _queue_lock
 The queue mutex. More...
 The queue mutex. More...
 
pthread_cond_t _queue_cond
 The queue condition. More...
 The queue condition. More...
 
std::list< Message_queue
 The message queue. More...
 The message queue. More...
 
std::list< DelegateInterface * > _idle
 Idle event callbacks. More...
 Idle event callbacks. More...
 
std::list< DelegateInterface * > _onStart
 Start event callbacks. More...
 Start event callbacks. More...
 
std::list< DelegateInterface * > _onStop
 Stop event callbacks. More...
 Stop event callbacks. More...
 

Detailed Description

@@ -892,15 +893,15 @@ template<class T >

The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_queue_1_1_message-members.html b/classsdr_1_1_queue_1_1_message-members.html index 97c5ee1..a07a133 100644 --- a/classsdr_1_1_queue_1_1_message-members.html +++ b/classsdr_1_1_queue_1_1_message-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -109,9 +110,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_queue_1_1_message.html b/classsdr_1_1_queue_1_1_message.html index f18e550..09a5a5a 100644 --- a/classsdr_1_1_queue_1_1_message.html +++ b/classsdr_1_1_queue_1_1_message.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Queue::Message Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,37 +107,37 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Member Functions

 Message (const RawBuffer &buffer, SinkBase *sink, bool allow_overwrite) - Constructor. More...
+ Constructor. More...
   Message (const Message &other) - Copy constructor. More...
+ Copy constructor. More...
  const Messageoperator= (const Message &other) - Assignment operator. More...
+ Assignment operator. More...
  const RawBufferbuffer () const - Returns the buffer of the message. More...
+ Returns the buffer of the message. More...
  RawBufferbuffer () - Returns the buffer of the message. More...
+ Returns the buffer of the message. More...
  SinkBasesink () const - Returns the destination of the message. More...
+ Returns the destination of the message. More...
  bool allowOverwrite () const - If true, the sender allows to overwrite the content of the buffer. More...
+ If true, the sender allows to overwrite the content of the buffer. More...
  - + - + - +

Protected Attributes

RawBuffer _buffer
 The buffer being send. More...
 The buffer being send. More...
 
SinkBase_sink
 The destination. More...
 The destination. More...
 
bool _allow_overwrite
 If true, the sender allows to overwrite the buffer. More...
 If true, the sender allows to overwrite the buffer. More...
 

Detailed Description

@@ -405,14 +406,14 @@ Protected Attributes

The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_r_t_l_source-members.html b/classsdr_1_1_r_t_l_source-members.html index 01b4158..c79dfcc 100644 --- a/classsdr_1_1_r_t_l_source-members.html +++ b/classsdr_1_1_r_t_l_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -97,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

This is the complete list of members for sdr::RTLSource, including all inherited members.

- + @@ -138,9 +139,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
__rtl_sdr_callback(unsigned char *buffer, uint32_t len, void *ctx)sdr::RTLSourceprotectedstatic
__rtl_srd_parallel_main(void *ctx)sdr::RTLSourceprotectedstatic
__rtl_sdr_parallel_main(void *ctx)sdr::RTLSourceprotectedstatic
_agc_enabledsdr::RTLSourceprotected
_buffer_sizesdr::RTLSourceprotected
_configsdr::Sourceprotected
diff --git a/classsdr_1_1_r_t_l_source.html b/classsdr_1_1_r_t_l_source.html index 5b93edf..42de824 100644 --- a/classsdr_1_1_r_t_l_source.html +++ b/classsdr_1_1_r_t_l_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RTLSource Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,141 +118,142 @@ Inheritance diagram for sdr::RTLSource:

Public Member Functions

 RTLSource (double frequency, double sample_rate=1e6, size_t device_idx=0) - Constructor. More...
+ Constructor. More...
  virtual ~RTLSource () - Destructor. More...
+ Destructor. More...
  double frequency () const - Returns the freuency of the tuner. More...
+ Returns the tuner frequency. More...
  void setFrequency (double frequency) - (Re-) Sets the tuner frequency. More...
+ (Re-) Sets the tuner frequency. More...
  double freqCorrection () const - Returns the frequency correction in parts per million (ppm). More...
+ Returns the frequency correction in parts per million (ppm). More...
  void setFreqCorrection (double ppm) - (Re-) Sets the frequency correction in ppm. More...
+ (Re-) Sets the frequency correction in ppm. More...
  double sampleRate () const - Returns the sample rate. More...
+ Returns the sample rate. More...
  void setSampleRate (double sample_rate) - (Re-) sets the sample rate. More...
+ (Re-) sets the sample rate. More...
  bool agcEnabled () const - Returns true if AGC is enabled. More...
+ Returns true if AGC is enabled. More...
  void enableAGC (bool enable) - Enable/Disable AGC. More...
+ Enable/Disable AGC. More...
  double gain () const - Returns the tuner gain. More...
+ Returns the tuner gain. More...
  void setGain (double gain) - (Re-) Sets the tuner gain. More...
+ (Re-) Sets the tuner gain. More...
  const std::vector< double > & gainFactors () const - Retunrs a vector of supported gain factors. More...
+ Retunrs a vector of supported gain factors. More...
  void start () - Starts the reception. More...
+ Starts the reception. More...
  void stop () - Stops the reception. More...
+ Stops the reception. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - +

Static Public Member Functions

static size_t numDevices ()
 Returns the number of compatible devices found. More...
 Returns the number of compatible devices found. More...
 
static std::string deviceName (size_t idx)
 Returns the name of the specified device. More...
 Returns the name of the specified device. More...
 
- - - + + + - +

Static Protected Member Functions

static void * __rtl_srd_parallel_main (void *ctx)
 Prallel routine to receive some data from the device. More...
 
static void * __rtl_sdr_parallel_main (void *ctx)
 Parallel routine to receive some data from the device. More...
 
static void __rtl_sdr_callback (unsigned char *buffer, uint32_t len, void *ctx)
 Callback to process received data. More...
 Callback to process received data. More...
 
- + - + - + - + - + - + - + - + - + - +

Protected Attributes

double _frequency
 The current tuner frequency. More...
 The current tuner frequency. More...
 
double _sample_rate
 The current sample rate. More...
 The current sample rate. More...
 
bool _agc_enabled
 If true, the AGC is enabled. More...
 If true, the AGC is enabled. More...
 
std::vector< double > _gains
 A vector of gain factors supported by the device. More...
 A vector of gain factors supported by the device. More...
 
size_t _buffer_size
 The buffer size. More...
 The buffer size. More...
 
rtlsdr_dev_t * _device
 The RTL2832 device object. More...
 The RTL2832 device object. More...
 
pthread_t _thread
 The thread object. More...
 The thread object. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

Implements a uint_8 I/Q source for RTL2832 based TV dongles.

+

This source runs in its own thread, hence the user does not need to trigger the reception of the next data chunk explicitly. The reception is started by calling the start method and stopped by calling the stop method.

Constructor & Destructor Documentation

@@ -288,8 +290,8 @@ Additional Inherited Members
Parameters
- - + +
frequencySpecifies the tuner frequency.
sample_rateSpecifies the sample rate.
device_idxSpecifies the device to be used.
sample_rateSpecifies the sample rate in Hz.
device_idxSpecifies the device to be used. The numDevices and deviceName static method can be used to select the desired device index.
@@ -364,7 +366,7 @@ Additional Inherited Members
- +
@@ -372,7 +374,7 @@ Additional Inherited Members
- + @@ -386,7 +388,7 @@ Additional Inherited Members
void * RTLSource::__rtl_srd_parallel_main void * RTLSource::__rtl_sdr_parallel_main ( void *  ctx)
-

Prallel routine to receive some data from the device.

+

Parallel routine to receive some data from the device.

@@ -505,7 +507,7 @@ Additional Inherited Members
-

Returns the freuency of the tuner.

+

Returns the tuner frequency.

@@ -875,15 +877,15 @@ Additional Inherited Members
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_raw_buffer-members.html b/classsdr_1_1_raw_buffer-members.html index 9bcf732..41f1295 100644 --- a/classsdr_1_1_raw_buffer-members.html +++ b/classsdr_1_1_raw_buffer-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -122,9 +123,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_raw_buffer.html b/classsdr_1_1_raw_buffer.html index b6f4e4c..33ad603 100644 --- a/classsdr_1_1_raw_buffer.html +++ b/classsdr_1_1_raw_buffer.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RawBuffer Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -111,93 +112,94 @@ Inheritance diagram for sdr::RawBuffer:
sdr::Buffer< CScalar > sdr::Buffer< CSScalar > sdr::Buffer< float > -sdr::Buffer< oScalar > -sdr::Buffer< Scalar > -sdr::Buffer< SScalar > -sdr::Buffer< std::complex< double > > -sdr::Buffer< std::complex< float > > -sdr::Buffer< std::complex< oScalar > > -sdr::Buffer< std::complex< Scalar > > -sdr::Buffer< std::complex< SScalar > > -sdr::Buffer< uint8_t > -sdr::Buffer< T > -sdr::RawRingBuffer +sdr::Buffer< int16_t > +sdr::Buffer< oScalar > +sdr::Buffer< Scalar > +sdr::Buffer< SScalar > +sdr::Buffer< std::complex< double > > +sdr::Buffer< std::complex< float > > +sdr::Buffer< std::complex< oScalar > > +sdr::Buffer< std::complex< Scalar > > +sdr::Buffer< std::complex< SScalar > > +sdr::Buffer< uint8_t > +sdr::Buffer< T > +sdr::RawRingBuffer - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 RawBuffer ()
 Constructs an empty buffer. More...
 Constructs an empty buffer. More...
 
 RawBuffer (char *data, size_t offset, size_t len)
 Constructor from unowned data. More...
 Constructor from unowned data. More...
 
 RawBuffer (size_t N, BufferOwner *owner=0)
 Constructs a buffer and allocates N bytes. More...
 Constructs a buffer and allocates N bytes. More...
 
 RawBuffer (const RawBuffer &other)
 Copy constructor. More...
 Copy constructor. More...
 
 RawBuffer (const RawBuffer &other, size_t offset, size_t len)
 Creates a new view on the buffer. More...
 Creates a new view on the buffer. More...
 
virtual ~RawBuffer ()
 Destructor. More...
 Destructor. More...
 
const RawBufferoperator= (const RawBuffer &other)
 Assignment. More...
 Assignment. More...
 
char * ptr () const
 Returns the pointer to the data (w/o view). More...
 Returns the pointer to the data (w/o view). More...
 
char * data () const
 Returns the pointer to the data of the buffer view. More...
 Returns the pointer to the data of the buffer view. More...
 
size_t bytesOffset () const
 Returns the offset of the data by the view. More...
 Returns the offset of the data by the view. More...
 
size_t bytesLen () const
 Returns the size of the buffer by the view. More...
 Returns the size of the buffer by the view. More...
 
size_t storageSize () const
 Returns the raw buffer size in bytes. More...
 Returns the raw buffer size in bytes. More...
 
bool isEmpty () const
 Returns true if the buffer is invalid/empty. More...
 Returns true if the buffer is invalid/empty. More...
 
void ref () const
 Increment reference counter. More...
 Increment reference counter. More...
 
void unref ()
 Dereferences the buffer. More...
 Dereferences the buffer. More...
 
int refCount () const
 Returns the reference counter. More...
 Returns the reference counter. More...
 
bool isUnused () const
 We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
 We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
 
- + - + - + - + - + - +

Protected Attributes

char * _ptr
 Holds the pointer to the data or 0, if buffer is empty. More...
 Holds the pointer to the data or 0, if buffer is empty. More...
 
size_t _storage_size
 Holds the size of the buffer in bytes. More...
 Holds the size of the buffer in bytes. More...
 
size_t _b_offset
 Holds the offset of the buffer in bytes. More...
 Holds the offset of the buffer in bytes. More...
 
size_t _b_length
 Holds the length of the buffer (view) in bytes. More...
 Holds the length of the buffer (view) in bytes. More...
 
int * _refcount
 The reference counter. More...
 The reference counter. More...
 
BufferOwner_owner
 Holds a weak reference the buffer owner. More...
 Holds a weak reference the buffer owner. More...
 

Detailed Description

@@ -482,7 +484,7 @@ Protected Attributes
-

We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner holds the only reference to the buffer.

+

We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner holds the only reference to the buffer.

@@ -755,15 +757,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_raw_buffer.png b/classsdr_1_1_raw_buffer.png index 1ec86f8..2a7c011 100644 Binary files a/classsdr_1_1_raw_buffer.png and b/classsdr_1_1_raw_buffer.png differ diff --git a/classsdr_1_1_raw_ring_buffer-members.html b/classsdr_1_1_raw_ring_buffer-members.html index e5f9f32..3059b29 100644 --- a/classsdr_1_1_raw_ring_buffer-members.html +++ b/classsdr_1_1_raw_ring_buffer-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -136,9 +137,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_raw_ring_buffer.html b/classsdr_1_1_raw_ring_buffer.html index 278fe91..1990089 100644 --- a/classsdr_1_1_raw_ring_buffer.html +++ b/classsdr_1_1_raw_ring_buffer.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RawRingBuffer Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,123 +117,123 @@ Inheritance diagram for sdr::RawRingBuffer:

Public Member Functions

 RawRingBuffer () - Empty constructor. More...
+ Empty constructor. More...
   RawRingBuffer (size_t size) - Constructs a raw ring buffer with size size. More...
+ Constructs a raw ring buffer with size size. More...
   RawRingBuffer (const RawRingBuffer &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~RawRingBuffer () - Destructor. More...
+ Destructor. More...
  const RawRingBufferoperator= (const RawRingBuffer &other) - Assignment operator, turns this ring buffer into a reference to the other one. More...
+ Assignment operator, turns this ring buffer into a reference to the other one. More...
  char & operator[] (int idx) - Element access. More...
+ Element access. More...
  size_t bytesLen () const - Returns the number of bytes available for reading. More...
+ Returns the number of bytes available for reading. More...
  size_t bytesFree () const - Returns the number of free bytes in the ring buffer. More...
+ Returns the number of free bytes in the ring buffer. More...
  bool put (const RawBuffer &src) - Puts the given data into the ring-buffer. More...
+ Puts the given data into the ring-buffer. More...
  bool take (const RawBuffer &dest, size_t N) - Take N bytes from the ring buffer and store it into the given buffer dest. More...
+ Take N bytes from the ring buffer and store it into the given buffer dest. More...
  void drop (size_t N) - Drops at most N bytes from the buffer. More...
+ Drops at most N bytes from the buffer. More...
  void clear () - Clear the ring-buffer. More...
+ Clear the ring-buffer. More...
  void resize (size_t N) - Resizes the ring buffer. More...
+ Resizes the ring buffer. More...
  - Public Member Functions inherited from sdr::RawBuffer  RawBuffer () - Constructs an empty buffer. More...
+ Constructs an empty buffer. More...
   RawBuffer (char *data, size_t offset, size_t len) - Constructor from unowned data. More...
+ Constructor from unowned data. More...
   RawBuffer (size_t N, BufferOwner *owner=0) - Constructs a buffer and allocates N bytes. More...
+ Constructs a buffer and allocates N bytes. More...
   RawBuffer (const RawBuffer &other) - Copy constructor. More...
+ Copy constructor. More...
   RawBuffer (const RawBuffer &other, size_t offset, size_t len) - Creates a new view on the buffer. More...
+ Creates a new view on the buffer. More...
  virtual ~RawBuffer () - Destructor. More...
+ Destructor. More...
  const RawBufferoperator= (const RawBuffer &other) - Assignment. More...
+ Assignment. More...
  char * ptr () const - Returns the pointer to the data (w/o view). More...
+ Returns the pointer to the data (w/o view). More...
  char * data () const - Returns the pointer to the data of the buffer view. More...
+ Returns the pointer to the data of the buffer view. More...
  size_t bytesOffset () const - Returns the offset of the data by the view. More...
+ Returns the offset of the data by the view. More...
  size_t bytesLen () const - Returns the size of the buffer by the view. More...
+ Returns the size of the buffer by the view. More...
  size_t storageSize () const - Returns the raw buffer size in bytes. More...
+ Returns the raw buffer size in bytes. More...
  bool isEmpty () const - Returns true if the buffer is invalid/empty. More...
+ Returns true if the buffer is invalid/empty. More...
  void ref () const - Increment reference counter. More...
+ Increment reference counter. More...
  void unref () - Dereferences the buffer. More...
+ Dereferences the buffer. More...
  int refCount () const - Returns the reference counter. More...
+ Returns the reference counter. More...
  bool isUnused () const - We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
+ We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
  - + - + - + - + - + - + - + - +

Protected Attributes

size_t _take_idx
 The current read pointer. More...
 The current read pointer. More...
 
size_t _b_stored
 Offset of the write pointer relative to the _take_idx ptr, such that the number of stored bytes is _b_stored and the write index is (_take_idx+_b_stored) % _storage_size. More...
 Offset of the write pointer relative to the _take_idx ptr, such that the number of stored bytes is _b_stored and the write index is (_take_idx+_b_stored) % _storage_size. More...
 
- Protected Attributes inherited from sdr::RawBuffer
char * _ptr
 Holds the pointer to the data or 0, if buffer is empty. More...
 Holds the pointer to the data or 0, if buffer is empty. More...
 
size_t _storage_size
 Holds the size of the buffer in bytes. More...
 Holds the size of the buffer in bytes. More...
 
size_t _b_offset
 Holds the offset of the buffer in bytes. More...
 Holds the offset of the buffer in bytes. More...
 
size_t _b_length
 Holds the length of the buffer (view) in bytes. More...
 Holds the length of the buffer (view) in bytes. More...
 
int * _refcount
 The reference counter. More...
 The reference counter. More...
 
BufferOwner_owner
 Holds a weak reference the buffer owner. More...
 Holds a weak reference the buffer owner. More...
 

Detailed Description

@@ -494,7 +495,7 @@ Protected Attributes

Puts the given data into the ring-buffer.

The size of src must be smaller or equal to the number of free bytes. Returns true if the data was written successfully to the buffer.

-
Todo:
Allow overwrite
+
Todo:
Allow overwrite
@@ -608,15 +609,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_real_imag_part-members.html b/classsdr_1_1_real_imag_part-members.html index 1d083ac..9bc6e02 100644 --- a/classsdr_1_1_real_imag_part-members.html +++ b/classsdr_1_1_real_imag_part-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -124,9 +125,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_real_imag_part.html b/classsdr_1_1_real_imag_part.html index e8b4c03..34e4a54 100644 --- a/classsdr_1_1_real_imag_part.html +++ b/classsdr_1_1_real_imag_part.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RealImagPart< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,95 +120,95 @@ Inheritance diagram for sdr::RealImagPart< Scalar >:

Public Member Functions

 RealImagPart (bool select_real, double scale=1.0) - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Processes the incomming data. More...
+ Processes the incomming data. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - +

Protected Attributes

Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
bool _select_real
 Real/Imag selection. More...
 Real/Imag selection. More...
 
double _scale
 The scale. More...
 The scale. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::RealImagPart< Scalar >

Extracts the real or imaginary part of a complex valued data stream.

@@ -396,14 +397,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_real_part-members.html b/classsdr_1_1_real_part-members.html index f3a644f..72d4341 100644 --- a/classsdr_1_1_real_part-members.html +++ b/classsdr_1_1_real_part-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_real_part.html b/classsdr_1_1_real_part.html index b82558e..d3ae054 100644 --- a/classsdr_1_1_real_part.html +++ b/classsdr_1_1_real_part.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RealPart< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,97 +118,97 @@ Inheritance diagram for sdr::RealPart< Scalar >:

Public Member Functions

 RealPart (double scale=1.0) - Constructor. More...
+ Constructor. More...
  - Public Member Functions inherited from sdr::RealImagPart< Scalar >  RealImagPart (bool select_real, double scale=1.0) - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite) - Processes the incomming data. More...
+ Processes the incomming data. More...
  - Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- Protected Attributes inherited from sdr::RealImagPart< Scalar >
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
bool _select_real
 Real/Imag selection. More...
 Real/Imag selection. More...
 
double _scale
 The scale. More...
 The scale. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::RealPart< Scalar >

Selects the real part of a complex signal.

@@ -241,14 +242,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_ring_buffer-members.html b/classsdr_1_1_ring_buffer-members.html index b75d57a..55288b0 100644 --- a/classsdr_1_1_ring_buffer-members.html +++ b/classsdr_1_1_ring_buffer-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -148,9 +149,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_ring_buffer.html b/classsdr_1_1_ring_buffer.html index 0a76490..d12445a 100644 --- a/classsdr_1_1_ring_buffer.html +++ b/classsdr_1_1_ring_buffer.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RingBuffer< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,174 +117,174 @@ Inheritance diagram for sdr::RingBuffer< Scalar >:

Public Member Functions

 RingBuffer () - Empty constructor. More...
+ Empty constructor. More...
   RingBuffer (size_t N) - Constructs a ring buffer of size N. More...
+ Constructs a ring buffer of size N. More...
   RingBuffer (const RingBuffer< Scalar > &other) - Copy constructor, creates a reference to the other ring buffer. More...
+ Copy constructor, creates a reference to the other ring buffer. More...
  virtual ~RingBuffer () - Destructor. More...
+ Destructor. More...
  const RingBuffer< Scalar > & operator= (const RingBuffer< Scalar > &other) - Assigment operator, turns this buffer into a reference to the other ring buffer. More...
+ Assigment operator, turns this buffer into a reference to the other ring buffer. More...
  Scalar & operator[] (int idx) - Element access. More...
+ Element access. More...
  size_t stored () const - Returns the number of stored elements. More...
+ Returns the number of stored elements. More...
  size_t free () const - Returns the number of free elements. More...
+ Returns the number of free elements. More...
  size_t size () const - Returns the size of the ring buffer. More...
+ Returns the size of the ring buffer. More...
  bool put (const Buffer< Scalar > &data) - Puts the given elements into the ring buffer. More...
+ Puts the given elements into the ring buffer. More...
  bool take (const Buffer< Scalar > &dest, size_t N) - Takes N elements from the buffer and stores them into dest. More...
+ Takes N elements from the buffer and stores them into dest. More...
  void drop (size_t N) - Drops N elements from the ring buffer. More...
+ Drops N elements from the ring buffer. More...
  void resize (size_t N) - Resizes the ring buffer to N elements. More...
+ Resizes the ring buffer to N elements. More...
  - Public Member Functions inherited from sdr::RawRingBuffer  RawRingBuffer () - Empty constructor. More...
+ Empty constructor. More...
   RawRingBuffer (size_t size) - Constructs a raw ring buffer with size size. More...
+ Constructs a raw ring buffer with size size. More...
   RawRingBuffer (const RawRingBuffer &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~RawRingBuffer () - Destructor. More...
+ Destructor. More...
  const RawRingBufferoperator= (const RawRingBuffer &other) - Assignment operator, turns this ring buffer into a reference to the other one. More...
+ Assignment operator, turns this ring buffer into a reference to the other one. More...
  char & operator[] (int idx) - Element access. More...
+ Element access. More...
  size_t bytesLen () const - Returns the number of bytes available for reading. More...
+ Returns the number of bytes available for reading. More...
  size_t bytesFree () const - Returns the number of free bytes in the ring buffer. More...
+ Returns the number of free bytes in the ring buffer. More...
  bool put (const RawBuffer &src) - Puts the given data into the ring-buffer. More...
+ Puts the given data into the ring-buffer. More...
  bool take (const RawBuffer &dest, size_t N) - Take N bytes from the ring buffer and store it into the given buffer dest. More...
+ Take N bytes from the ring buffer and store it into the given buffer dest. More...
  void drop (size_t N) - Drops at most N bytes from the buffer. More...
+ Drops at most N bytes from the buffer. More...
  void clear () - Clear the ring-buffer. More...
+ Clear the ring-buffer. More...
  void resize (size_t N) - Resizes the ring buffer. More...
+ Resizes the ring buffer. More...
  - Public Member Functions inherited from sdr::RawBuffer  RawBuffer () - Constructs an empty buffer. More...
+ Constructs an empty buffer. More...
   RawBuffer (char *data, size_t offset, size_t len) - Constructor from unowned data. More...
+ Constructor from unowned data. More...
   RawBuffer (size_t N, BufferOwner *owner=0) - Constructs a buffer and allocates N bytes. More...
+ Constructs a buffer and allocates N bytes. More...
   RawBuffer (const RawBuffer &other) - Copy constructor. More...
+ Copy constructor. More...
   RawBuffer (const RawBuffer &other, size_t offset, size_t len) - Creates a new view on the buffer. More...
+ Creates a new view on the buffer. More...
  virtual ~RawBuffer () - Destructor. More...
+ Destructor. More...
  const RawBufferoperator= (const RawBuffer &other) - Assignment. More...
+ Assignment. More...
  char * ptr () const - Returns the pointer to the data (w/o view). More...
+ Returns the pointer to the data (w/o view). More...
  char * data () const - Returns the pointer to the data of the buffer view. More...
+ Returns the pointer to the data of the buffer view. More...
  size_t bytesOffset () const - Returns the offset of the data by the view. More...
+ Returns the offset of the data by the view. More...
  size_t bytesLen () const - Returns the size of the buffer by the view. More...
+ Returns the size of the buffer by the view. More...
  size_t storageSize () const - Returns the raw buffer size in bytes. More...
+ Returns the raw buffer size in bytes. More...
  bool isEmpty () const - Returns true if the buffer is invalid/empty. More...
+ Returns true if the buffer is invalid/empty. More...
  void ref () const - Increment reference counter. More...
+ Increment reference counter. More...
  void unref () - Dereferences the buffer. More...
+ Dereferences the buffer. More...
  int refCount () const - Returns the reference counter. More...
+ Returns the reference counter. More...
  bool isUnused () const - We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
+ We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner holds the only reference to the buffer. More...
  - + - + - + - + - + - + - + - + - + - +

Protected Attributes

size_t _size
 The size of the ring buffer. More...
 The size of the ring buffer. More...
 
size_t _stored
 The number of stored elements. More...
 The number of stored elements. More...
 
- Protected Attributes inherited from sdr::RawRingBuffer
size_t _take_idx
 The current read pointer. More...
 The current read pointer. More...
 
size_t _b_stored
 Offset of the write pointer relative to the _take_idx ptr, such that the number of stored bytes is _b_stored and the write index is (_take_idx+_b_stored) % _storage_size. More...
 Offset of the write pointer relative to the _take_idx ptr, such that the number of stored bytes is _b_stored and the write index is (_take_idx+_b_stored) % _storage_size. More...
 
- Protected Attributes inherited from sdr::RawBuffer
char * _ptr
 Holds the pointer to the data or 0, if buffer is empty. More...
 Holds the pointer to the data or 0, if buffer is empty. More...
 
size_t _storage_size
 Holds the size of the buffer in bytes. More...
 Holds the size of the buffer in bytes. More...
 
size_t _b_offset
 Holds the offset of the buffer in bytes. More...
 Holds the offset of the buffer in bytes. More...
 
size_t _b_length
 Holds the length of the buffer (view) in bytes. More...
 Holds the length of the buffer (view) in bytes. More...
 
int * _refcount
 The reference counter. More...
 The reference counter. More...
 
BufferOwner_owner
 Holds a weak reference the buffer owner. More...
 Holds a weak reference the buffer owner. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::RingBuffer< Scalar >

A simple typed ring-buffer.

@@ -710,14 +711,14 @@ template<class Scalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_runtime_error-members.html b/classsdr_1_1_runtime_error-members.html index b5933a4..f9aeaee 100644 --- a/classsdr_1_1_runtime_error-members.html +++ b/classsdr_1_1_runtime_error-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_runtime_error.html b/classsdr_1_1_runtime_error.html index 292fd80..d4b4590 100644 --- a/classsdr_1_1_runtime_error.html +++ b/classsdr_1_1_runtime_error.html @@ -3,15 +3,16 @@ - + libsdr: sdr::RuntimeError Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,26 +115,26 @@ Inheritance diagram for sdr::RuntimeError:

Public Member Functions

 RuntimeError () - Constructor. More...
+ Constructor. More...
   RuntimeError (const RuntimeError &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~RuntimeError () throw () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::SDRError  SDRError () - Constructor. More...
+ Constructor. More...
   SDRError (const SDRError &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~SDRError () throw () - Destructor. More...
+ Destructor. More...
  virtual const char * what () const throw () - Implements the std::exception interface. More...
+ Implements the std::exception interface. More...
 

Detailed Description

@@ -222,14 +223,14 @@ Public Member Functions
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_s_d_r_error-members.html b/classsdr_1_1_s_d_r_error-members.html index f2fbfb7..6de3698 100644 --- a/classsdr_1_1_s_d_r_error-members.html +++ b/classsdr_1_1_s_d_r_error-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -103,9 +104,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_s_d_r_error.html b/classsdr_1_1_s_d_r_error.html index e8fb5f2..532ab83 100644 --- a/classsdr_1_1_s_d_r_error.html +++ b/classsdr_1_1_s_d_r_error.html @@ -3,15 +3,16 @@ - + libsdr: sdr::SDRError Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,16 +116,16 @@ Inheritance diagram for sdr::SDRError:

Public Member Functions

 SDRError () - Constructor. More...
+ Constructor. More...
   SDRError (const SDRError &other) - Copy constructor. More...
+ Copy constructor. More...
  virtual ~SDRError () throw () - Destructor. More...
+ Destructor. More...
  virtual const char * what () const throw () - Implements the std::exception interface. More...
+ Implements the std::exception interface. More...
 

Detailed Description

@@ -245,14 +246,14 @@ Public Member Functions
The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_scale-members.html b/classsdr_1_1_scale-members.html index 91e59c9..d70229c 100644 --- a/classsdr_1_1_scale-members.html +++ b/classsdr_1_1_scale-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_scale.html b/classsdr_1_1_scale.html index 2d2fa98..891aa77 100644 --- a/classsdr_1_1_scale.html +++ b/classsdr_1_1_scale.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Scale< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,98 +118,98 @@ Inheritance diagram for sdr::Scale< Scalar >:

Public Member Functions

 Scale (float scale=1, Scalar shift=0) - Constructs the scaling node. More...
+ Constructs the scaling node. More...
  virtual ~Scale () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the scaleing node. More...
+ Configures the scaleing node. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Performs the scaleing. More...
+ Performs the scaleing. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - +

Protected Attributes

Buffer< Scalar > _buffer
 The output buffer, unused if the scaling is performed in-place. More...
 The output buffer, unused if the scaling is performed in-place. More...
 
float _scale
 The scaling. More...
 The scaling. More...
 
Scalar _shift
 Alternative formulation for the scaling, using integer shift operators. More...
 Alternative formulation for the scaling, using integer shift operators. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::Scale< Scalar >

Simple scaling node.

@@ -423,14 +424,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_sig_gen-members.html b/classsdr_1_1_sig_gen-members.html index 8e5f39f..264a3bc 100644 --- a/classsdr_1_1_sig_gen-members.html +++ b/classsdr_1_1_sig_gen-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_sig_gen.html b/classsdr_1_1_sig_gen.html index db95a3f..6ed8461 100644 --- a/classsdr_1_1_sig_gen.html +++ b/classsdr_1_1_sig_gen.html @@ -3,15 +3,16 @@ - + libsdr: sdr::SigGen< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,96 +116,96 @@ Inheritance diagram for sdr::SigGen< Scalar >:

Public Member Functions

 SigGen (double samplerate, size_t buffersize, double tmax=-1) - Constructs the function generator. More...
+ Constructs the function generator. More...
  virtual ~SigGen () - Destructor. More...
+ Destructor. More...
  void next () - Computes the next buffer. More...
+ Computes the next buffer. More...
  void addSine (double freq, double ampl=1, double phase=0) - Add a sine function to the function generator. More...
+ Add a sine function to the function generator. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - + - +

Protected Attributes

double _sampleRate
 The sample rate of the function generator. More...
 The sample rate of the function generator. More...
 
double _dt
 The sample period. More...
 The sample period. More...
 
double _t
 The current time. More...
 The current time. More...
 
double _tMax
 The maximum time. More...
 The maximum time. More...
 
double _scale
 The scaling of the signal. More...
 The scaling of the signal. More...
 
std::list< std::vector< double > > _signals
 A list of functions. More...
 A list of functions. More...
 
size_t _bufferSize
 The size of the output buffer. More...
 The size of the output buffer. More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::SigGen< Scalar >

Arbitrary function generator.

@@ -547,14 +548,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_signed_to_unsigned-members.html b/classsdr_1_1_signed_to_unsigned-members.html index 17b9b30..129c1a4 100644 --- a/classsdr_1_1_signed_to_unsigned-members.html +++ b/classsdr_1_1_signed_to_unsigned-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -99,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); _buffersdr::SignedToUnsignedprotected _configsdr::Sourceprotected _eossdr::Sourceprotected - _processsdr::SignedToUnsignedprotected + _processsdr::SignedToUnsignedprotected _process_int16(const RawBuffer &in, const RawBuffer &out)sdr::SignedToUnsignedprotected _process_int8(const RawBuffer &in, const RawBuffer &out)sdr::SignedToUnsignedprotected _sinkssdr::Sourceprotected @@ -123,9 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_signed_to_unsigned.html b/classsdr_1_1_signed_to_unsigned.html index f24a0fc..c6c78f3 100644 --- a/classsdr_1_1_signed_to_unsigned.html +++ b/classsdr_1_1_signed_to_unsigned.html @@ -3,15 +3,16 @@ - + libsdr: sdr::SignedToUnsigned Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,87 +118,87 @@ Inheritance diagram for sdr::SignedToUnsigned:

Public Member Functions

 SignedToUnsigned () - Constructor with optional scaleing. More...
+ Constructor with optional scaleing. More...
  virtual ~SignedToUnsigned () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the cast node. More...
+ Configures the cast node. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Performs the cast. More...
+ Performs the cast. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - +

Protected Member Functions

void _process_int8 (const RawBuffer &in, const RawBuffer &out)
 Performs the int8 -> uint8 cast. More...
 Performs the int8 -> uint8 cast. More...
 
void _process_int16 (const RawBuffer &in, const RawBuffer &out)
 Performs the int16 -> uint16 cast. More...
 Performs the int16 -> uint16 cast. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- - - + + + - + - + - + - +

Protected Attributes

void(SignedToUnsigned::* _process )(const RawBuffer &in, const RawBuffer &out)
 Type-cast callback. More...
 
void(SignedToUnsigned::* _process )(const RawBuffer &in, const RawBuffer &out)
 Type-cast callback. More...
 
RawBuffer _buffer
 The output buffer, unused if the cast is performed in-place. More...
 The output buffer, unused if the cast is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

@@ -407,7 +408,7 @@ Protected Attributes - +
@@ -415,7 +416,7 @@ Protected Attributes @@ -430,15 +431,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_sink-members.html b/classsdr_1_1_sink-members.html index 97e7fef..0e0d006 100644 --- a/classsdr_1_1_sink-members.html +++ b/classsdr_1_1_sink-members.html @@ -3,15 +3,16 @@ - +libsdr: Member List + @@ -32,7 +33,7 @@
- +
void(SignedToUnsigned::* sdr::SignedToUnsigned::_process)(const RawBuffer &in, const RawBuffer &out)void(SignedToUnsigned::* sdr::SignedToUnsigned::_process) (const RawBuffer &in, const RawBuffer &out)
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages
+
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_sink.html b/classsdr_1_1_sink.html index 3498cde..1aa0d98 100644 --- a/classsdr_1_1_sink.html +++ b/classsdr_1_1_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Sink< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -130,30 +131,30 @@ Inheritance diagram for sdr::Sink< Scalar >:

Public Member Functions

 Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite)=0 - Needs to be implemented by any sub-type to process the received data. More...
+ Needs to be implemented by any sub-type to process the received data. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg)=0 - Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
+ Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::Sink< Scalar >

Typed sink.

@@ -290,19 +291,19 @@ template<class Scalar>

Needs to be implemented by any sub-type to process the received data.

-

Implemented in sdr::DebugDump< Scalar >, sdr::DebugStore< Scalar >, sdr::AGC< Scalar >, sdr::Scale< Scalar >, sdr::StreamSink< Scalar >, sdr::FreqShift< Scalar >, sdr::BaseBand< Scalar >, sdr::FMDeemph< Scalar >, sdr::Cast< iScalar, oScalar >, sdr::Varicode, sdr::InpolSubSampler< iScalar, oScalar >, sdr::ToComplex< iScalar, oScalar >, sdr::FMDemod< iScalar, oScalar >, sdr::FIRFilter< Scalar, FilterCoeffs >, sdr::FIRFilter< Scalar, FIRBandPassCoeffs >, sdr::FIRFilter< Scalar, FIRBandStopCoeffs >, sdr::FIRFilter< Scalar, FIRHighPassCoeffs >, sdr::FIRFilter< Scalar, FIRLowPassCoeffs >, sdr::IQBalance< Scalar >, sdr::FilterSource< Scalar >, sdr::USBDemod< Scalar >, sdr::IQBaseBand< Scalar >, sdr::BPSK31< Scalar >, sdr::WavSink< Scalar >, sdr::FilterSink< Scalar >, sdr::SubSample< Scalar >, sdr::BufferNode< Scalar >, sdr::AMDemod< Scalar >, sdr::BufferNode< std::complex< Scalar > >, sdr::RealImagPart< Scalar >, and sdr::CombineSink< Scalar >.

+

Implemented in sdr::TextDump, sdr::DebugDump< Scalar >, sdr::DebugStore< Scalar >, sdr::AGC< Scalar >, sdr::Scale< Scalar >, sdr::StreamSink< Scalar >, sdr::FreqShift< Scalar >, sdr::BaseBand< Scalar >, sdr::FMDeemph< Scalar >, sdr::Cast< iScalar, oScalar >, sdr::Varicode, sdr::InpolSubSampler< iScalar, oScalar >, sdr::ToComplex< iScalar, oScalar >, sdr::FMDemod< iScalar, oScalar >, sdr::FIRFilter< Scalar, FilterCoeffs >, sdr::FIRFilter< Scalar, FIRBandPassCoeffs >, sdr::FIRFilter< Scalar, FIRBandStopCoeffs >, sdr::FIRFilter< Scalar, FIRHighPassCoeffs >, sdr::FIRFilter< Scalar, FIRLowPassCoeffs >, sdr::IQBalance< Scalar >, sdr::FilterSource< Scalar >, sdr::USBDemod< Scalar >, sdr::IQBaseBand< Scalar >, sdr::BPSK31< Scalar >, sdr::WavSink< Scalar >, sdr::FilterSink< Scalar >, sdr::SubSample< Scalar >, sdr::AMDemod< Scalar >, sdr::BufferNode< Scalar >, sdr::BufferNode< std::complex< Scalar > >, sdr::RealImagPart< Scalar >, sdr::CombineSink< Scalar >, sdr::Baudot, sdr::AFSK, and sdr::AX25.


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_sink_base-members.html b/classsdr_1_1_sink_base-members.html index df865b7..42bd391 100644 --- a/classsdr_1_1_sink_base-members.html +++ b/classsdr_1_1_sink_base-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -103,9 +104,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_sink_base.html b/classsdr_1_1_sink_base.html index b82929c..f6f7373 100644 --- a/classsdr_1_1_sink_base.html +++ b/classsdr_1_1_sink_base.html @@ -3,15 +3,16 @@ - + libsdr: sdr::SinkBase Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -107,32 +108,33 @@ Inheritance diagram for sdr::SinkBase:
-sdr::AutoCast< Scalar > +sdr::AutoCast< Scalar > sdr::PortSink sdr::Proxy sdr::SignedToUnsigned sdr::Sink< Scalar > sdr::UnsignedToSigned -sdr::Sink< iScalar > -sdr::Sink< std::complex< iScalar > > -sdr::Sink< std::complex< Scalar > > -sdr::Sink< uint8_t > +sdr::Sink< int16_t > +sdr::Sink< iScalar > +sdr::Sink< std::complex< iScalar > > +sdr::Sink< std::complex< Scalar > > +sdr::Sink< uint8_t >
- + - + - + - +

Public Member Functions

 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)=0
 Needs to be implemented by any sub-type to process the received data. More...
 Needs to be implemented by any sub-type to process the received data. More...
 
virtual void config (const Config &src_cfg)=0
 Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
 Needs to be implemented by any sub-type to check and perform the configuration of the node. More...
 

Detailed Description

@@ -206,7 +208,7 @@ Public Member Functions

Needs to be implemented by any sub-type to check and perform the configuration of the node.

-

Implemented in sdr::DebugDump< Scalar >, sdr::DebugStore< Scalar >, sdr::AGC< Scalar >, sdr::Scale< Scalar >, sdr::StreamSink< Scalar >, sdr::FreqShift< Scalar >, sdr::SignedToUnsigned, sdr::UnsignedToSigned, sdr::BaseBand< Scalar >, sdr::FMDeemph< Scalar >, sdr::Proxy, sdr::Varicode, sdr::Cast< iScalar, oScalar >, sdr::ToComplex< iScalar, oScalar >, sdr::InpolSubSampler< iScalar, oScalar >, sdr::FMDemod< iScalar, oScalar >, sdr::FIRFilter< Scalar, FilterCoeffs >, sdr::FIRFilter< Scalar, FIRBandPassCoeffs >, sdr::FIRFilter< Scalar, FIRBandStopCoeffs >, sdr::FIRFilter< Scalar, FIRHighPassCoeffs >, sdr::FIRFilter< Scalar, FIRLowPassCoeffs >, sdr::IQBalance< Scalar >, sdr::FilterSource< Scalar >, sdr::USBDemod< Scalar >, sdr::IQBaseBand< Scalar >, sdr::BPSK31< Scalar >, sdr::WavSink< Scalar >, sdr::FilterSink< Scalar >, sdr::PortSink, sdr::SubSample< Scalar >, sdr::AMDemod< Scalar >, sdr::CombineSink< Scalar >, sdr::BufferNode< Scalar >, sdr::BufferNode< std::complex< Scalar > >, sdr::RealImagPart< Scalar >, and sdr::AutoCast< Scalar >.

+

Implemented in sdr::TextDump, sdr::DebugDump< Scalar >, sdr::DebugStore< Scalar >, sdr::AGC< Scalar >, sdr::Scale< Scalar >, sdr::StreamSink< Scalar >, sdr::FreqShift< Scalar >, sdr::SignedToUnsigned, sdr::UnsignedToSigned, sdr::BaseBand< Scalar >, sdr::Proxy, sdr::FMDeemph< Scalar >, sdr::Varicode, sdr::Cast< iScalar, oScalar >, sdr::ToComplex< iScalar, oScalar >, sdr::InpolSubSampler< iScalar, oScalar >, sdr::FMDemod< iScalar, oScalar >, sdr::FIRFilter< Scalar, FilterCoeffs >, sdr::FIRFilter< Scalar, FIRBandPassCoeffs >, sdr::FIRFilter< Scalar, FIRBandStopCoeffs >, sdr::FIRFilter< Scalar, FIRHighPassCoeffs >, sdr::FIRFilter< Scalar, FIRLowPassCoeffs >, sdr::IQBalance< Scalar >, sdr::FilterSource< Scalar >, sdr::IQBaseBand< Scalar >, sdr::USBDemod< Scalar >, sdr::BPSK31< Scalar >, sdr::WavSink< Scalar >, sdr::FilterSink< Scalar >, sdr::PortSink, sdr::Baudot, sdr::SubSample< Scalar >, sdr::AMDemod< Scalar >, sdr::CombineSink< Scalar >, sdr::AFSK, sdr::BufferNode< Scalar >, sdr::BufferNode< std::complex< Scalar > >, sdr::AX25, sdr::RealImagPart< Scalar >, and sdr::AutoCast< Scalar >.

@@ -244,20 +246,20 @@ Public Member Functions

Needs to be implemented by any sub-type to process the received data.

-

Implemented in sdr::SignedToUnsigned, sdr::UnsignedToSigned, sdr::Proxy, sdr::Sink< Scalar >, sdr::Sink< std::complex< Scalar > >, sdr::Sink< std::complex< iScalar > >, sdr::Sink< uint8_t >, sdr::Sink< iScalar >, sdr::AutoCast< Scalar >, and sdr::PortSink.

+

Implemented in sdr::SignedToUnsigned, sdr::UnsignedToSigned, sdr::Proxy, sdr::Sink< Scalar >, sdr::Sink< int16_t >, sdr::Sink< std::complex< Scalar > >, sdr::Sink< std::complex< iScalar > >, sdr::Sink< uint8_t >, sdr::Sink< iScalar >, sdr::AutoCast< Scalar >, and sdr::PortSink.


The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_sink_base.png b/classsdr_1_1_sink_base.png index c0d2c12..9ff5dd0 100644 Binary files a/classsdr_1_1_sink_base.png and b/classsdr_1_1_sink_base.png differ diff --git a/classsdr_1_1_source-members.html b/classsdr_1_1_source-members.html index 1045afd..a721e55 100644 --- a/classsdr_1_1_source-members.html +++ b/classsdr_1_1_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -113,9 +114,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_source.html b/classsdr_1_1_source.html index e2cbe97..d05feee 100644 --- a/classsdr_1_1_source.html +++ b/classsdr_1_1_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Source Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,93 +115,96 @@ Inheritance diagram for sdr::Source:
sdr::FIRFilter< Scalar, FIRBandStopCoeffs > sdr::FIRFilter< Scalar, FIRHighPassCoeffs > sdr::FIRFilter< Scalar, FIRLowPassCoeffs > -sdr::AGC< Scalar > -sdr::AMDemod< Scalar > -sdr::AutoCast< Scalar > -sdr::BaseBand< Scalar > -sdr::BlockingSource -sdr::BPSK31< Scalar > -sdr::BufferNode< Scalar > -sdr::Cast< iScalar, oScalar > -sdr::FilterSink< Scalar > -sdr::FilterSource< Scalar > -sdr::FIRFilter< Scalar, FilterCoeffs > -sdr::FMDeemph< Scalar > -sdr::FMDemod< iScalar, oScalar > -sdr::FreqShift< Scalar > -sdr::GWNSource< Scalar > -sdr::InpolSubSampler< iScalar, oScalar > -sdr::Interleave< Scalar > -sdr::IQBalance< Scalar > -sdr::IQBaseBand< Scalar > -sdr::IQSigGen< Scalar > -sdr::PortSource< Scalar > -sdr::Proxy -sdr::RealImagPart< Scalar > -sdr::RTLSource -sdr::Scale< Scalar > -sdr::SigGen< Scalar > -sdr::SignedToUnsigned -sdr::StreamSource< Scalar > -sdr::SubSample< Scalar > -sdr::ToComplex< iScalar, oScalar > -sdr::UnsignedToSigned -sdr::USBDemod< Scalar > -sdr::Varicode -sdr::WavSource +sdr::AFSK +sdr::AGC< Scalar > +sdr::AMDemod< Scalar > +sdr::AutoCast< Scalar > +sdr::AX25 +sdr::BaseBand< Scalar > +sdr::Baudot +sdr::BlockingSource +sdr::BPSK31< Scalar > +sdr::BufferNode< Scalar > +sdr::Cast< iScalar, oScalar > +sdr::FilterSink< Scalar > +sdr::FilterSource< Scalar > +sdr::FIRFilter< Scalar, FilterCoeffs > +sdr::FMDeemph< Scalar > +sdr::FMDemod< iScalar, oScalar > +sdr::FreqShift< Scalar > +sdr::GWNSource< Scalar > +sdr::InpolSubSampler< iScalar, oScalar > +sdr::Interleave< Scalar > +sdr::IQBalance< Scalar > +sdr::IQBaseBand< Scalar > +sdr::IQSigGen< Scalar > +sdr::PortSource< Scalar > +sdr::Proxy +sdr::RealImagPart< Scalar > +sdr::RTLSource +sdr::Scale< Scalar > +sdr::SigGen< Scalar > +sdr::SignedToUnsigned +sdr::StreamSource< Scalar > +sdr::SubSample< Scalar > +sdr::ToComplex< iScalar, oScalar > +sdr::UnsignedToSigned +sdr::USBDemod< Scalar > +sdr::Varicode +sdr::WavSource - + - + - + - + - + - + - + - + - +

Public Member Functions

 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - +

Protected Member Functions

void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - +

Protected Attributes

Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

@@ -566,15 +570,15 @@ template<class T >
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_source.png b/classsdr_1_1_source.png index 2518c79..0f36dce 100644 Binary files a/classsdr_1_1_source.png and b/classsdr_1_1_source.png differ diff --git a/classsdr_1_1_stream_log_handler-members.html b/classsdr_1_1_stream_log_handler-members.html index d4cecdd..6579399 100644 --- a/classsdr_1_1_stream_log_handler-members.html +++ b/classsdr_1_1_stream_log_handler-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -106,9 +107,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_stream_log_handler.html b/classsdr_1_1_stream_log_handler.html index 9a47182..9b95bb6 100644 --- a/classsdr_1_1_stream_log_handler.html +++ b/classsdr_1_1_stream_log_handler.html @@ -3,15 +3,16 @@ - + libsdr: sdr::StreamLogHandler Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,40 +109,40 @@ Inheritance diagram for sdr::StreamLogHandler:
-sdr::LogHandler +sdr::LogHandler
- + - + - + - +

Public Member Functions

 StreamLogHandler (std::ostream &stream, LogLevel level)
 Constructor. More...
 Constructor. More...
 
virtual ~StreamLogHandler ()
 Destructor. More...
 Destructor. More...
 
virtual void handle (const LogMessage &msg)
 Handles the message. More...
 Handles the message. More...
 
- Public Member Functions inherited from sdr::LogHandler
virtual ~LogHandler ()
 Destructor. More...
 Destructor. More...
 
- + - +

Protected Attributes

std::ostream & _stream
 The output stream. More...
 The output stream. More...
 
LogLevel _level
 The minimum log-level. More...
 The minimum log-level. More...
 
- +

Additional Inherited Members

- Protected Member Functions inherited from sdr::LogHandler
 LogHandler ()
 Hidden constructor. More...
 Hidden constructor. More...
 

Detailed Description

@@ -282,15 +283,15 @@ Additional Inherited Members
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_stream_sink-members.html b/classsdr_1_1_stream_sink-members.html index be1c608..ccec4ce 100644 --- a/classsdr_1_1_stream_sink-members.html +++ b/classsdr_1_1_stream_sink-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -108,9 +109,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_stream_sink.html b/classsdr_1_1_stream_sink.html index fa0f104..3d21c79 100644 --- a/classsdr_1_1_stream_sink.html +++ b/classsdr_1_1_stream_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::StreamSink< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,40 +117,40 @@ Inheritance diagram for sdr::StreamSink< Scalar >:

Public Member Functions

 StreamSink (std::ostream &stream) - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the raw sink. More...
+ Configures the raw sink. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Dumps the buffer into the stream as raw data. More...
+ Dumps the buffer into the stream as raw data. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - +

Protected Attributes

std::ostream & _stream
 The output stream. More...
 The output stream. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::StreamSink< Scalar >

Serializes the incomming buffers as raw data.

@@ -280,14 +281,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_stream_source-members.html b/classsdr_1_1_stream_source-members.html index 0531c58..9f5e911 100644 --- a/classsdr_1_1_stream_source-members.html +++ b/classsdr_1_1_stream_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,9 +118,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_stream_source.html b/classsdr_1_1_stream_source.html index c04e0a3..9cdabb5 100644 --- a/classsdr_1_1_stream_source.html +++ b/classsdr_1_1_stream_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::StreamSource< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,72 +116,72 @@ Inheritance diagram for sdr::StreamSource< Scalar >:

Public Member Functions

 StreamSource (std::istream &stream, double sample_rate=1, size_t buffersize=1024) - Constructs a raw input source. More...
+ Constructs a raw input source. More...
  void next () - Reads the next chunk. More...
+ Reads the next chunk. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - +

Protected Attributes

std::istream & _stream
 The input stream. More...
 The input stream. More...
 
Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::StreamSource< Scalar >

Reads raw samples from an imput stream, (ie a file).

@@ -308,14 +309,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_sub_sample-members.html b/classsdr_1_1_sub_sample-members.html index 1742a37..89b4e6d 100644 --- a/classsdr_1_1_sub_sample-members.html +++ b/classsdr_1_1_sub_sample-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -129,9 +130,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_sub_sample.html b/classsdr_1_1_sub_sample.html index 1fa2020..f368e15 100644 --- a/classsdr_1_1_sub_sample.html +++ b/classsdr_1_1_sub_sample.html @@ -3,15 +3,16 @@ - + libsdr: sdr::SubSample< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,113 +120,113 @@ Inheritance diagram for sdr::SubSample< Scalar >:

Public Types

typedef Traits< Scalar >::SScalar SScalar - The super-scalar of the input type. More...
+ The super-scalar of the input type. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 SubSample (size_t n)
 Constructs a sub-sampler. More...
 Constructs a sub-sampler. More...
 
 SubSample (double Fs)
 Constructs a sub-sampler by target sample rate. More...
 Constructs a sub-sampler by target sample rate. More...
 
virtual void config (const Config &src_cfg)
 Configures the sub-sampler. More...
 Configures the sub-sampler. More...
 
virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite)
 Performs the sub-sampling on the given buffer. More...
 Performs the sub-sampling on the given buffer. More...
 
- Public Member Functions inherited from sdr::Sink< Scalar >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _process (const Buffer< Scalar > &in, const Buffer< Scalar > &out)
 Performs the sub-sampling from in into out. More...
 Performs the sub-sampling from in into out. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - + - + - + - + - +

Protected Attributes

size_t _n
 The sub-sampling, n=1 means no sub-sampling at all. More...
 The sub-sampling, n=1 means no sub-sampling at all. More...
 
double _oFs
 Target sample rate. More...
 Target sample rate. More...
 
SScalar _last
 The last value. More...
 The last value. More...
 
size_t _left
 How many samples are left. More...
 How many samples are left. More...
 
Buffer< Scalar > _buffer
 The output buffer, unused if the sub-sampling is performed in-place. More...
 The output buffer, unused if the sub-sampling is performed in-place. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::SubSample< Scalar >

Simple averaging sub-sampler.

@@ -534,14 +535,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_to_complex-members.html b/classsdr_1_1_to_complex-members.html index 428bf81..0ba647e 100644 --- a/classsdr_1_1_to_complex-members.html +++ b/classsdr_1_1_to_complex-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -123,9 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_to_complex.html b/classsdr_1_1_to_complex.html index e33f872..dfb8592 100644 --- a/classsdr_1_1_to_complex.html +++ b/classsdr_1_1_to_complex.html @@ -3,15 +3,16 @@ - + libsdr: sdr::ToComplex< iScalar, oScalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,92 +118,92 @@ Inheritance diagram for sdr::ToComplex< iScalar, oScalar >:

Public Member Functions

 ToComplex (double scale=1.0) - Constructor. More...
+ Constructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< iScalar > &buffer, bool allow_overwrite) - Casts the input real buffer into the complex output buffer. More...
+ Casts the input real buffer into the complex output buffer. More...
  - Public Member Functions inherited from sdr::Sink< iScalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - +

Protected Attributes

double _scale
 The scale. More...
 The scale. More...
 
Buffer< std::complex< oScalar > > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

-

template<class iScalar, class oScalar = iScalar>
+

template<class iScalar, class oScalar = iScalar>
class sdr::ToComplex< iScalar, oScalar >

Tiny helper node to transform a real part into a complex, including a possible type-cast.

@@ -356,14 +357,14 @@ template<class iScalar , class oScalar = iScalar>


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits.html b/classsdr_1_1_traits.html index 04384f4..1762a25 100644 --- a/classsdr_1_1_traits.html +++ b/classsdr_1_1_traits.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -99,20 +100,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

#include <traits.hh>

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::Traits< Scalar >

Forward declaration of type tratis template.

For each supported type, uint8_t, std::comple<uint8_t>, int8_t, std::complex<uint8_t>, uint16_t, std::complex<uint16_t>, int16_t, std::complex<int16_t>, float, std::complex<float>, double and std::complex<double>, the Traits template povides the Scalar type (the template argument type), its real type (i.e. for the type std::complex<int16_t> it would be int16_t), its super scalar (i.e. for the int16_t, it would be int32_t but for float it is flaot again) which allows for safe multiplications of these values, the scale mapping the interval [-1,1] to the values of the scalar type, the bit shift from the scalar type to the super scalar type and the type id for the scalar.


The documentation for this class was generated from the following file:
    -
  • /home/hannes/sdr/libsdr/src/traits.hh
  • +
  • /Users/hannes/Uni/Elektronik/sdr/libsdr/src/traits.hh

diff --git a/classsdr_1_1_traits_3_01double_01_4-members.html b/classsdr_1_1_traits_3_01double_01_4-members.html index 0f3c7bc..bee9773 100644 --- a/classsdr_1_1_traits_3_01double_01_4-members.html +++ b/classsdr_1_1_traits_3_01double_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01double_01_4.html b/classsdr_1_1_traits_3_01double_01_4.html index 05e3c74..53f6f69 100644 --- a/classsdr_1_1_traits_3_01double_01_4.html +++ b/classsdr_1_1_traits_3_01double_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< double > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef double Scalar - The scalar type. More...
+ The scalar type. More...
  typedef double RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef double SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_f64
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< double >

Template specialization of type traits for float scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< double >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01float_01_4-members.html b/classsdr_1_1_traits_3_01float_01_4-members.html index c3c2eb5..52e3e76 100644 --- a/classsdr_1_1_traits_3_01float_01_4-members.html +++ b/classsdr_1_1_traits_3_01float_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01float_01_4.html b/classsdr_1_1_traits_3_01float_01_4.html index 2888acd..2488e9f 100644 --- a/classsdr_1_1_traits_3_01float_01_4.html +++ b/classsdr_1_1_traits_3_01float_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< float > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef float Scalar - The Scalar type. More...
+ The Scalar type. More...
  typedef float RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef float SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_f32
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< float >

Template specialization of type traits for float scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< float >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01int16__t_01_4-members.html b/classsdr_1_1_traits_3_01int16__t_01_4-members.html index 30bb306..856a410 100644 --- a/classsdr_1_1_traits_3_01int16__t_01_4-members.html +++ b/classsdr_1_1_traits_3_01int16__t_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01int16__t_01_4.html b/classsdr_1_1_traits_3_01int16__t_01_4.html index 042eb34..27741ca 100644 --- a/classsdr_1_1_traits_3_01int16__t_01_4.html +++ b/classsdr_1_1_traits_3_01int16__t_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< int16_t > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef int16_t Scalar - The scalar type. More...
+ The scalar type. More...
  typedef int16_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef int32_t SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_s16
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< int16_t >

Template specialization of type traits for int16_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< int16_t >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01int8__t_01_4-members.html b/classsdr_1_1_traits_3_01int8__t_01_4-members.html index b5a30bf..c728e65 100644 --- a/classsdr_1_1_traits_3_01int8__t_01_4-members.html +++ b/classsdr_1_1_traits_3_01int8__t_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01int8__t_01_4.html b/classsdr_1_1_traits_3_01int8__t_01_4.html index 14d134e..e20f61e 100644 --- a/classsdr_1_1_traits_3_01int8__t_01_4.html +++ b/classsdr_1_1_traits_3_01int8__t_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< int8_t > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef int8_t Scalar - The scalar type. More...
+ The scalar type. More...
  typedef int8_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef int16_t SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_s8
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< int8_t >

Template specialization of type tratis for int8_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< int8_t >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4-members.html index ff87df3..789cb83 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4.html index 9b5bb20..9e88c03 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01double_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< double > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< double > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef double RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef std::complex< double > SScalar - The compute (super) scalar type. More...
+ The compute (super) scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cf64
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< double > >

Template specialization of type traits for complex float scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< double > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4-members.html index 0821665..5344326 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4.html index 4e9ac7b..724274d 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01float_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< float > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< float > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef float RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef std::complex< float > SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cf32
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< float > >

Template specialization of type traits for complex float scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< float > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4-members.html index 5f0b18d..588b5c0 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4.html index b518a59..39547f6 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01int16__t_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< int16_t > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< int16_t > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef int16_t RScalar - The real Scalar type. More...
+ The real Scalar type. More...
  typedef std::complex< int32_t > SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cs16
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< int16_t > >

Template specialization of type traits for complex int16_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< int16_t > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4-members.html index 1ca92f9..c770743 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4.html index 87c34a6..8ab7b8d 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01int8__t_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< int8_t > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< int8_t > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef int8_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef std::complex< int16_t > SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cs8
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< int8_t > >

Template specialization of type tratis for complex int8_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< int8_t > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4-members.html index 5bf7ce3..9cbc0e5 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4.html index 9d17c53..bce6359 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint16__t_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< uint16_t > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< uint16_t > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef uint16_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef std::complex< uint32_t > SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cu16
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< uint16_t > >

Template specialization of type traits for complex uint16_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< uint16_t > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4-members.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4-members.html index 5f2f89e..b48f79c 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4-members.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4.html b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4.html index 4724726..2c25217 100644 --- a/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4.html +++ b/classsdr_1_1_traits_3_01std_1_1complex_3_01uint8__t_01_4_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< std::complex< uint8_t > > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef std::complex< uint8_t > Scalar - The scalar type. More...
+ The scalar type. More...
  typedef uint8_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef std::complex< uint16_t > SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_cu8
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< std::complex< uint8_t > >

Template specialization of type tratis for complex uint8_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< std::complex< uint8_t > >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01uint16__t_01_4-members.html b/classsdr_1_1_traits_3_01uint16__t_01_4-members.html index 075bb21..7e1e100 100644 --- a/classsdr_1_1_traits_3_01uint16__t_01_4-members.html +++ b/classsdr_1_1_traits_3_01uint16__t_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01uint16__t_01_4.html b/classsdr_1_1_traits_3_01uint16__t_01_4.html index f06f0b5..31e3248 100644 --- a/classsdr_1_1_traits_3_01uint16__t_01_4.html +++ b/classsdr_1_1_traits_3_01uint16__t_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< uint16_t > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef uint16_t Scalar - The scalar type. More...
+ The scalar type. More...
  typedef uint16_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef uint32_t SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 The scaleing factor from floating point to integer expressed as 2^exp. More...
 
static const Config::Type scalarId = Config::Type_u16
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< uint16_t >

Template specialization of type traits for uint16_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< uint16_t >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_traits_3_01uint8__t_01_4-members.html b/classsdr_1_1_traits_3_01uint8__t_01_4-members.html index f5b1b9d..5f8fa68 100644 --- a/classsdr_1_1_traits_3_01uint8__t_01_4-members.html +++ b/classsdr_1_1_traits_3_01uint8__t_01_4-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -105,9 +106,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_traits_3_01uint8__t_01_4.html b/classsdr_1_1_traits_3_01uint8__t_01_4.html index 87c3e7d..5d0ab08 100644 --- a/classsdr_1_1_traits_3_01uint8__t_01_4.html +++ b/classsdr_1_1_traits_3_01uint8__t_01_4.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Traits< uint8_t > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -106,29 +107,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Public Types

typedef uint8_t Scalar - The scalar type. More...
+ The scalar type. More...
  typedef uint8_t RScalar - The real scalar type. More...
+ The real scalar type. More...
  typedef uint16_t SScalar - The compute scalar type. More...
+ The compute scalar type. More...
  - + - + - +

Static Public Attributes

static const float scale
 The scaleing factor from floating point to integer. More...
 The scaleing factor from floating point to integer. More...
 
static const size_t shift
 Shift from Scalar to SScalar. More...
 Shift from Scalar to SScalar. More...
 
static const Config::Type scalarId = Config::Type_u8
 The type id of the scalar type. More...
 The type id of the scalar type. More...
 

Detailed Description

-

template<>
+

template<>
class sdr::Traits< uint8_t >

Template specialization of type tratis for uint8_t scalar.

@@ -243,14 +244,14 @@ class sdr::Traits< uint8_t >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_u_s_b_demod-members.html b/classsdr_1_1_u_s_b_demod-members.html index 71c2132..627bfe4 100644 --- a/classsdr_1_1_u_s_b_demod-members.html +++ b/classsdr_1_1_u_s_b_demod-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -126,9 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_u_s_b_demod.html b/classsdr_1_1_u_s_b_demod.html index 7f40e36..e66c918 100644 --- a/classsdr_1_1_u_s_b_demod.html +++ b/classsdr_1_1_u_s_b_demod.html @@ -3,15 +3,16 @@ - + libsdr: sdr::USBDemod< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -119,104 +120,104 @@ Inheritance diagram for sdr::USBDemod< Scalar >:

Public Types

typedef std::complex< Scalar > CScalar - The complex input scalar. More...
+ The complex input scalar. More...
  typedef Traits< Scalar >::SScalar SScalar - The real compute scalar. More...
+ The real compute scalar. More...
  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 USBDemod ()
 Constructor. More...
 Constructor. More...
 
virtual ~USBDemod ()
 Destructor. More...
 Destructor. More...
 
virtual void config (const Config &src_cfg)
 Configures the USB demodulator. More...
 Configures the USB demodulator. More...
 
virtual void process (const Buffer< CScalar > &buffer, bool allow_overwrite)
 Performs the demodulation. More...
 Performs the demodulation. More...
 
- Public Member Functions inherited from sdr::Sink< std::complex< Scalar > >
 Sink ()
 Constructor. More...
 Constructor. More...
 
virtual ~Sink ()
 Drestructor. More...
 Drestructor. More...
 
virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite)
 Re-implemented from SinkBase. More...
 Re-implemented from SinkBase. More...
 
- Public Member Functions inherited from sdr::SinkBase
 SinkBase ()
 Constructor. More...
 Constructor. More...
 
virtual ~SinkBase ()
 Destructor. More...
 Destructor. More...
 
- Public Member Functions inherited from sdr::Source
 Source ()
 Constructor. More...
 Constructor. More...
 
virtual ~Source ()
 Destructor. More...
 Destructor. More...
 
virtual void send (const RawBuffer &buffer, bool allow_overwrite=false)
 Sends the given buffer to all connected sinks. More...
 Sends the given buffer to all connected sinks. More...
 
void connect (SinkBase *sink, bool direct=false)
 Connect this source to a sink. More...
 Connect this source to a sink. More...
 
void disconnect (SinkBase *sink)
 Disconnect a sink again. More...
 Disconnect a sink again. More...
 
virtual void setConfig (const Config &config)
 Stores the configuration and propergates it if the configuration has been changed. More...
 Stores the configuration and propergates it if the configuration has been changed. More...
 
virtual double sampleRate () const
 Returns the configured sample rate or 0 otherwise. More...
 Returns the configured sample rate or 0 otherwise. More...
 
virtual Config::Type type () const
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
 
template<class T >
void addEOS (T *instance, void(T::*function)())
 Adds a callback to the end-of-stream signal of the source. More...
 Adds a callback to the end-of-stream signal of the source. More...
 
- + - + - +

Protected Member Functions

void _process (const Buffer< std::complex< Scalar > > &in, const Buffer< Scalar > &out)
 The actual demodulation. More...
 The actual demodulation. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- + - + - + - +

Protected Attributes

Buffer< Scalar > _buffer
 The output buffer. More...
 The output buffer. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::USBDemod< Scalar >

SSB upper side band (USB) demodulator from an I/Q signal.

@@ -443,14 +444,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_unsigned_to_signed-members.html b/classsdr_1_1_unsigned_to_signed-members.html index e0a2513..0a3f2a8 100644 --- a/classsdr_1_1_unsigned_to_signed-members.html +++ b/classsdr_1_1_unsigned_to_signed-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -99,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); _buffersdr::UnsignedToSignedprotected _configsdr::Sourceprotected _eossdr::Sourceprotected - _processsdr::UnsignedToSignedprotected + _processsdr::UnsignedToSignedprotected _process_int16(const RawBuffer &in, const RawBuffer &out)sdr::UnsignedToSignedprotected _process_int8(const RawBuffer &in, const RawBuffer &out)sdr::UnsignedToSignedprotected _scalesdr::UnsignedToSignedprotected @@ -124,9 +125,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_unsigned_to_signed.html b/classsdr_1_1_unsigned_to_signed.html index 57816f8..f84ab5b 100644 --- a/classsdr_1_1_unsigned_to_signed.html +++ b/classsdr_1_1_unsigned_to_signed.html @@ -3,15 +3,16 @@ - + libsdr: sdr::UnsignedToSigned Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,90 +118,90 @@ Inheritance diagram for sdr::UnsignedToSigned:

Public Member Functions

 UnsignedToSigned (float scale=1.0) - Constructor with optional scaleing. More...
+ Constructor with optional scaleing. More...
  virtual ~UnsignedToSigned () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the cast node. More...
+ Configures the cast node. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Performs the cast. More...
+ Performs the cast. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - +

Protected Member Functions

void _process_int8 (const RawBuffer &in, const RawBuffer &out)
 Performs the cast for uint8 -> int8. More...
 Performs the cast for uint8 -> int8. More...
 
void _process_int16 (const RawBuffer &in, const RawBuffer &out)
 Performs the cast for uint16 -> int16. More...
 Performs the cast for uint16 -> int16. More...
 
- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 
- - - + + + - + - + - + - + - +

Protected Attributes

void(UnsignedToSigned::* _process )(const RawBuffer &in, const RawBuffer &out)
 Type-cast callback. More...
 
void(UnsignedToSigned::* _process )(const RawBuffer &in, const RawBuffer &out)
 Type-cast callback. More...
 
RawBuffer _buffer
 The output buffer, unused if the cast can be performed in-place. More...
 The output buffer, unused if the cast can be performed in-place. More...
 
float _scale
 Holds the scaleing. More...
 Holds the scaleing. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 

Detailed Description

@@ -411,7 +412,7 @@ Protected Attributes - +
@@ -419,7 +420,7 @@ Protected Attributes @@ -456,15 +457,15 @@ Protected Attributes
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_varicode-members.html b/classsdr_1_1_varicode-members.html index 458cd43..36b2972 100644 --- a/classsdr_1_1_varicode-members.html +++ b/classsdr_1_1_varicode-members.html @@ -3,15 +3,16 @@ - +libsdr: Member List + @@ -32,7 +33,7 @@
- +
void(UnsignedToSigned::* sdr::UnsignedToSigned::_process)(const RawBuffer &in, const RawBuffer &out)void(UnsignedToSigned::* sdr::UnsignedToSigned::_process) (const RawBuffer &in, const RawBuffer &out)
- + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages
+
@@ -125,9 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_varicode.html b/classsdr_1_1_varicode.html index 89e4101..f03909e 100644 --- a/classsdr_1_1_varicode.html +++ b/classsdr_1_1_varicode.html @@ -3,15 +3,16 @@ - + libsdr: sdr::Varicode Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -117,94 +118,94 @@ Inheritance diagram for sdr::Varicode:

Public Member Functions

 Varicode () - Constructor. More...
+ Constructor. More...
  virtual ~Varicode () - Destructor. More...
+ Destructor. More...
  virtual void config (const Config &src_cfg) - Configures the node. More...
+ Configures the node. More...
  virtual void process (const Buffer< uint8_t > &buffer, bool allow_overwrite) - Converts the input bit stream to ASCII chars. More...
+ Converts the input bit stream to ASCII chars. More...
  - Public Member Functions inherited from sdr::Sink< uint8_t >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - +

Protected Attributes

uint16_t _value
 The shift register of the last received bits. More...
 The shift register of the last received bits. More...
 
Buffer< uint8_t > _buffer
 The output buffer. More...
 The output buffer. More...
 
std::map< uint16_t, char > _code_table
 The conversion table. More...
 The conversion table. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

@@ -388,15 +389,15 @@ Additional Inherited Members
The documentation for this class was generated from the following files: diff --git a/classsdr_1_1_wav_sink-members.html b/classsdr_1_1_wav_sink-members.html index 8322e82..1bfc243 100644 --- a/classsdr_1_1_wav_sink-members.html +++ b/classsdr_1_1_wav_sink-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -114,9 +115,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_wav_sink.html b/classsdr_1_1_wav_sink.html index cd3110b..fba404d 100644 --- a/classsdr_1_1_wav_sink.html +++ b/classsdr_1_1_wav_sink.html @@ -3,15 +3,16 @@ - + libsdr: sdr::WavSink< Scalar > Class Template Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -116,58 +117,58 @@ Inheritance diagram for sdr::WavSink< Scalar >:

Public Member Functions

 WavSink (const std::string &filename) - Constructor, filename specifies the file name, the WAV data is stored into. More...
+ Constructor, filename specifies the file name, the WAV data is stored into. More...
  virtual ~WavSink () - Destructor, closes the file if not done yet. More...
+ Destructor, closes the file if not done yet. More...
  virtual void config (const Config &src_cfg) - Configures the sink. More...
+ Configures the sink. More...
  void close () - Completes the WAV header and closes the file. More...
+ Completes the WAV header and closes the file. More...
  virtual void process (const Buffer< Scalar > &buffer, bool allow_overwrite) - Writes some data into the WAV file. More...
+ Writes some data into the WAV file. More...
  - Public Member Functions inherited from sdr::Sink< Scalar >  Sink () - Constructor. More...
+ Constructor. More...
  virtual ~Sink () - Drestructor. More...
+ Drestructor. More...
  virtual void handleBuffer (const RawBuffer &buffer, bool allow_overwrite) - Re-implemented from SinkBase. More...
+ Re-implemented from SinkBase. More...
  - Public Member Functions inherited from sdr::SinkBase  SinkBase () - Constructor. More...
+ Constructor. More...
  virtual ~SinkBase () - Destructor. More...
+ Destructor. More...
  - + - + - + - + - +

Protected Attributes

std::fstream _file
 The file output stream. More...
 The file output stream. More...
 
uint16_t _bitsPerSample
 The number of bits per sample (depends on the template type). More...
 The number of bits per sample (depends on the template type). More...
 
uint32_t _frameCount
 The total number of frame counts. More...
 The total number of frame counts. More...
 
uint32_t _sampleRate
 The sample rate. More...
 The sample rate. More...
 
uint16_t _numChanels
 The number of chanels. More...
 The number of chanels. More...
 

Detailed Description

-

template<class Scalar>
+

template<class Scalar>
class sdr::WavSink< Scalar >

Stores the received buffers into a WAV file.

@@ -453,14 +454,14 @@ template<class Scalar >


The documentation for this class was generated from the following file: diff --git a/classsdr_1_1_wav_source-members.html b/classsdr_1_1_wav_source-members.html index c4e4a49..189fe6a 100644 --- a/classsdr_1_1_wav_source-members.html +++ b/classsdr_1_1_wav_source-members.html @@ -3,15 +3,16 @@ - + libsdr: Member List + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -128,9 +129,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/classsdr_1_1_wav_source.html b/classsdr_1_1_wav_source.html index 9494026..83e2a86 100644 --- a/classsdr_1_1_wav_source.html +++ b/classsdr_1_1_wav_source.html @@ -3,15 +3,16 @@ - + libsdr: sdr::WavSource Class Reference + @@ -32,7 +33,7 @@ - + @@ -74,7 +75,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -115,101 +116,101 @@ Inheritance diagram for sdr::WavSource:

Public Member Functions

 WavSource (size_t buffer_size=1024) - Constructor, buffer_size specified the output buffer size. More...
+ Constructor, buffer_size specified the output buffer size. More...
   WavSource (const std::string &filename, size_t buffer_size=1024) - Constructor with file name, buffer_size specified the output buffer size. More...
+ Constructor with file name, buffer_size specified the output buffer size. More...
  virtual ~WavSource () - Destructor. More...
+ Destructor. More...
  bool isOpen () const - Returns true if the file is open. More...
+ Returns true if the file is open. More...
  void open (const std::string &filename) - Open a new file. More...
+ Open a new file. More...
  void close () - Close the current file. More...
+ Close the current file. More...
  bool isReal () const - Returns true, if the input is real (stereo files are handled as I/Q signals). More...
+ Returns true, if the input is real (stereo files are handled as I/Q signals). More...
  void next () - Read the next data. More...
+ Read the next data. More...
  - Public Member Functions inherited from sdr::Source  Source () - Constructor. More...
+ Constructor. More...
  virtual ~Source () - Destructor. More...
+ Destructor. More...
  virtual void send (const RawBuffer &buffer, bool allow_overwrite=false) - Sends the given buffer to all connected sinks. More...
+ Sends the given buffer to all connected sinks. More...
  void connect (SinkBase *sink, bool direct=false) - Connect this source to a sink. More...
+ Connect this source to a sink. More...
  void disconnect (SinkBase *sink) - Disconnect a sink again. More...
+ Disconnect a sink again. More...
  virtual void setConfig (const Config &config) - Stores the configuration and propergates it if the configuration has been changed. More...
+ Stores the configuration and propergates it if the configuration has been changed. More...
  virtual double sampleRate () const - Returns the configured sample rate or 0 otherwise. More...
+ Returns the configured sample rate or 0 otherwise. More...
  virtual Config::Type type () const - Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
+ Returns the configured source type or Config::Type_UNDEFINED otherwise. More...
  template<class T > void addEOS (T *instance, void(T::*function)()) - Adds a callback to the end-of-stream signal of the source. More...
+ Adds a callback to the end-of-stream signal of the source. More...
  - + - + - + - + - + - + - + - + - + - +

Protected Attributes

std::fstream _file
 The input file stream. More...
 The input file stream. More...
 
RawBuffer _buffer
 The output buffer. More...
 The output buffer. More...
 
size_t _buffer_size
 The current buffer size. More...
 The current buffer size. More...
 
size_t _frame_count
 The number of available frames. More...
 The number of available frames. More...
 
Config::Type _type
 The type of the data in the WAV file. More...
 The type of the data in the WAV file. More...
 
double _sample_rate
 The sample rate. More...
 The sample rate. More...
 
size_t _frames_left
 The number of frames left to be read. More...
 The number of frames left to be read. More...
 
- Protected Attributes inherited from sdr::Source
Config _config
 Holds the source configuration, this can be updated by calling setConfig. More...
 Holds the source configuration, this can be updated by calling setConfig. More...
 
std::map< SinkBase *, bool > _sinks
 The connected sinks. More...
 The connected sinks. More...
 
std::list< DelegateInterface * > _eos
 The connected EOS singal handlers. More...
 The connected EOS singal handlers. More...
 
- + - +

Additional Inherited Members

- Protected Member Functions inherited from sdr::Source
void signalEOS ()
 Signals the EOS. More...
 Signals the EOS. More...
 
void propagateConfig (const Config &config)
 Propagates the given configuration to all connected sinks. More...
 Propagates the given configuration to all connected sinks. More...
 

Detailed Description

@@ -530,15 +531,15 @@ Additional Inherited Members
The documentation for this class was generated from the following files: diff --git a/combine_8hh_source.html b/combine_8hh_source.html index 62f12ff..ffd8927 100644 --- a/combine_8hh_source.html +++ b/combine_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/combine.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/combine.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_COMBINE_HH__
-
2 #define __SDR_COMBINE_HH__
-
3 
+
2 #define __SDR_COMBINE_HH__
+
3 
4 #include "config.hh"
5 #include "traits.hh"
6 #include "node.hh"
@@ -100,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
8 #include "logger.hh"
9 #include <limits>
10 
-
11 namespace sdr {
+
11 namespace sdr {
12 
13 template <class Scalar> class Combine;
14 
@@ -159,154 +160,157 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
79  virtual ~Combine() {
80  // Unref all buffers and free sinks
81  for (size_t i=0; i<_sinks.size(); i++) {
-
82  _buffers[i].unref(); delete _sinks[i];
-
83  }
-
84  _buffers.clear(); _sinks.clear();
-
85  }
-
86 
-
88  virtual void config(const Config &cfg) = 0;
-
90  virtual void process(std::vector< RingBuffer<Scalar> > &buffers, size_t N) = 0;
-
91 
-
92 
-
93 protected:
-
95  void notifyConfig(size_t idx, const Config &cfg)
-
96  {
-
97  // Requires type, sampleRate and buffer size
-
98  if (!cfg.hasType() || !cfg.hasSampleRate() || !cfg.hasBufferSize()) { return; }
-
99  // check or unify type
-
100  if (!_config.hasType()) { _config.setType(cfg.type()); }
-
101  else if (_config.type() != cfg.type()) {
-
102  ConfigError err;
-
103  err << "Can not configure Combine node: Invalid type of sink #" << idx
-
104  << " " << cfg.type() << ", expected " << _config.type();
-
105  throw err;
-
106  }
-
107  // Check sample rate
- -
109  else if (_config.sampleRate() != cfg.sampleRate()) {
-
110  ConfigError err;
-
111  err << "Can ont configure Combine node: Invalid sample rate of sink #" << idx
-
112  << " " << cfg.sampleRate() << ", expected " << _config.sampleRate();
-
113  throw err;
-
114  }
-
115  // Determine max buffer size
- -
117  else {
-
118  // Take maximum:
-
119  _config.setBufferSize(std::max(_config.bufferSize(), cfg.bufferSize()));
-
120  }
-
121  // Reallocate buffers
-
122  for (size_t i=0; i<_sinks.size(); i++) {
- -
124  }
-
125  // Propergate config
-
126  this->config(_config);
-
127  }
-
128 
-
130  void notifyData(size_t idx) {
-
131  // Determine minimum size of available data
-
132  size_t N = std::numeric_limits<size_t>::max();
-
133  for (size_t i=0; i<_sinks.size(); i++) {
-
134  N = std::min(N, _buffers[i].stored());
-
135  }
-
136  if (N > 0) { this->process(_buffers, N); }
-
137  }
-
138 
-
139 protected:
-
141  std::vector< RingBuffer<Scalar> > _buffers;
-
143  std::vector< CombineSink<Scalar> *> _sinks;
- -
146 
-
147  friend class CombineSink<Scalar>;
-
148 };
-
149 
-
150 
-
153 template <class Scalar>
-
154 class Interleave : public Combine<Scalar>, public Source
-
155 {
-
156 public:
-
158  Interleave(size_t N)
-
159  : Combine<Scalar>(N), Source(), _N(N), _buffer()
-
160  {
-
161  // pass...
-
162  }
-
163 
-
165  Sink<Scalar> *sink(size_t i) {
-
166  if (i >= _N) {
-
167  RuntimeError err;
-
168  err << "Interleave: Sink index " << i << " out of range [0," << _N << ")";
-
169  throw err;
-
170  }
-
171  return Combine<Scalar>::_sinks[i];
-
172  }
-
173 
-
175  virtual void config(const Config &cfg) {
-
176  //Requres type & buffer size
-
177  if (!cfg.hasType() || !cfg.hasBufferSize()) { return; }
-
178  // Check type
-
179  if (Config::typeId<Scalar>() != cfg.type()) {
-
180  ConfigError err;
-
181  err << "Can not configure Interleave node: Invalid source type " << cfg.type()
-
182  << ", expected " << Config::typeId<Scalar>();
-
183  throw err;
-
184  }
-
185  // Allocate buffer:
- -
187  // Propergate config
-
188  this->setConfig(Config(Config::typeId<Scalar>(), cfg.sampleRate(), _buffer.size(), 1));
-
189  }
-
190 
-
192  virtual void process(std::vector<RingBuffer<Scalar> > &buffers, size_t N) {
-
193  if (0 == N) { return; }
-
194  if (! _buffer.isUnused()) {
-
195 #ifdef SDR_DEBUG
-
196  LogMessage msg(LOG_WARNING);
-
197  msg << "Interleave: Output buffer in use: Drop " << _N << "x" << N
-
198  << " input values";
-
199  Logger::get().log(msg);
-
200 #endif
-
201  for (size_t i=0; i<buffers.size(); i++) { buffers[i].drop(N); }
-
202  return;
-
203  }
-
204  size_t num = std::min(_buffer.size()/_N,N);
-
205  // Interleave data
-
206  size_t idx = 0;
-
207  for (size_t i=0; i<num; i++) {
-
208  for (size_t j=0; j<_N; j++, idx++) {
-
209  _buffer[idx] = buffers[j][i];
-
210  }
-
211  }
-
212  // Drop num elements from all ring buffers
-
213  for (size_t i=0; i<_N; i++) {
-
214  buffers[i].drop(num);
-
215  }
-
216  // Send buffer
-
217  this->send(_buffer.head(num*_N));
-
218  }
-
219 
-
220 protected:
-
222  size_t _N;
- -
225 };
-
226 
-
227 }
-
228 #endif // __SDR_COMBINE_HH__
+
82  delete _sinks[i];
+
83  _buffers[i].unref();
+
84  }
+
85  _buffers.clear();
+
86  _sinks.clear();
+
87  }
+
88 
+
90  virtual void config(const Config &cfg) = 0;
+
92  virtual void process(std::vector< RingBuffer<Scalar> > &buffers, size_t N) = 0;
+
93 
+
94 
+
95 protected:
+
97  void notifyConfig(size_t idx, const Config &cfg)
+
98  {
+
99  // Requires type, sampleRate and buffer size
+
100  if (!cfg.hasType() || !cfg.hasSampleRate() || !cfg.hasBufferSize()) { return; }
+
101  // check or unify type
+
102  if (!_config.hasType()) { _config.setType(cfg.type()); }
+
103  else if (_config.type() != cfg.type()) {
+
104  ConfigError err;
+
105  err << "Can not configure Combine node: Invalid type of sink #" << idx
+
106  << " " << cfg.type() << ", expected " << _config.type();
+
107  throw err;
+
108  }
+
109  // Check sample rate
+ +
111  else if (_config.sampleRate() != cfg.sampleRate()) {
+
112  ConfigError err;
+
113  err << "Can ont configure Combine node: Invalid sample rate of sink #" << idx
+
114  << " " << cfg.sampleRate() << ", expected " << _config.sampleRate();
+
115  throw err;
+
116  }
+
117  // Determine max buffer size
+ +
119  else {
+
120  // Take maximum:
+
121  _config.setBufferSize(std::max(_config.bufferSize(), cfg.bufferSize()));
+
122  }
+
123  // Reallocate buffers
+
124  for (size_t i=0; i<_sinks.size(); i++) {
+ +
126  }
+
127  // Propergate config
+
128  this->config(_config);
+
129  }
+
130 
+
132  void notifyData(size_t idx) {
+
133  // Determine minimum size of available data
+
134  size_t N = std::numeric_limits<size_t>::max();
+
135  for (size_t i=0; i<_sinks.size(); i++) {
+
136  N = std::min(N, _buffers[i].stored());
+
137  }
+
138  if (N > 0) { this->process(_buffers, N); }
+
139  }
+
140 
+
141 protected:
+
143  std::vector< RingBuffer<Scalar> > _buffers;
+
145  std::vector< CombineSink<Scalar> *> _sinks;
+ +
148 
+
149  friend class CombineSink<Scalar>;
+
150 };
+
151 
+
152 
+
155 template <class Scalar>
+
156 class Interleave : public Combine<Scalar>, public Source
+
157 {
+
158 public:
+
160  Interleave(size_t N)
+
161  : Combine<Scalar>(N), Source(), _N(N), _buffer()
+
162  {
+
163  // pass...
+
164  }
+
165 
+
167  Sink<Scalar> *sink(size_t i) {
+
168  if (i >= _N) {
+
169  RuntimeError err;
+
170  err << "Interleave: Sink index " << i << " out of range [0," << _N << ")";
+
171  throw err;
+
172  }
+
173  return Combine<Scalar>::_sinks[i];
+
174  }
+
175 
+
177  virtual void config(const Config &cfg) {
+
178  //Requres type & buffer size
+
179  if (!cfg.hasType() || !cfg.hasBufferSize()) { return; }
+
180  // Check type
+
181  if (Config::typeId<Scalar>() != cfg.type()) {
+
182  ConfigError err;
+
183  err << "Can not configure Interleave node: Invalid source type " << cfg.type()
+
184  << ", expected " << Config::typeId<Scalar>();
+
185  throw err;
+
186  }
+
187  // Allocate buffer:
+ +
189  // Propergate config
+
190  this->setConfig(Config(Config::typeId<Scalar>(), cfg.sampleRate(), _buffer.size(), 1));
+
191  }
+
192 
+
194  virtual void process(std::vector<RingBuffer<Scalar> > &buffers, size_t N) {
+
195  if (0 == N) { return; }
+
196  if (! _buffer.isUnused()) {
+
197 #ifdef SDR_DEBUG
+
198  LogMessage msg(LOG_WARNING);
+
199  msg << "Interleave: Output buffer in use: Drop " << _N << "x" << N
+
200  << " input values";
+
201  Logger::get().log(msg);
+
202 #endif
+
203  for (size_t i=0; i<buffers.size(); i++) { buffers[i].drop(N); }
+
204  return;
+
205  }
+
206  size_t num = std::min(_buffer.size()/_N,N);
+
207  // Interleave data
+
208  size_t idx = 0;
+
209  for (size_t i=0; i<num; i++) {
+
210  for (size_t j=0; j<_N; j++, idx++) {
+
211  _buffer[idx] = buffers[j][i];
+
212  }
+
213  }
+
214  // Drop num elements from all ring buffers
+
215  for (size_t i=0; i<_N; i++) {
+
216  buffers[i].drop(num);
+
217  }
+
218  // Send buffer
+
219  this->send(_buffer.head(num*_N));
+
220  }
+
221 
+
222 protected:
+
224  size_t _N;
+ +
227 };
+
228 
+
229 }
+
230 #endif // __SDR_COMBINE_HH__
A collection of configuration information that is send by a source to all connected sinks to properga...
Definition: node.hh:35
-
virtual void config(const Config &cfg)
Configures the interleave node.
Definition: combine.hh:175
-
Interleaves several input streams.
Definition: combine.hh:154
+
virtual void config(const Config &cfg)
Configures the interleave node.
Definition: combine.hh:177
+
Interleaves several input streams.
Definition: combine.hh:156
size_t _index
The index of the sink within the combine node.
Definition: combine.hh:55
-
void notifyData(size_t idx)
Determines the minimum amount of data that is available on all ring buffers.
Definition: combine.hh:130
+
void notifyData(size_t idx)
Determines the minimum amount of data that is available on all ring buffers.
Definition: combine.hh:132
A simple typed ring-buffer.
Definition: buffer.hh:473
virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)
Sends the given buffer to all connected sinks.
Definition: node.cc:67
-
Buffer< Scalar > _buffer
The putput buffer.
Definition: combine.hh:224
+
Buffer< Scalar > _buffer
The putput buffer.
Definition: combine.hh:226
Typed sink.
Definition: node.hh:192
virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)
Handles the given buffer.
Definition: combine.hh:47
+
Definition: afsk.hh:6
virtual void config(const Config &cfg)=0
Needs to be overridden.
bool hasSampleRate() const
If true, the configuration has a sample rate.
Definition: node.hh:75
Generic source class.
Definition: node.hh:213
RingBuffer< Scalar > & _buffer
The input ring-buffer.
Definition: combine.hh:59
The runtime error class.
Definition: exception.hh:36
-
size_t _N
The number of sinks.
Definition: combine.hh:222
+
size_t _N
The number of sinks.
Definition: combine.hh:224
size_t size() const
Returns the number of elements of type T in this buffer.
Definition: buffer.hh:166
bool hasType() const
If true, the configuration has a type.
Definition: node.hh:69
virtual void process(std::vector< RingBuffer< Scalar > > &buffers, size_t N)=0
Needs to be overridden.
@@ -314,25 +318,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual void setConfig(const Config &config)
Stores the configuration and propergates it if the configuration has been changed.
Definition: node.cc:98
Buffer< T > head(size_t n) const
Returns a new view on this buffer.
Definition: buffer.hh:237
void log(const LogMessage &message)
Logs a message.
Definition: logger.cc:100
-
std::vector< RingBuffer< Scalar > > _buffers
The ring buffers of all combine sinks.
Definition: combine.hh:141
+
std::vector< RingBuffer< Scalar > > _buffers
The ring buffers of all combine sinks.
Definition: combine.hh:143
Type type() const
Returns the type.
Definition: node.hh:71
void setType(Type type)
Sets the type.
Definition: node.hh:73
-
std::vector< CombineSink< Scalar > * > _sinks
The combine sinks.
Definition: combine.hh:143
+
std::vector< CombineSink< Scalar > * > _sinks
The combine sinks.
Definition: combine.hh:145
virtual void config(const Config &src_cfg)
Configures the sink.
Definition: combine.hh:32
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
Combine< Scalar > * _parent
A reference to the combine node.
Definition: combine.hh:57
The configuration error class.
Definition: exception.hh:24
-
virtual void process(std::vector< RingBuffer< Scalar > > &buffers, size_t N)
Processes the data from all sinks.
Definition: combine.hh:192
-
A log message.
Definition: logger.hh:21
+
virtual void process(std::vector< RingBuffer< Scalar > > &buffers, size_t N)
Processes the data from all sinks.
Definition: combine.hh:194
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
Combine(size_t N)
Constructor, N specifies the number of sinks.
Definition: combine.hh:70
-
Interleave(size_t N)
Constructor.
Definition: combine.hh:158
+
Interleave(size_t N)
Constructor.
Definition: combine.hh:160
virtual ~CombineSink()
Destructor.
Definition: combine.hh:27
void setSampleRate(double rate)
Sets the sample rate.
Definition: node.hh:79
-
Sink< Scalar > * sink(size_t i)
Retunrs the i-th sink.
Definition: combine.hh:165
-
Config _config
The output configuration.
Definition: combine.hh:145
-
bool isUnused() const
We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner hol...
Definition: buffer.hh:87
-
void notifyConfig(size_t idx, const Config &cfg)
Unifies the configuration of all sinks.
Definition: combine.hh:95
+
Sink< Scalar > * sink(size_t i)
Retunrs the i-th sink.
Definition: combine.hh:167
+
Config _config
The output configuration.
Definition: combine.hh:147
+
bool isUnused() const
We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner hold...
Definition: buffer.hh:87
+
void notifyConfig(size_t idx, const Config &cfg)
Unifies the configuration of all sinks.
Definition: combine.hh:97
CombineSink(Combine< Scalar > *combine, size_t index, RingBuffer< Scalar > &buffer)
Constructor.
Definition: combine.hh:21
A single sink of a Combine node.
Definition: combine.hh:17
virtual ~Combine()
Destructor.
Definition: combine.hh:79
@@ -343,9 +347,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/demod_8hh_source.html b/demod_8hh_source.html index e644520..5f08d53 100644 --- a/demod_8hh_source.html +++ b/demod_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/demod.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/demod.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_DEMOD_HH__
-
2 #define __SDR_DEMOD_HH__
-
3 
+
2 #define __SDR_DEMOD_HH__
+
3 
4 #include "node.hh"
5 #include "traits.hh"
6 #include "config.hh"
@@ -101,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
9 #include "math.hh"
10 
11 
-
12 namespace sdr {
+
12 namespace sdr {
13 
14 
17 template <class Scalar>
@@ -109,404 +110,398 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
19  : public Sink< std::complex<Scalar> >, public Source
20 {
21 public:
-
23  AMDemod() : Sink< std::complex<Scalar> >(), Source()
+
23  AMDemod() : Sink< std::complex<Scalar> >(), Source()
24  {
25  // pass...
26  }
27 
29  virtual ~AMDemod() {
-
30  // pass...
-
31  }
-
32 
-
34  virtual void config(const Config &src_cfg) {
-
35  // Requires type & buffer size
-
36  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
-
37  // Check if buffer type matches template
-
38  if (Config::typeId< std::complex<Scalar> >() != src_cfg.type()) {
-
39  ConfigError err;
-
40  err << "Can not configure AMDemod: Invalid type " << src_cfg.type()
-
41  << ", expected " << Config::typeId< std::complex<Scalar> >();
-
42  throw err;
-
43  }
-
44  // Allocate buffer
-
45  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
-
46 
-
47  LogMessage msg(LOG_DEBUG);
-
48  msg << "Configure AMDemod: " << this << std::endl
-
49  << " input type: " << Traits< std::complex<Scalar> >::scalarId << std::endl
-
50  << " output type: " << Traits<Scalar>::scalarId << std::endl
-
51  << " sample rate: " << src_cfg.sampleRate() << std::endl
-
52  << " buffer size: " << src_cfg.bufferSize();
-
53  Logger::get().log(msg);
-
54 
-
55  // Propergate config
-
56  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(),
-
57  src_cfg.bufferSize(), src_cfg.numBuffers()));
-
58  }
-
59 
-
61  virtual void process(const Buffer<std::complex<Scalar> > &buffer, bool allow_overwrite)
-
62  {
-
63  // Drop buffer if output buffer is still in use:
-
64  if (! _buffer.isUnused()) {
-
65 #ifdef SDR_DEBUG
-
66  LogMessage msg(LOG_WARNING);
-
67  msg << __FILE__ << ": Output buffer still in use: Drop received buffer...";
-
68  Logger::get().log(msg);
-
69  return;
-
70 #endif
-
71  }
-
72 
-
73  Buffer<Scalar> out_buffer;
-
74  // If source allow to overwrite the buffer, use it otherwise rely on own buffer
-
75  if (allow_overwrite) { out_buffer = Buffer<Scalar>(buffer); }
-
76  else { out_buffer = _buffer; }
+
30  // free buffers
+
31  _buffer.unref();
+
32  }
+
33 
+
35  virtual void config(const Config &src_cfg) {
+
36  // Requires type & buffer size
+
37  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
+
38  // Check if buffer type matches template
+
39  if (Config::typeId< std::complex<Scalar> >() != src_cfg.type()) {
+
40  ConfigError err;
+
41  err << "Can not configure AMDemod: Invalid type " << src_cfg.type()
+
42  << ", expected " << Config::typeId< std::complex<Scalar> >();
+
43  throw err;
+
44  }
+
45 
+
46  // Unreference previous buffer
+
47  _buffer.unref();
+
48  // Allocate buffer
+
49  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
+
50 
+
51  LogMessage msg(LOG_DEBUG);
+
52  msg << "Configure AMDemod: " << this << std::endl
+
53  << " input type: " << Traits< std::complex<Scalar> >::scalarId << std::endl
+
54  << " output type: " << Traits<Scalar>::scalarId << std::endl
+
55  << " sample rate: " << src_cfg.sampleRate() << std::endl
+
56  << " buffer size: " << src_cfg.bufferSize();
+
57  Logger::get().log(msg);
+
58 
+
59  // Propergate config
+
60  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(),
+
61  src_cfg.bufferSize(), src_cfg.numBuffers()));
+
62  }
+
63 
+
65  virtual void process(const Buffer<std::complex<Scalar> > &buffer, bool allow_overwrite)
+
66  {
+
67  Buffer<Scalar> out_buffer;
+
68  // If source allow to overwrite the buffer, use it otherwise rely on own buffer
+
69  if (allow_overwrite) { out_buffer = Buffer<Scalar>(buffer); }
+
70  else { out_buffer = _buffer; }
+
71 
+
72  // Perform demodulation
+
73  for (size_t i=0; i<buffer.size(); i++) {
+
74  out_buffer[i] = std::sqrt(buffer[i].real()*buffer[i].real() +
+
75  buffer[i].imag()*buffer[i].imag());
+
76  }
77 
-
78  // Perform demodulation
-
79  for (size_t i=0; i<buffer.size(); i++) {
-
80  out_buffer[i] = std::sqrt(buffer[i].real()*buffer[i].real() +
-
81  buffer[i].imag()*buffer[i].imag());
-
82  }
-
83 
-
84  // If the source allowed to overwrite the buffer, this source will allow it too.
-
85  // If this source used the internal buffer (_buffer), it allows to overwrite it anyway.
-
86  this->send(out_buffer.head(buffer.size()), true);
-
87  }
+
78  // If the source allowed to overwrite the buffer, this source will allow it too.
+
79  // If this source used the internal buffer (_buffer), it allows to overwrite it anyway.
+
80  this->send(out_buffer.head(buffer.size()), true);
+
81  }
+
82 
+
83 protected:
+ +
86 };
+
87 
88 
-
89 protected:
- -
92 };
-
93 
-
94 
-
97 template <class Scalar>
-
98 class USBDemod
-
99  : public Sink< std::complex<Scalar> >, public Source
-
100 {
+
91 template <class Scalar>
+
92 class USBDemod
+
93  : public Sink< std::complex<Scalar> >, public Source
+
94 {
+
95 public:
+
97  typedef std::complex<Scalar> CScalar;
+
99  typedef typename Traits<Scalar>::SScalar SScalar;
+
100 
101 public:
-
103  typedef std::complex<Scalar> CScalar;
- -
106 
-
107 public:
- -
110  {
-
111  // pass...
-
112  }
-
113 
-
115  virtual ~USBDemod() {
-
116  // pass...
-
117  }
-
118 
-
120  virtual void config(const Config &src_cfg) {
-
121  // Requires type & buffer size
-
122  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
-
123  // Check if buffer type matches template
-
124  if (Config::typeId<CScalar>() != src_cfg.type()) {
-
125  ConfigError err;
-
126  err << "Can not configure USBDemod: Invalid type " << src_cfg.type()
-
127  << ", expected " << Config::typeId<CScalar>();
-
128  throw err;
-
129  }
-
130  // Allocate buffer
-
131  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
-
132 
-
133  LogMessage msg(LOG_DEBUG);
-
134  msg << "Configure USBDemod: " << this << std::endl
-
135  << " input type: " << Traits< std::complex<Scalar> >::scalarId << std::endl
-
136  << " output type: " << Traits<Scalar>::scalarId << std::endl
-
137  << " sample rate: " << src_cfg.sampleRate() << std::endl
-
138  << " buffer size: " << src_cfg.bufferSize();
-
139  Logger::get().log(msg);
-
140 
-
141  // Propergate config
-
142  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(),
-
143  src_cfg.bufferSize(), 1));
-
144  }
-
145 
-
147  virtual void process(const Buffer<CScalar> &buffer, bool allow_overwrite) {
-
148  if (allow_overwrite) {
-
149  // Process in-place
-
150  _process(buffer, Buffer<Scalar>(buffer));
-
151  } else if (_buffer.isUnused()) {
-
152  // Store result in buffer
-
153  _process(buffer, _buffer);
-
154  } else {
-
155  // Drop buffer
-
156 #ifdef SDR_DEBUG
-
157  LogMessage msg(LOG_WARNING);
-
158  msg << "SSBDemod: Drop buffer.";
-
159  Logger::get().log(msg);
-
160 #endif
-
161  }
-
162  }
-
163 
-
164 protected:
-
166  void _process(const Buffer< std::complex<Scalar> > &in, const Buffer< Scalar> &out) {
-
167  for (size_t i=0; i<in.size(); i++) {
-
168  out[i] = (SScalar(std::real(in[i])) + SScalar(std::imag(in[i])))/2;
-
169  }
-
170  this->send(out.head(in.size()));
-
171  }
-
172 
-
173 protected:
- -
176 };
-
177 
-
178 
-
179 
-
184 template <class iScalar, class oScalar=iScalar>
-
185 class FMDemod: public Sink< std::complex<iScalar> >, public Source
-
186 {
-
187 public:
- -
190 
-
191 public:
- -
194  Sink< std::complex<iScalar> >(), Source(), _shift(0), _can_overwrite(false)
-
195  {
-
196  _shift = 8*(sizeof(oScalar)-sizeof(iScalar));
-
197  }
-
198 
-
200  virtual ~FMDemod() {
-
201  // pass...
-
202  }
-
203 
-
205  virtual void config(const Config &src_cfg) {
-
206  // Requires type & buffer size
-
207  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
-
208  // Check if buffer type matches template
-
209  if (Config::typeId< std::complex<iScalar> >() != src_cfg.type()) {
-
210  ConfigError err;
-
211  err << "Can not configure FMDemod: Invalid type " << src_cfg.type()
-
212  << ", expected " << Config::typeId< std::complex<iScalar> >();
-
213  throw err;
-
214  }
-
215  // Unreference buffer if non-empty
-
216  if (! _buffer.isEmpty()) { _buffer.unref(); }
-
217  // Allocate buffer
-
218  _buffer = Buffer<oScalar>(src_cfg.bufferSize());
-
219  // reset last value
-
220  _last_value = 0;
-
221  // Check if FM demod can be performed in-place
-
222  _can_overwrite = (sizeof(std::complex<iScalar>) >= sizeof(oScalar));
-
223 
-
224  LogMessage msg(LOG_DEBUG);
-
225  msg << "Configured FMDemod node: " << this << std::endl
-
226  << " sample-rate: " << src_cfg.sampleRate() << std::endl
-
227  << " in-type / out-type: " << src_cfg.type()
-
228  << " / " << Config::typeId<oScalar>() << std::endl
-
229  << " in-place: " << (_can_overwrite ? "true" : "false") << std::endl
-
230  << " output scale: 2^" << _shift;
-
231  Logger::get().log(msg);
+
103  USBDemod() : Sink<CScalar>(), Source()
+
104  {
+
105  // pass...
+
106  }
+
107 
+
109  virtual ~USBDemod() {
+
110  _buffer.unref();
+
111  }
+
112 
+
114  virtual void config(const Config &src_cfg) {
+
115  // Requires type & buffer size
+
116  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
+
117  // Check if buffer type matches template
+
118  if (Config::typeId<CScalar>() != src_cfg.type()) {
+
119  ConfigError err;
+
120  err << "Can not configure USBDemod: Invalid type " << src_cfg.type()
+
121  << ", expected " << Config::typeId<CScalar>();
+
122  throw err;
+
123  }
+
124 
+
125  // Unreference previous buffer
+
126  _buffer.unref();
+
127  // Allocate buffer
+
128  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
+
129 
+
130  LogMessage msg(LOG_DEBUG);
+
131  msg << "Configure USBDemod: " << this << std::endl
+
132  << " input type: " << Traits< std::complex<Scalar> >::scalarId << std::endl
+
133  << " output type: " << Traits<Scalar>::scalarId << std::endl
+
134  << " sample rate: " << src_cfg.sampleRate() << std::endl
+
135  << " buffer size: " << src_cfg.bufferSize();
+
136  Logger::get().log(msg);
+
137 
+
138  // Propergate config
+
139  this->setConfig(Config(Config::typeId<Scalar>(), src_cfg.sampleRate(),
+
140  src_cfg.bufferSize(), 1));
+
141  }
+
142 
+
144  virtual void process(const Buffer<CScalar> &buffer, bool allow_overwrite) {
+
145  if (allow_overwrite) {
+
146  // Process in-place
+
147  _process(buffer, Buffer<Scalar>(buffer));
+
148  } else {
+
149  // Store result in buffer
+
150  _process(buffer, _buffer);
+
151  }
+
152  }
+
153 
+
154 protected:
+
156  void _process(const Buffer< std::complex<Scalar> > &in, const Buffer< Scalar> &out) {
+
157  for (size_t i=0; i<in.size(); i++) {
+
158  out[i] = (SScalar(std::real(in[i])) + SScalar(std::imag(in[i])))/2;
+
159  }
+
160  this->send(out.head(in.size()));
+
161  }
+
162 
+
163 protected:
+ +
166 };
+
167 
+
168 
+
169 
+
174 template <class iScalar, class oScalar=iScalar>
+
175 class FMDemod: public Sink< std::complex<iScalar> >, public Source
+
176 {
+
177 public:
+ +
180 
+
181 public:
+ +
184  Sink< std::complex<iScalar> >(), Source(), _shift(0), _can_overwrite(false)
+
185  {
+
186  _shift = 8*(sizeof(oScalar)-sizeof(iScalar));
+
187  }
+
188 
+
190  virtual ~FMDemod() {
+
191  _buffer.unref();
+
192  }
+
193 
+
195  virtual void config(const Config &src_cfg) {
+
196  // Requires type & buffer size
+
197  if (!src_cfg.hasType() || !src_cfg.hasBufferSize()) { return; }
+
198  // Check if buffer type matches template
+
199  if (Config::typeId< std::complex<iScalar> >() != src_cfg.type()) {
+
200  ConfigError err;
+
201  err << "Can not configure FMDemod: Invalid type " << src_cfg.type()
+
202  << ", expected " << Config::typeId< std::complex<iScalar> >();
+
203  throw err;
+
204  }
+
205  // Unreference buffer if non-empty
+
206  if (! _buffer.isEmpty()) { _buffer.unref(); }
+
207  // Allocate buffer
+
208  _buffer = Buffer<oScalar>(src_cfg.bufferSize());
+
209  // reset last value
+
210  _last_value = 0;
+
211  // Check if FM demod can be performed in-place
+
212  _can_overwrite = (sizeof(std::complex<iScalar>) >= sizeof(oScalar));
+
213 
+
214  LogMessage msg(LOG_DEBUG);
+
215  msg << "Configured FMDemod node: " << this << std::endl
+
216  << " sample-rate: " << src_cfg.sampleRate() << std::endl
+
217  << " in-type / out-type: " << src_cfg.type()
+
218  << " / " << Config::typeId<oScalar>() << std::endl
+
219  << " in-place: " << (_can_overwrite ? "true" : "false") << std::endl
+
220  << " output scale: 2^" << _shift;
+
221  Logger::get().log(msg);
+
222 
+
223  // Propergate config
+
224  this->setConfig(Config(Config::typeId<oScalar>(), src_cfg.sampleRate(),
+
225  src_cfg.bufferSize(), 1));
+
226  }
+
227 
+
229  virtual void process(const Buffer<std::complex<iScalar> > &buffer, bool allow_overwrite)
+
230  {
+
231  if (0 == buffer.size()) { return; }
232 
-
233  // Propergate config
-
234  this->setConfig(Config(Config::typeId<oScalar>(), src_cfg.sampleRate(),
-
235  src_cfg.bufferSize(), 1));
-
236  }
-
237 
-
239  virtual void process(const Buffer<std::complex<iScalar> > &buffer, bool allow_overwrite)
-
240  {
-
241  if (0 == buffer.size()) { return; }
-
242 
-
243  if (allow_overwrite && _can_overwrite) {
-
244  _process(buffer, Buffer<oScalar>(buffer));
-
245  } else if (_buffer.isUnused()) {
-
246  _process(buffer, _buffer);
-
247  } else {
-
248 #ifdef SDR_DEBUG
-
249  LogMessage msg(LOG_WARNING);
-
250  msg << "FMDemod: Drop buffer: Output buffer still in use.";
-
251  Logger::get().log(msg);
-
252 #endif
-
253  }
-
254  }
-
255 
-
256 protected:
-
258  void _process(const Buffer< std::complex<iScalar> > &in, const Buffer<oScalar> &out)
-
259  {
-
260  // The last input value
-
261  std::complex<iScalar> last_value = _last_value;
-
262  // calc first value
-
263  SScalar a = (SScalar(in[0].real())*SScalar(last_value.real()))/2
-
264  + (SScalar(in[0].imag())*SScalar(last_value.imag()))/2;
-
265  SScalar b = (SScalar(in[0].imag())*SScalar(last_value.real()))/2
-
266  - (SScalar(in[0].real())*SScalar(last_value.imag()))/2;
- -
268  // update last value
-
269  last_value = in[0];
-
270  // calc output (prob. overwriting the last value)
-
271  out[0] = fast_atan2<iScalar, oScalar>(a, b);
-
272  //out[0] = (1<<12)*(std::atan2(float(a),float(b))/M_PI);
-
273 
-
274  // Calc remaining values
-
275  for (size_t i=1; i<in.size(); i++) {
-
276  a = (SScalar(in[i].real())*SScalar(last_value.real()))/2
-
277  + (SScalar(in[i].imag())*SScalar(last_value.imag()))/2;
-
278  b = (SScalar(in[i].imag())*SScalar(last_value.real()))/2
-
279  - (SScalar(in[i].real())*SScalar(last_value.imag()))/2;
- -
281  last_value = in[i];
-
282  out[i] = fast_atan2<iScalar,oScalar>(a, b);
-
283  //out[i] = (1<<12)*(std::atan2(float(a),float(b))/M_PI);
-
284  }
-
285 
-
286  // Store last value
-
287  _last_value = last_value;
-
288  // propergate result
-
289  this->send(out.head(in.size()));
-
290  }
-
291 
-
292 
-
293 protected:
-
295  int _shift;
-
297  std::complex<iScalar> _last_value;
- - -
302 };
-
303 
-
304 
-
307 template <class Scalar>
-
308 class FMDeemph: public Sink<Scalar>, public Source
-
309 {
-
310 public:
-
312  FMDeemph(bool enabled=true)
-
313  : Sink<Scalar>(), Source(), _enabled(enabled), _alpha(0), _avg(0), _buffer(0)
-
314  {
-
315  // pass...
-
316  }
-
317 
-
319  virtual ~FMDeemph() {
-
320  // pass...
-
321  }
-
322 
-
324  inline bool isEnabled() const { return _enabled; }
-
325 
-
327  inline void enable(bool enabled) { _enabled = enabled; }
-
328 
-
330  virtual void config(const Config &src_cfg) {
-
331  // Requires type, sample rate & buffer size
-
332  if (!src_cfg.hasType() || !src_cfg.hasSampleRate() || !src_cfg.hasBufferSize()) { return; }
-
333  // Check if buffer type matches template
-
334  if (Config::typeId<Scalar>() != src_cfg.type()) {
-
335  ConfigError err;
-
336  err << "Can not configure FMDeemph: Invalid type " << src_cfg.type()
-
337  << ", expected " << Config::typeId<Scalar>();
-
338  throw err;
-
339  }
-
340  // Determine filter constant alpha:
-
341  _alpha = (int)round(
-
342  1.0/( (1.0-exp(-1.0/(src_cfg.sampleRate() * 75e-6) )) ) );
-
343  // Reset average:
-
344  _avg = 0;
-
345  // Allocate buffer:
-
346  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
-
347  // Propergate config:
-
348  this->setConfig(Config(src_cfg.type(), src_cfg.sampleRate(), src_cfg.bufferSize(), 1));
-
349  }
-
350 
-
352  virtual void process(const Buffer<Scalar> &buffer, bool allow_overwrite)
-
353  {
-
354  // Skip if disabled:
-
355  if (!_enabled) { this->send(buffer, allow_overwrite); return; }
-
356 
-
357  // Process in-place or not
-
358  if (allow_overwrite) {
-
359  _process(buffer, buffer);
-
360  this->send(buffer, allow_overwrite);
-
361  } else {
-
362  _process(buffer, _buffer);
-
363  this->send(_buffer.head(buffer.size()), false);
-
364  }
-
365  }
-
366 
-
367 protected:
-
369  void _process(const Buffer<Scalar> &in, const Buffer<Scalar> &out) {
-
370  for (size_t i=0; i<in.size(); i++) {
-
371  // Update average:
-
372  Scalar diff = in[i] - _avg;
-
373  if (diff > 0) { _avg += (diff + _alpha/2) / _alpha; }
-
374  else { _avg += (diff - _alpha/2) / _alpha; }
-
375  // Store result
-
376  out[i] = _avg;
-
377  }
-
378  }
-
379 
-
380 protected:
-
382  bool _enabled;
-
384  int _alpha;
-
386  Scalar _avg;
- -
389 };
-
390 
-
391 }
-
392 
-
393 #endif // __SDR_DEMOD_HH__
-
bool isEnabled() const
Returns true if the filter node is enabled.
Definition: demod.hh:324
+
233  if (allow_overwrite && _can_overwrite) {
+
234  _process(buffer, Buffer<oScalar>(buffer));
+
235  } else {
+
236  _process(buffer, _buffer);
+
237  }
+
238  }
+
239 
+
240 protected:
+
242  void _process(const Buffer< std::complex<iScalar> > &in, const Buffer<oScalar> &out)
+
243  {
+
244  // The last input value
+
245  std::complex<iScalar> last_value = _last_value;
+
246  // calc first value
+
247  SScalar a = (SScalar(in[0].real())*SScalar(last_value.real()))/2
+
248  + (SScalar(in[0].imag())*SScalar(last_value.imag()))/2;
+
249  SScalar b = (SScalar(in[0].imag())*SScalar(last_value.real()))/2
+
250  - (SScalar(in[0].real())*SScalar(last_value.imag()))/2;
+ +
252  // update last value
+
253  last_value = in[0];
+
254  // calc output (prob. overwriting the last value)
+
255  out[0] = fast_atan2<iScalar, oScalar>(a, b);
+
256  //out[0] = (1<<12)*(std::atan2(float(a),float(b))/M_PI);
+
257 
+
258  // Calc remaining values
+
259  for (size_t i=1; i<in.size(); i++) {
+
260  a = (SScalar(in[i].real())*SScalar(last_value.real()))/2
+
261  + (SScalar(in[i].imag())*SScalar(last_value.imag()))/2;
+
262  b = (SScalar(in[i].imag())*SScalar(last_value.real()))/2
+
263  - (SScalar(in[i].real())*SScalar(last_value.imag()))/2;
+ +
265  last_value = in[i];
+
266  out[i] = fast_atan2<iScalar,oScalar>(a, b);
+
267  //out[i] = (1<<12)*(std::atan2(float(a),float(b))/M_PI);
+
268  }
+
269 
+
270  // Store last value
+
271  _last_value = last_value;
+
272  // propergate result
+
273  this->send(out.head(in.size()));
+
274  }
+
275 
+
276 
+
277 protected:
+
279  int _shift;
+
281  std::complex<iScalar> _last_value;
+ + +
286 };
+
287 
+
288 
+
291 template <class Scalar>
+
292 class FMDeemph: public Sink<Scalar>, public Source
+
293 {
+
294 public:
+
296  FMDeemph(bool enabled=true)
+
297  : Sink<Scalar>(), Source(), _enabled(enabled), _alpha(0), _avg(0), _buffer(0)
+
298  {
+
299  // pass...
+
300  }
+
301 
+
303  virtual ~FMDeemph() {
+
304  _buffer.unref();
+
305  }
+
306 
+
308  inline bool isEnabled() const { return _enabled; }
+
309 
+
311  inline void enable(bool enabled) { _enabled = enabled; }
+
312 
+
314  virtual void config(const Config &src_cfg) {
+
315  // Requires type, sample rate & buffer size
+
316  if (!src_cfg.hasType() || !src_cfg.hasSampleRate() || !src_cfg.hasBufferSize()) { return; }
+
317  // Check if buffer type matches template
+
318  if (Config::typeId<Scalar>() != src_cfg.type()) {
+
319  ConfigError err;
+
320  err << "Can not configure FMDeemph: Invalid type " << src_cfg.type()
+
321  << ", expected " << Config::typeId<Scalar>();
+
322  throw err;
+
323  }
+
324  // Determine filter constant alpha:
+
325  _alpha = (int)round(
+
326  1.0/( (1.0-exp(-1.0/(src_cfg.sampleRate() * 75e-6) )) ) );
+
327  // Reset average:
+
328  _avg = 0;
+
329  // Unreference previous buffer
+
330  _buffer.unref();
+
331  // Allocate buffer:
+
332  _buffer = Buffer<Scalar>(src_cfg.bufferSize());
+
333 
+
334  LogMessage msg(LOG_DEBUG);
+
335  msg << "Configured FMDDeemph node: " << this << std::endl
+
336  << " sample-rate: " << src_cfg.sampleRate() << std::endl
+
337  << " type: " << src_cfg.type();
+
338  Logger::get().log(msg);
+
339 
+
340  // Propergate config:
+
341  this->setConfig(Config(src_cfg.type(), src_cfg.sampleRate(), src_cfg.bufferSize(), 1));
+
342  }
+
343 
+
345  virtual void process(const Buffer<Scalar> &buffer, bool allow_overwrite)
+
346  {
+
347  // Skip if disabled:
+
348  if (!_enabled) { this->send(buffer, allow_overwrite); return; }
+
349 
+
350  // Process in-place or not
+
351  if (allow_overwrite) {
+
352  _process(buffer, buffer);
+
353  this->send(buffer, allow_overwrite);
+
354  } else {
+
355  _process(buffer, _buffer);
+
356  this->send(_buffer.head(buffer.size()), false);
+
357  }
+
358  }
+
359 
+
360 protected:
+
362  void _process(const Buffer<Scalar> &in, const Buffer<Scalar> &out) {
+
363  for (size_t i=0; i<in.size(); i++) {
+
364  // Update average:
+
365  Scalar diff = in[i] - _avg;
+
366  if (diff > 0) { _avg += (diff + _alpha/2) / _alpha; }
+
367  else { _avg += (diff - _alpha/2) / _alpha; }
+
368  // Store result
+
369  out[i] = _avg;
+
370  }
+
371  }
+
372 
+
373 protected:
+
375  bool _enabled;
+
377  int _alpha;
+
379  Scalar _avg;
+ +
382 };
+
383 
+
384 }
+
385 
+
386 #endif // __SDR_DEMOD_HH__
+
bool isEnabled() const
Returns true if the filter node is enabled.
Definition: demod.hh:308
A collection of configuration information that is send by a source to all connected sinks to properga...
Definition: node.hh:35
-
virtual void config(const Config &src_cfg)
Configures the USB demodulator.
Definition: demod.hh:120
-
std::complex< Scalar > CScalar
The complex input scalar.
Definition: demod.hh:103
-
virtual ~FMDemod()
Destructor.
Definition: demod.hh:200
-
virtual ~USBDemod()
Destructor.
Definition: demod.hh:115
-
void _process(const Buffer< Scalar > &in, const Buffer< Scalar > &out)
Performs the actual filtering.
Definition: demod.hh:369
+
virtual void config(const Config &src_cfg)
Configures the USB demodulator.
Definition: demod.hh:114
+
std::complex< Scalar > CScalar
The complex input scalar.
Definition: demod.hh:97
+
virtual ~FMDemod()
Destructor.
Definition: demod.hh:190
+
virtual ~USBDemod()
Destructor.
Definition: demod.hh:109
+
void _process(const Buffer< Scalar > &in, const Buffer< Scalar > &out)
Performs the actual filtering.
Definition: demod.hh:362
virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)
Sends the given buffer to all connected sinks.
Definition: node.cc:67
-
Traits< iScalar >::SScalar SScalar
The super scalar.
Definition: demod.hh:189
-
virtual void config(const Config &src_cfg)
Configures the FM demodulator.
Definition: demod.hh:205
+
Traits< iScalar >::SScalar SScalar
The super scalar.
Definition: demod.hh:179
+
virtual void config(const Config &src_cfg)
Configures the FM demodulator.
Definition: demod.hh:195
Typed sink.
Definition: node.hh:192
+
Definition: afsk.hh:6
size_t numBuffers() const
Returns the max.
Definition: node.hh:89
-
A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal.
Definition: demod.hh:308
+
A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal.
Definition: demod.hh:292
bool isEmpty() const
Returns true if the buffer is invalid/empty.
Definition: buffer.hh:77
-
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:175
+
Definition: operators.hh:9
+
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:165
bool hasSampleRate() const
If true, the configuration has a sample rate.
Definition: node.hh:75
-
virtual ~FMDeemph()
Destructor.
Definition: demod.hh:319
+
virtual ~FMDeemph()
Destructor.
Definition: demod.hh:303
Generic source class.
Definition: node.hh:213
-
int _shift
Output rescaling.
Definition: demod.hh:295
+
int _shift
Output rescaling.
Definition: demod.hh:279
size_t size() const
Returns the number of elements of type T in this buffer.
Definition: buffer.hh:166
bool hasType() const
If true, the configuration has a type.
Definition: node.hh:69
-
bool _enabled
If true, the filter is enabled.
Definition: demod.hh:382
-
virtual void config(const Config &src_cfg)
Configures the node.
Definition: demod.hh:330
-
int _alpha
Filter constant.
Definition: demod.hh:384
-
virtual void process(const Buffer< CScalar > &buffer, bool allow_overwrite)
Performs the demodulation.
Definition: demod.hh:147
-
virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)
Dispatches in- or out-of-place filtering.
Definition: demod.hh:352
+
bool _enabled
If true, the filter is enabled.
Definition: demod.hh:375
+
virtual void config(const Config &src_cfg)
Configures the node.
Definition: demod.hh:314
+
int _alpha
Filter constant.
Definition: demod.hh:377
+
virtual void process(const Buffer< CScalar > &buffer, bool allow_overwrite)
Performs the demodulation.
Definition: demod.hh:144
+
virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)
Dispatches in- or out-of-place filtering.
Definition: demod.hh:345
virtual void setConfig(const Config &config)
Stores the configuration and propergates it if the configuration has been changed.
Definition: node.cc:98
Amplitude modulation (AM) demodulator from an I/Q signal.
Definition: demod.hh:18
virtual ~AMDemod()
Destructor.
Definition: demod.hh:29
-
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:388
-
Demodulates FM from an I/Q signal.
Definition: demod.hh:185
+
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:381
+
Demodulates FM from an I/Q signal.
Definition: demod.hh:175
Buffer< T > head(size_t n) const
Returns a new view on this buffer.
Definition: buffer.hh:237
void log(const LogMessage &message)
Logs a message.
Definition: logger.cc:100
-
FMDemod()
Constructor.
Definition: demod.hh:193
-
Buffer< oScalar > _buffer
The output buffer, unused if demodulation is performed in-place.
Definition: demod.hh:301
-
bool _can_overwrite
If true, in-place demodulation is poissible.
Definition: demod.hh:299
+
FMDemod()
Constructor.
Definition: demod.hh:183
+
Buffer< oScalar > _buffer
The output buffer, unused if demodulation is performed in-place.
Definition: demod.hh:285
+
bool _can_overwrite
If true, in-place demodulation is poissible.
Definition: demod.hh:283
Type type() const
Returns the type.
Definition: node.hh:71
static Type typeId()
Returns the type-id of the template type.
-
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Handles the I/Q input buffer.
Definition: demod.hh:61
+
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Handles the I/Q input buffer.
Definition: demod.hh:65
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
The configuration error class.
Definition: exception.hh:24
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
-
USBDemod()
Constructor.
Definition: demod.hh:109
-
virtual void process(const Buffer< std::complex< iScalar > > &buffer, bool allow_overwrite)
Performs the FM demodulation.
Definition: demod.hh:239
-
void _process(const Buffer< std::complex< iScalar > > &in, const Buffer< oScalar > &out)
The actual demodulation.
Definition: demod.hh:258
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
-
FMDeemph(bool enabled=true)
Constructor.
Definition: demod.hh:312
-
void enable(bool enabled)
Enable/Disable the filter node.
Definition: demod.hh:327
-
bool isUnused() const
We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner hol...
Definition: buffer.hh:87
-
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:91
-
SSB upper side band (USB) demodulator from an I/Q signal.
Definition: demod.hh:98
+
USBDemod()
Constructor.
Definition: demod.hh:103
+
virtual void process(const Buffer< std::complex< iScalar > > &buffer, bool allow_overwrite)
Performs the FM demodulation.
Definition: demod.hh:229
+
void _process(const Buffer< std::complex< iScalar > > &in, const Buffer< oScalar > &out)
The actual demodulation.
Definition: demod.hh:242
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
+
FMDeemph(bool enabled=true)
Constructor.
Definition: demod.hh:296
+
void enable(bool enabled)
Enable/Disable the filter node.
Definition: demod.hh:311
+
Buffer< Scalar > _buffer
The output buffer.
Definition: demod.hh:85
+
SSB upper side band (USB) demodulator from an I/Q signal.
Definition: demod.hh:92
Forward declaration of type tratis template.
Definition: traits.hh:20
-
virtual void config(const Config &src_cfg)
Configures the AM demod.
Definition: demod.hh:34
-
void _process(const Buffer< std::complex< Scalar > > &in, const Buffer< Scalar > &out)
The actual demodulation.
Definition: demod.hh:166
+
virtual void config(const Config &src_cfg)
Configures the AM demod.
Definition: demod.hh:35
+
void _process(const Buffer< std::complex< Scalar > > &in, const Buffer< Scalar > &out)
The actual demodulation.
Definition: demod.hh:156
AMDemod()
Constructor.
Definition: demod.hh:23
-
Traits< Scalar >::SScalar SScalar
The real compute scalar.
Definition: demod.hh:105
+
Traits< Scalar >::SScalar SScalar
The real compute scalar.
Definition: demod.hh:99
bool hasBufferSize() const
If true, the configuration has a buffer size.
Definition: node.hh:81
double sampleRate() const
Returns the sample rate.
Definition: node.hh:77
-
std::complex< iScalar > _last_value
The last input value.
Definition: demod.hh:297
-
Scalar _avg
Current averaged value.
Definition: demod.hh:386
+
std::complex< iScalar > _last_value
The last input value.
Definition: demod.hh:281
+
Scalar _avg
Current averaged value.
Definition: demod.hh:379
diff --git a/deprecated.html b/deprecated.html index 5098412..4461762 100644 --- a/deprecated.html +++ b/deprecated.html @@ -3,15 +3,16 @@ - + libsdr: Deprecated List + @@ -32,7 +33,7 @@ - + @@ -66,7 +67,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -83,14 +84,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Class sdr::FreqShift< Scalar >
-
Implement a more efficient variant using FreqShiftBase.
+
Implement a more efficient variant using FreqShiftBase.
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 980e5d1..8873dc8 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src Directory Reference + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src Directory Reference + @@ -32,7 +33,7 @@
- + @@ -66,7 +67,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -88,10 +89,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); + + + + + + + + + + + + @@ -176,9 +189,9 @@ Files diff --git a/doxygen.css b/doxygen.css index f0f36f8..a000833 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.8.6 */ +/* The standard CSS for doxygen 1.8.9.1 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; @@ -227,7 +227,7 @@ span.lineno a:hover { background-color: #C8C8C8; } -div.ah { +div.ah, span.ah { background-color: black; font-weight: bold; color: #ffffff; @@ -245,6 +245,15 @@ div.ah { background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); } +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + div.groupHeader { margin-left: 16px; margin-top: 12px; @@ -670,12 +679,12 @@ span.mlabel { /* @end */ -/* these are for tree view when not used as main index */ +/* these are for tree view inside a (index) page */ div.directory { margin: 10px 0px; - border-top: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; width: 100%; } @@ -734,6 +743,80 @@ div.directory { color: #3D578C; } +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + div.dynheader { margin-top: 8px; -webkit-touch-callout: none; diff --git a/dynsections.js b/dynsections.js index ed092c7..85e1836 100644 --- a/dynsections.js +++ b/dynsections.js @@ -24,19 +24,20 @@ function updateStripes() $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } + function toggleLevel(level) { - $('table.directory tr').each(function(){ + $('table.directory tr').each(function() { var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (l - -libsdr: /home/hannes/sdr/libsdr/src/exception.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/exception.hh Source File + @@ -32,7 +33,7 @@

Files

file  afsk.cc
 
file  afsk.hh [code]
 
file  autocast.hh [code]
 
file  ax25.cc
 
file  ax25.hh [code]
 
file  baseband.hh [code]
 
file  baudot.cc
 
file  baudot.hh [code]
 
file  buffer.cc
 
file  buffer.hh [code]
- + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,18 +92,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_EXCEPTION_HH__
-
2 #define __SDR_EXCEPTION_HH__
-
3 
+
2 #define __SDR_EXCEPTION_HH__
+
3 
4 #include <exception>
5 #include <sstream>
6 
-
7 namespace sdr {
+
7 namespace sdr {
8 
10 class SDRError : public std::exception, public std::stringstream {
11 public:
-
13  SDRError(): std::exception(), std::stringstream() { }
+
13  SDRError(): std::exception(), std::stringstream() { }
15  SDRError(const SDRError &other)
-
16  : std::exception(), std::stringstream() { this->str(other.str()); }
+
16  : std::exception(), std::stringstream() { this->str(other.str()); }
18  virtual ~SDRError() throw() { }
20  virtual const char *what() const throw() { return this->str().c_str(); }
21 };
@@ -129,6 +130,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual ~ConfigError()
Destructor.
Definition: exception.hh:31
virtual const char * what() const
Implements the std::exception interface.
Definition: exception.hh:20
ConfigError(const ConfigError &other)
Copy constructor.
Definition: exception.hh:29
+
Definition: afsk.hh:6
+
Definition: operators.hh:9
Base class of all SDR exceptions.
Definition: exception.hh:10
The runtime error class.
Definition: exception.hh:36
virtual ~RuntimeError()
Destructor.
Definition: exception.hh:43
@@ -142,9 +145,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/fftplan_8hh_source.html b/fftplan_8hh_source.html index d4a5682..ea95d0d 100644 --- a/fftplan_8hh_source.html +++ b/fftplan_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/fftplan.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/fftplan.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,13 +92,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FFTPLAN_HH__
-
2 #define __SDR_FFTPLAN_HH__
-
3 
+
2 #define __SDR_FFTPLAN_HH__
+
3 
4 #include "buffer.hh"
5 #include "node.hh"
6 #include "config.hh"
7 
-
8 namespace sdr {
+
8 namespace sdr {
9 
10 // Forward declaration of FFTPlan
11 template <class Scalar> class FFTPlan { };
@@ -127,12 +128,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
39 
40 
41 #ifdef SDR_WITH_FFTW
-
42 #include "fftplan_fftw3.hh"
+
42 #include "fftplan_fftw3.hh"
43 #endif
-
44 
+
44 
45 
46 #endif // __SDR_FFTPLAN_HH__
Direction
Direction type.
Definition: fftplan.hh:17
+
Definition: afsk.hh:6
Trivial FFT implementation for buffer sizes of N=2**K.
Definition: fftplan.hh:11
static void exec(const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out, FFT::Direction dir)
Performs a FFT transform.
Definition: fftplan.hh:23
static void exec(const Buffer< std::complex< Scalar > > &inplace, FFT::Direction dir)
Performs an in-place FFT transform.
Definition: fftplan.hh:31
@@ -141,9 +143,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/fftplan__fftw3_8hh_source.html b/fftplan__fftw3_8hh_source.html index 563d341..8531f42 100644 --- a/fftplan__fftw3_8hh_source.html +++ b/fftplan__fftw3_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/fftplan_fftw3.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/fftplan_fftw3.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,13 +92,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FFTPLAN_FFTW3_HH__
-
2 #define __SDR_FFTPLAN_FFTW3_HH__
-
3 
+
2 #define __SDR_FFTPLAN_FFTW3_HH__
+
3 
4 #include "fftplan.hh"
5 #include <fftw3.h>
6 
7 
-
8 namespace sdr {
+
8 namespace sdr {
9 
11 template<>
12 class FFTPlan<double>
@@ -227,6 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
FFTPlan(const Buffer< std::complex< float > > &in, const Buffer< std::complex< float > > &out, FFT::Direction dir)
Constructor.
Definition: fftplan_fftw3.hh:83
void operator()()
Performs the FFT.
Definition: fftplan_native.hh:53
Direction
Direction type.
Definition: fftplan.hh:17
+
Definition: afsk.hh:6
Buffer< std::complex< Scalar > > _in
The input buffer.
Definition: fftplan_native.hh:79
Buffer< std::complex< float > > _out
Output buffer.
Definition: fftplan_fftw3.hh:139
Buffer< std::complex< double > > _in
Input buffer.
Definition: fftplan_fftw3.hh:69
@@ -245,9 +247,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/fftplan__native_8hh_source.html b/fftplan__native_8hh_source.html index 108b21a..c1d026e 100644 --- a/fftplan__native_8hh_source.html +++ b/fftplan__native_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/fftplan_native.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/fftplan_native.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,12 +92,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FFTPLAN_NATIVE_HH__
-
2 #define __SDR_FFTPLAN_NATIVE_HH__
-
3 
+
2 #define __SDR_FFTPLAN_NATIVE_HH__
+
3 
4 #include "traits.hh"
5 #include "fftplan.hh"
6 
-
7 namespace sdr {
+
7 namespace sdr {
8 
10 template <class Scalar>
11 class FFTPlan
@@ -171,6 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual ~FFTPlan()
Destructor.
Definition: fftplan_native.hh:48
void operator()()
Performs the FFT.
Definition: fftplan_native.hh:53
Direction
Direction type.
Definition: fftplan.hh:17
+
Definition: afsk.hh:6
bool isEmpty() const
Returns true if the buffer is invalid/empty.
Definition: buffer.hh:77
Buffer< std::complex< Scalar > > _in
The input buffer.
Definition: fftplan_native.hh:79
size_t size() const
Returns the number of elements of type T in this buffer.
Definition: buffer.hh:166
@@ -180,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Buffer< std::complex< SScalar > > _lut
The exp(-i 2 pi k / N) look-up table.
Definition: fftplan_native.hh:83
The configuration error class.
Definition: exception.hh:24
Traits< Scalar >::SScalar SScalar
The super-scalar of the input type.
Definition: fftplan_native.hh:15
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
FFTPlan(const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out, FFT::Direction dir)
Constructs a FFT plan for the input and output buffers.
Definition: fftplan_native.hh:19
Forward declaration of type tratis template.
Definition: traits.hh:20
A typed buffer.
Definition: buffer.hh:111
@@ -188,9 +190,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/files.html b/files.html index 7b80d5b..605d49f 100644 --- a/files.html +++ b/files.html @@ -3,15 +3,16 @@ - + libsdr: File List + @@ -32,7 +33,7 @@ - + @@ -72,7 +73,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -88,45 +89,48 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Here is a list of all documented files with brief descriptions:
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\-src
 o*autocast.hh
 o*baseband.hh
 o*buffer.hh
 o*buffernode.hh
 o*combine.hh
 o*demod.hh
 o*exception.hh
 o*fftplan.hh
 o*fftplan_fftw3.hh
 o*fftplan_native.hh
 o*filternode.hh
 o*firfilter.hh
 o*freqshift.hh
 o*interpolate.hh
 o*logger.hh
 o*math.hh
 o*node.hh
 o*operators.hh
 o*options.hh
 o*portaudio.hh
 o*psk31.hh
 o*queue.hh
 o*rtlsource.hh
 o*sdr.hh
 o*siggen.hh
 o*streamsource.hh
 o*subsample.hh
 o*traits.hh
 o*utils.hh
 \*wavfile.hh
  src
 afsk.hh
 autocast.hh
 ax25.hh
 baseband.hh
 baudot.hh
 buffer.hh
 buffernode.hh
 combine.hh
 demod.hh
 exception.hh
 fftplan.hh
 fftplan_fftw3.hh
 fftplan_native.hh
 filternode.hh
 firfilter.hh
 freqshift.hh
 interpolate.hh
 logger.hh
 math.hh
 node.hh
 operators.hh
 options.hh
 portaudio.hh
 psk31.hh
 queue.hh
 rtlsource.hh
 sdr.hh
 siggen.hh
 streamsource.hh
 subsample.hh
 traits.hh
 utils.hh
 wavfile.hh
diff --git a/filternode_8hh_source.html b/filternode_8hh_source.html index 61d0821..1acf320 100644 --- a/filternode_8hh_source.html +++ b/filternode_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/filternode.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/filternode.hh Source File + @@ -32,7 +33,7 @@
- + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,8 +92,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FILTERNODE_HH__
-
2 #define __SDR_FILTERNODE_HH__
-
3 
+
2 #define __SDR_FILTERNODE_HH__
+
3 
4 #include <limits>
5 #include <list>
6 
@@ -103,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
11 #include "fftplan.hh"
12 
13 
-
14 namespace sdr {
+
14 namespace sdr {
15 
17 template <class Scalar>
18 inline std::complex<Scalar> sinc_flt_kernel(int i, int N, double Fc, double bw, double Fs) {
@@ -125,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
35 {
36 public:
38  FilterSink(size_t block_size)
-
39  : Sink< std::complex<Scalar> >(), Source(), _block_size(block_size),
+
39  : Sink< std::complex<Scalar> >(), Source(), _block_size(block_size),
40  _in_buffer(2*block_size), _out_buffer(2*block_size),
41  _plan(_in_buffer, _out_buffer, FFT::FORWARD)
42  {
@@ -135,273 +136,279 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
46  }
47  }
48 
-
50  virtual ~FilterSink() { }
-
51 
-
53  virtual void config(const Config &src_cfg) {
-
54  // Skip if config is incomplete
-
55  if ((Config::Type_UNDEFINED==src_cfg.type()) || (0 == src_cfg.sampleRate()) || (0 == src_cfg.bufferSize())) {
-
56  return;
-
57  }
-
58  // Now check type (must be real double)
-
59  if (Config::typeId< std::complex<Scalar> >() != src_cfg.type()) {
-
60  ConfigError err;
-
61  err << "Can not configure filter-sink: Invalid type " << src_cfg.type()
-
62  << ", expected " << Config::typeId< std::complex<Scalar> >();
-
63  throw err;
-
64  }
-
65  // Check buffer size
-
66  if (_block_size != src_cfg.bufferSize()) {
-
67  ConfigError err;
-
68  err << "Can not configure filter-sink: Invalid buffer size " << src_cfg.bufferSize()
-
69  << ", expected " << _block_size;
-
70  throw err;
-
71  }
-
72  // Propagate configuration
-
73  setConfig(Config(Config::typeId< std::complex<Scalar> >(), src_cfg.sampleRate(),
-
74  src_cfg.bufferSize(), src_cfg.numBuffers()));
-
75  }
-
76 
-
78  virtual void process(const Buffer< std::complex<Scalar> > &buffer, bool allow_overwrite) {
-
79  // Copy buffer into 1st half of input buffer
-
80  for (size_t i=0; i<_block_size; i++) { _in_buffer[i] = buffer[i]; }
-
81  // perform fft
-
82  _plan();
-
83  // send fft result
-
84  this->send(_out_buffer);
-
85  }
-
86 
-
87 protected:
-
89  size_t _block_size;
- - - -
96 };
-
97 
-
98 
-
99 
-
101 template <class Scalar>
-
102 class FilterSource: public Sink< std::complex<Scalar> >, public Source
-
103 {
-
104 public:
-
106  FilterSource(size_t block_size, double fmin, double fmax)
-
107  : Sink< std::complex<Scalar> >(), Source(),
-
108  _block_size(block_size), _sample_rate(0),
- -
110  _kern(2u*_block_size), _buffers(1, _block_size), _fmin(fmin), _fmax(fmax),
-
111  _plan(_in_buffer, _trafo_buffer, FFT::BACKWARD)
-
112  {
-
113  // Set input & output buffer to 0
-
114  for (size_t i=0; i<_block_size; i++) {
-
115  _last_trafo[i] = 0;
-
116  }
-
117  }
-
118 
-
120  virtual ~FilterSource() {
-
121  // pas...
-
122  }
-
123 
-
125  void setFreq(double fmin, double fmax) {
-
126  _fmin = fmin; _fmax = fmax; _updateFilter();
-
127  }
-
128 
-
130  virtual void config(const Config &src_cfg) {
-
131  // Check config
-
132  if ((0 == src_cfg.sampleRate()) || (0 == src_cfg.bufferSize())) { return; }
-
133  if (_block_size != src_cfg.bufferSize()) {
-
134  ConfigError err;
-
135  err << "Can not configure FilterSource, block-size (=" << _block_size
-
136  << ") != buffer-size (=" << src_cfg.bufferSize() << ")!";
-
137  throw err;
-
138  }
-
139  // calc filter kernel
-
140  _sample_rate = src_cfg.sampleRate();
-
141  _updateFilter();
-
142  // Resize buffer-set
-
143  _buffers.resize(src_cfg.numBuffers());
-
144 
-
145  LogMessage msg(LOG_DEBUG);
-
146  double fmin = std::max(_fmin, -src_cfg.sampleRate()/2);
-
147  double fmax = std::min(_fmax, src_cfg.sampleRate()/2);
-
148  msg << "Configured FFT Filter: " << std::endl
-
149  << " range: [" << fmin << ", " << fmax << "]" << std::endl
-
150  << " fft size: " << 2*_block_size << std::endl
-
151  << " Fc/BW: " << fmin+(fmax-fmin)/2 << " / " << (fmax-fmin) << std::endl
-
152  << " sample rate: " << src_cfg.sampleRate();
-
153  Logger::get().log(msg);
-
154 
-
155  // Propergate config
-
156  Source::setConfig(Config(Config::typeId< std::complex<Scalar> >(), src_cfg.sampleRate(),
-
157  _block_size, src_cfg.numBuffers()));
-
158  }
-
159 
-
161  virtual void process(const Buffer<std::complex<Scalar> > &buffer, bool allow_overwrite) {
-
162  // Multiply with F(_kern)
-
163  for (size_t i=0; i<(2*_block_size); i++) {
-
164  _in_buffer[i] = buffer[i]*_kern[i];
-
165  }
-
166  // perform FFT
-
167  _plan();
-
168  // Get a output buffer
- -
170  // Add first half of trafo buffer to second half of last trafo
-
171  // and store second half of the current trafo
-
172  for (size_t i=0; i<_block_size; i++) {
-
173  out[i] = _last_trafo[i] + (_trafo_buffer[i]/((Scalar)(2*_block_size)));
-
174  _last_trafo[i] = (_trafo_buffer[i+_block_size]/((Scalar)(2*_block_size)));
-
175  }
-
176  // Send output
-
177  this->send(out);
-
178  }
-
179 
-
180 
-
181 protected:
-
183  void _updateFilter() {
-
184  // Calc filter kernel
-
185  double Fs = _sample_rate;
-
186  double fmin = std::max(_fmin, -Fs/2);
-
187  double fmax = std::min(_fmax, Fs/2);
-
188  double bw = fmax-fmin;
-
189  double Fc = fmin + bw/2;
-
190  for (size_t i=0; i<_block_size; i++) {
-
191  // Eval kernel
-
192  _kern[i] = sinc_flt_kernel<Scalar>(i, _block_size, Fc, bw, Fs);
-
193  // set second half to 0
-
194  _kern[i+_block_size] = 0;
-
195  }
-
196  // Calculate FFT in-place
-
197  FFT::exec(_kern, FFT::FORWARD);
-
198  // Normalize filter kernel
-
199  _kern /= _kern.norm2();
-
200  }
-
201 
-
202 protected:
-
204  size_t _block_size;
-
206  double _sample_rate;
- - - - - -
218  double _fmin;
-
220  double _fmax;
- -
223 };
-
224 
-
225 
-
228 template <class Scalar>
- -
230 {
-
231 public:
-
233  FilterNode(size_t block_size=1024)
-
234  : _block_size(block_size), _buffer(0), _fft_fwd(0), _filters()
-
235  {
-
236  // Create input buffer node
-
237  _buffer = new BufferNode< std::complex<Scalar> >(block_size);
-
238  // Create FFT fwd transform
-
239  _fft_fwd = new FilterSink<Scalar>(block_size);
-
240  // Connect buffer source to FFT sink directly
-
241  _buffer->connect(_fft_fwd, true);
-
242  }
-
243 
-
245  virtual ~FilterNode() {
-
246  delete _buffer; delete _fft_fwd;
-
247  typename std::list< FilterSource<Scalar> *>::iterator item=_filters.begin();
-
248  for (; item!=_filters.end(); item++) {
-
249  delete *item;
-
250  }
-
251  }
-
252 
- -
255  return _buffer;
-
256  }
-
257 
-
259  FilterSource<Scalar> *addFilter(double fmin, double fmax) {
-
260  // Check if fmin < fmax
-
261  if (fmax < fmin) { std::swap(fmin, fmax); }
-
262  // Create and store filter instance
-
263  _filters.push_back(new FilterSource<Scalar>(_block_size, fmin, fmax));
-
264  // Connect fft_fwd trafo to filter directly
-
265  _fft_fwd->connect(_filters.back(), true);
-
266  return _filters.back();
-
267  }
-
268 
-
269 protected:
-
271  size_t _block_size;
-
273  double _sample_rate;
- - -
279  std::list<FilterSource<Scalar> *> _filters;
-
280 };
-
281 
-
282 }
-
283 
-
284 #endif // __SDR_FILTERNODE_HH__
-
double _sample_rate
The current sample rate.
Definition: filternode.hh:273
+
50  virtual ~FilterSink() {
+
51  _in_buffer.unref();
+ +
53  }
+
54 
+
56  virtual void config(const Config &src_cfg) {
+
57  // Skip if config is incomplete
+
58  if ((Config::Type_UNDEFINED==src_cfg.type()) || (0 == src_cfg.sampleRate()) || (0 == src_cfg.bufferSize())) {
+
59  return;
+
60  }
+
61  // Now check type (must be real double)
+
62  if (Config::typeId< std::complex<Scalar> >() != src_cfg.type()) {
+
63  ConfigError err;
+
64  err << "Can not configure filter-sink: Invalid type " << src_cfg.type()
+
65  << ", expected " << Config::typeId< std::complex<Scalar> >();
+
66  throw err;
+
67  }
+
68  // Check buffer size
+
69  if (_block_size != src_cfg.bufferSize()) {
+
70  ConfigError err;
+
71  err << "Can not configure filter-sink: Invalid buffer size " << src_cfg.bufferSize()
+
72  << ", expected " << _block_size;
+
73  throw err;
+
74  }
+
75  // Propagate configuration
+
76  setConfig(Config(Config::typeId< std::complex<Scalar> >(), src_cfg.sampleRate(),
+
77  src_cfg.bufferSize(), src_cfg.numBuffers()));
+
78  }
+
79 
+
81  virtual void process(const Buffer< std::complex<Scalar> > &buffer, bool allow_overwrite) {
+
82  // Copy buffer into 1st half of input buffer
+
83  for (size_t i=0; i<_block_size; i++) { _in_buffer[i] = buffer[i]; }
+
84  // perform fft
+
85  _plan();
+
86  // send fft result
+
87  this->send(_out_buffer);
+
88  }
+
89 
+
90 protected:
+
92  size_t _block_size;
+ + + +
99 };
+
100 
+
101 
+
102 
+
104 template <class Scalar>
+
105 class FilterSource: public Sink< std::complex<Scalar> >, public Source
+
106 {
+
107 public:
+
109  FilterSource(size_t block_size, double fmin, double fmax)
+
110  : Sink< std::complex<Scalar> >(), Source(),
+
111  _block_size(block_size), _sample_rate(0),
+ +
113  _kern(2u*_block_size), _buffers(1, _block_size), _fmin(fmin), _fmax(fmax),
+
114  _plan(_in_buffer, _trafo_buffer, FFT::BACKWARD)
+
115  {
+
116  // Set input & output buffer to 0
+
117  for (size_t i=0; i<_block_size; i++) {
+
118  _last_trafo[i] = 0;
+
119  }
+
120  }
+
121 
+
123  virtual ~FilterSource() {
+
124  // pas...
+
125  }
+
126 
+
128  void setFreq(double fmin, double fmax) {
+
129  _fmin = fmin; _fmax = fmax; _updateFilter();
+
130  }
+
131 
+
133  virtual void config(const Config &src_cfg) {
+
134  // Check config
+
135  if ((0 == src_cfg.sampleRate()) || (0 == src_cfg.bufferSize())) { return; }
+
136  if (_block_size != src_cfg.bufferSize()) {
+
137  ConfigError err;
+
138  err << "Can not configure FilterSource, block-size (=" << _block_size
+
139  << ") != buffer-size (=" << src_cfg.bufferSize() << ")!";
+
140  throw err;
+
141  }
+
142  // calc filter kernel
+
143  _sample_rate = src_cfg.sampleRate();
+
144  _updateFilter();
+
145  // Resize buffer-set
+
146  _buffers.resize(src_cfg.numBuffers());
+
147 
+
148  LogMessage msg(LOG_DEBUG);
+
149  double fmin = std::max(_fmin, -src_cfg.sampleRate()/2);
+
150  double fmax = std::min(_fmax, src_cfg.sampleRate()/2);
+
151  msg << "Configured FFT Filter: " << std::endl
+
152  << " range: [" << fmin << ", " << fmax << "]" << std::endl
+
153  << " fft size: " << 2*_block_size << std::endl
+
154  << " Fc/BW: " << fmin+(fmax-fmin)/2 << " / " << (fmax-fmin) << std::endl
+
155  << " sample rate: " << src_cfg.sampleRate();
+
156  Logger::get().log(msg);
+
157 
+
158  // Propergate config
+
159  Source::setConfig(Config(Config::typeId< std::complex<Scalar> >(), src_cfg.sampleRate(),
+
160  _block_size, src_cfg.numBuffers()));
+
161  }
+
162 
+
164  virtual void process(const Buffer<std::complex<Scalar> > &buffer, bool allow_overwrite) {
+
165  // Multiply with F(_kern)
+
166  for (size_t i=0; i<(2*_block_size); i++) {
+
167  _in_buffer[i] = buffer[i]*_kern[i];
+
168  }
+
169  // perform FFT
+
170  _plan();
+
171  // Get a output buffer
+ +
173  // Add first half of trafo buffer to second half of last trafo
+
174  // and store second half of the current trafo
+
175  for (size_t i=0; i<_block_size; i++) {
+
176  out[i] = _last_trafo[i] + (_trafo_buffer[i]/((Scalar)(2*_block_size)));
+
177  _last_trafo[i] = (_trafo_buffer[i+_block_size]/((Scalar)(2*_block_size)));
+
178  }
+
179  // Send output
+
180  this->send(out);
+
181  }
+
182 
+
183 
+
184 protected:
+
186  void _updateFilter() {
+
187  // Calc filter kernel
+
188  double Fs = _sample_rate;
+
189  double fmin = std::max(_fmin, -Fs/2);
+
190  double fmax = std::min(_fmax, Fs/2);
+
191  double bw = fmax-fmin;
+
192  double Fc = fmin + bw/2;
+
193  for (size_t i=0; i<_block_size; i++) {
+
194  // Eval kernel
+
195  _kern[i] = sinc_flt_kernel<Scalar>(i, _block_size, Fc, bw, Fs);
+
196  // set second half to 0
+
197  _kern[i+_block_size] = 0;
+
198  }
+
199  // Calculate FFT in-place
+
200  FFT::exec(_kern, FFT::FORWARD);
+
201  // Normalize filter kernel
+
202  _kern /= _kern.norm2();
+
203  }
+
204 
+
205 protected:
+
207  size_t _block_size;
+
209  double _sample_rate;
+ + + + + +
221  double _fmin;
+
223  double _fmax;
+ +
226 };
+
227 
+
228 
+
231 template <class Scalar>
+ +
233 {
+
234 public:
+
236  FilterNode(size_t block_size=1024)
+
237  : _block_size(block_size), _buffer(0), _fft_fwd(0), _filters()
+
238  {
+
239  // Create input buffer node
+
240  _buffer = new BufferNode< std::complex<Scalar> >(block_size);
+
241  // Create FFT fwd transform
+
242  _fft_fwd = new FilterSink<Scalar>(block_size);
+
243  // Connect buffer source to FFT sink directly
+
244  _buffer->connect(_fft_fwd, true);
+
245  }
+
246 
+
248  virtual ~FilterNode() {
+
249  delete _buffer; delete _fft_fwd;
+
250  typename std::list< FilterSource<Scalar> *>::iterator item=_filters.begin();
+
251  for (; item!=_filters.end(); item++) {
+
252  delete *item;
+
253  }
+
254  }
+
255 
+ +
258  return _buffer;
+
259  }
+
260 
+
262  FilterSource<Scalar> *addFilter(double fmin, double fmax) {
+
263  // Check if fmin < fmax
+
264  if (fmax < fmin) { std::swap(fmin, fmax); }
+
265  // Create and store filter instance
+
266  _filters.push_back(new FilterSource<Scalar>(_block_size, fmin, fmax));
+
267  // Connect fft_fwd trafo to filter directly
+
268  _fft_fwd->connect(_filters.back(), true);
+
269  return _filters.back();
+
270  }
+
271 
+
272 protected:
+
274  size_t _block_size;
+
276  double _sample_rate;
+ + +
282  std::list<FilterSource<Scalar> *> _filters;
+
283 };
+
284 
+
285 }
+
286 
+
287 #endif // __SDR_FILTERNODE_HH__
+
double _sample_rate
The current sample rate.
Definition: filternode.hh:276
A collection of configuration information that is send by a source to all connected sinks to properga...
Definition: node.hh:35
-
FFTPlan< Scalar > _plan
The FFT plan for the FFT back-transform.
Definition: filternode.hh:222
-
void _updateFilter()
Updates the sink-filter.
Definition: filternode.hh:183
+
FFTPlan< Scalar > _plan
The FFT plan for the FFT back-transform.
Definition: filternode.hh:225
+
void _updateFilter()
Updates the sink-filter.
Definition: filternode.hh:186
FilterSink(size_t block_size)
Constructor, best performance with block-size being a power of 2.
Definition: filternode.hh:38
-
Performs the overlap-add FFT filtering and back-transform.
Definition: filternode.hh:102
+
Performs the overlap-add FFT filtering and back-transform.
Definition: filternode.hh:105
virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)
Sends the given buffer to all connected sinks.
Definition: node.cc:67
-
Sink< std::complex< Scalar > > * sink() const
The filter sink.
Definition: filternode.hh:254
+
Sink< std::complex< Scalar > > * sink() const
The filter sink.
Definition: filternode.hh:257
Typed sink.
Definition: node.hh:192
+
Definition: afsk.hh:6
size_t numBuffers() const
Returns the max.
Definition: node.hh:89
-
size_t _block_size
The block size of the filters.
Definition: filternode.hh:271
+
size_t _block_size
The block size of the filters.
Definition: filternode.hh:274
+
Definition: operators.hh:9
Performs the FFT forward transform.
Definition: filternode.hh:34
-
void setFreq(double fmin, double fmax)
Set the frequency range.
Definition: filternode.hh:125
+
void setFreq(double fmin, double fmax)
Set the frequency range.
Definition: filternode.hh:128
Generic source class.
Definition: node.hh:213
-
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Performs the FFT forward transform.
Definition: filternode.hh:78
+
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Performs the FFT forward transform.
Definition: filternode.hh:81
A set of buffers, that tracks their usage.
Definition: buffer.hh:288
A simple buffering node, that ensures a fixed buffer size.
Definition: buffernode.hh:18
-
BufferSet< std::complex< Scalar > > _buffers
The output buffers.
Definition: filternode.hh:216
+
BufferSet< std::complex< Scalar > > _buffers
The output buffers.
Definition: filternode.hh:219
virtual void setConfig(const Config &config)
Stores the configuration and propergates it if the configuration has been changed.
Definition: node.cc:98
-
Buffer< std::complex< Scalar > > _out_buffer
The output buffer (transformed).
Definition: filternode.hh:93
-
Buffer< std::complex< Scalar > > _last_trafo
Holds a copy of the second-half of the last output signal.
Definition: filternode.hh:212
+
Buffer< std::complex< Scalar > > _out_buffer
The output buffer (transformed).
Definition: filternode.hh:96
+
Buffer< std::complex< Scalar > > _last_trafo
Holds a copy of the second-half of the last output signal.
Definition: filternode.hh:215
double norm2() const
Returns the norm of the buffer.
Definition: buffer.hh:182
void connect(SinkBase *sink, bool direct=false)
Connect this source to a sink.
Definition: node.cc:87
-
FFTPlan< Scalar > _plan
The plan for the FFT forward transform.
Definition: filternode.hh:95
+
FFTPlan< Scalar > _plan
The plan for the FFT forward transform.
Definition: filternode.hh:98
Trivial FFT implementation for buffer sizes of N=2**K.
Definition: fftplan.hh:11
-
double _fmin
The lower frequency range.
Definition: filternode.hh:218
-
FilterSink< Scalar > * _fft_fwd
The filter sink (forward FFT).
Definition: filternode.hh:277
-
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Performs the FFT filtering and back-transform.
Definition: filternode.hh:161
-
Buffer< std::complex< Scalar > > _kern
Holds the current filter kernel.
Definition: filternode.hh:214
-
double _sample_rate
The current sample-rate.
Definition: filternode.hh:206
+
double _fmin
The lower frequency range.
Definition: filternode.hh:221
+
FilterSink< Scalar > * _fft_fwd
The filter sink (forward FFT).
Definition: filternode.hh:280
+
virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)
Performs the FFT filtering and back-transform.
Definition: filternode.hh:164
+
Buffer< std::complex< Scalar > > _kern
Holds the current filter kernel.
Definition: filternode.hh:217
+
double _sample_rate
The current sample-rate.
Definition: filternode.hh:209
void log(const LogMessage &message)
Logs a message.
Definition: logger.cc:100
-
virtual void config(const Config &src_cfg)
Configures the node.
Definition: filternode.hh:53
+
virtual void config(const Config &src_cfg)
Configures the node.
Definition: filternode.hh:56
Type type() const
Returns the type.
Definition: node.hh:71
-
Buffer< std::complex< Scalar > > _in_buffer
An input buffer.
Definition: filternode.hh:208
+
Buffer< std::complex< Scalar > > _in_buffer
An input buffer.
Definition: filternode.hh:211
static void exec(const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out, FFT::Direction dir)
Performs a FFT transform.
Definition: fftplan.hh:23
static Type typeId()
Returns the type-id of the template type.
void resize(size_t numBuffers)
Resize the buffer set.
Definition: buffer.hh:332
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
-
std::list< FilterSource< Scalar > * > _filters
The filter bank.
Definition: filternode.hh:279
+
std::list< FilterSource< Scalar > * > _filters
The filter bank.
Definition: filternode.hh:282
virtual ~FilterSink()
Destructor.
Definition: filternode.hh:50
-
Buffer< std::complex< Scalar > > _in_buffer
The input buffer.
Definition: filternode.hh:91
+
Buffer< std::complex< Scalar > > _in_buffer
The input buffer.
Definition: filternode.hh:94
The configuration error class.
Definition: exception.hh:24
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
-
FilterSource< Scalar > * addFilter(double fmin, double fmax)
Adds a filter to the filter bank.
Definition: filternode.hh:259
-
double _fmax
The upper frequency range.
Definition: filternode.hh:220
-
virtual ~FilterSource()
Destructor.
Definition: filternode.hh:120
-
virtual ~FilterNode()
Destructor.
Definition: filternode.hh:245
-
FilterSource(size_t block_size, double fmin, double fmax)
Constructor.
Definition: filternode.hh:106
-
Buffer< std::complex< Scalar > > _trafo_buffer
A compute buffer.
Definition: filternode.hh:210
-
size_t _block_size
The block size.
Definition: filternode.hh:89
+
FilterSource< Scalar > * addFilter(double fmin, double fmax)
Adds a filter to the filter bank.
Definition: filternode.hh:262
+
double _fmax
The upper frequency range.
Definition: filternode.hh:223
+
virtual ~FilterSource()
Destructor.
Definition: filternode.hh:123
+
virtual ~FilterNode()
Destructor.
Definition: filternode.hh:248
+
FilterSource(size_t block_size, double fmin, double fmax)
Constructor.
Definition: filternode.hh:109
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
+
Buffer< std::complex< Scalar > > _trafo_buffer
A compute buffer.
Definition: filternode.hh:213
+
size_t _block_size
The block size.
Definition: filternode.hh:92
Buffer< Scalar > getBuffer()
Obtains a free buffer.
Definition: buffer.hh:318
FFT module class, provides static methods to perfrom a FFT directly.
Definition: fftplan.hh:14
-
BufferNode< std::complex< Scalar > > * _buffer
The input buffer (to ensure buffers of _block_size size.
Definition: filternode.hh:275
-
virtual void config(const Config &src_cfg)
Configures the filter node.
Definition: filternode.hh:130
+
BufferNode< std::complex< Scalar > > * _buffer
The input buffer (to ensure buffers of _block_size size.
Definition: filternode.hh:278
+
virtual void config(const Config &src_cfg)
Configures the filter node.
Definition: filternode.hh:133
A typed buffer.
Definition: buffer.hh:111
-
FilterNode(size_t block_size=1024)
Constructor.
Definition: filternode.hh:233
+
FilterNode(size_t block_size=1024)
Constructor.
Definition: filternode.hh:236
double sampleRate() const
Returns the sample rate.
Definition: node.hh:77
-
A FFT filter bank node wich consists of several filters.
Definition: filternode.hh:229
-
size_t _block_size
Holds the block size of the filter.
Definition: filternode.hh:204
+
A FFT filter bank node wich consists of several filters.
Definition: filternode.hh:232
+
size_t _block_size
Holds the block size of the filter.
Definition: filternode.hh:207
diff --git a/firfilter_8hh_source.html b/firfilter_8hh_source.html index 985803c..5db9336 100644 --- a/firfilter_8hh_source.html +++ b/firfilter_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/firfilter.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/firfilter.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,13 +92,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FIRFILTER_HH__
-
2 #define __SDR_FIRFILTER_HH__
-
3 
+
2 #define __SDR_FIRFILTER_HH__
+
3 
4 #include "config.hh"
5 #include "node.hh"
6 #include "logger.hh"
7 
-
8 namespace sdr {
+
8 namespace sdr {
9 
13 {
@@ -195,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
118 {
119 public:
121  FIRFilter(size_t order, double Fl, double Fu)
-
122  : Sink<Scalar>(), Source(), _enabled(true), _order(std::max(size_t(1), order)), _Fl(Fl), _Fu(Fu),
+
122  : Sink<Scalar>(), Source(), _enabled(true), _order(std::max(size_t(1), order)), _Fl(Fl), _Fu(Fu),
123  _Fs(0), _alpha(_order, 0), _ring(_order), _ring_offset(0)
124  {
125  // pass...
@@ -284,11 +285,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
219  else if (_buffer.isUnused()) { _process(buffer, _buffer); }
220  else {
221 #ifdef SDR_DEBUG
-
222  LogMessage msg(LOG_WARNING);
+
222  LogMessage msg(LOG_WARNING);
223  msg << "FIR Filter: Drop buffer, output buffer still in use.";
224  Logger::get().log(msg);
225 #endif
-
226  }
+
226  }
227  }
228 
229 protected:
@@ -383,7 +384,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
void _process(const Buffer< Scalar > &in, const Buffer< Scalar > &out)
performs the actual computation
Definition: firfilter.hh:231
Typed sink.
Definition: node.hh:192
double freq() const
Returns the filter frequency.
Definition: firfilter.hh:302
+
Definition: afsk.hh:6
bool isEmpty() const
Returns true if the buffer is invalid/empty.
Definition: buffer.hh:77
+
Definition: operators.hh:9
FIRHighPass(size_t order, double Fc)
Constructor.
Definition: firfilter.hh:297
bool hasSampleRate() const
If true, the configuration has a sample rate.
Definition: node.hh:75
Generic source class.
Definition: node.hh:213
@@ -395,7 +398,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
bool hasType() const
If true, the configuration has a type.
Definition: node.hh:69
double lowerFreq() const
Returns the lower edge frequency.
Definition: firfilter.hh:156
virtual void setConfig(const Config &config)
Stores the configuration and propergates it if the configuration has been changed.
Definition: node.cc:98
-
Buffer< Scalar > _ring
A "ring-buffer" used to perform the filtering.
Definition: firfilter.hh:265
+
Buffer< Scalar > _ring
A "ring-buffer" used to perform the filtering.
Definition: firfilter.hh:265
Buffer< T > head(size_t n) const
Returns a new view on this buffer.
Definition: buffer.hh:237
FIRLowPass(size_t order, double Fc)
Constructor.
Definition: firfilter.hh:280
Implements the calculation of the filter coefficients for the use in the FIRFilter template class...
Definition: firfilter.hh:63
@@ -412,9 +415,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
static void coeffs(std::vector< double > &alpha, double Fl, double Fu, double Fs)
Calculates the filter coefficients.
Definition: firfilter.hh:42
static Logger & get()
Returns the singleton instance of the logger.
Definition: logger.cc:89
The configuration error class.
Definition: exception.hh:24
-
A log message.
Definition: logger.hh:21
+
A log message.
Definition: logger.hh:22
size_t bufferSize() const
Returns the max.
Definition: node.hh:83
-
size_t _ring_offset
Offset of the "ring-buffer".
Definition: firfilter.hh:267
+
size_t _ring_offset
Offset of the "ring-buffer".
Definition: firfilter.hh:267
virtual void setOrder(size_t order)
Sets the order of the filter and updates the filter coefficients.
Definition: firfilter.hh:142
size_t order() const
Returns the order of the filter.
Definition: firfilter.hh:140
double uppertFreq() const
Returns the upper edge frequency.
Definition: firfilter.hh:164
@@ -424,9 +427,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
bool enabled() const
Returns true if the filter is enabled.
Definition: firfilter.hh:135
void setFreq(double freq)
Sets the filter frequency.
Definition: firfilter.hh:304
std::vector< double > _alpha
The current filter coefficients.
Definition: firfilter.hh:263
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
High-pass FIR filter specialization.
Definition: firfilter.hh:293
-
bool isUnused() const
We assume here that buffers are owned by some object: A buffer is therefore "unused" if the owner hol...
Definition: buffer.hh:87
+
bool isUnused() const
We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner hold...
Definition: buffer.hh:87
void setFreq(double freq)
Sets the filter frequency.
Definition: firfilter.hh:287
void setLowerFreq(double Fl)
Sets the lower edge frequency.
Definition: firfilter.hh:158
double _Fl
The lower edge frequency.
Definition: firfilter.hh:257
@@ -440,9 +443,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/freqshift_8hh_source.html b/freqshift_8hh_source.html index a490d9e..0fb1f08 100644 --- a/freqshift_8hh_source.html +++ b/freqshift_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/freqshift.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/freqshift.hh Source File + @@ -32,7 +33,7 @@ - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -91,14 +92,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
1 #ifndef __SDR_FREQSHIFT_HH__
-
2 #define __SDR_FREQSHIFT_HH__
-
3 
+
2 #define __SDR_FREQSHIFT_HH__
+
3 
4 #include "config.hh"
5 #include "traits.hh"
6 #include "node.hh"
7 #include "operators.hh"
8 
-
9 namespace sdr {
+
9 namespace sdr {
10 
13 template <class Scalar>
@@ -135,75 +136,79 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
55  }
56 
- +
58  inline CSScalar applyFrequencyShift(CSScalar value)
59  {
60  // If frequency shift is actually 0 -> return
61  if (0 == _lut_inc) { return value; }
62  // Get index, idx = (_lut_count/256)
63  size_t idx = (_lut_count>>8);
-
64  if (0 > _freq_shift) { idx = _lut_size - idx - 1; }
-
65  value = ((_lut[idx] * value) >> Traits<Scalar>::shift);
-
66  // Incement _lut_count
- -
68  // _lut_count modulo (_lut_size*256)
-
69  while (_lut_count >= (_lut_size<<8)) { _lut_count -= (_lut_size<<8); }
-
70  return value;
-
71  }
-
72 
-
73 protected:
- -
76  // Every sample increments the LUT index by lut_inc/256.
-
77  // The multiple is needed as ratio between the frequency shift _Fc and the sample rate _Fs
-
78  // may not result in an integer increment. By simply flooring _lut_size*_Fc/_Fs, the actual
-
79  // down conversion may be much smaller than actual reuqired. Hence, the counter in therefore
-
80  // incremented by the integer (256*_lut_size*_Fc/_Fs) and the index is then obtained by
-
81  // dividing _lut_count by 256 (right shift 8 bits).
-
82  _lut_inc = (_lut_size*(1<<8)*std::abs(_freq_shift))/_Fs;
-
83  _lut_count = 0;
-
84  }
-
85 
-
86 protected:
-
88  double _freq_shift;
-
90  double _Fs;
-
92  size_t _lut_inc;
-
94  size_t _lut_count;
- -
97 
-
98 protected:
-
100  static const size_t _lut_size = 128;
-
101 };
-
102 
-
103 
-
104 }
+
64  // Handle negative frequency shifts
+
65  if (0 > _freq_shift) { idx = _lut_size - idx - 1; }
+
66  // Apply
+
67  value = ((_lut[idx] * value) >> Traits<Scalar>::shift);
+
68  // Incement _lut_count
+ +
70  // _lut_count modulo (_lut_size*256)
+
71  while (_lut_count >= (_lut_size<<8)) { _lut_count -= (_lut_size<<8); }
+
72  // Done.
+
73  return value;
+
74  }
+
75 
+
76 protected:
+ +
79  // Every sample increments the LUT index by lut_inc/256.
+
80  // The multiple is needed as ratio between the frequency shift _Fc and the sample rate _Fs
+
81  // may not result in an integer increment. By simply flooring _lut_size*_Fc/_Fs, the actual
+
82  // down conversion may be much smaller than actual reuqired. Hence, the counter is therefore
+
83  // incremented by the integer (256*_lut_size*_Fc/_Fs) and the index is then obtained by
+
84  // dividing _lut_count by 256 (right shift 8 bits).
+
85  _lut_inc = (_lut_size*(1<<8)*std::abs(_freq_shift))/_Fs;
+
86  _lut_count = 0;
+
87  }
+
88 
+
89 protected:
+
91  double _freq_shift;
+
93  double _Fs;
+
95  size_t _lut_inc;
+
97  size_t _lut_count;
+ +
100 
+
101 protected:
+
103  static const size_t _lut_size = 128;
+
104 };
105 
-
106 #endif // FREQSHIFT_HH
+
106 
+
107 }
+
108 
+
109 #endif // FREQSHIFT_HH
double frequencyShift() const
Returns the frequency shift.
Definition: freqshift.hh:51
-
Buffer< CSScalar > _lut
The LUT.
Definition: freqshift.hh:96
+
Buffer< CSScalar > _lut
The LUT.
Definition: freqshift.hh:99
virtual void setSampleRate(double Fs)
Sets the sample rate and updates the LUT.
Definition: freqshift.hh:46
+
Definition: afsk.hh:6
virtual void setFrequencyShift(double F)
Sets the frequency shift and updates the LUT.
Definition: freqshift.hh:53
-
size_t _lut_inc
The LUT increment.
Definition: freqshift.hh:92
+
size_t _lut_inc
The LUT increment.
Definition: freqshift.hh:95
virtual ~FreqShiftBase()
Destructor.
Definition: freqshift.hh:39
double sampleRate() const
Returns the sample rate.
Definition: freqshift.hh:44
std::complex< SScalar > CSScalar
The complex compute (super) scalar of the input type.
Definition: freqshift.hh:22
FreqShiftBase(double F, double Fs)
Constructor.
Definition: freqshift.hh:26
std::complex< Scalar > CScalar
The complex input signal.
Definition: freqshift.hh:18
Traits< Scalar >::SScalar SScalar
The compute (super) scalar of the input type.
Definition: freqshift.hh:20
-
A performant implementation of a frequency shift operation on integer signals.
Definition: freqshift.hh:14
-
void _update_lut_incr()
Updates the multiplier LUT.
Definition: freqshift.hh:75
+
A performant implementation of a frequency-shift operation on integer signals.
Definition: freqshift.hh:14
+
void _update_lut_incr()
Updates the multiplier LUT.
Definition: freqshift.hh:78
CSScalar applyFrequencyShift(CSScalar value)
Performs the frequency shift on a single sample.
Definition: freqshift.hh:58
-
void unref()
Dereferences the buffer.
Definition: buffer.cc:61
+
void unref()
Dereferences the buffer.
Definition: buffer.cc:63
Forward declaration of type tratis template.
Definition: traits.hh:20
-
size_t _lut_count
The LUT index counter.
Definition: freqshift.hh:94
-
double _freq_shift
The current frequency shift.
Definition: freqshift.hh:88
-
static const size_t _lut_size
The size of the LUT.
Definition: freqshift.hh:100
+
size_t _lut_count
The LUT index counter.
Definition: freqshift.hh:97
+
double _freq_shift
The current frequency shift.
Definition: freqshift.hh:91
+
static const size_t _lut_size
The size of the LUT.
Definition: freqshift.hh:103
-
double _Fs
The current sample rate.
Definition: freqshift.hh:90
+
double _Fs
The current sample rate.
Definition: freqshift.hh:93
diff --git a/functions.html b/functions.html index 33567df..6bd1fd4 100644 --- a/functions.html +++ b/functions.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
@@ -128,8 +129,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • __rtl_sdr_callback() : sdr::RTLSource
  • -
  • __rtl_srd_parallel_main() -: sdr::RTLSource +
  • __rtl_sdr_parallel_main() +: sdr::RTLSource
  • _agc_enabled : sdr::RTLSource @@ -155,22 +156,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _b_stored : sdr::RawRingBuffer
  • +
  • _baud +: sdr::AFSK +
  • _beta : sdr::BPSK31< Scalar >
  • +
  • _bitbuffer +: sdr::AX25 +
  • +
  • _bitcount +: sdr::Baudot +
  • _bitsPerSample : sdr::WavSink< Scalar >
  • +
  • _bitsPerSymbol +: sdr::Baudot +
  • +
  • _bitstream +: sdr::AX25 +, sdr::Baudot +
  • _block_size : sdr::FilterNode< Scalar > , sdr::FilterSink< Scalar > , sdr::FilterSource< Scalar >
  • _buffer -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > , sdr::AutoCast< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::Cast< iScalar, oScalar > , sdr::CombineSink< Scalar > @@ -237,13 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FMDemod< iScalar, oScalar >
  • _cast -: sdr::AutoCast< Scalar > -
  • -
  • _cint16_cint8() -: sdr::AutoCast< Scalar > -
  • -
  • _cint8_cint16() -: sdr::AutoCast< Scalar > +: sdr::AutoCast< Scalar >
  • _code_table : sdr::Varicode @@ -252,11 +266,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::Combine< Scalar > , sdr::Source
  • -
  • _cuint8_cint16() -: sdr::AutoCast< Scalar > -
  • -
  • _cuint8_cint8() -: sdr::AutoCast< Scalar > +
  • _corrLen +: sdr::AFSK
  • _currentContellation() : sdr::BPSK31< Scalar > @@ -271,11 +282,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::PortSource< Scalar >
  • _dl -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • _dl_idx -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • _do_scale @@ -312,6 +325,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _fft_fwd : sdr::FilterNode< Scalar >
  • +
  • _figure +: sdr::Baudot +
  • _file : sdr::WavSink< Scalar > , sdr::WavSource @@ -326,6 +342,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _Fl : sdr::FIRFilter< Scalar, FilterCoeffs >
  • +
  • _Fmark +: sdr::AFSK +
  • _Fmax : sdr::BPSK31< Scalar >
  • @@ -370,11 +389,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FreqShiftBase< Scalar > , sdr::IQBaseBand< Scalar > +
  • _Fspace +: sdr::AFSK +
  • _Fu : sdr::FIRFilter< Scalar, FilterCoeffs >
  • _function -: sdr::Delegate< T > +: sdr::Delegate< T >
  • _gain : sdr::AGC< Scalar > @@ -385,12 +407,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _gain_omega : sdr::BPSK31< Scalar >
  • +
  • _gainOmega +: sdr::AFSK +
  • _gains : sdr::RTLSource
  • _getNormal() : sdr::GWNSource< Scalar >
  • +
  • _getSymbol() +: sdr::AFSK +
  • _handler : sdr::Logger
  • @@ -482,9 +510,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _last_value : sdr::FMDemod< iScalar, oScalar >
  • +
  • _lastBits +: sdr::AFSK +
  • +
  • _lastSymSum +: sdr::AFSK +
  • _left : sdr::SubSample< Scalar >
  • +
  • _letter +: sdr::Baudot +
  • _level : sdr::LogMessage , sdr::StreamLogHandler @@ -506,9 +543,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::BaseBand< Scalar > , sdr::FreqShiftBase< Scalar >
  • +
  • _lutIdx +: sdr::AFSK +
  • _main() : sdr::Queue
  • +
  • _markHist +: sdr::AFSK +
  • +
  • _markLUT +: sdr::AFSK +
  • +
  • _mask +: sdr::Baudot +
  • _max_omega : sdr::BPSK31< Scalar >
  • @@ -518,10 +567,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _min_omega : sdr::BPSK31< Scalar >
  • +
  • _mode +: sdr::AFSK +, sdr::Baudot +
  • _mu -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • +
  • _muIncr +: sdr::AFSK +
  • _N : sdr::FFTPlan< Scalar > , sdr::Interleave< Scalar > @@ -543,11 +600,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::SubSample< Scalar >
  • _omega -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar >
  • _omega_rel : sdr::BPSK31< Scalar >
  • +
  • _omegaMax +: sdr::AFSK +
  • +
  • _omegaMin +: sdr::AFSK +
  • _onStart : sdr::Queue
  • @@ -591,9 +655,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _parent : sdr::CombineSink< Scalar >
  • +
  • _pattern +: sdr::Baudot +
  • _period : sdr::FracSubSampleBase< Scalar >
  • +
  • _phase +: sdr::AFSK +
  • _phaseError() : sdr::BPSK31< Scalar >
  • @@ -611,9 +681,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FMDemod< iScalar, oScalar > , sdr::IQBalance< Scalar > , sdr::IQBaseBand< Scalar > -, sdr::SignedToUnsigned +, sdr::SignedToUnsigned , sdr::SubSample< Scalar > -, sdr::UnsignedToSigned +, sdr::UnsignedToSigned , sdr::USBDemod< Scalar >
  • _process_int16() @@ -625,7 +695,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::UnsignedToSigned
  • _ptr -: sdr::RawBuffer +: sdr::AX25 +, sdr::RawBuffer
  • _queue : sdr::Queue @@ -658,6 +729,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _running : sdr::Queue
  • +
  • _rxbuffer +: sdr::AX25 +
  • _sample_count : sdr::BaseBand< Scalar > , sdr::FracSubSampleBase< Scalar > @@ -673,7 +747,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::WavSource
  • _sampleRate -: sdr::Config +: sdr::AFSK +, sdr::Config , sdr::IQSigGen< Scalar > , sdr::PortSource< Scalar > , sdr::SigGen< Scalar > @@ -734,6 +809,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _sourceBs : sdr::IQBaseBand< Scalar >
  • +
  • _spaceHist +: sdr::AFSK +
  • +
  • _spaceLUT +: sdr::AFSK +
  • +
  • _state +: sdr::AX25 +
  • +
  • _stopHBits +: sdr::Baudot +
  • _storage_size : sdr::RawBuffer
  • @@ -747,6 +834,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::StreamLogHandler , sdr::StreamSink< Scalar > , sdr::StreamSource< Scalar > +, sdr::TextDump
  • _streamIsOpen : sdr::PortSource< Scalar > @@ -758,6 +846,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _superSample : sdr::BPSK31< Scalar >
  • +
  • _symbolIdx +: sdr::AFSK +
  • +
  • _symbolRate +: sdr::AFSK +
  • +
  • _symbols +: sdr::AFSK +
  • +
  • _symSum +: sdr::AFSK +
  • _t : sdr::IQSigGen< Scalar > , sdr::SigGen< Scalar > @@ -797,12 +897,27 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _uint16_cint16() : sdr::AutoCast< Scalar >
  • +
  • _uint16_cint8() +: sdr::AutoCast< Scalar > +
  • +
  • _uint16_int16() +: sdr::AutoCast< Scalar > +
  • +
  • _uint16_int8() +: sdr::AutoCast< Scalar > +
  • _uint8_cint16() : sdr::AutoCast< Scalar >
  • _uint8_cint8() : sdr::AutoCast< Scalar >
  • +
  • _uint8_int16() +: sdr::AutoCast< Scalar > +
  • +
  • _uint8_int8() +: sdr::AutoCast< Scalar > +
  • _update_filter_kernel() : sdr::BaseBand< Scalar > , sdr::IQBaseBand< Scalar > @@ -834,9 +949,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_a.html b/functions_a.html index 253a83e..24f5ca8 100644 --- a/functions_a.html +++ b/functions_a.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -147,6 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • addStop() : sdr::Queue
  • +
  • AFSK() +: sdr::AFSK +
  • AGC() : sdr::AGC< Scalar >
  • @@ -174,13 +178,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • AutoCast() : sdr::AutoCast< Scalar >
  • +
  • AX25() +: sdr::AX25 +
  • diff --git a/functions_b.html b/functions_b.html index ef1ac39..5e444a7 100644 --- a/functions_b.html +++ b/functions_b.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -131,6 +132,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • BaseBand() : sdr::BaseBand< Scalar >
  • +
  • Baudot() +: sdr::Baudot +
  • BlockingSource() : sdr::BlockingSource
  • @@ -142,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • buffer() : sdr::DebugStore< Scalar > -, sdr::Queue::Message +, sdr::Queue::Message
  • BufferNode() : sdr::BufferNode< Scalar > @@ -171,9 +175,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_c.html b/functions_c.html index eeb03f8..fb52643 100644 --- a/functions_c.html +++ b/functions_c.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -152,10 +153,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::CombineSink< Scalar >
  • config() -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > , sdr::AutoCast< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::BufferNode< Scalar > , sdr::Cast< iScalar, oScalar > @@ -186,6 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::SinkBase , sdr::StreamSink< Scalar > , sdr::SubSample< Scalar > +, sdr::TextDump , sdr::ToComplex< iScalar, oScalar > , sdr::UnsignedToSigned , sdr::USBDemod< Scalar > @@ -193,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::WavSink< Scalar >
  • ConfigError() -: sdr::ConfigError +: sdr::ConfigError
  • connect() : sdr::Source @@ -213,9 +218,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_d.html b/functions_d.html index 0f0a110..e76b030 100644 --- a/functions_d.html +++ b/functions_d.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -164,9 +165,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_e.html b/functions_e.html index a0f9d92..908686f 100644 --- a/functions_e.html +++ b/functions_e.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -144,9 +145,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_enum.html b/functions_enum.html index 755f98a..33a397f 100644 --- a/functions_enum.html +++ b/functions_enum.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Enumerations + @@ -32,7 +33,7 @@ - + @@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -102,6 +103,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Direction : sdr::FFT
  • +
  • Mode +: sdr::AFSK +, sdr::Baudot +
  • +
  • StopBits +: sdr::Baudot +
  • Type : sdr::Config , sdr::Options::Value @@ -110,9 +118,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_eval.html b/functions_eval.html index 1406de0..49bd29d 100644 --- a/functions_eval.html +++ b/functions_eval.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Enumerator + @@ -32,7 +33,7 @@ - + @@ -85,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -99,6 +100,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • ANY : sdr::Options
  • +
  • FIGURES +: sdr::Baudot +
  • FLAG : sdr::Options
  • @@ -110,12 +114,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::Options , sdr::Options::Value +
  • LETTERS +: sdr::Baudot +
  • NONE : sdr::Options::Value
  • +
  • NORMAL +: sdr::AFSK +
  • +
  • STOP1 +: sdr::Baudot +
  • +
  • STOP15 +: sdr::Baudot +
  • +
  • STOP2 +: sdr::Baudot +
  • STRING : sdr::Options::Value
  • +
  • TRANSITION +: sdr::AFSK +
  • Type_cf32 : sdr::Config
  • @@ -156,9 +178,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_f.html b/functions_f.html index a273ac6..7e29212 100644 --- a/functions_f.html +++ b/functions_f.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -130,6 +131,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FFTPlan< double > , sdr::FFTPlan< float > +
  • FIGURES +: sdr::Baudot +
  • filterFrequency() : sdr::IQBaseBand< Scalar >
  • @@ -205,9 +209,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func.html b/functions_func.html index 4082e83..1b44dcf 100644 --- a/functions_func.html +++ b/functions_func.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -128,24 +129,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • __rtl_sdr_callback() : sdr::RTLSource
  • -
  • __rtl_srd_parallel_main() -: sdr::RTLSource +
  • __rtl_sdr_parallel_main() +: sdr::RTLSource
  • _calc() : sdr::FFTPlan< Scalar >
  • -
  • _cint16_cint8() -: sdr::AutoCast< Scalar > -
  • -
  • _cint8_cint16() -: sdr::AutoCast< Scalar > -
  • -
  • _cuint8_cint16() -: sdr::AutoCast< Scalar > -
  • -
  • _cuint8_cint8() -: sdr::AutoCast< Scalar > -
  • _currentContellation() : sdr::BPSK31< Scalar >
  • @@ -159,6 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _getNormal() : sdr::GWNSource< Scalar >
  • +
  • _getSymbol() +: sdr::AFSK +
  • _hasTransition() : sdr::BPSK31< Scalar >
  • @@ -232,12 +224,27 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _uint16_cint16() : sdr::AutoCast< Scalar >
  • +
  • _uint16_cint8() +: sdr::AutoCast< Scalar > +
  • +
  • _uint16_int16() +: sdr::AutoCast< Scalar > +
  • +
  • _uint16_int8() +: sdr::AutoCast< Scalar > +
  • _uint8_cint16() : sdr::AutoCast< Scalar >
  • _uint8_cint8() : sdr::AutoCast< Scalar >
  • +
  • _uint8_int16() +: sdr::AutoCast< Scalar > +
  • +
  • _uint8_int8() +: sdr::AutoCast< Scalar > +
  • _update_filter_kernel() : sdr::BaseBand< Scalar > , sdr::IQBaseBand< Scalar > @@ -258,9 +265,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_func_a.html b/functions_func_a.html index c3e7e11..6a0208a 100644 --- a/functions_func_a.html +++ b/functions_func_a.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -147,6 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • addStop() : sdr::Queue
  • +
  • AFSK() +: sdr::AFSK +
  • AGC() : sdr::AGC< Scalar >
  • @@ -168,13 +172,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • AutoCast() : sdr::AutoCast< Scalar >
  • +
  • AX25() +: sdr::AX25 +
  • diff --git a/functions_func_b.html b/functions_func_b.html index 1a84e68..ff7446e 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -131,6 +132,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • BaseBand() : sdr::BaseBand< Scalar >
  • +
  • Baudot() +: sdr::Baudot +
  • BlockingSource() : sdr::BlockingSource
  • @@ -142,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • buffer() : sdr::DebugStore< Scalar > -, sdr::Queue::Message +, sdr::Queue::Message
  • BufferNode() : sdr::BufferNode< Scalar > @@ -171,9 +175,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_func_c.html b/functions_func_c.html index 2614542..9585c10 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -152,10 +153,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::CombineSink< Scalar >
  • config() -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > , sdr::AutoCast< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::BufferNode< Scalar > , sdr::Cast< iScalar, oScalar > @@ -186,6 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::SinkBase , sdr::StreamSink< Scalar > , sdr::SubSample< Scalar > +, sdr::TextDump , sdr::ToComplex< iScalar, oScalar > , sdr::UnsignedToSigned , sdr::USBDemod< Scalar > @@ -193,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::WavSink< Scalar >
  • ConfigError() -: sdr::ConfigError +: sdr::ConfigError
  • connect() : sdr::Source @@ -202,9 +207,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_func_d.html b/functions_func_d.html index 9e404d3..e059847 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -161,9 +162,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_e.html b/functions_func_e.html index ea75d59..f588842 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -144,9 +145,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_f.html b/functions_func_f.html index e5a7379..79cd699 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -198,9 +199,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_g.html b/functions_func_g.html index 8dc61a6..14fe9e3 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -147,9 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_h.html b/functions_func_h.html index 38d6cae..0af0db6 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -170,9 +171,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_i.html b/functions_func_i.html index e998f27..3579c48 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -190,9 +191,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_l.html b/functions_func_l.html index dcba266..aa71ebf 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -147,9 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_m.html b/functions_func_m.html index cc7b9f3..883e58c 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -129,15 +130,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::LogMessage
  • Message() -: sdr::Queue::Message +: sdr::Queue::Message
  • diff --git a/functions_func_n.html b/functions_func_n.html index f6279bc..ebd9c33 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -157,9 +158,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_o.html b/functions_func_o.html index 0cd6891..f5d7fe4 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -172,9 +173,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_p.html b/functions_func_p.html index db67ed9..7b4db32 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -138,9 +139,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::Options
  • process() -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::BufferNode< Scalar > , sdr::Cast< iScalar, oScalar > @@ -163,6 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::Sink< Scalar > , sdr::StreamSink< Scalar > , sdr::SubSample< Scalar > +, sdr::TextDump , sdr::ToComplex< iScalar, oScalar > , sdr::USBDemod< Scalar > , sdr::Varicode @@ -185,9 +190,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_func_q.html b/functions_func_q.html index 5073dd8..46493c2 100644 --- a/functions_func_q.html +++ b/functions_func_q.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -132,9 +133,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_r.html b/functions_func_r.html index 15e3955..c16614f 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -173,9 +174,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_s.html b/functions_func_s.html index bba99f6..0215e9c 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -295,9 +296,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_t.html b/functions_func_t.html index 309778d..93cc0eb 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -138,6 +139,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • terminate() : sdr::PortAudio
  • +
  • TextDump() +: sdr::TextDump +
  • ToComplex() : sdr::ToComplex< iScalar, oScalar >
  • @@ -161,9 +165,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_u.html b/functions_func_u.html index 988d67e..e997a10 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -125,6 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');  

    - u -

    diff --git a/functions_func_v.html b/functions_func_v.html index b20f20a..499ab7b 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -135,9 +136,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_w.html b/functions_func_w.html index 1ce1373..2990cf4 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -141,9 +142,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_func_~.html b/functions_func_~.html index 9ba91c5..10e25a7 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Functions + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -125,9 +126,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');  

    - ~ -

    diff --git a/functions_g.html b/functions_g.html index d574f8e..5c2b1d5 100644 --- a/functions_g.html +++ b/functions_g.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -147,9 +148,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_h.html b/functions_h.html index a83a91d..ca36ecf 100644 --- a/functions_h.html +++ b/functions_h.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -173,9 +174,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_i.html b/functions_i.html index c5f1a57..db48b41 100644 --- a/functions_i.html +++ b/functions_i.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -197,9 +198,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_l.html b/functions_l.html index 6c6dddb..87d6567 100644 --- a/functions_l.html +++ b/functions_l.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -125,6 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Here is a list of all documented class members with links to the class documentation for each member:

    - l -

    diff --git a/functions_m.html b/functions_m.html index 08274ab..8d73940 100644 --- a/functions_m.html +++ b/functions_m.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -131,13 +132,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Message() : sdr::Queue::Message
  • +
  • Mode +: sdr::AFSK +, sdr::Baudot +
  • diff --git a/functions_n.html b/functions_n.html index 34bb04f..bf13651 100644 --- a/functions_n.html +++ b/functions_n.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -146,6 +147,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • norm2() : sdr::Buffer< T >
  • +
  • NORMAL +: sdr::AFSK +
  • notifyConfig() : sdr::Combine< Scalar >
  • @@ -163,9 +167,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_o.html b/functions_o.html index b1ad070..4ad3fb2 100644 --- a/functions_o.html +++ b/functions_o.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -175,9 +176,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_p.html b/functions_p.html index dfe8560..5b25e6e 100644 --- a/functions_p.html +++ b/functions_p.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -138,9 +139,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::Options
  • process() -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::BufferNode< Scalar > , sdr::Cast< iScalar, oScalar > @@ -163,6 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::Sink< Scalar > , sdr::StreamSink< Scalar > , sdr::SubSample< Scalar > +, sdr::TextDump , sdr::ToComplex< iScalar, oScalar > , sdr::USBDemod< Scalar > , sdr::Varicode @@ -185,9 +190,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_q.html b/functions_q.html index ffef245..737eba4 100644 --- a/functions_q.html +++ b/functions_q.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -132,9 +133,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_r.html b/functions_r.html index dded5d0..9a9b3d6 100644 --- a/functions_r.html +++ b/functions_r.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -187,9 +188,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_s.html b/functions_s.html index b05004b..ddf52a8 100644 --- a/functions_s.html +++ b/functions_s.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -344,6 +345,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::Queue , sdr::RTLSource +
  • STOP1 +: sdr::Baudot +
  • +
  • STOP15 +: sdr::Baudot +
  • +
  • STOP2 +: sdr::Baudot +
  • +
  • StopBits +: sdr::Baudot +
  • storageSize() : sdr::RawBuffer
  • @@ -378,9 +391,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_t.html b/functions_t.html index 258bf35..55e058b 100644 --- a/functions_t.html +++ b/functions_t.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -138,6 +139,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • terminate() : sdr::PortAudio
  • +
  • TextDump() +: sdr::TextDump +
  • ToComplex() : sdr::ToComplex< iScalar, oScalar >
  • @@ -150,12 +154,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • toString() : sdr::Options::Value
  • -
  • Type -: sdr::Config +
  • TRANSITION +: sdr::AFSK
  • type() : sdr::Config -, sdr::Options::Definition +
  • +
  • Type +: sdr::Config +
  • +
  • type +: sdr::Options::Definition
  • Type : sdr::Options::Value @@ -206,9 +215,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_type.html b/functions_type.html index b9a02b7..2492b08 100644 --- a/functions_type.html +++ b/functions_type.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Typedefs + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -195,9 +196,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_u.html b/functions_u.html index be7c2dc..a875f8e 100644 --- a/functions_u.html +++ b/functions_u.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -125,6 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Here is a list of all documented class members with links to the class documentation for each member:

    - u -

    diff --git a/functions_v.html b/functions_v.html index a7084b7..1c15d0e 100644 --- a/functions_v.html +++ b/functions_v.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -135,9 +136,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_vars.html b/functions_vars.html index 61702c5..d1353de 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Variables + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -131,22 +132,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _b_stored : sdr::RawRingBuffer
  • +
  • _baud +: sdr::AFSK +
  • _beta : sdr::BPSK31< Scalar >
  • +
  • _bitbuffer +: sdr::AX25 +
  • +
  • _bitcount +: sdr::Baudot +
  • _bitsPerSample : sdr::WavSink< Scalar >
  • +
  • _bitsPerSymbol +: sdr::Baudot +
  • +
  • _bitstream +: sdr::AX25 +, sdr::Baudot +
  • _block_size : sdr::FilterNode< Scalar > , sdr::FilterSink< Scalar > , sdr::FilterSource< Scalar >
  • _buffer -: sdr::AGC< Scalar > +: sdr::AFSK +, sdr::AGC< Scalar > , sdr::AMDemod< Scalar > , sdr::AutoCast< Scalar > +, sdr::AX25 , sdr::BaseBand< Scalar > +, sdr::Baudot , sdr::BPSK31< Scalar > , sdr::Cast< iScalar, oScalar > , sdr::CombineSink< Scalar > @@ -210,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FMDemod< iScalar, oScalar >
  • _cast -: sdr::AutoCast< Scalar > +: sdr::AutoCast< Scalar >
  • _code_table : sdr::Varicode @@ -219,6 +239,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::Combine< Scalar > , sdr::Source
  • +
  • _corrLen +: sdr::AFSK +
  • _delta : sdr::FreqShift< Scalar >
  • @@ -229,11 +252,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::PortSource< Scalar >
  • _dl -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • _dl_idx -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • _do_scale @@ -267,6 +292,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _fft_fwd : sdr::FilterNode< Scalar >
  • +
  • _figure +: sdr::Baudot +
  • _file : sdr::WavSink< Scalar > , sdr::WavSource @@ -277,6 +305,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _Fl : sdr::FIRFilter< Scalar, FilterCoeffs >
  • +
  • _Fmark +: sdr::AFSK +
  • _Fmax : sdr::BPSK31< Scalar >
  • @@ -321,11 +352,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FreqShiftBase< Scalar > , sdr::IQBaseBand< Scalar > +
  • _Fspace +: sdr::AFSK +
  • _Fu : sdr::FIRFilter< Scalar, FilterCoeffs >
  • _function -: sdr::Delegate< T > +: sdr::Delegate< T >
  • _gain : sdr::AGC< Scalar > @@ -336,6 +370,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _gain_omega : sdr::BPSK31< Scalar >
  • +
  • _gainOmega +: sdr::AFSK +
  • _gains : sdr::RTLSource
  • @@ -403,9 +440,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _last_value : sdr::FMDemod< iScalar, oScalar >
  • +
  • _lastBits +: sdr::AFSK +
  • +
  • _lastSymSum +: sdr::AFSK +
  • _left : sdr::SubSample< Scalar >
  • +
  • _letter +: sdr::Baudot +
  • _level : sdr::LogMessage , sdr::StreamLogHandler @@ -427,6 +473,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : sdr::BaseBand< Scalar > , sdr::FreqShiftBase< Scalar >
  • +
  • _lutIdx +: sdr::AFSK +
  • +
  • _markHist +: sdr::AFSK +
  • +
  • _markLUT +: sdr::AFSK +
  • +
  • _mask +: sdr::Baudot +
  • _max_omega : sdr::BPSK31< Scalar >
  • @@ -436,10 +494,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _min_omega : sdr::BPSK31< Scalar >
  • +
  • _mode +: sdr::AFSK +, sdr::Baudot +
  • _mu -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar > , sdr::InpolSubSampler< iScalar, oScalar >
  • +
  • _muIncr +: sdr::AFSK +
  • _N : sdr::FFTPlan< Scalar > , sdr::Interleave< Scalar > @@ -458,11 +524,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::SubSample< Scalar >
  • _omega -: sdr::BPSK31< Scalar > +: sdr::AFSK +, sdr::BPSK31< Scalar >
  • _omega_rel : sdr::BPSK31< Scalar >
  • +
  • _omegaMax +: sdr::AFSK +
  • +
  • _omegaMin +: sdr::AFSK +
  • _onStart : sdr::Queue
  • @@ -503,9 +576,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _parent : sdr::CombineSink< Scalar >
  • +
  • _pattern +: sdr::Baudot +
  • _period : sdr::FracSubSampleBase< Scalar >
  • +
  • _phase +: sdr::AFSK +
  • _plan : sdr::FFTPlan< double > , sdr::FFTPlan< float > @@ -513,11 +592,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::FilterSource< Scalar >
  • _process -: sdr::SignedToUnsigned -, sdr::UnsignedToSigned +: sdr::SignedToUnsigned +, sdr::UnsignedToSigned
  • _ptr -: sdr::RawBuffer +: sdr::AX25 +, sdr::RawBuffer
  • _queue : sdr::Queue @@ -547,6 +627,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _running : sdr::Queue
  • +
  • _rxbuffer +: sdr::AX25 +
  • _sample_count : sdr::BaseBand< Scalar > , sdr::FracSubSampleBase< Scalar > @@ -562,7 +645,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::WavSource
  • _sampleRate -: sdr::Config +: sdr::AFSK +, sdr::Config , sdr::IQSigGen< Scalar > , sdr::PortSource< Scalar > , sdr::SigGen< Scalar > @@ -614,6 +698,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _sourceBs : sdr::IQBaseBand< Scalar >
  • +
  • _spaceHist +: sdr::AFSK +
  • +
  • _spaceLUT +: sdr::AFSK +
  • +
  • _state +: sdr::AX25 +
  • +
  • _stopHBits +: sdr::Baudot +
  • _storage_size : sdr::RawBuffer
  • @@ -627,6 +723,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , sdr::StreamLogHandler , sdr::StreamSink< Scalar > , sdr::StreamSource< Scalar > +, sdr::TextDump
  • _streamIsOpen : sdr::PortSource< Scalar > @@ -638,6 +735,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • _superSample : sdr::BPSK31< Scalar >
  • +
  • _symbolIdx +: sdr::AFSK +
  • +
  • _symbolRate +: sdr::AFSK +
  • +
  • _symbols +: sdr::AFSK +
  • +
  • _symSum +: sdr::AFSK +
  • _t : sdr::IQSigGen< Scalar > , sdr::SigGen< Scalar > @@ -689,9 +798,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • diff --git a/functions_vars_h.html b/functions_vars_h.html index 8df1327..f4c1d6d 100644 --- a/functions_vars_h.html +++ b/functions_vars_h.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Variables + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -114,9 +115,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_vars_n.html b/functions_vars_n.html index cec825f..fc43e13 100644 --- a/functions_vars_n.html +++ b/functions_vars_n.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Variables + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -114,9 +115,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_vars_s.html b/functions_vars_s.html index 2050dc0..bd75455 100644 --- a/functions_vars_s.html +++ b/functions_vars_s.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Variables + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -156,9 +157,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_vars_t.html b/functions_vars_t.html index e13ed9b..c33ef30 100644 --- a/functions_vars_t.html +++ b/functions_vars_t.html @@ -3,15 +3,16 @@ - + libsdr: Class Members - Variables + @@ -32,7 +33,7 @@ - + @@ -94,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -114,9 +115,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_w.html b/functions_w.html index 955d718..3647077 100644 --- a/functions_w.html +++ b/functions_w.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -141,9 +142,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/functions_~.html b/functions_~.html index 6923cc5..58dcc56 100644 --- a/functions_~.html +++ b/functions_~.html @@ -3,15 +3,16 @@ - + libsdr: Class Members + @@ -32,7 +33,7 @@ - + @@ -112,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -125,9 +126,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Here is a list of all documented class members with links to the class documentation for each member:

    - ~ -

    diff --git a/group__datanodes.html b/group__datanodes.html index 2e2f34e..0340e86 100644 --- a/group__datanodes.html +++ b/group__datanodes.html @@ -3,15 +3,16 @@ - + libsdr: Data handling nodes. + @@ -32,7 +33,7 @@ - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -78,7 +79,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    +Classes | +Enumerations
    Data handling nodes.
    @@ -90,51 +92,116 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    Classes

    class  sdr::AutoCast< Scalar > - This class performs some automatic casts to a certain buffer type if possible specified by the template argument. More...
    + This class performs some automatic casts to a certain buffer type (if possible) specified by the template argument. More...
    +  +class  sdr::Baudot + Implements a Baudot decoder. More...
      class  sdr::BufferNode< Scalar > - A simple buffering node, that ensures a fixed buffer size. More...
    + A simple buffering node, that ensures a fixed buffer size. More...
      class  sdr::Combine< Scalar > - A combine node. More...
    + A combine node. More...
      class  sdr::Interleave< Scalar > - Interleaves several input streams. More...
    + Interleaves several input streams. More...
      class  sdr::Varicode - Simple varicode (Huffman code) decoder node. More...
    + Simple varicode (Huffman code) decoder node. More...
      class  sdr::RealImagPart< Scalar > - Extracts the real or imaginary part of a complex valued data stream. More...
    + Extracts the real or imaginary part of a complex valued data stream. More...
      class  sdr::RealPart< Scalar > - Selects the real part of a complex signal. More...
    + Selects the real part of a complex signal. More...
      class  sdr::ImagPart< Scalar > - Selects the imaginary part of a complex signal. More...
    + Selects the imaginary part of a complex signal. More...
      class  sdr::ToComplex< iScalar, oScalar > - Tiny helper node to transform a real part into a complex, including a possible type-cast. More...
    + Tiny helper node to transform a real part into a complex, including a possible type-cast. More...
      class  sdr::Cast< iScalar, oScalar > - Explicit type cast node. More...
    + Explicit type cast node. More...
      class  sdr::UnsignedToSigned - Performs a reinterprete cast from an unsinged value to a singed one. More...
    + Performs a reinterprete cast from an unsinged value to a singed one. More...
      class  sdr::SignedToUnsigned - Performs a reinterprete cast from an unsinged value to a singed one. More...
    + Performs a reinterprete cast from an unsinged value to a singed one. More...
      + + + + + + + +

    +Enumerations

    enum  sdr::Baudot::Mode { sdr::Baudot::LETTERS, +sdr::Baudot::FIGURES + }
     Specifies the current code-tables. More...
     
    enum  sdr::Baudot::StopBits { sdr::Baudot::STOP1, +sdr::Baudot::STOP15, +sdr::Baudot::STOP2 + }
     Specifies the number of stop bits. More...
     

    Detailed Description

    This group collects all nodes related to data handling.

    I.e. type casts etc.

    +

    Enumeration Type Documentation

    + +
    +
    + + + + +
    enum sdr::Baudot::Mode
    +
    + +

    Specifies the current code-tables.

    + + + +
    Enumerator
    LETTERS  +

    Letters.

    +
    FIGURES  +

    Numbers, symbols etc.

    +
    + +
    +
    + +
    +
    + + + + +
    enum sdr::Baudot::StopBits
    +
    + +

    Specifies the number of stop bits.

    + + + + +
    Enumerator
    STOP1  +

    1 stop bit.

    +
    STOP15  +

    1.5 stop bits.

    +
    STOP2  +

    2 stop bits.

    +
    + +
    +
    diff --git a/group__demods.html b/group__demods.html index 2fd4093..440fb98 100644 --- a/group__demods.html +++ b/group__demods.html @@ -3,15 +3,16 @@ - + libsdr: Demodulator nodes. + @@ -32,7 +33,7 @@ - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -90,13 +91,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    Classes

    class  sdr::AMDemod< Scalar > - Amplitude modulation (AM) demodulator from an I/Q signal. More...
    + Amplitude modulation (AM) demodulator from an I/Q signal. More...
      class  sdr::USBDemod< Scalar > - SSB upper side band (USB) demodulator from an I/Q signal. More...
    + SSB upper side band (USB) demodulator from an I/Q signal. More...
      class  sdr::FMDemod< iScalar, oScalar > - Demodulates FM from an I/Q signal. More...
    + Demodulates FM from an I/Q signal. More...
     

    Detailed Description

    @@ -104,9 +105,9 @@ Classes
    diff --git a/group__filters.html b/group__filters.html index c63889e..0685776 100644 --- a/group__filters.html +++ b/group__filters.html @@ -3,15 +3,16 @@ - + libsdr: Filter and signal processing nodes. + @@ -32,7 +33,7 @@ - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -90,55 +91,55 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    Classes

    class  sdr::IQBaseBand< Scalar > - This class performs several operations on the complex (integral) input stream, it first filters out some part of the input stream using a FIR band pass (band pass is centerred around Ff with width width) then shifts the center frequency Fc to 0 and finally sub-samples the resulting stream. More...
    + This class performs several operations on the complex (integral) input stream, it first filters out some part of the input stream using a FIR band pass (band pass is centerred around Ff with width width) then shifts the center frequency Fc to 0 and finally sub-samples the resulting stream. More...
      class  sdr::BaseBand< Scalar > - This class performs several operations on the real input stream, It first filters out some part of the input stream using a FIR band pass filter then shifts the center frequency to 0 and finally sub-samples the resulting stream such that the selected base-band is well represented. More...
    + This class performs several operations on the real input stream, It first filters out some part of the input stream using a FIR band pass filter then shifts the center frequency to 0 and finally sub-samples the resulting stream such that the selected base-band is well represented. More...
      class  sdr::FMDeemph< Scalar > - A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal. More...
    + A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal. More...
      class  sdr::FilterNode< Scalar > - A FFT filter bank node wich consists of several filters. More...
    + A FFT filter bank node wich consists of several filters. More...
      class  sdr::FIRFilter< Scalar, FilterCoeffs > - Generic FIR filter class. More...
    + Generic FIR filter class. More...
      class  sdr::FIRLowPass< Scalar > - Low-pass FIR filter specialization. More...
    + Low-pass FIR filter specialization. More...
      class  sdr::FIRHighPass< Scalar > - High-pass FIR filter specialization. More...
    + High-pass FIR filter specialization. More...
      class  sdr::FIRBandPass< Scalar > - Band-pass FIR filter specialization. More...
    + Band-pass FIR filter specialization. More...
      class  sdr::FIRBandStop< Scalar > - Band-stop FIR filter specialization. More...
    + Band-stop FIR filter specialization. More...
      class  sdr::FreqShiftBase< Scalar > - A performant implementation of a frequency shift operation on integer signals. More...
    + A performant implementation of a frequency-shift operation on integer signals. More...
      class  sdr::Proxy - A NOP node. More...
    + A NOP node. More...
      class  sdr::SubSample< Scalar > - Simple averaging sub-sampler. More...
    + Simple averaging sub-sampler. More...
      class  sdr::InpolSubSampler< iScalar, oScalar > - An interpolating sub-sampler. More...
    + An interpolating sub-sampler. More...
      class  sdr::IQBalance< Scalar > - A simple node, that allows to balance an IQ signal. More...
    + A simple node, that allows to balance an IQ signal. More...
      class  sdr::FreqShift< Scalar > - Performs a frequency shift on a complex input signal, by multiplying it with $e^{i\omega t}$. More...
    + Performs a frequency shift on a complex input signal, by multiplying it with $e^{i\omega t}$. More...
      class  sdr::Scale< Scalar > - Simple scaling node. More...
    + Simple scaling node. More...
      class  sdr::AGC< Scalar > - An automatic gain control node. More...
    + An automatic gain control node. More...
     

    Detailed Description

    @@ -146,9 +147,9 @@ Classes
    diff --git a/group__sinks.html b/group__sinks.html index 77692ed..fc651f6 100644 --- a/group__sinks.html +++ b/group__sinks.html @@ -3,15 +3,16 @@ - + libsdr: Data sinks. + @@ -32,7 +33,7 @@ - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -90,19 +91,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    Classes

    class  sdr::PortSinkPortAudio playback node. More...
    PortAudio playback node. More...
      class  sdr::StreamSink< Scalar > - Serializes the incomming buffers as raw data. More...
    + Serializes the incomming buffers as raw data. More...
      class  sdr::DebugStore< Scalar > - Keeps a copy of the last buffer received. More...
    + Keeps a copy of the last buffer received. More...
      class  sdr::DebugDump< Scalar > - Dumps buffers in a human readable form. More...
    + Dumps buffers in a human readable form. More...
      class  sdr::WavSink< Scalar > - Stores the received buffers into a WAV file. More...
    + Stores the received buffers into a WAV file. More...
     

    Detailed Description

    @@ -110,9 +111,9 @@ Classes
    diff --git a/group__sources.html b/group__sources.html index 56a6829..04a6b70 100644 --- a/group__sources.html +++ b/group__sources.html @@ -3,15 +3,16 @@ - + libsdr: Data sources. + @@ -32,7 +33,7 @@ - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -90,25 +91,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    Classes

    class  sdr::PortSource< Scalar >PortAudio input stream as a Source. More...
    PortAudio input stream as a Source. More...
      class  sdr::RTLSource - Implements a uint_8 I/Q source for RTL2832 based TV dongles. More...
    + Implements a uint_8 I/Q source for RTL2832 based TV dongles. More...
      class  sdr::SigGen< Scalar > - Arbitrary function generator. More...
    + Arbitrary function generator. More...
      class  sdr::IQSigGen< Scalar > - Arbitrary function generator. More...
    + Arbitrary function generator. More...
      class  sdr::StreamSource< Scalar > - Reads raw samples from an imput stream, (ie a file). More...
    + Reads raw samples from an imput stream, (ie a file). More...
      class  sdr::GWNSource< Scalar > - A Gaussian White Noise source. More...
    + A Gaussian White Noise source. More...
      class  sdr::WavSource - A simple imput source that reads from a wav file. More...
    + A simple imput source that reads from a wav file. More...
     

    Detailed Description

    @@ -116,9 +117,9 @@ Classes
    diff --git a/hierarchy.html b/hierarchy.html index 6e57599..844d5d2 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -3,15 +3,16 @@ - + libsdr: Class Hierarchy + @@ -32,7 +33,7 @@ - + @@ -75,7 +76,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -91,168 +92,177 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    This inheritance list is sorted roughly, but not completely, alphabetically:
    [detail level 1234]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    oCsdr::BufferOwnerAbstract class (interface) of a buffer owner
    oCsdr::Combine< Scalar >A combine node
    oCsdr::ConfigA collection of configuration information that is send by a source to all connected sinks to propergate and check the configuration of the processing network
    oCsdr::Options::DefinitionArgument definition
    oCsdr::DelegateInterfaceInterface of a delegate
    oCexception
    oCsdr::FFTFFT module class, provides static methods to perfrom a FFT directly
    oCsdr::FFTPlan< Scalar >Trivial FFT implementation for buffer sizes of N=2**K
    oCsdr::FFTPlan< double >Template specialization for a FFT transform on std::complex<double> values
    oCsdr::FFTPlan< float >Template specialization for a FFT transform on std::complex<float> values
    oCsdr::FilterNode< Scalar >A FFT filter bank node wich consists of several filters
    oCsdr::FIRBandPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
    oCsdr::FIRBandStopCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
    oCsdr::FIRHighPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
    oCsdr::FIRLowPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
    oCsdr::FracSubSampleBase< Scalar >Implements a fractional sub-sampler
    oCsdr::FreqShiftBase< Scalar >A performant implementation of a frequency shift operation on integer signals
    oCsdr::LoggerThe logger class (singleton)
    oCsdr::LogHandlerBase class of all log message handlers
    oCsdr::Queue::MessageThe internal used message type
    oCsdr::OptionsConvenience functions for command line arguments
    oCsdr::PortAudio"Namespace" to collect all static, PortAudio related functions
    oCsdr::QueueCentral message queue (singleton)
    oCsdr::RawBufferBase class of all buffers, represents an untyped array of bytes
    oCsdr::SinkBaseBasic interface of all Sinks
    oCsdr::SourceGeneric source class
    oCstringstream
    oCsdr::Traits< Scalar >Forward declaration of type tratis template
    oCsdr::Traits< double >Template specialization of type traits for float scalar
    oCsdr::Traits< float >Template specialization of type traits for float scalar
    oCsdr::Traits< int16_t >Template specialization of type traits for int16_t scalar
    oCsdr::Traits< int8_t >Template specialization of type tratis for int8_t scalar
    oCsdr::Traits< std::complex< double > >Template specialization of type traits for complex float scalar
    oCsdr::Traits< std::complex< float > >Template specialization of type traits for complex float scalar
    oCsdr::Traits< std::complex< int16_t > >Template specialization of type traits for complex int16_t scalar
    oCsdr::Traits< std::complex< int8_t > >Template specialization of type tratis for complex int8_t scalar
    oCsdr::Traits< std::complex< uint16_t > >Template specialization of type traits for complex uint16_t scalar
    oCsdr::Traits< std::complex< uint8_t > >Template specialization of type tratis for complex uint8_t scalar
    oCsdr::Traits< uint16_t >Template specialization of type traits for uint16_t scalar
    oCsdr::Traits< uint8_t >Template specialization of type tratis for uint8_t scalar
    \Csdr::Options::ValueThe argument value
     Csdr::BufferOwnerAbstract class (interface) of a buffer owner
     Csdr::Combine< Scalar >A combine node
     Csdr::ConfigA collection of configuration information that is send by a source to all connected sinks to propergate and check the configuration of the processing network
     Csdr::Options::DefinitionArgument definition
     Csdr::DelegateInterfaceInterface of a delegate
     Cexception
     Csdr::FFTFFT module class, provides static methods to perfrom a FFT directly
     Csdr::FFTPlan< Scalar >Trivial FFT implementation for buffer sizes of N=2**K
     Csdr::FFTPlan< double >Template specialization for a FFT transform on std::complex<double> values
     Csdr::FFTPlan< float >Template specialization for a FFT transform on std::complex<float> values
     Csdr::FilterNode< Scalar >A FFT filter bank node wich consists of several filters
     Csdr::FIRBandPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
     Csdr::FIRBandStopCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
     Csdr::FIRHighPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
     Csdr::FIRLowPassCoeffsImplements the calculation of the filter coefficients for the use in the FIRFilter template class
     Csdr::FracSubSampleBase< Scalar >Implements a fractional sub-sampler
     Csdr::FreqShiftBase< Scalar >A performant implementation of a frequency-shift operation on integer signals
     Csdr::LoggerThe logger class (singleton)
     Csdr::LogHandlerBase class of all log-message handlers
     Csdr::Queue::MessageThe internal used message type
     Csdr::OptionsConvenience functions for command line arguments
     Csdr::PortAudio"Namespace" to collect all static, PortAudio related functions
     Csdr::QueueCentral message queue (singleton)
     Csdr::RawBufferBase class of all buffers, represents an untyped array of bytes
     Csdr::SinkBaseBasic interface of all Sinks
     Csdr::SourceGeneric source class
     Cstringstream
     Csdr::Traits< Scalar >Forward declaration of type tratis template
     Csdr::Traits< double >Template specialization of type traits for float scalar
     Csdr::Traits< float >Template specialization of type traits for float scalar
     Csdr::Traits< int16_t >Template specialization of type traits for int16_t scalar
     Csdr::Traits< int8_t >Template specialization of type tratis for int8_t scalar
     Csdr::Traits< std::complex< double > >Template specialization of type traits for complex float scalar
     Csdr::Traits< std::complex< float > >Template specialization of type traits for complex float scalar
     Csdr::Traits< std::complex< int16_t > >Template specialization of type traits for complex int16_t scalar
     Csdr::Traits< std::complex< int8_t > >Template specialization of type tratis for complex int8_t scalar
     Csdr::Traits< std::complex< uint16_t > >Template specialization of type traits for complex uint16_t scalar
     Csdr::Traits< std::complex< uint8_t > >Template specialization of type tratis for complex uint8_t scalar
     Csdr::Traits< uint16_t >Template specialization of type traits for uint16_t scalar
     Csdr::Traits< uint8_t >Template specialization of type tratis for uint8_t scalar
     Csdr::Options::ValueThe argument value
    diff --git a/index.html b/index.html index b6fbe0d..3f0cf8c 100644 --- a/index.html +++ b/index.html @@ -3,15 +3,16 @@ - + libsdr: A C++ library for software defined radio (SDR). + @@ -32,7 +33,7 @@
    - + @@ -67,7 +68,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -86,8 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    A processing node is either a sdr::Source, sdr::Sink, both or may provide one or more sources or sinks. A source is always connected to a sink. Another important object is the sdr::Queue. It is a singleton class that orchestrates the processing of the data. It may request further data from the sources once all present data has been processed. It also routes the date from the sources to the sinks.

    A practical introduction

    -

    The following examples shows a trivial application that recods some audio from the systems default audio source and play it back.

    -
    #include <libsdr/sdr.hh>
    +

    The following examples shows a trivial application that recods some audio from the systems default audio source and play it back.

    #include <libsdr/sdr.hh>
    int main(int argc, char *argv[]) {
    // Initialize PortAudio system
    @@ -215,8 +215,7 @@ In summary
    return 0;
    }

    This may appear quiet bloated for such a simple application. I designed the library to be rather explicit. No feature is implicit and hidden from the user. This turns simple examples like the one above quite bloated but it is imediately clear how the example works whithout any knowledge of "hidden features" and the complexity does not suddenly increases for non-trivial examples.

    -

    Finally, we may have a look at a more relaistic example implementing a FM broadcast receiver using a RTL2832 based USB dongle as the input source.

    -
    #include <libsdr/sdr.hh>
    +

    Finally, we may have a look at a more relaistic example implementing a FM broadcast receiver using a RTL2832 based USB dongle as the input source.

    #include <libsdr/sdr.hh>
    #include <signal.h>
    static void __sigint_handler(int signo) {
    @@ -270,9 +269,9 @@ In summary
    diff --git a/interpolate_8hh_source.html b/interpolate_8hh_source.html index 66f5919..fb76876 100644 --- a/interpolate_8hh_source.html +++ b/interpolate_8hh_source.html @@ -3,15 +3,16 @@ - -libsdr: /home/hannes/sdr/libsdr/src/interpolate.hh Source File + +libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/interpolate.hh Source File + @@ -32,7 +33,7 @@
    - + @@ -71,7 +72,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> - All Classes Functions Variables Typedefs Enumerations Enumerator Groups Pages +
    @@ -91,11 +92,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    1 #ifndef __SDR_INTERPOLATE_HH__
    -
    2 #define __SDR_INTERPOLATE_HH__
    -
    3 
    +
    2 #define __SDR_INTERPOLATE_HH__
    +
    3 
    4 #include "buffer.hh"
    5 
    -
    6 namespace sdr {
    +
    6 namespace sdr {
    7 
    8 static const float interpolate_taps[129][8] = {
    9  { 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 1.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00 },
    @@ -240,12 +241,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    148 }
    149 
    150 #endif // __SDR_INTERPOLATE_HH__
    +
    Definition: afsk.hh:6
    diff --git a/jquery.js b/jquery.js index c197801..1f4d0b4 100644 --- a/jquery.js +++ b/jquery.js @@ -13,19 +13,56 @@ * * Date: Mon Nov 21 21:11:03 2011 -0500 */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; -if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); /*! * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 -},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av); -ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; -if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b -})}})(window); +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/
    ",""],legend:[1,"
    ","
    "],thead:[1,"
    ","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('