From b86e88413d4c6ec428aaedb147f7675f28882fe4 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 14 Jul 2023 12:36:50 +0930 Subject: clang-format -i applied to src unittest misc --- src/ldpc_codes.c | 296 +++++++++++++++++-------------------------------------- 1 file changed, 89 insertions(+), 207 deletions(-) (limited to 'src/ldpc_codes.c') diff --git a/src/ldpc_codes.c b/src/ldpc_codes.c index 23c022f..4289db1 100644 --- a/src/ldpc_codes.c +++ b/src/ldpc_codes.c @@ -6,247 +6,129 @@ Array of LDPC codes used for various Codec2 waveforms. */ +#include "ldpc_codes.h" + #include #include -#include "assert.h" -#include "ldpc_codes.h" -#include "interldpc.h" -#include "H_2064_516_sparse.h" + #include "HRA_112_112.h" -#include "HRAb_396_504.h" -#include "H_256_768_22.h" -#include "H_256_512_4.h" +#include "HRA_56_56.h" #include "HRAa_1536_512.h" +#include "HRAb_396_504.h" +#include "H_1024_2048_4f.h" #include "H_128_256_5.h" -#include "HRA_56_56.h" -#include "H_4096_8192_3d.h" #include "H_16200_9720.h" -#include "H_1024_2048_4f.h" +#include "H_2064_516_sparse.h" #include "H_212_158.h" +#include "H_256_512_4.h" +#include "H_256_768_22.h" +#include "H_4096_8192_3d.h" +#include "assert.h" +#include "interldpc.h" struct LDPC ldpc_codes[] = { /* short rate 1/2 code for FreeDV 700D */ - { - "HRA_112_112", - HRA_112_112_MAX_ITER, - 0, - 1, - 1, - HRA_112_112_CODELENGTH, - HRA_112_112_NUMBERPARITYBITS, - HRA_112_112_NUMBERROWSHCOLS, - HRA_112_112_MAX_ROW_WEIGHT, - HRA_112_112_MAX_COL_WEIGHT, - (uint16_t *)HRA_112_112_H_rows, - (uint16_t *)HRA_112_112_H_cols - } - , + {"HRA_112_112", HRA_112_112_MAX_ITER, 0, 1, 1, HRA_112_112_CODELENGTH, + HRA_112_112_NUMBERPARITYBITS, HRA_112_112_NUMBERROWSHCOLS, + HRA_112_112_MAX_ROW_WEIGHT, HRA_112_112_MAX_COL_WEIGHT, + (uint16_t *)HRA_112_112_H_rows, (uint16_t *)HRA_112_112_H_cols}, /* short rate 1/2 code for FreeDV 700E */ - { - "HRA_56_56", - HRA_56_56_MAX_ITER, - 0, - 1, - 1, - HRA_56_56_CODELENGTH, - HRA_56_56_NUMBERPARITYBITS, - HRA_56_56_NUMBERROWSHCOLS, - HRA_56_56_MAX_ROW_WEIGHT, - HRA_56_56_MAX_COL_WEIGHT, - (uint16_t *)HRA_56_56_H_rows, - (uint16_t *)HRA_56_56_H_cols - }, - #ifndef __EMBEDDED__ + {"HRA_56_56", HRA_56_56_MAX_ITER, 0, 1, 1, HRA_56_56_CODELENGTH, + HRA_56_56_NUMBERPARITYBITS, HRA_56_56_NUMBERROWSHCOLS, + HRA_56_56_MAX_ROW_WEIGHT, HRA_56_56_MAX_COL_WEIGHT, + (uint16_t *)HRA_56_56_H_rows, (uint16_t *)HRA_56_56_H_cols}, +#ifndef __EMBEDDED__ /* default Wenet High Alitiude Balloon rate 0.8 code */ - { - "H_2064_516_sparse", - MAX_ITER, - 0, - 1, - 1, - CODELENGTH, - NUMBERPARITYBITS, - NUMBERROWSHCOLS, - MAX_ROW_WEIGHT, - MAX_COL_WEIGHT, - (uint16_t *)H_2064_516_sparse_H_rows, - (uint16_t *)H_2064_516_sparse_H_cols - }, + {"H_2064_516_sparse", MAX_ITER, 0, 1, 1, CODELENGTH, NUMBERPARITYBITS, + NUMBERROWSHCOLS, MAX_ROW_WEIGHT, MAX_COL_WEIGHT, + (uint16_t *)H_2064_516_sparse_H_rows, + (uint16_t *)H_2064_516_sparse_H_cols}, /* rate 0.8 code used for FreeDV 2020 */ - { - "HRAb_396_504", - HRAb_396_504_MAX_ITER, - 0, - 1, - 1, - HRAb_396_504_CODELENGTH, - HRAb_396_504_NUMBERPARITYBITS, - HRAb_396_504_NUMBERROWSHCOLS, - HRAb_396_504_MAX_ROW_WEIGHT, - HRAb_396_504_MAX_COL_WEIGHT, - (uint16_t *)HRAb_396_504_H_rows, - (uint16_t *)HRAb_396_504_H_cols - }, - - - /* Rate 0.745 code for mopping up errors on 2020C from Bill VK5DSP */ - { - "H_212_158", - H_212_158_MAX_ITER, - 0, - 1, - 1, - H_212_158_CODELENGTH, - H_212_158_NUMBERPARITYBITS, - H_212_158_NUMBERROWSHCOLS, - H_212_158_MAX_ROW_WEIGHT, - H_212_158_MAX_COL_WEIGHT, - (uint16_t *)H_212_158_H_rows, - (uint16_t *)H_212_158_H_cols - }, - + {"HRAb_396_504", HRAb_396_504_MAX_ITER, 0, 1, 1, HRAb_396_504_CODELENGTH, + HRAb_396_504_NUMBERPARITYBITS, HRAb_396_504_NUMBERROWSHCOLS, + HRAb_396_504_MAX_ROW_WEIGHT, HRAb_396_504_MAX_COL_WEIGHT, + (uint16_t *)HRAb_396_504_H_rows, (uint16_t *)HRAb_396_504_H_cols}, + + /* Rate 0.745 code for mopping up errors on 2020C from Bill VK5DSP */ + {"H_212_158", H_212_158_MAX_ITER, 0, 1, 1, H_212_158_CODELENGTH, + H_212_158_NUMBERPARITYBITS, H_212_158_NUMBERROWSHCOLS, + H_212_158_MAX_ROW_WEIGHT, H_212_158_MAX_COL_WEIGHT, + (uint16_t *)H_212_158_H_rows, (uint16_t *)H_212_158_H_cols}, + /* rate 1/3 code, works at raw BER of 14% */ - { - "H_256_768_22", - H_256_768_22_MAX_ITER, - 0, - 1, - 1, - H_256_768_22_CODELENGTH, - H_256_768_22_NUMBERPARITYBITS, - H_256_768_22_NUMBERROWSHCOLS, - H_256_768_22_MAX_ROW_WEIGHT, - H_256_768_22_MAX_COL_WEIGHT, - (uint16_t *)H_256_768_22_H_rows, - (uint16_t *)H_256_768_22_H_cols - }, + {"H_256_768_22", H_256_768_22_MAX_ITER, 0, 1, 1, H_256_768_22_CODELENGTH, + H_256_768_22_NUMBERPARITYBITS, H_256_768_22_NUMBERROWSHCOLS, + H_256_768_22_MAX_ROW_WEIGHT, H_256_768_22_MAX_COL_WEIGHT, + (uint16_t *)H_256_768_22_H_rows, (uint16_t *)H_256_768_22_H_cols}, /* used for 4FSK/LLR experiments */ - { - "H_256_512_4", - H_256_512_4_MAX_ITER, - 0, - 1, - 1, - H_256_512_4_CODELENGTH, - H_256_512_4_NUMBERPARITYBITS, - H_256_512_4_NUMBERROWSHCOLS, - H_256_512_4_MAX_ROW_WEIGHT, - H_256_512_4_MAX_COL_WEIGHT, - (uint16_t *)H_256_512_4_H_rows, - (uint16_t *)H_256_512_4_H_cols - }, + {"H_256_512_4", H_256_512_4_MAX_ITER, 0, 1, 1, H_256_512_4_CODELENGTH, + H_256_512_4_NUMBERPARITYBITS, H_256_512_4_NUMBERROWSHCOLS, + H_256_512_4_MAX_ROW_WEIGHT, H_256_512_4_MAX_COL_WEIGHT, + (uint16_t *)H_256_512_4_H_rows, (uint16_t *)H_256_512_4_H_cols}, /* used for 4FSK/LLR experiments */ - { - "HRAa_1536_512", - HRAa_1536_512_MAX_ITER, - 0, - 1, - 1, - HRAa_1536_512_CODELENGTH, - HRAa_1536_512_NUMBERPARITYBITS, - HRAa_1536_512_NUMBERROWSHCOLS, - HRAa_1536_512_MAX_ROW_WEIGHT, - HRAa_1536_512_MAX_COL_WEIGHT, - (uint16_t *)HRAa_1536_512_H_rows, - (uint16_t *)HRAa_1536_512_H_cols - }, + {"HRAa_1536_512", HRAa_1536_512_MAX_ITER, 0, 1, 1, HRAa_1536_512_CODELENGTH, + HRAa_1536_512_NUMBERPARITYBITS, HRAa_1536_512_NUMBERROWSHCOLS, + HRAa_1536_512_MAX_ROW_WEIGHT, HRAa_1536_512_MAX_COL_WEIGHT, + (uint16_t *)HRAa_1536_512_H_rows, (uint16_t *)HRAa_1536_512_H_cols}, /* used for 4FSK/LLR experiments */ - { - "H_128_256_5", - H_128_256_5_MAX_ITER, - 0, - 1, - 1, - H_128_256_5_CODELENGTH, - H_128_256_5_NUMBERPARITYBITS, - H_128_256_5_NUMBERROWSHCOLS, - H_128_256_5_MAX_ROW_WEIGHT, - H_128_256_5_MAX_COL_WEIGHT, - (uint16_t *)H_128_256_5_H_rows, - (uint16_t *)H_128_256_5_H_cols - }, + {"H_128_256_5", H_128_256_5_MAX_ITER, 0, 1, 1, H_128_256_5_CODELENGTH, + H_128_256_5_NUMBERPARITYBITS, H_128_256_5_NUMBERROWSHCOLS, + H_128_256_5_MAX_ROW_WEIGHT, H_128_256_5_MAX_COL_WEIGHT, + (uint16_t *)H_128_256_5_H_rows, (uint16_t *)H_128_256_5_H_cols}, /* Nice long code from Bill VK5DSP - useful for HF data */ - { - "H_4096_8192_3d", - H_4096_8192_3d_MAX_ITER, - 0, - 1, - 1, - H_4096_8192_3d_CODELENGTH, - H_4096_8192_3d_NUMBERPARITYBITS, - H_4096_8192_3d_NUMBERROWSHCOLS, - H_4096_8192_3d_MAX_ROW_WEIGHT, - H_4096_8192_3d_MAX_COL_WEIGHT, - (uint16_t *)H_4096_8192_3d_H_rows, - (uint16_t *)H_4096_8192_3d_H_cols - }, + {"H_4096_8192_3d", H_4096_8192_3d_MAX_ITER, 0, 1, 1, + H_4096_8192_3d_CODELENGTH, H_4096_8192_3d_NUMBERPARITYBITS, + H_4096_8192_3d_NUMBERROWSHCOLS, H_4096_8192_3d_MAX_ROW_WEIGHT, + H_4096_8192_3d_MAX_COL_WEIGHT, (uint16_t *)H_4096_8192_3d_H_rows, + (uint16_t *)H_4096_8192_3d_H_cols}, /* Nice long code from Bill VK5DSP - useful for HF data */ - { - "H_16200_9720", - H_16200_9720_MAX_ITER, - 0, - 1, - 1, - H_16200_9720_CODELENGTH, - H_16200_9720_NUMBERPARITYBITS, - H_16200_9720_NUMBERROWSHCOLS, - H_16200_9720_MAX_ROW_WEIGHT, - H_16200_9720_MAX_COL_WEIGHT, - (uint16_t *)H_16200_9720_H_rows, - (uint16_t *)H_16200_9720_H_cols - }, - - /* Another fine code from Bill VK5DSP - also useful for HF data */ - { - "H_1024_2048_4f", - H_1024_2048_4f_MAX_ITER, - 0, - 1, - 1, - H_1024_2048_4f_CODELENGTH, - H_1024_2048_4f_NUMBERPARITYBITS, - H_1024_2048_4f_NUMBERROWSHCOLS, - H_1024_2048_4f_MAX_ROW_WEIGHT, - H_1024_2048_4f_MAX_COL_WEIGHT, - (uint16_t *)H_1024_2048_4f_H_rows, - (uint16_t *)H_1024_2048_4f_H_cols - } - #endif + {"H_16200_9720", H_16200_9720_MAX_ITER, 0, 1, 1, H_16200_9720_CODELENGTH, + H_16200_9720_NUMBERPARITYBITS, H_16200_9720_NUMBERROWSHCOLS, + H_16200_9720_MAX_ROW_WEIGHT, H_16200_9720_MAX_COL_WEIGHT, + (uint16_t *)H_16200_9720_H_rows, (uint16_t *)H_16200_9720_H_cols}, + + /* Another fine code from Bill VK5DSP - also useful for HF data */ + {"H_1024_2048_4f", H_1024_2048_4f_MAX_ITER, 0, 1, 1, + H_1024_2048_4f_CODELENGTH, H_1024_2048_4f_NUMBERPARITYBITS, + H_1024_2048_4f_NUMBERROWSHCOLS, H_1024_2048_4f_MAX_ROW_WEIGHT, + H_1024_2048_4f_MAX_COL_WEIGHT, (uint16_t *)H_1024_2048_4f_H_rows, + (uint16_t *)H_1024_2048_4f_H_cols} +#endif }; -int ldpc_codes_num(void) { return sizeof(ldpc_codes)/sizeof(struct LDPC); } +int ldpc_codes_num(void) { return sizeof(ldpc_codes) / sizeof(struct LDPC); } void ldpc_codes_list() { - fprintf(stderr, "\n"); - for(int c=0; cCodeLength, ldpc->NumberParityBits); + int code_index; + code_index = ldpc_codes_find(name); + assert(code_index != -1); + memcpy(ldpc, &ldpc_codes[code_index], sizeof(struct LDPC)); + set_up_ldpc_constants(ldpc, ldpc->CodeLength, ldpc->NumberParityBits); } -- cgit v1.2.3 From 4d6c143c0abec15e1d6ed1fd95d36f80e6cb7df8 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sun, 16 Jul 2023 11:01:38 +0930 Subject: rm FreeDV 2020C --- CMakeLists.txt | 16 +--------------- src/freedv_2020.c | 7 ------- src/freedv_api.c | 32 ++++++++++---------------------- src/freedv_api.h | 4 ---- src/freedv_rx.c | 6 ++---- src/freedv_tx.c | 3 +-- src/interldpc.c | 1 - src/ldpc_codes.c | 3 ++- src/ofdm.c | 2 +- src/ofdm_mode.c | 16 ---------------- unittest/check_peak.sh | 1 - 11 files changed, 17 insertions(+), 74 deletions(-) (limited to 'src/ldpc_codes.c') diff --git a/CMakeLists.txt b/CMakeLists.txt index d296efe..d96667f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -589,14 +589,7 @@ endif() ./ofdm_mod --in /dev/zero --testframes 10 --mode 2020B --ldpc --clip --txbpf | ./ch - - --No -19 | ./ofdm_demod --mode 2020B --testframes --ldpc -v 2 > /dev/null") - - # 2020C AWGN test - add_test(NAME test_OFDM_modem_2020C_AWGN - COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; - ./ofdm_mod --in /dev/zero --testframes 10 --mode 2020C --ldpc --clip --txbpf | - ./ch - - --No -21 | - ./ofdm_demod --mode 2020C --testframes --ldpc -v 2 > /dev/null") - + # ------------------------------------------------------------------------- # OFDM Data modes # ------------------------------------------------------------------------- @@ -865,13 +858,6 @@ if(LPCNET) ./freedv_rx 2020B - /dev/null --testframes" ) - add_test(NAME test_freedv_api_2020C_mpd - COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; - dd bs=32000 count=60 if=/dev/zero | - ./freedv_tx 2020C - - --testframes --clip 1 | - ./ch - - --No -32 --mpd --fading_dir ../unittest | - ./freedv_rx 2020C - /dev/null --testframes" - ) endif() add_test(NAME test_freedv_api_2400A diff --git a/src/freedv_2020.c b/src/freedv_2020.c index 879ea54..f1dee28 100644 --- a/src/freedv_2020.c +++ b/src/freedv_2020.c @@ -48,9 +48,6 @@ void freedv_2020x_open(struct freedv *f) { case FREEDV_MODE_2020B: ofdm_init_mode("2020B", &ofdm_config); break; - case FREEDV_MODE_2020C: - ofdm_init_mode("2020C", &ofdm_config); - break; default: assert(0); } @@ -71,10 +68,6 @@ void freedv_2020x_open(struct freedv *f) { vq_type = 2; /* index optimised VQ for increased robustness to single bit errors */ break; - case FREEDV_MODE_2020C: - vq_type = 2; /* index optimised VQ for increased robustness to single bit - errors */ - break; default: assert(0); } diff --git a/src/freedv_api.c b/src/freedv_api.c index b56d6a0..5172959 100644 --- a/src/freedv_api.c +++ b/src/freedv_api.c @@ -120,7 +120,6 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) { FDV_MODE_ACTIVE(FREEDV_MODE_800XA, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode) || @@ -143,8 +142,7 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) { freedv_ofdm_voice_open(f, "700E"); #ifdef __LPCNET__ if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, mode)) + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode)) freedv_2020x_open(f); #endif if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, mode)) freedv_2400a_open(f); @@ -203,8 +201,7 @@ void freedv_close(struct freedv *freedv) { } if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, freedv->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, freedv->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, freedv->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, freedv->mode)) { FREE(freedv->codeword_symbols); FREE(freedv->codeword_amps); FREE(freedv->ldpc); @@ -263,7 +260,6 @@ static void codec2_encode_upacked(struct freedv *f, uint8_t unpacked_bits[], static int is_ofdm_mode(struct freedv *f) { return FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, f->mode) || @@ -347,8 +343,7 @@ void freedv_comptx(struct freedv *f, COMP mod_out[], short speech_in[]) { FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)); + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)); if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) { codec2_encode_upacked(f, f->tx_payload_bits, speech_in); @@ -382,8 +377,7 @@ void freedv_comptx(struct freedv *f, COMP mod_out[], short speech_in[]) { #ifdef __LPCNET__ if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { /* buffer up bits until we get enough encoded bits for interleaver */ for (int j = 0; j < f->n_codec_frames; j++) { @@ -764,8 +758,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { float gain = 1.0f; assert(nin <= f->n_max_modem_samples); @@ -818,8 +811,7 @@ int freedv_comprx(struct freedv *f, short speech_out[], COMP demod_in[]) { } if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { #ifdef __LPCNET__ rx_status = freedv_comprx_2020(f, demod_in); #endif @@ -906,8 +898,7 @@ int freedv_bits_to_speech(struct freedv *f, short speech_out[], /* pass through received samples so we can hear what's going on, e.g. * during tuning */ - if ((f->mode == FREEDV_MODE_2020) || (f->mode == FREEDV_MODE_2020B) || - (f->mode == FREEDV_MODE_2020C)) { + if ((f->mode == FREEDV_MODE_2020) || (f->mode == FREEDV_MODE_2020B)) { /* 8kHz modem sample rate but 16 kHz speech sample rate, so we need to resample */ nout = 2 * f->nin_prev; @@ -953,8 +944,7 @@ int freedv_bits_to_speech(struct freedv *f, short speech_out[], if (decode_speech) { if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { #ifdef __LPCNET__ /* LPCNet decoder */ @@ -1170,8 +1160,7 @@ void freedv_set_callback_txt_sym(struct freedv *f, freedv_callback_rx_sym rx, if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { f->freedv_put_next_rx_symbol = rx; f->callback_state_sym = state; } @@ -1516,8 +1505,7 @@ int freedv_get_n_max_speech_samples(struct freedv *f) { array */ int max_output_passthrough_samples; if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) + FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) // In 2020 we oversample the input modem samples from 8->16 kHz max_output_passthrough_samples = 2 * freedv_get_n_max_modem_samples(f); else diff --git a/src/freedv_api.h b/src/freedv_api.h index eda0777..ce95a55 100644 --- a/src/freedv_api.h +++ b/src/freedv_api.h @@ -53,7 +53,6 @@ extern "C" { #define FREEDV_MODE_700E 13 #define FREEDV_MODE_2020 8 #define FREEDV_MODE_2020B 16 -#define FREEDV_MODE_2020C 17 // available data modes #define FREEDV_MODE_FSK_LDPC 9 @@ -123,9 +122,6 @@ extern "C" { #if !defined(FREEDV_MODE_2020B_EN) #define FREEDV_MODE_2020B_EN FREEDV_MODE_EN_DEFAULT #endif -#if !defined(FREEDV_MODE_2020C_EN) -#define FREEDV_MODE_2020C_EN FREEDV_MODE_EN_DEFAULT -#endif #if !defined(FREEDV_MODE_FSK_LDPC_EN) #define FREEDV_MODE_FSK_LDPC_EN FREEDV_MODE_EN_DEFAULT #endif diff --git a/src/freedv_rx.c b/src/freedv_rx.c index 18045a9..c4df02c 100644 --- a/src/freedv_rx.c +++ b/src/freedv_rx.c @@ -76,7 +76,7 @@ int main(int argc, char *argv[]) { char f2020[80] = {0}; #ifdef __LPCNET__ - sprintf(f2020, "|2020|2020B|2020C"); + sprintf(f2020, "|2020|2020B"); #endif if (argc < 4) { @@ -181,7 +181,6 @@ int main(int argc, char *argv[]) { #ifdef __LPCNET__ if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020; if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B; - if (!strcmp(argv[dx], "2020C")) mode = FREEDV_MODE_2020C; #endif if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); @@ -314,8 +313,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "BER......: %5.4f Tbits: %8d Terrs: %8d\n", (double)uncoded_ber, Tbits, Terrs); if ((mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_700E) || - (mode == FREEDV_MODE_2020) || (mode == FREEDV_MODE_2020B) || - (mode == FREEDV_MODE_2020C)) { + (mode == FREEDV_MODE_2020) || (mode == FREEDV_MODE_2020B)) { int Tbits_coded = freedv_get_total_bits_coded(freedv); int Terrs_coded = freedv_get_total_bit_errors_coded(freedv); float coded_ber = (float)Terrs_coded / Tbits_coded; diff --git a/src/freedv_tx.c b/src/freedv_tx.c index 83d2847..4f1325b 100644 --- a/src/freedv_tx.c +++ b/src/freedv_tx.c @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) { reliable_text_t reliable_text_obj; char f2020[80] = {0}; #ifdef __LPCNET__ - sprintf(f2020, "|2020|2020B|2020C"); + sprintf(f2020, "|2020|2020B"); #endif if (argc < 4) { @@ -144,7 +144,6 @@ int main(int argc, char *argv[]) { #ifdef __LPCNET__ if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020; if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B; - if (!strcmp(argv[dx], "2020C")) mode = FREEDV_MODE_2020C; #endif if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); diff --git a/src/interldpc.c b/src/interldpc.c index e498807..24f4b2a 100644 --- a/src/interldpc.c +++ b/src/interldpc.c @@ -76,7 +76,6 @@ void ldpc_mode_specific_setup(struct OFDM *ofdm, struct LDPC *ldpc) { set_data_bits_per_frame(ldpc, 156); ldpc->protection_mode = LDPC_PROT_2020B; } - if (!strcmp(ofdm->mode, "2020C")) set_data_bits_per_frame(ldpc, 156); if (!strcmp(ofdm->mode, "datac4")) set_data_bits_per_frame(ldpc, 448); if (!strcmp(ofdm->mode, "datac13")) set_data_bits_per_frame(ldpc, 128); } diff --git a/src/ldpc_codes.c b/src/ldpc_codes.c index 4289db1..d01bd69 100644 --- a/src/ldpc_codes.c +++ b/src/ldpc_codes.c @@ -51,7 +51,8 @@ struct LDPC ldpc_codes[] = { HRAb_396_504_MAX_ROW_WEIGHT, HRAb_396_504_MAX_COL_WEIGHT, (uint16_t *)HRAb_396_504_H_rows, (uint16_t *)HRAb_396_504_H_cols}, - /* Rate 0.745 code for mopping up errors on 2020C from Bill VK5DSP */ + /* Rate 0.745 code for mopping up errors on 2020C from Bill + VK5DSP. 2020C has been removed but code might be useful in future */ {"H_212_158", H_212_158_MAX_ITER, 0, 1, 1, H_212_158_CODELENGTH, H_212_158_NUMBERPARITYBITS, H_212_158_NUMBERROWSHCOLS, H_212_158_MAX_ROW_WEIGHT, H_212_158_MAX_COL_WEIGHT, diff --git a/src/ofdm.c b/src/ofdm.c index 5348ef7..28d6dba 100644 --- a/src/ofdm.c +++ b/src/ofdm.c @@ -551,7 +551,7 @@ static void allocate_tx_bpf(struct OFDM *ofdm) { quisk_filt_cfInit(ofdm->tx_bpf, filtP900S1100, sizeof(filtP900S1100) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); - } else if (!strcmp(ofdm->mode, "2020B") || !strcmp(ofdm->mode, "2020C")) { + } else if (!strcmp(ofdm->mode, "2020B")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP1100S1300, sizeof(filtP1100S1300) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); diff --git a/src/ofdm_mode.c b/src/ofdm_mode.c index 6c1df32..1aabb1a 100644 --- a/src/ofdm_mode.c +++ b/src/ofdm_mode.c @@ -92,22 +92,6 @@ void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config) { config->state_machine = "voice2"; config->ftwindowwidth = 64; config->foff_limiter = true; - } else if (strcmp(mode, "2020C") == 0) { - config->ts = 0.014; - config->tcp = 0.004; - config->nc = 29; - config->ns = 5; - config->codename = "H_212_158"; - config->txtbits = 4; - config->nuwbits = 8 * 2; - config->bad_uw_errors = 5; - config->amp_scale = 130E3; - config->clip_gain1 = 2.5; - config->clip_gain2 = 0.8; - config->edge_pilots = 0; - config->state_machine = "voice2"; - config->ftwindowwidth = 64; - config->foff_limiter = true; } else if (strcmp(mode, "qam16") == 0) { /* not in use yet */ config->ns = 5; diff --git a/unittest/check_peak.sh b/unittest/check_peak.sh index 6462d04..8f41c2a 100755 --- a/unittest/check_peak.sh +++ b/unittest/check_peak.sh @@ -38,7 +38,6 @@ if [ "$1" == "LPCNet" ]; then # these don't get run unless we build with LPCNet voice_test "2020" voice_test "2020B" - voice_test "2020C" else voice_test "1600" voice_test "700C" -- cgit v1.2.3