You could implement your flowgraph in python and then use some python
library for rpc and write a thin layer between...

You can also implement a flowgraph in C++.

I'm currently playing around with RPC over DBUS (only control, no data) for
an application I'm writing in C++.


--Albin



On Fri, Aug 9, 2019, 10:35 Müller, Marcus (CEL) <muel...@kit.edu> wrote:

> Hi Alex,
>
> we do have two approaches for that
>
> 1. the XMLRPC thing, which is a python-world block that basically would
> allow you to do the same you can do with e.g. a Qt GUI Range slider
> (i.e. change Python variables at runtime)
> 2. Ctrlport and the thrift backend, the latter of which is notoriously
> hard to get right.
>
> I **really** think RPC is big in GNU Radio's future; we'll work on that
> fundamentally. The problem is you're trying to solve a technical
> challenge now, not then.
>
> So, check out the XMLRPC, see if it suits you.
>
> If it doesn't: What I'd recommend is to
>
> 1. use GRC to construct your flow graph as desired, assuming you're
> doing that so far. Hint: if you use "Parameter" blocks instead of
> "Variable" blocks, you get arguments to your top block's constructor)
> 2. Take the resulting python file, and use it as a Python module
> (rather than running it as executable itself), containing a class named
> like the "id" you set in the options block (the instance of
> gr.top_block).
> 3. Write a simple application that imports that module, and modifies
> the state of the top block (see the "main" function at the end of the
> generated Python file) as dictated through RPC from your receiving end.
>
> For 3: I do like zeroMQ, it has good Python integration and for your
> application, the REQuest/REPly socket pattern would probably work very
> well. You can encode RPC commands however you like, for example simple
> JSON like {"tune", [2.4e9, 1e6]} or so.
>
> Or, you can directly use a python RPC thing. I've not personally tried
> that, but zerorpc.io looks fine for this kind of thing. Quite possible,
> all you'd need to build on the Pi would be
>
> #!/usr/bin/env python
> import zerorpc
> import myfg #replace with the generated .py
>
> server = zerorpc.Server(myfg.myfg(sensible_arguments_if_any))
> server.bind("tcp://0.0.0.0:1337") #bind to all interaces on port 1337
>
> # could be tcp://127.0.0.1:1337 instead, if you're doing e.g. port
> forwarding through `ssh -R 127.0.0.1:1337:1337!
> # There's even ZMQ brokers and stuff, but that'd lead too far.
> s.run()
>
>
> And locally, you could try
>
> import zerorpc
> client = zerorpc.Client()
> client.connect("tcp://yourPisAdddress:1337")
> client.start()
> client.set_samp_rate(4e6) #or whatever methods your top block has
>
> Best regards,
> Marcus
>
> On Thu, 2019-08-08 at 23:16 +0100, Alex Pane wrote:
> > Hi,
> >
> > I have created a simple tcp based iq stream using ZMQ blocks to use a
> HackRF remotely over an ethernet network.
> >
> > I have a linux computer (Raspberry Pi) connected to the HackRF running
> GNURadio. The HackRF source is connected to a ZMQ sink that transmits the
> packets to a receiving linux PC running GNURadio - where a ZMQ source
> connected to a QT sink for visualising the IQ signal stream.
> >
> > This works fine for a fixed frequency, sample rate and fft size etc,
> however my problem is that i want to be able to change those parameters
> from the receiving PC.
> >
> > Despite much research, i have been unable to find a way to change the
> parameters of the remote flowgraph (client) from the receiving display end
> (server).
> >
> > Is there a way to natively perform this operation within GNURadio and
> can someone provide guidance on how to setup a flowgraph to achieve this?
> Or is there some additional OOT block or custom python block i would need
> to create to do this.
> >
> > Thanks
> >
> > Alex
> > _______________________________________________
> > 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

Reply via email to