* Removed obsolete blocks
* Created a new CRC class with static methods. This will make easier the
integration of new CRC schemes. The old way was rather too C-styled
* Blocks removed are now covered from decoders available supporting the
new decoder architecture
* The quadrature demodulation filter block, had as primary goal to
reduce the false alarms and the performance of the DUV decoder. Now the
new DUV decoder, uses a shift register approach, likewise the AX.25
decoder, therefore it is not needed anymore.
TODO:
* Use the shift register likewise the AX.25 to get rid off the
quadrature demodulation filter. This will significantly increase the
number of decoded frames
The decoders produce a PMT message containing several information about
the decoded frame. While this is very convenient for handling data
inside the flowgraph, it is not for third party applications. The JSON
converter block is responsible to serialize all the information
contained in a PMT originating from a decoded frame.
For simple demonstration some metadata were added on the AX.25 decoder.
These metadata are still a WIP and they subjected to changes.
To simplify the logic and allow an easy and more efficient way to add
new decoders, the new architecture uses only one decoder block.
This block takes as input a void* stream and produces PDUs with their
metadata. To do so, the block accepts a decoder object. Every decoder
should implement the virtual class decoder(). This class provides the
necessary API and an arbitrary number of decoders can be supported. The
decoding status is reported to the frame_decoder block through the
decoder_status_t structure.
std::bitset can be used only with compile time known size. Most of the flowgraphs take the shift register size as a parameter through the GRC so it cannot be used. This commit implements a shift register using the std::deque that supports arbitrary number of memory stages
This is an attempt to cut the signal free period after the quadrature
demodulation block. The idea seems that works, but there still an issue
with the samples not passing correctly from the valve.
The CW encoder is a debug block that can be used to check the
performance of the CW decoder of gr-satnogs module under different RF
conditions. It can also serve as a perfect debug tool for sattelite
missions.
CW decoding using match filtering is pretty much useless in LEO.
The information about the tone frequency is very rare and carrier
oscillations during the satellite pass reduce significantly the
performance.
The new next CW decoder is based on the autocorrelation of the received
signal.
* Start Ogg source block
* Add OGG audio source block
The number of output streams for this block should match the number of
audio streams contained inside the ogg file. If there is a mismatch an
appropriate exception is thrown.
* UDP Message source can handle multiple data types
* Add a waterfall sink block
* Fix dependency issues with VOLK
* Add mean and max hold mode to the waterfall sink
* Add mean and max hold mode to the waterfall sink
* Install satnogs_waterfall.gp gnuplot script at
<install_prefix>/share/satnogs/scripts
* Automatically retrieve x and y axis ranges at the satnogs_waterfall.gp
The data whitening and de-whitening mechanism is implemented using
lookup tables for fast processing times. The implementation is quite
generic and modular supporting user defined polynomial masks and seeds.
The lookup table is created during the initialization without any
runtime overhead.
After managing to successfully receive raw bytes from the TI devboard
with the CC1120, its now time to pack them into a frame by searching for
the preamble and synchronizing with the known byte sync word.