diff --git a/dist/linux/debian/control b/dist/linux/debian/control index 429dd63..ee64ea9 100644 --- a/dist/linux/debian/control +++ b/dist/linux/debian/control @@ -1,21 +1,25 @@ Source: libsdr Priority: extra Maintainer: Hannes Matuschek -Build-Depends: cdbs (>= 0.4.51), dh-exec, debhelper (>= 8.0.0), cmake, qtbase5-dev (>= 5.0), portaudio19-dev, librtlsdr-dev, fftw3-dev -Standards-Version: 3.9.2 +Build-Depends: cdbs (>= 0.4.51), dh-exec, debhelper (>= 9.0.0), cmake, portaudio19-dev, librtlsdr-dev, fftw3-dev +Standards-Version: 3.9.5 Section: hamradio Homepage: http://github.com/hmatuschek/libsdr -Package: libsdr +Package: libsdr1 Section: hamradio Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, libportaudio2 Description: libsdr A C++ library for software defined radio. Package: libsdr-dev Section: hamradio Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libsdr +Multi-Arch: same +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: libsdr1 (= ${binary:Version}), ${misc:Depends}, portaudio19-dev, librtlsdr-dev, fftw3-dev, libsdr1 Description: libsdr A C++ library for software defined radio. Development files. diff --git a/dist/linux/debian/libsdr-dev.install b/dist/linux/debian/libsdr-dev.install index 247817c..600f864 100755 --- a/dist/linux/debian/libsdr-dev.install +++ b/dist/linux/debian/libsdr-dev.install @@ -1,4 +1,3 @@ #! /usr/bin/dh-exec -/usr/lib/${DEB_HOST_MULTIARCH}/libsdr.so -/usr/lib/${DEB_HOST_MULTIARCH}/libsdr-gui.so -/usr/include/* +usr/lib/*/libsdr.so +usr/include/* diff --git a/dist/linux/debian/libsdr.install b/dist/linux/debian/libsdr.install deleted file mode 100755 index a0207b8..0000000 --- a/dist/linux/debian/libsdr.install +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/dh-exec -/usr/lib/${DEB_HOST_MULTIARCH}/libsdr.so.* -/usr/lib/${DEB_HOST_MULTIARCH}/libsdr-gui.so.* diff --git a/dist/linux/debian/libsdr.dsc b/dist/linux/libsdr.dsc similarity index 100% rename from dist/linux/debian/libsdr.dsc rename to dist/linux/libsdr.dsc diff --git a/src/autocast.hh b/src/autocast.hh index cbac8ad..7c8f30e 100644 --- a/src/autocast.hh +++ b/src/autocast.hh @@ -8,7 +8,8 @@ namespace sdr { /** This class performs some automatic casts to a certain buffer type if possible specified by - * the template argument. Currently only integer casts are supported. */ + * the template argument. Currently only integer casts are supported. + * @ingroup datanodes */ template class AutoCast: public SinkBase, public Source { diff --git a/src/baseband.hh b/src/baseband.hh index 11b6842..9af1775 100644 --- a/src/baseband.hh +++ b/src/baseband.hh @@ -16,7 +16,8 @@ namespace sdr { * with width @c width) then shifts the center frequency @c 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. */ + * stream. + * @ingroup filters */ template class IQBaseBand: public Sink< std::complex >, public Source, public FreqShiftBase { @@ -298,7 +299,8 @@ protected: /** 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. */ + * the selected base-band is well represented. + * @ingroup filters */ template class BaseBand: public Sink, public Source, public FreqShiftBase { diff --git a/src/buffernode.hh b/src/buffernode.hh index 11c1512..d0da235 100644 --- a/src/buffernode.hh +++ b/src/buffernode.hh @@ -12,7 +12,8 @@ namespace sdr { /** A simple buffering node, that ensures a fixed buffer size. This node is useful, expecially in - * front of a node that performs a FFT transform, which requires a certain buffer size. */ + * front of a node that performs a FFT transform, which requires a certain buffer size. + * @ingroup datanodes */ template class BufferNode : public Sink, public Source { diff --git a/src/combine.hh b/src/combine.hh index 7c66c90..87fcfea 100644 --- a/src/combine.hh +++ b/src/combine.hh @@ -60,7 +60,8 @@ protected: }; -/** A combine node. This node allows to combine several streams into one. */ +/** A combine node. This node allows to combine several streams into one. + * @ingroup datanodes */ template class Combine { @@ -147,7 +148,8 @@ protected: }; -/** Interleaves several input streams. */ +/** Interleaves several input streams. + * @ingroup datanodes */ template class Interleave : public Combine, public Source { diff --git a/src/demod.hh b/src/demod.hh index 729fa43..fa043ab 100644 --- a/src/demod.hh +++ b/src/demod.hh @@ -12,7 +12,8 @@ namespace sdr { -/** Amplitude modulation (AM) demodulator from an I/Q signal. */ +/** Amplitude modulation (AM) demodulator from an I/Q signal. + * @ingroup demods */ template class AMDemod : public Sink< std::complex >, public Source @@ -91,7 +92,8 @@ protected: }; -/** SSB upper side band (USB) demodulator from an I/Q signal. */ +/** SSB upper side band (USB) demodulator from an I/Q signal. + * @ingroup demods */ template class USBDemod : public Sink< std::complex >, public Source @@ -175,7 +177,10 @@ protected: -/** Demodulates FM from an I/Q signal. */ +/** Demodulates FM from an I/Q signal. + * This node only implements the demodulation of the signal, the needed post-filtering (deemphasize) + * is implemented in a separate node, @c sdr::FMDeemph. + * @ingroup demods */ template class FMDemod: public Sink< std::complex >, public Source { @@ -297,7 +302,8 @@ protected: }; -/** A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal. */ +/** A tiny node to de-emphasize the higher frequencies of a FM transmitted audio signal. + * @ingroup filters */ template class FMDeemph: public Sink, public Source { diff --git a/src/filternode.hh b/src/filternode.hh index a1d0562..52f4803 100644 --- a/src/filternode.hh +++ b/src/filternode.hh @@ -223,7 +223,8 @@ protected: }; -/** A FFT filter bank node wich consists of several filters. */ +/** A FFT filter bank node wich consists of several filters. + * @ingroup filters */ template class FilterNode { diff --git a/src/firfilter.hh b/src/firfilter.hh index 0b23663..f0bf51f 100644 --- a/src/firfilter.hh +++ b/src/firfilter.hh @@ -111,7 +111,8 @@ public: /** Generic FIR filter class. Use one of the specializations below for a low-, high- or band-pass - * filter. */ + * filter. + * @ingroup filters */ template class FIRFilter: public Sink, public Source { @@ -269,7 +270,8 @@ protected: }; -/** Low-pass FIR filter specialization. */ +/** Low-pass FIR filter specialization. + * @ingroup filters */ template class FIRLowPass: public FIRFilter { @@ -285,7 +287,8 @@ public: inline void setFreq(double freq) { FIRFilter::setUpperFreq(freq); } }; -/** High-pass FIR filter specialization. */ +/** High-pass FIR filter specialization. + * @ingroup filters */ template class FIRHighPass: public FIRFilter { @@ -302,7 +305,8 @@ public: }; -/** Band-pass FIR filter specialization. */ +/** Band-pass FIR filter specialization. + * @ingroup filters */ template class FIRBandPass: public FIRFilter { @@ -314,7 +318,8 @@ public: virtual ~FIRBandPass() { } }; -/** Band-stop FIR filter specialization. */ +/** Band-stop FIR filter specialization. + * @ingroup filters */ template class FIRBandStop: public FIRFilter { diff --git a/src/freqshift.hh b/src/freqshift.hh index c18fe4b..8ae4388 100644 --- a/src/freqshift.hh +++ b/src/freqshift.hh @@ -8,7 +8,8 @@ namespace sdr { -/** A performant implementation of a frequency shift operation on integer signals. */ +/** A performant implementation of a frequency shift operation on integer signals. + * @ingroup filters */ template class FreqShiftBase { diff --git a/src/node.hh b/src/node.hh index 8151c33..097c05d 100644 --- a/src/node.hh +++ b/src/node.hh @@ -1,3 +1,19 @@ +/** @defgroup sources Data sources. + * This module collects all data sources provided by libsdr. + * + * @defgroup sinks Data sinks. + * This module collects all data sinks provided by libsdr. + * + * @defgroup filters Filter and signal processing nodes. + * This group collects all filter and signal processing nodes provided by libsdr. + * + * @defgroup demods Demodulator nodes. + * This group collects all demodulation nodes. + * + * @defgroup datanodes Data handling nodes. + * This group collects all nodes related to data handling. I.e. type casts etc. + */ + #ifndef __SDR_NODE_HH__ #define __SDR_NODE_HH__ @@ -294,7 +310,8 @@ private: }; -/** A NOP node. */ +/** A NOP node. + * @ingroup filters */ class Proxy: public SinkBase, public Source { public: diff --git a/src/portaudio.hh b/src/portaudio.hh index a38d085..e0eb7ba 100644 --- a/src/portaudio.hh +++ b/src/portaudio.hh @@ -33,7 +33,8 @@ public: }; -/** PortAudio playback node. */ +/** PortAudio playback node. + * @ingroup sinks */ class PortSink: public SinkBase { public: @@ -55,7 +56,8 @@ protected: }; -/** PortAudio input stream as a @c Source. */ +/** PortAudio input stream as a @c Source. + * @ingroup sources */ template class PortSource: public Source { diff --git a/src/psk31.hh b/src/psk31.hh index b9f0fe2..ae4df37 100644 --- a/src/psk31.hh +++ b/src/psk31.hh @@ -11,7 +11,8 @@ namespace sdr { /** 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 @c 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. */ + * node uses a simple PLL to adjust for small detunings. + * @ingroup demod */ template class BPSK31: public Sink< std::complex >, public Source { @@ -290,7 +291,8 @@ protected: /** Simple varicode (Huffman code) decoder node. It consumes a bit-stream (uint8_t) * and produces a uint8_t stream of ascii chars. Non-printable chars (except for new-line) are - * ignored. The output stream has no samplerate! */ + * ignored. The output stream has no samplerate! + * @ingroup datanodes */ class Varicode: public Sink, public Source { public: diff --git a/src/rtlsource.hh b/src/rtlsource.hh index 0c200a2..6723aa0 100644 --- a/src/rtlsource.hh +++ b/src/rtlsource.hh @@ -8,7 +8,8 @@ namespace sdr { -/** Implements a @c uint_8 I/Q source for RTL2832 based TV dongles. */ +/** Implements a @c uint_8 I/Q source for RTL2832 based TV dongles. + * @ingroup sources */ class RTLSource: public Source { public: diff --git a/src/siggen.hh b/src/siggen.hh index 805a052..eb20eda 100644 --- a/src/siggen.hh +++ b/src/siggen.hh @@ -6,7 +6,8 @@ namespace sdr { -/** Arbitrary function generator. */ +/** Arbitrary function generator. + * @ingroup sources */ template class SigGen: public Source { @@ -83,7 +84,8 @@ protected: -/** Arbitrary function generator. */ +/** Arbitrary function generator. + * @ingroup sources */ template class IQSigGen: public Source { diff --git a/src/subsample.hh b/src/subsample.hh index f5ac16d..9c116ce 100644 --- a/src/subsample.hh +++ b/src/subsample.hh @@ -10,7 +10,8 @@ namespace sdr { -/** Simple averaging sub-sampler. */ +/** Simple averaging sub-sampler. + * @ingroup filters */ template class SubSample: public Sink, public Source { @@ -188,7 +189,8 @@ protected: /** An interpolating sub-sampler. This node uses an 8-tap FIR filter to interpolate between * two values (given 8). Please do not use this node to subsample by a factor grater than 8, * as this may result into artifacts unless the signal was filtered accordingly before - * subsampling it. */ + * subsampling it. + * @ingroup filters */ template class InpolSubSampler: public Sink, public Source { diff --git a/src/utils.hh b/src/utils.hh index fc3fd00..098e44f 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -11,7 +11,8 @@ namespace sdr { -/** Extracts the real or imaginary part of a complex valued data stream. */ +/** Extracts the real or imaginary part of a complex valued data stream. + * @ingroup datanodes */ template class RealImagPart: public Sink< std::complex >, public Source { @@ -76,7 +77,8 @@ protected: }; -/** Selects the real part of a complex signal. */ +/** Selects the real part of a complex signal. + * @ingroup datanodes */ template class RealPart: public RealImagPart { @@ -90,7 +92,8 @@ public: }; -/** Selects the imaginary part of a complex signal. */ +/** Selects the imaginary part of a complex signal. + * @ingroup datanodes */ template class ImagPart: public RealImagPart { @@ -104,7 +107,8 @@ public: }; -/** A simple node, that allows to balance an IQ signal. */ +/** A simple node, that allows to balance an IQ signal. + * @ingroup filters */ template class IQBalance: public Sink< std::complex >, public Source { @@ -201,7 +205,8 @@ protected: /** Tiny helper node to transform a real part into a complex, including - * a possible type-cast*/ + * a possible type-cast + * @ingroup datanodes */ template class ToComplex: public Sink, public Source { @@ -256,7 +261,8 @@ protected: -/** Explicit type cast node. */ +/** Explicit type cast node. + * @ingroup datanodes */ template class Cast : public Sink, public Source { @@ -361,7 +367,8 @@ protected: -/** Performs a reinterprete cast from an unsinged value to a singed one. */ +/** Performs a reinterprete cast from an unsinged value to a singed one. + * @ingroup datanodes */ class UnsignedToSigned: public SinkBase, public Source { public: @@ -392,7 +399,8 @@ protected: -/** Performs a reinterprete cast from an unsinged value to a singed one. */ +/** Performs a reinterprete cast from an unsinged value to a singed one. + * @ingroup datanodes */ class SignedToUnsigned: public SinkBase, public Source { public: @@ -423,7 +431,8 @@ protected: /** Performs a frequency shift on a complex input signal, by multiplying it with \f$e^{i\omega t}\f$. * 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. */ + * @deprecated Implement a more efficient variant using FreqShiftBase. + * @ingroup filters */ template class FreqShift: public Sink< std::complex >, public Source { @@ -510,7 +519,8 @@ protected: }; -/** Reads raw samples from an imput stream, (ie a file). */ +/** Reads raw samples from an imput stream, (ie a file). + * @ingroup sources */ template class StreamSource: public Source { @@ -541,7 +551,8 @@ protected: }; -/** Serializes the incomming buffers as raw data. */ +/** Serializes the incomming buffers as raw data. + * @ingroup sinks */ template class StreamSink: public Sink { @@ -579,7 +590,8 @@ protected: -/** Simple scaling node. */ +/** Simple scaling node. + * @ingroup filters */ template class Scale : public Sink, public Source { @@ -640,7 +652,8 @@ protected: -/** An automatic gain control node. */ +/** An automatic gain control node. + * @ingroup filters */ template class AGC: public Sink, public Source { @@ -780,7 +793,8 @@ protected: }; -/** Keeps a copy of the last buffer received. */ +/** Keeps a copy of the last buffer received. + * @ingroup sinks */ template class DebugStore: public Sink { @@ -827,7 +841,8 @@ public: }; -/** Dumps buffers in a human readable form. */ +/** Dumps buffers in a human readable form. + * @ingroup sinks*/ template class DebugDump: public Sink { @@ -869,7 +884,8 @@ protected: }; -/** A Gaussian White Noise source. */ +/** A Gaussian White Noise source. + * @ingroup sources */ template class GWNSource: public Source { diff --git a/src/wavfile.hh b/src/wavfile.hh index 8e98c08..4389925 100644 --- a/src/wavfile.hh +++ b/src/wavfile.hh @@ -6,7 +6,8 @@ namespace sdr { -/** Stores the received buffers into a WAV file. */ +/** Stores the received buffers into a WAV file. + * @ingroup sinks */ template class WavSink: public Sink { @@ -127,7 +128,8 @@ protected: /** A simple imput source that reads from a wav file. Some data is read from the file on every call - * to @c next until the end of file is reached. */ + * to @c next until the end of file is reached. + * @ingroup sources */ class WavSource: public Source { public: