Thanks Max - What is the best way to check the dibit stream? Is it to dump to raw? This would be in between fsk4_demod_ff and the slicer?


I think I have something much funkier than mistuned input though. The wav file I am recording off of the gr::op25::decoder_bf decoder block is really long and large. Like 30Mb for 30 seconds of recording. When I open the wav it says it is ~30 minutes long. This happens both in GRC and my C program. Any ideas on what could possibly cause this? The wav sink is set for 8000hz and 16bit.


This is the graph I am using. Is there anything glaringly wrong, if I am feeding it a good signal?

   float symbol_rate = 4800;
        double samples_per_symbol = 10;
        double system_channel_rate = symbol_rate * samples_per_symbol;
        double symbol_deviation = 600.0;
double prechannel_decim = 80; //floor(capture_rate / system_channel_rate);
        double prechannel_rate = floor(capture_rate / prechannel_decim);
        double trans_width = 14000 / 2;
        double trans_centre = trans_width + (trans_width / 2);

prefilter = gr::filter::freq_xlating_fir_filter_ccf::make(int(prechannel_decim),
gr::filter::firdes::low_pass(1.0, capture_rate, trans_centre, trans_width, gr::filter::firdes::WIN_HANN),
offset, 
capture_rate);

unsigned int d = GCD(prechannel_rate, system_channel_rate);
    double small_system_channel_rate = floor(system_channel_rate  / d);
    double small_prechannel_rate = floor(prechannel_rate / d);

resampler_taps = design_filter(small_prechannel_rate, small_system_channel_rate);

downsample_sig = gr::filter::rational_resampler_base_ccf::make(small_prechannel_rate, small_system_channel_rate, resampler_taps);
double fm_demod_gain = floor(system_channel_rate / (2.0 * pi * symbol_deviation));
demod = gr::analog::quadrature_demod_cf::make(fm_demod_gain);

double symbol_decim = 1;
for (int i=0; i < samples_per_symbol; i++) {
sym_taps.push_back(1.0 / samples_per_symbol);
}
    sym_filter =  gr::filter::fir_filter_fff::make(symbol_decim, sym_taps);
tune_queue = gr::msg_queue::make(2);
traffic_queue = gr::msg_queue::make(2);
const float l[] = { -2.0, 0.0, 2.0, 4.0 };
std::vector<float> levels( l,l + sizeof( l ) / sizeof( l[0] ) );
op25_demod = gr::op25::fsk4_demod_ff::make(tune_queue, system_channel_rate, symbol_rate);
op25_slicer = gr::op25::fsk4_slicer_fb::make(levels);
op25_decoder = gr::op25::decoder_bf::make();
op25_decoder->set_msgq(traffic_queue);

wav_sink = gr::blocks::wavfile_sink::make(filename,1,8000,16);



 

__._,_.___

Posted by: lukekb@gmail.com
Reply via web post Reply to sender Reply to group Start a New Topic Messages in this topic (5)

.

__,_._,___