mirror of https://github.com/drowe67/codec2.git
rm FreeDV 2020C
parent
6549fa1d6f
commit
4d6c143c0a
|
@ -590,13 +590,6 @@ endif()
|
||||||
./ch - - --No -19 |
|
./ch - - --No -19 |
|
||||||
./ofdm_demod --mode 2020B --testframes --ldpc -v 2 > /dev/null")
|
./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
|
# OFDM Data modes
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
@ -865,13 +858,6 @@ if(LPCNET)
|
||||||
./freedv_rx 2020B - /dev/null --testframes"
|
./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()
|
endif()
|
||||||
|
|
||||||
add_test(NAME test_freedv_api_2400A
|
add_test(NAME test_freedv_api_2400A
|
||||||
|
|
|
@ -48,9 +48,6 @@ void freedv_2020x_open(struct freedv *f) {
|
||||||
case FREEDV_MODE_2020B:
|
case FREEDV_MODE_2020B:
|
||||||
ofdm_init_mode("2020B", &ofdm_config);
|
ofdm_init_mode("2020B", &ofdm_config);
|
||||||
break;
|
break;
|
||||||
case FREEDV_MODE_2020C:
|
|
||||||
ofdm_init_mode("2020C", &ofdm_config);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
assert(0);
|
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
|
vq_type = 2; /* index optimised VQ for increased robustness to single bit
|
||||||
errors */
|
errors */
|
||||||
break;
|
break;
|
||||||
case FREEDV_MODE_2020C:
|
|
||||||
vq_type = 2; /* index optimised VQ for increased robustness to single bit
|
|
||||||
errors */
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_800XA, mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, 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_FSK_LDPC, mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, 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");
|
freedv_ofdm_voice_open(f, "700E");
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode))
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, mode))
|
|
||||||
freedv_2020x_open(f);
|
freedv_2020x_open(f);
|
||||||
#endif
|
#endif
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, mode)) freedv_2400a_open(f);
|
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) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, freedv->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, freedv->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, freedv->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, freedv->mode)) {
|
|
||||||
FREE(freedv->codeword_symbols);
|
FREE(freedv->codeword_symbols);
|
||||||
FREE(freedv->codeword_amps);
|
FREE(freedv->codeword_amps);
|
||||||
FREE(freedv->ldpc);
|
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) {
|
static int is_ofdm_mode(struct freedv *f) {
|
||||||
return FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
return FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, 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_700D, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, 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_700D, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode));
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode));
|
|
||||||
|
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) {
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) {
|
||||||
codec2_encode_upacked(f, f->tx_payload_bits, speech_in);
|
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__
|
#ifdef __LPCNET__
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) {
|
|
||||||
/* buffer up bits until we get enough encoded bits for interleaver */
|
/* buffer up bits until we get enough encoded bits for interleaver */
|
||||||
|
|
||||||
for (int j = 0; j < f->n_codec_frames; j++) {
|
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) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) {
|
|
||||||
float gain = 1.0f;
|
float gain = 1.0f;
|
||||||
|
|
||||||
assert(nin <= f->n_max_modem_samples);
|
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) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) {
|
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
rx_status = freedv_comprx_2020(f, demod_in);
|
rx_status = freedv_comprx_2020(f, demod_in);
|
||||||
#endif
|
#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.
|
/* pass through received samples so we can hear what's going on, e.g.
|
||||||
* during tuning */
|
* during tuning */
|
||||||
|
|
||||||
if ((f->mode == FREEDV_MODE_2020) || (f->mode == FREEDV_MODE_2020B) ||
|
if ((f->mode == FREEDV_MODE_2020) || (f->mode == FREEDV_MODE_2020B)) {
|
||||||
(f->mode == FREEDV_MODE_2020C)) {
|
|
||||||
/* 8kHz modem sample rate but 16 kHz speech sample
|
/* 8kHz modem sample rate but 16 kHz speech sample
|
||||||
rate, so we need to resample */
|
rate, so we need to resample */
|
||||||
nout = 2 * f->nin_prev;
|
nout = 2 * f->nin_prev;
|
||||||
|
@ -953,8 +944,7 @@ int freedv_bits_to_speech(struct freedv *f, short speech_out[],
|
||||||
|
|
||||||
if (decode_speech) {
|
if (decode_speech) {
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) {
|
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
/* LPCNet decoder */
|
/* 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) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) {
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode)) {
|
|
||||||
f->freedv_put_next_rx_symbol = rx;
|
f->freedv_put_next_rx_symbol = rx;
|
||||||
f->callback_state_sym = state;
|
f->callback_state_sym = state;
|
||||||
}
|
}
|
||||||
|
@ -1516,8 +1505,7 @@ int freedv_get_n_max_speech_samples(struct freedv *f) {
|
||||||
array */
|
array */
|
||||||
int max_output_passthrough_samples;
|
int max_output_passthrough_samples;
|
||||||
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) ||
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) ||
|
FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode))
|
||||||
FDV_MODE_ACTIVE(FREEDV_MODE_2020C, f->mode))
|
|
||||||
// In 2020 we oversample the input modem samples from 8->16 kHz
|
// In 2020 we oversample the input modem samples from 8->16 kHz
|
||||||
max_output_passthrough_samples = 2 * freedv_get_n_max_modem_samples(f);
|
max_output_passthrough_samples = 2 * freedv_get_n_max_modem_samples(f);
|
||||||
else
|
else
|
||||||
|
|
|
@ -53,7 +53,6 @@ extern "C" {
|
||||||
#define FREEDV_MODE_700E 13
|
#define FREEDV_MODE_700E 13
|
||||||
#define FREEDV_MODE_2020 8
|
#define FREEDV_MODE_2020 8
|
||||||
#define FREEDV_MODE_2020B 16
|
#define FREEDV_MODE_2020B 16
|
||||||
#define FREEDV_MODE_2020C 17
|
|
||||||
|
|
||||||
// available data modes
|
// available data modes
|
||||||
#define FREEDV_MODE_FSK_LDPC 9
|
#define FREEDV_MODE_FSK_LDPC 9
|
||||||
|
@ -123,9 +122,6 @@ extern "C" {
|
||||||
#if !defined(FREEDV_MODE_2020B_EN)
|
#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
|
#endif
|
||||||
#if !defined(FREEDV_MODE_2020C_EN)
|
|
||||||
#define FREEDV_MODE_2020C_EN FREEDV_MODE_EN_DEFAULT
|
|
||||||
#endif
|
|
||||||
#if !defined(FREEDV_MODE_FSK_LDPC_EN)
|
#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
|
#endif
|
||||||
|
|
|
@ -76,7 +76,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
char f2020[80] = {0};
|
char f2020[80] = {0};
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
sprintf(f2020, "|2020|2020B|2020C");
|
sprintf(f2020, "|2020|2020B");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (argc < 4) {
|
if (argc < 4) {
|
||||||
|
@ -181,7 +181,6 @@ int main(int argc, char *argv[]) {
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020;
|
if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020;
|
||||||
if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B;
|
if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B;
|
||||||
if (!strcmp(argv[dx], "2020C")) mode = FREEDV_MODE_2020C;
|
|
||||||
#endif
|
#endif
|
||||||
if (mode == -1) {
|
if (mode == -1) {
|
||||||
fprintf(stderr, "Error in mode: %s\n", argv[dx]);
|
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",
|
fprintf(stderr, "BER......: %5.4f Tbits: %8d Terrs: %8d\n",
|
||||||
(double)uncoded_ber, Tbits, Terrs);
|
(double)uncoded_ber, Tbits, Terrs);
|
||||||
if ((mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_700E) ||
|
if ((mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_700E) ||
|
||||||
(mode == FREEDV_MODE_2020) || (mode == FREEDV_MODE_2020B) ||
|
(mode == FREEDV_MODE_2020) || (mode == FREEDV_MODE_2020B)) {
|
||||||
(mode == FREEDV_MODE_2020C)) {
|
|
||||||
int Tbits_coded = freedv_get_total_bits_coded(freedv);
|
int Tbits_coded = freedv_get_total_bits_coded(freedv);
|
||||||
int Terrs_coded = freedv_get_total_bit_errors_coded(freedv);
|
int Terrs_coded = freedv_get_total_bit_errors_coded(freedv);
|
||||||
float coded_ber = (float)Terrs_coded / Tbits_coded;
|
float coded_ber = (float)Terrs_coded / Tbits_coded;
|
||||||
|
|
|
@ -65,7 +65,7 @@ int main(int argc, char *argv[]) {
|
||||||
reliable_text_t reliable_text_obj;
|
reliable_text_t reliable_text_obj;
|
||||||
char f2020[80] = {0};
|
char f2020[80] = {0};
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
sprintf(f2020, "|2020|2020B|2020C");
|
sprintf(f2020, "|2020|2020B");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (argc < 4) {
|
if (argc < 4) {
|
||||||
|
@ -144,7 +144,6 @@ int main(int argc, char *argv[]) {
|
||||||
#ifdef __LPCNET__
|
#ifdef __LPCNET__
|
||||||
if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020;
|
if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020;
|
||||||
if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B;
|
if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B;
|
||||||
if (!strcmp(argv[dx], "2020C")) mode = FREEDV_MODE_2020C;
|
|
||||||
#endif
|
#endif
|
||||||
if (mode == -1) {
|
if (mode == -1) {
|
||||||
fprintf(stderr, "Error in mode: %s\n", argv[dx]);
|
fprintf(stderr, "Error in mode: %s\n", argv[dx]);
|
||||||
|
|
|
@ -76,7 +76,6 @@ void ldpc_mode_specific_setup(struct OFDM *ofdm, struct LDPC *ldpc) {
|
||||||
set_data_bits_per_frame(ldpc, 156);
|
set_data_bits_per_frame(ldpc, 156);
|
||||||
ldpc->protection_mode = LDPC_PROT_2020B;
|
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, "datac4")) set_data_bits_per_frame(ldpc, 448);
|
||||||
if (!strcmp(ofdm->mode, "datac13")) set_data_bits_per_frame(ldpc, 128);
|
if (!strcmp(ofdm->mode, "datac13")) set_data_bits_per_frame(ldpc, 128);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,8 @@ struct LDPC ldpc_codes[] = {
|
||||||
HRAb_396_504_MAX_ROW_WEIGHT, HRAb_396_504_MAX_COL_WEIGHT,
|
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},
|
(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", H_212_158_MAX_ITER, 0, 1, 1, H_212_158_CODELENGTH,
|
||||||
H_212_158_NUMBERPARITYBITS, H_212_158_NUMBERROWSHCOLS,
|
H_212_158_NUMBERPARITYBITS, H_212_158_NUMBERROWSHCOLS,
|
||||||
H_212_158_MAX_ROW_WEIGHT, H_212_158_MAX_COL_WEIGHT,
|
H_212_158_MAX_ROW_WEIGHT, H_212_158_MAX_COL_WEIGHT,
|
||||||
|
|
|
@ -551,7 +551,7 @@ static void allocate_tx_bpf(struct OFDM *ofdm) {
|
||||||
quisk_filt_cfInit(ofdm->tx_bpf, filtP900S1100,
|
quisk_filt_cfInit(ofdm->tx_bpf, filtP900S1100,
|
||||||
sizeof(filtP900S1100) / sizeof(float));
|
sizeof(filtP900S1100) / sizeof(float));
|
||||||
quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs);
|
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,
|
quisk_filt_cfInit(ofdm->tx_bpf, filtP1100S1300,
|
||||||
sizeof(filtP1100S1300) / sizeof(float));
|
sizeof(filtP1100S1300) / sizeof(float));
|
||||||
quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs);
|
quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs);
|
||||||
|
|
|
@ -92,22 +92,6 @@ void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config) {
|
||||||
config->state_machine = "voice2";
|
config->state_machine = "voice2";
|
||||||
config->ftwindowwidth = 64;
|
config->ftwindowwidth = 64;
|
||||||
config->foff_limiter = true;
|
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) {
|
} else if (strcmp(mode, "qam16") == 0) {
|
||||||
/* not in use yet */
|
/* not in use yet */
|
||||||
config->ns = 5;
|
config->ns = 5;
|
||||||
|
|
|
@ -38,7 +38,6 @@ if [ "$1" == "LPCNet" ]; then
|
||||||
# these don't get run unless we build with LPCNet
|
# these don't get run unless we build with LPCNet
|
||||||
voice_test "2020"
|
voice_test "2020"
|
||||||
voice_test "2020B"
|
voice_test "2020B"
|
||||||
voice_test "2020C"
|
|
||||||
else
|
else
|
||||||
voice_test "1600"
|
voice_test "1600"
|
||||||
voice_test "700C"
|
voice_test "700C"
|
||||||
|
|
Loading…
Reference in New Issue