From f7365f29931d7e19d107706d612a4c55e247d802 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 1 Jan 2016 00:21:34 +0000 Subject: [PATCH] occ running past end of buffer git-svn-id: https://svn.code.sf.net/p/freetel/code@2596 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/fsk_horus.m | 6 ++++-- codec2-dev/octave/fsk_horus_stream.m | 25 ++++++++++--------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/codec2-dev/octave/fsk_horus.m b/codec2-dev/octave/fsk_horus.m index fb12274e..ccffceb4 100644 --- a/codec2-dev/octave/fsk_horus.m +++ b/codec2-dev/octave/fsk_horus.m @@ -367,7 +367,8 @@ function [str crc_ok] = extract_ascii(states, rx_bits_buf, uw_loc) str = []; str_dec = []; nstr = 0; ptx_crc = 1; rx_crc = ""; st = uw_loc + length(states.uw); % first bit of first char - en = st+states.max_packet_len - nfield-1; + en = uw_loc + states.max_packet_len - nfield; + %printf("\nst: %d en: %d len: %d\n", st, en, length(rx_bits_buf)); for i=st:nfield+npad:en field = rx_bits_buf(i:i+nfield-1); @@ -962,7 +963,8 @@ if exist("fsk_horus_as_a_lib") == 0 %run_sim(5); %rx_bits = demod_file("horus.raw",4); %rx_bits = demod_file("fsk_horus_100bd_binary.raw",5); - rx_bits = demod_file("~/Desktop/horus_rtty_binary.wav",4); + rx_bits = demod_file("~/Desktop/phorus_binary_ascii.wav",4); + %rx_bits = demod_file("~/Desktop/horus_rtty_binary.wav",4); %rx_bits = demod_file("t.raw",5); %rx_bits = demod_file("~/Desktop/fsk_horus_10dB_1000ppm.wav",4); %rx_bits = demod_file("~/Desktop/fsk_horus_6dB_0ppm.wav",4); diff --git a/codec2-dev/octave/fsk_horus_stream.m b/codec2-dev/octave/fsk_horus_stream.m index aeaa7b56..1e651f60 100755 --- a/codec2-dev/octave/fsk_horus_stream.m +++ b/codec2-dev/octave/fsk_horus_stream.m @@ -31,7 +31,6 @@ nsym = states.nsym; nin = states.nin; nfield = states.rtty.nfield; npad = states.rtty.npad; -uw = states.rtty.uw; EbNo = 0; SNR = 0; @@ -71,10 +70,7 @@ while c packet_found = 1; if (uw_loc + states.rtty.max_packet_len) < nbits - - % insert a single bit error for testing - %rx_bits_buf(uw_loc1+100) = xor(rx_bits_buf(uw_loc1+100),1); - %rx_bits_sd_buf(uw_loc1+100) = 0; + %printf("\n%d nbits: %d\n",uw_loc + states.rtty.max_packet_len, nbits); [str crc_ok] = extract_ascii(states.rtty, rx_bits_buf, uw_loc); @@ -87,13 +83,13 @@ while c end printf("\n %s \n", str); - + % throw out used bits in buffer. We're not sure where the next packet starts % so lets remove everything up to just after the UW we just used to force % a search for the next UW. - rx_bits_buf = rx_bits_buf(uw_loc+length(uw):length(rx_bits_buf)); - rx_bits_sd_buf = rx_bits_sd_buf(uw_loc+length(uw):length(rx_bits_sd_buf)); + rx_bits_buf = rx_bits_buf(uw_loc+length(states.rtty.uw):length(rx_bits_buf)); + rx_bits_sd_buf = rx_bits_sd_buf(uw_loc+length(states.rtty.uw):length(rx_bits_sd_buf)); if crc_ok % extract GPS coords and save to log file for mapping software @@ -115,7 +111,6 @@ while c end end - % Look for complete Horus BINARY frame ------------------------------------------------------------------- nbits = length(rx_bits_buf); @@ -148,19 +143,19 @@ while c % so lets remove everything up to just after the UW we just used to force % a search for the next UW. - rx_bits_buf = rx_bits_buf(uw_loc+length(uw):length(rx_bits_buf)); - rx_bits_sd_buf = rx_bits_sd_buf(uw_loc+length(uw):length(rx_bits_sd_buf)); + rx_bits_buf = rx_bits_buf(uw_loc+length(states.binary.uw):length(rx_bits_buf)); + rx_bits_sd_buf = rx_bits_sd_buf(uw_loc+length(states.binary.uw):length(rx_bits_sd_buf)); end end - % Truncate buffers if no UW found so they don't grow endlessly with no signal. % Keep very end of it as it may have part of a UW in it if packet_found == 0 - if length(rx_bits_buf) > length(uw) - rx_bits_buf = rx_bits_buf(length(rx_bits_buf)-length(uw):length(rx_bits_buf)); - rx_bits_sd_buf = rx_bits_sd_buf(length(rx_bits_sd_buf)-length(uw):length(rx_bits_sd_buf)); + max_len = states.rtty.max_packet_len*4; + if length(rx_bits_buf) > max_len + rx_bits_buf = rx_bits_buf(length(rx_bits_buf)-states.rtty.max_packet_len:length(rx_bits_buf)); + rx_bits_sd_buf = rx_bits_sd_buf(length(rx_bits_sd_buf)-states.rtty.max_packet_len:length(rx_bits_sd_buf)); end end -- 2.25.1