Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Unfortunately, the GRAS project is no longer maintained. GRAS was my software baby; I invested significant time, thought, and debugging effort into the project's development. I believe that the community, and myself included, has suffered a great loss. Please see the project history page to learn more. I am not comfortable disclosing any more information at this time.
The good news is that I have spent my time after GRAS creating a new project, Pothos. Pothos has many of the cool and interesting features found in GRAS, but does not share any of the GRAS codebase. Please checkout the Pothos project homepage. Let me know if you think something is missing, or if a specific feature would be useful. Feedback is always appreciated!
|See summary page for more: https://github.com/guruofquality/gras/wiki/Summary|
Introducing the GNU Radio Advanced Scheduler: GRAS is a complete re-write and overhaul of the stock GNU Radio scheduler to implement new features, performance enhancements, and a simplified user API. A new buffer and threading model gives GRAS zero copy features; allowing integration of DMA devices and seamless transition between stream and packet domains.
From the author: I have been contributing to the GNU Radio project since roughly 2006 when I started work on the GNU Radio Companion. Over the years I have been coming up with various ideas and feature attempts that I always wanted to see in GNU Radio. Starting in early 2012, I decided to give these ideas and features a home; and in the process, critically examine everything. The result is the GRAS scheduler, a years worth of work, slick, new API, new features, zero copy goodness, and more.
Hipster GRAS has all the new features before they were cool enough for mainline GNU Radio.
- GRAS had python blocks support before it was cool.
- GRAS had message passing before it was cool.
- GRAS had thread affinity hooks before it was cool.
- GRAS had thread safe circular buffers before it was cool.
- GRAS had C++ namespace support before it was cool.
- GRAS had a status monitor GUI before it was cool.
GRAS has a lot of other neat features that are still too hot for mainline GNU Radio. Just too much for one page! Checkout the features summary wiki page for a brief overview of all the features. Each summary section contains links with greater detail:
Build and install
Start here! This link gets you the scheduler, GNU Radio, and GREX:
- Instructions: https://github.com/guruofquality/gras/wiki/Build
Features in the works
- Setting/getting properties from the Web GUI interface
- Upgrade gnuradio submodule to 3.7 pre-release candidate
- Performance issues with theron6 pre-release blocking mode
- Upgrade Theron to theron6 when its released
- Have a 1.0 release version of GRAS w/ theron6 and gr3.7
- Canonical names for ports (vs integer indexes only)
- Network distributed tasks using Theron's network'd actors
Documentation and examples
- Coding guide: https://github.com/guruofquality/gras/wiki/Codeguide
- Module guide: https://github.com/guruofquality/gras/wiki/Moduleguide
- Dive into headers: https://github.com/guruofquality/gras/tree/master/include/gras
- Examples of blocks: https://github.com/guruofquality/grex/wiki/Blocks
- A little libre office presentation: http://www.joshknows.com/download/gras.odp