On 03/27/2018 05:47 PM, Firdavs Pulat wrote:
Hi Marcus,

I tried to use the set_agc_mode the same way, but I get an error during the build process that says: 'class uhd::usrp::multi_usrp' has no member named 'set_agc_mode.' This API is in the ad9361_ctrl, but it seems to be looking for it in multi_usrp. How would I include the ad9361_ctrl?
The AGC_MODE actually is controllable via the property-tree which is an internal thing. There's no direct mapping of this functionality through the
  multi_usrp API.

You want to peruse this part of the UHD manual:

https://files.ettus.com/manual/classuhd_1_1property__tree.html

And note that ad936x_manager.cpp adds subscriptions from the property tree to actual driver functions.




Also, is there a way to read what all the AD registers are set to so I know the default values? When I use the getter functions (e.g., self.uhd_usrp_source_0.get_gain()) in the python code, it doesn't seem to do anything.

Thank you


On Wed, Mar 21, 2018 at 1:26 PM, Marcus D. Leech <mle...@ripnet.com <mailto:mle...@ripnet.com>> wrote:

    On 03/21/2018 02:24 PM, Firdavs Pulat wrote:
    Hi Marcus,

    Thank you for your help and patience!

    Following your suggestion, I think I was able to turn the AGC on.
    Now, I'm wondering what mode it's running at (e.g., slow, fast,
    etc). Looking at the multi_usrp class, I don't see any API's to
    set the mode. But in the ad9361_ctrl class, I see an API called
    set_agc_mode. Can I use that API the same way I'm using
    set_rx_agc? I tried the following command: uhd_usrp_probe
    --string /mboards/0/dboards/A/rx_frontends/A/gain/agc/mode/value,
    and it returned 'slow', so I assume the default mode of AGC is slow?

    I know you said AGC isn't used by most applications, but the
    reason why I'm asking all of this is because our application was
    using the AD9361 chip and we were enabling AGC then, so I'm
    trying to do the same here with Ettus B200 since the RFIC is the
    same.

    Thanks!
    You should be able to use set_agc_mode() in the same way.




    On Tue, Mar 20, 2018 at 3:11 PM, Marcus D. Leech
    <mle...@ripnet.com <mailto:mle...@ripnet.com>> wrote:

        On 03/20/2018 03:27 PM, Firdavs Pulat wrote:
        Hi Marcus,

        Could you please elaborate on the "extend the Gnu Radio
        multi_usrp" part? Maybe you could point me to some examples
        one how to set these (I assume others must have played
        around with them since it's so essential), or documentation
        on how that's done? I'm just not sure where/how in the
        usrp_source impl source code I would set them. I have been
        looking online, but haven't found anything of use yet.

        Thank you!
        In the Gnu Radio source code, in gr_uhd/usrp_source_impl.cc

        If you look at any of the setter functions for various device
        parameters, you'd pattern your call to set_rx_agc() after one
        of those.  The lowest-impact
          way to do it would be to "hijack" the existing gain-setting
        function, and have it look for "magic" gain value that then
        turns on hardware AGC
          via the set_rx_agc() function.

        In reality, very few applications use the hardware AGC in the
        chip, which is one of the reasons that it hasn't yet been
        "mapped" into the GR
          API wrapper.




        On Thu, Mar 8, 2018 at 10:58 AM, Marcus D. Leech
        <mle...@ripnet.com <mailto:mle...@ripnet.com>> wrote:

            On 03/08/2018 10:43 AM, Firdavs Pulat wrote:

                Hi all,

                Are there APIs as part of gnuradio that give access
                to the low level ADI registers (to both probe, and
                set)? For instance, I'm trying to see if the AGC is
                currently turned on on B200mini, and if it's, what
                kind of mode it is on (e.g., slow or fast). Looking
                at it the USRP manual online, I see functions like
                set_agc, set_agc_mode, etc. I just don't have any
                idea how/where to actually use/set these. Could
                anyone please help me out?

                Thanks!


            No need to tinker with ADI registers.

            The multi_usrp API provides access to a set_rx_agc function:

            
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#abdab1f6c3775a9071b15c9805f866486
            
<https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#abdab1f6c3775a9071b15c9805f866486>

            However, you'd have to extend the Gnu Radio multi_usrp
            "wrapper" (in gr-uhd in the main Gnu Radio codebase) to
            provide access to set_rx_agc().

            Note that in many cases, hardware AGC doesn't really
            work the way you'd like it to, since its "world view"
            may be very very different than the view
              of your particular application.




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







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

Reply via email to