Browse Source

2.0.8.2 update

pull/45/head
Sergey 4 years ago
parent
commit
de0681a203
  1. 36
      Marlin/Configuration.h
  2. 7
      Marlin/Configuration_adv.h
  3. 4
      Marlin/Version.h
  4. 12
      Marlin/src/MarlinCore.cpp
  5. 1
      Marlin/src/core/boards.h
  6. 5
      Marlin/src/core/macros.h
  7. 4
      Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h
  8. 8
      Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp
  9. 6
      Marlin/src/feature/caselight.cpp
  10. 6
      Marlin/src/feature/fwretract.cpp
  11. 6
      Marlin/src/feature/fwretract.h
  12. 39
      Marlin/src/feature/leds/leds.cpp
  13. 94
      Marlin/src/feature/leds/leds.h
  14. 74
      Marlin/src/feature/leds/neopixel.cpp
  15. 69
      Marlin/src/feature/leds/neopixel.h
  16. 8
      Marlin/src/feature/leds/pca9632.cpp
  17. 8
      Marlin/src/feature/leds/printer_event_leds.cpp
  18. 12
      Marlin/src/feature/tmc_util.h
  19. 15
      Marlin/src/gcode/bedlevel/G26.cpp
  20. 8
      Marlin/src/gcode/feature/leds/M150.cpp
  21. 4
      Marlin/src/gcode/gcode.h
  22. 3
      Marlin/src/gcode/host/M115.cpp
  23. 6
      Marlin/src/gcode/lcd/M117.cpp
  24. 8
      Marlin/src/gcode/motion/G2_G3.cpp
  25. 8
      Marlin/src/gcode/queue.cpp
  26. 8
      Marlin/src/gcode/queue.h
  27. 2
      Marlin/src/gcode/temp/M104_M109.cpp
  28. 7
      Marlin/src/inc/Conditionals_LCD.h
  29. 4
      Marlin/src/inc/SanityCheck.h
  30. 4
      Marlin/src/inc/Version.h
  31. 318
      Marlin/src/lcd/language/language_pl.h
  32. 12
      Marlin/src/lcd/marlinui.cpp
  33. 6
      Marlin/src/lcd/marlinui.h
  34. 6
      Marlin/src/lcd/menu/menu_led.cpp
  35. 97
      Marlin/src/lcd/menu/menu_main.cpp
  36. 12
      Marlin/src/lcd/menu/menu_motion.cpp
  37. 6
      Marlin/src/lcd/tft/ui_1024x600.cpp
  38. 6
      Marlin/src/lcd/tft/ui_320x240.cpp
  39. 6
      Marlin/src/lcd/tft/ui_480x320.cpp
  40. 26
      Marlin/src/module/motion.cpp
  41. 6
      Marlin/src/module/motion.h
  42. 24
      Marlin/src/module/planner.cpp
  43. 43
      Marlin/src/module/planner.h
  44. 75
      Marlin/src/module/temperature.cpp
  45. 77
      Marlin/src/module/temperature.h
  46. 2
      Marlin/src/module/tool_change.cpp
  47. 4
      Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h
  48. 100
      Marlin/src/pins/mega/pins_MALYAN_M180.h
  49. 2
      Marlin/src/pins/pins.h
  50. 1
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
  51. 6
      Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h
  52. 2
      Marlin/src/sd/cardreader.cpp
  53. 10
      Marlin/src/sd/usb_flashdrive/lib-uhs2/masstorage.cpp
  54. 5
      Marlin/src/sd/usb_flashdrive/lib-uhs2/masstorage.h
  55. 5
      buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h
  56. 2
      buildroot/tests/DUE
  57. 6
      buildroot/tests/LPC1768
  58. 2
      buildroot/tests/STM32F103RC_btt_USB
  59. 4
      buildroot/tests/mega2560
  60. 2
      buildroot/tests/rambo
  61. 2
      config/README.md
  62. 4
      ini/features.ini
  63. 4
      platformio.ini

36
Marlin/Configuration.h

@ -104,12 +104,27 @@
*/ */
#define SERIAL_PORT 3 #define SERIAL_PORT 3
/**
* Serial Port Baud Rate
* This is the default communication speed for all serial ports.
* Set the baud rate defaults for additional serial ports below.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
* You may try up to 1000000 to speed up SD file transfer.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 115200
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
/** /**
* Select a secondary serial port on the board to use for communication with the host. * Select a secondary serial port on the board to use for communication with the host.
* Currently Ethernet (-2) is only supported on Teensy 4.1 boards. * Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
* :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7] * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
*/ */
#define SERIAL_PORT_2 1 #define SERIAL_PORT_2 1
#define BAUDRATE_2 115200 // Enable to override BAUDRATE
/** /**
* Select a third serial port on the board to use for communication with the host. * Select a third serial port on the board to use for communication with the host.
@ -117,17 +132,7 @@
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7] * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/ */
//#define SERIAL_PORT_3 1 //#define SERIAL_PORT_3 1
//#define BAUDRATE_3 250000 // Enable to override BAUDRATE
/**
* This setting determines the communication speed of the printer.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
* You may try up to 1000000 to speed up SD file transfer.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 115200
// Enable the Bluetooth serial interface on AT90USB devices // Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH //#define BLUETOOTH
@ -1061,7 +1066,7 @@
#define PROBING_MARGIN 0 #define PROBING_MARGIN 0
// X and Y axis travel speed (mm/min) between probes // X and Y axis travel speed (mm/min) between probes
#define XY_PROBE_FEEDRATE (1000) #define XY_PROBE_FEEDRATE (40*60)
// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) // Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_FEEDRATE_FAST (4*60) #define Z_PROBE_FEEDRATE_FAST (4*60)
@ -2739,7 +2744,7 @@ EEPROM_W25Q
//#define NEOPIXEL_LED //#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED) #if ENABLED(NEOPIXEL_LED)
#define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h) #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
#define NEOPIXEL_PIN 4 // LED driving pin //#define NEOPIXEL_PIN 4 // LED driving pin
//#define NEOPIXEL2_TYPE NEOPIXEL_TYPE //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
//#define NEOPIXEL2_PIN 5 //#define NEOPIXEL2_PIN 5
#define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.) #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
@ -2757,8 +2762,9 @@ EEPROM_W25Q
//#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel //#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel
#endif #endif
// Use a single NeoPixel LED for static (background) lighting // Use some of the NeoPixel LEDs for static (background) lighting
//#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use //#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED
//#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
//#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off //#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
#endif #endif

7
Marlin/Configuration_adv.h

@ -1299,7 +1299,9 @@
//#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM //#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM
//#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files
#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted
//#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu
#define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") #define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27")
@ -2114,9 +2116,6 @@
#define SERIAL_XON_XOFF #define SERIAL_XON_XOFF
#endif #endif
// Add M575 G-code to change the baud rate
//#define BAUD_RATE_GCODE
#if ENABLED(SDSUPPORT) #if ENABLED(SDSUPPORT)
// Enable this option to collect and display the maximum // Enable this option to collect and display the maximum
// RX queue usage after transferring a file to SD. // RX queue usage after transferring a file to SD.

4
Marlin/Version.h

@ -28,7 +28,7 @@
/** /**
* Marlin release version identifier * Marlin release version identifier
*/ */
//#define SHORT_BUILD_VERSION "2.0.8.1" //#define SHORT_BUILD_VERSION "2.0.8.2"
/** /**
* Verbose version identifier which should contain a reference to the location * Verbose version identifier which should contain a reference to the location
@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release * here we define this default string as the date where the latest release
* version was tagged. * version was tagged.
*/ */
//#define STRING_DISTRIBUTION_DATE "2021-05-15" //#define STRING_DISTRIBUTION_DATE "2021-05-29"
/** /**
* Defines a generic printer name to be output to the LCD after booting Marlin. * Defines a generic printer name to be output to the LCD after booting Marlin.

12
Marlin/src/MarlinCore.cpp

@ -1073,15 +1073,17 @@ void setup() {
while (!MYSERIAL1.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ } while (!MYSERIAL1.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#if HAS_MULTI_SERIAL && !HAS_ETHERNET #if HAS_MULTI_SERIAL && !HAS_ETHERNET
#if ENABLED(MKS_WIFI) #ifndef BAUDRATE_2
MYSERIAL2.begin(MKS_WIFI_BAUDRATE); #define BAUDRATE_2 BAUDRATE
#else
MYSERIAL2.begin(BAUDRATE);
#endif #endif
MYSERIAL2.begin(BAUDRATE_2);
serial_connect_timeout = millis() + 1000UL; serial_connect_timeout = millis() + 1000UL;
while (!MYSERIAL2.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ } while (!MYSERIAL2.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#ifdef SERIAL_PORT_3 #ifdef SERIAL_PORT_3
MYSERIAL3.begin(BAUDRATE); #ifndef BAUDRATE_3
#define BAUDRATE_3 BAUDRATE
#endif
MYSERIAL3.begin(BAUDRATE_3);
serial_connect_timeout = millis() + 1000UL; serial_connect_timeout = millis() + 1000UL;
while (!MYSERIAL3.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ } while (!MYSERIAL3.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#endif #endif

1
Marlin/src/core/boards.h

@ -159,6 +159,7 @@
#define BOARD_PICA_REVB 1324 // PICA Shield (original version) #define BOARD_PICA_REVB 1324 // PICA Shield (original version)
#define BOARD_PICA 1325 // PICA Shield (rev C or later) #define BOARD_PICA 1325 // PICA Shield (rev C or later)
#define BOARD_INTAMSYS40 1326 // Intamsys 4.0 (Funmat HT) #define BOARD_INTAMSYS40 1326 // Intamsys 4.0 (Funmat HT)
#define BOARD_MALYAN_M180 1327 // Malyan M180 Mainboard Version 2 (no display function, direct gcode only)
// //
// ATmega1281, ATmega2561 // ATmega1281, ATmega2561

5
Marlin/src/core/macros.h

@ -195,6 +195,11 @@
#define __TERN(T,V...) ___TERN(_CAT(_NO,T),V) // Prepend '_NO' to get '_NOT_0' or '_NOT_1' #define __TERN(T,V...) ___TERN(_CAT(_NO,T),V) // Prepend '_NO' to get '_NOT_0' or '_NOT_1'
#define ___TERN(P,V...) THIRD(P,V) // If first argument has a comma, A. Else B. #define ___TERN(P,V...) THIRD(P,V) // If first argument has a comma, A. Else B.
#define _OPTARG(A) , A
#define OPTARG(O,A) TERN_(O,DEFER4(_OPTARG)(A))
#define _OPTCODE(A) A;
#define OPTCODE(O,A) TERN_(O,DEFER4(_OPTCODE)(A))
// Macros to avoid 'f + 0.0' which is not always optimized away. Minus included for symmetry. // Macros to avoid 'f + 0.0' which is not always optimized away. Minus included for symmetry.
// Compiler flags -fno-signed-zeros -ffinite-math-only also cover 'f * 1.0', 'f - f', etc. // Compiler flags -fno-signed-zeros -ffinite-math-only also cover 'f * 1.0', 'f - f', etc.
#define PLUS_TERN0(O,A) _TERN(_ENA_1(O),,+ (A)) // OPTION ? '+ (A)' : '<nul>' #define PLUS_TERN0(O,A) _TERN(_ENA_1(O),,+ (A)) // OPTION ? '+ (A)' : '<nul>'

4
Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h

@ -103,9 +103,7 @@ public:
} }
static float get_z(const xy_pos_t &pos static float get_z(const xy_pos_t &pos
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) OPTARG(ENABLE_LEVELING_FADE_HEIGHT, const_float_t factor=1.0f)
, const_float_t factor=1.0f
#endif
) { ) {
#if DISABLED(ENABLE_LEVELING_FADE_HEIGHT) #if DISABLED(ENABLE_LEVELING_FADE_HEIGHT)
constexpr float factor = 1.0f; constexpr float factor = 1.0f;

8
Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp

@ -362,15 +362,11 @@
while (--segments) { while (--segments) {
raw += diff; raw += diff;
planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, segment_xyz_mm planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, segment_xyz_mm
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
); );
} }
planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, segment_xyz_mm planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, segment_xyz_mm
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
); );
return false; // Did not set current from destination return false; // Did not set current from destination
} }

6
Marlin/src/feature/caselight.cpp

@ -41,7 +41,7 @@ bool CaseLight::on = CASE_LIGHT_DEFAULT_ON;
#if CASE_LIGHT_IS_COLOR_LED #if CASE_LIGHT_IS_COLOR_LED
#include "leds/leds.h" #include "leds/leds.h"
constexpr uint8_t init_case_light[] = CASE_LIGHT_DEFAULT_COLOR; constexpr uint8_t init_case_light[] = CASE_LIGHT_DEFAULT_COLOR;
LEDColor CaseLight::color = { init_case_light[0], init_case_light[1], init_case_light[2], TERN_(HAS_WHITE_LED, init_case_light[3]) }; LEDColor CaseLight::color = { init_case_light[0], init_case_light[1], init_case_light[2] OPTARG(HAS_WHITE_LED, init_case_light[3]) };
#endif #endif
void CaseLight::update(const bool sflag) { void CaseLight::update(const bool sflag) {
@ -65,9 +65,7 @@ void CaseLight::update(const bool sflag) {
#endif #endif
#if CASE_LIGHT_IS_COLOR_LED #if CASE_LIGHT_IS_COLOR_LED
leds.set_color(LEDColor(color.r, color.g, color.b OPTARG(HAS_WHITE_LED, color.w), n10ct));
leds.set_color(MakeLEDColor(color.r, color.g, color.b, color.w, n10ct));
#else // !CASE_LIGHT_IS_COLOR_LED #else // !CASE_LIGHT_IS_COLOR_LED
#if CASELIGHT_USES_BRIGHTNESS #if CASELIGHT_USES_BRIGHTNESS

6
Marlin/src/feature/fwretract.cpp

@ -91,11 +91,7 @@ void FWRetract::reset() {
* Note: Auto-retract will apply the set Z hop in addition to any Z hop * Note: Auto-retract will apply the set Z hop in addition to any Z hop
* included in the G-code. Use M207 Z0 to to prevent double hop. * included in the G-code. Use M207 Z0 to to prevent double hop.
*/ */
void FWRetract::retract(const bool retracting void FWRetract::retract(const bool retracting OPTARG(HAS_MULTI_EXTRUDER, bool swapping/*=false*/)) {
#if HAS_MULTI_EXTRUDER
, bool swapping/*=false*/
#endif
) {
// Prevent two retracts or recovers in a row // Prevent two retracts or recovers in a row
if (retracted[active_extruder] == retracting) return; if (retracted[active_extruder] == retracting) return;

6
Marlin/src/feature/fwretract.h

@ -74,11 +74,7 @@ public:
#endif #endif
} }
static void retract(const bool retracting static void retract(const bool retracting OPTARG(HAS_MULTI_EXTRUDER, bool swapping = false));
#if HAS_MULTI_EXTRUDER
, bool swapping = false
#endif
);
static void M207(); static void M207();
static void M207_report(const bool forReplay=false); static void M207_report(const bool forReplay=false);

39
Marlin/src/feature/leds/leds.cpp

