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);
%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);
nin = states.nin;
nfield = states.rtty.nfield;
npad = states.rtty.npad;
-uw = states.rtty.uw;
EbNo = 0;
SNR = 0;
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);
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
end
end
-
% Look for complete Horus BINARY frame -------------------------------------------------------------------
nbits = length(rx_bits_buf);
% 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