23 #ifndef INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
24 #define INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
35 const std::vector<unsigned char> &sym_value_out,
37 float phase_gain=0.25,
float freq_gain=0.25*0.25/4.0);
53 const std::vector<unsigned char> &sym_value_out,
55 float phase_gain,
float freq_gain);
58 enum state_t {STATE_SYNC_SEARCH, STATE_HAVE_SYNC, STATE_HAVE_HEADER};
60 static const int MAX_PKT_LEN = 4096;
61 static const int HEADERBYTELEN = 4;
65 unsigned int d_header;
66 int d_headerbytelen_cnt;
68 unsigned char *d_bytes_out;
70 unsigned int d_occupied_carriers;
71 unsigned int d_byte_offset;
72 unsigned int d_partial_byte;
74 unsigned char d_packet[MAX_PKT_LEN];
76 int d_packet_whitener_offset;
81 std::vector<gr_complex> d_sym_position;
82 std::vector<unsigned char> d_sym_value_out;
83 std::vector<gr_complex> d_dfe;
86 unsigned char d_resid;
87 unsigned int d_nresid;
94 std::vector<int> d_subcarrier_map;
98 const std::vector<unsigned char> &sym_value_out,
100 float phase_gain,
float freq_gain);
103 void enter_have_sync();
104 void enter_have_header();
109 return ((d_header >> 16) ^ (d_header & 0xffff)) == 0;
116 bool set_sym_value_out(
const std::vector<gr_complex> &sym_position,
117 const std::vector<unsigned char> &sym_value_out);
122 int work(
int noutput_items,