@ -47,9 +47,10 @@
#endif #endif
#if ENABLED(LED_COLOR_PRESETS) #if ENABLED(LED_COLOR_PRESETS)
const LEDColor LEDLights::defaultLEDColor = MakeLEDColor( const LEDColor LEDLights::defaultLEDColor = LEDColor(
LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE, LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE
LED_USER_PRESET_WHITE, LED_USER_PRESET_BRIGHTNESS OPTARG(HAS_WHITE_LED, LED_USER_PRESET_WHITE)
OPTARG(NEOPIXEL_LED, LED_USER_PRESET_BRIGHTNESS)
); );
#endif #endif
@ -75,36 +76,35 @@ void LEDLights::setup() {
} }
void LEDLights::set_color(const LEDColor &incol void LEDLights::set_color(const LEDColor &incol
#if ENABLED(NEOPIXEL_LED) OPTARG(NEOPIXEL_IS_SEQUENTIAL, bool isSequence/*=false*/)
, bool isSequence/*=false*/
#endif
) { ) {
#if ENABLED(NEOPIXEL_LED) #if ENABLED(NEOPIXEL_LED)
const uint32_t neocolor = LEDColorWhite() == incol const uint32_t neocolor = LEDColorWhite() == incol
? neo.Color(NEO_WHITE) ? neo.Color(NEO_WHITE)
: neo.Color(incol.r, incol.g, incol.b, incol.w); : neo.Color(incol.r, incol.g, incol.b OPTARG(HAS_WHITE_LED, incol.w));
static uint16_t nextLed = 0;
#ifdef NEOPIXEL_BKGD_LED_INDEX #if ENABLED(NEOPIXEL_IS_SEQUENTIAL)
if (NEOPIXEL_BKGD_LED_INDEX == nextLed) { static uint16_t nextLed = 0;
neo.set_color_background(); #ifdef NEOPIXEL_BKGD_INDEX_FIRST
if (++nextLed >= neo.pixels()) { while (WITHIN(nextLed, NEOPIXEL_BKGD_INDEX_FIRST, NEOPIXEL_BKGD_INDEX_LAST)) {
nextLed = 0; neo.reset_background_color();
return; if (++nextLed >= neo.pixels()) { nextLed = 0; return; }
}
} }
#endif #endif
#endif
neo.set_brightness(incol.i); neo.set_brightness(incol.i);
#if ENABLED(NEOPIXEL_IS_SEQUENTIAL)
if (isSequence) { if (isSequence) {
neo.set_pixel_color(nextLed, neocolor); neo.set_pixel_color(nextLed, neocolor);
neo.show(); neo.show();
if (++nextLed >= neo.pixels()) nextLed = 0; if (++nextLed >= neo.pixels()) nextLed = 0;
return; return;
} }
#endif
neo.set_color(neocolor); neo.set_color(neocolor);
@ -169,9 +169,10 @@ void LEDLights::set_color(const LEDColor &incol
#if ENABLED(NEOPIXEL2_SEPARATE) #if ENABLED(NEOPIXEL2_SEPARATE)
#if ENABLED(NEO2_COLOR_PRESETS) #if ENABLED(NEO2_COLOR_PRESETS)
const LEDColor LEDLights2::defaultLEDColor = MakeLEDColor( const LEDColor LEDLights2::defaultLEDColor = LEDColor(
NEO2_USER_PRESET_RED, NEO2_USER_PRESET_GREEN, NEO2_USER_PRESET_BLUE, LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE
NEO2_USER_PRESET_WHITE, NEO2_USER_PRESET_BRIGHTNESS OPTARG(HAS_WHITE_LED2, LED_USER_PRESET_WHITE)
OPTARG(NEOPIXEL_LED, LED_USER_PRESET_BRIGHTNESS)
); );
#endif #endif
@ -190,7 +191,7 @@ void LEDLights::set_color(const LEDColor &incol
void LEDLights2::set_color(const LEDColor &incol) { void LEDLights2::set_color(const LEDColor &incol) {
const uint32_t neocolor = LEDColorWhite() == incol const uint32_t neocolor = LEDColorWhite() == incol
? neo2.Color(NEO2_WHITE) ? neo2.Color(NEO2_WHITE)
: neo2.Color(incol.r, incol.g, incol.b, incol.w); : neo2.Color(incol.r, incol.g, incol.b OPTARG(HAS_WHITE_LED2, incol.w));
neo2.set_brightness(incol.i); neo2.set_brightness(incol.i);
neo2.set_color(neocolor); neo2.set_color(neocolor);

94
Marlin/src/feature/leds/leds.h

@ -29,60 +29,37 @@
#include <string.h> #include <string.h>
#if ENABLED(NEOPIXEL_LED)
#include "neopixel.h"
#endif
// A white component can be passed // A white component can be passed
#if ANY(RGBW_LED, NEOPIXEL_LED, PCA9632_RGBW) #if EITHER(RGBW_LED, PCA9632_RGBW)
#define HAS_WHITE_LED 1 #define HAS_WHITE_LED 1
#endif #endif
#if ENABLED(NEOPIXEL_LED)
#define _NEOPIXEL_INCLUDE_
#include "neopixel.h"
#undef _NEOPIXEL_INCLUDE_
#endif
/** /**
* LEDcolor type for use with leds.set_color * LEDcolor type for use with leds.set_color
*/ */
typedef struct LEDColor { typedef struct LEDColor {
uint8_t r, g, b uint8_t r, g, b
#if HAS_WHITE_LED OPTARG(HAS_WHITE_LED, w)
, w OPTARG(NEOPIXEL_LED, i)
#if ENABLED(NEOPIXEL_LED)
, i
#endif
#endif
; ;
LEDColor() : r(255), g(255), b(255) LEDColor() : r(255), g(255), b(255)
#if HAS_WHITE_LED OPTARG(HAS_WHITE_LED, w(255))
, w(255) OPTARG(NEOPIXEL_LED, i(NEOPIXEL_BRIGHTNESS))
#if ENABLED(NEOPIXEL_LED)
, i(NEOPIXEL_BRIGHTNESS)
#endif
#endif
{} {}
LEDColor(uint8_t r, uint8_t g, uint8_t b LEDColor(uint8_t r, uint8_t g, uint8_t b OPTARG(HAS_WHITE_LED, uint8_t w=0) OPTARG(NEOPIXEL_LED, uint8_t i=NEOPIXEL_BRIGHTNESS))
#if HAS_WHITE_LED : r(r), g(g), b(b) OPTARG(HAS_WHITE_LED, w(w)) OPTARG(NEOPIXEL_LED, i(i)) {}
, uint8_t w=0
#if ENABLED(NEOPIXEL_LED)
, uint8_t i=NEOPIXEL_BRIGHTNESS
#endif
#endif
) : r(r), g(g), b(b)
#if HAS_WHITE_LED
, w(w)
#if ENABLED(NEOPIXEL_LED)
, i(i)
#endif
#endif
{}
LEDColor(const uint8_t (&rgbw)[4]) : r(rgbw[0]), g(rgbw[1]), b(rgbw[2]) LEDColor(const uint8_t (&rgbw)[4]) : r(rgbw[0]), g(rgbw[1]), b(rgbw[2])
#if HAS_WHITE_LED OPTARG(HAS_WHITE_LED, w(rgbw[3]))
, w(rgbw[3]) OPTARG(NEOPIXEL_LED, i(NEOPIXEL_BRIGHTNESS))
#if ENABLED(NEOPIXEL_LED)
, i(NEOPIXEL_BRIGHTNESS)
#endif
#endif
{} {}
LEDColor& operator=(const uint8_t (&rgbw)[4]) { LEDColor& operator=(const uint8_t (&rgbw)[4]) {
@ -109,17 +86,8 @@ typedef struct LEDColor {
} LEDColor; } LEDColor;
/** /**
* Color helpers and presets * Color presets
*/ */
#if HAS_WHITE_LED
#if ENABLED(NEOPIXEL_LED)
#define MakeLEDColor(R,G,B,W,I) LEDColor(R, G, B, W, I)
#else
#define MakeLEDColor(R,G,B,W,I) LEDColor(R, G, B, W)
#endif
#else
#define MakeLEDColor(R,G,B,W,I) LEDColor(R, G, B)
#endif
#define LEDColorOff() LEDColor( 0, 0, 0) #define LEDColorOff() LEDColor( 0, 0, 0)
#define LEDColorRed() LEDColor(255, 0, 0) #define LEDColorRed() LEDColor(255, 0, 0)
@ -147,25 +115,15 @@ public:
static void setup(); // init() static void setup(); // init()
static void set_color(const LEDColor &color static void set_color(const LEDColor &color
#if ENABLED(NEOPIXEL_LED) OPTARG(NEOPIXEL_IS_SEQUENTIAL, bool isSequence=false)
, bool isSequence=false
#endif
); );
static inline void set_color(uint8_t r, uint8_t g, uint8_t b static inline void set_color(uint8_t r, uint8_t g, uint8_t b
#if HAS_WHITE_LED OPTARG(HAS_WHITE_LED, uint8_t w=0)
, uint8_t w=0 OPTARG(NEOPIXEL_LED, uint8_t i=NEOPIXEL_BRIGHTNESS)
#endif OPTARG(NEOPIXEL_IS_SEQUENTIAL, bool isSequence=false)
#if ENABLED(NEOPIXEL_LED)
, uint8_t i=NEOPIXEL_BRIGHTNESS
, bool isSequence=false
#endif
) { ) {
set_color(MakeLEDColor(r, g, b, w, i) set_color(LEDColor(r, g, b OPTARG(HAS_WHITE_LED, w) OPTARG(NEOPIXEL_LED, i)) OPTARG(NEOPIXEL_IS_SEQUENTIAL, isSequence));
#if ENABLED(NEOPIXEL_LED)
, isSequence
#endif
);
} }
static inline void set_off() { set_color(LEDColorOff()); } static inline void set_off() { set_color(LEDColorOff()); }
@ -223,8 +181,14 @@ extern LEDLights leds;
static void set_color(const LEDColor &color); static void set_color(const LEDColor &color);
inline void set_color(uint8_t r, uint8_t g, uint8_t b, uint8_t w=0, uint8_t i=NEOPIXEL2_BRIGHTNESS) { static inline void set_color(uint8_t r, uint8_t g, uint8_t b
set_color(MakeLEDColor(r, g, b, w, i)); OPTARG(HAS_WHITE_LED, uint8_t w=0)
OPTARG(NEOPIXEL_LED, uint8_t i=NEOPIXEL_BRIGHTNESS)
) {
set_color(LEDColor(r, g, b
OPTARG(HAS_WHITE_LED, w)
OPTARG(NEOPIXEL_LED, i)
));
} }
static inline void set_off() { set_color(LEDColorOff()); } static inline void set_off() { set_color(LEDColorOff()); }

74
Marlin/src/feature/leds/neopixel.cpp

@ -28,7 +28,7 @@
#if ENABLED(NEOPIXEL_LED) #if ENABLED(NEOPIXEL_LED)
#include "neopixel.h" #include "leds.h"
#if EITHER(NEOPIXEL_STARTUP_TEST, NEOPIXEL2_STARTUP_TEST) #if EITHER(NEOPIXEL_STARTUP_TEST, NEOPIXEL2_STARTUP_TEST)
#include "../../core/utility.h" #include "../../core/utility.h"
@ -37,17 +37,21 @@
Marlin_NeoPixel neo; Marlin_NeoPixel neo;
int8_t Marlin_NeoPixel::neoindex; int8_t Marlin_NeoPixel::neoindex;
Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800) Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800);
#if CONJOINED_NEOPIXEL #if CONJOINED_NEOPIXEL
, Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800) Adafruit_NeoPixel Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800);
#endif #endif
;
#ifdef NEOPIXEL_BKGD_LED_INDEX #ifdef NEOPIXEL_BKGD_INDEX_FIRST
void Marlin_NeoPixel::set_color_background() { void Marlin_NeoPixel::set_background_color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
uint8_t background_color[4] = NEOPIXEL_BKGD_COLOR; for (int background_led = NEOPIXEL_BKGD_INDEX_FIRST; background_led <= NEOPIXEL_BKGD_INDEX_LAST; background_led++)
set_pixel_color(NEOPIXEL_BKGD_LED_INDEX, adaneo1.Color(background_color[0], background_color[1], background_color[2], background_color[3])); set_pixel_color(background_led, adaneo1.Color(r, g, b, w));
}
void Marlin_NeoPixel::reset_background_color() {
constexpr uint8_t background_color[4] = NEOPIXEL_BKGD_COLOR;
set_background_color(background_color[0], background_color[1], background_color[2], background_color[3]);
} }
#endif #endif
@ -59,9 +63,10 @@ void Marlin_NeoPixel::set_color(const uint32_t color) {
} }
else { else {
for (uint16_t i = 0; i < pixels(); ++i) { for (uint16_t i = 0; i < pixels(); ++i) {
#ifdef NEOPIXEL_BKGD_LED_INDEX #ifdef NEOPIXEL_BKGD_INDEX_FIRST
if (i == NEOPIXEL_BKGD_LED_INDEX && TERN(NEOPIXEL_BKGD_ALWAYS_ON, true, color != 0x000000)) { if (i == NEOPIXEL_BKGD_INDEX_FIRST && TERN(NEOPIXEL_BKGD_ALWAYS_ON, true, color != 0x000000)) {
set_color_background(); reset_background_color();
i += NEOPIXEL_BKGD_INDEX_LAST - (NEOPIXEL_BKGD_INDEX_FIRST);
continue; continue;
} }
#endif #endif
@ -90,35 +95,22 @@ void Marlin_NeoPixel::init() {
safe_delay(500); safe_delay(500);
set_color_startup(adaneo1.Color(0, 0, 255, 0)); // blue set_color_startup(adaneo1.Color(0, 0, 255, 0)); // blue
safe_delay(500); safe_delay(500);
#if HAS_WHITE_LED
set_color_startup(adaneo1.Color(0, 0, 0, 255)); // white
safe_delay(500);
#endif #endif
#ifdef NEOPIXEL_BKGD_LED_INDEX
set_color_background();
#endif #endif
#if ENABLED(LED_USER_PRESET_STARTUP) #ifdef NEOPIXEL_BKGD_INDEX_FIRST
set_color(adaneo1.Color(LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE, LED_USER_PRESET_WHITE)); reset_background_color();
#else
set_color(adaneo1.Color(0, 0, 0, 0));
#endif #endif
}
#if 0 set_color(adaneo1.Color
bool Marlin_NeoPixel::set_led_color(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t w, const uint8_t p) { TERN(LED_USER_PRESET_STARTUP,
const uint32_t color = adaneo1.Color(r, g, b, w); (LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE, LED_USER_PRESET_WHITE),
set_brightness(p); (0, 0, 0, 0))
#if DISABLED(NEOPIXEL_IS_SEQUENTIAL) );
set_color(color);
return false;
#else
static uint16_t nextLed = 0;
set_pixel_color(nextLed, color);
show();
if (++nextLed >= pixels()) nextLed = 0;
return true;
#endif
} }
#endif
#if ENABLED(NEOPIXEL2_SEPARATE) #if ENABLED(NEOPIXEL2_SEPARATE)
@ -158,13 +150,17 @@ bool Marlin_NeoPixel::set_led_color(const uint8_t r, const uint8_t g, const uint
safe_delay(500); safe_delay(500);
set_color_startup(adaneo.Color(0, 0, 255, 0)); // blue set_color_startup(adaneo.Color(0, 0, 255, 0)); // blue
safe_delay(500); safe_delay(500);
#if HAS_WHITE_LED2
set_color_startup(adaneo.Color(0, 0, 0, 255)); // white
safe_delay(500);
#endif #endif
#if ENABLED(NEO2_USER_PRESET_STARTUP)
set_color(adaneo.Color(NEO2_USER_PRESET_RED, NEO2_USER_PRESET_GREEN, NEO2_USER_PRESET_BLUE, NEO2_USER_PRESET_WHITE));
#else
set_color(adaneo.Color(0, 0, 0, 0));
#endif #endif
set_color(adaneo.Color
TERN(NEO2_USER_PRESET_STARTUP,
(NEO2_USER_PRESET_RED, NEO2_USER_PRESET_GREEN, NEO2_USER_PRESET_BLUE, NEO2_USER_PRESET_WHITE),
(0, 0, 0, 0))
);
} }
#endif // NEOPIXEL2_SEPARATE #endif // NEOPIXEL2_SEPARATE

69
Marlin/src/feature/leds/neopixel.h

@ -25,6 +25,10 @@
* NeoPixel support * NeoPixel support
*/ */
#ifndef _NEOPIXEL_INCLUDE_
#error "Always include 'leds.h' and not 'neopixel.h' directly."
#endif
// ------------------------ // ------------------------
// Includes // Includes
// ------------------------ // ------------------------
@ -38,24 +42,24 @@
// Defines // Defines
// ------------------------ // ------------------------
#if defined(NEOPIXEL2_TYPE) && NEOPIXEL2_TYPE != NEOPIXEL_TYPE && DISABLED(NEOPIXEL2_SEPARATE) #define _NEO_IS_RGB(N) (N == NEO_RGB || N == NEO_RBG || N == NEO_GRB || N == NEO_GBR || N == NEO_BRG || N == NEO_BGR)
#define MULTIPLE_NEOPIXEL_TYPES 1
#endif
#if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES) #if !_NEO_IS_RGB(NEOPIXEL_TYPE)
#define CONJOINED_NEOPIXEL 1 #define HAS_WHITE_LED 1
#endif #endif
#if NEOPIXEL_TYPE == NEO_RGB || NEOPIXEL_TYPE == NEO_RBG || NEOPIXEL_TYPE == NEO_GRB || NEOPIXEL_TYPE == NEO_GBR || NEOPIXEL_TYPE == NEO_BRG || NEOPIXEL_TYPE == NEO_BGR #if HAS_WHITE_LED
#define NEOPIXEL_IS_RGB 1 #define NEO_WHITE 0, 0, 0, 255
#else #else
#define NEOPIXEL_IS_RGBW 1 #define NEO_WHITE 255, 255, 255
#endif #endif
#if NEOPIXEL_IS_RGB #if defined(NEOPIXEL2_TYPE) && NEOPIXEL2_TYPE != NEOPIXEL_TYPE && DISABLED(NEOPIXEL2_SEPARATE)
#define NEO_WHITE 255, 255, 255, 0 #define MULTIPLE_NEOPIXEL_TYPES 1
#else #endif
#define NEO_WHITE 0, 0, 0, 255
#if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
#define CONJOINED_NEOPIXEL 1
#endif #endif
// ------------------------ // ------------------------
@ -64,11 +68,10 @@
class Marlin_NeoPixel { class Marlin_NeoPixel {
private: private:
static Adafruit_NeoPixel adaneo1 static Adafruit_NeoPixel adaneo1;
#if CONJOINED_NEOPIXEL #if CONJOINED_NEOPIXEL
, adaneo2 static Adafruit_NeoPixel adaneo2;
#endif #endif
;
public: public:
static int8_t neoindex; static int8_t neoindex;
@ -78,8 +81,9 @@ public:
static void set_color(const uint32_t c); static void set_color(const uint32_t c);
#ifdef NEOPIXEL_BKGD_LED_INDEX #ifdef NEOPIXEL_BKGD_INDEX_FIRST
static void set_color_background(); static void set_background_color(uint8_t r, uint8_t g, uint8_t b, uint8_t w);
static void reset_background_color();
#endif #endif
static inline void begin() { static inline void begin() {
@ -93,9 +97,7 @@ public:
else adaneo1.setPixelColor(n, c); else adaneo1.setPixelColor(n, c);
#else #else
adaneo1.setPixelColor(n, c); adaneo1.setPixelColor(n, c);
#if MULTIPLE_NEOPIXEL_TYPES TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
adaneo2.setPixelColor(n, c);
#endif
#endif #endif
} }
@ -120,15 +122,13 @@ public:
TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT()); TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT());
} }
#if 0
bool set_led_color(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t w, const uint8_t p);
#endif
// Accessors // Accessors
static inline uint16_t pixels() { TERN(NEOPIXEL2_INSERIES, return adaneo1.numPixels() * 2, return adaneo1.numPixels()); } static inline uint16_t pixels() { return adaneo1.numPixels() * TERN1(NEOPIXEL2_INSERIES, 2); }
static inline uint8_t brightness() { return adaneo1.getBrightness(); } static inline uint8_t brightness() { return adaneo1.getBrightness(); }
static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
return adaneo1.Color(r, g, b, w); static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b OPTARG(HAS_WHITE_LED, uint8_t w)) {
return adaneo1.Color(r, g, b OPTARG(HAS_WHITE_LED, w));
} }
}; };
@ -137,15 +137,12 @@ extern Marlin_NeoPixel neo;
// Neo pixel channel 2 // Neo pixel channel 2
#if ENABLED(NEOPIXEL2_SEPARATE) #if ENABLED(NEOPIXEL2_SEPARATE)
#if NEOPIXEL2_TYPE == NEO_RGB || NEOPIXEL2_TYPE == NEO_RBG || NEOPIXEL2_TYPE == NEO_GRB || NEOPIXEL2_TYPE == NEO_GBR || NEOPIXEL2_TYPE == NEO_BRG || NEOPIXEL2_TYPE == NEO_BGR #if _NEO_IS_RGB(NEOPIXEL2_TYPE)
#define NEOPIXEL2_IS_RGB 1 #define NEOPIXEL2_IS_RGB 1
#define NEO2_WHITE 255, 255, 255
#else #else
#define NEOPIXEL2_IS_RGBW 1 #define NEOPIXEL2_IS_RGBW 1
#endif #define HAS_WHITE_LED2 1 // A white component can be passed for NEOPIXEL2
#if NEOPIXEL2_IS_RGB
#define NEO2_WHITE 255, 255, 255, 0
#else
#define NEO2_WHITE 0, 0, 0, 255 #define NEO2_WHITE 0, 0, 0, 255
#endif #endif
@ -172,11 +169,13 @@ extern Marlin_NeoPixel neo;
// Accessors // Accessors
static inline uint16_t pixels() { return adaneo.numPixels();} static inline uint16_t pixels() { return adaneo.numPixels();}
static inline uint8_t brightness() { return adaneo.getBrightness(); } static inline uint8_t brightness() { return adaneo.getBrightness(); }
static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) { static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b OPTARG(HAS_WHITE_LED2, uint8_t w)) {
return adaneo.Color(r, g, b, w); return adaneo.Color(r, g, b OPTARG(HAS_WHITE_LED2, w));
} }
}; };
extern Marlin_NeoPixel2 neo2; extern Marlin_NeoPixel2 neo2;
#endif // NEOPIXEL2_SEPARATE #endif // NEOPIXEL2_SEPARATE
#undef _NEO_IS_RGB

