[op25-dev] Re: Simple RX GRC file

lukekb@gmail.com [op25-dev] op25-dev at yahoogroups.com
Sun Nov 23 03:49:35 UTC 2014


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);
 


 

 

  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/op25-dev/attachments/20141122/d7c85fb5/attachment.html>


More information about the op25-dev mailing list