This week, I completed the Frequency Sink. Following are the updates of the week:

Current Status

Completed Frequency Sink

I have completed Frequency Sink. I have added GRC integration. Example is available here. FreqSink-Example

There will be 2 outputs for each complex and float sinks of GRC. The corresponding Float sink output should be as follows. The example is the most simplest version of use case. The plot formatting options exist for multi-line plots.
FreqSink-Example-Output

Notes on using GRC integration: As mentioned in last post, there are some changes needed in core template of GRC to be able to use Bokeh GUI. The updated core GRC template and corresponding code changes are available in branch bokeh_in_gnuradio in fork of GNU Radio repository. Once, you install the GNU Radio from that branch, you can select Bokeh GUI generate option to use in Options block.

In addition to implementation for Frequency sinks, I have also solved a bunch of minute bugs from TimeSink. I have also added some documentations in .h/.cpp file that explains the over all workflow of sinks.

Another major task was to reduce the output code of GRC files. Basically task was to remove all fake condition checks. Initially the code produced lots of code like:
if not True: # Do this
My solution was to check those conditions in Cheetah template instead of printing the Python version of checks. So, new template will check the variable value in Cheetah and will not even print the next statement if it wants to print the statement with False condition! Apart from that, since GRC output file is too generic for normal use, we can’t remove all formatting statements.

Another interesting issue was to create a hierarchical structure for all classes in Bokeh sinks i.e. to create a base class for all sink blocks and corresponding Python classes. The Python part was splitted by transferring all formatting functions into the base class called bokeh_config_plot and functions like constructor, initialize and update in specific class.
The hierarchical design is more difficult when we focus on C++ part of the sinks because there are no aparent differences between “common functions” and “functions specific to the class”. Although I am planning to develop a structure, views from the community would be very helpful.

Feedback required

To make these bokeh based GUI a bug-less software, we would like to have feedbacks from the community. You can now test using GRC.

As of now, the whole implementation is on develop branch.

For any comments/feedbacks/suggestions, you can drop me an email on discuss-gnuradio.


To-Do list for next week:

  1. Solve the bugs of TimeSink and FreqSink:
    I don’t believe my code is perfect. Kindly reinforce my belief! Add as much bugs as possible. It is now easier with GRC integration!
  2. Extensive thinking on design of heirarchical design of C++ sinks