8
Marlin/src/feature/leds/pca9632.cpp

@ -93,9 +93,7 @@ static void PCA9632_WriteRegister(const byte addr, const byte regadd, const byte
} }
static void PCA9632_WriteAllRegisters(const byte addr, const byte regadd, const byte vr, const byte vg, const byte vb static void PCA9632_WriteAllRegisters(const byte addr, const byte regadd, const byte vr, const byte vg, const byte vb
#if ENABLED(PCA9632_RGBW) OPTARG(PCA9632_RGBW, const byte vw)
, const byte vw
#endif
) { ) {
#if DISABLED(PCA9632_NO_AUTO_INC) #if DISABLED(PCA9632_NO_AUTO_INC)
uint8_t data[4]; uint8_t data[4];
@ -143,9 +141,7 @@ void PCA9632_set_led_color(const LEDColor &color) {
; ;
PCA9632_WriteAllRegisters(PCA9632_ADDRESS,PCA9632_PWM0, color.r, color.g, color.b PCA9632_WriteAllRegisters(PCA9632_ADDRESS,PCA9632_PWM0, color.r, color.g, color.b
#if ENABLED(PCA9632_RGBW) OPTARG(PCA9632_RGBW, color.w)
, color.w
#endif
); );
PCA9632_WriteRegister(PCA9632_ADDRESS,PCA9632_LEDOUT, LEDOUT); PCA9632_WriteRegister(PCA9632_ADDRESS,PCA9632_LEDOUT, LEDOUT);
} }

8
Marlin/src/feature/leds/printer_event_leds.cpp

@ -45,12 +45,10 @@ PrinterEventLEDs printerEventLEDs;
return (uint8_t)map(constrain(current, start, target), start, target, 0, 255); return (uint8_t)map(constrain(current, start, target), start, target, 0, 255);
} }
inline void pel_set_rgb(const uint8_t r, const uint8_t g, const uint8_t b) { inline void pel_set_rgb(const uint8_t r, const uint8_t g, const uint8_t b OPTARG(HAS_WHITE_LED, const uint8_t w=0)) {
leds.set_color( leds.set_color(
MakeLEDColor(r, g, b, 0, neo.brightness()) LEDColor(r, g, b OPTARG(HAS_WHITE_LED, w) OPTARG(NEOPIXEL_LED, neo.brightness()))
#if ENABLED(NEOPIXEL_IS_SEQUENTIAL) OPTARG(NEOPIXEL_IS_SEQUENTIAL, true)
, true
#endif
); );
} }

12
Marlin/src/feature/tmc_util.h

@ -70,15 +70,9 @@ class TMCStorage {
} }
struct { struct {
#if ENABLED(HAS_STEALTHCHOP) OPTCODE(HAS_STEALTHCHOP, bool stealthChop_enabled = false)
bool stealthChop_enabled = false; OPTCODE(HYBRID_THRESHOLD, uint8_t hybrid_thrs = 0)
#endif OPTCODE(USE_SENSORLESS, int16_t homing_thrs = 0)
#if ENABLED(HYBRID_THRESHOLD)
uint8_t hybrid_thrs = 0;
#endif
#if ENABLED(USE_SENSORLESS)
int16_t homing_thrs = 0;
#endif
} stored; } stored;
}; };

15
Marlin/src/gcode/bedlevel/G26.cpp

@ -330,12 +330,8 @@ typedef struct {
thermalManager.setTargetBed(bed_temp); thermalManager.setTargetBed(bed_temp);
// Wait for the temperature to stabilize // Wait for the temperature to stabilize
if (!thermalManager.wait_for_bed(true if (!thermalManager.wait_for_bed(true OPTARG(G26_CLICK_CAN_CANCEL, true)))
#if G26_CLICK_CAN_CANCEL return G26_ERR;
, true
#endif
)
) return G26_ERR;
} }
#else #else
@ -352,11 +348,8 @@ typedef struct {
thermalManager.setTargetHotend(hotend_temp, active_extruder); thermalManager.setTargetHotend(hotend_temp, active_extruder);
// Wait for the temperature to stabilize // Wait for the temperature to stabilize
if (!thermalManager.wait_for_hotend(active_extruder, true if (!thermalManager.wait_for_hotend(active_extruder, true OPTARG(G26_CLICK_CAN_CANCEL, true)))
#if G26_CLICK_CAN_CANCEL return G26_ERR;
, true
#endif
)) return G26_ERR;
#if HAS_WIRED_LCD #if HAS_WIRED_LCD
ui.reset_status(); ui.reset_status();

8
Marlin/src/gcode/feature/leds/M150.cpp

@ -66,12 +66,12 @@ void GcodeSuite::M150() {
#endif #endif
#endif #endif
const LEDColor color = MakeLEDColor( const LEDColor color = LEDColor(
parser.seen('R') ? (parser.has_value() ? parser.value_byte() : 255) : 0, parser.seen('R') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
parser.seen('U') ? (parser.has_value() ? parser.value_byte() : 255) : 0, parser.seen('U') ? (parser.has_value() ? parser.value_byte() : 255) : 0,
parser.seen('B') ? (parser.has_value() ? parser.value_byte() : 255) : 0, parser.seen('B') ? (parser.has_value() ? parser.value_byte() : 255) : 0
parser.seen('W') ? (parser.has_value() ? parser.value_byte() : 255) : 0, OPTARG(HAS_WHITE_LED, parser.seen('W') ? (parser.has_value() ? parser.value_byte() : 255) : 0)
parser.seen('P') ? (parser.has_value() ? parser.value_byte() : 255) : brightness OPTARG(NEOPIXEL_LED, parser.seen('P') ? (parser.has_value() ? parser.value_byte() : 255) : brightness)
); );
#if ENABLED(NEOPIXEL2_SEPARATE) #if ENABLED(NEOPIXEL2_SEPARATE)

4
Marlin/src/gcode/gcode.h

@ -678,7 +678,11 @@ private:
static void M114(); static void M114();
static void M115(); static void M115();
#if HAS_STATUS_MESSAGE
static void M117(); static void M117();
#endif
static void M118(); static void M118();
static void M119(); static void M119();
static void M120(); static void M120();

3
Marlin/src/gcode/host/M115.cpp

@ -119,6 +119,9 @@ void GcodeSuite::M115() {
// EMERGENCY_PARSER (M108, M112, M410, M876) // EMERGENCY_PARSER (M108, M112, M410, M876)
cap_line(PSTR("EMERGENCY_PARSER"), ENABLED(EMERGENCY_PARSER)); cap_line(PSTR("EMERGENCY_PARSER"), ENABLED(EMERGENCY_PARSER));
// HOST ACTION COMMANDS (paused, resume, resumed, cancel, etc.)
cap_line(PSTR("HOST_ACTION_COMMANDS"), ENABLED(HOST_ACTION_COMMANDS));
// PROMPT SUPPORT (M876) // PROMPT SUPPORT (M876)
cap_line(PSTR("PROMPT_SUPPORT"), ENABLED(HOST_PROMPT_SUPPORT)); cap_line(PSTR("PROMPT_SUPPORT"), ENABLED(HOST_PROMPT_SUPPORT));

6
Marlin/src/gcode/lcd/M117.cpp

@ -20,6 +20,10 @@
* *
*/ */
#include "../../inc/MarlinConfig.h"
#if HAS_STATUS_MESSAGE
#include "../gcode.h" #include "../gcode.h"
#include "../../lcd/marlinui.h" #include "../../lcd/marlinui.h"
@ -34,3 +38,5 @@ void GcodeSuite::M117() {
ui.reset_status(); ui.reset_status();
} }
#endif // HAS_STATUS_MESSAGE

8
Marlin/src/gcode/motion/G2_G3.cpp

@ -249,9 +249,7 @@ void plan_arc(
#endif #endif
if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, 0 if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, 0
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
)) break; )) break;
} }
@ -266,9 +264,7 @@ void plan_arc(
#endif #endif
planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, 0 planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, 0
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
); );
TERN_(AUTO_BED_LEVELING_UBL, raw[l_axis] = start_L); TERN_(AUTO_BED_LEVELING_UBL, raw[l_axis] = start_L);

8
Marlin/src/gcode/queue.cpp

