Re: [Discuss-gnuradio] Correct way to add constructor parameter

2018-06-07 Thread Sumit Kumar
Ok this was very useful indeed :) Gives me lots of ideas to optimize my 
current flow graph.


Thanks

Sumit

On 06/06/2018 18:47, Müller, Marcus (CEL) wrote:

Also, while you're at it: If you have parameters (like potentially your
scaling) that you'd like to update externally, for example from a
different block, it's not that bad an idea to add a "command" message
port, with a message handler that does the setting.

I mention this because messages are handled only when the
[general_]work() is not currently running – and that means that
changing a property of the block through a message handler is
inherently thread-safe, which is important in the context of GNU Radio.
For examples, in cases where you could change the length of a tap
vector, you wouldn't want to do that in the middle of a convolution of
that tap vector, but another block (let's say a channel estimator that
has calculated a new set of equalizer taps) can't know whether you're
currently working with the taps or not.

Best regards,
Marcus

On Wed, 2018-06-06 at 18:33 +0200, Sumit Kumar wrote:

Oops.. missed that. Thanks, its done now :)
Sumit

On 06/06/2018 18:28, Ron Economos wrote:

You have to add the variable in the . line of the .xml file.
Ron
On 06/06/2018 09:08 AM, Sumit Kumar wrote:

I am adding additional option in a GRC block. Its Soft Frame Equalizer


As you see in the figure, the block has options for Algorithm, Frequency, Bandwidth, Log 
and Debug. I added my own variable "Scaling".

For this, first I edited in soft_frame_equalizer_impl.cc as follows :

soft_frame_equalizer::sptr
soft_frame_equalizer::make(Equalizer_soft algo, double freq, double bw, int 
scaling, bool log, bool debug) {
 return gnuradio::get_initial_sptr
 (new soft_frame_equalizer_impl(algo, freq, bw, scaling, log, debug));
}


soft_frame_equalizer_impl::soft_frame_equalizer_impl(Equalizer_soft algo, 
double freq, double bw, int scaling, bool log, bool debug) :
 gr::block("soft_frame_equalizer",
 gr::io_signature::make(1, 1, 64 * sizeof(gr_complex)),
 gr::io_signature::make2(2, 2, 48, 48 * sizeof(float))),
 d_current_symbol(0), d_log(log), d_debug(debug), d_equalizer(NULL),
 d_freq(freq), d_bw(bw), d_scaling(scaling), d_frame_bytes(0), 
d_frame_symbols(0),
 d_freq_offset_from_synclong(0.0)

void
soft_frame_equalizer_impl::set_scaling(int scaling) {
 d_scaling = scaling;
}

And then in soft_frame_equalizer_impl.h as follows :

public:
 soft_frame_equalizer_impl(Equalizer_soft algo, double freq, double bw, int 
scaling, bool log, bool debug);
 ~soft_frame_equalizer_impl();

 void set_algorithm(Equalizer_soft algo);
 void set_bandwidth(double bw);
 void set_frequency(double freq);
 void set_scaling(int scaling);

private:

int d_scaling;

And then in soft_frame_equalizer.h from the include directory as follows :

public:
 typedef boost::shared_ptr sptr;
 static sptr make(Equalizer_soft algo, double freq, double bw, int scaling,
 bool log, bool debug);
 virtual void set_algorithm(Equalizer_soft algo) = 0;
 virtual void set_bandwidth(double bw) = 0;
 virtual void set_frequency(double freq) = 0;
 virtual void set_scaling(int scaling) = 0;

And finally in the xml file as follows :

 
 Scaling
 scaling
 0
 real
 

It compiles well, but when I execute the program, it throws following error:

sender started
Traceback (most recent call last):
   File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
 line 569, in 
 main()
   File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
 line 557, in main
 tb = top_block_cls(bandwidth=options.bandwidth, encoding=options.encoding, 
frequency=options.frequency, sensitivity=options.sensitivity)
   File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
 line 282, in __init__
 self.ieee802_11_soft_frame_equalizer_0 = 
