Cached data optimization + remote display support
This release includes 2 new features that work together. The first is the ability to transmit the display commands over BLE or UART. This may not have practical applications at the moment, but seemed like a good idea to try. I also wrote a MacOS BLE virtual display app to receive and display the data. I'll release this shortly. The BLE code only runs on ESP32 and Nano 33 targets; the UART code works on all targets.
The second change for this release was to re-enable code I had written a while ago which speeds up text drawing by grouping the data into larger bunches before sending to the display. I'll use the small font as an example. Each 6x8 character would normally be transmitted individually over I2C. The transaction goes like this:
Begin I2C transaction to OLED display (send start signal and transmit display address)
Send 0x40 introducer byte to indicate graphics data
send 6 font bytes
End I2C transaction (send end signal)
This release includes code which caches up to a whole line (128 bytes) of font data so that it can be sent in a single transaction. This also helps speed up the remote display code quite a bit.