Showing posts from September, 2018

An Architecture for a hardware-software system II

This is our solution at Tonbo Imaging to the question I put up here. Very broadly, I'll break our solution into: 1. The various components and gluing them together A whole lot of Managers that handle various aspects of the software, the Views, a CommandParser, and MessageResponse Queue , all glued together by an internal RxBus - asynchronously sending messages from various threads to one another. 2. Device Capabilities + Autogen UI Each camera broadcasts its capabilities, a json file containing a list of commands it can take. Each command contains its parameters, their datatypes and the list/range of values they can take. A lot of the UI is autogenerated from this. 3. Versioning This was fairly tricky and we're still not 100% sure we're happy with what we have. We have to take care of the versioning between various components: - camera OS ⇌ camera software - camera software ⇌ clients - camera software ⇌ web 4. Camera-Graphics-Display-Streaming  I'll