3 ms·
My personal opinion: overengineering. Most of the original BT stack design lifted the framework from the infrared (IrDA) protocols. IrDA's original intention wa
by pjbk 3y ago
My personal opinion: overengineering. Most of the original BT stack design lifted the framework from the infrared (IrDA) protocols. IrDA's original intention was a "simplified" OSI model, but as design by committee goes, it derived in a blown out spec that was very difficult to implement even in capable hardware at the time. As usual it had a very ambitious plan of being a protocol for everything, including devices that were not invented yet.
I once worked in a project that allowed truck drivers to print invoices with a Palm device to printers that needed an IrDA transceiver dongle. What would have been a no-more-than-a-week project in any other sane embedded system turned into a 3 month ordeal. Time was mostly spent troubleshooting and debugging the several layers of the system, from the physical up to the application. Many years after that I worked in BT and BTLE devices and, although I had better tools and software stacks, my experience was exactly the same. Just browse the issues in the BlueZ forum developers face even when attempting to do silly and simple stuff. Imagine trying to use BT hardware and software to do more sophisticated things like synchronizing the audio stream of multiple BT speakers.
In the last years many of the new BT features that are continuously being added to the spec feel like an afterthought. Specially in critical areas like security. Contrast that to a technology like WiFi that was always intended as a typical network communication ecosystem. Things have improved a bit since there is undoubtedly more experience due to all the devices out there with more performant hardware. However the fact that you need to deal with an onion of multiple hardware and software components, each with its own intricacies as a result of the engineer's interpretation of a complex specification - and therefore very difficult to verify and test, explains for me the current situation we are in.