@@ -355,10 +355,26 @@ endif()
355355 " )
356356 set_tests_properties (test_fdmdv_48to8 PROPERTIES PASS_REGULAR_EXPRESSION "PASS" )
357357
358+ # Basic sanity check of Quisk complex band pass filter. Note complex filtering cosw(wn) gives
359+ # just the +ve freq exp(jwn) so output power is 0.5 input power
360+ add_test (NAME test_quisk_filter
361+ COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave;
362+ ${CMAKE_CURRENT_BINARY_DIR} /misc/mksine in.raw 1500 1;
363+ cat in.raw | ${CMAKE_CURRENT_BINARY_DIR} /unittest/tquisk_filter |
364+ sox -t .s16 -r 8000 -c 1 - -t .s16 out.raw vol 2;
365+ cd ${CMAKE_CURRENT_SOURCE_DIR} /octave;
366+ DISPLAY=\"\" echo \" diff_fft_mag('in.raw','out.raw'); quit;\" | octave-cli -qf
367+ " )
368+ set_tests_properties (test_quisk_filter PROPERTIES PASS_REGULAR_EXPRESSION "PASS" )
369+
358370 add_test (NAME test_CML_ldpcut
359- COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave; SHORT_VERSION_FOR_CTEST =1 octave-cli -qf ldpcut.m" )
371+ COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave; CTEST_SINGLE =1 octave-cli -qf ldpcut.m" )
360372 set_tests_properties (test_CML_ldpcut PROPERTIES PASS_REGULAR_EXPRESSION "Nerr: 0" )
361373
374+ add_test (NAME test_CML_ldpcut_one_stuffing
375+ COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave; CTEST_ONE_STUFFING=1 octave-cli -qf ldpcut.m" )
376+ set_tests_properties (test_CML_ldpcut_one_stuffing PROPERTIES PASS_REGULAR_EXPRESSION "Ferrs: 0" )
377+
362378 # Golay (23,11) unit tests
363379 add_test (NAME test_golay23 COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR} /unittest/golay23" )
364380 add_test (NAME test_golay23_runtime_tables COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR} /unittest/golay23_runtime_tables" )
@@ -407,6 +423,10 @@ endif()
407423 DISPLAY=\"\" octave-cli -qf fdmdv_ut.m" )
408424 set_tests_properties (test_FDMDV_modem_octave_c PROPERTIES PASS_REGULAR_EXPRESSION "errors......: 0" )
409425
426+ # -------------------------------------------------------------------------
427+ # COHPSK Modem
428+ # -------------------------------------------------------------------------
429+
410430 add_test (NAME test_COHPSK_modem_octave_port
411431 COMMAND sh -c "$<TARGET_FILE :tcohpsk > && DISPLAY=\"\" octave-cli --no-gui -qf ${CMAKE_CURRENT_SOURCE_DIR} /octave/tcohpsk.m"
412432 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /octave )
@@ -470,7 +490,7 @@ endif()
470490
471491 add_test (NAME test_OFDM_modem_octave_burst_acq
472492 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave;
473- echo \" ofdm_acquisition; quit\" | DISPLAY=\"\" octave-cli" )
493+ echo \" ctest=1; ofdm_acquisition; quit\" | DISPLAY=\"\" octave-cli" )
474494 set_tests_properties (test_OFDM_modem_octave_burst_acq PROPERTIES PASS_REGULAR_EXPRESSION "P.acq. = 1.00" )
475495
476496 add_test (NAME test_OFDM_modem_octave_datac0_postamble
@@ -584,8 +604,9 @@ endif()
584604 # -------------------------------------------------------------------------
585605
586606 # To integrate a new mode/waveform we prototype in Octave, get the core OFDM modem
587- # running in C, then the FreeDV API. Here we test Octave and the C versions of the
588- # OFDM modem working together, to help prevent any bit rot between them
607+ # running in C (ofdm_mod & ofdm_demod), then the FreeDV API (frredv_tx & freedv_rx).
608+ # Here we test Octave and the C versions of the OFDM modem working together, to help
609+ # prevent any bit rot between them
589610
590611 # DATAC0 burst mode Octave Tx, C Rx
591612 add_test (NAME test_OFDM_modem_datac0_octave_burst
@@ -630,7 +651,36 @@ endif()
630651 ./ch - - --No -17 |
631652 ./ofdm_demod --mode datac0 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1" )
632653
633- # -------------------------------------------------------------------------
654+ # DATAC4 C Tx, Octave Rx, burst mode
655+ add_test (NAME test_OFDM_modem_datac4_octave
656+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} ;
657+ ./src/ofdm_mod --mode datac4 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 5 > test.raw;
658+ cd ${CMAKE_CURRENT_SOURCE_DIR} /octave;
659+ DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_rx(\" ${CMAKE_CURRENT_BINARY_DIR} /test.raw\" ,\" datac4\" ,\" packetsperburst\" ,1)'" )
660+ set_tests_properties (test_OFDM_modem_datac3_octave PROPERTIES PASS_REGULAR_EXPRESSION "Coded PER: 0.0000 Pckts: 5" )
661+
662+ # DATAC13 Octave Tx, C Rx, burst mode
663+ add_test (NAME test_OFDM_modem_datac13_octave
664+ COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR} /octave;
665+ DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_tx(\" ${CMAKE_CURRENT_BINARY_DIR} /src/test.raw\" ,\" datac13\" ,1,3,\" awgn\" ,\" bursts\" ,5)';
666+ cd ${CMAKE_CURRENT_BINARY_DIR} /src;
667+ cat test.raw | ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1" )
668+
669+ # DATAC4 C Tx, C Rx, burst mode
670+ add_test (NAME test_OFDM_modem_datac4_ldpc_burst
671+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
672+ ./ofdm_mod --mode datac4 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 10 |
673+ ./ch - - --No -17 |
674+ ./ofdm_demod --mode datac4 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1" )
675+
676+ # DATAC13 C Tx, C Rx, burst mode
677+ add_test (NAME test_OFDM_modem_datac13_ldpc_burst
678+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
679+ ./ofdm_mod --mode datac13 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 10 |
680+ ./ch - - --No -17 |
681+ ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1" )
682+
683+ # -------------------------------------------------------------------------
634684 # LDPC
635685 # -------------------------------------------------------------------------
636686
@@ -1007,6 +1057,24 @@ if (NOT APPLE)
10071057 ./freedv_data_raw_tx --testframes 10 DATAC1 /dev/zero /dev/null" )
10081058 set_tests_properties (test_memory_leak_FreeDV_DATAC1_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors" )
10091059
1060+ add_test (NAME test_memory_leak_FreeDV_DATAC3_tx
1061+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
1062+ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \
1063+ ./freedv_data_raw_tx --testframes 10 DATAC3 /dev/zero /dev/null" )
1064+ set_tests_properties (test_memory_leak_FreeDV_DATAC3_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors" )
1065+
1066+ add_test (NAME test_memory_leak_FreeDV_DATAC4_tx
1067+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
1068+ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \
1069+ ./freedv_data_raw_tx --testframes 10 DATAC4 /dev/zero /dev/null" )
1070+ set_tests_properties (test_memory_leak_FreeDV_DATAC4_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors" )
1071+
1072+ add_test (NAME test_memory_leak_FreeDV_DATAC13_tx
1073+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
1074+ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \
1075+ ./freedv_data_raw_tx --testframes 10 DATAC13 /dev/zero /dev/null" )
1076+ set_tests_properties (test_memory_leak_FreeDV_DATAC13_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors" )
1077+
10101078 add_test (NAME test_memory_leak_FreeDV_700E_tx
10111079 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
10121080 valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \
@@ -1244,6 +1312,20 @@ endif(NOT APPLE)
12441312 ./freedv_data_raw_rx DATAC3 - binaryOut.bin -v;
12451313 diff binaryIn.bin binaryOut.bin" )
12461314
1315+ add_test (NAME test_freedv_data_raw_ofdm_datac4_burst_file
1316+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
1317+ head -c $((54*10)) </dev/urandom > binaryIn.bin;
1318+ ./freedv_data_raw_tx DATAC4 binaryIn.bin - --bursts 10 |
1319+ ./freedv_data_raw_rx DATAC4 - binaryOut.bin -v;
1320+ diff binaryIn.bin binaryOut.bin" )
1321+
1322+ add_test (NAME test_freedv_data_raw_ofdm_datac13_burst_file
1323+ COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR} /src;
1324+ head -c $((14*10)) </dev/urandom > binaryIn.bin;
1325+ ./freedv_data_raw_tx DATAC13 binaryIn.bin - --bursts 10 |
1326+ ./freedv_data_raw_rx DATAC13 - binaryOut.bin -v;
1327+ diff binaryIn.bin binaryOut.bin" )
1328+
12471329 # FSK LDPC default 100 bit/s 2FSK, enough noise for several % raw BER to give
12481330 # FEC/acquisition a work out, bursts of 1 frame as that stresses acquisition
12491331 add_test (NAME test_freedv_data_raw_fsk_ldpc_100
@@ -1320,12 +1402,15 @@ endif(NOT APPLE)
13201402 # Set common properties for tests that need Octave/CML
13211403 set_tests_properties (
13221404 test_CML_ldpcut
1405+ test_CML_ldpcut_one_stuffing
13231406 test_OFDM_modem_octave_port
13241407 test_OFDM_modem_octave_port_Nc_31
13251408 test_OFDM_modem_octave_datac0_mpp_coded
13261409 test_OFDM_modem_datac0_octave_burst
13271410 test_OFDM_modem_datac1_octave
13281411 test_OFDM_modem_datac3_octave
1412+ test_OFDM_modem_datac4_octave
1413+ test_OFDM_modem_datac13_octave
13291414 test_fsk_lib_4fsk_ldpc
13301415 test_OFDM_modem_datac0_compression
13311416 PROPERTIES
0 commit comments