In order to improved the reliability and availability of our motes we are trying to enable the buffering of significant numbers of device measurements and device alerts in times when communications is disrupted. Our ability to buffer this information for uploading once communications has been reestablished is directly proportional to the amount of free SRAM available in the mote.
Since all communications happen using GPB as the encoding protocol, and since GPB is generally very efficient in the encoding process we would like to create the actual packets to be sent, fully GPB encoded, and queue these for transmission once the comms has been restored. However, the previous statement is only true for normal defined fields and NOT for metadata K:V pairs.
For example, sending a rule version (uint32_t) as metadata take at least 10-14 bytes (with a very short name) as a defined field max 5. Looking at our worst case, if I can add the 7 metadata fields as defined fields we can reduce our packet size from max 591 bytes to around 200 bytes resulting in a 200% improvement in the number of alerts that can be buffered. And since alerts, together with measurements, form the heart of any/most/all IoT projects the benefit will be significant.
All assistance and effort appreciated, considering the limited SRAM resources on most MCUs this could become a make or break case for some projects..
Thanks
Andre