[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: some feature-requests for GRC

From: Kristoff
Subject: Re: some feature-requests for GRC
Date: Sat, 14 Nov 2020 20:53:01 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Hi Jeff,

For item 1 and 2.

Yep. I just did some more tests and I agree. I think I will just create one giant tarball with all the GRCs, i/q files and perhaps other stuff, and then run grc with the names of all the *grc-files. That should do the trick.

Good idea. Thx!

For item 3, well I did say that was probably the most difficult thing, didn't I? :-)

I got my idea based on how the 'start' button operates in GRC.
That button is only enabled if the flow meets certain criteria. There seams to be some kind of test that is done every time you change the flowgraph, which enables or disabled the start button,

I do not know the coding logic behind gnuradio-companion, not what gtk can provide for this, but I was wondering if this idea could also be applied the same logic to a complete tab: do a test and -if it fails- disable the flowgraph in that tab. (i.e. hide or disable all blocks)

But, I guess this would require two additional elements:
- the test will need to be based on rules that are provided by the flowgraph
- the test should be able to access resources from tabs. (e.g. the test for "tab2" could be "tab1.var.sampl_rate.value == 1200")

As said, I have never worked with gtk, so I have no idea if this is possible.

Just out of interest.
How to the test to determine if the 'start' button is enabled actually work?
I guess there must be some mechanism that parses the structure of the flow-graph and then perform some tests on that to check if it is ok?

Note, please do not  get me wrong. I do not want to be 'pushy'. I'm just trying to view this from an "education" point of view.

I have now given a number of GNU Radio demo's. I started out with "standard" presentation: I-as presenter-  demonstrate a GNU Radio flow and that the audience just needs to "watch and understand". All very nice, except that, ... most people had already forgotten almost everything 5 minutes after the demonstration had ended. If people do not need to do or think themself, they are simply not sufficient engaged and -although they do get an idea of GNU Radio can do- the actual process of creating a flow-graph does not stick. That is why I started looking into CTFs and now also this "getting-started" workshop.

So, let's then conciser a "howto" or a "workshop" that people can do by themself by downloading it from the web, things become even more difficult as there is not even a teacher to help them. If you create a "howto" and just provide people with a number of flow-graphs, even a separate GRC for every step, I see very little incentive for people not immediately go to the final GRC and try at the end-result as soon as they hits a snag. For that reason, I am more a fan of the model of -say- jupyter notebooks where people are forced to follow the complete flow of the training,  step by step,  and cannot just jump to the end of the training.

So, in fact,  I am trying to figure out who to create the forced step-by-step learning model of a jupyter notebook, using GRC.

Concerning item 4:
Is it possible in gtk that, if a part of the text in a note-block is a URL (https://...), that GRC would starts a web browser if people click on it?

It would be nice to be able to incorporate external references (e.g. a video) in the notes of a flow-graph.

kristoff - ON1ARF

On 14/11/2020 17:21, Jeff Long wrote:
Looking for the simplest (maybe not the best) solution:

Item1 - A shell/batch script could run gnuradio-companion 1.grc 2.grc 3.grc

Item 2 - files can be relative, e.g, ./sample.iq <http://sample.iq>. So, if you tar or zip the grc files and the sample files, everything should be runnable from a single directory, no searching around required.

Item 3 - I think this is pretty far out of scope for GRC.

On Sat, Nov 14, 2020 at 11:15 AM Kristoff <kristoff@skypro.be <mailto:kristoff@skypro.be>> wrote:

    HI all,

    Yesterday-evening, we did a small workshop 'getting started to GNU
    for CTFs', to 'kickstart' some people using GNU Radio.

    Afterwards, I was thinking that workshops do take up quite a bit of
    time, and not every student has time to do a workshop during the
    timeslot that is there is a teacher available; so perhaps we can
    also do
    this in another way.

    One thing -I think- would help for this, is the possibility to create
    'interactive getting started guides' for GR. That way, we should
    be able
    to reach more people.

    The idea I have in mind is to create 'interactive learning-flows'. To
    allow people to learn GNU Radio -step by step- how to use GRC, how to
    analyse a CTF, how to create signals, ...

    The model is a 'learning-flow', a course is divided into multiple GRC
    flow-graphs, and where every 'tab' on GRC is the next step in
    process to
    build/ explain/ ... a GRC flow-graph.
    - GRC tab 1: option-block + 'samp_rate' var block + file source
    - GRC tab 2: option-block + 'samp_rate' var block + file source +
    - GRC tab 3: option-block + 'samp_rate' var block + file source +
    throttle-block + QT time sink
    - GRC tab 3: option-block + 'samp_rate' var block + file source +
    throttle-block + complex-to-amp2 + QT time sink

    So, my question. Could it be possible to change / enhance  GRC a
    it to make it better suited for creating this kind of interactive
    learning courses?

    (Perhaps some of the things noted below are already possible. So
    excuse my ignorance)

    Find below  some 'feature-requests' for GRC that I think would
    help to
    make this possible (or at least, more easy):

    1. GRC has the ability to use tabs, multiple flowgraphs loaded
    into GRC.
    However, every flowgraph is independent, and you can can load/save
    one of them independently.

    Would it be possible to create the concept of a 'flowgraph
    bundle', i.e.
    a number of flowgraphs that are groups together, and that are
    in one file.

    When you load the 'bundle', all flow-graphs will be loaded at
    tabs of GRC, in a predefined order as documented in the bundle.

    2. Most workshops / how-tos use files. (e.g. i/q files)

    Currently, this means that you must distribute that i/q file
    and you must tell the user 'now point the file-sink block to the i/q
    file you have downloaded. It can be in Downloads, or in documents,
    or in
    your home-folder so look around if you do not find it immediately'.

    This is kind-of OK in a real 'live' workshop, but -I think- not
    what you
    would want in a learning-project somebody has downloaded from the
    internet and doing this without the 'live' aid of a teacher.

    So, considering the bundles mentioned about, would it be possible to
    have them also include -say- an i/q  files?
    When the user loads a bundle into GRC, this should then also place
    the i/q file in a predefined location on the computer of the student.

    - The goal would be to be able to pre-configure the file-source block
    in such a way that it will find that I/q file, no matter what the
    directory-structure of the user's computer might be.
    - And it would make distributing a learning-flow a lot easier as you
    only have to distribute one single file.

    3/ (This is probably a lot more difficult)
    To create a real 'step by step' flow, it would be interesting that
    student can only access a certain tab (i.e. a step in the learning
    path), when the flow-graph of the previous tab has been 'finished'

    To give an example:

      Tab 1: options block, variable block 'samp-rate' and file-source
    + a "note" block with this text:

    - "when loading a file into GRC, the data-type of the file-source
    port should  corresponds to the signal in the file.
    The example-file has the extension 'iq', so the datatype is
    Change the datatype of the file-source block to the correct setting"

    - "One of the most important features of a stream is it
    sample-rate. The
    example-file is called file1_48000sps.iq <http://file1_48000sps.iq>
    What is the sample-rate of the signal in that file. Set the variable
    samp_rate to the correct value"

    Only when those two conditions are met, then the student should be
    to access the 2nd tab.

    Tab 2:

    Comment block "When creating a GRC without any actual hardware,
    you need
    to add a throttle-block. If not, GRC will use all CPU-cycles of your
    computer when run. Please add a throttle-block after the file-source
    block, connect these two blocks and then go to tab3."


    (But I guess that this kind of requirement is a lot harder then
    points 1
    and 2 above).

    4/ Can you please make the 'note' block larger, and to allow multiple
    lines of text?

    Currently, it is quite small, so it is not really possible to add the
    kind of comments (see 3/ above) to the graph.

    What would also be nice is the ability to add URLs in the note blocks.
    This would allow the note to link to -say- a video: " Change the
    datatype of the file-source block to the correct setting. Click
    here for
    a video on the different data-types used in GNU Radio"

    I know that some of these feature-requests are probably not that easy.
    But as the quite steep learning-curve of GNU Radio is the main reason
    people are scared away from GR, I do think that providing a good
    learning-tool can be one of the best ways to get the, over that


    kristoff - ON1ARF

reply via email to

[Prev in Thread] Current Thread [Next in Thread]