commit-gnuradio
[Top][All Lists]
Advanced

[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)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]