Hackuary 2015 much hacking great success

The hackfest

I hosted the first Pothos hackfest at my house this last weekend. A small group of people came together from far and wide to hang out and write code. Guests could hack on anything they wanted, but the overall goal of the event was to make a working digital communications layer in Pothos. We should be able to demonstrate that the framework is sufficient for everything that we wanted to implement, or make the appropriate changes.

We worked diligently through fourteen hour coding shifts; only stopping briefly for food, drink, and other essentials. That was not intentional, there was no slave driving, or forceful coaxing, just extreme dedication and pure focus on the task at hand. There was also ample food, beer, and EPIC MUSIC. The epic music made coding really intense, and made boring discussions about label indexes seem like something amazing was happening.

10/10 will do again!

New digital and packet blocks

We didn't quite finish the complete communications layer. The MAC protocol block and some of the PHY layer is still under construction. Expect a complete DMPSK demonstration using the GUI tool to design both MAC and PHY layers in the near future. However we have some great new blocks to add to the digital communications toolkit in pothos-blocks:

  • Symbol mapping/slicing
  • Bit, byte, symbol conversions
  • Differential encoding
  • Packet framer/correlator
  • Scrambler/descrambler
  • Simple MAC protocol block

New users' group

Given the growing requests for a mailing list for support, discussions, announcements: I am proud to announce the Pothos Users' Group. The users' group is for public support and discussions. I will also make sure to post major announcements about features, videos, and releases to the group.

New label width field

We were looking for a way to specify the number of elements to which a label applies. The purpose being to properly propagate a label through a upsampling block, and have the downstream block understand how to use the label without knowing arbitrary things like the upstream filter's interpolation.

Using the index we can associate a SOB or time stamp label with the first sample in an interpolation, and using the index and width we can associate an EOB label with the last sample in an interpolation. There is virtually no additional coding overhead to deal with widths, most block implementors can basically ignore the width and allow it to propagate as-is. And there is a helper member to adjust a label through size changes which handles both the index and width together. One only needs to specify the multiplier and the divider.

Debugging digital blocks

The waveform viewer was suprisingly helpful for debugging. The automatic data type conversions, support for displaying packets, and the ability to display stream labels turned out to be very useful. However, there were a number of situations were we just needed a text view of the stream. So, I will be working on a "list view" type of display for visualizing symbol, bit, and byte streams.

Misc bugfixes

  • Despite all the exceitement of the previous blog post, I had merged the performance work with a few bugs in it. They fixed now on the master branch.
  • Fixed an issue with the circular buffer push implementation - fixed in maint/master
  • Fixed an issue with the label indexes in the SDR sink block - fixed in maint/master
  • Added missing serializations for proxy containers - fixed in maint/master

Version tag 0.1.0

Its taken a while, but there is finally an official git tag for 0.1.0. And the maint branch is accumulating fixes for an eventual 0.1.1 git tag. It wasnt easy making tags on all of the 11 sub-projects as well!

Last edited: Wed, Jan 28 2015 - 06:40AM