Very interesting! Seems like a Bluetooth-connected display is kind of rare.
This part:
The one thing I’m left scratching my head over is the length field. If I have 0x20 bytes of image data to send over, I actually need to put 0x10 into that field.
Made me think the protocol simply assumes at least 2 bytes will always be used, so it transmits the length using the unit of 16-bit "words" instead of bytes. That would not be unheard of, and is kind of smart even.
It's kinda weird since the payload seems to be (repeat:u8 + rgb565:u16)*, so always multiples of three bytes, not two.
Given how this is sort of software is usually written, my guess would be they originally didn't have the RLE encoding and were just sending (rgb565:u16)*. That'd explain it.
I'm still figuring out how to integrate this with my existing wearable system. I've been using a Vufine monocular display which is nice as a real HDMI screen but the wire is clunky. So far I'm experimenting with extending the Python code to read images from a directory and display them, newest first... from that I see a path to doing useful stuff with notifications, even turn by turn navigation.
Very cool hack.
As an avid cyclist I never felt the need for this, my cycle computer has everything I need at a glance anyways. But I've seen some similar googles for skiing or swimming, which I might check out more. The skiing one is mostly vanity (like knowing my speed and other stats in the moment is not that useful), but the swimming one is nice as it's hard to track how you're doing without glancing at your watch. Anyone else have experience with these kind of devices?