I develop decent alternative to MavLink.
BlackBox support bitfields, any primitive datatypes, single/double bytes char strings and any variations of it's multidimensional arrays with static and variable dimensions.
At the moment, the code generator BlackBox is built like SaaS.
To get the generated and tested code it is necessary:
- Create a protocol specification. In fact, this is a regular source for java. Here is an example of how it looks for a demo project to control from Android a blinking LED on the board under STM8S103F3P6 via Bluetooth UART on HC 08. While writing a specification, it is necessary in java project to make a refference to the set of annotations describing data characteristics and following a small set of rules, describe packets, channels, Hosts, communication interfaces, network topology
- Verify that the specification is successfully compiled, and send its source as an attachment to the mail address OneBlackBoxPlease@outlook.com. The server periodically takes received specifications from this box and checks their correctness. Then, generates the source code requested in the specification in the programming languages required. After that, several tests are created and the sources are run through them. If all the tests were successful, then the generated code, the last passed test, and an example of using the ordered API are packed into the archive and sent to the addressee. If an error occurred, the sender is notified of a possible delay and the BlackBox support service is dealing with the difficulties encountered.
Here you can find an example of the generated code, and here an example of usage of this code in the above-mentioned demonstration control project with android LED flashes on the demo PCB assembled on STM8.
Using BlackBox, you can easily establish communication not only between microcontrollers, mobile devices but also between the ordinary computers. And what is important, without time and effort waste. In fact, the generated BlackBox code can become the skeleton of your distributed application. The programmer will just have to add handlers to the packet's reception events, as well as the logic for creating the package, populating it with data and sending it to the recipient.