I’ve been quiet for the past month or so, as I was keeping my head down to finish a project at work. It’s done now, so now is a good time to crawl back out of my cave and share a bit about what I’ve been up to. This was for a customer who outsourced a software development project to us.
Some quick background: MQTT is a publish/subscribe messaging protocol that IBM products like WebSphere Message Broker can speak.
Our customer wanted an MQTT library written for the real-time embedded firmware that runs on their products. This client library needed to provide the API of the MQTT specification, implemented within the constraints of an embedded platform with significant resource constraints, and only a subset of the standard C OS functions (e.g. no multi-threading, no dynamic memory allocation, no malloc/realloc/calloc, etc.).
In addition to providing this MQTT API for their own applications to use, we were also asked to develop a file transfer agent – a background process that will provide a reliable file transfer service for their applications. They can then use this in their different apps to transfer files to and from a remote server by calling a simple asynchronous API, using MQTT as an underlying transport. Again, this was written for their firmware platform, with the same sort of constraints.
It’s been fun – although I’ve done mobile development before, this has generally been for PDA platforms like Palm OS and Windows Mobile. This sort of firmware development was new to me, and I’ve been learning a lot about RTOS over the last month or so. And some of the sorts of applications that they’re talking about using this for are very exciting.
It’s all finished, so if you’ve been waiting for me to do something over the last month or so, there’s a better chance that I’ll get around to doing it now. 😉
Update: I meant to say, I found a copy of ‘The Firmware Handbook’ by Jack Ganssle in the Hursley library, which was really useful.