From a3dc1e461b66d81e311e8c96918f10c3a3216238 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 24 Jul 2019 21:06:42 -0500 Subject: [PATCH] Update M7219 comment, tweak parameter code --- Marlin/src/gcode/feature/leds/M7219.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Marlin/src/gcode/feature/leds/M7219.cpp b/Marlin/src/gcode/feature/leds/M7219.cpp index aa8d063a6e..c8257f6581 100644 --- a/Marlin/src/gcode/feature/leds/M7219.cpp +++ b/Marlin/src/gcode/feature/leds/M7219.cpp @@ -33,13 +33,16 @@ * I - Initialize (clear) the matrix * F - Fill the matrix (set all bits) * P - Dump the led_line[] array values - * C - Set a column to the 8-bit value V - * R - Set a row to the 8-bit value V - * X - X position of an LED to set or toggle - * Y - Y position of an LED to set or toggle - * V - The potentially 32-bit value or on/off state to set - * (for example: a chain of 4 Max7219 devices can have 32 bit - * rows or columns depending upon rotation) + * C - Set a column to the bitmask given by 'V' (Units 0-3 in portrait layout) + * R - Set a row to the bitmask given by 'V' (Units 0-3 in landscape layout) + * X - X index of an LED to set or toggle + * Y - Y index of an LED to set or toggle + * V - LED on/off state or row/column bitmask (8, 16, 24, or 32-bits) + * ('C' / 'R' can be used to update up to 4 units at once) + * + * Directly set a native matrix row to the 8-bit value 'V': + * D - Display line (0..7) + * U - Unit index (0..MAX7219_NUMBER_UNITS-1) */ void GcodeSuite::M7219() { if (parser.seen('I')) { @@ -62,12 +65,13 @@ void GcodeSuite::M7219() { else if (parser.seenval('X') || parser.seenval('Y')) { const uint8_t x = parser.byteval('X'), y = parser.byteval('Y'); if (parser.seenval('V')) - max7219.led_set(x, y, parser.boolval('V')); + max7219.led_set(x, y, v > 0); else max7219.led_toggle(x, y); } else if (parser.seen('D')) { - const uint8_t line = parser.byteval('D') + (parser.byteval('U') << 3); + const uint8_t uline = parser.value_byte() & 0x7, + line = uline + parser.byteval('U') << 3; if (line < MAX7219_LINES) { max7219.led_line[line] = v; return max7219.refresh_line(line);