From 0474104af6b76b44d1c25064713b4200aa296405 Mon Sep 17 00:00:00 2001 From: baobrien Date: Thu, 21 Jan 2016 21:59:45 +0000 Subject: [PATCH] Now testing more internal parameters. fsk_demod is passing tests git-svn-id: https://svn.code.sf.net/p/freetel/code@2638 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/tfsk.m | 95 ++++++++++++++++++++++------------------ codec2-dev/src/fsk.c | 53 +++++++++++++++------- 2 files changed, 90 insertions(+), 58 deletions(-) diff --git a/codec2-dev/octave/tfsk.m b/codec2-dev/octave/tfsk.m index c57c1a31..220529ac 100644 --- a/codec2-dev/octave/tfsk.m +++ b/codec2-dev/octave/tfsk.m @@ -22,7 +22,7 @@ graphics_toolkit('gnuplot'); global mod_pass_fail_maxdiff = 1e-3/50000; -global demod_pass_fail_maxdiff = .1; +global demod_pass_fail_maxdiff = .01; function mod = fsk_mod_c(Fs,Rs,f1,f2,bits) %Name of executable containing the modulator @@ -75,29 +75,33 @@ function bits = fsk_demod_c(Fs,Rs,f1,f2,mod) endfunction %Compare 2 vectors, fail if they are not close enough -function pass = vcompare(va,vb,vname,tname) - global demod_pass_fail_maxdiff; +function pass = vcompare(va,vb,vname,tname,tol) %Get delta of vectors - dvec = abs(va)-abs(vb); + dvec = abs(abs(va)-abs(vb)); %Normalize difference - dvec = dvec ./ max(va); + dvec = dvec ./ abs(max(abs(va))); - titlestr = sprintf('Diff between C and Octave of %s for %s',vname,tname); - pass = max(dvec)<(demod_pass_fail_maxdiff) - maxdvec = max(dvec) - %figure(12) - %title(titlestr) - %plot(abs(dvec)) + maxdvec = abs(max(dvec)) + pass = maxdvec=length(passv) + %All pass flags are '1' + pass = sum(passv)>=length(passv); + %and no tests died + pass = pass && length(passv)==ebnodbs; passv assert(pass) endfunction diff --git a/codec2-dev/src/fsk.c b/codec2-dev/src/fsk.c index 9e04792b..8e2c9fed 100644 --- a/codec2-dev/src/fsk.c +++ b/codec2-dev/src/fsk.c @@ -379,12 +379,12 @@ void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], float fsk_in[]){ f1_intbuf[dc_i]=fcmult(sample_src[dc_i],phi1_c); f2_intbuf[dc_i]=fcmult(sample_src[dc_i],phi2_c); + modem_probe_samp_c("t_f1_dc",&f1_intbuf[dc_i],1); + modem_probe_samp_c("t_f2_dc",&f2_intbuf[dc_i],1); /* Spin downconversion phases */ phi1_c = cmult(phi1_c,dphi1); phi2_c = cmult(phi2_c,dphi2); } - modem_probe_samp_c("t_f1_dc",&f1_intbuf[0],Ts-(Ts/P)); - modem_probe_samp_c("t_f2_dc",&f2_intbuf[0],Ts-(Ts/P)); cbuf_i = dc_i; float f1_strs,f1_stis,f2_strs,f2_stis; @@ -405,14 +405,17 @@ void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], float fsk_in[]){ f1_intbuf[cbuf_i+j]=fcmult(sample_src[dc_i],phi1_c); f2_intbuf[cbuf_i+j]=fcmult(sample_src[dc_i],phi2_c); + + modem_probe_samp_c("t_f1_dc",&f1_intbuf[cbuf_i+j],1); + modem_probe_samp_c("t_f2_dc",&f2_intbuf[cbuf_i+j],1); + /* Spin downconversion phases */ phi1_c = cmult(phi1_c,dphi1); phi2_c = cmult(phi2_c,dphi2); + } /* Dump internal samples */ - modem_probe_samp_c("t_f1_dc",&f1_intbuf[cbuf_i],Ts/P); - modem_probe_samp_c("t_f2_dc",&f2_intbuf[cbuf_i],Ts/P); cbuf_i += Ts/P; if(cbuf_i>=Ts) cbuf_i = 0; @@ -425,7 +428,7 @@ void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], float fsk_in[]){ f1_strs = f1_stis = 0; f2_strs = f2_stis = 0; for(j=0; j