@ -84,9 +84,7 @@ char GCodeQueue::injected_commands[64]; // = { 0 }
void GCodeQueue::RingBuffer::commit_command(bool skip_ok void GCodeQueue::RingBuffer::commit_command(bool skip_ok
#if HAS_MULTI_SERIAL OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind/*=-1*/)
, serial_index_t serial_ind/*=-1*/
#endif
) { ) {
commands[index_w].skip_ok = skip_ok; commands[index_w].skip_ok = skip_ok;
TERN_(HAS_MULTI_SERIAL, commands[index_w].port = serial_ind); TERN_(HAS_MULTI_SERIAL, commands[index_w].port = serial_ind);
@ -100,9 +98,7 @@ void GCodeQueue::RingBuffer::commit_command(bool skip_ok
* Return false for a full buffer, or if the 'command' is a comment. * Return false for a full buffer, or if the 'command' is a comment.
*/ */
bool GCodeQueue::RingBuffer::enqueue(const char *cmd, bool skip_ok/*=true*/ bool GCodeQueue::RingBuffer::enqueue(const char *cmd, bool skip_ok/*=true*/
#if HAS_MULTI_SERIAL OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind/*=-1*/)
, serial_index_t serial_ind/*=-1*/
#endif
) { ) {
if (*cmd == ';' || length >= BUFSIZE) return false; if (*cmd == ';' || length >= BUFSIZE) return false;
strcpy(commands[index_w].buffer, cmd); strcpy(commands[index_w].buffer, cmd);

8
Marlin/src/gcode/queue.h

@ -83,15 +83,11 @@ public:
void advance_pos(uint8_t &p, const int inc) { if (++p >= BUFSIZE) p = 0; length += inc; } void advance_pos(uint8_t &p, const int inc) { if (++p >= BUFSIZE) p = 0; length += inc; }
void commit_command(bool skip_ok void commit_command(bool skip_ok
#if HAS_MULTI_SERIAL OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t())
, serial_index_t serial_ind = serial_index_t()
#endif
); );
bool enqueue(const char *cmd, bool skip_ok = true bool enqueue(const char *cmd, bool skip_ok = true
#if HAS_MULTI_SERIAL OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t())
, serial_index_t serial_ind = serial_index_t()
#endif
); );
void ok_to_send(); void ok_to_send();

2
Marlin/src/gcode/temp/M104_M109.cpp

@ -125,10 +125,8 @@ void GcodeSuite::M104_M109(const bool isM109) {
thermalManager.auto_job_check_timer(isM109, true); thermalManager.auto_job_check_timer(isM109, true);
#endif #endif
#if HAS_STATUS_MESSAGE
if (thermalManager.isHeatingHotend(target_extruder) || !no_wait_for_cooling) if (thermalManager.isHeatingHotend(target_extruder) || !no_wait_for_cooling)
thermalManager.set_heating_message(target_extruder); thermalManager.set_heating_message(target_extruder);
#endif
} }
TERN_(AUTOTEMP, planner.autotemp_M104_M109()); TERN_(AUTOTEMP, planner.autotemp_M104_M109());

7
Marlin/src/inc/Conditionals_LCD.h

@ -1303,3 +1303,10 @@
#else #else
#define COORDINATE_OKAY(N,L,H) true #define COORDINATE_OKAY(N,L,H) true
#endif #endif
/**
* LED Backlight INDEX END
*/
#if defined(NEOPIXEL_BKGD_INDEX_FIRST) && !defined(NEOPIXEL_BKGD_INDEX_LAST)
#define NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_INDEX_FIRST
#endif

4
Marlin/src/inc/SanityCheck.h

@ -562,6 +562,8 @@
#error "CUSTOM_USER_MENUS has been replaced by CUSTOM_MENU_MAIN and CUSTOM_MENU_CONFIG." #error "CUSTOM_USER_MENUS has been replaced by CUSTOM_MENU_MAIN and CUSTOM_MENU_CONFIG."
#elif defined(MKS_LCD12864) #elif defined(MKS_LCD12864)
#error "MKS_LCD12864 is now MKS_LCD12864A or MKS_LCD12864B." #error "MKS_LCD12864 is now MKS_LCD12864A or MKS_LCD12864B."
#elif defined(NEOPIXEL_BKGD_LED_INDEX)
#error "NEOPIXEL_BKGD_LED_INDEX is now NEOPIXEL_BKGD_INDEX_FIRST."
#endif #endif
/** /**
@ -1582,6 +1584,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#error "LCD_BED_LEVELING requires a programmable LCD controller." #error "LCD_BED_LEVELING requires a programmable LCD controller."
#elif !(ENABLED(MESH_BED_LEVELING) || HAS_ABL_NOT_UBL) #elif !(ENABLED(MESH_BED_LEVELING) || HAS_ABL_NOT_UBL)
#error "LCD_BED_LEVELING requires MESH_BED_LEVELING or AUTO_BED_LEVELING." #error "LCD_BED_LEVELING requires MESH_BED_LEVELING or AUTO_BED_LEVELING."
#elif ENABLED(MESH_EDIT_MENU) && !HAS_MESH
#error "MESH_EDIT_MENU requires MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
#endif #endif
#endif #endif

4
Marlin/src/inc/Version.h

@ -25,7 +25,7 @@
* Release version. Leave the Marlin version or apply a custom scheme. * Release version. Leave the Marlin version or apply a custom scheme.
*/ */
#ifndef SHORT_BUILD_VERSION #ifndef SHORT_BUILD_VERSION
#define SHORT_BUILD_VERSION "2.0.8.1" #define SHORT_BUILD_VERSION "2.0.8.2"
#endif #endif
/** /**
@ -42,7 +42,7 @@
* version was tagged. * version was tagged.
*/ */
#ifndef STRING_DISTRIBUTION_DATE #ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2021-05-15" #define STRING_DISTRIBUTION_DATE "2021-05-29"
#endif #endif
/** /**

318
Marlin/src/lcd/language/language_pl.h

@ -26,6 +26,13 @@
* *
* LCD Menu Messages * LCD Menu Messages
* See also https://marlinfw.org/docs/development/lcd_language.html * See also https://marlinfw.org/docs/development/lcd_language.html
*
* Substitutions are applied for the following characters when used
* in menu items that call lcd_put_u8str_ind_P with an index:
*
* = displays '0'....'10' for indexes 0 - 10
* ~ displays '1'....'11' for indexes 0 - 10
* * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
*/ */
#define DISPLAY_CHARSET_ISO10646_PL #define DISPLAY_CHARSET_ISO10646_PL
@ -34,9 +41,10 @@ namespace Language_pl {
using namespace Language_en; // Inherit undefined strings from English using namespace Language_en; // Inherit undefined strings from English
constexpr uint8_t CHARSIZE = 2; constexpr uint8_t CHARSIZE = 2;
PROGMEM Language_Str LANGUAGE = _UxGT("Polish"); PROGMEM Language_Str LANGUAGE = _UxGT("Polski");
PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" gotowy."); PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" gotowy.");
//PROGMEM Language_Str MSG_MARLIN = _UxGT("Marlin");
PROGMEM Language_Str MSG_YES = _UxGT("TAK"); PROGMEM Language_Str MSG_YES = _UxGT("TAK");
PROGMEM Language_Str MSG_NO = _UxGT("NIE"); PROGMEM Language_Str MSG_NO = _UxGT("NIE");
PROGMEM Language_Str MSG_BACK = _UxGT("Wstecz"); PROGMEM Language_Str MSG_BACK = _UxGT("Wstecz");
@ -44,9 +52,11 @@ namespace Language_pl {
PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Karta włożona"); PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Karta włożona");
PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Karta usunięta"); PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Karta usunięta");
PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Oczekiwanie na kartę"); PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Oczekiwanie na kartę");
PROGMEM Language_Str MSG_SD_INIT_FAIL = _UxGT("Błąd inicializacji karty");
PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Bład odczytu karty"); PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Bład odczytu karty");
PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("Urządzenie USB usunięte"); PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("Urządzenie USB usunięte");
PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Błąd uruchomienia USB"); PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Błąd uruchomienia USB");
//PROGMEM Language_Str MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow");
PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Krańców."); // Max length 8 characters PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Krańców."); // Max length 8 characters
PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Progr. Krańcówki"); PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Progr. Krańcówki");
PROGMEM Language_Str MSG_MAIN = _UxGT("Menu główne"); PROGMEM Language_Str MSG_MAIN = _UxGT("Menu główne");
@ -61,14 +71,24 @@ namespace Language_pl {
PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Zeruj Y"); PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Zeruj Y");
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Zeruj Z"); PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Zeruj Z");
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Autowyrównanie Z"); PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Autowyrównanie Z");
//PROGMEM Language_Str MSG_ITERATION = _UxGT("G34 Iteration: %i");
PROGMEM Language_Str MSG_DECREASING_ACCURACY = _UxGT("Spadek dokładności!");
PROGMEM Language_Str MSG_ACCURACY_ACHIEVED = _UxGT("Osiągnięto dokładność");
PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Pozycja zerowa"); PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Pozycja zerowa");
PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknij by rozp."); PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknij by rozp.");
PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Następny punkt"); PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Następny punkt");
PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Wypoziomowano!"); PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Wypoziomowano!");
PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Wys. zanikania"); PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Wys. zanikania");
PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ust. poz. zer."); PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ust. poz. zer.");
//PROGMEM Language_Str MSG_HOME_OFFSET_X = _UxGT("Home Offset X");
//PROGMEM Language_Str MSG_HOME_OFFSET_Y = _UxGT("Home Offset Y");
//PROGMEM Language_Str MSG_HOME_OFFSET_Z = _UxGT("Home Offset Z");
PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust."); PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust.");
PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ustaw punkt zero"); PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ustaw punkt zero");
//PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
//PROGMEM Language_Str MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard");
PROGMEM Language_Str MSG_SELECT_ORIGIN = _UxGT("Wybierz punkt zero");
PROGMEM Language_Str MSG_LAST_VALUE_SP = _UxGT("Poprzednia wartość ");
#if PREHEAT_COUNT #if PREHEAT_COUNT
PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL; PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~"; PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~";
@ -88,10 +108,21 @@ namespace Language_pl {
#endif #endif
PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Rozgrzej własne ust."); PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Rozgrzej własne ust.");
PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Chłodzenie"); PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Chłodzenie");
PROGMEM Language_Str MSG_CUTTER_FREQUENCY = _UxGT("Częstotliwość");
PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Sterowanie Lasera"); PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Sterowanie Lasera");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Zasilanie Lasera");
PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Sterowanie wrzeciona"); PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Sterowanie wrzeciona");
PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Zasilanie Lasera");
PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Zasilanie wrzeciona"); PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Zasilanie wrzeciona");
//PROGMEM Language_Str MSG_LASER_TOGGLE = _UxGT("Toggle Laser");
//PROGMEM Language_Str MSG_LASER_EVAC_TOGGLE = _UxGT("Toggle Blower");
//PROGMEM Language_Str MSG_LASER_ASSIST_TOGGLE = _UxGT("Air Assist");
//PROGMEM Language_Str MSG_LASER_PULSE_MS = _UxGT("Test Pulse ms");
//PROGMEM Language_Str MSG_LASER_FIRE_PULSE = _UxGT("Fire Pulse");
//PROGMEM Language_Str MSG_FLOWMETER_FAULT = _UxGT("Coolant Flow Fault");
//PROGMEM Language_Str MSG_SPINDLE_TOGGLE = _UxGT("Toggle Spindle");
//PROGMEM Language_Str MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Toggle Vacuum");
//PROGMEM Language_Str MSG_SPINDLE_FORWARD = _UxGT("Spindle Forward");
PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Rewers wrzeciona"); PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Rewers wrzeciona");
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Włącz zasilacz"); PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Włącz zasilacz");
PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Wyłącz zasilacz"); PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Wyłącz zasilacz");
@ -101,6 +132,10 @@ namespace Language_pl {
PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Poziomowanie stołu"); PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Poziomowanie stołu");
PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Wypoziomuj stół"); PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Wypoziomuj stół");
PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Narożniki poziomowania"); PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Narożniki poziomowania");
//PROGMEM Language_Str MSG_LEVEL_CORNERS_RAISE = _UxGT("Raise Bed Until Probe Triggered");
//PROGMEM Language_Str MSG_LEVEL_CORNERS_IN_RANGE = _UxGT("All Corners Within Tolerance. Level Bed");
//PROGMEM Language_Str MSG_LEVEL_CORNERS_GOOD_POINTS = _UxGT("Good Points: ");
//PROGMEM Language_Str MSG_LEVEL_CORNERS_LAST_Z = _UxGT("Last Z: ");
PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Nastepny narożnik"); PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Nastepny narożnik");
PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Edytor siatki"); PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Edytor siatki");
PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Edycja siatki"); PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Edycja siatki");
@ -112,6 +147,7 @@ namespace Language_pl {
PROGMEM Language_Str MSG_CUSTOM_COMMANDS = _UxGT("Własne Polecenia"); PROGMEM Language_Str MSG_CUSTOM_COMMANDS = _UxGT("Własne Polecenia");
PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Test sondy"); PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Test sondy");
PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Punky"); PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Punky");
//PROGMEM Language_Str MSG_M48_OUT_OF_BOUNDS = _UxGT("Probe out of bounds");
PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Odchylenie"); PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Odchylenie");
PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Tryb IDEX"); PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Tryb IDEX");
PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Przesunięcie narzędzia"); PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Przesunięcie narzędzia");
@ -119,14 +155,16 @@ namespace Language_pl {
PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikowanie"); PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikowanie");
PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Kopia lustrzana"); PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Kopia lustrzana");
PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pełne sterowanie"); PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pełne sterowanie");
//PROGMEM Language_Str MSG_IDEX_DUPE_GAP = _UxGT("Duplicate X-Gap");
PROGMEM Language_Str MSG_HOTEND_OFFSET_X = _UxGT("2ga dysza X"); PROGMEM Language_Str MSG_HOTEND_OFFSET_X = _UxGT("2ga dysza X");
PROGMEM Language_Str MSG_HOTEND_OFFSET_Y = _UxGT("2ga dysza Y"); PROGMEM Language_Str MSG_HOTEND_OFFSET_Y = _UxGT("2ga dysza Y");
PROGMEM Language_Str MSG_HOTEND_OFFSET_Z = _UxGT("2ga dysza Z"); PROGMEM Language_Str MSG_HOTEND_OFFSET_Z = _UxGT("2ga dysza Z");
PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Wykonywanie G29"); PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Wykonywanie G29");
PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Narzędzia UBL"); PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Narzędzia UBL");
PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling"); //PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Punkt pochylenia"); PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Punkt pochylenia");
PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Ręczne Budowanie Siatki"); PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Ręczne Budowanie Siatki");
//PROGMEM Language_Str MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Wizard");
PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Umieść podkładkę i zmierz"); PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Umieść podkładkę i zmierz");
PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Zmierz"); PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Zmierz");
PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Usuń & Zmierz Stół"); PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Usuń & Zmierz Stół");
@ -143,14 +181,12 @@ namespace Language_pl {
PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec edycji siati"); PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec edycji siati");
PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Buduj własna siatkę"); PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Buduj własna siatkę");
PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Buduj siatkę"); PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Buduj siatkę");
#if PREHEAT_COUNT
PROGMEM Language_Str MSG_UBL_BUILD_MESH_M = _UxGT("Buduj siatkę ($)"); PROGMEM Language_Str MSG_UBL_BUILD_MESH_M = _UxGT("Buduj siatkę ($)");
PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M = _UxGT("Sprawdzenie siatki ($)");
#endif
PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Buduj siatkę na zimno"); PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Buduj siatkę na zimno");
PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Dostrojenie wysokości siatki"); PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Dostrojenie wysokości siatki");
PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Wartość wysokości"); PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Wartość wysokości");
PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sprawdzenie siatki"); PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sprawdzenie siatki");
PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M = _UxGT("Sprawdzenie siatki ($)");
PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Sprawdzenie własnej siatki"); PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Sprawdzenie własnej siatki");
PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 Nagrzewanie stołu"); PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 Nagrzewanie stołu");
PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Nagrzewanie dyszy"); PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Nagrzewanie dyszy");
@ -211,6 +247,10 @@ namespace Language_pl {
PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Fioletowy"); PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Fioletowy");
PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Biały"); PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Biały");
PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Domyślny"); PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Domyślny");
PROGMEM Language_Str MSG_LED_CHANNEL_N = _UxGT("Kanał =");
//PROGMEM Language_Str MSG_LEDS2 = _UxGT("Lights #2");
//PROGMEM Language_Str MSG_NEO2_PRESETS = _UxGT("Light #2 Presets");
PROGMEM Language_Str MSG_NEO2_BRIGHTNESS = _UxGT("Jasność");
PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Własne światła"); PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Własne światła");
PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Czerwony"); PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Czerwony");
PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Zielony"); PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Zielony");
@ -230,27 +270,56 @@ namespace Language_pl {
PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Przesuń co .1 mm"); PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Przesuń co .1 mm");
PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Przesuń co 1 mm"); PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Przesuń co 1 mm");
PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Przesuń co 10 mm"); PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Przesuń co 10 mm");
PROGMEM Language_Str MSG_MOVE_0001IN = _UxGT("Przesuń co 0.001 cala");
PROGMEM Language_Str MSG_MOVE_001IN = _UxGT("Przesuń co 0.01 cala");
PROGMEM Language_Str MSG_MOVE_01IN = _UxGT("Przesuń co 0.1 cala");
PROGMEM Language_Str MSG_SPEED = _UxGT("Predkość"); PROGMEM Language_Str MSG_SPEED = _UxGT("Predkość");
PROGMEM Language_Str MSG_BED_Z = _UxGT("Stół Z"); PROGMEM Language_Str MSG_BED_Z = _UxGT("Stół Z");
PROGMEM Language_Str MSG_NOZZLE = _UxGT("Dysza"); PROGMEM Language_Str MSG_NOZZLE = _UxGT("Dysza");
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Dysza ~"); PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Dysza ~");
//PROGMEM Language_Str MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked");
PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Dysza w oczekiwaniu");
PROGMEM Language_Str MSG_BED = _UxGT("Stół"); PROGMEM Language_Str MSG_BED = _UxGT("Stół");
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Obudowa"); PROGMEM Language_Str MSG_CHAMBER = _UxGT("Obudowa");
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Obroty wiatraka"); //PROGMEM Language_Str MSG_COOLER = _UxGT("Laser Coolant");
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Obroty wiatraka ~"); //PROGMEM Language_Str MSG_COOLER_TOGGLE = _UxGT("Toggle Cooler");
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Obroty dodatkowego wiatraka"); //PROGMEM Language_Str MSG_FLOWMETER_SAFETY = _UxGT("Flow Safety");
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wiatraka ~"); //PROGMEM Language_Str MSG_LASER = _UxGT("Laser");
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Obroty wentylatora");
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Obroty wentylatora ~");
//PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Stored Fan ~");
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Obroty dodatkowego wentylatora");
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wentylatora ~");
PROGMEM Language_Str MSG_CONTROLLER_FAN = _UxGT("Wentylator kontrolera");
//PROGMEM Language_Str MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Idle Speed");
//PROGMEM Language_Str MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto Mode");
//PROGMEM Language_Str MSG_CONTROLLER_FAN_SPEED = _UxGT("Active Speed");
//PROGMEM Language_Str MSG_CONTROLLER_FAN_DURATION = _UxGT("Idle Period");
PROGMEM Language_Str MSG_FLOW = _UxGT("Przepływ"); PROGMEM Language_Str MSG_FLOW = _UxGT("Przepływ");
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Przepływ ~"); PROGMEM Language_Str MSG_FLOW_N = _UxGT("Przepływ ~");
PROGMEM Language_Str MSG_CONTROL = _UxGT("Ustawienia"); PROGMEM Language_Str MSG_CONTROL = _UxGT("Ustawienia");
PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); //PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); //PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik"); PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik");
PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto. temperatura"); PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto. temperatura");
PROGMEM Language_Str MSG_LCD_ON = _UxGT("Wł."); PROGMEM Language_Str MSG_LCD_ON = _UxGT("Wł.");
PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Wył."); PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Wył.");
PROGMEM Language_Str MSG_PID_AUTOTUNE = _UxGT("PID Autostrojenie"); PROGMEM Language_Str MSG_PID_AUTOTUNE = _UxGT("PID Autostrojenie");
PROGMEM Language_Str MSG_PID_AUTOTUNE_E = _UxGT("PID Autostrojenie *"); PROGMEM Language_Str MSG_PID_AUTOTUNE_E = _UxGT("PID Autostrojenie *");
PROGMEM Language_Str MSG_PID_AUTOTUNE_DONE = _UxGT("Strojenie PID zakończone");
//PROGMEM Language_Str MSG_PID_BAD_EXTRUDER_NUM = _UxGT("Autotune failed. Bad extruder.");
//PROGMEM Language_Str MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed. Temperature too high.");
//PROGMEM Language_Str MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout.");
//PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
//PROGMEM Language_Str MSG_PID_P_E = _UxGT("PID-P *");
//PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
//PROGMEM Language_Str MSG_PID_I_E = _UxGT("PID-I *");
//PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
//PROGMEM Language_Str MSG_PID_D_E = _UxGT("PID-D *");
//PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
//PROGMEM Language_Str MSG_PID_C_E = _UxGT("PID-C *");
//PROGMEM Language_Str MSG_PID_F = _UxGT("PID-F");
//PROGMEM Language_Str MSG_PID_F_E = _UxGT("PID-F *");
PROGMEM Language_Str MSG_SELECT = _UxGT("Wybierz"); PROGMEM Language_Str MSG_SELECT = _UxGT("Wybierz");
PROGMEM Language_Str MSG_SELECT_E = _UxGT("Wybierz *"); PROGMEM Language_Str MSG_SELECT_E = _UxGT("Wybierz *");
PROGMEM Language_Str MSG_ACC = _UxGT("Przyspieszenie"); PROGMEM Language_Str MSG_ACC = _UxGT("Przyspieszenie");
@ -259,61 +328,83 @@ namespace Language_pl {
PROGMEM Language_Str MSG_VB_JERK = _UxGT("Zryw V") LCD_STR_B; PROGMEM Language_Str MSG_VB_JERK = _UxGT("Zryw V") LCD_STR_B;
PROGMEM Language_Str MSG_VC_JERK = _UxGT("Zryw V") LCD_STR_C; PROGMEM Language_Str MSG_VC_JERK = _UxGT("Zryw V") LCD_STR_C;
PROGMEM Language_Str MSG_VE_JERK = _UxGT("Zryw Ve"); PROGMEM Language_Str MSG_VE_JERK = _UxGT("Zryw Ve");
PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); //PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev");
PROGMEM Language_Str MSG_VELOCITY = _UxGT("Prędkość (V)"); PROGMEM Language_Str MSG_VELOCITY = _UxGT("Prędkość (V)");
PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vmax ") LCD_STR_A; //PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vmax ") LCD_STR_A;
PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vmax ") LCD_STR_B; //PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vmax ") LCD_STR_B;
PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vmax ") LCD_STR_C; //PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vmax ") LCD_STR_C;
PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vmax ") LCD_STR_E; //PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vmax ") LCD_STR_E;
PROGMEM Language_Str MSG_VMAX_EN = _UxGT("Vmax *"); //PROGMEM Language_Str MSG_VMAX_EN = _UxGT("Vmax *");
PROGMEM Language_Str MSG_VMIN = _UxGT("Vmin"); //PROGMEM Language_Str MSG_VMIN = _UxGT("Vmin");
PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vskok min"); PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vskok min");
PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Przyspieszenie (A)"); PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Przyspieszenie (A)");
PROGMEM Language_Str MSG_AMAX_A = _UxGT("Amax ") LCD_STR_A; //PROGMEM Language_Str MSG_AMAX_A = _UxGT("Amax ") LCD_STR_A;
PROGMEM Language_Str MSG_AMAX_B = _UxGT("Amax ") LCD_STR_B; //PROGMEM Language_Str MSG_AMAX_B = _UxGT("Amax ") LCD_STR_B;
PROGMEM Language_Str MSG_AMAX_C = _UxGT("Amax ") LCD_STR_C; //PROGMEM Language_Str MSG_AMAX_C = _UxGT("Amax ") LCD_STR_C;
PROGMEM Language_Str MSG_AMAX_E = _UxGT("Amax ") LCD_STR_E; //PROGMEM Language_Str MSG_AMAX_E = _UxGT("Amax ") LCD_STR_E;
PROGMEM Language_Str MSG_AMAX_EN = _UxGT("Amax *"); //PROGMEM Language_Str MSG_AMAX_EN = _UxGT("Amax *");
PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-wycofanie"); PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-wycofanie");
PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-przesuń."); PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-przesuń.");
PROGMEM Language_Str MSG_XY_FREQUENCY_LIMIT = _UxGT("Częstotliwość max");
//PROGMEM Language_Str MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Feed min");
PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("kroki/mm"); PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("kroki/mm");
PROGMEM Language_Str MSG_A_STEPS = _UxGT("kroki") LCD_STR_A _UxGT("/mm"); PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" kroki/mm");
PROGMEM Language_Str MSG_B_STEPS = _UxGT("kroki") LCD_STR_B _UxGT("/mm"); PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" kroki/mm");
PROGMEM Language_Str MSG_C_STEPS = _UxGT("kroki") LCD_STR_C _UxGT("/mm"); PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" kroki/mm");
PROGMEM Language_Str MSG_E_STEPS = _UxGT("krokiE/mm"); PROGMEM Language_Str MSG_E_STEPS = _UxGT("E kroki/mm");
PROGMEM Language_Str MSG_EN_STEPS = _UxGT("kroki */mm"); PROGMEM Language_Str MSG_EN_STEPS = _UxGT("* kroki/mm");
PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura"); PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
PROGMEM Language_Str MSG_MOTION = _UxGT("Ruch"); PROGMEM Language_Str MSG_MOTION = _UxGT("Ruch");
PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament"); //PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E w mm") SUPERSCRIPT_THREE; PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E w mm") SUPERSCRIPT_THREE;
//PROGMEM Language_Str MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE;
//PROGMEM Language_Str MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *");
PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Śr. fil."); PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Śr. fil.");
PROGMEM Language_Str MSG_FILAMENT_DIAM_E = _UxGT("Śr. fil. *"); PROGMEM Language_Str MSG_FILAMENT_DIAM_E = _UxGT("Śr. fil. *");
PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Wysuń mm"); PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Wysuń mm");
PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Wsuń mm"); PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Wsuń mm");
PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Advance K"); //PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Advance K");
PROGMEM Language_Str MSG_ADVANCE_K_E = _UxGT("Advance K *"); //PROGMEM Language_Str MSG_ADVANCE_K_E = _UxGT("Advance K *");
PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD"); PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci"); PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci");
PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci"); PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci");
PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Ustaw. fabryczne"); PROGMEM Language_Str MSG_RESTORE_DEFAULTS = _UxGT("Ustaw. fabryczne");
PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM"); PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM");
//PROGMEM Language_Str MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Error");
//PROGMEM Language_Str MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index Error");
//PROGMEM Language_Str MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Error");
//PROGMEM Language_Str MSG_SETTINGS_STORED = _UxGT("Settings Stored");
PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę"); PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę");
PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę"); PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę");
PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież"); PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież");
PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Ekran główny"); PROGMEM Language_Str MSG_INFO_SCREEN = _UxGT("Ekran główny");
PROGMEM Language_Str MSG_PREPARE = _UxGT("Przygotuj"); PROGMEM Language_Str MSG_PREPARE = _UxGT("Przygotuj");
PROGMEM Language_Str MSG_TUNE = _UxGT("Strojenie"); PROGMEM Language_Str MSG_TUNE = _UxGT("Strojenie");
//PROGMEM Language_Str MSG_POWER_MONITOR = _UxGT("Power monitor");
PROGMEM Language_Str MSG_CURRENT = _UxGT("Natężenie");
PROGMEM Language_Str MSG_VOLTAGE = _UxGT("Napięcie");
PROGMEM Language_Str MSG_POWER = _UxGT("Moc");
PROGMEM Language_Str MSG_START_PRINT = _UxGT("Start wydruku"); PROGMEM Language_Str MSG_START_PRINT = _UxGT("Start wydruku");
PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Następny"); PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Następny");
PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Inic."); PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Inic.");
PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop"); //PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop");
PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Drukuj"); PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Drukuj");
PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Resetuj"); PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Resetuj");
PROGMEM Language_Str MSG_BUTTON_IGNORE = _UxGT("Ignoruj");
PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Przerwij"); PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Przerwij");
PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Gotowe"); PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Gotowe");
PROGMEM Language_Str MSG_BUTTON_BACK = _UxGT("Wstecz");
PROGMEM Language_Str MSG_BUTTON_PROCEED = _UxGT("Kontynuuj");
PROGMEM Language_Str MSG_BUTTON_SKIP = _UxGT("Pomiń");
PROGMEM Language_Str MSG_PAUSING = _UxGT("Wstrzymywanie...");
PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Wstrzymaj druk"); PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Wstrzymaj druk");
PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Wznowienie"); PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Wznowienie");
//PROGMEM Language_Str MSG_HOST_START_PRINT = _UxGT("Host Start");
PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Stop"); PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Stop");
//PROGMEM Language_Str MSG_END_LOOPS = _UxGT("End Repeat Loops");
PROGMEM Language_Str MSG_PRINTING_OBJECT = _UxGT("Drukowanie obiektu");
PROGMEM Language_Str MSG_CANCEL_OBJECT = _UxGT("Anunuj obiekt");
PROGMEM Language_Str MSG_CANCEL_OBJECT_N = _UxGT("Anunuj obiekt =");
PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Odzyskiwanie po awarii"); PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Odzyskiwanie po awarii");
PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Karta SD"); PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Karta SD");
PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Brak karty"); PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Brak karty");
@ -322,6 +413,7 @@ namespace Language_pl {
PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Druk wstrzymany"); PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Druk wstrzymany");
PROGMEM Language_Str MSG_PRINTING = _UxGT("Drukowanie..."); PROGMEM Language_Str MSG_PRINTING = _UxGT("Drukowanie...");
PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Druk przerwany"); PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Druk przerwany");
PROGMEM Language_Str MSG_PRINT_DONE = _UxGT("Druk zakończony");
PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Brak ruchu"); PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Brak ruchu");
PROGMEM Language_Str MSG_KILLED = _UxGT("Ubity. "); PROGMEM Language_Str MSG_KILLED = _UxGT("Ubity. ");
PROGMEM Language_Str MSG_STOPPED = _UxGT("Zatrzymany. "); PROGMEM Language_Str MSG_STOPPED = _UxGT("Zatrzymany. ");
@ -331,15 +423,26 @@ namespace Language_pl {
PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Skok Z mm"); PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Skok Z mm");
PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Cof. wycof. mm"); PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Cof. wycof. mm");
PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Z Cof. wyc. mm"); PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Z Cof. wyc. mm");
//PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V");
PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Cof. wycof. V"); PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Cof. wycof. V");
PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Auto. wycofanie"); PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Auto. wycofanie");
PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Długość zmiany"); PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Długość zmiany");
//PROGMEM Language_Str MSG_FILAMENT_SWAP_EXTRA = _UxGT("Swap Extra");
PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Długość oczyszczania"); PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Długość oczyszczania");
PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Zmiana narzędzia"); PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Zmiana narzędzia");
PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Podniesienie Z"); PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Podniesienie Z");
PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prędkość napełniania"); PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prędkość napełniania");
PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Prędkość wycofania"); PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Prędkość wycofania");
PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Dysza w oczekiwaniu"); //PROGMEM Language_Str MSG_FILAMENT_PARK_ENABLED = _UxGT("Park Head");
//PROGMEM Language_Str MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Recover Speed");
//PROGMEM Language_Str MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Speed");
//PROGMEM Language_Str MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Time");
//PROGMEM Language_Str MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON");
//PROGMEM Language_Str MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF");
//PROGMEM Language_Str MSG_TOOL_MIGRATION = _UxGT("Tool Migration");
//PROGMEM Language_Str MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migration");
//PROGMEM Language_Str MSG_TOOL_MIGRATION_END = _UxGT("Last Extruder");
//PROGMEM Language_Str MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrate to *");
PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Zmień filament"); PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Zmień filament");
PROGMEM Language_Str MSG_FILAMENTCHANGE_E = _UxGT("Zmień filament *"); PROGMEM Language_Str MSG_FILAMENTCHANGE_E = _UxGT("Zmień filament *");
PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Wsuń Filament"); PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Wsuń Filament");
@ -352,31 +455,35 @@ namespace Language_pl {
PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Zwolnienie karty"); PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Zwolnienie karty");
PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z za stołem"); PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z za stołem");
PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Współczynik skrzywienia"); PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Współczynik skrzywienia");
PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch"); //PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test"); PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test");
PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch");
PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Stow"); //PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Stow");
PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Deploy"); //PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Deploy");
PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mode"); //PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mode");
PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mode"); //PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mode");
PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mode"); //PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mode");
PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); //PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store");
PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Set BLTouch to 5V"); //PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Set BLTouch to 5V");
PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Set BLTouch to OD"); //PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Set BLTouch to OD");
PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Report Drain"); //PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Report Drain");
PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("UWAGA: Złe ustawienia mogą uszkodzić drukarkę. Kontynuować?"); PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("UWAGA: Złe ustawienia mogą uszkodzić drukarkę. Kontynuować?");
PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); //PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Init TouchMI"); //PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Init TouchMI");
PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Z Offset Test"); //PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Z Offset Test");
PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Save"); //PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Save");
PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI"); //PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI");
PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe"); //PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe");
PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Stow Z-Probe"); //PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Stow Z-Probe");
PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Najpierw Home %s%s%s"); PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Najpierw Home %s%s%s");
//PROGMEM Language_Str MSG_ZPROBE_OFFSETS = _UxGT("Probe Offsets");
//PROGMEM Language_Str MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset");
//PROGMEM Language_Str MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset");
PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z"); PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z");
PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X"); PROGMEM Language_Str MSG_MOVE_NOZZLE_TO_BED = _UxGT("Przesuń dyszę do stołu");
PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y"); //PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z"); //PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
//PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Łącznie"); PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Łącznie");
PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Błąd krańcówki"); PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Błąd krańcówki");
PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Rozgrz. nieudane"); PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Rozgrz. nieudane");
@ -384,19 +491,24 @@ namespace Language_pl {
PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ZANIK TEMPERATURY"); PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ZANIK TEMPERATURY");
PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("ZANIK TEMP. STOŁU"); PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("ZANIK TEMP. STOŁU");
PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("ZANIK TEMP.KOMORY"); PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("ZANIK TEMP.KOMORY");
//PROGMEM Language_Str MSG_THERMAL_RUNAWAY_COOLER = _UxGT("Cooler Runaway");
//PROGMEM Language_Str MSG_COOLING_FAILED = _UxGT("Cooling Failed");
PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Błąd: MAXTEMP"); PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Błąd: MAXTEMP");
PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Błąd: MINTEMP"); PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Błąd: MINTEMP");
PROGMEM Language_Str MSG_HALTED = _UxGT("Drukarka zatrzym."); PROGMEM Language_Str MSG_HALTED = _UxGT("Drukarka zatrzym.");
PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Proszę zresetować"); PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Proszę zresetować");
PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only //PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("g"); // One character only PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("g"); // One character only
PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only //PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
PROGMEM Language_Str MSG_HEATING = _UxGT("Rozgrzewanie..."); PROGMEM Language_Str MSG_HEATING = _UxGT("Rozgrzewanie...");
PROGMEM Language_Str MSG_COOLING = _UxGT("Chłodzenie..."); PROGMEM Language_Str MSG_COOLING = _UxGT("Chłodzenie...");
PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Rozgrzewanie stołu..."); PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Rozgrzewanie stołu...");
PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Chłodzenie stołu..."); PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Chłodzenie stołu...");
//PROGMEM Language_Str MSG_PROBE_HEATING = _UxGT("Probe Heating...");
//PROGMEM Language_Str MSG_PROBE_COOLING = _UxGT("Probe Cooling...");
PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Rozgrzewanie komory..."); PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Rozgrzewanie komory...");
PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Chłodzenie komory..."); PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Chłodzenie komory...");
//PROGMEM Language_Str MSG_LASER_COOLING = _UxGT("Laser Cooling...");
PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Kalibrowanie Delty"); PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Kalibrowanie Delty");
PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibruj X"); PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibruj X");
PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibruj Y"); PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibruj Y");
@ -414,8 +526,9 @@ namespace Language_pl {
PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Poziomowanie 3-punktowe"); PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Poziomowanie 3-punktowe");
PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Poziomowanie liniowe"); PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Poziomowanie liniowe");
PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Poziomowanie biliniowe"); PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Poziomowanie biliniowe");
PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); //PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling");
PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Poziomowanie siatką"); PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Poziomowanie siatką");
//PROGMEM Language_Str MSG_MESH_DONE = _UxGT("Mesh probing done");
PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statystyki"); PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statystyki");
PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info płyty"); PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info płyty");
PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory");
@ -424,6 +537,7 @@ namespace Language_pl {
PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokół"); PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokół");
PROGMEM Language_Str MSG_INFO_RUNAWAY_OFF = _UxGT("Zegar pracy: OFF"); PROGMEM Language_Str MSG_INFO_RUNAWAY_OFF = _UxGT("Zegar pracy: OFF");
PROGMEM Language_Str MSG_INFO_RUNAWAY_ON = _UxGT("Zegar pracy: ON"); PROGMEM Language_Str MSG_INFO_RUNAWAY_ON = _UxGT("Zegar pracy: ON");
//PROGMEM Language_Str MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout");
PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Oświetlenie obudowy"); PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Oświetlenie obudowy");
PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jasność oświetlenia"); PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jasność oświetlenia");
@ -443,8 +557,8 @@ namespace Language_pl {
PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil.");
#endif #endif
PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); //PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); //PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Zasilacz"); PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Zasilacz");
PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Siła silnika"); PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Siła silnika");
PROGMEM Language_Str MSG_DAC_PERCENT_X = _UxGT("X Siła %"); PROGMEM Language_Str MSG_DAC_PERCENT_X = _UxGT("X Siła %");
@ -467,7 +581,7 @@ namespace Language_pl {
PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Sondowanie nieudane"); PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Sondowanie nieudane");
PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("WYBIERZ FILAMENT"); PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("WYBIERZ FILAMENT");
PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU"); //PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
PROGMEM Language_Str MSG_KILL_MMU2_FIRMWARE = _UxGT("Uaktualnij firmware MMU!"); PROGMEM Language_Str MSG_KILL_MMU2_FIRMWARE = _UxGT("Uaktualnij firmware MMU!");
PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU wymaga uwagi."); PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU wymaga uwagi.");
PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Wznów wydruk"); PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Wznów wydruk");
@ -482,7 +596,7 @@ namespace Language_pl {
PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Wysuwanie fil. ..."); PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Wysuwanie fil. ...");
PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Wysuwanie fil...."); PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Wysuwanie fil....");
PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Wszystko"); PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Wszystko");
PROGMEM Language_Str MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); //PROGMEM Language_Str MSG_MMU2_FILAMENT_N = _UxGT("Filament ~");
PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Resetuj MMU"); PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Resetuj MMU");
PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Resetowanie MMU..."); PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Resetowanie MMU...");
PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Usuń, kliknij"); PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Usuń, kliknij");
@ -490,12 +604,41 @@ namespace Language_pl {
PROGMEM Language_Str MSG_MIX = _UxGT("Miks"); PROGMEM Language_Str MSG_MIX = _UxGT("Miks");
PROGMEM Language_Str MSG_MIX_COMPONENT_N = _UxGT("Komponent ="); PROGMEM Language_Str MSG_MIX_COMPONENT_N = _UxGT("Komponent =");
PROGMEM Language_Str MSG_MIXER = _UxGT("Mikser"); PROGMEM Language_Str MSG_MIXER = _UxGT("Mikser");
PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradient"); //PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradient");
PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Pełny gradient"); PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Pełny gradient");
PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Przełacz miks"); PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Przełacz miks");
PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Cycle Mix"); //PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Cycle Mix");
PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Gradient Mix"); //PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Gradient Mix");
PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Odwrotny gradient"); PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Odwrotny gradient");
//PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Active V-tool");
//PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Start V-tool");
//PROGMEM Language_Str MSG_END_VTOOL = _UxGT(" End V-tool");
//PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool");
//PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Reset V-tools");
//PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Commit V-tool Mix");
//PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-tools Were Reset");
//PROGMEM Language_Str MSG_START_Z = _UxGT("Start Z:");
//PROGMEM Language_Str MSG_END_Z = _UxGT(" End Z:");
PROGMEM Language_Str MSG_GAMES = _UxGT("Gry");
//PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
//PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
//PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
//PROGMEM Language_Str MSG_MAZE = _UxGT("Maze");
//PROGMEM Language_Str MSG_BAD_PAGE = _UxGT("Bad page index");
//PROGMEM Language_Str MSG_BAD_PAGE_SPEED = _UxGT("Bad page speed");
PROGMEM Language_Str MSG_EDIT_PASSWORD = _UxGT("Zmień hasło");
PROGMEM Language_Str MSG_LOGIN_REQUIRED = _UxGT("Wymagane zalogowanie");
PROGMEM Language_Str MSG_PASSWORD_SETTINGS = _UxGT("Ustawienia hasła");
PROGMEM Language_Str MSG_ENTER_DIGIT = _UxGT("Wprowadź cyfrę");
PROGMEM Language_Str MSG_CHANGE_PASSWORD = _UxGT("Ustaw/zmień hasło");
PROGMEM Language_Str MSG_REMOVE_PASSWORD = _UxGT("Usuń hasło");
PROGMEM Language_Str MSG_PASSWORD_SET = _UxGT("Hasło to ");
PROGMEM Language_Str MSG_START_OVER = _UxGT("Od nowa");
PROGMEM Language_Str MSG_REMINDER_SAVE_SETTINGS = _UxGT("Pamiętaj by zapisać!");
PROGMEM Language_Str MSG_PASSWORD_REMOVED = _UxGT("Hasło usunięte");
// //
// Filament Change screens show up to 3 lines on a 4-line display // Filament Change screens show up to 3 lines on a 4-line display
@ -526,4 +669,51 @@ namespace Language_pl {
PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć")); PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć"));
PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie...")); PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie..."));
#endif #endif
PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Sterowniki TMC");
PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Prąd sterownika");
//PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold");
PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Zerowanie bezczujnikowe");
//PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode");
//PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop Enabled");
//PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Reset");
//PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" in:");
//PROGMEM Language_Str MSG_BACKLASH = _UxGT("Backlash");
//PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
//PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
//PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Korekcja");
PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Wygładzanie");
PROGMEM Language_Str MSG_LEVEL_X_AXIS = _UxGT("Wypoziomuj oś X");
PROGMEM Language_Str MSG_AUTO_CALIBRATE = _UxGT("Autokalibracja");
#if ENABLED(TOUCH_UI_FTDI_EVE)
//PROGMEM Language_Str MSG_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume.");
#else
//PROGMEM Language_Str MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout");
#endif
//PROGMEM Language_Str MSG_REHEAT = _UxGT("Reheat");
//PROGMEM Language_Str MSG_REHEATING = _UxGT("Reheating...");
//PROGMEM Language_Str MSG_PROBE_WIZARD = _UxGT("Z Probe Wizard");
//PROGMEM Language_Str MSG_PROBE_WIZARD_PROBING = _UxGT("Probing Z Reference");
//PROGMEM Language_Str MSG_PROBE_WIZARD_MOVING = _UxGT("Moving to Probing Pos");
PROGMEM Language_Str MSG_SOUND = _UxGT("Dźwięk");
//PROGMEM Language_Str MSG_TOP_LEFT = _UxGT("Top Left");
//PROGMEM Language_Str MSG_BOTTOM_LEFT = _UxGT("Bottom Left");
//PROGMEM Language_Str MSG_TOP_RIGHT = _UxGT("Top Right");
//PROGMEM Language_Str MSG_BOTTOM_RIGHT = _UxGT("Bottom Right");
PROGMEM Language_Str MSG_CALIBRATION_COMPLETED = _UxGT("Kalibracja zakończona");
PROGMEM Language_Str MSG_CALIBRATION_FAILED = _UxGT("Kalibracja nie powiodła się");
//PROGMEM Language_Str MSG_DRIVER_BACKWARD = _UxGT(" driver backward");
} }
#if FAN_COUNT == 1
#define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED
#define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED
#else
#define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N
#define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N
#endif

