This week of GSoC, I dealt with the final GUI issues and improvements. Also, I improved the error handling of the Signal Separator block and implemented a JSON logic to load precalculated filter taps. Finally, my final milestones where changed in discussion with my mentors.
The GUI is finished for now. Since last week, I did small improvements like adding a zooming capability and a datatip. Also, the manual signal selection now has functionality behind the visual representation.
The Signal Separator crashed from time to time, when trying to calculate filter taps for an impossible cutoff frequency. This could happen when the threshold is set too low and the whole spectrum gets detected as one signal. The highest cutoff frequency yields fs/2. Now, there is improved error handling with a warning in the logger and creation of dummy taps to not interfere with following calculations.
Also, as described in previous blog posts, this block should have the ability to use precalculated taps to save CPU load during runtime. For this purpose, a JSON file path can be entered in the block parameter. The JSON parsing completely takes place in python (which can handle JSON out-of-the-box). I use SWIG to map the python
dict to a
std::map<float, std::vector<float> > in C++. The key for each tapset equals the relative filter cutoff fc/fs. The user can select wether he wants to use the precalculated taps file or calculate taps during runtime. Also, I added a small python script to generate the taps JSON file with user determined parameters.
In discussion with my mentors, the final milestones for my GSoC where changed. Since another student, Christopher Richardson, was accepted to work on this toolbox, who will deal with the AMC part, I will instead deal with an OFDM parameter estimation block. Read more about it here.
- While the JSON paring works fine, I still need to implement the tap extraction in C++
- Start with OFDM estimation block