25 #ifndef INCLUDED_GR_BLUETOOTH_MULTI_BLOCK_H 26 #define INCLUDED_GR_BLUETOOTH_MULTI_BLOCK_H 29 #include <gnuradio/sync_block.h> 30 #include <gnuradio/filter/mmse_fir_interpolator_ff.h> 31 #include <gnuradio/filter/freq_xlating_fir_filter.h> 44 multi_block(
double sample_rate,
double center_freq,
double squelch_threshold);
47 static const int SYMBOL_RATE = 1000000;
49 static const int SYMBOLS_PER_BASIC_RATE_SHORTENED_ACCESS_CODE = 68;
50 static const int SYMBOLS_PER_LOW_ENERGY_PREAMBLE_AA = 40;
53 static const int SYMBOLS_PER_BASIC_RATE_SLOT = 625;
54 static const int SYMBOLS_FOR_BASIC_RATE_HISTORY = 3125;
57 static const uint32_t BASE_FREQUENCY = 2402000000UL;
60 static const int CHANNEL_WIDTH = 1000000;
106 std::map<int, gr::filter::freq_xlating_fir_filter_ccf::sptr>
d_noise_ddcs;
119 int mm_cr(
const float *in,
int ninput_items,
float *out,
int noutput_items);
122 void demod(
const gr_complex *in,
float *out,
int noutput_items);
125 void slicer(
const float *in,
char *out,
int noutput_items);
131 int channel_samples(
const double freq,
132 gr_vector_const_void_star& in,
133 gr_vector_void_star& out,
141 int channel_symbols( gr_vector_const_void_star &in,
145 bool check_snr(
const double freq,
146 const double on_channel_energy,
148 gr_vector_const_void_star& in );
151 void set_symbol_history(
int num_symbols);
157 double channel_rel_freq(
int channel);
159 double channel_abs_freq(
int channel);
161 int abs_freq_channel(
double freq);
164 virtual int work (
int noutput_items,
165 gr_vector_const_void_star &input_items,
166 gr_vector_void_star &output_items) = 0;
float d_gain_omega
Definition: multi_block.h:91
Bluetooth multi-channel parent class.
Definition: multi_block.h:40
multi_block()
Definition: multi_block.h:43
#define GR_BLUETOOTH_API
Definition: api.h:30
double d_sample_rate
Definition: multi_block.h:66
int d_first_channel_sample
Definition: multi_block.h:109
gr::filter::mmse_fir_interpolator_ff * d_interp
Definition: multi_block.h:116
double d_samples_per_slot
Definition: multi_block.h:72
std::vector< float > d_channel_filter
Definition: multi_block.h:100
float d_mu
Definition: multi_block.h:88
float d_omega_mid
Definition: multi_block.h:92
int d_first_noise_sample
Definition: multi_block.h:110
float d_gain_mu
Definition: multi_block.h:87
Definition: multi_block.h:33
double d_samples_per_symbol
Definition: multi_block.h:69
uint64_t d_cumulative_count
Definition: multi_block.h:63
double d_noise_filter_width
Definition: multi_block.h:104
std::map< int, gr::filter::freq_xlating_fir_filter_ccf::sptr > d_channel_ddcs
Definition: multi_block.h:101
double d_channel_filter_width
Definition: multi_block.h:99
float d_omega_relative_limit
Definition: multi_block.h:89
double d_low_freq
Definition: multi_block.h:78
float d_demod_gain
Definition: multi_block.h:113
float d_omega
Definition: multi_block.h:90
std::map< int, gr::filter::freq_xlating_fir_filter_ccf::sptr > d_noise_ddcs
Definition: multi_block.h:106
std::vector< float > d_noise_filter
Definition: multi_block.h:105
int d_ddc_decimation_rate
Definition: multi_block.h:84
double d_center_freq
Definition: multi_block.h:75
float d_last_sample
Definition: multi_block.h:93
double d_target_snr
Definition: multi_block.h:96
double d_high_freq
Definition: multi_block.h:81