This is really cool. I had heard about GNU Radio, and now this is a good 
excuse to learn a bit more about it. :-)

-viral

On Monday, April 20, 2015 at 7:52:51 PM UTC+5:30, Jay Kickliter wrote:
>
> I just pushed a rough draft gr-juliaffi 
> <https://github.com/JayKickliter/gr-juliaffi> to GitHub. It is not a 
> Julia package, but a GNU Radio module (C++/Python) that calls your Julia 
> code to do the actual signal processing.
>
> If you're not familiar with GNU Radio, it is a software defined radio 
> (SDR) framework. SDR is really cool. Traditional radio hardware is 
> dedicated  to certain kind of signal (like a satellite modem or FM 
> receiver). SDR lets you use generic hardware that does little more than 
> digitize the raw radio waves and send them to a computer. From there, all 
> the signal processing is performed in software. There are real world 
> applications 
> <http://www.fsf.org/blogs/community/free-software-in-space-gnu-radio-and-the-isee-3-spacecraft>
>  
> of SDR. I use it almost every day.
>
> The motivation for this block came recently when I needed something GNU 
> Radio didn't have yet. At my job, we're developing new 802.15.4 hardware. 
> There is an 802.15.4 <https://github.com/bastibl/gr-ieee802-15-4.git> 
> out-of-tree module for GNU Radio, but it's not complete and doesn't have 
> the capability of de-spreading 
> <http://en.wikipedia.org/wiki/Direct-sequence_spread_spectrum> 802.15.4 900 
> MHz BPSK signals. I wrote code to de-spread the signal in Julia, and piped 
> from/to GNU Radio using ZeroMQ. That works fine, but it's cumbersome. Why 
> not just have GNU Radio call the Julia code directly?
>
> If you do want to use the module, please let me know what issues you run 
> into when building/using it. I spent two solid days just trying to get 
> cmake to find and properly set up linking to libjulia. I'm using OS X, and 
> @rpath was causing the biggest problem for me. It only built when I finally 
> stopped trying to tell cmake where to find libjulia and switched to 
> find_library. Also I had to do an actual `make install release` in the 
> Julia repo for all the headers and libraries to be in predictable 
> locations. That's because the FindJulia cmake  module I added calls julia 
> on the command line to figure out where stuff is. The code still crashes if 
> I try to run it with `jl_init(NULL) 
> <https://github.com/JayKickliter/gr-juliaffi/blob/master/lib/juliablock_ff_impl.cc#L47>
> '.
>
>  There's still more c++ work to be done, and I don't know c++. I just 
> infinite monkey it 'till it works. I just hope I or someone else can figure 
> out how to make the c++ configure itself dynamically, so it isn't necessary 
> to define blocks for every combo of input/output type. Most of the repo was 
> automatically created with gr_modtool. This file 
> <https://github.com/JayKickliter/gr-juliaffi/blob/master/lib/juliablock_ff_impl.cc>
>  
> is pretty much the whole project. It's definitely possible to change the 
> number of inputs/outputs to block at runtime. Looking at the code, I think 
> it may be possible to change the type as well.
>
> I was hoping have this done with some good examples in time to give a 
> JuliaCon talk. Maybe next year. I'll be there anyway, if anyone's 
> interested I'll give an informal demo.
>

Reply via email to