This week I finished up the CAN codec. I finished implementing the augmented run length decompression algorithm and further implemented the LZSS dictionary-based compression algorithm. This reduced compression ratio to about 0.16 to 0.21, depending on the block size used. In order to minimize packet header overhead, I found that block sizes of roughly 700 are optimal. I decided to forgo the Huffman encoding implementation as it is simply a less efficient dictionary-based compression algorithm than LZSS/heatshrink.
I primarily worked on writing the design document, which unfortunately precluded my work on designing the configuration API and firewall. I will spend additional time implementing these two firmware components, as the CAN codec is tested all but integration.