2#ifndef INCLUDED_LORA_SDR_FRAME_SYNC_IMPL_H
3#define INCLUDED_LORA_SDR_FRAME_SYNC_IMPL_H
12#include <gnuradio/io_signature.h>
42 uint32_t m_center_freq;
49 uint8_t m_invalid_header;
52 std::vector<uint16_t> m_sync_words;
57 uint32_t m_number_of_bins;
58 uint32_t m_samples_per_symbol;
63 std::vector<gr_complex> in_down;
64 std::vector<gr_complex> m_downchirp;
65 std::vector<gr_complex> m_upchirp;
67 unsigned int frame_cnt;
72 uint16_t m_preamb_len;
73 uint8_t additional_upchirps;
82 std::vector<gr_complex> additional_symbol_samp;
83 std::vector<gr_complex> preamble_raw;
84 std::vector<gr_complex> preamble_raw_up;
85 std::vector<gr_complex> downchirp_raw;
86 std::vector<gr_complex> preamble_upchirps;
87 std::vector<gr_complex> net_id_samp;
88 std::vector<int> net_ids;
92 std::vector<int> preamb_up_vals;
95 float m_cfo_frac_bernier;
100 bool cfo_frac_sto_frac_est;
101 std::vector<gr_complex> CFO_frac_correc;
102 std::vector<gr_complex> CFO_SFO_frac_correc;
104 std::vector<gr_complex> symb_corr;
111 std::ofstream preamb_file;
115 int my_roundf(
float number);
123 float estimate_CFO_frac(gr_complex *samples);
130 float estimate_CFO_frac_Bernier(gr_complex *samples);
135 float estimate_STO_frac();
144 uint32_t get_symbol_val(
const gr_complex *samples, gr_complex *ref_chirp);
155 float determine_energy(
const gr_complex *samples,
int length);
160 void frame_info_handler(pmt::pmt_t frame_info);
165 void noise_est_handler(pmt::pmt_t noise_est);
171 float determine_snr(
const gr_complex *samples);
174 frame_sync_impl(uint32_t center_freq, uint32_t bandwidth, uint8_t sf,
bool impl_head, std::vector<uint16_t> sync_word, uint8_t os_factor, uint16_t preamb_len);
178 void forecast(
int noutput_items, gr_vector_int &ninput_items_required);
181 gr_vector_int &ninput_items,
182 gr_vector_const_void_star &input_items,
183 gr_vector_void_star &output_items);
Definition frame_sync_impl.h:24
frame_sync_impl(uint32_t center_freq, uint32_t bandwidth, uint8_t sf, bool impl_head, std::vector< uint16_t > sync_word, uint8_t os_factor, uint16_t preamb_len)
void forecast(int noutput_items, gr_vector_int &ninput_items_required)
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_guts.h:22