commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4601 - gnuradio/branches/developers/n4hy/ofdm/gnuradi


From: trondeau
Subject: [Commit-gnuradio] r4601 - gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general
Date: Thu, 22 Feb 2007 21:59:29 -0700 (MST)

Author: trondeau
Date: 2007-02-22 21:59:29 -0700 (Thu, 22 Feb 2007)
New Revision: 4601

Modified:
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
Log:
now sends 2 known symbols for a header


Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
 2007-02-23 04:58:12 UTC (rev 4600)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
 2007-02-23 04:59:29 UTC (rev 4601)
@@ -29,12 +29,16 @@
 #include <vector>
 
 gr_ofdm_bpsk_mapper_sptr
-gr_make_ofdm_bpsk_mapper (unsigned int mtu, unsigned int occupied_carriers, 
unsigned int vlen)
+gr_make_ofdm_bpsk_mapper (unsigned int mtu, unsigned int occupied_carriers, 
unsigned int vlen,
+                         std::vector<gr_complex> known_symbol1, 
std::vector<gr_complex> known_symbol2)
 {
-  return gr_ofdm_bpsk_mapper_sptr (new gr_ofdm_bpsk_mapper (mtu, 
occupied_carriers, vlen));
+  return gr_ofdm_bpsk_mapper_sptr (new gr_ofdm_bpsk_mapper (mtu, 
occupied_carriers, vlen, 
+                                                           known_symbol1, 
known_symbol2));
 }
 
-gr_ofdm_bpsk_mapper::gr_ofdm_bpsk_mapper (unsigned int mtu, unsigned int 
occupied_carriers, unsigned int vlen)
+gr_ofdm_bpsk_mapper::gr_ofdm_bpsk_mapper (unsigned int mtu, unsigned int 
occupied_carriers, unsigned int vlen,
+                                         std::vector<gr_complex> 
known_symbol1, 
+                                         std::vector<gr_complex> known_symbol2)
   : gr_block ("ofdm_bpsk_mapper",
              gr_make_io_signature (1, 1, 2*sizeof(int) + sizeof(unsigned 
char)*mtu),
              gr_make_io_signature (1, 1, sizeof(gr_complex)*vlen)),
@@ -43,9 +47,14 @@
     d_vlen(vlen),
     d_packet_offset(0),
     d_bit_offset(0),
-    d_header_sent(0)
+    d_header_sent(0),
+    d_known_symbol1(known_symbol1),
+    d_known_symbol2(known_symbol2)
+
 {
   assert(d_occupied_carriers < d_vlen);
+  assert(d_occupied_carriers == d_known_symbol1.size());
+  assert(d_occupied_carriers == d_known_symbol2.size());
 }
 
 gr_ofdm_bpsk_mapper::~gr_ofdm_bpsk_mapper(void)
@@ -76,14 +85,22 @@
 
   pkt_length = in[0].length;
 
-  #if 0
-  if(!d_header_sent) {
+  std::vector<gr_complex>::iterator ks_itr;
+  if(d_header_sent == 0) {
+     ks_itr = d_known_symbol1.begin();
+  }
+  else if(d_header_sent == 1) {
+    ks_itr = d_known_symbol2.begin();
+  }
+  
+  if(d_header_sent < 2) {
     //  Add training symbols here
     for(i=0; i < (ceil((d_vlen - d_occupied_carriers)/2.0)); i++) {
       out[i] = gr_complex(0,0);
     }
     for(;i<d_vlen - ceil((d_vlen-d_occupied_carriers)/2.0);i++) {
-      out[i] = gr_complex(1,0);
+      //out[i] = gr_complex(1,0);
+      out[i] = *(ks_itr++);
     }
     for(; i < d_vlen; i++) {
       out[i] = gr_complex(0,0);
@@ -91,16 +108,13 @@
 
     num_symbols = 1;
     out += d_vlen;
-    d_header_sent = true;
+    d_header_sent++;
   }
-  #endif
-  d_header_sent = true;
   
   unsigned int unoccupied_carriers = d_vlen - d_occupied_carriers;
   unsigned int zeros_on_left = (unsigned)ceil(unoccupied_carriers/2.0);
   unsigned int zeros_on_right = unoccupied_carriers - zeros_on_left;
 
-
   while(num_symbols < (unsigned)noutput_items) {
 
     // stick in unused carriers
@@ -130,7 +144,7 @@
       d_packet_offset = 0;
       assert(d_bit_offset == 0);
       num_symbols++;
-      d_header_sent = false;
+      d_header_sent = 0;
       consume_each(1);
       return num_symbols;
     }

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
  2007-02-23 04:58:12 UTC (rev 4600)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
  2007-02-23 04:59:29 UTC (rev 4601)
@@ -26,14 +26,16 @@
 
 #include <gr_block.h>
 #include <gr_frame.h>
+#include <vector>
 
 class gr_ofdm_bpsk_mapper;
 typedef boost::shared_ptr<gr_ofdm_bpsk_mapper> gr_ofdm_bpsk_mapper_sptr;
 
 gr_ofdm_bpsk_mapper_sptr 
-gr_make_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, unsigned 
int vlen);
+gr_make_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, unsigned 
int vlen,
+                         std::vector<gr_complex> known_symbol1, 
+                         std::vector<gr_complex> known_symbol2);
 
-
 /*!
  * \brief take a stream of bytes in and map to a vector of complex
  * constellation points suitable for IFFT input to be used in an ofdm
@@ -43,10 +45,14 @@
 class gr_ofdm_bpsk_mapper : public gr_block
 {
   friend gr_ofdm_bpsk_mapper_sptr
-    gr_make_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, 
unsigned int vlen);
+    gr_make_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, 
unsigned int vlen,
+                             std::vector<gr_complex> known_symbol1, 
+                             std::vector<gr_complex> known_symbol2);
   
  protected:
-  gr_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, unsigned int 
vlen);
+  gr_ofdm_bpsk_mapper (unsigned mtu, unsigned occupied_carriers, unsigned int 
vlen,
+                      std::vector<gr_complex> known_symbol1, 
+                      std::vector<gr_complex> known_symbol2);
   
  private:
   unsigned int d_mtu;
@@ -54,7 +60,8 @@
   unsigned int d_vlen;
   unsigned int d_packet_offset;
   unsigned int d_bit_offset;
-  bool  d_header_sent;
+  unsigned int d_header_sent;
+  std::vector<gr_complex> d_known_symbol1, d_known_symbol2;
 
   void forecast (int noutput_items, gr_vector_int &ninput_items_required);
 

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
  2007-02-23 04:58:12 UTC (rev 4600)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
  2007-02-23 04:59:29 UTC (rev 4601)
@@ -20,19 +20,25 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#include <vector>
+
 GR_SWIG_BLOCK_MAGIC(gr,ofdm_bpsk_mapper)
 
 gr_ofdm_bpsk_mapper_sptr 
 gr_make_ofdm_bpsk_mapper (unsigned int mtu,
                          unsigned int bits_per_symbol, 
-                         unsigned int vlen);
+                         unsigned int vlen,
+                         std::vector<gr_complex> known_symbol1, 
+                         std::vector<gr_complex> known_symbol2);
 
 class gr_ofdm_bpsk_mapper : public gr_block
 {
  protected:
   gr_ofdm_bpsk_mapper (unsigned int mtu,
                       unsigned int bits_per_symbol,
-                      unsigned int vlen);
+                      unsigned int vlen,
+                      std::vector<gr_complex> known_symbol1,
+                      std::vector<gr_complex> known_symbol2);
 
  public:
   int general_work(int noutput_items,





reply via email to

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