[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5687 - gnuradio/branches/features/ofdm/sync/gnuradio-
From: |
trondeau |
Subject: |
[Commit-gnuradio] r5687 - gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general |
Date: |
Tue, 5 Jun 2007 09:13:47 -0600 (MDT) |
Author: trondeau
Date: 2007-06-05 09:13:47 -0600 (Tue, 05 Jun 2007)
New Revision: 5687
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
Log:
changing state machine to pull in any number of known symbols and set the
signalling line high at the start of the packet
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
===================================================================
---
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
2007-06-05 15:11:33 UTC (rev 5686)
+++
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
2007-06-05 15:13:47 UTC (rev 5687)
@@ -31,18 +31,16 @@
gr_ofdm_bpsk_mapper_sptr
gr_make_ofdm_bpsk_mapper (unsigned int msgq_limit,
unsigned int occupied_carriers, unsigned int
fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2)
+ const std::vector< std::vector<gr_complex> >
&known_symbols)
{
return gr_ofdm_bpsk_mapper_sptr (new gr_ofdm_bpsk_mapper (msgq_limit,
occupied_carriers, fft_length,
- known_symbol1,
known_symbol2));
+ known_symbols));
}
// Consumes 1 packet and produces as many OFDM symbols of fft_length to hold
the full packet
gr_ofdm_bpsk_mapper::gr_ofdm_bpsk_mapper (unsigned int msgq_limit,
unsigned int occupied_carriers,
unsigned int fft_length,
- const std::vector<gr_complex>
&known_symbol1,
- const std::vector<gr_complex>
&known_symbol2)
+ const std::vector<
std::vector<gr_complex> > &known_symbols)
: gr_sync_block ("ofdm_bpsk_mapper",
gr_make_io_signature (0, 0, 0),
gr_make_io_signature2 (1, 2, sizeof(gr_complex)*fft_length,
sizeof(char))),
@@ -50,13 +48,16 @@
d_occupied_carriers(occupied_carriers),
d_fft_length(fft_length),
d_bit_offset(0),
- d_header_sent(0),
- d_known_symbol1(known_symbol1),
- d_known_symbol2(known_symbol2)
+ d_ks_sent(0),
+ d_start_of_packet(false),
+ d_known_symbols(known_symbols)
{
assert(d_occupied_carriers <= d_fft_length);
- assert(d_occupied_carriers == d_known_symbol1.size());
- assert(d_occupied_carriers == d_known_symbol2.size());
+
+ // Make sure all known symbols are of the proper length
+ for(size_t i=0; i < d_known_symbols.size(); i++) {
+ assert(d_occupied_carriers == d_known_symbols[i].size());
+ }
}
gr_ofdm_bpsk_mapper::~gr_ofdm_bpsk_mapper(void)
@@ -90,7 +91,7 @@
d_msg = d_msgq->delete_head(); // block, waiting for a message
d_msg_offset = 0;
d_bit_offset = 0;
- d_header_sent = 0;
+ d_ks_sent = 0;
if((d_msg->length() == 0) && (d_msg->type() == 1)) {
d_msg.reset();
@@ -100,37 +101,29 @@
if(output_items.size() == 2) {
char *sig = (char *)output_items[1];
- if(d_header_sent == 1) {
- sig[0] = 1;
- }
- else {
- sig[0] = 0;
- }
+ sig[0] = d_start_of_packet;
}
// Build a single symbol:
-
+ d_start_of_packet = false;
+
// Initialize all bins to 0 to set unused carriers
memset(out, 0, d_fft_length*sizeof(gr_complex));
- if(d_header_sent == 0) {
- for(i=0; i < d_occupied_carriers; i++) {
- out[i+zeros_on_left] = d_known_symbol1[i];
- }
- d_header_sent++;
-
- return 1;
- }
-
- if(d_header_sent == 1) {
+ if(d_ks_sent < d_known_symbols.size()) {
for(i=0; i < d_occupied_carriers; i++) {
- out[i+zeros_on_left] = d_known_symbol2[i];
+ out[i+zeros_on_left] = d_known_symbols[d_ks_sent][i];
}
- d_header_sent++;
+ d_ks_sent++;
+ if(d_ks_sent == d_known_symbols.size()) {
+ d_start_of_packet = true;
+ }
+
return 1;
}
-
+
+
i = 0;
while((d_msg_offset < d_msg->length()) && (i < d_occupied_carriers)) {
unsigned char bit = (d_msg->msg()[d_msg_offset] >> (d_bit_offset)) & 0x01;
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
===================================================================
---
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
2007-06-05 15:11:33 UTC (rev 5686)
+++
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.h
2007-06-05 15:13:47 UTC (rev 5687)
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2007 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -35,8 +35,7 @@
gr_ofdm_bpsk_mapper_sptr
gr_make_ofdm_bpsk_mapper (unsigned msgq_limit,
unsigned occupied_carriers, unsigned int fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2);
+ const std::vector< std::vector<gr_complex> >
&known_symbols);
/*!
* \brief take a stream of bytes in and map to a vector of complex
@@ -47,17 +46,14 @@
class gr_ofdm_bpsk_mapper : public gr_sync_block
{
friend gr_ofdm_bpsk_mapper_sptr
- gr_make_ofdm_bpsk_mapper (unsigned msgq_limit,
- unsigned occupied_carriers, unsigned int
fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2);
-
+ gr_make_ofdm_bpsk_mapper (unsigned msgq_limit,
+ unsigned occupied_carriers, unsigned int fft_length,
+ const std::vector<std::vector<gr_complex> >
&known_symbols);
protected:
gr_ofdm_bpsk_mapper (unsigned msgq_limit,
unsigned occupied_carriers, unsigned int fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2);
-
+ const std::vector<std::vector<gr_complex> >
&known_symbols);
+
private:
gr_msg_queue_sptr d_msgq;
gr_message_sptr d_msg;
@@ -67,8 +63,9 @@
unsigned int d_occupied_carriers;
unsigned int d_fft_length;
unsigned int d_bit_offset;
- unsigned int d_header_sent;
- std::vector<gr_complex> d_known_symbol1, d_known_symbol2;
+ unsigned int d_ks_sent;
+ bool d_start_of_packet;
+ std::vector< std::vector<gr_complex> > d_known_symbols;
public:
~gr_ofdm_bpsk_mapper(void);
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
===================================================================
---
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
2007-06-05 15:11:33 UTC (rev 5686)
+++
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.i
2007-06-05 15:13:47 UTC (rev 5687)
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2006 Free Software Foundation, Inc.
+ * Copyright 2006,2007 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -28,8 +28,7 @@
gr_make_ofdm_bpsk_mapper (unsigned int msgq_limit,
unsigned int bits_per_symbol,
unsigned int fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2);
+ const std::vector< std::vector<gr_complex> >
&known_symbols);
class gr_ofdm_bpsk_mapper : public gr_sync_block
{
@@ -37,8 +36,7 @@
gr_ofdm_bpsk_mapper (unsigned int msgq_limit,
unsigned int bits_per_symbol,
unsigned int fft_length,
- const std::vector<gr_complex> &known_symbol1,
- const std::vector<gr_complex> &known_symbol2);
+ const std::vector< std::vector<gr_complex> >
&known_symbols);
public:
gr_msg_queue_sptr msgq();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5687 - gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general,
trondeau <=