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/freedv_api.h | 318 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 174 insertions(+), 144 deletions(-) (limited to 'src/freedv_api.h') diff --git a/src/freedv_api.h b/src/freedv_api.h index add15d4..eda0777 100644 --- a/src/freedv_api.h +++ b/src/freedv_api.h @@ -34,54 +34,56 @@ #ifndef __FREEDV_API__ #define __FREEDV_API__ -#include #include +#include // This declares a single-precision (float) complex number #include "comp.h" #ifdef __cplusplus - extern "C" { +extern "C" { #endif // available speech modes -#define FREEDV_MODE_1600 0 -#define FREEDV_MODE_2400A 3 -#define FREEDV_MODE_2400B 4 -#define FREEDV_MODE_800XA 5 -#define FREEDV_MODE_700C 6 -#define FREEDV_MODE_700D 7 -#define FREEDV_MODE_700E 13 -#define FREEDV_MODE_2020 8 -#define FREEDV_MODE_2020B 16 -#define FREEDV_MODE_2020C 17 +#define FREEDV_MODE_1600 0 +#define FREEDV_MODE_2400A 3 +#define FREEDV_MODE_2400B 4 +#define FREEDV_MODE_800XA 5 +#define FREEDV_MODE_700C 6 +#define FREEDV_MODE_700D 7 +#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 -#define FREEDV_MODE_DATAC1 10 -#define FREEDV_MODE_DATAC3 12 -#define FREEDV_MODE_DATAC0 14 -#define FREEDV_MODE_DATAC4 18 -#define FREEDV_MODE_DATAC13 19 +#define FREEDV_MODE_FSK_LDPC 9 +#define FREEDV_MODE_DATAC1 10 +#define FREEDV_MODE_DATAC3 12 +#define FREEDV_MODE_DATAC0 14 +#define FREEDV_MODE_DATAC4 18 +#define FREEDV_MODE_DATAC13 19 // Sample rates used -#define FREEDV_FS_8000 8000 -#define FREEDV_FS_16000 16000 +#define FREEDV_FS_8000 8000 +#define FREEDV_FS_16000 16000 // peak (complex) sample value from Tx modulator -#define FREEDV_PEAK 16384 +#define FREEDV_PEAK 16384 // Return code flags for freedv_get_rx_status() function -#define FREEDV_RX_TRIAL_SYNC 0x1 // demodulator has trial sync -#define FREEDV_RX_SYNC 0x2 // demodulator has sync -#define FREEDV_RX_BITS 0x4 // data bits have been returned -#define FREEDV_RX_BIT_ERRORS 0x8 // FEC may not have corrected all bit errors (not all parity checks OK) +#define FREEDV_RX_TRIAL_SYNC 0x1 // demodulator has trial sync +#define FREEDV_RX_SYNC 0x2 // demodulator has sync +#define FREEDV_RX_BITS 0x4 // data bits have been returned +#define FREEDV_RX_BIT_ERRORS \ + 0x8 // FEC may not have corrected all bit errors (not all parity checks OK) // optional operator control of OFDM modem state machine -#define FREEDV_SYNC_UNSYNC 0 // force sync state machine to lose sync, and search for new sync -#define FREEDV_SYNC_AUTO 1 // falls out of sync automatically -#define FREEDV_SYNC_MANUAL 2 // fall out of sync only under operator control +#define FREEDV_SYNC_UNSYNC \ + 0 // force sync state machine to lose sync, and search for new sync +#define FREEDV_SYNC_AUTO 1 // falls out of sync automatically +#define FREEDV_SYNC_MANUAL 2 // fall out of sync only under operator control -#define FREEDV_VARICODE_MAX_BITS 12 // max bits for each ASCII character +#define FREEDV_VARICODE_MAX_BITS 12 // max bits for each ASCII character // These macros allow us to disable unwanted modes at compile tine, for example // to save memory on embedded systems or the remove need to link other @@ -95,78 +97,81 @@ #endif #if !defined(FREEDV_MODE_1600_EN) - #define FREEDV_MODE_1600_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_1600_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700C_EN) - #define FREEDV_MODE_700C_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_700C_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700D_EN) - #define FREEDV_MODE_700D_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_700D_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700E_EN) - #define FREEDV_MODE_700E_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_700E_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2400A_EN) - #define FREEDV_MODE_2400A_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_2400A_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2400B_EN) - #define FREEDV_MODE_2400B_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_2400B_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_800XA_EN) - #define FREEDV_MODE_800XA_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_800XA_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2020_EN) - #define FREEDV_MODE_2020_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_2020_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2020B_EN) - #define FREEDV_MODE_2020B_EN FREEDV_MODE_EN_DEFAULT +#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 +#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 +#define FREEDV_MODE_FSK_LDPC_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC0_EN) - #define FREEDV_MODE_DATAC0_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_DATAC0_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC1_EN) - #define FREEDV_MODE_DATAC1_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_DATAC1_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC3_EN) - #define FREEDV_MODE_DATAC3_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_DATAC3_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC4_EN) - #define FREEDV_MODE_DATAC4_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_DATAC4_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC13_EN) - #define FREEDV_MODE_DATAC13_EN FREEDV_MODE_EN_DEFAULT +#define FREEDV_MODE_DATAC13_EN FREEDV_MODE_EN_DEFAULT #endif -#define FDV_MODE_ACTIVE(mode_name, var) ((mode_name##_EN) == 0 ? 0: (var) == mode_name) +#define FDV_MODE_ACTIVE(mode_name, var) \ + ((mode_name##_EN) == 0 ? 0 : (var) == mode_name) // struct that hold state information for one freedv instance struct freedv; // Some modes allow extra configuration parameters struct freedv_advanced { - int interleave_frames; // now unused but remains to prevent breaking API for legacy apps - - // parameters for FREEDV_MODE_FSK_LDPC - int M; // 2 or 4 FSK - int Rs; // Symbol rate Hz - int Fs; // Sample rate Hz - int first_tone; // Freq of first tone Hz - int tone_spacing; // Spacing between tones Hz - char *codename; // LDPC codename, from codes listed in ldpc_codes.c + int interleave_frames; // now unused but remains to prevent breaking API for + // legacy apps + + // parameters for FREEDV_MODE_FSK_LDPC + int M; // 2 or 4 FSK + int Rs; // Symbol rate Hz + int Fs; // Sample rate Hz + int first_tone; // Freq of first tone Hz + int tone_spacing; // Spacing between tones Hz + char *codename; // LDPC codename, from codes listed in ldpc_codes.c }; // Called when text message char is decoded typedef void (*freedv_callback_rx)(void *, char); // Called when new text message char is needed typedef char (*freedv_callback_tx)(void *); -typedef void (*freedv_calback_error_pattern) - (void *error_pattern_callback_state, short error_pattern[], int sz_error_pattern); +typedef void (*freedv_calback_error_pattern)(void *error_pattern_callback_state, + short error_pattern[], + int sz_error_pattern); // Protocol bits are packed MSB-first // Called when a frame containing protocol data is decoded @@ -176,10 +181,11 @@ typedef void (*freedv_callback_prototx)(void *, char *); // Data packet callbacks // Called when a packet has been received -typedef void (*freedv_callback_datarx)(void *, unsigned char *packet, size_t size); +typedef void (*freedv_callback_datarx)(void *, unsigned char *packet, + size_t size); // Called when a new packet can be send -typedef void (*freedv_callback_datatx)(void *, unsigned char *packet, size_t *size); - +typedef void (*freedv_callback_datatx)(void *, unsigned char *packet, + size_t *size); /*---------------------------------------------------------------------------*\ @@ -191,36 +197,46 @@ typedef void (*freedv_callback_datatx)(void *, unsigned char *packet, size_t *si struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv); struct freedv *freedv_open(int mode); -void freedv_close (struct freedv *freedv); +void freedv_close(struct freedv *freedv); // Transmit ------------------------------------------------------------------- -void freedv_tx (struct freedv *freedv, short mod_out[], short speech_in[]); -void freedv_comptx (struct freedv *freedv, COMP mod_out[], short speech_in[]); -void freedv_datatx (struct freedv *f, short mod_out[]); -int freedv_data_ntxframes (struct freedv *freedv); -void freedv_rawdatatx (struct freedv *f, short mod_out[], unsigned char *packed_payload_bits); -void freedv_rawdatacomptx (struct freedv *f, COMP mod_out[], unsigned char *packed_payload_bits); -int freedv_rawdatapreambletx (struct freedv *f, short mod_out[]); -int freedv_rawdatapreamblecomptx (struct freedv *f, COMP mod_out[]); -int freedv_rawdatapostambletx (struct freedv *f, short mod_out[]); -int freedv_rawdatapostamblecomptx (struct freedv *f, COMP mod_out[]); +void freedv_tx(struct freedv *freedv, short mod_out[], short speech_in[]); +void freedv_comptx(struct freedv *freedv, COMP mod_out[], short speech_in[]); +void freedv_datatx(struct freedv *f, short mod_out[]); +int freedv_data_ntxframes(struct freedv *freedv); +void freedv_rawdatatx(struct freedv *f, short mod_out[], + unsigned char *packed_payload_bits); +void freedv_rawdatacomptx(struct freedv *f, COMP mod_out[], + unsigned char *packed_payload_bits); +int freedv_rawdatapreambletx(struct freedv *f, short mod_out[]); +int freedv_rawdatapreamblecomptx(struct freedv *f, COMP mod_out[]); +int freedv_rawdatapostambletx(struct freedv *f, short mod_out[]); +int freedv_rawdatapostamblecomptx(struct freedv *f, COMP mod_out[]); // Receive ------------------------------------------------------------------- -int freedv_nin (struct freedv *freedv); -int freedv_rx (struct freedv *freedv, short speech_out[], short demod_in[]); -int freedv_shortrx (struct freedv *freedv, short speech_out[], short demod_in[], float gain); -int freedv_floatrx (struct freedv *freedv, short speech_out[], float demod_in[]); -int freedv_comprx (struct freedv *freedv, short speech_out[], COMP demod_in[]); -int freedv_rawdatarx (struct freedv *freedv, unsigned char *packed_payload_bits, short demod_in[]); -int freedv_rawdatacomprx (struct freedv *freedv, unsigned char *packed_payload_bits, COMP demod_in[]); - -// Helper functions ------------------------------------------------------------------- - -int freedv_codec_frames_from_rawdata(struct freedv *freedv, unsigned char *codec_frames, unsigned char *rawdata); -int freedv_rawdata_from_codec_frames(struct freedv *freedv, unsigned char *rawdata, unsigned char *codec_frames); -unsigned short freedv_gen_crc16(unsigned char* bytes, int nbytes); +int freedv_nin(struct freedv *freedv); +int freedv_rx(struct freedv *freedv, short speech_out[], short demod_in[]); +int freedv_shortrx(struct freedv *freedv, short speech_out[], short demod_in[], + float gain); +int freedv_floatrx(struct freedv *freedv, short speech_out[], float demod_in[]); +int freedv_comprx(struct freedv *freedv, short speech_out[], COMP demod_in[]); +int freedv_rawdatarx(struct freedv *freedv, unsigned char *packed_payload_bits, + short demod_in[]); +int freedv_rawdatacomprx(struct freedv *freedv, + unsigned char *packed_payload_bits, COMP demod_in[]); + +// Helper functions +// ------------------------------------------------------------------- + +int freedv_codec_frames_from_rawdata(struct freedv *freedv, + unsigned char *codec_frames, + unsigned char *rawdata); +int freedv_rawdata_from_codec_frames(struct freedv *freedv, + unsigned char *rawdata, + unsigned char *codec_frames); +unsigned short freedv_gen_crc16(unsigned char *bytes, int nbytes); void freedv_pack(unsigned char *bytes, unsigned char *bits, int nbits); void freedv_unpack(unsigned char *bits, unsigned char *bytes, int nbits); unsigned short freedv_crc16_unpacked(unsigned char *bits, int nbits); @@ -228,84 +244,98 @@ int freedv_check_crc16_unpacked(unsigned char *unpacked_bits, int nbits); // Set parameters ------------------------------------------------------------ -void freedv_set_callback_txt (struct freedv *freedv, freedv_callback_rx rx, freedv_callback_tx tx, void *callback_state); -void freedv_set_callback_protocol (struct freedv *freedv, freedv_callback_protorx rx, freedv_callback_prototx tx, void *callback_state); -void freedv_set_callback_data (struct freedv *freedv, freedv_callback_datarx datarx, freedv_callback_datatx datatx, void *callback_state); -void freedv_set_test_frames (struct freedv *freedv, int test_frames); -void freedv_set_test_frames_diversity (struct freedv *freedv, int test_frames_diversity); -void freedv_set_smooth_symbols (struct freedv *freedv, int smooth_symbols); -void freedv_set_squelch_en (struct freedv *freedv, bool squelch_en); -void freedv_set_snr_squelch_thresh (struct freedv *freedv, float snr_squelch_thresh); -void freedv_set_clip (struct freedv *freedv, bool val); -void freedv_set_total_bit_errors (struct freedv *freedv, int val); -void freedv_set_total_bits (struct freedv *freedv, int val); -void freedv_set_total_bit_errors_coded (struct freedv *freedv, int val); -void freedv_set_total_bits_coded (struct freedv *freedv, int val); -void freedv_set_total_packets (struct freedv *freedv, int val); -void freedv_set_total_packet_errors (struct freedv *freedv, int val); -void freedv_set_callback_error_pattern (struct freedv *freedv, freedv_calback_error_pattern cb, void *state); -void freedv_set_varicode_code_num (struct freedv *freedv, int val); -void freedv_set_data_header (struct freedv *freedv, unsigned char *header); -void freedv_set_carrier_ampl (struct freedv *freedv, int c, float ampl); -void freedv_set_sync (struct freedv *freedv, int sync_cmd); -void freedv_set_verbose (struct freedv *freedv, int verbosity); -void freedv_set_tx_bpf (struct freedv *freedv, int val); -void freedv_set_tx_amp (struct freedv *freedv, float amp); -void freedv_set_ext_vco (struct freedv *f, int val); +void freedv_set_callback_txt(struct freedv *freedv, freedv_callback_rx rx, + freedv_callback_tx tx, void *callback_state); +void freedv_set_callback_protocol(struct freedv *freedv, + freedv_callback_protorx rx, + freedv_callback_prototx tx, + void *callback_state); +void freedv_set_callback_data(struct freedv *freedv, + freedv_callback_datarx datarx, + freedv_callback_datatx datatx, + void *callback_state); +void freedv_set_test_frames(struct freedv *freedv, int test_frames); +void freedv_set_test_frames_diversity(struct freedv *freedv, + int test_frames_diversity); +void freedv_set_smooth_symbols(struct freedv *freedv, int smooth_symbols); +void freedv_set_squelch_en(struct freedv *freedv, bool squelch_en); +void freedv_set_snr_squelch_thresh(struct freedv *freedv, + float snr_squelch_thresh); +void freedv_set_clip(struct freedv *freedv, bool val); +void freedv_set_total_bit_errors(struct freedv *freedv, int val); +void freedv_set_total_bits(struct freedv *freedv, int val); +void freedv_set_total_bit_errors_coded(struct freedv *freedv, int val); +void freedv_set_total_bits_coded(struct freedv *freedv, int val); +void freedv_set_total_packets(struct freedv *freedv, int val); +void freedv_set_total_packet_errors(struct freedv *freedv, int val); +void freedv_set_callback_error_pattern(struct freedv *freedv, + freedv_calback_error_pattern cb, + void *state); +void freedv_set_varicode_code_num(struct freedv *freedv, int val); +void freedv_set_data_header(struct freedv *freedv, unsigned char *header); +void freedv_set_carrier_ampl(struct freedv *freedv, int c, float ampl); +void freedv_set_sync(struct freedv *freedv, int sync_cmd); +void freedv_set_verbose(struct freedv *freedv, int verbosity); +void freedv_set_tx_bpf(struct freedv *freedv, int val); +void freedv_set_tx_amp(struct freedv *freedv, float amp); +void freedv_set_ext_vco(struct freedv *f, int val); void freedv_set_phase_est_bandwidth_mode(struct freedv *f, int val); -void freedv_set_eq (struct freedv *f, bool val); -void freedv_set_frames_per_burst (struct freedv *f, int framesperburst); -void freedv_passthrough_gain (struct freedv *f, float g); -int freedv_set_tuning_range (struct freedv *freedv, float val_fmin, float val_fmax); +void freedv_set_eq(struct freedv *f, bool val); +void freedv_set_frames_per_burst(struct freedv *f, int framesperburst); +void freedv_passthrough_gain(struct freedv *f, float g); +int freedv_set_tuning_range(struct freedv *freedv, float val_fmin, + float val_fmax); -// Get parameters ------------------------------------------------------------------------- +// Get parameters +// ------------------------------------------------------------------------- struct MODEM_STATS; int freedv_get_version(void); char *freedv_get_hash(void); -int freedv_get_mode (struct freedv *freedv); -void freedv_get_modem_stats (struct freedv *freedv, int *sync, float *snr_est); -void freedv_get_modem_extended_stats(struct freedv *freedv, struct MODEM_STATS *stats); -int freedv_get_test_frames (struct freedv *freedv); - -int freedv_get_speech_sample_rate (struct freedv *freedv); -int freedv_get_n_speech_samples (struct freedv *freedv); -int freedv_get_n_max_speech_samples (struct freedv *freedv); - -int freedv_get_modem_sample_rate (struct freedv *freedv); -int freedv_get_modem_symbol_rate (struct freedv *freedv); -int freedv_get_n_max_modem_samples (struct freedv *freedv); -int freedv_get_n_nom_modem_samples (struct freedv *freedv); -int freedv_get_n_tx_modem_samples (struct freedv *freedv); +int freedv_get_mode(struct freedv *freedv); +void freedv_get_modem_stats(struct freedv *freedv, int *sync, float *snr_est); +void freedv_get_modem_extended_stats(struct freedv *freedv, + struct MODEM_STATS *stats); +int freedv_get_test_frames(struct freedv *freedv); + +int freedv_get_speech_sample_rate(struct freedv *freedv); +int freedv_get_n_speech_samples(struct freedv *freedv); +int freedv_get_n_max_speech_samples(struct freedv *freedv); + +int freedv_get_modem_sample_rate(struct freedv *freedv); +int freedv_get_modem_symbol_rate(struct freedv *freedv); +int freedv_get_n_max_modem_samples(struct freedv *freedv); +int freedv_get_n_nom_modem_samples(struct freedv *freedv); +int freedv_get_n_tx_modem_samples(struct freedv *freedv); int freedv_get_n_tx_preamble_modem_samples(struct freedv *freedv); int freedv_get_n_tx_postamble_modem_samples(struct freedv *freedv); // bit error rate stats -int freedv_get_total_bits (struct freedv *freedv); -int freedv_get_total_bit_errors (struct freedv *freedv); -int freedv_get_total_bits_coded (struct freedv *freedv); -int freedv_get_total_bit_errors_coded (struct freedv *freedv); -int freedv_get_total_packets (struct freedv *freedv); -int freedv_get_total_packet_errors (struct freedv *freedv); +int freedv_get_total_bits(struct freedv *freedv); +int freedv_get_total_bit_errors(struct freedv *freedv); +int freedv_get_total_bits_coded(struct freedv *freedv); +int freedv_get_total_bit_errors_coded(struct freedv *freedv); +int freedv_get_total_packets(struct freedv *freedv); +int freedv_get_total_packet_errors(struct freedv *freedv); -int freedv_get_rx_status (struct freedv *freedv); -void freedv_get_fsk_S_and_N (struct freedv *freedv, float *S, float *N); +int freedv_get_rx_status(struct freedv *freedv); +void freedv_get_fsk_S_and_N(struct freedv *freedv, float *S, float *N); -int freedv_get_sync (struct freedv *freedv); -int freedv_get_sync_interleaver (struct freedv *freedv); +int freedv_get_sync(struct freedv *freedv); +int freedv_get_sync_interleaver(struct freedv *freedv); // access to speech codec states -struct FSK * freedv_get_fsk (struct freedv *f); -struct CODEC2 *freedv_get_codec2 (struct freedv *freedv); +struct FSK *freedv_get_fsk(struct freedv *f); +struct CODEC2 *freedv_get_codec2(struct freedv *freedv); -int freedv_get_bits_per_codec_frame (struct freedv *freedv); -int freedv_get_bits_per_modem_frame (struct freedv *freedv); -int freedv_get_sz_error_pattern (struct freedv *freedv); -int freedv_get_protocol_bits (struct freedv *freedv); +int freedv_get_bits_per_codec_frame(struct freedv *freedv); +int freedv_get_bits_per_modem_frame(struct freedv *freedv); +int freedv_get_sz_error_pattern(struct freedv *freedv); +int freedv_get_protocol_bits(struct freedv *freedv); #ifdef __cplusplus } #endif -#endif //__FREEDV_API__ +#endif //__FREEDV_API__ -- 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/freedv_api.h') 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