2#ifndef INCLUDED_LORA_SDR_FRAME_SYNC_IMPL_H
3#define INCLUDED_LORA_SDR_FRAME_SYNC_IMPL_H
10#include <gnuradio/io_signature.h>
32 enum DecoderState { DETECT, SYNC, FRAC_CFO_CORREC, STOP };
43 enum SyncState { NET_ID1, NET_ID2, DOWNCHIRP1, DOWNCHIRP2, QUARTER_DOWN };
51 uint8_t m_invalid_header;
53 std::vector<uint16_t> m_sync_words;
56 uint32_t m_number_of_bins;
63 std::vector<gr_complex> in_down;
64 std::vector<gr_complex> m_downchirp;
65 std::vector<gr_complex> m_upchirp;
72 uint8_t symbols_to_skip;
81 std::vector<gr_complex>
84 std::vector<gr_complex>
96 std::vector<gr_complex> CFO_frac_correc;
98 std::vector<gr_complex> symb_corr;
103#ifdef GRLORA_MEASUREMENTS
106 std::ofstream sync_log;
110 int numb_symbol_to_save;
112 std::vector<gr_complex>
116 std::ofstream preamb_file;
117 std::ofstream payload_file;
123 void frame_info_handler(pmt::pmt_t frame_info);
131 void estimate_CFO(gr_complex *samples);
136 void estimate_CFO_Bernier();
151 uint32_t get_symbol_val(
const gr_complex *samples, gr_complex *ref_chirp);
159 float determine_energy(
const gr_complex *samples);
164 void header_err_handler(pmt::pmt_t payload_len);
177 bool impl_head, std::vector<uint16_t> sync_word);
190 void forecast(
int noutput_items, gr_vector_int &ninput_items_required);
202 gr_vector_const_void_star &input_items,
203 gr_vector_void_star &output_items);
Definition: frame_sync_impl.h:22
frame_sync_impl(float samp_rate, uint32_t bandwidth, uint8_t sf, bool impl_head, std::vector< uint16_t > sync_word)
Construct a new frame sync impl object.
void forecast(int noutput_items, gr_vector_int &ninput_items_required)
~frame_sync_impl()
Destroy the frame sync impl object.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
<+description of block+>
Definition: frame_sync.h:37
Definition: kiss_fft.h:67