12
Marlin/src/lcd/marlinui.cpp

@ -636,8 +636,8 @@ void MarlinUI::kill_screen(PGM_P lcd_error, PGM_P lcd_component) {
// RED ALERT. RED ALERT. // RED ALERT. RED ALERT.
#ifdef LED_BACKLIGHT_TIMEOUT #ifdef LED_BACKLIGHT_TIMEOUT
leds.set_color(LEDColorRed()); leds.set_color(LEDColorRed());
#ifdef NEOPIXEL_BKGD_LED_INDEX #ifdef NEOPIXEL_BKGD_INDEX_FIRST
neo.set_pixel_color(NEOPIXEL_BKGD_LED_INDEX, 255, 0, 0, 0); neo.set_background_color(255, 0, 0, 0);
neo.show(); neo.show();
#endif #endif
#endif #endif
@ -758,13 +758,9 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
// Tell ui.update() to start a move to current_position after a short delay. // Tell ui.update() to start a move to current_position after a short delay.
// //
void ManualMove::soon(const AxisEnum move_axis void ManualMove::soon(const AxisEnum move_axis
#if MULTI_E_MANUAL OPTARG(MULTI_E_MANUAL, const int8_t eindex/*=active_extruder*/)
, const int8_t eindex/*=-1*/
#endif
) { ) {
#if MULTI_E_MANUAL TERN_(MULTI_E_MANUAL, if (move_axis == E_AXIS) e_index = eindex);
if (move_axis == E_AXIS) e_index = eindex >= 0 ? eindex : active_extruder;
#endif
start_time = millis() + (menu_scale < 0.99f ? 0UL : 250UL); // delay for bigger moves start_time = millis() + (menu_scale < 0.99f ? 0UL : 250UL); // delay for bigger moves
axis = move_axis; axis = move_axis;
//SERIAL_ECHOLNPAIR("Post Move with Axis ", AS_CHAR(axis_codes[axis]), " soon."); //SERIAL_ECHOLNPAIR("Post Move with Axis ", AS_CHAR(axis_codes[axis]), " soon.");

6
Marlin/src/lcd/marlinui.h

@ -182,11 +182,7 @@
static bool constexpr processing = false; static bool constexpr processing = false;
#endif #endif
static void task(); static void task();
static void soon(const AxisEnum axis static void soon(const AxisEnum axis OPTARG(MULTI_E_MANUAL, const int8_t eindex=active_extruder));
#if MULTI_E_MANUAL
, const int8_t eindex=-1
#endif
);
}; };
#endif #endif

6
Marlin/src/lcd/menu/menu_led.cpp

@ -84,18 +84,20 @@
EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds.color.r, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds.color.r, 0, 255, leds.update, true);
EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds.color.g, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds.color.g, 0, 255, leds.update, true);
EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds.color.b, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds.color.b, 0, 255, leds.update, true);
#if EITHER(RGBW_LED, NEOPIXEL_LED) #if HAS_WHITE_LED
EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds.color.w, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds.color.w, 0, 255, leds.update, true);
#endif
#if ENABLED(NEOPIXEL_LED) #if ENABLED(NEOPIXEL_LED)
EDIT_ITEM(uint8, MSG_LED_BRIGHTNESS, &leds.color.i, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_LED_BRIGHTNESS, &leds.color.i, 0, 255, leds.update, true);
#endif #endif
#endif
#if ENABLED(NEOPIXEL2_SEPARATE) #if ENABLED(NEOPIXEL2_SEPARATE)
STATIC_ITEM_N(MSG_LED_CHANNEL_N, 2, SS_DEFAULT|SS_INVERT); STATIC_ITEM_N(MSG_LED_CHANNEL_N, 2, SS_DEFAULT|SS_INVERT);
EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds2.color.r, 0, 255, leds2.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds2.color.r, 0, 255, leds2.update, true);
EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds2.color.g, 0, 255, leds2.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds2.color.g, 0, 255, leds2.update, true);
EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds2.color.b, 0, 255, leds2.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds2.color.b, 0, 255, leds2.update, true);
#if HAS_WHITE_LED2
EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds2.color.w, 0, 255, leds2.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds2.color.w, 0, 255, leds2.update, true);
#endif
EDIT_ITEM(uint8, MSG_NEO2_BRIGHTNESS, &leds2.color.i, 0, 255, leds2.update, true); EDIT_ITEM(uint8, MSG_NEO2_BRIGHTNESS, &leds2.color.i, 0, 255, leds2.update, true);
#endif #endif
END_MENU(); END_MENU();

