[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Questions about connection of Flowgraph and use of ct

From: Charlie Von
Subject: [Discuss-gnuradio] Questions about connection of Flowgraph and use of ctrlport_probe on Android Thank you
Date: Mon, 31 Oct 2016 16:19:29 +0000

Hello every friend,


Could I spare you a few minutes? :) My Teammates and I have learned to develop an application using B200mini on Android.

Here are some questions to consult. I would be greatly appreciated if you can reply them.

We modified the fg.cpp in Mr. Tom Trondeau’s GrRxFM project like this.

We added the header file

#include <gnuradio/blocks/file_sink.h>

#include <gnuradio/fft/fft_vfc.h>

#include <gnuradio/fft/window.h>


And add these variables

gr::blocks::ctrlport_probe2_f::sptr vsnk;

gr::blocks::file_sink::sptr fsink;

gr::fft::fft_vfc::sptr fftblock;


and add some lines in Java_org_gnuradio_grrxfm_RunGraph_FgInit function with bold font



Java_org_gnuradio_grrxfm_RunGraph_FgInit(JNIEnv* env, jobject thiz,

                                         int fd, jstring devname)


  GR_INFO("fg", "FgInit Called");


  float samp_rate = 320e3;


  const char *usbfs_path = env->GetStringUTFChars(devname, NULL);

  std::stringstream args;

  args << "uhd,fd=" << fd << ",usbfs_path=" << usbfs_path;

  GR_INFO("fg", boost::str(boost::format("Using UHD args=%1%") % args.str()));


  uhd::stream_args_t stream_args;

  stream_args.cpu_format = "fc32";

  stream_args.otw_format = "sc16";


  std::vector<float> chan_taps = gr::filter::firdes::low_pass_2(1, samp_rate, 150e3, 50e3, 60, gr::filter::firdes::WIN_HANN);

  int resamp = 10;

  std::vector<float> audio_taps = gr::filter::firdes::low_pass_2(1, samp_rate, 10e3, 2e3, 60, gr::filter::firdes::WIN_HANN);


  float max_dev = 75e3;

  float fm_demod_gain = samp_rate / (2.0f * M_PI * max_dev);

  float audio_rate = samp_rate / resamp;


  tb = gr::make_top_block("fg");

  src = "" stream_args);

  chan_filt = gr::filter::fir_filter_ccf::make(1, chan_taps);

  demod = gr::analog::quadrature_demod_cf::make(fm_demod_gain);

  audio_filt = gr::filter::fir_filter_fff::make(resamp, audio_taps);

  vsnk = gr::blocks::ctrlport_probe2_f::make("rxdata", "Received FM Signal", 2048, 8);


  snk = gr::grand::opensl_sink::make(int(audio_rate));


  fsink = gr::blocks::file_sink::make(16,"/mnt/sdcard/testfile.txt");


  std::vector<float> fftwindow = gr::fft::window::blackman(1024);







  tb->connect(src, 0, chan_filt, 0);

  tb->connect(chan_filt, 0, demod, 0);

  tb->connect(demod, 0, audio_filt, 0);

  tb->connect(audio_filt, 0, snk, 0);




error occurred when the line of code executed and error msg are

7611-7611/org.gnuradio.grrxfm E/logger: itemsize mismatch: fir_filter_ccf0:0 using 8, fft_vfc_fftw0:0 using 4096

7159-7159/org.gnuradio.grrxfm A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 7159 (gnuradio.grrxfm)


  tb->connect(fftblock,0,fsink,0); // saved successfully



error occurred when the line of code executed and error msg are

7159-7159/org.gnuradio.grrxfm E/logger: itemsize mismatch: fir_filter_ccf0:0 using 8, probe2_f0:0 using 4

7159-7159/org.gnuradio.grrxfm A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 7159 (gnuradio.grrxfm)


  sig = gr::analog::sig_source_f::make(audio_rate, gr::analog::GR_SIN_WAVE, 400, 0.5);

  tb->connect(sig, 0, vsnk, 0);



Question 1: How do we correct these errors? How do we know and determine the itemsize of block like fir_filter_ccf0:0  probe2_f0:0 etc.?


Question 2: How do we retrieve data from control port probe vsnk and used by Java layer? Use GetKnobs()? Or other method?



Thank you very much!!



sincerely Charlie

reply via email to

[Prev in Thread] Current Thread [Next in Thread]