|
From: | sumit kumar |
Subject: | Re: [Discuss-gnuradio] Softbits in gr-ieee 802.11 ? |
Date: | Fri, 19 Jan 2018 23:30:46 +0100 |
Hi sumit - Do you have a public repo, e.g. on GitHub, that we can review. It's virtually impossible to debug C++ issues like this without having the code. What you want to do is very possible; just a matter of getting all the methods in place precisely. - MLDOn Fri, Jan 19, 2018, at 10:20 AM, sumit kumar wrote:hi..so it is not working somehow. Both builds were successful i.e. gnuradio build with the modifications and gr-ieee-80211 build with modifications.gnuradio recognizes my new function as a method of constellation_bpsk_sptr as you can see in the ipython screenshotHowever gr-ieee 80211 doesnt see it as you can see in the screenshot below. It sees only the decision_makerPlease give me some more pointers to solve thisOn 19 January 2018 at 15:38, sumit kumar <address@hidden> wrote:Ok a correctionI declared it like this inside the constellations.h , now I am waiting for the compilation to finishclass DIGITAL_API constellation_bpsk : public constellation{public:typedef boost::shared_ptr<constellation_bpsk> sptr; // public constructorstatic sptr make();~constellation_bpsk();unsigned int decision_maker(const gr_complex *sample);float decision_maker_soft(const gr_complex *sample);protected:constellation_bpsk();};On 19 January 2018 at 15:08, sumit kumar <address@hidden> wrote:Ok, so shall I do like this :In the file /gnuradio/gr-digital/include/gnuradio/digital/constellations .h under public section I declare my function as follows class DIGITAL_API constellation: public boost::enable_shared_from_this<constellation> {public:float decision_maker_soft(const gr_complex *sample) = 0;}and In the file /gnuradio/gr-digital/lib/constellations.cc I add this floatconstellation_bpsk::decision_maker_soft(const gr_complex *sample) {return (-4*real(*sample)); // LLR for BPSK}After this I recompile gnuradio and then recompile gr-ieee-80211.. right ?On 19 January 2018 at 14:51, Michael Dickens <address@hidden> wrote:The GR constellation programming uses a base class that defines the API that will be SWIG-ified back into Python. So the base class must contain your "decision_maker_soft" method. Then you overload it for any inheriting class such as "constellation_bpsk". Hope this helps! - MLDOn Fri, Jan 19, 2018, at 8:43 AM, sumit kumar wrote:Actually I have to test it in a interference limited environment, I guess the soft demodulate will be needed. I saw your blog post about how you cleverly used your won constellations https://www.bastibl.net/constellation-objects / However when I try doing something like that, I get errors.For example, I defined my own function decision_maker_soft inside constellations_impl.h as followsclass constellation_bpsk_impl : public constellation_bpsk{public:constellation_bpsk_impl();~constellation_bpsk_impl();unsigned int decision_maker(const gr_complex *sample);float decision_maker_soft(const gr_complex *sample);};and then defined it in constellation_impl.cc asfloatconstellation_bpsk_impl::decision_maker_soft(const gr_complex *sample) { return (-4*real(*sample));}But when I call my function like thismod->decision_maker_soft from ls.cc (least square equalizer cc file), it says mod object has no member decision_maker_softWhy does mod object not look my decision_maker_soft as it is a method of constellation_bpsk_impl ??What am I missing here ?I thought that mod object is looking your decision_maker inside constellations_impl, it shud see mine too...--Sumit Kumar--Sumit Kumar--Sumit Kumar
[Prev in Thread] | Current Thread | [Next in Thread] |