97
Marlin/src/lcd/menu/menu_main.cpp

@ -254,6 +254,38 @@ void menu_main() {
START_MENU(); START_MENU();
BACK_ITEM(MSG_INFO_SCREEN); BACK_ITEM(MSG_INFO_SCREEN);
#if ENABLED(SDSUPPORT)
#if !defined(MEDIA_MENU_AT_TOP) && !HAS_ENCODER_WHEEL
#define MEDIA_MENU_AT_TOP
#endif
auto sdcard_menu_items = [&]{
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
#endif
if (card_detected) {
if (!card_open) {
#if PIN_EXISTS(SD_DETECT)
GCODES_ITEM(MSG_CHANGE_MEDIA, PSTR("M21")); // M21 Change Media
#else // - or -
GCODES_ITEM(MSG_RELEASE_MEDIA, PSTR("M22")); // M22 Release Media
#endif
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY); // Media Menu (or Password First)
}
}
else {
#if PIN_EXISTS(SD_DETECT)
ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media"
#else
GCODES_ITEM(MSG_ATTACH_MEDIA, PSTR("M21")); // M21 Attach Media
#endif
}
};
#endif
if (busy) { if (busy) {
#if MACHINE_CAN_PAUSE #if MACHINE_CAN_PAUSE
ACTION_ITEM(MSG_PAUSE_PRINT, ui.pause_print); ACTION_ITEM(MSG_PAUSE_PRINT, ui.pause_print);
@ -281,36 +313,9 @@ void menu_main() {
} }
else { else {
#if !HAS_ENCODER_WHEEL && ENABLED(SDSUPPORT) #if BOTH(SDSUPPORT, MEDIA_MENU_AT_TOP)
sdcard_menu_items();
// *** IF THIS SECTION IS CHANGED, REPRODUCE BELOW ***
//
// Run Auto Files
//
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin);
#endif
if (card_detected) {
if (!card_open) {
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY);
#if PIN_EXISTS(SD_DETECT)
GCODES_ITEM(MSG_CHANGE_MEDIA, PSTR("M21"));
#else
GCODES_ITEM(MSG_RELEASE_MEDIA, PSTR("M22"));
#endif
}
}
else {
#if PIN_EXISTS(SD_DETECT)
ACTION_ITEM(MSG_NO_MEDIA, nullptr);
#else
GCODES_ITEM(MSG_ATTACH_MEDIA, PSTR("M21"));
#endif #endif
}
#endif // !HAS_ENCODER_WHEEL && SDSUPPORT
if (TERN0(MACHINE_CAN_PAUSE, printingIsPaused())) if (TERN0(MACHINE_CAN_PAUSE, printingIsPaused()))
ACTION_ITEM(MSG_RESUME_PRINT, ui.resume_print); ACTION_ITEM(MSG_RESUME_PRINT, ui.resume_print);
@ -387,40 +392,10 @@ void menu_main() {
GCODES_ITEM(MSG_SWITCH_PS_ON, PSTR("M80")); GCODES_ITEM(MSG_SWITCH_PS_ON, PSTR("M80"));
#endif #endif
#if BOTH(HAS_ENCODER_WHEEL, SDSUPPORT) #if ENABLED(SDSUPPORT) && DISABLED(MEDIA_MENU_AT_TOP)
sdcard_menu_items();
if (!busy) {
// *** IF THIS SECTION IS CHANGED, REPRODUCE ABOVE ***
//
// Autostart
//
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin);
#endif #endif
if (card_detected) {
if (!card_open) {
#if PIN_EXISTS(SD_DETECT)
GCODES_ITEM(MSG_CHANGE_MEDIA, PSTR("M21"));
#else
GCODES_ITEM(MSG_RELEASE_MEDIA, PSTR("M22"));
#endif
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY);
}
}
else {
#if PIN_EXISTS(SD_DETECT)
ACTION_ITEM(MSG_NO_MEDIA, nullptr);
#else
GCODES_ITEM(MSG_ATTACH_MEDIA, PSTR("M21"));
#endif
}
}
#endif // HAS_ENCODER_WHEEL && SDSUPPORT
#if HAS_SERVICE_INTERVALS #if HAS_SERVICE_INTERVALS
static auto _service_reset = [](const int index) { static auto _service_reset = [](const int index) {
print_job_timer.resetServiceInterval(index); print_job_timer.resetServiceInterval(index);

12
Marlin/src/lcd/menu/menu_motion.cpp

@ -94,17 +94,13 @@ void lcd_move_z() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Z), Z_AXIS); }
#if E_MANUAL #if E_MANUAL
static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=-1)) { static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
if (ui.use_click()) return ui.goto_previous_screen_no_defer(); if (ui.use_click()) return ui.goto_previous_screen_no_defer();
if (ui.encoderPosition) { if (ui.encoderPosition) {
if (!ui.manual_move.processing) { if (!ui.manual_move.processing) {
const float diff = float(int32_t(ui.encoderPosition)) * ui.manual_move.menu_scale; const float diff = float(int32_t(ui.encoderPosition)) * ui.manual_move.menu_scale;
TERN(IS_KINEMATIC, ui.manual_move.offset, current_position.e) += diff; TERN(IS_KINEMATIC, ui.manual_move.offset, current_position.e) += diff;
ui.manual_move.soon(E_AXIS ui.manual_move.soon(E_AXIS OPTARG(MULTI_E_MANUAL, eindex));
#if MULTI_E_MANUAL
, eindex
#endif
);
ui.refresh(LCDVIEW_REDRAW_NOW); ui.refresh(LCDVIEW_REDRAW_NOW);
} }
ui.encoderPosition = 0; ui.encoderPosition = 0;
@ -139,7 +135,7 @@ void _goto_manual_move(const_float_t scale) {
ui.goto_screen(_manual_move_func_ptr); ui.goto_screen(_manual_move_func_ptr);
} }
void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int8_t eindex=-1) { void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int8_t eindex=active_extruder) {
_manual_move_func_ptr = func; _manual_move_func_ptr = func;
START_MENU(); START_MENU();
if (LCD_HEIGHT >= 4) { if (LCD_HEIGHT >= 4) {
@ -188,7 +184,7 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
#if E_MANUAL #if E_MANUAL
inline void _goto_menu_move_distance_e() { inline void _goto_menu_move_distance_e() {
ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_e(TERN_(MULTI_E_MANUAL, active_extruder)); }, -1); }); ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_e(); }); });
} }
inline void _menu_move_distance_e_maybe() { inline void _menu_move_distance_e_maybe() {

6
Marlin/src/lcd/tft/ui_1024x600.cpp

@ -724,11 +724,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
drawMessage(msg); drawMessage(msg);
#endif #endif
ui.manual_move.soon(axis ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection));
#if MULTI_E_MANUAL
, motionAxisState.e_selection
#endif
);
} }
drawAxisValue(axis); drawAxisValue(axis);

6
Marlin/src/lcd/tft/ui_320x240.cpp

@ -709,11 +709,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
drawMessage(msg); drawMessage(msg);
#endif #endif
ui.manual_move.soon(axis ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection));
#if MULTI_E_MANUAL
, motionAxisState.e_selection
#endif
);
} }
drawAxisValue(axis); drawAxisValue(axis);

6
Marlin/src/lcd/tft/ui_480x320.cpp

@ -711,11 +711,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
drawMessage(msg); drawMessage(msg);
#endif #endif
ui.manual_move.soon(axis ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection));
#if MULTI_E_MANUAL
, motionAxisState.e_selection
#endif
);
} }
drawAxisValue(axis); drawAxisValue(axis);

26
Marlin/src/module/motion.cpp

@ -411,9 +411,7 @@ void line_to_current_position(const_feedRate_t fr_mm_s/*=feedrate_mm_s*/) {
* - Extrude the specified length regardless of flow percentage. * - Extrude the specified length regardless of flow percentage.
*/ */
void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/
#if IS_KINEMATIC OPTARG(IS_KINEMATIC, const bool is_fast/*=false*/)
, const bool is_fast/*=false*/
#endif
) { ) {
const feedRate_t old_feedrate = feedrate_mm_s; const feedRate_t old_feedrate = feedrate_mm_s;
if (fr_mm_s) feedrate_mm_s = fr_mm_s; if (fr_mm_s) feedrate_mm_s = fr_mm_s;
@ -433,9 +431,7 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/
feedrate_mm_s = old_feedrate; feedrate_mm_s = old_feedrate;
feedrate_percentage = old_pct; feedrate_percentage = old_pct;
#if HAS_EXTRUDERS TERN_(HAS_EXTRUDERS, planner.e_factor[active_extruder] = old_fac);
planner.e_factor[active_extruder] = old_fac;
#endif
} }
/** /**
@ -607,10 +603,8 @@ void restore_feedrate_and_scaling() {
* at the same positions relative to the machine. * at the same positions relative to the machine.
*/ */
void update_software_endstops(const AxisEnum axis void update_software_endstops(const AxisEnum axis
#if HAS_HOTEND_OFFSET OPTARG(HAS_HOTEND_OFFSET, const uint8_t old_tool_index/*=0*/)
, const uint8_t old_tool_index/*=0*/ OPTARG(HAS_HOTEND_OFFSET, const uint8_t new_tool_index/*=0*/)
, const uint8_t new_tool_index/*=0*/
#endif
) { ) {
#if ENABLED(DUAL_X_CARRIAGE) #if ENABLED(DUAL_X_CARRIAGE)
@ -858,17 +852,13 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) {
segment_idle(next_idle_ms); segment_idle(next_idle_ms);
raw += segment_distance; raw += segment_distance;
if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, cartesian_segment_mm if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, cartesian_segment_mm
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
)) break; )) break;
} }
// Ensure last segment arrives at target location. // Ensure last segment arrives at target location.
planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, cartesian_segment_mm planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, cartesian_segment_mm
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
); );
return false; // caller will update current_position return false; // caller will update current_position
@ -929,9 +919,7 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) {
segment_idle(next_idle_ms); segment_idle(next_idle_ms);
raw += segment_distance; raw += segment_distance;
if (!planner.buffer_line(raw, fr_mm_s, active_extruder, cartesian_segment_mm if (!planner.buffer_line(raw, fr_mm_s, active_extruder, cartesian_segment_mm
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
)) break; )) break;
} }

6
Marlin/src/module/motion.h

