Public Access
Rewrite Nano serial parser as line based, fix protocol bugs
- Commands run on '\n' instead of busy-waiting for a byte count, which fixes s/F/T waiting for the next command and P drawing 0xFF garbage - Invalid bitmaps no longer leak their data as commands; bitmap data is streamed so full-screen bitmaps still fit - Store flip time as uint16 with magic marker, validate 50-2000 us - Overflow-safe millis() handling for the periodic refresh - Run the full refresh only after D or when serial is idle, so incoming data is not lost while the redraw blocks - Put the boot refresh measurement behind MEASURE_REFRESH - Fix DEBUG hex output and use F() strings to save RAM - Driver: direct mode now updates the old buffer instead of re-setting the new one Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
459937352a
commit
f1dbc35ebd
4 files changed
+328
-231
No files matched your search
@@ -151,22 +151,11 @@ void BROSE9323::drawPixel(int16_t x, int16_t y, uint16_t color)
|
||||
|
||||
_strobe();
|
||||
#if !defined(__AVR_ATmega168P__) && !defined(__AVR_ATmega168PB__) && !defined(__AVR_ATmega168__)
|
||||
// The dot is flipped now, so the next display() does not have to flip it again
|
||||
if (color)
|
||||
{
|
||||
if (_new_buffer[y * _buffer_width + x / 8] & (1 << (x & 7)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_new_buffer[y * _buffer_width + x / 8] |= 1 << (x & 7);
|
||||
}
|
||||
_old_buffer[y * _buffer_width + x / 8] |= 1 << (x & 7);
|
||||
else
|
||||
{
|
||||
if (~_new_buffer[y * _buffer_width + x / 8] & (1 << (x & 7)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_new_buffer[y * _buffer_width + x / 8] &= ~(1 << (x & 7));
|
||||
}
|
||||
_old_buffer[y * _buffer_width + x / 8] &= ~(1 << (x & 7));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in new issue
Block a user