[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7843 - gnuradio/branches/developers/trondeau/ofdmtimi
From: |
trondeau |
Subject: |
[Commit-gnuradio] r7843 - gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general |
Date: |
Tue, 26 Feb 2008 12:54:10 -0700 (MST) |
Author: trondeau
Date: 2008-02-26 12:54:09 -0700 (Tue, 26 Feb 2008)
New Revision: 7843
Modified:
gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.cc
Log:
Changed signal output to a vector to better handle item sizes when signalling
the next block. Correlates only when the sync signal has been received. This
checkin gets the OFDM system working pretty solidly over the air with BPSK and
QPSK with one stray signal corrupting a packet every now and then.
Modified:
gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.cc
===================================================================
---
gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.cc
2008-02-26 19:51:38 UTC (rev 7842)
+++
gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.cc
2008-02-26 19:54:09 UTC (rev 7843)
@@ -48,7 +48,7 @@
const
std::vector<gr_complex> &known_symbol,
unsigned int
max_fft_shift_len)
: gr_block ("ofdm_frame_acquisition",
- gr_make_io_signature (1, 1, sizeof(gr_complex)*fft_length),
+ gr_make_io_signature2 (2, 2, sizeof(gr_complex)*fft_length,
sizeof(char)*fft_length),
gr_make_io_signature2 (2, 2,
sizeof(gr_complex)*occupied_carriers, sizeof(char))),
d_occupied_carriers(occupied_carriers),
d_fft_length(fft_length),
@@ -132,9 +132,8 @@
search_delta, h_sqrd.real(), h_sqrd.imag(), power,
h_sqrd.real()/power, arg(h_sqrd));
}
- //FIXME: these threshold values are arbitrary, although the decision
metric is very good
- // even at very low SNR
- if((h_sqrd.real() > 0.95*power) && (h_sqrd.real() < 1.1*power)) {
+ //FIXME: these threshold values are arbitrary
+ if((h_sqrd.real() > 0.80*power) && (h_sqrd.real() < 1.2*power)) {
found = true;
d_coarse_freq = search_delta;
d_phase_count = 1;
@@ -204,22 +203,22 @@
gr_vector_void_star &output_items)
{
const gr_complex *symbol = (const gr_complex *)input_items[0];
+ const char *signal_in = (const char *)input_items[1];
gr_complex *out = (gr_complex *) output_items[0];
- char *sig = (char *) output_items[1];
+ char *signal_out = (char *) output_items[1];
int unoccupied_carriers = d_fft_length - d_occupied_carriers;
int zeros_on_left = (int)ceil(unoccupied_carriers/2.0);
- int found = 0;
- found = correlate(symbol, zeros_on_left);
- if(found) {
+ if(signal_in[0]) {
d_phase_count = 1;
+ correlate(symbol, zeros_on_left);
calculate_equalizer(symbol, zeros_on_left);
- sig[0] = 1;
+ signal_out[0] = 1;
}
else {
- sig[0] = 0;
+ signal_out[0] = 0;
}
for(unsigned int i = 0; i < d_occupied_carriers; i++) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7843 - gnuradio/branches/developers/trondeau/ofdmtiming/gnuradio-core/src/lib/general,
trondeau <=