ieee802_11.soft_frame_equalizer(ieee802_11.LS, 2.437e9, 20e6, False, False)
   File 
"/home/john/myprefix/lib/python2.7/dist-packages/ieee802_11/ieee802_11_swig.py",
 line 644, in make
 return _ieee802_11_swig.soft_frame_equalizer_make(*args, **kwargs)
TypeError: Required argument 'debug' (pos 6) not found

What I am missing ? Where else I need to edit ?

Regards
Sumit


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
  



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
  
___

Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




Re: [Discuss-gnuradio] Correct way to add constructor parameter

2018-06-06 Thread CEL
Also, while you're at it: If you have parameters (like potentially your
scaling) that you'd like to update externally, for example from a
different block, it's not that bad an idea to add a "command" message
port, with a message handler that does the setting.

I mention this because messages are handled only when the
[general_]work() is not currently running – and that means that
changing a property of the block through a message handler is
inherently thread-safe, which is important in the context of GNU Radio.
For examples, in cases where you could change the length of a tap
vector, you wouldn't want to do that in the middle of a convolution of
that tap vector, but another block (let's say a channel estimator that
has calculated a new set of equalizer taps) can't know whether you're
currently working with the taps or not.

Best regards,
Marcus

On Wed, 2018-06-06 at 18:33 +0200, Sumit Kumar wrote:
> Oops.. missed that. Thanks, its done now :) 
> Sumit
> 
> On 06/06/2018 18:28, Ron Economos wrote:
> > You have to add the variable in the . line of the .xml 
> > file.
> > Ron
> > On 06/06/2018 09:08 AM, Sumit Kumar wrote:
> > > I am adding additional option in a GRC block. Its Soft Frame Equalizer
> > > 
> > > 
> > > As you see in the figure, the block has options for Algorithm, Frequency, 
> > > Bandwidth, Log and Debug. I added my own variable "Scaling". 
> > > 
> > > For this, first I edited in soft_frame_equalizer_impl.cc as follows : 
> > > 
> > > soft_frame_equalizer::sptr
> > > soft_frame_equalizer::make(Equalizer_soft algo, double freq, double bw, 
> > > int scaling, bool log, bool debug) {
> > > return gnuradio::get_initial_sptr
> > > (new soft_frame_equalizer_impl(algo, freq, bw, scaling, log, 
> > > debug));
> > > }
> > > 
> > > 
> > > soft_frame_equalizer_impl::soft_frame_equalizer_impl(Equalizer_soft algo, 
> > > double freq, double bw, int scaling, bool log, bool debug) :
> > > gr::block("soft_frame_equalizer",
> > > gr::io_signature::make(1, 1, 64 * sizeof(gr_complex)),
> > > gr::io_signature::make2(2, 2, 48, 48 * sizeof(float))),
> > > d_current_symbol(0), d_log(log), d_debug(debug), d_equalizer(NULL),
> > > d_freq(freq), d_bw(bw), d_scaling(scaling), d_frame_bytes(0), 
> > > d_frame_symbols(0), 
> > > d_freq_offset_from_synclong(0.0)
> > > 
> > > void
> > > soft_frame_equalizer_impl::set_scaling(int scaling) {
> > > d_scaling = scaling;
> > > }
> > > 
> > > And then in soft_frame_equalizer_impl.h as follows : 
> > > 
> > > public:
> > > soft_frame_equalizer_impl(Equalizer_soft algo, double freq, double 
> > > bw, int scaling, bool log, bool debug);
> > > ~soft_frame_equalizer_impl();
> > > 
> > > void set_algorithm(Equalizer_soft algo);
> > > void set_bandwidth(double bw);
> > > void set_frequency(double freq);
> > > void set_scaling(int scaling);
> > > 
> > > private:
> > > 
> > > int d_scaling;
> > > 
> > > And then in soft_frame_equalizer.h from the include directory as follows :
> > > 
> > > public:
> > > typedef boost::shared_ptr sptr;
> > > static sptr make(Equalizer_soft algo, double freq, double bw, int 
> > > scaling,
> > > bool log, bool debug);
> > > virtual void set_algorithm(Equalizer_soft algo) = 0;
> > > virtual void set_bandwidth(double bw) = 0;
> > > virtual void set_frequency(double freq) = 0;
> > > virtual void set_scaling(int scaling) = 0;
> > > 
> > > And finally in the xml file as follows : 
> > > 
> > > 
> > > Scaling
> > > scaling
> > > 0
> > > real
> > > 
> > > 
> > > It compiles well, but when I execute the program, it throws following 
> > > error:
> > > 
> > > sender started
> > > Traceback (most recent call last):
> > >   File 
> > > "/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
> > >  line 569, in 
> > > main()
> > >   File 
> > > "/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
> > >  line 557, in main
> > > tb = top_block_cls(bandwidth=options.bandwidth, 
> > > encoding=options.encoding, frequency=options.frequency, 
> > > sensitivity=options.sensitivity)
> > >   File 
> > > "/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py",
> > >  line 282, in __init__
> > > self.ieee802_11_soft_frame_equalizer_0 = 
> > > ieee802_11.soft_frame_equalizer(ieee802_11.LS, 2.437e9, 20e6, False, 
> > > False)
> > >   File 
> > > "/home/john/myprefix/lib/python2.7/dist-packages/ieee802_11/ieee802_11_swig.py",
> > >  line 644, in make
> > > return _ieee802_11_swig.soft_frame_equalizer_make(*args, **kwargs)
> > > TypeError: Required argument 'debug' (pos 6) not found
> > > 
> > > What I am missing ? Where else I need to edit ? 
> > > 
> > > Regards
> > > Sumit 
> > > 
> > > 
> > > ___
> > > 

