Dispatch is a library designed to operate on any byte-aligned communication channel. Dispatch has 'endpoints' or 'topics' to which data is written and 'subscriber' or 'consumer' functions to which the data is sent. At this time, Dispatch is primarily written in C, although a Python port does exist in the testing phase. Dispatch is written to operate in a large number of environments and should be able to compile on any platform.
I have been listening to an American Civil War podcast and I am a bit fascinated with the tremendous influence that communications tend to have on the outcomes of some engagements. The messengers between units were 'dispatched' and pertinent messages went to a specific individual. I decided to name the library 'dispatch' because that metaphor very nearly models the way Dispatch works. A message is sent out to a certain subscriber. If there is no subscriber, the message is simply lost.
Some time ago, we began work on the curve tracer project knowning that - at some point - we would be implementing a serial library of some sort. At the time, I thought that I would just find something laying around on github that fulfilled the project requirements without writing a library from scratch.
I ran across the Telemetry library - which is a great library - but it didn't quite meet the potential data rate that I was looking for. After some attempts to patch the capability to send arrays through the Telemetry, I decided that the effort required would vastly modify the library itself and that Remi - the author of Telemetry - would likely not accept the massive changes to the base level protocol.
I took inspriation from the simplicity and elegance of Telemetry and created the first crude version of Dispatch on a PIC24 processor for the curve tracer. After several successful tests, I have concluded that the serial library is worrh making a project of its own and I decided to call it Dispatch.
As this began as part of another project, there is some history that isn't part of this project. Before moving to the Dispatch repository, it may be helpful to read the following posts from the curve tracer project:
Although the function naming conventions will be a bit different, the concepts for understanding the library concepts and syntax are laid out quite clearly in those posts.
The project is not mature and is mostly untested! I have set up a TravisCI test, so any new commits will be able to have the testing run on them immediately. Right now, there is only about 15% test coverage, so don't use this in your new project unless you want to do some debugging!
At the time of this writing, the Dispatch github repository contains all of the files that are required to use and build, but there isn't much in the way of instructions or other guidance. I am working on implementing unit tests and, once those are complete, I will also attempt to optimize for RAM and/or speed.
Thanks for checking in!