diff --git a/src/codec2/mod.rs b/src/codec2/mod.rs index a4c61663ee7a69277abb6642b8a8fac5402358f0..9276caf8e7a8cc1cb892bd3e63a9b321144e98c8 100644 --- a/src/codec2/mod.rs +++ b/src/codec2/mod.rs @@ -5,7 +5,7 @@ use std::{ const MODE_M_MAX: usize = 4; const M: i32 = 2; -const N_SYM: i32 = 35; +const N_SYM: i32 = 50; #[link(name = "fsk", kind = "static")] extern "C" { @@ -33,6 +33,8 @@ extern "C" { ); fn fsk_set_freq_est_limits(fsk: *mut InternalFsk, f_min: libc::c_int, f_max: libc::c_int); + + fn fsk_set_freq_est_alg(fsk: *mut InternalFsk, est_type: libc::c_int); } #[repr(C)] @@ -147,14 +149,17 @@ impl<I: Iterator<Item = Complex>> Fsk<I> { const P: i32 = 5; const FS: i32 = 9600 * P; - let internal = unsafe { fsk_create_hbr(FS, 9600, M, P, N_SYM, -1, 0) }; + let internal = unsafe { fsk_create_hbr(FS, 9600, M, P, N_SYM, -1, 9600) }; // Set upper/lower bound on the FSK peaks, from center // (Hz) - let fsk_lower = -10_000; - let fsk_upper = 10_000; + let fsk_lower = -15_000; + let fsk_upper = 15_000; - unsafe { fsk_set_freq_est_limits(internal, fsk_lower, fsk_upper) }; + unsafe { + fsk_set_freq_est_limits(internal, fsk_lower, fsk_upper); + fsk_set_freq_est_alg(internal, 1); // mask estimator + } Self { internal,