Re: [Discuss-gnuradio] Correct way to add constructor parameter

2018-06-06 Thread Sumit Kumar

Oops.. missed that. Thanks, its done now :)

Sumit


On 06/06/2018 18:28, Ron Economos wrote:


You have to add the variable in the . line of the 
.xml file.


Ron

On 06/06/2018 09:08 AM, Sumit Kumar wrote:



I am adding additional option in a GRC block. Its Soft Frame Equalizer



As you see in the figure, the block has options for Algorithm, 
Frequency, Bandwidth, Log and Debug. I added my own variable 
"*Scaling*".


For this, first I edited in soft_frame_equalizer_impl.cc as follows :

soft_frame_equalizer::sptr
soft_frame_equalizer::make(Equalizer_soft algo, double freq, double 
bw,*int scaling*, bool log, bool debug) {

    return gnuradio::get_initial_sptr
        (new soft_frame_equalizer_impl(algo, freq, bw, scaling, log, 
debug));

}


soft_frame_equalizer_impl::soft_frame_equalizer_impl(Equalizer_soft 
algo, double freq, double bw, *int scaling*, bool log, bool debug) :

    gr::block("soft_frame_equalizer",
            gr::io_signature::make(1, 1, 64 * sizeof(gr_complex)),
            gr::io_signature::make2(2, 2, 48, 48 * sizeof(float))),
    d_current_symbol(0), d_log(log), d_debug(debug), d_equalizer(NULL),
    d_freq(freq), d_bw(bw), *d_scaling(scaling)*, d_frame_bytes(0), 
d_frame_symbols(0),

    d_freq_offset_from_synclong(0.0)

*void**
**soft_frame_equalizer_impl::set_scaling(int scaling) {**
**    d_scaling = scaling;**
**}*

And then in soft_frame_equalizer_impl.h as follows :

public:
    soft_frame_equalizer_impl(Equalizer_soft algo, double freq, 
double bw, *int scaling*, bool log, bool debug);

    ~soft_frame_equalizer_impl();

    void set_algorithm(Equalizer_soft algo);
    void set_bandwidth(double bw);
    void set_frequency(double freq);
*void set_scaling(int scaling);

*private:*

int d_scaling;
*
And then in soft_frame_equalizer.h from the include directory as 
follows :


