Hi Beaglebone Community,
I'd like to announce that I have written a Java library for the Beaglebone Black. This project has largely been inspired by the excellent pi4j API for the raspberry pi and as I could not find such an API for the beaglebone black, I decided to roll my own.
In the beginning, I wanted to port pi4j, but then I decided to correct some flaws and have sources that are easier to maintain and platform independent. Well, I did not convincingly succeed in that, but it resulted in a nice API with a lot of features.
Here are some features of libbulldog:
* Designed for platform independence
* Memory Mapping in Java
* Memory mapped GPIO (toggle speed ~1.8MHz iirc)
* Event driven IO and Interrupts via epoll
* All PWMs simultaneously usable
* I2C fully accessible via Java
* UARTs fully accessible via Java
* SPI working, although you will have to roll your own chip selects
* ADC is mostly working but has got some flaws
* Some devices readily supported (e.g. HD44780 LCD)
* Extensive Servo API with eased movements
Now that I have come so far programming this in my spare time, I want to share it with you.
Not everything is 100% finished yet, but you can really do a lot with the API already. My hopes are that people will use it, test it and provide feedback until I can release a stable production build. Unfortunatelly the board specific codes are very hard to unit test! I will soon have a few days of vacation and hope to achieve this goal by then. If something is broken currently, it's probably very easy to fix.
Moreover, it'd be cool to support more devices and turn this into a huge device library.
It has been tested with Angstrom Linux so far.
There's only one major concept in this API. It is that a pin is just an output line and it can have several features, of which one can be activated at a time (e.g. DigitalIO, PWM). Libbulldog provides a fluent API for it. Just take a look at the examples:
Things I intend to do:
* Networking support
* Support more boards (raspberry pi is in the makes already)
Have fun controlling the board with Java!