Boschma, J.J. (Jeroen | 26 Jan 12:54 2015
Picon
Picon

Help to get control over USRP from custom block

Hi all,

 

A last attempt this time, after struggling already several months with this subject…

 

From within my custom (out-of-tree) C++ block I need full control over USRP sink/source. According to the documentation, the command interface only implements three functions (gain, center frequency and LO_offset ). I need much more functionality however (sensors, IQ-imbalance, etc…), so I looked at another solution.

 

In my custom block class I added a method that takes 2 pointers:

 

    boost::shared_prt<gr::uhd::usrp_sink>

    boost::shared_prt<gr::uhd::usrp_source>

 

In the Python top_block.py code I add a call to this method in order to pass the USRP pointers from Python to my C++ custom block.

 

The pointers seem to be valid in C++, but apparently the corresponding classes have empty virtual methods, so if I want to use the pointers nothing happens or Python crashes.

 

Does anybody know how to get pointers that have all functionality implemented from the original Ettus library? I am completely stuck... It may be an ugly hack, but I just need to get things done now.

 

Regards,

 

       Jeroen

 

This message may contain information that is not intended for you. If you are not the addressee or if this message was sent to you by mistake, you are requested to inform the sender and delete the message. TNO accepts no liability for the content of this e-mail, for the manner in which you use it and for damage of any kind resulting from the risks inherent to the electronic transmission of messages.

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Philip Balister | 26 Jan 09:08 2015

Fwd: New Defects reported by Coverity Scan for GNURadio

FYI.

-------- Forwarded Message --------
Subject: New Defects reported by Coverity Scan for GNURadio
Date: Sun, 25 Jan 2015 23:13:10 -0800
From: scan-admin <at> coverity.com
To: philip <at> balister.org

Hi,

Please find the latest report on new defect(s) introduced to GNURadio
found with Coverity Scan.

7 new defect(s) introduced to GNURadio found with Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 7 of 7 defect(s)

** CID 1267227:  Self assignment  (NO_EFFECT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gr-dtv/lib/atsc/atsc_interleaver_impl.cc:
61 in gr::dtv::atsc_interleaver_impl::atsc_interleaver_impl()()

** CID 1267226:  Dereference before null check  (REVERSE_INULL)
/gr-digital/swig/digital_swigPYTHON_wrap.cxx: 235836 in
_wrap_new_constellation_16qam_sptr(_object *, _object *)()

** CID 1267225:  Dereference before null check  (REVERSE_INULL)
/gr-digital/swig/digital_swigPYTHON_wrap.cxx: 234542 in
_wrap_new_constellation_8psk_natural_sptr(_object *, _object *)()

** CID 1267224:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()

** CID 1267223:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()

** CID 1267222:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()

** CID 1267221:  Uninitialized scalar variable  (UNINIT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gr-dtv/lib/atsc/atsc_field_sync_mux_impl.cc:
199 in gr::dtv::atsc_field_sync_mux_impl::general_work(int,
std::vector<int, std::allocator<int>> &, std::vector<const void *,
std::allocator<const void *>>&, std::vector<void *, std::allocator<void
*>>&)()

________________________________________________________________________________________________________
*** CID 1267227:  Self assignment  (NO_EFFECT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gr-dtv/lib/atsc/atsc_interleaver_impl.cc:
61 in gr::dtv::atsc_interleaver_impl::atsc_interleaver_impl()()
55           }
56
57           memset(registers, 0, sizeof(unsigned char) * I * ((I - 1) *
J));
58           memset(pointers, 0, sizeof(int) * I);
59
60           this->I = I;
>>>     CID 1267227:  Self assignment  (NO_EFFECT)
>>>     Assignment operation "this->J = this->J" has no effect.
61           this->J = J;
62           commutator = 0;
63         }
64
65         atsc_interleaver_impl::~atsc_interleaver_impl()
66         {

________________________________________________________________________________________________________
*** CID 1267226:  Dereference before null check  (REVERSE_INULL)
/gr-digital/swig/digital_swigPYTHON_wrap.cxx: 235836 in
_wrap_new_constellation_16qam_sptr(_object *, _object *)()
235830     SWIGINTERN PyObject
*_wrap_new_constellation_16qam_sptr(PyObject *self, PyObject *args) {
235831       int argc;
235832       PyObject *argv[2];
235833       int ii;
235834
235835       if (!PyTuple_Check(args)) SWIG_fail;
>>>     CID 1267226:  Dereference before null check  (REVERSE_INULL)
>>>     Null-checking "args" suggests that it may be null, but it has already been dereferenced on all paths
leading to the check.
235836       argc = args ? (int)PyObject_Length(args) : 0;
235837       for (ii = 0; (ii < 1) && (ii < argc); ii++) {
235838         argv[ii] = PyTuple_GET_ITEM(args,ii);
235839       }
235840       if (argc == 0) {
235841         return _wrap_new_constellation_16qam_sptr__SWIG_0(self,
args);

________________________________________________________________________________________________________
*** CID 1267225:  Dereference before null check  (REVERSE_INULL)
/gr-digital/swig/digital_swigPYTHON_wrap.cxx: 234542 in
_wrap_new_constellation_8psk_natural_sptr(_object *, _object *)()
234536     SWIGINTERN PyObject
*_wrap_new_constellation_8psk_natural_sptr(PyObject *self, PyObject *args) {
234537       int argc;
234538       PyObject *argv[2];
234539       int ii;
234540
234541       if (!PyTuple_Check(args)) SWIG_fail;
>>>     CID 1267225:  Dereference before null check  (REVERSE_INULL)
>>>     Null-checking "args" suggests that it may be null, but it has already been dereferenced on all paths
leading to the check.
234542       argc = args ? (int)PyObject_Length(args) : 0;
234543       for (ii = 0; (ii < 1) && (ii < argc); ii++) {
234544         argv[ii] = PyTuple_GET_ITEM(args,ii);
234545       }
234546       if (argc == 0) {
234547         return
_wrap_new_constellation_8psk_natural_sptr__SWIG_0(self, args);

________________________________________________________________________________________________________
*** CID 1267224:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()
30     #include <iostream>
31
32     namespace po = boost::program_options;
33     using boost::format;
34
35     int
>>>     CID 1267224:  Uncaught exception  (UNCAUGHT_EXCEPT)
>>>     In function "main" an exception of type
"boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::io::bad_format_string>
>" is thrown and never caught.
36     main(int argc, char **argv)
37     {
38       po::options_description desc((format("Program options: %1%
[options]") % argv[0]).str());
39       po::variables_map vm;
40
41       desc.add_options()

________________________________________________________________________________________________________
*** CID 1267223:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()
30     #include <iostream>
31
32     namespace po = boost::program_options;
33     using boost::format;
34
35     int
>>>     CID 1267223:  Uncaught exception  (UNCAUGHT_EXCEPT)
>>>     In function "main" an exception of type
"boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::io::too_few_args>
>" is thrown and never caught.
36     main(int argc, char **argv)
37     {
38       po::options_description desc((format("Program options: %1%
[options]") % argv[0]).str());
39       po::variables_map vm;
40
41       desc.add_options()

________________________________________________________________________________________________________
*** CID 1267222:  Uncaught exception  (UNCAUGHT_EXCEPT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gnuradio-runtime/apps/gnuradio-config-info.cc:
36 in main()
30     #include <iostream>
31
32     namespace po = boost::program_options;
33     using boost::format;
34
35     int
>>>     CID 1267222:  Uncaught exception  (UNCAUGHT_EXCEPT)
>>>     In function "main" an exception of type
"boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::io::too_many_args>
>" is thrown and never caught.
36     main(int argc, char **argv)
37     {
38       po::options_description desc((format("Program options: %1%
[options]") % argv[0]).str());
39       po::variables_map vm;
40
41       desc.add_options()

________________________________________________________________________________________________________
*** CID 1267221:  Uninitialized scalar variable  (UNINIT)
/var/lib/jenkins/jobs/GNURadio-master/workspace/gnuradio/gr-dtv/lib/atsc/atsc_field_sync_mux_impl.cc:
199 in gr::dtv::atsc_field_sync_mux_impl::general_work(int,
std::vector<int, std::allocator<int>> &, std::vector<const void *,
std::allocator<const void *>>&, std::vector<void *, std::allocator<void
*>>&)()
193                 }
194                 else {
195                   init_field_sync_2(&field_sync, d_saved_symbols);
196                 }
197
198                 // note that index doesn't advance in this branch
>>>     CID 1267221:  Uninitialized scalar variable  (UNINIT)
>>>     Using uninitialized value "field_sync". Field "field_sync._pad_" is uninitialized.
199                 out[outdex] = field_sync;
200                 d_already_output_field_sync = true;
201               }
202               else {
203                 // already output field sync, now output first
regular segment
204                 out[outdex] = in[index];

________________________________________________________________________________________________________
To view the defects in Coverity Scan visit,
https://scan.coverity.com/projects/588?tab=overview

To manage Coverity Scan email notifications for "philip <at> balister.org",
click
https://scan.coverity.com/subscriptions/edit?email=philip%40balister.org&token=e8f98366c9e8587eaa57ec261c04b7ad
.
2_b_2@libero.it | 25 Jan 18:53 2015
Picon

R: Re: THESIS with CUDA

Thanks for your response.

>----Messaggio originale----
>Da: martin.braun <at> ettus.com
>Data: 25-gen-2015 18.29
>A: <discuss-gnuradio <at> gnu.org>
>Ogg: Re: [Discuss-gnuradio] THESIS with CUDA
>
>Hey Marco,
>
>good luck for your project!
>
>FYI, there have been quite a few projects using GPPs in the past. I
>recommend going through the slides from all of the GRCons, you'll find
>something there (at the very least from the first GRCon).
>Also, there's gr-theano, which also uses CUDA, and for inspiration,
>having a look at gr-fosphor might be a good idea.
>
>For high-performance GR flow graphs, the overhead for ingress/egress has
>always been the problem. If you have ideas for modifying GR itself, it
>might be worth contacting the "Accelerators" working group, which
>discusses these matters.
Ye,I can imagine. Also because there are noticeable difference between 
different CUDA devices. And with OpenCL it can go worse, because there are 
devices of different categories too.

One of my possible idea in order to reduce it, is to merge different blocks on 
the same kernel:serial,"concatenating code",or in "parallel",where each warp 
elaborate different block; In this way is possible to use shared memory(which 
is very small).
But it is complicated(PTX code,while OpenCL can compile more easily; different 
schedule policy) and I will try it at the end,after time spent over more normal 
version,like multiple kernel communicating via global memory on-card. Latency 
will be my hell.
>
>Cheers,
>M
>
2_b_2@libero.it | 25 Jan 18:16 2015
Picon

THESIS with CUDA

Hi everybody,
I'm a student who is completing his master degree of computeer engineering (now I'm at UPC-Barcelona, but before I've studied at polytechnic of Turin,Italy).
For my thesis, one of my possible idea is to bring part of GNURADIO over CUDA(I've see that there are already different contributions/papers about it). In this way, my work won't be completely useless, as lot of other thesis.
In order to do this, one possible schedule could be: 

-do the porting of some existing blocks (or set of modules over CUDA), which don't require an enviroment too much CUDA-friendly. In this way,I hope to get more confidence and start to have problems.
-after one or two month, start to work above schedule(and/or similar stuffs) in order to avoid  host-device memory transfer when there are CUDA blocks in cascade, and here I will get tons of problems..(for istance,tagging single packets could be not good for warp divergence)..there could be different architectural choice,like a kernel for each block,or marging them togheter(taking advantages from warp) and use a "dynamic" compilation of device code(CUDA).
-other stuffs,optimizations..

I know that some of you can tell me about OpenCL, but I didn't have any experience with it, so I prefer CUDA. I want also to minimize problems which will arise, because surely I will gett lot of them..

I know also that some of you will say that VOLK gives good performance,but why don't allow users to get power from both?(maybe when you want to elaborate different signals at same time).
For the moment, this is not my final choice about my thesis(I've also another proposal about another field, but it wil be useless after the thesis).
In any case, I want to ask you if this could be interesting for your community.
Also because for the moment I have only an EZCAP tuner(RTL2838),which is fine for tv,audio signals,etc.. But probably I will ask to some of you if you can sniff some frequency(like 802.11) and give me files, in order to test the correct works also for these modules.
I will have also different choice to do, and it could be interesting to hear diferent point of view.

For the moment, thanks for your time,
marco ribero

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Martin Braun | 25 Jan 12:27 2015

Re: ofdm_chanest_vcvc_impl.cc

On 01/25/2015 08:10 AM, zs wrote:
> Hi Martin:
>                 Thank you for your reply.And we know this block do
> "Estimate channel and coarse frequency offset for OFDM from
> preambles".And the coarse frequency offset is a integer.And it make the
> subcarriers cyclic shift.Just illustration as this:

No cyclic shift. There must be enough  space between the out subcarriers
and the Nyquist zone boundaries. Hope this clears things up!

And please respond to the list.

M
zs | 24 Jan 08:20 2015

ofdm_chanest_vcvc_impl.cc

Hi all:
          Thank you in advance.I have read the source code:ofdm_chanest_vcvc_impl.cc.But i have a question.



    void
    ofdm_chanest_vcvc_impl::get_chan_taps(
    const gr_complex *sync_sym1,
    const gr_complex *sync_sym2,
    int carr_offset,
    std::vector<gr_complex> &taps)
    {
      const gr_complex *sym = ((d_n_sync_syms == 2) ? sync_sym2 : sync_sym1);
      std::fill(taps.begin(), taps.end(), gr_complex(0, 0));
      int loop_start = 0;
      int loop_end = d_fft_len;
      if (carr_offset > 0) {
    loop_start = carr_offset;
      } else if (carr_offset < 0) {
    loop_end = d_fft_len + carr_offset;
      }



      for (int i = loop_start; i < loop_end; i++) {
    if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
      taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
    }
      }
//Question:
//For example,when the carr_offset=2,then:
//loop_start =2;
//for example loop_end=64
//      for (int i =2; i < loop_end; i++) {
    if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
      taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
    }
      }
//

Now the taps only have values on taps[0]---taps[63-2],and taps[62] taps[63] will be equal to zero.It means that the channel estimation have value 0.It is wrong?



      if (d_interpolate) {
    for (int i = d_first_active_carrier + 1; i < d_last_active_carrier; i += 2) {
      taps[i] = taps[i-1];
    }
    taps[d_last_active_carrier] = taps[d_last_active_carrier-1];
      }

      if (d_eq_noise_red_len) {
    // TODO
    // 1) IFFT
    // 2) Set all elements > d_eq_noise_red_len to zero
    // 3) FFT
      }
    }
            Thank you.
Best regards,
zswx




_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
zs | 24 Jan 08:43 2015

ofdm_chanest_vcvc_impl.cc

Hi all:
          Thank you in advance.I have read the source code:ofdm_chanest_vcvc_impl.cc.But i have a question.



    void
    ofdm_chanest_vcvc_impl::get_chan_taps(
    const gr_complex *sync_sym1,
    const gr_complex *sync_sym2,
    int carr_offset,
    std::vector<gr_complex> &taps)
    {
      const gr_complex *sym = ((d_n_sync_syms == 2) ? sync_sym2 : sync_sym1);
      std::fill(taps.begin(), taps.end(), gr_complex(0, 0));
      int loop_start = 0;
      int loop_end = d_fft_len;
      if (carr_offset > 0) {
    loop_start = carr_offset;
      } else if (carr_offset < 0) {
    loop_end = d_fft_len + carr_offset;
      }



      for (int i = loop_start; i < loop_end; i++) {
    if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
      taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
    }
      }
//Question:
//For example,when the carr_offset=2,then:
//loop_start =2;
//for example loop_end=64
//      for (int i =2; i < loop_end; i++) {
    if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
      taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
    }
      }
//

Now the taps only have values on taps[0]---taps[63-2],and taps[62] taps[63] will be equal to zero.It means that the channel estimation have value 0.It is wrong?



      if (d_interpolate) {
    for (int i = d_first_active_carrier + 1; i < d_last_active_carrier; i += 2) {
      taps[i] = taps[i-1];
    }
    taps[d_last_active_carrier] = taps[d_last_active_carrier-1];
      }

      if (d_eq_noise_red_len) {
    // TODO
    // 1) IFFT
    // 2) Set all elements > d_eq_noise_red_len to zero
    // 3) FFT
      }
    }
            Thank you.
Best regards,
zswx






_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
xu shunyi | 24 Jan 02:33 2015
Picon

GNU Radio Companion QT GUI Window Quit Immediately

Hi,

I am new to GNU Radio, so I built a FM receiver to get started on the journey. I created the following .grc file, and when I clicked <<Execute>>, I saw the QT GUI window pop up and exit immediately. The sound came out only for less than a second and disappeared as the window sank. I've researched this problem in this forum awhile, and someone suggested it's probably due to multiple versions of gnuradio installed. But I cleaned everything related to uhd and gnuradio in my /usr/local directories, and reinstalled via the script "build-gnuradio", it still didn't work. So could you confirm with me whether this is the reason of my problem, and if so, where can I check to find the conflicted version? And what do you suggest me do?

I can do uhd_fft successfully, which opens up a window and never quit.

I am using ubuntu 14.04, usrp b210. I used "build-gnuradio" to install everything. It turned out that grc is 3.7.6.1, with uhd being 3.8.1     

Here's the output of doing <<Execute>>. It ended with "DONE", and windows quit
---------------------------------------------------------------------
linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.001-105-g91ae742f

-- Loading firmware image: /usr/local/share/uhd/images/usrp_b200_fw.hex... done
-- Loading FPGA image: /usr/local/share/uhd/images/usrp_b210_fpga.bin... done
-- Operating over USB 3.
-- Detecting internal GPSDO.... No GPSDO found
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 32.000000 MHz... 
-- Actually got clock rate 32.000000 MHz.
-- Performing timer loopback test... pass
-- Performing timer loopback test... pass
-- Setting master clock rate selection to 'automatic'.
-- Successfully tuned to 107.300000 MHz
-- 
Using Volk machine: avx_64_mmx_orc

>>> Done
----------------------------------------------------------------------
Attachment (fm_rec.grc): application/gnuradio-grc, 30 KiB
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
David Halls | 23 Jan 18:47 2015

Adding EOB when using Vectors

​Dear All,


I am trying to use TX_TIME, SOB, EOB. How do I add the EOB when I am using a vector?


The block I have created takes in vector of 47520 samples, i.e. one item, I want to add TX_TIME and SOB to the first sample. This is no problem, I add it to the item. After the following 'vector_to_stream' conversion, the TX_TIME and SOB map through to item 0, 47520, 95040 etc. 


But how do I get the EOB to be on item 47519?


Regards,


David



NOTE: The information in this email and any attachments may be confidential and/or legally privileged. This message may be read, copied and used only by the intended recipient. If you are not the intended recipient, please destroy this message, delete any copies held on your system and notify the sender immediately.

Toshiba Research Europe Limited, registered in England and Wales (2519556). Registered Office 208 Cambridge Science Park, Milton Road, Cambridge CB4 0GZ, England. Web: www.toshiba.eu/research/trl



This email has been scanned for email related threats and delivered safely by Mimecast.
For more information please visit http://www.mimecast.com
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
vaibhav kulkarni | 23 Jan 17:26 2015
Picon

Changing the IP of USRP2

Hi All, 

I am a newbee to grc and USRP. I need some help regarding changing the IP address of the USRP. I checked the previous threads on this discussion and searched a bit to do this, but couldn't get it working. 

My host PC IP is 192.168.10.1

My USRP1's IP is 192.168.10.2

My USRP2's IP is 192.168.10.2 Currently. I want to set this IP to 192.168.10.4

I disconnected USRP1 and tried this command 
sudo ./usrp2_recovery.py --ifc=eth0 --new-ip=192.168.10.4

The output is 

('Opening raw socket on interface:', 'eth0')
('Loading packet with ip address:', '192.168.10.4')
Sending packet (22 bytes)
Done

I removed the power source and connected it back and tried to ping the new IP 192.168.10.4, I dont get any reply. Also I tried uhd_find_devices but It shows the same old IP 192.168.10.2. 

I tried the second approach
./usrp_burn_mb_eeprom --args=192.168.10.2 --key=ip-addr --val=192.168.10.4

I get this as the output:
./usrp_burn_mb_eeprom: symbol lookup error: ./usrp_burn_mb_eeprom: undefined symbol: _ZN3uhd6device4makeERKNS_13device_addr_tEm

Can some1 help me understand whats happening here ? I appreciate the help. 

Thanks. 


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Thanasis Balafoutis | 22 Jan 22:12 2015
Picon

Fwd: Write a source block in python

Hi

I wrote a simple source block that reads a string (as a parameter) and outputs the corresponding array of bytes.
Here is the code:

class myblock(gr.sync_block):

    def __init__(self, helloMsg):
        gr.sync_block.__init__(self,
            name="myblock",
            in_sig=None,
            out_sig=[numpy.byte])
        self.helloMsg = helloMsg

    def work(self, input_items, output_items):
        out = output_items[0]
       
        test = array.array('B',self.helloMsg)
        for j in range(len(test)):
           out[j] = test[j]
        return len(output_items[0][:len(test)])

In the output I repeatedly get the helloMsg. (it seems that the work() function is always running)
Is it possible to get in the output my helloMsg only one time (or a specific amount of times) and then stop the execution of the flowgraph?

Thank you in advance!
Thanasis

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio <at> gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Gmane