The doppler correction mechanism has successfully passed the first tests
using the GPredict software for the radio control. The corrections seems
to be quite smooth. The next step is to apply it at an audible signal.
The purpose of this block is to grab rigctl compatible commands from the
gr-satnogs client software and use the set_freq command in order to
compensate the doppler shift effect.
The AX.25 decoder is now decoding the received frames.
Also, the module now provides a UDP message source block. This block
will be responsible to receive UDP packets and transform them into PMT
messages for further processing in the GNU Radio flowgraph. As the
communication with the satnogs-client will be done in the same host, we
do not have to care about packet loss.
Furthermore, the module now provides and a debug message source block
for easy debugging.
The Morse decoding block has now the configuration parameter that
enables an automatic estimation of the dot duration. Based on this
estimation all other symbol durations are computed.
FSK demodulation can be implemented pretty well either using envelopes
or matched filters. For now the matched filters seems to be a better
candidate. However, some normalization issues should be solved.
The clock recovery mechanism of GNU Radio is considered
an overkill for the needs of AFSK. So the afsk_decoder
will focus on a frequency domain approach.
The CW decoder was wrongly producing a Short Pause symbol instead of a
dot symbol. With this fix the decoder can now reconstruct the initial
text sequence sent.
Also the CW matched filter now can directly produce the power of the
filtered samples. This is very handy in order to get rid off an
additional multiply block, saving vital resources especially for
embedded platforms.
For testing and demonstration purposes the morse_decoding_flowgraph can
be used. The word sequence is the `HELLO WORLD`.
The AGC block in the Morse decoding flowgraph is placed now at the
proper position. The output of the matched filter produces now a clear
and distinguishable signal during the presence of a pulse. This makes
the work for the signal to symbol decoder more easy.
The CW symbol decoder block takes as input the power of the processed
signal and tries to identify the dot and dash symbols. It produces
asynchronous messages containing the decoded symbols. The output
messages can be directly used by the Morse code decoder block, in order
to retrieve the clear text message.
There are some few thing that need to be done for the block to be fully
operational.
For now the generic clear text message sink just prints the decoded
clear text messages in the stdout. In the future and depending the needs
of the project, the clear text messages can be forwarded at other
services on the same host or via the network.
Also the debug message source block now supports injection of artificial
errors, for more robust decoding of the Morse decoder block.
Now, with the Morse code debug source block the testing of the decoder
can begin.
Add at the examples directory a small flowgraph that connects the debug
source block with the decoder.
Depending the received symbol the tree is traversed towards the leafs.
At each step the corresponding decode-able character is appended at a
string buffer.
TODOs:
* Add logic in the decoder to retrieve the decoded words from the tree
* Create a debug source block
The morse decoder is not yet functional. The decoding is performed
using a binary tree. Left child, corresponds to a received dot whereas
right to a received dash.