JSon, my choice for the serial channel protocol

Over the years, I have implemented several protocols to transfer data between clients and servers, both in the traditional network socket sense as well as for various projects that use serial ports. This usually comes down to throwing various ideas around and eventually settling on a "colon deliminated line" where each instruction or status report is a single line, with each element separated by a colon. While this is a simple on-wire protocol, it does require the parsing side to know how many colons to expect, as well as error handling for when there are an unexpected number of colons. It also means that the colon character must not appear in the data.

For the PSU project, I have decided that I would use JSon for the serial protocol. It allows for an extensible protocol that does not require the client and server to be developed in lockstep. With the availability of open source libraries for a large number of languages, it is easy to implement protocol users with extensive error handling. There are also a lot of JSon validators on the web that can be used to ensure that the on-wire data is good so there are very few negatives to this approach.

With that decision made, I went looking for a suitable serializer/deserializer for the microcontroller. I came upon cJSon (https://github.com/DaveGamble/cJSON) which is billed as an "Ultralightweight lightweight parser written in ANSI C". It seems to fit the requirements of using 'C' as well as being simple to incorporate into my project (a .c and .h file is all you need)

Subject: