"refresh rle" is a third refresh mode next to off and on (auto_capture 2, __REFRESH_RLE__). Plain "refresh on" is unchanged, so existing hosts keep working; firmware without the mode answers "usage: refresh off|on". - A bulk push of 256 pixels or more is sent as "rle8\r\n" + x, y, w, h, u16 palette size + the region's own sorted palette, then the w * h palette indices as one PackBits stream without lengths (DiSlord's packbits(), 480 indices at a time). Background runs continue over the rows. Smaller pushes fit the USB queue and stay "bulk", as do regions with more than 256 colours or that might not get smaller. - The waterfall scrolls the LCD as without remote desktop (4 lines at a time) while remote_hold drops the pushes, then sends one "scrl\r\n" + x, y, w, h + int16 dy instead of pushing every moved row again. Tested on HW V0.5.4 (ZS407) with tinySA-App: the screen rebuilt from a capture and all pushes equals a raw capture (0 pixels differ), every stream is byte-identical to packbits(). Normal screen 289 -> 34 KB/s, big waterfall 368 -> 23 KB/s at 2.12 instead of 1.75 sweeps/s. Costs about 530 bytes of flash and 544 bytes of RAM. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>copilot/add-multi-platform-rf-scan-exports
parent
2b4aa513b7
commit
4f60bf4906
Loading…
Reference in new issue