public:
    typedef boost::shared_ptr sptr;
    static sptr make(Equalizer_soft algo, double freq, double bw, 
*int scaling,*

            bool log, bool debug);
    virtual void set_algorithm(Equalizer_soft algo) = 0;
    virtual void set_bandwidth(double bw) = 0;
    virtual void set_frequency(double freq) = 0;
*virtual void set_scaling(int scaling) = 0;

*And finally in the xml file as follows : *

    
        Scaling
        scaling
        0
        real
    

*It compiles well, but when I execute the program, it throws 
following error:


sender started
Traceback (most recent call last):
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 569, in 

    main()
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 557, in main
    tb = top_block_cls(bandwidth=options.bandwidth, 
encoding=options.encoding, frequency=options.frequency, 
sensitivity=options.sensitivity)
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 282, in __init__
    self.ieee802_11_soft_frame_equalizer_0 = 
ieee802_11.soft_frame_equalizer(ieee802_11.LS, 2.437e9, 20e6, False, 
False)
  File 
"/home/john/myprefix/lib/python2.7/dist-packages/ieee802_11/ieee802_11_swig.py", 
line 644, in make

    return _ieee802_11_swig.soft_frame_equalizer_make(*args, **kwargs)
TypeError: Required argument 'debug' (pos 6) not found

What I am missing ? Where else I need to edit ?

Regards
Sumit


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Correct way to add constructor parameter

2018-06-06 Thread Ron Economos
You have to add the variable in the . line of the .xml 
file.


Ron

On 06/06/2018 09:08 AM, Sumit Kumar wrote:



I am adding additional option in a GRC block. Its Soft Frame Equalizer



As you see in the figure, the block has options for Algorithm, 
Frequency, Bandwidth, Log and Debug. I added my own variable "*Scaling*".


For this, first I edited in soft_frame_equalizer_impl.cc as follows :

soft_frame_equalizer::sptr
soft_frame_equalizer::make(Equalizer_soft algo, double freq, double 
bw,*int scaling*, bool log, bool debug) {

    return gnuradio::get_initial_sptr
        (new soft_frame_equalizer_impl(algo, freq, bw, scaling, log, 
debug));

}


soft_frame_equalizer_impl::soft_frame_equalizer_impl(Equalizer_soft 
algo, double freq, double bw, *int scaling*, bool log, bool debug) :

    gr::block("soft_frame_equalizer",
            gr::io_signature::make(1, 1, 64 * sizeof(gr_complex)),
            gr::io_signature::make2(2, 2, 48, 48 * sizeof(float))),
    d_current_symbol(0), d_log(log), d_debug(debug), d_equalizer(NULL),
    d_freq(freq), d_bw(bw), *d_scaling(scaling)*, d_frame_bytes(0), 
d_frame_symbols(0),

    d_freq_offset_from_synclong(0.0)

*void**
**soft_frame_equalizer_impl::set_scaling(int scaling) {**
**    d_scaling = scaling;**
**}*

And then in soft_frame_equalizer_impl.h as follows :

public:
    soft_frame_equalizer_impl(Equalizer_soft algo, double freq, double 
bw, *int scaling*, bool log, bool debug);

    ~soft_frame_equalizer_impl();

    void set_algorithm(Equalizer_soft algo);
    void set_bandwidth(double bw);
    void set_frequency(double freq);
*void set_scaling(int scaling);

*private:*

int d_scaling;
*
And then in soft_frame_equalizer.h from the include directory as follows :

public:
    typedef boost::shared_ptr sptr;
    static sptr make(Equalizer_soft algo, double freq, double bw, *int 
scaling,*

            bool log, bool debug);
    virtual void set_algorithm(Equalizer_soft algo) = 0;
    virtual void set_bandwidth(double bw) = 0;
    virtual void set_frequency(double freq) = 0;
*virtual void set_scaling(int scaling) = 0;

*And finally in the xml file as follows : *

    
        Scaling
        scaling
        0
        real
    

*It compiles well, but when I execute the program, it throws following 
error:


sender started
Traceback (most recent call last):
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 569, in 

    main()
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 557, in main
    tb = top_block_cls(bandwidth=options.bandwidth, 
encoding=options.encoding, frequency=options.frequency, 
sensitivity=options.sensitivity)
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 282, in __init__
    self.ieee802_11_soft_frame_equalizer_0 = 
ieee802_11.soft_frame_equalizer(ieee802_11.LS, 2.437e9, 20e6, False, 
False)
  File 
"/home/john/myprefix/lib/python2.7/dist-packages/ieee802_11/ieee802_11_swig.py", 
line 644, in make

    return _ieee802_11_swig.soft_frame_equalizer_make(*args, **kwargs)
TypeError: Required argument 'debug' (pos 6) not found

What I am missing ? Where else I need to edit ?

Regards
Sumit


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] Correct way to add constructor parameter

2018-06-06 Thread Sumit Kumar


I am adding additional option in a GRC block. Its Soft Frame Equalizer



As you see in the figure, the block has options for Algorithm, 
Frequency, Bandwidth, Log and Debug. I added my own variable "*Scaling*".


For this, first I edited in soft_frame_equalizer_impl.cc as follows :

soft_frame_equalizer::sptr
soft_frame_equalizer::make(Equalizer_soft algo, double freq, double 
bw,*int scaling*, bool log, bool debug) {

    return gnuradio::get_initial_sptr
        (new soft_frame_equalizer_impl(algo, freq, bw, scaling, log, 
debug));

}


soft_frame_equalizer_impl::soft_frame_equalizer_impl(Equalizer_soft 
algo, double freq, double bw, *int scaling*, bool log, bool debug) :

    gr::block("soft_frame_equalizer",
            gr::io_signature::make(1, 1, 64 * sizeof(gr_complex)),
            gr::io_signature::make2(2, 2, 48, 48 * sizeof(float))),
    d_current_symbol(0), d_log(log), d_debug(debug), d_equalizer(NULL),
    d_freq(freq), d_bw(bw), *d_scaling(scaling)*, d_frame_bytes(0), 
d_frame_symbols(0),

    d_freq_offset_from_synclong(0.0)

*void**
**soft_frame_equalizer_impl::set_scaling(int scaling) {**
**    d_scaling = scaling;**
**}*

And then in soft_frame_equalizer_impl.h as follows :

public:
    soft_frame_equalizer_impl(Equalizer_soft algo, double freq, double 
bw, *int scaling*, bool log, bool debug);

    ~soft_frame_equalizer_impl();

    void set_algorithm(Equalizer_soft algo);
    void set_bandwidth(double bw);
    void set_frequency(double freq);
*void set_scaling(int scaling);

*private:*

int d_scaling;
*
And then in soft_frame_equalizer.h from the include directory as follows :

public:
    typedef boost::shared_ptr sptr;
    static sptr make(Equalizer_soft algo, double freq, double bw, *int 
scaling,*

            bool log, bool debug);
    virtual void set_algorithm(Equalizer_soft algo) = 0;
    virtual void set_bandwidth(double bw) = 0;
    virtual void set_frequency(double freq) = 0;
*virtual void set_scaling(int scaling) = 0;

*And finally in the xml file as follows : *

    
        Scaling
        scaling
        0
        real
    

*It compiles well, but when I execute the program, it throws following 
error:


sender started
Traceback (most recent call last):
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 569, in 

    main()
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 557, in main
    tb = top_block_cls(bandwidth=options.bandwidth, 
encoding=options.encoding, frequency=options.frequency, 
sensitivity=options.sensitivity)
  File 
"/home/john/myprefix/src/gr-ieee-80211/examples/soft_decision_receiver_simulator_under_interference.py", 
line 282, in __init__
    self.ieee802_11_soft_frame_equalizer_0 = 
ieee802_11.soft_frame_equalizer(ieee802_11.LS, 2.437e9, 20e6, False, False)
  File 
"/home/john/myprefix/lib/python2.7/dist-packages/ieee802_11/ieee802_11_swig.py", 
line 644, in make

    return _ieee802_11_swig.soft_frame_equalizer_make(*args, **kwargs)
TypeError: Required argument 'debug' (pos 6) not found

What I am missing ? Where else I need to edit ?

Regards
Sumit
**
___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio