diff options
author | Johnathan Corgan | 2009-09-23 18:17:15 -0700 |
---|---|---|
committer | Johnathan Corgan | 2009-09-23 18:17:15 -0700 |
commit | d3a651aa194620d83dc61cac23f6887b6e4fd23e (patch) | |
tree | e92497af81512bce1b0d965dcf1dc5be2975413a /gr-noaa/lib/noaa_hrpt_decoder.cc | |
parent | 18cd6228abbd66d5be283745b5e8f8fca94c3ad2 (diff) | |
parent | 2afcae4f01e19d3973f3fc0eb6db50dc9dcb7098 (diff) | |
download | gnuradio-d3a651aa194620d83dc61cac23f6887b6e4fd23e.tar.gz gnuradio-d3a651aa194620d83dc61cac23f6887b6e4fd23e.tar.bz2 gnuradio-d3a651aa194620d83dc61cac23f6887b6e4fd23e.zip |
Merge branch 'wip/gr-noaa' of http://gnuradio.org/git/jcorgan into master
* 'wip/gr-noaa' of http://gnuradio.org/git/jcorgan:
Added README and updated configuration requirements
Split HRPT script into live receive and post-processing
Dumps HRPT frames to text file similar to specification document
Added skeleton HRPT decoder block
Updated HRPT receiver to read files recorded as shorts
Add HRPT word output to deframer
Reorganization of directories
Added HRPT deframer block
Changed synchronizer to output sliced bits.
Updated HRPT blocks/scripts for testing. Seeing good minor frame sync's.
Implemented crude timing recovery using zero crossings but no resampling
Work in progress, incomplete
Update rx_poes script to filter prior to PLL.
Created new gr-noaa top-level component.
Diffstat (limited to 'gr-noaa/lib/noaa_hrpt_decoder.cc')
-rw-r--r-- | gr-noaa/lib/noaa_hrpt_decoder.cc | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/gr-noaa/lib/noaa_hrpt_decoder.cc b/gr-noaa/lib/noaa_hrpt_decoder.cc new file mode 100644 index 000000000..8cfaa913c --- /dev/null +++ b/gr-noaa/lib/noaa_hrpt_decoder.cc @@ -0,0 +1,77 @@ +/* -*- c++ -*- */ +/* + * Copyright 2009 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <noaa_hrpt_decoder.h> +#include <gr_io_signature.h> + +#define SYNC1 0x0284 +#define SYNC2 0x016F +#define SYNC3 0x035C +#define SYNC4 0x019D +#define SYNC5 0x020F +#define SYNC6 0x0095 + +noaa_hrpt_decoder_sptr +noaa_make_hrpt_decoder() +{ + return gnuradio::get_initial_sptr(new noaa_hrpt_decoder()); +} + +noaa_hrpt_decoder::noaa_hrpt_decoder() + : gr_sync_block("noaa_hrpt_decoder", + gr_make_io_signature(1, 1, sizeof(short)), + gr_make_io_signature(0, 0, 0)) +{ + d_word_count = 0; +} + +int +noaa_hrpt_decoder::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + const unsigned short *in = (const unsigned short*)input_items[0]; + + int i = 0; + while (i < noutput_items) { + unsigned short word = in[i++]; + d_word_count++; + //fprintf(stderr, "%5u: ", d_word_count); + for (int pos = 0; pos < 10; pos++) { + char ch = (word & (1 << 9)) ? '1' : '0'; + word = word << 1; + //fprintf(stderr, "%c ", ch); + } + //fprintf(stderr, "\n"); + + if (d_word_count == 11090) { + d_word_count = 0; + //fprintf(stderr, "\n"); + } + } + + return i; +} |