@ -278,11 +278,7 @@ void line_to_current_position(const_feedRate_t fr_mm_s=feedrate_mm_s);
void prepare_line_to_destination(); void prepare_line_to_destination();
void _internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f void _internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f OPTARG(IS_KINEMATIC, const bool is_fast=false));
#if IS_KINEMATIC
, const bool is_fast=false
#endif
);
inline void prepare_internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f) { inline void prepare_internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f) {
_internal_move_to_destination(fr_mm_s); _internal_move_to_destination(fr_mm_s);

24
Marlin/src/module/planner.cpp

@ -1757,12 +1757,8 @@ void Planner::synchronize() {
* Returns true if movement was properly queued, false otherwise (if cleaning) * Returns true if movement was properly queued, false otherwise (if cleaning)
*/ */
bool Planner::_buffer_steps(const xyze_long_t &target bool Planner::_buffer_steps(const xyze_long_t &target
#if HAS_POSITION_FLOAT OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
, const xyze_pos_t &target_float OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
#endif
#if HAS_DIST_MM_ARG
, const xyze_float_t &cart_dist_mm
#endif
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters , feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters
) { ) {
@ -1823,12 +1819,8 @@ bool Planner::_buffer_steps(const xyze_long_t &target
*/ */
bool Planner::_populate_block(block_t * const block, bool split_move, bool Planner::_populate_block(block_t * const block, bool split_move,
const abce_long_t &target const abce_long_t &target
#if HAS_POSITION_FLOAT OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
, const xyze_pos_t &target_float OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
#endif
#if HAS_DIST_MM_ARG
, const xyze_float_t &cart_dist_mm
#endif
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/ , feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/
) { ) {
@ -2763,9 +2755,7 @@ void Planner::buffer_sync_block(TERN_(LASER_SYNCHRONOUS_M106_M107, uint8_t sync_
* Return 'false' if no segment was queued due to cleaning, cold extrusion, full queue, etc. * Return 'false' if no segment was queued due to cleaning, cold extrusion, full queue, etc.
*/ */
bool Planner::buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e bool Planner::buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e
#if HAS_DIST_MM_ARG OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
, const xyze_float_t &cart_dist_mm
#endif
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/ , const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/
) { ) {
@ -2857,9 +2847,7 @@ bool Planner::buffer_segment(const_float_t a, const_float_t b, const_float_t c,
* inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled) * inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled)
*/ */
bool Planner::buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters bool Planner::buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration)
, const_float_t inv_duration
#endif
) { ) {
xyze_pos_t machine = { rx, ry, rz, e }; xyze_pos_t machine = { rx, ry, rz, e };
TERN_(HAS_POSITION_MODIFIERS, apply_modifiers(machine)); TERN_(HAS_POSITION_MODIFIERS, apply_modifiers(machine));

43
Marlin/src/module/planner.h

@ -707,12 +707,8 @@ class Planner {
* Returns true if movement was buffered, false otherwise * Returns true if movement was buffered, false otherwise
*/ */
static bool _buffer_steps(const xyze_long_t &target static bool _buffer_steps(const xyze_long_t &target
#if HAS_POSITION_FLOAT OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
, const xyze_pos_t &target_float OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
#endif
#if HAS_DIST_MM_ARG
, const xyze_float_t &cart_dist_mm
#endif
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0 , feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
); );
@ -728,14 +724,9 @@ class Planner {
* *
* Returns true is movement is acceptable, false otherwise * Returns true is movement is acceptable, false otherwise
*/ */
static bool _populate_block(block_t * const block, bool split_move, static bool _populate_block(block_t * const block, bool split_move, const xyze_long_t &target
const xyze_long_t &target OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
#if HAS_POSITION_FLOAT OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
, const xyze_pos_t &target_float
#endif
#if HAS_DIST_MM_ARG
, const xyze_float_t &cart_dist_mm
#endif
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0 , feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
); );
@ -768,22 +759,16 @@ class Planner {
* millimeters - the length of the movement, if known * millimeters - the length of the movement, if known
*/ */
static bool buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e static bool buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e
#if HAS_DIST_MM_ARG OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
, const xyze_float_t &cart_dist_mm
#endif
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0 , const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
); );
FORCE_INLINE static bool buffer_segment(abce_pos_t &abce FORCE_INLINE static bool buffer_segment(abce_pos_t &abce
#if HAS_DIST_MM_ARG OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
, const xyze_float_t &cart_dist_mm
#endif
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0 , const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
) { ) {
return buffer_segment(abce.a, abce.b, abce.c, abce.e return buffer_segment(abce.a, abce.b, abce.c, abce.e
#if HAS_DIST_MM_ARG OPTARG(HAS_DIST_MM_ARG, cart_dist_mm)
, cart_dist_mm
#endif
, fr_mm_s, extruder, millimeters); , fr_mm_s, extruder, millimeters);
} }
@ -801,20 +786,14 @@ class Planner {
* inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled) * inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled)
*/ */
static bool buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0 static bool buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration=0.0)
, const_float_t inv_duration=0.0
#endif
); );
FORCE_INLINE static bool buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0 FORCE_INLINE static bool buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration=0.0)
, const_float_t inv_duration=0.0
#endif
) { ) {
return buffer_line(cart.x, cart.y, cart.z, cart.e, fr_mm_s, extruder, millimeters return buffer_line(cart.x, cart.y, cart.z, cart.e, fr_mm_s, extruder, millimeters
#if ENABLED(SCARA_FEEDRATE_SCALING) OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
, inv_duration
#endif
); );
} }

75
Marlin/src/module/temperature.cpp

@ -2526,7 +2526,7 @@ void Temperature::disable_all_heaters() {
if (singlenozzle_temp[new_tool] && singlenozzle_temp[new_tool] != singlenozzle_temp[old_tool]) { if (singlenozzle_temp[new_tool] && singlenozzle_temp[new_tool] != singlenozzle_temp[old_tool]) {
setTargetHotend(singlenozzle_temp[new_tool], 0); setTargetHotend(singlenozzle_temp[new_tool], 0);
TERN_(AUTOTEMP, planner.autotemp_update()); TERN_(AUTOTEMP, planner.autotemp_update());
TERN_(HAS_STATUS_MESSAGE, set_heating_message(0)); set_heating_message(0);
(void)wait_for_hotend(0, false); // Wait for heating or cooling (void)wait_for_hotend(0, false); // Wait for heating or cooling
} }
#endif #endif
@ -3335,11 +3335,8 @@ void Temperature::isr() {
* Extruder: " T0:nnn.nn /nnn.nn" * Extruder: " T0:nnn.nn /nnn.nn"
* With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)" * With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)"
*/ */
static void print_heater_state(const_celsius_float_t c, const_celsius_float_t t static void print_heater_state(const heater_id_t e, const_celsius_float_t c, const_celsius_float_t t
#if ENABLED(SHOW_TEMP_ADC_VALUES) OPTARG(SHOW_TEMP_ADC_VALUES, const float r)
, const float r
#endif
, const heater_id_t e=INDEX_NONE
) { ) {
char k; char k;
switch (e) { switch (e) {
@ -3385,64 +3382,28 @@ void Temperature::isr() {
} }
void Temperature::print_heater_states(const uint8_t target_extruder void Temperature::print_heater_states(const uint8_t target_extruder
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) OPTARG(TEMP_SENSOR_1_AS_REDUNDANT, const bool include_r/*=false*/)
, const bool include_r/*=false*/
#endif
) { ) {
#if HAS_TEMP_HOTEND #if HAS_TEMP_HOTEND
print_heater_state(degHotend(target_extruder), degTargetHotend(target_extruder) print_heater_state(H_NONE, degHotend(target_extruder), degTargetHotend(target_extruder) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(target_extruder)));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawHotendTemp(target_extruder)
#endif
);
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
if (include_r) print_heater_state(degHotendRedundant(), degTargetHotend(0) if (include_r) print_heater_state(H_REDUNDANT, degHotendRedundant(), degTargetHotend(0) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTempRedundant()));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawHotendTempRedundant()
#endif
, H_REDUNDANT
);
#endif #endif
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED
print_heater_state(degBed(), degTargetBed() print_heater_state(H_BED, degBed(), degTargetBed() OPTARG(SHOW_TEMP_ADC_VALUES, rawBedTemp()));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawBedTemp()
#endif
, H_BED
);
#endif #endif
#if HAS_TEMP_CHAMBER #if HAS_TEMP_CHAMBER
print_heater_state(degChamber(), TERN0(HAS_HEATED_CHAMBER, degTargetChamber()) print_heater_state(H_CHAMBER, degChamber(), TERN0(HAS_HEATED_CHAMBER, degTargetChamber()) OPTARG(SHOW_TEMP_ADC_VALUES, rawChamberTemp()));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawChamberTemp()
#endif #endif
, H_CHAMBER
);
#endif // HAS_TEMP_CHAMBER
#if HAS_TEMP_COOLER #if HAS_TEMP_COOLER
print_heater_state(degCooler(), TERN0(HAS_COOLER, degTargetCooler()) print_heater_state(H_COOLER, degCooler(), TERN0(HAS_COOLER, degTargetCooler()) OPTARG(SHOW_TEMP_ADC_VALUES, rawCoolerTemp()));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawCoolerTemp()
#endif #endif
, H_COOLER
);
#endif // HAS_TEMP_COOLER
#if HAS_TEMP_PROBE #if HAS_TEMP_PROBE
print_heater_state(degProbe(), 0 print_heater_state(H_PROBE, degProbe(), 0 OPTARG(SHOW_TEMP_ADC_VALUES, rawProbeTemp()) );
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawProbeTemp()
#endif
, H_PROBE
);
#endif #endif
#if HAS_MULTI_HOTEND #if HAS_MULTI_HOTEND
HOTEND_LOOP() print_heater_state(degHotend(e), degTargetHotend(e) HOTEND_LOOP() print_heater_state((heater_id_t)e, degHotend(e), degTargetHotend(e) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(e)));
#if ENABLED(SHOW_TEMP_ADC_VALUES)
, rawHotendTemp(e)
#endif
, (heater_id_t)e
);
#endif #endif
SERIAL_ECHOPAIR(" @:", getHeaterPower((heater_id_t)target_extruder)); SERIAL_ECHOPAIR(" @:", getHeaterPower((heater_id_t)target_extruder));
#if HAS_HEATED_BED #if HAS_HEATED_BED
@ -3465,10 +3426,7 @@ void Temperature::isr() {
#if ENABLED(AUTO_REPORT_TEMPERATURES) #if ENABLED(AUTO_REPORT_TEMPERATURES)
AutoReporter<Temperature::AutoReportTemp> Temperature::auto_reporter; AutoReporter<Temperature::AutoReportTemp> Temperature::auto_reporter;
void Temperature::AutoReportTemp::report() { void Temperature::AutoReportTemp::report() { print_heater_states(active_extruder); SERIAL_EOL(); }
print_heater_states(active_extruder);
SERIAL_EOL();
}
#endif #endif
#if HAS_HOTEND && HAS_STATUS_MESSAGE #if HAS_HOTEND && HAS_STATUS_MESSAGE
@ -3495,11 +3453,8 @@ void Temperature::isr() {
#endif #endif
bool Temperature::wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling/*=true*/ bool Temperature::wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling/*=true*/
#if G26_CLICK_CAN_CANCEL OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel/*=false*/)
, const bool click_to_cancel/*=false*/
#endif
) { ) {
#if ENABLED(AUTOTEMP) #if ENABLED(AUTOTEMP)
REMEMBER(1, planner.autotemp_enabled, false); REMEMBER(1, planner.autotemp_enabled, false);
#endif #endif
@ -3638,9 +3593,7 @@ void Temperature::isr() {
#endif #endif
bool Temperature::wait_for_bed(const bool no_wait_for_cooling/*=true*/ bool Temperature::wait_for_bed(const bool no_wait_for_cooling/*=true*/
#if G26_CLICK_CAN_CANCEL OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel/*=false*/)
, const bool click_to_cancel/*=false*/
#endif
) { ) {
#if TEMP_BED_RESIDENCY_TIME > 0 #if TEMP_BED_RESIDENCY_TIME > 0
millis_t residency_start_ms = 0; millis_t residency_start_ms = 0;

77
Marlin/src/module/temperature.h

@ -46,7 +46,7 @@
// Element identifiers. Positive values are hotends. Negative values are other heaters or coolers. // Element identifiers. Positive values are hotends. Negative values are other heaters or coolers.
typedef enum : int8_t { typedef enum : int8_t {
INDEX_NONE = -6, H_NONE = -6,
H_COOLER, H_PROBE, H_REDUNDANT, H_CHAMBER, H_BED, H_COOLER, H_PROBE, H_REDUNDANT, H_CHAMBER, H_BED,
H_E0, H_E1, H_E2, H_E3, H_E4, H_E5, H_E6, H_E7 H_E0, H_E1, H_E2, H_E3, H_E4, H_E5, H_E6, H_E7
} heater_id_t; } heater_id_t;
@ -395,21 +395,21 @@ class Temperature {
} heater_idle_t; } heater_idle_t;
// Indices and size for the heater_idle array // Indices and size for the heater_idle array
#define _ENUM_FOR_E(N) IDLE_INDEX_E##N, enum IdleIndex : int8_t {
enum IdleIndex : uint8_t { _II = -1
REPEAT(HOTENDS, _ENUM_FOR_E)
#if ENABLED(HAS_HEATED_BED) #define _IDLE_INDEX_E(N) ,IDLE_INDEX_E##N
IDLE_INDEX_BED, REPEAT(HOTENDS, _IDLE_INDEX_E)
#endif #undef _IDLE_INDEX_E
NR_HEATER_IDLE
OPTARG(HAS_HEATED_BED, IDLE_INDEX_BED)
, NR_HEATER_IDLE
}; };
#undef _ENUM_FOR_E
// Convert the given heater_id_t to idle array index // Convert the given heater_id_t to idle array index
static inline IdleIndex idle_index_for_id(const int8_t heater_id) { static inline IdleIndex idle_index_for_id(const int8_t heater_id) {
#if HAS_HEATED_BED TERN_(HAS_HEATED_BED, if (heater_id == H_BED) return IDLE_INDEX_BED);
if (heater_id == H_BED) return IDLE_INDEX_BED;
#endif
return (IdleIndex)_MAX(heater_id, 0); return (IdleIndex)_MAX(heater_id, 0);
} }
@ -672,9 +672,7 @@ class Temperature {
#if HAS_TEMP_HOTEND #if HAS_TEMP_HOTEND
static bool wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling=true static bool wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling=true
#if G26_CLICK_CAN_CANCEL OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel=false)
, const bool click_to_cancel=false
#endif
); );
#if ENABLED(WAIT_FOR_HOTEND) #if ENABLED(WAIT_FOR_HOTEND)
@ -721,9 +719,7 @@ class Temperature {
} }
static bool wait_for_bed(const bool no_wait_for_cooling=true static bool wait_for_bed(const bool no_wait_for_cooling=true
#if G26_CLICK_CAN_CANCEL OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel=false)
, const bool click_to_cancel=false
#endif
); );
static void wait_for_bed_heating(); static void wait_for_bed_heating();
@ -859,9 +855,7 @@ class Temperature {
#if HAS_TEMP_SENSOR #if HAS_TEMP_SENSOR
static void print_heater_states(const uint8_t target_extruder static void print_heater_states(const uint8_t target_extruder
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) OPTARG(TEMP_SENSOR_1_AS_REDUNDANT, const bool include_r=false)
, const bool include_r=false
#endif
); );
#if ENABLED(AUTO_REPORT_TEMPERATURES) #if ENABLED(AUTO_REPORT_TEMPERATURES)
struct AutoReportTemp { static void report(); }; struct AutoReportTemp { static void report(); };
@ -869,8 +863,10 @@ class Temperature {
#endif #endif
#endif #endif
#if HAS_STATUS_MESSAGE #if HAS_HOTEND && HAS_STATUS_MESSAGE
static void set_heating_message(const uint8_t e); static void set_heating_message(const uint8_t e);
#else
static inline void set_heating_message(const uint8_t) {}
#endif #endif
#if HAS_LCD_MENU && HAS_TEMPERATURE #if HAS_LCD_MENU && HAS_TEMPERATURE
@ -923,35 +919,24 @@ class Temperature {
#if HAS_THERMAL_PROTECTION #if HAS_THERMAL_PROTECTION
// Indices and size for the tr_state_machine array. One for each protected heater. // Indices and size for the tr_state_machine array. One for each protected heater.
#define _ENUM_FOR_E(N) RUNAWAY_IND_E##N, enum RunawayIndex : int8_t {
enum RunawayIndex : uint8_t { _RI = -1
#if ENABLED(THERMAL_PROTECTION_HOTENDS) #if ENABLED(THERMAL_PROTECTION_HOTENDS)
REPEAT(HOTENDS, _ENUM_FOR_E) #define _RUNAWAY_IND_E(N) ,RUNAWAY_IND_E##N
#endif REPEAT(HOTENDS, _RUNAWAY_IND_E)
#if ENABLED(HAS_THERMALLY_PROTECTED_BED) #undef _RUNAWAY_IND_E
RUNAWAY_IND_BED, #endif
#endif OPTARG(HAS_THERMALLY_PROTECTED_BED, RUNAWAY_IND_BED)
#if ENABLED(THERMAL_PROTECTION_CHAMBER) OPTARG(THERMAL_PROTECTION_CHAMBER, RUNAWAY_IND_CHAMBER)
RUNAWAY_IND_CHAMBER, OPTARG(THERMAL_PROTECTION_COOLER, RUNAWAY_IND_COOLER)
#endif , NR_HEATER_RUNAWAY
#if ENABLED(THERMAL_PROTECTION_COOLER)
RUNAWAY_IND_COOLER,
#endif
NR_HEATER_RUNAWAY
}; };
#undef _ENUM_FOR_E
// Convert the given heater_id_t to runaway state array index // Convert the given heater_id_t to runaway state array index
static inline RunawayIndex runaway_index_for_id(const int8_t heater_id) { static inline RunawayIndex runaway_index_for_id(const int8_t heater_id) {
#if HAS_THERMALLY_PROTECTED_CHAMBER TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER);
if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER; TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_COOLER) return RUNAWAY_IND_COOLER);
#endif TERN_(HAS_THERMALLY_PROTECTED_BED, if (heater_id == H_BED) return RUNAWAY_IND_BED);
#if HAS_THERMALLY_PROTECTED_CHAMBER
if (heater_id == H_COOLER) return RUNAWAY_IND_COOLER;
#endif
#if HAS_THERMALLY_PROTECTED_BED
if (heater_id == H_BED) return RUNAWAY_IND_BED;
#endif
return (RunawayIndex)_MAX(heater_id, 0); return (RunawayIndex)_MAX(heater_id, 0);
} }

2
Marlin/src/module/tool_change.cpp

@ -1382,7 +1382,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
#if HAS_MULTI_HOTEND #if HAS_MULTI_HOTEND
thermalManager.setTargetHotend(thermalManager.degTargetHotend(active_extruder), migration_extruder); thermalManager.setTargetHotend(thermalManager.degTargetHotend(active_extruder), migration_extruder);
TERN_(AUTOTEMP, planner.autotemp_update()); TERN_(AUTOTEMP, planner.autotemp_update());
TERN_(HAS_STATUS_MESSAGE, thermalManager.set_heating_message(0)); thermalManager.set_heating_message(0);
thermalManager.wait_for_hotend(active_extruder); thermalManager.wait_for_hotend(active_extruder);
#endif #endif

4
Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h

@ -44,7 +44,9 @@
#define Y_MAX_PIN -1 #define Y_MAX_PIN -1
#define Z_MIN_PIN P1_27 #define Z_MIN_PIN P1_27
#define Z_MAX_PIN -1 #define Z_MAX_PIN -1
#define Z_PROBE P1_22 #ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN P1_22
#endif
// //
// Steppers // Steppers

100
Marlin/src/pins/mega/pins_MALYAN_M180.h

@ -0,0 +1,100 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* Malyan M180 pin assignments
* Contributed by Timo Birnschein (timo.birnschein@microforge.de)
*/
#include "env_validate.h"
#define BOARD_INFO_NAME "Malyan M180 v.2"
//
// Limit Switches
//
#define X_STOP_PIN 48
#define Y_STOP_PIN 46
#define Z_STOP_PIN 42
//
// Z Probe (when not Z_MIN_PIN)
//
#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN -1
#endif
//
// Steppers
//
#define X_STEP_PIN 55
#define X_DIR_PIN 54
#define X_ENABLE_PIN 56
#define Y_STEP_PIN 59
#define Y_DIR_PIN 58
#define Y_ENABLE_PIN 60
#define Z_STEP_PIN 63
#define Z_DIR_PIN 62
#define Z_ENABLE_PIN 64
#define E0_STEP_PIN 25
#define E0_DIR_PIN 24
#define E0_ENABLE_PIN 26
#define E1_STEP_PIN 29
#define E1_DIR_PIN 28
#define E1_ENABLE_PIN 39
//
// Temperature Sensors
//
#define TEMP_BED_PIN 15 // Analog Input
// Extruder thermocouples 0 and 1 are read out by two separate ICs using
// SPI for Max6675 Thermocouple
// Uses a separate SPI bus
#define THERMO_SCK_PIN 78 // E2 - SCK
#define THERMO_DO_PIN 3 // E5 - DO
#define THERMO_CS1_PIN 5 // E3 - CS0
#define THERMO_CS2_PIN 2 // E4 - CS1
#define MAX6675_SS_PIN THERMO_CS1_PIN
#define MAX6675_SS2_PIN THERMO_CS2_PIN
#define MAX6675_SCK_PIN THERMO_SCK_PIN
#define MAX6675_DO_PIN THERMO_DO_PIN
//
// Heaters / Fans
//
#define HEATER_0_PIN 6
#define HEATER_1_PIN 11
#define HEATER_BED_PIN 45
#ifndef FAN_PIN
#define FAN_PIN 7 // M106 Sxxx command supported and tested. M107 as well.
#endif
#ifndef FAN_PIN1
#define FAN_PIN1 12 // Currently Unsupported by Marlin
#endif

2
Marlin/src/pins/pins.h

@ -270,6 +270,8 @@
#include "mega/pins_PICAOLD.h" // ATmega2560 env:mega2560 #include "mega/pins_PICAOLD.h" // ATmega2560 env:mega2560
#elif MB(INTAMSYS40) #elif MB(INTAMSYS40)
#include "mega/pins_INTAMSYS40.h" // ATmega2560 env:mega2560 #include "mega/pins_INTAMSYS40.h" // ATmega2560 env:mega2560
#elif MB(MALYAN_M180)
#include "mega/pins_MALYAN_M180.h" // ATmega2560 env:mega2560
// //
// ATmega1281, ATmega2561 // ATmega1281, ATmega2561

1
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h

@ -248,7 +248,6 @@ BlTouch
#ifdef MKS_WIFI #ifdef MKS_WIFI
#define MKS_WIFI_SERIAL_NUM SERIAL_PORT_2 #define MKS_WIFI_SERIAL_NUM SERIAL_PORT_2
#define MKS_WIFI_BAUDRATE 115200
#undef PLATFORM_M997_SUPPORT #undef PLATFORM_M997_SUPPORT
#define MKS_WIFI_IO0 PA8 #define MKS_WIFI_IO0 PA8

6
Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h

@ -502,13 +502,13 @@
// Alter timing for graphical display // Alter timing for graphical display
#if HAS_MARLINUI_U8GLIB #if HAS_MARLINUI_U8GLIB
#ifndef BOARD_ST7920_DELAY_1 #ifndef BOARD_ST7920_DELAY_1
#define BOARD_ST7920_DELAY_1 DELAY_NS(96) #define BOARD_ST7920_DELAY_1 DELAY_NS(120)
#endif #endif
#ifndef BOARD_ST7920_DELAY_2 #ifndef BOARD_ST7920_DELAY_2
#define BOARD_ST7920_DELAY_2 DELAY_NS(48) #define BOARD_ST7920_DELAY_2 DELAY_NS(80)
#endif #endif
#ifndef BOARD_ST7920_DELAY_3 #ifndef BOARD_ST7920_DELAY_3
#define BOARD_ST7920_DELAY_3 DELAY_NS(600) #define BOARD_ST7920_DELAY_3 DELAY_NS(580)
#endif #endif
#endif #endif

2
Marlin/src/sd/cardreader.cpp

@ -144,7 +144,7 @@ uint32_t CardReader::filesize, CardReader::sdpos;
CardReader::CardReader() { CardReader::CardReader() {
changeMedia(& changeMedia(&
#if SHARED_VOLUME_IS(SD_ONBOARD) #if SHARED_VOLUME_IS(SD_ONBOARD)
media_sd_spi TERN(SDIO_SUPPORT, media_sdio, media_sd_spi)
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT) #elif SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
media_usbFlashDrive media_usbFlashDrive
#else #else

10
Marlin/src/sd/usb_flashdrive/lib-uhs2/masstorage.cpp

@ -956,12 +956,6 @@ uint8_t BulkOnly::HandleUsbError(uint8_t error, uint8_t index) {
return ((error && !count) ? MASS_ERR_GENERAL_USB_ERROR : MASS_ERR_SUCCESS); return ((error && !count) ? MASS_ERR_GENERAL_USB_ERROR : MASS_ERR_SUCCESS);
} }
#if MS_WANT_PARSER
uint8_t BulkOnly::Transaction(CommandBlockWrapper *pcbw, uint16_t buf_size, void *buf) {
return Transaction(CommandBlockWrapper *pcbw, uint16_t buf_size, void *buf, 0);
}
#endif
/** /**
* For driver use only. * For driver use only.
* *
@ -972,9 +966,7 @@ uint8_t BulkOnly::HandleUsbError(uint8_t error, uint8_t index) {
* @return * @return
*/ */
uint8_t BulkOnly::Transaction(CommandBlockWrapper *pcbw, uint16_t buf_size, void *buf uint8_t BulkOnly::Transaction(CommandBlockWrapper *pcbw, uint16_t buf_size, void *buf
#if MS_WANT_PARSER OPTARG(MS_WANT_PARSER, uint8_t flags/*=0*/)
, uint8_t flags
#endif
) { ) {
#if MS_WANT_PARSER #if MS_WANT_PARSER
uint16_t bytes = (pcbw->dCBWDataTransferLength > buf_size) ? buf_size : pcbw->dCBWDataTransferLength; uint16_t bytes = (pcbw->dCBWDataTransferLength > buf_size) ? buf_size : pcbw->dCBWDataTransferLength;

5
Marlin/src/sd/usb_flashdrive/lib-uhs2/masstorage.h

@ -553,10 +553,7 @@ private:
bool IsValidCSW(CommandStatusWrapper *pcsw, CommandBlockWrapperBase *pcbw); bool IsValidCSW(CommandStatusWrapper *pcsw, CommandBlockWrapperBase *pcbw);
uint8_t ClearEpHalt(uint8_t index); uint8_t ClearEpHalt(uint8_t index);
#if MS_WANT_PARSER uint8_t Transaction(CommandBlockWrapper *cbw, uint16_t bsize, void *buf OPTARG(MS_WANT_PARSER, uint8_t flags=0));
uint8_t Transaction(CommandBlockWrapper *cbw, uint16_t bsize, void *buf, uint8_t flags);
#endif
uint8_t Transaction(CommandBlockWrapper *cbw, uint16_t bsize, void *buf);
uint8_t HandleUsbError(uint8_t error, uint8_t index); uint8_t HandleUsbError(uint8_t error, uint8_t index);
uint8_t HandleSCSIError(uint8_t status); uint8_t HandleSCSIError(uint8_t status);
}; };

5
buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h

@ -264,6 +264,11 @@ extern "C" {
#define PIN_SERIAL_RX PA10 #define PIN_SERIAL_RX PA10
#define PIN_SERIAL_TX PA9 #define PIN_SERIAL_TX PA9
// Serial Pins for the MMU2
#define ENABLE_HWSERIAL4
#define PIN_SERIAL4_RX PC11
#define PIN_SERIAL4_TX PC10
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif

2
buildroot/tests/DUE

@ -18,7 +18,7 @@ opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \
ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \ ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \
EEPROM_SETTINGS SDSUPPORT BINARY_FILE_TRANSFER \ EEPROM_SETTINGS SDSUPPORT BINARY_FILE_TRANSFER \
BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \ BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_USE_RGB_LED CASE_LIGHT_MENU \ NEOPIXEL_LED NEOPIXEL_PIN CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_USE_RGB_LED CASE_LIGHT_MENU \
NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_RUNOUT_SENSOR \ NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_RUNOUT_SENSOR \
AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE CALIBRATION_GCODE \ SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE CALIBRATION_GCODE \

6
buildroot/tests/LPC1768

@ -14,8 +14,10 @@ set -e
#exec_test $1 $2 "Default Configuration" "$3" #exec_test $1 $2 "Default Configuration" "$3"
restore_configs restore_configs
opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB NEOPIXEL_PIN P1_16 SERIAL_PORT_3 3 opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB SERIAL_PORT_3 3 \
opt_enable VIKI2 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 NEOPIXEL_LED NEOPIXEL_TYPE NEO_GRB RGB_LED_R_PIN P2_12 RGB_LED_G_PIN P1_23 RGB_LED_B_PIN P1_22 RGB_LED_W_PIN P1_24
opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 RGBW_LED \
NEOPIXEL_LED NEOPIXEL_IS_SEQUENTIAL NEOPIXEL_STARTUP_TEST NEOPIXEL_BKGD_INDEX_FIRST NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_COLOR NEOPIXEL_BKGD_ALWAYS_ON
exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3" exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3"
#restore_configs #restore_configs

2
buildroot/tests/STM32F103RC_btt_USB

@ -10,7 +10,7 @@ set -e
# Build with the default configurations # Build with the default configurations
# #
restore_configs restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 BAUDRATE_2 115200
exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3" exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3"
# clean up # clean up

4
buildroot/tests/mega2560

@ -20,8 +20,8 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO LCD_LANGUAGE fr SAVED_POSITIONS 4 \
EXTRUDERS 5 TEMP_SENSOR_1 1 TEMP_SENSOR_2 5 TEMP_SENSOR_3 20 TEMP_SENSOR_4 1000 TEMP_SENSOR_BED 1 EXTRUDERS 5 TEMP_SENSOR_1 1 TEMP_SENSOR_2 5 TEMP_SENSOR_3 20 TEMP_SENSOR_4 1000 TEMP_SENSOR_BED 1
opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \ opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \
REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING SHOW_CUSTOM_BOOTSCREEN BOOT_MARLIN_LOGO_SMALL \ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING SHOW_CUSTOM_BOOTSCREEN BOOT_MARLIN_LOGO_SMALL \
SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT AUTO_REPORT_SD_STATUS SCROLL_LONG_FILENAMES CANCEL_OBJECTS SOUND_MENU_ITEM \ SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT AUTO_REPORT_SD_STATUS SCROLL_LONG_FILENAMES MEDIA_MENU_AT_TOP \
EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_MENU_MAIN FREEZE_FEATURE \ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_MENU_MAIN FREEZE_FEATURE CANCEL_OBJECTS SOUND_MENU_ITEM \
MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE EXTRA_LIN_ADVANCE_K QUICK_HOME \ MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE EXTRA_LIN_ADVANCE_K QUICK_HOME \
LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \ LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \
BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL

2
buildroot/tests/rambo

@ -22,7 +22,7 @@ opt_enable USE_ZMAX_PLUG REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_P
PREHEAT_BEFORE_PROBING PROBING_HEATERS_OFF PROBING_FANS_OFF PROBING_STEPPERS_OFF WAIT_FOR_BED_HEATER \ PREHEAT_BEFORE_PROBING PROBING_HEATERS_OFF PROBING_FANS_OFF PROBING_STEPPERS_OFF WAIT_FOR_BED_HEATER \
EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \ EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \ BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \ NEOPIXEL_LED NEOPIXEL_PIN CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
PID_PARAMS_PER_HOTEND PID_AUTOTUNE_MENU PID_EDIT_MENU LCD_SHOW_E_TOTAL \ PID_PARAMS_PER_HOTEND PID_AUTOTUNE_MENU PID_EDIT_MENU LCD_SHOW_E_TOTAL \
PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 LEVEL_BED_CORNERS LEVEL_CENTER_TOO \ PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 LEVEL_BED_CORNERS LEVEL_CENTER_TOO \
NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \ NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \

2
config/README.md

@ -1,3 +1,3 @@
# Where have all the configurations gone? # Where have all the configurations gone?
## https://github.com/MarlinFirmware/Configurations/archive/release-2.0.8.1.zip ## https://github.com/MarlinFirmware/Configurations/archive/release-2.0.8.2.zip

4
ini/features.ini

@ -61,7 +61,7 @@ HAS_MENU_DELTA_CALIBRATE = src_filter=+<src/lcd/menu/menu_delta_ca
HAS_MENU_FILAMENT = src_filter=+<src/lcd/menu/menu_filament.cpp> HAS_MENU_FILAMENT = src_filter=+<src/lcd/menu/menu_filament.cpp>
LCD_INFO_MENU = src_filter=+<src/lcd/menu/menu_info.cpp> LCD_INFO_MENU = src_filter=+<src/lcd/menu/menu_info.cpp>
HAS_MENU_JOB_RECOVERY = src_filter=+<src/lcd/menu/menu_job_recovery.cpp> HAS_MENU_JOB_RECOVERY = src_filter=+<src/lcd/menu/menu_job_recovery.cpp>
HAS_MULTI_LANGUAGE = src_filter=+<src/lcd/menu/menu_language.cpp> HAS_MULTI_LANGUAGE = src_filter=+<src/lcd/menu/menu_language.cpp> +<src/gcode/lcd/M414.cpp>
HAS_MENU_LED = src_filter=+<src/lcd/menu/menu_led.cpp> HAS_MENU_LED = src_filter=+<src/lcd/menu/menu_led.cpp>
HAS_MENU_MEDIA = src_filter=+<src/lcd/menu/menu_media.cpp> HAS_MENU_MEDIA = src_filter=+<src/lcd/menu/menu_media.cpp>
HAS_MENU_MIXER = src_filter=+<src/lcd/menu/menu_mixer.cpp> HAS_MENU_MIXER = src_filter=+<src/lcd/menu/menu_mixer.cpp>
@ -186,7 +186,9 @@ AUTO_REPORT_POSITION = src_filter=+<src/gcode/host/M154.cpp>
REPETIER_GCODE_M360 = src_filter=+<src/gcode/host/M360.cpp> REPETIER_GCODE_M360 = src_filter=+<src/gcode/host/M360.cpp>
HAS_GCODE_M876 = src_filter=+<src/gcode/host/M876.cpp> HAS_GCODE_M876 = src_filter=+<src/gcode/host/M876.cpp>
HAS_RESUME_CONTINUE = src_filter=+<src/gcode/lcd/M0_M1.cpp> HAS_RESUME_CONTINUE = src_filter=+<src/gcode/lcd/M0_M1.cpp>
HAS_STATUS_MESSAGE = src_filter=+<src/gcode/lcd/M117.cpp>
HAS_LCD_CONTRAST = src_filter=+<src/gcode/lcd/M250.cpp> HAS_LCD_CONTRAST = src_filter=+<src/gcode/lcd/M250.cpp>
HAS_BUZZER = src_filter=+<src/gcode/lcd/M300.cpp>
LCD_SET_PROGRESS_MANUALLY = src_filter=+<src/gcode/lcd/M73.cpp> LCD_SET_PROGRESS_MANUALLY = src_filter=+<src/gcode/lcd/M73.cpp>
TOUCH_SCREEN_CALIBRATION = src_filter=+<src/gcode/lcd/M995.cpp> TOUCH_SCREEN_CALIBRATION = src_filter=+<src/gcode/lcd/M995.cpp>
ARC_SUPPORT = src_filter=+<src/gcode/motion/G2_G3.cpp> ARC_SUPPORT = src_filter=+<src/gcode/motion/G2_G3.cpp>

4
platformio.ini

@ -202,7 +202,10 @@ default_src_filter = +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared>
-<src/gcode/host/M360.cpp> -<src/gcode/host/M360.cpp>
-<src/gcode/host/M876.cpp> -<src/gcode/host/M876.cpp>
-<src/gcode/lcd/M0_M1.cpp> -<src/gcode/lcd/M0_M1.cpp>
-<src/gcode/lcd/M117.cpp>
-<src/gcode/lcd/M250.cpp> -<src/gcode/lcd/M250.cpp>
-<src/gcode/lcd/M300.cpp>
-<src/gcode/lcd/M414.cpp>
-<src/gcode/lcd/M73.cpp> -<src/gcode/lcd/M73.cpp>
-<src/gcode/lcd/M995.cpp> -<src/gcode/lcd/M995.cpp>
-<src/gcode/motion/G2_G3.cpp> -<src/gcode/motion/G2_G3.cpp>
@ -222,6 +225,7 @@ default_src_filter = +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared>
-<src/gcode/temp/M104_M109.cpp> -<src/gcode/temp/M104_M109.cpp>
-<src/gcode/temp/M155.cpp> -<src/gcode/temp/M155.cpp>
-<src/gcode/units/G20_G21.cpp> -<src/gcode/units/G20_G21.cpp>
-<src/gcode/units/M82_M83.cpp>
-<src/gcode/units/M149.cpp> -<src/gcode/units/M149.cpp>
-<src/libs/BL24CXX.cpp> -<src/libs/W25Qxx.cpp> -<src/libs/BL24CXX.cpp> -<src/libs/W25Qxx.cpp>
-<src/libs/L64XX> -<src/module/stepper/L64xx.cpp> -<src/HAL/shared/HAL_spi_L6470.cpp> -<src/libs/L64XX> -<src/module/stepper/L64xx.cpp> -<src/HAL/shared/HAL_spi_L6470.cpp>

Loading…
Cancel
Save