[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5719 - gnuradio/branches/features/ofdm/sync/gnuradio-
From: |
trondeau |
Subject: |
[Commit-gnuradio] r5719 - gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general |
Date: |
Wed, 6 Jun 2007 16:55:57 -0600 (MDT) |
Author: trondeau
Date: 2007-06-06 16:55:57 -0600 (Wed, 06 Jun 2007)
New Revision: 5719
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
Log:
added QPSK demod to OFDM framer; working over the air
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
===================================================================
---
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
2007-06-06 22:45:52 UTC (rev 5718)
+++
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
2007-06-06 22:55:57 UTC (rev 5719)
@@ -79,6 +79,14 @@
return (unsigned char)(x.real() > 0 ? 1 : 0);
}
+unsigned char gr_ofdm_frame_sink::qpsk_slicer(gr_complex x)
+{
+ unsigned char i = (x.real() > 0 ? 1 : 0);
+ unsigned char q = (x.imag() > 0 ? 1 : 0);
+
+ return (q << 1) | i;
+}
+
unsigned int gr_ofdm_frame_sink::bpsk_demapper(const gr_complex *in,
unsigned char *out)
{
@@ -101,8 +109,29 @@
return bytes_produced;
}
+unsigned int gr_ofdm_frame_sink::qpsk_demapper(const gr_complex *in,
+ unsigned char *out)
+{
+ unsigned int i=0, bytes_produced=0;
+ while(i < d_occupied_carriers) {
+
+ while((d_byte_offset < 8) && (i < d_occupied_carriers)) {
+ //fprintf(stderr, "%f+j%f\n", in[i].real(), in[i].imag());
+ d_partial_byte |= qpsk_slicer(in[i++]) << (d_byte_offset);
+ d_byte_offset += 2;
+ }
+ if(d_byte_offset == 8) {
+ out[bytes_produced++] = d_partial_byte;
+ d_byte_offset = 0;
+ d_partial_byte = 0;
+ }
+ }
+
+ return bytes_produced;
+}
+
gr_ofdm_frame_sink_sptr
gr_make_ofdm_frame_sink(gr_msg_queue_sptr target_queue, unsigned int
occupied_carriers)
{
@@ -140,8 +169,9 @@
if (VERBOSE)
fprintf(stderr,">>> Entering state machine\n");
- bytes = bpsk_demapper(&in[0], d_bytes_out);
-
+ //bytes = bpsk_demapper(&in[0], d_bytes_out);
+ bytes = qpsk_demapper(&in[0], d_bytes_out);
+
switch(d_state) {
case STATE_SYNC_SEARCH: // Look for flag indicating beginning of pkt
Modified:
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
===================================================================
---
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
2007-06-06 22:45:52 UTC (rev 5718)
+++
gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
2007-06-06 22:55:57 UTC (rev 5719)
@@ -94,6 +94,10 @@
unsigned int bpsk_demapper(const gr_complex *in,
unsigned char *out);
+ unsigned char qpsk_slicer(gr_complex x);
+ unsigned int qpsk_demapper(const gr_complex *in,
+ unsigned char *out);
+
public:
~gr_ofdm_frame_sink();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5719 - gnuradio/branches/features/ofdm/sync/gnuradio-core/src/lib/general,
trondeau <=