Skip to content

Commit 39528c4

Browse files
authored
Merge pull request #364 from drowe67/dr-datac4
datac4, datac5, datac13 modes and prototype low rate FSK/MPP
2 parents 928e524 + 30f2a61 commit 39528c4

41 files changed

Lines changed: 1675 additions & 999 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 90 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)