bastibl / gr-rds

FM RDS/TMC Transceiver
http://en.wikipedia.org/wiki/Radio_Data_System
GNU General Public License v3.0
219 stars 73 forks source link

added alternative FM receiver flowgraphs #17

Closed jdemel closed 7 years ago

jdemel commented 7 years ago

I added 2 flowgraphs which decode RDS and use stereo audio. Stereo audio is moved to a hier block. Hopefully the whole receiver is easier to understand now.

Also, I added a few lines in init.py which catches problems with Qt5. Though, the RDS Panel won't be usable unless Qt5 is present. This should make the next branch work with GR3.7 for now.

bastibl commented 7 years ago

Thanks for the PR.

Regarding backwards compatibility, the idea was to have a next branch that works with GNU Radio's next and a master branch that works with GNU Radio's master. Having one code base that's compatible with all GNU Radio branches turned out to be a bad idea in the past. AFAIK, GNU Radio 3.8 will require QT5, so I guess it's OK to require QT5 in next.

Recently, I had to replace the MPSK receiver, since it was removed from GNU Radio. The current solution is pretty sub-optimal, so the work on the receiver is very much appreciated. However, I just tested the commit and, for me, the flow graph stalls after 10-20 seconds. The GUI hangs and the samples are overflowing. (no segfault, no infinite loop with 100% CPU). Did you experience something similar?

bastibl commented 7 years ago

For whatever reason my current next installation is really unstable. I gave it another try and now it didn't stall anymore. I just merged the changes with minor follow-ups.

I think it would be a good idea to completely replace the RX flow graph with your version, but I'm a bit worried that people don't know how to build hier blocks. My goal was to have the RDS module as easy to use as possible. However, merging everything into one flow graph is also a mess... Any thoughts? :-)

jdemel commented 7 years ago

I need to double check, but GRC should be able to automagically build hier blocks for some time now. I'm not entirely sure when and how though.

bastibl commented 7 years ago

I just tried to start the flow graph without compiling the hier block, but that doesn't work.

IIRC, there was a discussion on how to integrate hier blocks in the build process, but I don't know if they came up with a nice solution. There is a cmake function to compile flow graphs https://github.com/gnuradio/gnuradio/blob/master/cmake/Modules/GrMiscUtils.cmake#L270

But I can't figure out how to call it after installation of the blocks. I tried adding it at the end of the top-level cmake file

include(GrMiscUtils)
install(CODE "GRCC(\"fm_stereo_audio_decoder_hier.grc\" \"${CMAKE_BINARY_DIR}/apps/\")")

But that doesn't work. Looks like the GRCC command is not available in the installation context.