Digi-repetidor Rattlegram

El siguiente experimento con Rattlegram consiste en un digipeater de mensajes. Cada iteración de Listen ahora lo retransmite, suplantando el indicativo original, y anteponiendo [R]. Este script está basado en https://github.com/YD1RUH/OFDM_chat. En el log de mensajes message.txt también registra el indicativo, relación Es/N0, fecha y hora.

El comando decode devuelve esta información por stderr, no stdout:

./decode process/salida.txt audioProcess/encoded.wav
symbol pos: 2366
coarse cfo: 1500 Hz
oper mode: 16
call sign: RICARDO
demod .... done
coarse sfo: -5.95131 ppm
finer cfo: 1500 Hz
Es/N0 (dB): 10.5633 10.5998 10.5432 10.5083
bit flips: 9

De ahí se puede recuperar el indicativo del emisor y la relación señal a ruido (estrictamente, energía por símbolo dividida por densidad espectral de potencia de ruido) de cada uno de los cuatro símbolos OFDM recibidos.

# Script listen modificado para añadir marcas temporales a los mensajes
# y para actuar como repetidor
clear
echo -e "Recibiendo mensajes Rattlegram en 144.600 FM. Pulsa F5 para actualizar" "\n" > process/message.txt
while true
do
#arecord -c 1 -f S16_LE -r 8000 -d 20 recorded.wav
rec audioProcess/recorded.wav rate 8k silence 1 0.1 3% 1 3.0 3%
./decode process/data audioProcess/recorded.wav 2> process/log_decode.txt
rx_call=$(cat process/log_decode.txt |grep call | cut -f 2 -d ":" | tr -d ' ')
EsN0=$(cat process/log_decode.txt |grep "Es/N0" | cut -f 3 -d " ")
#Obtain callsign and SNR from output of decode command
un=$(cat process/data)
echo "$un" > process/un.txt
#iconv -f us-ascii -t utf-8 process/un.txt -c -o process/output.txt
#Obtain number of chararacters in latest message
chars=$(wc -m process/un.txt | cut -d " " -f 1)
#Log and repeat only if the recording contained an actual message
if [ $chars -gt 1 ]
then
echo -n "$rx_call" "Es/N0:" "$EsN0" "dB. " > process/output.txt
date >> process/output.txt
echo -e "$un" "\n" >> process/output.txt
cat process/output.txt >> process/message.txt
#después: limitar a 167 caracteres porque añadimos [R] de repetido
#Repeat message
echo -n "[R]" > process/rpt.txt
echo "$un" >> process/rpt.txt
./encode audioProcess/encoded.wav 8000 16 1 process/rpt.txt 1800 "$rx_call"
rigctl -m 2 T 1
aplay audioProcess/encoded.wav
rigctl -m 2 T 0
sleep 0.5
fi
clear
done

Contenido de process/message.txt:
RICARDO Es/N0: 8.57741 dB. mié 07 feb 2024 22:56:13 CET
probando repetidor

Pantalla de Rattlegram: