[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3613 - gnuradio/branches/developers/jcorgan/pager/gr-
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3613 - gnuradio/branches/developers/jcorgan/pager/gr-pager/src |
Date: |
Fri, 22 Sep 2006 01:39:12 -0600 (MDT) |
Author: jcorgan
Date: 2006-09-22 01:39:12 -0600 (Fri, 22 Sep 2006)
New Revision: 3613
Modified:
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/flex_demod.py
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager.i
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.cc
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.h
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/usrp_flex.py
Log:
Work in progress on flex_deinterleave()
Modified: gnuradio/branches/developers/jcorgan/pager/gr-pager/src/flex_demod.py
===================================================================
--- gnuradio/branches/developers/jcorgan/pager/gr-pager/src/flex_demod.py
2006-09-22 06:22:21 UTC (rev 3612)
+++ gnuradio/branches/developers/jcorgan/pager/gr-pager/src/flex_demod.py
2006-09-22 07:39:12 UTC (rev 3613)
@@ -35,7 +35,8 @@
QUAD - Quadrature demodulator converts FSK to baseband amplitudes
LPF - Low pass filter to remove noise prior to slicer
SLICER - Converts input to one of four symbols (0, 1, 2, 3)
- DEFRAMER - Syncronizes symbol stream and outputs FLEX codewords
+ SYNC - Converts symbol stream to four phases of FLEX blocks
+ DEINTx - Deinterleaves FLEX blocks into codewords
---
@param fg: flowgraph
@@ -51,10 +52,15 @@
LPF = gr.fir_filter_fff(1, taps)
SLICER = pager_swig.slicer_fb(.001, .00001) # Attack, decay
SYNC = pager_swig.flex_sync(channel_rate)
-
-# DEFRAMER = pager_swig.flex_deframer(channel_rate)
-# MESSAGE = pager_swig.flex_message()
+ DEINTA = pager_swig.flex_deinterleave()
+ DEINTB = pager_swig.flex_deinterleave()
+ DEINTC = pager_swig.flex_deinterleave()
+ DEINTD = pager_swig.flex_deinterleave()
fg.connect(QUAD, LPF, SLICER, SYNC)
-
- gr.hier_block.__init__(self, fg, QUAD, SYNC)
+ fg.connect((SYNC, 0), DEINTA)
+ fg.connect((SYNC, 1), DEINTB)
+ fg.connect((SYNC, 2), DEINTC)
+ fg.connect((SYNC, 3), DEINTD)
+
+ gr.hier_block.__init__(self, fg, QUAD, (DEINTA, DEINTB, DEINTC,
DEINTD))
Modified: gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager.i
===================================================================
--- gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager.i
2006-09-22 06:22:21 UTC (rev 3612)
+++ gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager.i
2006-09-22 07:39:12 UTC (rev 3613)
@@ -65,7 +65,7 @@
pager_flex_deinterleave_sptr pager_make_flex_deinterleave();
-class pager_flex_deinterleave : public gr_sync_block
+class pager_flex_deinterleave : public gr_sync_decimator
{
private:
pager_flex_deinterleave();
Modified:
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.cc
2006-09-22 06:22:21 UTC (rev 3612)
+++
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.cc
2006-09-22 07:39:12 UTC (rev 3613)
@@ -32,11 +32,11 @@
}
pager_flex_deinterleave::pager_flex_deinterleave() :
- gr_sync_block("flex_deinterleave",
+ gr_sync_decimator("flex_deinterleave",
gr_make_io_signature(1, 1, sizeof(unsigned char)),
- gr_make_io_signature(1, 1, sizeof(unsigned char)))
+ gr_make_io_signature(1, 1, sizeof(gr_int32)), 32)
{
- set_output_multiple(256); // One FLEX block at a time
+ set_output_multiple(8); // One FLEX block at a time
}
int pager_flex_deinterleave::work(int noutput_items,
@@ -44,15 +44,24 @@
gr_vector_void_star &output_items)
{
const unsigned char *in = (const unsigned char *)input_items[0];
- unsigned char *out = (unsigned char *)output_items[0];
+ gr_int32 *out = (gr_int32 *)output_items[0];
- int i = 0;
+ // set_output_multiple garauntees we have output space for at least
+ // 8 codewords and 256 bits on input
+ //
+ // Codewords are transmitted MSB for each of 8, then MSB-1 for each, etc.
+ int i, j;
- while (i < noutput_items) {
- unsigned char bit = *in++; i++;
- *out++ = bit;
+ for (i = 0; i < 32; i++) {
+ for (j = 0; j < 8; j++) {
+ d_codewords[j] <<= 1;
+ d_codewords[j] |= *in++;
+ }
}
- consume_each(i);
- return noutput_items;
+ // Now output codewords
+ for (j = 0; j < 8; j++)
+ *out = d_codewords[j];
+
+ return j;
}
Modified:
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.h
===================================================================
---
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.h
2006-09-22 06:22:21 UTC (rev 3612)
+++
gnuradio/branches/developers/jcorgan/pager/gr-pager/src/pager_flex_deinterleave.h
2006-09-22 07:39:12 UTC (rev 3613)
@@ -22,7 +22,7 @@
#ifndef INCLUDED_PAGER_FLEX_DEINTERLEAVE_H
#define INCLUDED_PAGER_FLEX_DEINTERLEAVE_H
-#include <gr_sync_block.h>
+#include <gr_sync_decimator.h>
class pager_flex_deinterleave;
typedef boost::shared_ptr<pager_flex_deinterleave>
pager_flex_deinterleave_sptr;
@@ -34,12 +34,14 @@
* \ingroup block
*/
-class pager_flex_deinterleave : public gr_sync_block
+class pager_flex_deinterleave : public gr_sync_decimator
{
private:
// Constructors
friend pager_flex_deinterleave_sptr pager_make_flex_deinterleave();
pager_flex_deinterleave();
+
+ gr_int32 d_codewords[8];
public:
Modified: gnuradio/branches/developers/jcorgan/pager/gr-pager/src/usrp_flex.py
===================================================================
--- gnuradio/branches/developers/jcorgan/pager/gr-pager/src/usrp_flex.py
2006-09-22 06:22:21 UTC (rev 3612)
+++ gnuradio/branches/developers/jcorgan/pager/gr-pager/src/usrp_flex.py
2006-09-22 07:39:12 UTC (rev 3613)
@@ -115,10 +115,10 @@
FLEX = pager.flex_demod(self, 32000)
- SINKA = gr.file_sink(1, options.filename+'A')
- SINKB = gr.file_sink(1, options.filename+'B')
- SINKC = gr.file_sink(1, options.filename+'C')
- SINKD = gr.file_sink(1, options.filename+'D')
+ SINKA = gr.file_sink(4, options.filename+'A')
+ SINKB = gr.file_sink(4, options.filename+'B')
+ SINKC = gr.file_sink(4, options.filename+'C')
+ SINKD = gr.file_sink(4, options.filename+'D')
self.connect(USRP, CHAN)
self.connect(CHAN, RFSQL)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3613 - gnuradio/branches/developers/jcorgan/pager/gr-pager/src,
jcorgan <=