occ running past end of buffer
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 1 Jan 2016 00:21:34 +0000 (00:21 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 1 Jan 2016 00:21:34 +0000 (00:21 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2596 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/fsk_horus.m
codec2-dev/octave/fsk_horus_stream.m

index fb12274e231f61f0cc7add7fc85d58072abfa88f..ccffceb4e9275aa61aba811ed4ab3a4600b6caee 100644 (file)
@@ -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);
index aeaa7b56ce7fdceb02c6df5ff380489b929d1819..1e651f60ab5e0139a646b5d4347a5ee1631c5ce0 100755 (executable)
@@ -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