aboutsummaryrefslogtreecommitdiff
path: root/unittest/ofdm_check
diff options
context:
space:
mode:
authorAuthor Name <[email protected]>2023-07-07 12:20:59 +0930
committerDavid Rowe <[email protected]>2023-07-07 12:29:06 +0930
commitac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch)
treea2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /unittest/ofdm_check
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'unittest/ofdm_check')
-rwxr-xr-xunittest/ofdm_check68
1 files changed, 68 insertions, 0 deletions
diff --git a/unittest/ofdm_check b/unittest/ofdm_check
new file mode 100755
index 0000000..a4b80ed
--- /dev/null
+++ b/unittest/ofdm_check
@@ -0,0 +1,68 @@
+#! /bin/bash
+
+# ofdm_check
+#
+# A series of checks of the ofdm functions, mostly decode.
+#
+# This uses ofdm_mod to supply test data to ofdm_demod and mostly
+# assumes that the encode function is correct.
+
+# Define macros to (later) allow testing alternate versions.
+alias OFDM_MOD=ofdm_mod
+alias OFDM_DEMOD=ofdm_demod
+shopt -s expand_aliases
+
+# PATH
+PATH=$PATH:../src
+
+PASS=1
+
+###############################
+echo
+echo "Simple test, plain, ideal"
+OFDM_MOD --in /dev/zero --testframes 100 |
+ OFDM_DEMOD --out /dev/null --testframes --verbose 1 2> tmp
+cat tmp
+p1=$(grep '^BER\.*: 0.000' tmp | wc -l)
+p2=$(grep '^BER2\.*: 0.000' tmp | wc -l)
+if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi
+
+###############################
+echo
+echo "Simple test, plain, AWGN"
+OFDM_MOD --in /dev/zero --testframes 100 |
+ cohpsk_ch - - -20 -Fs 8000 -f -5 |
+ OFDM_DEMOD --out /dev/null --testframes --verbose 1 2>tmp
+cat tmp
+n=$(grep '^BER\.*:' tmp | cut -d ' ' -f 2)
+p1=$(echo $n '<=' 0.10 | bc)
+n=$(grep '^BER2\.*:' tmp | cut -d ' ' -f 2)
+p2=$(echo $n '<=' 0.10 | bc)
+if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi
+
+###############################
+echo
+echo "Simple test, LDPC, ideal"
+OFDM_MOD --in /dev/zero --ldpc --testframes 100 |
+ OFDM_DEMOD --out /dev/null --ldpc --testframes --verbose 1 2>tmp
+cat tmp
+p1=$(grep '^BER\.*: 0.000' tmp | wc -l)
+p2=$(grep '^Coded BER: 0.000' tmp | wc -l)
+if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi
+
+###############################
+echo
+echo "Simple test, LDPC, AWGN"
+OFDM_MOD --in /dev/zero --ldpc --testframes 100 |
+ cohpsk_ch - - -20 -Fs 8000 -f -5 --fading_dir ../../build_linux/unittest |
+ OFDM_DEMOD --out /dev/null --ldpc --testframes --verbose 1 2>tmp
+cat tmp
+n=$(grep '^BER\.*:' tmp | cut -d ' ' -f 2)
+p1=$(echo $n '<=' 0.10 | bc)
+n=$(grep '^Coded.*BER\.*:' tmp | cut -d ' ' -f 3)
+p2=$(echo $n '<=' 0.01 | bc)
+if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi
+
+
+echo
+if [[ $PASS == 1 ]]; then echo "PASSED"; else echo "FAILED"; fi