Browse Source

Remove ancient SNMM code in the MK3 branch

Alex Voinea 2 years ago
parent
commit
a6331d22c8
43 changed files with 81 additions and 1194 deletions
  1. 0 2
      Firmware/Marlin.h
  2. 2 8
      Firmware/MarlinSerial.cpp
  3. 2 104
      Firmware/Marlin_main.cpp
  4. 3 3
      Firmware/eeprom.h
  5. 0 4
      Firmware/messages.cpp
  6. 1 330
      Firmware/mmu.cpp
  7. 0 23
      Firmware/mmu.h
  8. 0 5
      Firmware/pins_Rambo_1_0.h
  9. 0 5
      Firmware/pins_Rambo_1_3.h
  10. 2 10
      Firmware/stepper.cpp
  11. 32 631
      Firmware/ultralcd.cpp
  12. 0 4
      Firmware/ultralcd.h
  13. 2 21
      Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h
  14. 2 21
      Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h
  15. 2 0
      Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h
  16. 2 0
      Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h
  17. 2 0
      Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h
  18. 2 0
      Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h
  19. 2 0
      Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h
  20. 2 0
      Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h
  21. 1 1
      lang/lang_en.txt
  22. 1 1
      lang/lang_en_cz.txt
  23. 1 1
      lang/lang_en_de.txt
  24. 1 1
      lang/lang_en_es.txt
  25. 1 1
      lang/lang_en_fr.txt
  26. 1 1
      lang/lang_en_it.txt
  27. 1 1
      lang/lang_en_nl.txt
  28. 1 1
      lang/lang_en_pl.txt
  29. 1 1
      lang/po/Firmware.pot
  30. 1 1
      lang/po/Firmware_cs.po
  31. 1 1
      lang/po/Firmware_de.po
  32. 1 1
      lang/po/Firmware_es.po
  33. 1 1
      lang/po/Firmware_fr.po
  34. 1 1
      lang/po/Firmware_it.po
  35. 1 1
      lang/po/Firmware_nl.po
  36. 1 1
      lang/po/Firmware_pl.po
  37. 1 1
      lang/po/new/cs.po
  38. 1 1
      lang/po/new/de.po
  39. 1 1
      lang/po/new/es.po
  40. 1 1
      lang/po/new/fr.po
  41. 1 1
      lang/po/new/it.po
  42. 1 1
      lang/po/new/nl.po
  43. 1 1
      lang/po/new/pl.po

+ 0 - 2
Firmware/Marlin.h

@@ -329,14 +329,12 @@ extern uint8_t host_keepalive_interval;
 extern unsigned long starttime;
 extern unsigned long starttime;
 extern unsigned long stoptime;
 extern unsigned long stoptime;
 extern ShortTimer usb_timer;
 extern ShortTimer usb_timer;
-extern int bowden_length[4];
 extern bool homing_flag;
 extern bool homing_flag;
 extern bool loading_flag;
 extern bool loading_flag;
 extern unsigned long total_filament_used;
 extern unsigned long total_filament_used;
 void save_statistics(unsigned long _total_filament_used, unsigned long _total_print_time);
 void save_statistics(unsigned long _total_filament_used, unsigned long _total_print_time);
 extern uint8_t status_number;
 extern uint8_t status_number;
 extern uint8_t heating_status_counter;
 extern uint8_t heating_status_counter;
-extern char snmm_filaments_used;
 extern unsigned long PingTime;
 extern unsigned long PingTime;
 extern bool no_response;
 extern bool no_response;
 extern uint8_t important_status;
 extern uint8_t important_status;

+ 2 - 8
Firmware/MarlinSerial.cpp

@@ -75,7 +75,7 @@ ISR(M_USARTx_RX_vect)
 #endif //DEBUG_DUMP_TO_2ND_SERIAL
 #endif //DEBUG_DUMP_TO_2ND_SERIAL
 	}
 	}
 }
 }
-#ifndef SNMM
+
 ISR(USART1_RX_vect)
 ISR(USART1_RX_vect)
 {
 {
 	// Test for a framing error.
 	// Test for a framing error.
@@ -97,7 +97,6 @@ ISR(USART1_RX_vect)
 	}
 	}
 }
 }
 #endif
 #endif
-#endif
 
 
 // Public Methods //////////////////////////////////////////////////////////////
 // Public Methods //////////////////////////////////////////////////////////////
 
 
@@ -131,8 +130,6 @@ void MarlinSerial::begin(long baud)
   sbi(M_UCSRxB, M_TXENx);
   sbi(M_UCSRxB, M_TXENx);
   sbi(M_UCSRxB, M_RXCIEx);
   sbi(M_UCSRxB, M_RXCIEx);
   
   
-#ifndef SNMM
-
   if (selectedSerialPort == 1) { //set up also the second serial port 
   if (selectedSerialPort == 1) { //set up also the second serial port 
 	  if (useU2X) {
 	  if (useU2X) {
 		  UCSR1A = 1 << U2X1;
 		  UCSR1A = 1 << U2X1;
@@ -148,9 +145,8 @@ void MarlinSerial::begin(long baud)
 	  
 	  
 	  sbi(UCSR1B, RXEN1);
 	  sbi(UCSR1B, RXEN1);
 	  sbi(UCSR1B, TXEN1);
 	  sbi(UCSR1B, TXEN1);
-	  sbi(UCSR1B, RXCIE1);	  
+	  sbi(UCSR1B, RXCIE1);
   }
   }
-#endif
 }
 }
 
 
 void MarlinSerial::end()
 void MarlinSerial::end()
@@ -159,11 +155,9 @@ void MarlinSerial::end()
   cbi(M_UCSRxB, M_TXENx);
   cbi(M_UCSRxB, M_TXENx);
   cbi(M_UCSRxB, M_RXCIEx);
   cbi(M_UCSRxB, M_RXCIEx);
 
 
-#ifndef SNMM
   cbi(UCSR1B, RXEN1);
   cbi(UCSR1B, RXEN1);
   cbi(UCSR1B, TXEN1);
   cbi(UCSR1B, TXEN1);
   cbi(UCSR1B, RXCIE1);
   cbi(UCSR1B, RXCIE1);
-#endif
 }
 }
 
 
 
 

+ 2 - 104
Firmware/Marlin_main.cpp

@@ -190,7 +190,6 @@ int extruder_multiply[EXTRUDERS] = {100
   #endif
   #endif
 };
 };
 
 
-int bowden_length[4] = {385, 385, 385, 385};
 
 
 bool homing_flag = false;
 bool homing_flag = false;
 
 
@@ -219,8 +218,6 @@ bool loading_flag = false;
 
 
 #define XY_NO_RESTORE_FLAG (mesh_bed_leveling_flag || homing_flag)
 #define XY_NO_RESTORE_FLAG (mesh_bed_leveling_flag || homing_flag)
 
 
-char snmm_filaments_used = 0;
-
 
 
 bool fan_state[2];
 bool fan_state[2];
 int fan_edge_counter[2];
 int fan_edge_counter[2];
@@ -769,13 +766,6 @@ static void factory_reset(char level)
 		menu_progressbar_finish();
 		menu_progressbar_finish();
 		softReset();
 		softReset();
 		break;
 		break;
-
-
-#ifdef SNMM
-	case 5:
-		bowden_menu();
-		break;
-#endif
 	default:
 	default:
 		break;
 		break;
 	}
 	}
@@ -1493,15 +1483,6 @@ void setup()
 #endif //DEBUG_SD_SPEED_TEST
 #endif //DEBUG_SD_SPEED_TEST
 
 
     eeprom_init();
     eeprom_init();
-#ifdef SNMM
-	if (eeprom_read_dword((uint32_t*)EEPROM_BOWDEN_LENGTH) == 0x0ffffffff) { //bowden length used for SNMM
-	  int _z = BOWDEN_LENGTH;
-	  for(uint8_t i = 0; i < 4; i++) {
-	  	eeprom_update_word((uint16_t*)EEPROM_BOWDEN_LENGTH + i, _z);
-	  }
-	}
-#endif
-
   // In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM.
   // In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM.
   // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version
   // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version
   // is being written into the EEPROM, so the update procedure will be triggered only once.
   // is being written into the EEPROM, so the update procedure will be triggered only once.
@@ -1569,7 +1550,6 @@ void setup()
 #ifdef PAT9125
 #ifdef PAT9125
 	fsensor_setup_interrupt();
 	fsensor_setup_interrupt();
 #endif //PAT9125
 #endif //PAT9125
-	eeprom_update_block(bowden_length, (uint16_t*)EEPROM_BOWDEN_LENGTH, sizeof(bowden_length));
 
 
 #ifndef DEBUG_DISABLE_STARTMSGS
 #ifndef DEBUG_DISABLE_STARTMSGS
   KEEPALIVE_STATE(PAUSED_FOR_USER);
   KEEPALIVE_STATE(PAUSED_FOR_USER);
@@ -4257,12 +4237,6 @@ void process_commands()
 
 
   // PRUSA GCODES
   // PRUSA GCODES
   KEEPALIVE_STATE(IN_HANDLER);
   KEEPALIVE_STATE(IN_HANDLER);
-
-#ifdef SNMM
-  float tmp_motor[3] = DEFAULT_PWM_MOTOR_CURRENT;
-  float tmp_motor_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD;
-  int8_t SilentMode;
-#endif
     /*!
     /*!
 
 
     ---------------------------------------------------------------------------------
     ---------------------------------------------------------------------------------
@@ -6903,7 +6877,6 @@ Sigma_Exit:
           #endif
           #endif
         }
         }
       }
       }
-	  snmm_filaments_used = 0;
       break;
       break;
 
 
     /*!
     /*!
@@ -8881,20 +8854,11 @@ Sigma_Exit:
         M702 [ U | C ]
         M702 [ U | C ]
     
     
     #### Parameters
     #### Parameters
-    - `U` - Unload all filaments used in current print
     - `C` - Unload just current filament
     - `C` - Unload just current filament
     - without any parameters unload all filaments
     - without any parameters unload all filaments
     */
     */
 	case 702:
 	case 702:
 	{
 	{
-#ifdef SNMM
-		if (code_seen('U'))
-			extr_unload_used(); //! if "U" unload all filaments which were used in current print
-		else if (code_seen('C'))
-			extr_unload(); //! if "C" unload just current filament
-		else
-			extr_unload_all(); //! otherwise unload all filaments
-#else
 		if (code_seen('C')) {
 		if (code_seen('C')) {
 			if(mmu_enabled) extr_unload(); //! if "C" unload current filament; if mmu is not present no action is performed
 			if(mmu_enabled) extr_unload(); //! if "C" unload current filament; if mmu is not present no action is performed
 		}
 		}
@@ -8902,8 +8866,6 @@ Sigma_Exit:
 			if(mmu_enabled) extr_unload(); //! unload current filament
 			if(mmu_enabled) extr_unload(); //! unload current filament
 			else unload_filament();
 			else unload_filament();
 		}
 		}
-
-#endif //SNMM
 	}
 	}
 	break;
 	break;
 
 
@@ -8996,7 +8958,6 @@ Sigma_Exit:
               }
               }
           }
           }
           st_synchronize();
           st_synchronize();
-          snmm_filaments_used |= (1 << tmp_extruder); //for stop print
 
 
           if (mmu_enabled)
           if (mmu_enabled)
           {
           {
@@ -9027,47 +8988,6 @@ Sigma_Exit:
           }
           }
           else
           else
           {
           {
-#ifdef SNMM
-              mmu_extruder = tmp_extruder;
-
-              _delay(100);
-
-              disable_e0();
-              disable_e1();
-              disable_e2();
-
-              SET_OUTPUT(E_MUX0_PIN);
-              SET_OUTPUT(E_MUX1_PIN);
-
-              _delay(100);
-              SERIAL_ECHO_START;
-              SERIAL_ECHO("T:");
-              SERIAL_ECHOLN((int)tmp_extruder);
-              switch (tmp_extruder) {
-              case 1:
-                  WRITE(E_MUX0_PIN, HIGH);
-                  WRITE(E_MUX1_PIN, LOW);
-
-                  break;
-              case 2:
-                  WRITE(E_MUX0_PIN, LOW);
-                  WRITE(E_MUX1_PIN, HIGH);
-
-                  break;
-              case 3:
-                  WRITE(E_MUX0_PIN, HIGH);
-                  WRITE(E_MUX1_PIN, HIGH);
-
-                  break;
-              default:
-                  WRITE(E_MUX0_PIN, LOW);
-                  WRITE(E_MUX1_PIN, LOW);
-
-                  break;
-              }
-              _delay(100);
-
-#else //SNMM
               if (tmp_extruder >= EXTRUDERS) {
               if (tmp_extruder >= EXTRUDERS) {
                   SERIAL_ECHO_START;
                   SERIAL_ECHO_START;
                   SERIAL_ECHO('T');
                   SERIAL_ECHO('T');
@@ -9111,8 +9031,6 @@ Sigma_Exit:
                   SERIAL_ECHORPGM(_n("Active Extruder: "));////MSG_ACTIVE_EXTRUDER
                   SERIAL_ECHORPGM(_n("Active Extruder: "));////MSG_ACTIVE_EXTRUDER
                   SERIAL_PROTOCOLLN((int)active_extruder);
                   SERIAL_PROTOCOLLN((int)active_extruder);
               }
               }
-
-#endif //SNMM
           }
           }
       }
       }
   } // end if(code_seen('T')) (end of T codes)
   } // end if(code_seen('T')) (end of T codes)
@@ -12039,35 +11957,15 @@ void M600_wait_for_user(float HotendTempBckp) {
 
 
 void M600_load_filament_movements()
 void M600_load_filament_movements()
 {
 {
-#ifdef SNMM
-	display_loading();
-	do
-	{
-		current_position[E_AXIS] += 0.002;
-		plan_buffer_line_curposXYZE(500, active_extruder);
-		delay_keep_alive(2);
-	}
-	while (!lcd_clicked());
-	st_synchronize();
-	current_position[E_AXIS] += bowden_length[mmu_extruder];
-	plan_buffer_line_curposXYZE(3000, active_extruder);
-	current_position[E_AXIS] += FIL_LOAD_LENGTH - 60;
-	plan_buffer_line_curposXYZE(1400, active_extruder);
-	current_position[E_AXIS] += 40;
-	plan_buffer_line_curposXYZE(400, active_extruder);
-	current_position[E_AXIS] += 10;
-	plan_buffer_line_curposXYZE(50, active_extruder);
-#else
-	current_position[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ;
+	current_position[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED;
 	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST);
 	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST);
-#endif                
 	load_filament_final_feed();
 	load_filament_final_feed();
 	lcd_loading_filament();
 	lcd_loading_filament();
 	st_synchronize();
 	st_synchronize();
 }
 }
 
 
 void M600_load_filament() {
 void M600_load_filament() {
-	//load filament for single material and SNMM 
+	//load filament for single material and MMU
 	lcd_wait_interact();
 	lcd_wait_interact();
 
 
 	//load_filament_time = _millis();
 	//load_filament_time = _millis();

+ 3 - 3
Firmware/eeprom.h

@@ -122,7 +122,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | 0x0FB0h 4016		| int16		| EEPROM_PROBE_TEMP_SHIFT				| ???			| ???					| ???												| ??? 			| D3 Ax0fb0 C10
 | 0x0FB0h 4016		| int16		| EEPROM_PROBE_TEMP_SHIFT				| ???			| ???					| ???												| ??? 			| D3 Ax0fb0 C10
 | 0x0FAFh 4015		| bool		| EEPROM_TEMP_CAL_ACTIVE				| 00h 0			| 00h 0					| PINDA Temp cal.: __inactive__						| LCD menu		| D3 Ax0faf C1
 | 0x0FAFh 4015		| bool		| EEPROM_TEMP_CAL_ACTIVE				| 00h 0			| 00h 0					| PINDA Temp cal.: __inactive__						| LCD menu		| D3 Ax0faf C1
 | ^					| ^			| ^										| ffh 255		| ^						| PINDA Temp cal.: __active__						| ^ 			| ^
 | ^					| ^			| ^										| ffh 255		| ^						| PINDA Temp cal.: __active__						| ^ 			| ^
-| 0x0FA7h 4007		| uint32	| EEPROM_BOWDEN_LENGTH					| ???			| ff 00 00 00h			| Bowden length										| ??? 			| D3 Ax0fae C8
+| 0x0FA7h 4007		| ???		| _EEPROM_FREE_NR6_						| ???			| 						| _Free EEPROM space_								| ??? 			| D3 Ax0fae C8
 | ^					| ^			| ^										| ^				| 00 00 00 00h			| ^													| ^ 			| ^
 | ^					| ^			| ^										| ^				| 00 00 00 00h			| ^													| ^ 			| ^
 | 0x0FA6h 4006		| uint8		| EEPROM_CALIBRATION_STATUS_PINDA		| 00h 0			| ffh 255				| PINDA Temp: __not calibrated__					| ??? 			| D3 Ax0fa6 C1
 | 0x0FA6h 4006		| uint8		| EEPROM_CALIBRATION_STATUS_PINDA		| 00h 0			| ffh 255				| PINDA Temp: __not calibrated__					| ??? 			| D3 Ax0fa6 C1
 | ^					| ^			| ^										| 01h 1			| ^						| PINDA Temp: __calibrated__						| ^ 			| ^
 | ^					| ^			| ^										| 01h 1			| ^						| PINDA Temp: __calibrated__						| ^ 			| ^
@@ -379,8 +379,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 #define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1)
 #define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1)
 #define EEPROM_PROBE_TEMP_SHIFT (EEPROM_PRINT_FLAG - 2*5) //5 x int for storing pinda probe temp shift relative to 50 C; unit: motor steps 
 #define EEPROM_PROBE_TEMP_SHIFT (EEPROM_PRINT_FLAG - 2*5) //5 x int for storing pinda probe temp shift relative to 50 C; unit: motor steps 
 #define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1)
 #define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1)
-#define EEPROM_BOWDEN_LENGTH (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int for bowden lengths for multimaterial
-#define EEPROM_CALIBRATION_STATUS_PINDA (EEPROM_BOWDEN_LENGTH - 1) //0 - not calibrated; 1 - calibrated
+#define _EEPROM_FREE_NR6_ (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int (used to be for bowden lengths for SNMM)
+#define EEPROM_CALIBRATION_STATUS_PINDA (_EEPROM_FREE_NR6_ - 1) //0 - not calibrated; 1 - calibrated
 #define EEPROM_UVLO						(EEPROM_CALIBRATION_STATUS_PINDA - 1) //1 - uvlo during print
 #define EEPROM_UVLO						(EEPROM_CALIBRATION_STATUS_PINDA - 1) //1 - uvlo during print
 #define EEPROM_UVLO_CURRENT_POSITION	(EEPROM_UVLO-2*4) // 2 x float for current_position in X and Y axes
 #define EEPROM_UVLO_CURRENT_POSITION	(EEPROM_UVLO-2*4) // 2 x float for current_position in X and Y axes
 #define EEPROM_FILENAME (EEPROM_UVLO_CURRENT_POSITION - 8) //8chars to store filename without extension
 #define EEPROM_FILENAME (EEPROM_UVLO_CURRENT_POSITION - 8) //8chars to store filename without extension

+ 0 - 4
Firmware/messages.cpp

@@ -34,10 +34,6 @@ const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17
 const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
 const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
 const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
 const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
 const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////c=20 r=2
 const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////c=20 r=2
-const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
-const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
-const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
-const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into extruder 4. Click when done."); ////c=20 r=4
 const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////c=18
 const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////c=18
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=20 r=3
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=20 r=3
 const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20
 const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20

+ 1 - 330
Firmware/mmu.cpp

@@ -879,7 +879,6 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
     lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
     lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
     lcd_print(' ');
     lcd_print(' ');
     lcd_print(tmp_extruder + 1);
     lcd_print(tmp_extruder + 1);
-    snmm_filaments_used |= (1 << tmp_extruder); //for stop print
 
 
     //printf_P(PSTR("T code: %d \n"), tmp_extruder);
     //printf_P(PSTR("T code: %d \n"), tmp_extruder);
     //mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
     //mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
@@ -897,86 +896,8 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
     st_synchronize();
     st_synchronize();
 }
 }
 
 
-
-#ifdef SNMM
-void extr_mov(float shift, float feed_rate)
-{ //move extruder no matter what the current heater temperature is
-	set_extrude_min_temp(.0);
-	current_position[E_AXIS] += shift;
-	plan_buffer_line_curposXYZE(feed_rate, active_extruder);
-	set_extrude_min_temp(EXTRUDE_MINTEMP);
-}
-#endif //SNMM
-
-
-void change_extr(int
-#ifdef SNMM
-        extr
-#endif //SNMM
-        ) { //switches multiplexer for extruders
-#ifdef SNMM
-	st_synchronize();
-	_delay(100);
-
-	disable_e0();
-	disable_e1();
-	disable_e2();
-
-	mmu_extruder = extr;
-
-	SET_OUTPUT(E_MUX0_PIN);
-	SET_OUTPUT(E_MUX1_PIN);
-
-	switch (extr) {
-	case 1:
-		WRITE(E_MUX0_PIN, HIGH);
-		WRITE(E_MUX1_PIN, LOW);
-		
-		break;
-	case 2:
-		WRITE(E_MUX0_PIN, LOW);
-		WRITE(E_MUX1_PIN, HIGH);
-		
-		break;
-	case 3:
-		WRITE(E_MUX0_PIN, HIGH);
-		WRITE(E_MUX1_PIN, HIGH);
-		
-		break;
-	default:
-		WRITE(E_MUX0_PIN, LOW);
-		WRITE(E_MUX1_PIN, LOW);
-		
-		break;
-	}
-	_delay(100);
-#endif
-}
-
-int get_ext_nr()
-{ //reads multiplexer input pins and return current extruder number (counted from 0)
-#ifndef SNMM
-	return(mmu_extruder); //update needed
-#else 
-	return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN));
-#endif
-}
-
-
-void display_loading()
+void extr_adj(uint8_t extruder) //loading filament into the MMU unit
 {
 {
-	switch (mmu_extruder) 
-	{
-	case 1: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T1)); break;
-	case 2: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T2)); break;
-	case 3: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T3)); break;
-	default: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T0)); break;
-	}
-}
-
-void extr_adj(uint8_t extruder) //loading filament for SNMM
-{
-#ifndef SNMM
     MmuCmd cmd = MmuCmd::L0 + extruder;
     MmuCmd cmd = MmuCmd::L0 + extruder;
     if (extruder > (MmuCmd::L4 - MmuCmd::L0))
     if (extruder > (MmuCmd::L4 - MmuCmd::L0))
     {
     {
@@ -1002,45 +923,6 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
 	
 	
 	
 	
 	//lcd_return_to_status();
 	//lcd_return_to_status();
-#else
-
-	bool correct;
-	max_feedrate[E_AXIS] =80;
-	//max_feedrate[E_AXIS] = 50;
-	START:
-	lcd_clear();
-	lcd_set_cursor(0, 0); 
-	switch (extruder) {
-	case 1: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T1)); break;
-	case 2: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T2)); break;
-	case 3: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T3)); break;
-	default: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T0)); break;   
-	}
-	KEEPALIVE_STATE(PAUSED_FOR_USER);
-	do{
-		extr_mov(0.001,1000);
-		delay_keep_alive(2);
-	} while (!lcd_clicked());
-	//delay_keep_alive(500);
-	KEEPALIVE_STATE(IN_HANDLER);
-	st_synchronize();
-	//correct = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FIL_LOADED_CHECK, false);
-	//if (!correct) goto	START;
-	//extr_mov(BOWDEN_LENGTH/2.f, 500); //dividing by 2 is there because of max. extrusion length limitation (x_max + y_max)
-	//extr_mov(BOWDEN_LENGTH/2.f, 500);
-	extr_mov(bowden_length[extruder], 500);
-	lcd_clear();
-	lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
-	if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd_set_cursor(0, 1);
-	else lcd_print(' ');
-	lcd_print(mmu_extruder + 1);
-	lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
-	st_synchronize();
-	max_feedrate[E_AXIS] = 50;
-	lcd_update_enable(true);
-	lcd_return_to_status();
-	lcdDrawUpdate = 2;
-#endif
 }
 }
 
 
 struct E_step
 struct E_step
@@ -1087,15 +969,8 @@ void extr_unload_view()
 
 
 void extr_unload()
 void extr_unload()
 { //unload just current filament for multimaterial printers
 { //unload just current filament for multimaterial printers
-#ifdef SNMM
-	float tmp_motor[3] = DEFAULT_PWM_MOTOR_CURRENT;
-	float tmp_motor_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD;
-	uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
-#endif
-
 	if (degHotend0() > EXTRUDE_MINTEMP)
 	if (degHotend0() > EXTRUDE_MINTEMP)
 	{
 	{
-#ifndef SNMM
 		st_synchronize();
 		st_synchronize();
 
 
         menu_submenu(extr_unload_view);
         menu_submenu(extr_unload_view);
@@ -1107,58 +982,6 @@ void extr_unload()
 		manage_response(false, true, MMU_UNLOAD_MOVE);
 		manage_response(false, true, MMU_UNLOAD_MOVE);
 
 
         menu_back();
         menu_back();
-#else //SNMM
-
-		lcd_clear();
-		lcd_display_message_fullscreen_P(PSTR(""));
-		max_feedrate[E_AXIS] = 50;
-		lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
-		lcd_print(' ');
-		lcd_print(mmu_extruder + 1);
-		lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
-		if (current_position[Z_AXIS] < 15) {
-			current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion
-			plan_buffer_line_curposXYZE(25, active_extruder);
-		}
-		
-		current_position[E_AXIS] += 10; //extrusion
-		plan_buffer_line_curposXYZE(10, active_extruder);
-		st_current_set(2, E_MOTOR_HIGH_CURRENT);
-		if (current_temperature[0] < 230) { //PLA & all other filaments
-			current_position[E_AXIS] += 5.4;
-			plan_buffer_line_curposXYZE(2800 / 60, active_extruder);
-			current_position[E_AXIS] += 3.2;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			current_position[E_AXIS] += 3;
-			plan_buffer_line_curposXYZE(3400 / 60, active_extruder);
-		}
-		else { //ABS
-			current_position[E_AXIS] += 3.1;
-			plan_buffer_line_curposXYZE(2000 / 60, active_extruder);
-			current_position[E_AXIS] += 3.1;
-			plan_buffer_line_curposXYZE(2500 / 60, active_extruder);
-			current_position[E_AXIS] += 4;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			/*current_position[X_AXIS] += 23; //delay
-			plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay
-			current_position[X_AXIS] -= 23; //delay
-			plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay*/
-			delay_keep_alive(4700);
-		}
-	
-		max_feedrate[E_AXIS] = 80;
-		current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
-		plan_buffer_line_curposXYZE(500, active_extruder);
-		current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
-		plan_buffer_line_curposXYZE(500, active_extruder);
-		st_synchronize();
-		//st_current_init();
-		if (SilentMode != SILENT_MODE_OFF) st_current_set(2, tmp_motor[2]); //set back to normal operation currents
-		else st_current_set(2, tmp_motor_loud[2]);
-		lcd_update_enable(true);
-		lcd_return_to_status();
-		max_feedrate[E_AXIS] = 50;
-#endif //SNMM
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1166,165 +989,13 @@ void extr_unload()
 	}
 	}
 }
 }
 
 
-//wrapper functions for loading filament
-void extr_adj_0()
-{
-#ifndef SNMM
-	enquecommand_P(PSTR("M701 E0"));
-#else
-	change_extr(0);
-	extr_adj(0);
-#endif
-}
-
-void extr_adj_1()
-{
-#ifndef SNMM
-	enquecommand_P(PSTR("M701 E1"));
-#else
-	change_extr(1);
-	extr_adj(1);
-#endif
-}
-
-void extr_adj_2()
-{
-#ifndef SNMM
-	enquecommand_P(PSTR("M701 E2"));
-#else
-	change_extr(2);
-	extr_adj(2);
-#endif
-}
-
-void extr_adj_3()
-{
-#ifndef SNMM
-	enquecommand_P(PSTR("M701 E3"));
-#else
-	change_extr(3);
-	extr_adj(3);
-#endif
-}
-
-void extr_adj_4()
-{
-#ifndef SNMM
-	enquecommand_P(PSTR("M701 E4"));
-#else
-	change_extr(4);
-	extr_adj(4);
-#endif
-}
-
 void load_all()
 void load_all()
 {
 {
-#ifndef SNMM
 	enquecommand_P(PSTR("M701 E0"));
 	enquecommand_P(PSTR("M701 E0"));
 	enquecommand_P(PSTR("M701 E1"));
 	enquecommand_P(PSTR("M701 E1"));
 	enquecommand_P(PSTR("M701 E2"));
 	enquecommand_P(PSTR("M701 E2"));
 	enquecommand_P(PSTR("M701 E3"));
 	enquecommand_P(PSTR("M701 E3"));
 	enquecommand_P(PSTR("M701 E4"));
 	enquecommand_P(PSTR("M701 E4"));
-#else
-	for (int i = 0; i < 4; i++)
-	{
-		change_extr(i);
-		extr_adj(i);
-	}
-#endif
-}
-
-//wrapper functions for changing extruders
-void extr_change_0()
-{
-	change_extr(0);
-	lcd_return_to_status();
-}
-
-void extr_change_1()
-{
-	change_extr(1);
-	lcd_return_to_status();
-}
-
-void extr_change_2()
-{
-	change_extr(2);
-	lcd_return_to_status();
-}
-
-void extr_change_3()
-{
-	change_extr(3);
-	lcd_return_to_status();
-}
-
-#ifdef SNMM
-//wrapper functions for unloading filament
-void extr_unload_all()
-{
-	if (degHotend0() > EXTRUDE_MINTEMP)
-	{
-		for (int i = 0; i < 4; i++)
-		{
-			change_extr(i);
-			extr_unload();
-		}
-	}
-	else
-	{
-		show_preheat_nozzle_warning();
-		lcd_return_to_status();
-	}
-}
-
-//unloading just used filament (for snmm)
-void extr_unload_used()
-{
-	if (degHotend0() > EXTRUDE_MINTEMP) {
-		for (int i = 0; i < 4; i++) {
-			if (snmm_filaments_used & (1 << i)) {
-				change_extr(i);
-				extr_unload();
-			}
-		}
-		snmm_filaments_used = 0;
-	}
-	else {
-		show_preheat_nozzle_warning();
-		lcd_return_to_status();
-	}
-}
-#endif //SNMM
-
-void extr_unload_0()
-{
-	change_extr(0);
-	extr_unload();
-}
-
-void extr_unload_1()
-{
-	change_extr(1);
-	extr_unload();
-}
-
-void extr_unload_2()
-{
-	change_extr(2);
-	extr_unload();
-}
-
-void extr_unload_3()
-{
-	change_extr(3);
-	extr_unload();
-}
-
-void extr_unload_4()
-{
-	change_extr(4);
-	extr_unload();
 }
 }
 
 
 bool mmu_check_version()
 bool mmu_check_version()

+ 0 - 23
Firmware/mmu.h

@@ -101,32 +101,9 @@ extern void mmu_load_to_nozzle();
 extern void mmu_M600_load_filament(bool automatic, float nozzle_temp);
 extern void mmu_M600_load_filament(bool automatic, float nozzle_temp);
 extern void mmu_M600_wait_and_beep();
 extern void mmu_M600_wait_and_beep();
 
 
-extern void extr_mov(float shift, float feed_rate);
-extern void change_extr(int extr);
-extern int get_ext_nr();
-extern void display_loading();
 extern void extr_adj(uint8_t extruder);
 extern void extr_adj(uint8_t extruder);
 extern void extr_unload();
 extern void extr_unload();
-
-extern void extr_adj_0();
-extern void extr_adj_1();
-extern void extr_adj_2();
-extern void extr_adj_3();
-extern void extr_adj_4();
 extern void load_all();
 extern void load_all();
-extern void extr_change_0();
-extern void extr_change_1();
-extern void extr_change_2();
-extern void extr_change_3();
-#ifdef SNMM
-extern void extr_unload_all();
-extern void extr_unload_used();
-#endif //SNMM
-extern void extr_unload_0();
-extern void extr_unload_1();
-extern void extr_unload_2();
-extern void extr_unload_3();
-extern void extr_unload_4();
 
 
 extern bool mmu_check_version();
 extern bool mmu_check_version();
 extern void mmu_show_warning();
 extern void mmu_show_warning();

+ 0 - 5
Firmware/pins_Rambo_1_0.h

@@ -64,11 +64,6 @@
 #define E0_MS1_PIN             65
 #define E0_MS1_PIN             65
 #define E0_MS2_PIN             66
 #define E0_MS2_PIN             66
 
 
-#ifdef SNMM 
-  #define E_MUX0_PIN 17
-  #define E_MUX1_PIN 16
-#endif
-
 
 
 #define MOTOR_CURRENT_PWM_XY_PIN 46
 #define MOTOR_CURRENT_PWM_XY_PIN 46
 #define MOTOR_CURRENT_PWM_Z_PIN  45
 #define MOTOR_CURRENT_PWM_Z_PIN  45

+ 0 - 5
Firmware/pins_Rambo_1_3.h

@@ -67,11 +67,6 @@
 #define E0_MS1_PIN             65
 #define E0_MS1_PIN             65
 #define E0_MS2_PIN             66
 #define E0_MS2_PIN             66
 
 
-#ifdef SNMM 
-  #define E_MUX0_PIN 17
-  #define E_MUX1_PIN 16
-#endif
-
 
 
 #define MOTOR_CURRENT_PWM_XY_PIN 46
 #define MOTOR_CURRENT_PWM_XY_PIN 46
 #define MOTOR_CURRENT_PWM_Z_PIN  45
 #define MOTOR_CURRENT_PWM_Z_PIN  45

+ 2 - 10
Firmware/stepper.cpp

@@ -446,20 +446,12 @@ FORCE_INLINE void stepper_next_block()
     }
     }
     if ((out_bits & (1 << E_AXIS)) != 0) { // -direction
     if ((out_bits & (1 << E_AXIS)) != 0) { // -direction
 #ifndef LIN_ADVANCE
 #ifndef LIN_ADVANCE
-      WRITE(E0_DIR_PIN, 
-  #ifdef SNMM
-        (mmu_extruder == 0 || mmu_extruder == 2) ? !INVERT_E0_DIR :
-  #endif // SNMM
-        INVERT_E0_DIR);
+      WRITE(E0_DIR_PIN, INVERT_E0_DIR);
 #endif /* LIN_ADVANCE */
 #endif /* LIN_ADVANCE */
       count_direction[E_AXIS] = -1;
       count_direction[E_AXIS] = -1;
     } else { // +direction
     } else { // +direction
 #ifndef LIN_ADVANCE
 #ifndef LIN_ADVANCE
-      WRITE(E0_DIR_PIN,
-  #ifdef SNMM
-        (mmu_extruder == 0 || mmu_extruder == 2) ? INVERT_E0_DIR :
-  #endif // SNMM
-        !INVERT_E0_DIR);
+      WRITE(E0_DIR_PIN, !INVERT_E0_DIR);
 #endif /* LIN_ADVANCE */
 #endif /* LIN_ADVANCE */
       count_direction[E_AXIS] = 1;
       count_direction[E_AXIS] = 1;
     }
     }

+ 32 - 631
Firmware/ultralcd.cpp

@@ -239,18 +239,11 @@ static void lcd_detect_IRsensor();
 static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2);
 static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2);
 static void lcd_colorprint_change();
 static void lcd_colorprint_change();
 
 
-#if defined (SNMM) || defined(SNMM_V2)
-static void fil_load_menu();
-static void fil_unload_menu();
-#endif // SNMM || SNMM_V2
 static void lcd_disable_farm_mode();
 static void lcd_disable_farm_mode();
 static void lcd_set_fan_check();
 static void lcd_set_fan_check();
 #ifdef MMU_HAS_CUTTER
 #ifdef MMU_HAS_CUTTER
 static void lcd_cutter_enabled();
 static void lcd_cutter_enabled();
 #endif
 #endif
-#ifdef SNMM
-static char snmm_stop_print_menu();
-#endif //SNMM
 #ifdef SDCARD_SORT_ALPHA
 #ifdef SDCARD_SORT_ALPHA
  static void lcd_sort_type_set();
  static void lcd_sort_type_set();
 #endif
 #endif
@@ -889,273 +882,6 @@ void lcd_commands()
 		}
 		}
 	}
 	}
 
 
-
-#ifdef SNMM
-	if (lcd_commands_type == LcdCommands::Layer1Cal)
-	{
-		char cmd1[30];
-		float width = 0.4;
-		float length = 20 - width;
-		float extr = count_e(0.2, width, length);
-		float extr_short_segment = count_e(0.2, width, width);
-
-		if (lcd_commands_step>1) lcd_timeoutToStatus.start(); //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen
-		if (lcd_commands_step == 0)
-		{
-			lcd_commands_step = 10;
-		}
-		if (lcd_commands_step == 10 && !blocks_queued() && cmd_buffer_empty())
-		{
-			enquecommand_P(PSTR("M107"));
-			enquecommand_P(PSTR("M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP)));
-			enquecommand_P(PSTR("M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP)));
-			enquecommand_P(PSTR("M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP)));
-			enquecommand_P(PSTR("M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP)));
-			enquecommand_P(PSTR("T0"));
-			enquecommand_P(_T(MSG_M117_V2_CALIBRATION));
-			enquecommand_P(PSTR("G87")); //sets calibration status
-			enquecommand_P(PSTR("G28"));
-			enquecommand_P(PSTR("G21")); //set units to millimeters
-			enquecommand_P(PSTR("G90")); //use absolute coordinates
-			enquecommand_P(PSTR("M83")); //use relative distances for extrusion
-			enquecommand_P(PSTR("G92 E0"));
-			enquecommand_P(PSTR("M203 E100"));
-			enquecommand_P(PSTR("M92 E140"));
-			lcd_commands_step = 9;
-		}
-		if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			enquecommand_P(PSTR("G1 Z0.250 F7200.000"));
-			enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0"));
-			enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0"));
-			enquecommand_P(PSTR("G1 Z0.200 F7200.000"));
-			enquecommand_P(PSTR("G1 X220.0 E13 F1000.0"));
-			enquecommand_P(PSTR("G1 X240.0 E0 F1000.0"));
-			enquecommand_P(PSTR("G92 E0.0"));
-			enquecommand_P(PSTR("G21"));
-			enquecommand_P(PSTR("G90"));
-			enquecommand_P(PSTR("M83"));
-			enquecommand_P(PSTR("G1 E-4 F2100.00000"));
-			enquecommand_P(PSTR("G1 Z0.150 F7200.000"));
-			enquecommand_P(PSTR("M204 S1000"));
-			enquecommand_P(PSTR("G1 F4000"));
-
-			lcd_clear();
-			menu_goto(lcd_babystep_z, 0, false, true);
-
-
-			lcd_commands_step = 8;
-		}
-		if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) //draw meander
-		{
-			lcd_timeoutToStatus.start();
-
-
-			enquecommand_P(PSTR("G1 X50 Y155"));
-			enquecommand_P(PSTR("G1 X60 Y155 E4"));
-			enquecommand_P(PSTR("G1 F1080"));
-			enquecommand_P(PSTR("G1 X75 Y155 E2.5"));
-			enquecommand_P(PSTR("G1 X100 Y155 E2"));
-			enquecommand_P(PSTR("G1 X200 Y155 E2.62773"));
-			enquecommand_P(PSTR("G1 X200 Y135 E0.66174"));
-			enquecommand_P(PSTR("G1 X50 Y135 E3.62773"));
-			enquecommand_P(PSTR("G1 X50 Y115 E0.49386"));
-			enquecommand_P(PSTR("G1 X200 Y115 E3.62773"));
-			enquecommand_P(PSTR("G1 X200 Y95 E0.49386"));
-			enquecommand_P(PSTR("G1 X50 Y95 E3.62773"));
-			enquecommand_P(PSTR("G1 X50 Y75 E0.49386"));
-			enquecommand_P(PSTR("G1 X200 Y75 E3.62773"));
-			enquecommand_P(PSTR("G1 X200 Y55 E0.49386"));
-			enquecommand_P(PSTR("G1 X50 Y55 E3.62773"));
-
-			lcd_commands_step = 7;
-		}
-
-		if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			strcpy(cmd1, "G1 X50 Y35 E");
-			strcat(cmd1, ftostr43(extr));
-			enquecommand(cmd1);
-
-			for (int i = 0; i < 4; i++) {
-				strcpy(cmd1, "G1 X70 Y");
-				strcat(cmd1, ftostr32(35 - i*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 X50 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-			}
-
-			lcd_commands_step = 6;
-		}
-
-		if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			for (int i = 4; i < 8; i++) {
-				strcpy(cmd1, "G1 X70 Y");
-				strcat(cmd1, ftostr32(35 - i*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 X50 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-			}
-
-			lcd_commands_step = 5;
-		}
-
-		if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			for (int i = 8; i < 12; i++) {
-				strcpy(cmd1, "G1 X70 Y");
-				strcat(cmd1, ftostr32(35 - i*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 X50 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-			}
-
-			lcd_commands_step = 4;
-		}
-
-		if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			for (int i = 12; i < 16; i++) {
-				strcpy(cmd1, "G1 X70 Y");
-				strcat(cmd1, ftostr32(35 - i*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 X50 Y");
-				strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr));
-				enquecommand(cmd1);
-				strcpy(cmd1, "G1 Y");
-				strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
-				strcat(cmd1, " E");
-				strcat(cmd1, ftostr43(extr_short_segment));
-				enquecommand(cmd1);
-			}
-
-			lcd_commands_step = 3;
-		}
-
-		if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-			enquecommand_P(PSTR("G1 E-0.07500 F2100.00000"));
-			enquecommand_P(PSTR("G4 S0"));
-			enquecommand_P(PSTR("G1 E-4 F2100.00000"));
-			enquecommand_P(PSTR("G1 Z0.5 F7200.000"));
-			enquecommand_P(PSTR("G1 X245 Y1"));
-			enquecommand_P(PSTR("G1 X240 E4"));
-			enquecommand_P(PSTR("G1 F4000"));
-			enquecommand_P(PSTR("G1 X190 E2.7"));
-			enquecommand_P(PSTR("G1 F4600"));
-			enquecommand_P(PSTR("G1 X110 E2.8"));
-			enquecommand_P(PSTR("G1 F5200"));
-			enquecommand_P(PSTR("G1 X40 E3"));
-			enquecommand_P(PSTR("G1 E-15.0000 F5000"));
-			enquecommand_P(PSTR("G1 E-50.0000 F5400"));
-			enquecommand_P(PSTR("G1 E-15.0000 F3000"));
-			enquecommand_P(PSTR("G1 E-12.0000 F2000"));
-			enquecommand_P(PSTR("G1 F1600"));
-
-			lcd_commands_step = 2;
-		}
-		if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_timeoutToStatus.start();
-
-			enquecommand_P(PSTR("G1 X0 Y1 E3.0000"));
-			enquecommand_P(PSTR("G1 X50 Y1 E-5.0000"));
-			enquecommand_P(PSTR("G1 F2000"));
-			enquecommand_P(PSTR("G1 X0 Y1 E5.0000"));
-			enquecommand_P(PSTR("G1 X50 Y1 E-5.0000"));
-			enquecommand_P(PSTR("G1 F2400"));
-			enquecommand_P(PSTR("G1 X0 Y1 E5.0000"));
-			enquecommand_P(PSTR("G1 X50 Y1 E-5.0000"));
-			enquecommand_P(PSTR("G1 F2400"));
-			enquecommand_P(PSTR("G1 X0 Y1 E5.0000"));
-			enquecommand_P(PSTR("G1 X50 Y1 E-3.0000"));
-			enquecommand_P(PSTR("G4 S0"));
-			enquecommand_P(PSTR("M107"));
-			enquecommand_P(PSTR("M104 S0"));
-			enquecommand_P(PSTR("M140 S0"));
-			enquecommand_P(PSTR("G1 X10 Y180 F4000"));
-			enquecommand_P(PSTR("G1 Z10 F1300.000"));
-			enquecommand_P(PSTR("M84"));
-
-			lcd_commands_step = 1;
-
-		}
-
-		if (lcd_commands_step == 1 && !blocks_queued() && cmd_buffer_empty())
-		{
-			lcd_setstatuspgm(MSG_WELCOME);
-			lcd_commands_step = 0;
-			lcd_commands_type = 0;
-			if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) {
-				lcd_wizard(WizState::RepeatLay1Cal);
-			}
-		}
-
-	}
-
-#else //if not SNMM
-
 	if (lcd_commands_type == LcdCommands::Layer1Cal)
 	if (lcd_commands_type == LcdCommands::Layer1Cal)
 	{
 	{
 		char cmd1[30];
 		char cmd1[30];
@@ -1245,8 +971,6 @@ void lcd_commands()
 			}
 			}
 		}
 		}
 
 
-#endif // not SNMM
-
 	if (lcd_commands_type == LcdCommands::FarmModeConfirm)   /// farm mode confirm
 	if (lcd_commands_type == LcdCommands::FarmModeConfirm)   /// farm mode confirm
 	{
 	{
 
 
@@ -1280,11 +1004,7 @@ void lcd_commands()
 			enquecommand_P(PSTR("G91"));
 			enquecommand_P(PSTR("G91"));
 			enquecommand_P(PSTR("G1 Z15 F1500"));
 			enquecommand_P(PSTR("G1 Z15 F1500"));
 			st_synchronize();
 			st_synchronize();
-			#ifdef SNMM
-			lcd_commands_step = 7;
-			#else
 			lcd_commands_step = 5;
 			lcd_commands_step = 5;
-			#endif
 		}
 		}
 
 
 	}
 	}
@@ -2443,12 +2163,7 @@ void lcd_wait_interact() {
 
 
   lcd_clear();
   lcd_clear();
 
 
-  lcd_set_cursor(0, 1);
-#ifdef SNMM 
-  lcd_puts_P(_i("Prepare new filament"));////MSG_PREPARE_FILAMENT c=20
-#else
-  lcd_puts_P(_i("Insert filament"));////MSG_INSERT_FILAMENT c=20
-#endif
+  lcd_puts_at_P(0, 1, _i("Insert filament"));////MSG_INSERT_FILAMENT c=20
   if (!fsensor_autoload_enabled) {
   if (!fsensor_autoload_enabled) {
 	  lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2
 	  lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2
   }
   }
@@ -2494,25 +2209,9 @@ void lcd_loading_filament() {
 
 
   lcd_puts_at_P(0, 0, _T(MSG_LOADING_FILAMENT));
   lcd_puts_at_P(0, 0, _T(MSG_LOADING_FILAMENT));
   lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
   lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
-#ifdef SNMM
-  for (int i = 0; i < 20; i++) {
-
-    lcd_set_cursor(i, 3);
-    lcd_print('.');
-    for (int j = 0; j < 10 ; j++) {
-      manage_heater();
-      manage_inactivity(true);
-
-      _delay(153);
-    }
-
-
-  }
-#else //SNMM
   uint16_t slow_seq_time = (FILAMENTCHANGE_FINALFEED * 1000ul) / FILAMENTCHANGE_EFEED_FINAL;
   uint16_t slow_seq_time = (FILAMENTCHANGE_FINALFEED * 1000ul) / FILAMENTCHANGE_EFEED_FINAL;
   uint16_t fast_seq_time = (FILAMENTCHANGE_FIRSTFEED * 1000ul) / FILAMENTCHANGE_EFEED_FIRST;
   uint16_t fast_seq_time = (FILAMENTCHANGE_FIRSTFEED * 1000ul) / FILAMENTCHANGE_EFEED_FIRST;
   lcd_loading_progress_bar(slow_seq_time + fast_seq_time); //show progress bar for total time of filament loading fast + slow sequence
   lcd_loading_progress_bar(slow_seq_time + fast_seq_time); //show progress bar for total time of filament loading fast + slow sequence
-#endif //SNMM
 }
 }
 
 
 
 
@@ -4454,97 +4153,6 @@ void lcd_calibrate_pinda() {
 	lcd_return_to_status();
 	lcd_return_to_status();
 }
 }
 
 
-#ifndef SNMM
-
-/*void lcd_calibrate_extruder() {
-	
-	if (degHotend0() > EXTRUDE_MINTEMP)
-	{
-		current_position[E_AXIS] = 0;									//set initial position to zero
-		plan_set_e_position(current_position[E_AXIS]);
-		
-		//long steps_start = st_get_position(E_AXIS);
-
-		long steps_final;
-		float e_steps_per_unit;
-		float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 1;	//3	//initial automatic extrusion feedrate (depends on current value of axis_steps_per_unit to avoid too fast extrusion)
-		float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; //length of initial automatic extrusion sequence
-		const char   *msg_e_cal_knob = _i("Rotate knob until mark reaches extruder body. Click when done.");////MSG_E_CAL_KNOB c=20 r=8
-		const char   *msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_e_cal_knob);
-		const bool    multi_screen = msg_next_e_cal_knob != NULL;
-		unsigned long msg_millis;
-
-		lcd_show_fullscreen_message_and_wait_P(_i("Mark filament 100mm from extruder body. Click when done."));////MSG_MARK_FIL c=20 r=8
-		lcd_clear();
-		
-		
-		lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_PLEASE_WAIT));
-		current_position[E_AXIS] += e_shift_calibration;
-		plan_buffer_line_curposXYZE(feedrate, active_extruder);
-		st_synchronize();
-
-		lcd_display_message_fullscreen_P(msg_e_cal_knob);
-		msg_millis = _millis();
-		while (!LCD_CLICKED) {
-			if (multi_screen && _millis() - msg_millis > 5000) {
-				if (msg_next_e_cal_knob == NULL)
-					msg_next_e_cal_knob = msg_e_cal_knob;
-					msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_next_e_cal_knob);
-					msg_millis = _millis();
-			}
-
-			//manage_inactivity(true);
-			manage_heater();
-			if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) {						//adjusting mark by knob rotation
-				delay_keep_alive(50);
-				//previous_millis_cmd = _millis();
-				lcd_encoder += (lcd_encoder_diff / ENCODER_PULSES_PER_STEP);
-				lcd_encoder_diff = 0;
-				if (!planner_queue_full()) {
-					current_position[E_AXIS] += float(abs((int)lcd_encoder)) * 0.01; //0.05
-					lcd_encoder = 0;
-					plan_buffer_line_curposXYZE(feedrate, active_extruder);
-					
-				}
-			}	
-		}
-		
-		steps_final = current_position[E_AXIS] * axis_steps_per_unit[E_AXIS];
-		//steps_final = st_get_position(E_AXIS);
-		lcd_draw_update = 1;
-		e_steps_per_unit = ((float)(steps_final)) / 100.0f;
-		if (e_steps_per_unit < MIN_E_STEPS_PER_UNIT) e_steps_per_unit = MIN_E_STEPS_PER_UNIT;				
-		if (e_steps_per_unit > MAX_E_STEPS_PER_UNIT) e_steps_per_unit = MAX_E_STEPS_PER_UNIT;
-
-		lcd_clear();
-
-		axis_steps_per_unit[E_AXIS] = e_steps_per_unit;
-		enquecommand_P(PSTR("M500")); //store settings to eeprom
-	
-		//lcd_drawedit(PSTR("Result"), ftostr31(axis_steps_per_unit[E_AXIS]));
-		//delay_keep_alive(2000);
-		delay_keep_alive(500);
-		lcd_show_fullscreen_message_and_wait_P(_i("E calibration finished. Please clean the nozzle. Click when done."));////MSG_CLEAN_NOZZLE_E c=20 r=8
-		lcd_update_enable(true);
-		lcd_draw_update = 2;
-
-	}
-	else
-	{
-		show_preheat_nozzle_warning();
-	}
-	lcd_return_to_status();
-}
-
-void lcd_extr_cal_reset() {
-	float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT;
-	axis_steps_per_unit[E_AXIS] = tmp1[3];
-	//extrudemultiply = 100;
-	enquecommand_P(PSTR("M500"));
-}*/
-
-#endif
-
 void lcd_toshiba_flash_air_compatibility_toggle()
 void lcd_toshiba_flash_air_compatibility_toggle()
 {
 {
    card.ToshibaFlashAir_enable(! card.ToshibaFlashAir_isEnabled());
    card.ToshibaFlashAir_enable(! card.ToshibaFlashAir_isEnabled());
@@ -4723,9 +4331,6 @@ static void lcd_wizard_load()
 	lcd_update_enable(false);
 	lcd_update_enable(false);
 	lcd_clear();
 	lcd_clear();
 	lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT));
 	lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT));
-#ifdef SNMM
-	change_extr(0);
-#endif
 	loading_flag = true;
 	loading_flag = true;
 	gcode_M701();
 	gcode_M701();
 }
 }
@@ -5685,11 +5290,8 @@ static void lcd_calibration_menu()
     MENU_ITEM_FUNCTION_P(_i("Calibrate XYZ"), lcd_mesh_calibration);////MSG_CALIBRATE_BED c=18
     MENU_ITEM_FUNCTION_P(_i("Calibrate XYZ"), lcd_mesh_calibration);////MSG_CALIBRATE_BED c=18
     // "Calibrate Z" with storing the reference values to EEPROM.
     // "Calibrate Z" with storing the reference values to EEPROM.
     MENU_ITEM_SUBMENU_P(_T(MSG_HOMEYZ), lcd_mesh_calibration_z);
     MENU_ITEM_SUBMENU_P(_T(MSG_HOMEYZ), lcd_mesh_calibration_z);
-#ifndef SNMM
-	//MENU_ITEM_FUNCTION_P(_i("Calibrate E"), lcd_calibrate_extruder);////MSG_CALIBRATE_E c=20
-#endif
-    // "Mesh Bed Leveling"
-    MENU_ITEM_SUBMENU_P(_T(MSG_MESH_BED_LEVELING), lcd_mesh_bedleveling);
+
+    MENU_ITEM_SUBMENU_P(_T(MSG_MESH_BED_LEVELING), lcd_mesh_bedleveling); ////MSG_MESH_BED_LEVELING c=18
 
 
     MENU_ITEM_SUBMENU_P(_i("Bed level correct"), lcd_adjust_bed);////MSG_BED_CORRECTION_MENU c=18
     MENU_ITEM_SUBMENU_P(_i("Bed level correct"), lcd_adjust_bed);////MSG_BED_CORRECTION_MENU c=18
 	MENU_ITEM_SUBMENU_P(_i("PID calibration"), pid_extruder);////MSG_PID_EXTRUDER c=17
 	MENU_ITEM_SUBMENU_P(_i("PID calibration"), pid_extruder);////MSG_PID_EXTRUDER c=17
@@ -5697,9 +5299,6 @@ static void lcd_calibration_menu()
     MENU_ITEM_SUBMENU_P(_i("Show end stops"), menu_show_end_stops);////MSG_SHOW_END_STOPS c=18
     MENU_ITEM_SUBMENU_P(_i("Show end stops"), menu_show_end_stops);////MSG_SHOW_END_STOPS c=18
 #endif
 #endif
     MENU_ITEM_GCODE_P(_i("Reset XYZ calibr."), PSTR("M44"));////MSG_CALIBRATE_BED_RESET c=18
     MENU_ITEM_GCODE_P(_i("Reset XYZ calibr."), PSTR("M44"));////MSG_CALIBRATE_BED_RESET c=18
-#ifndef SNMM
-	//MENU_ITEM_FUNCTION_P(MSG_RESET_CALIBRATE_E, lcd_extr_cal_reset);
-#endif
     if(has_temperature_compensation())
     if(has_temperature_compensation())
     {
     {
 	    MENU_ITEM_SUBMENU_P(_i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17
 	    MENU_ITEM_SUBMENU_P(_i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17
@@ -5709,156 +5308,6 @@ static void lcd_calibration_menu()
   MENU_END();
   MENU_END();
 }
 }
 
 
-void bowden_menu() {
-	int enc_dif = lcd_encoder_diff;
-	int cursor_pos = 0;
-	lcd_clear();
-	lcd_putc_at(0, 0, '>');
-	for (uint_least8_t i = 0; i < 4; i++) {
-		lcd_puts_at_P(1, i, PSTR("Extruder "));
-		lcd_print(i);
-		lcd_print(": ");
-		bowden_length[i] = eeprom_read_word((uint16_t*)EEPROM_BOWDEN_LENGTH + i);
-		lcd_print(bowden_length[i] - 48);
-
-	}
-	enc_dif = lcd_encoder_diff;
-	lcd_consume_click();
-	while (1) {
-
-		manage_heater();
-		manage_inactivity(true);
-
-		if (abs((enc_dif - lcd_encoder_diff)) > 2) {
-
-			if (enc_dif > lcd_encoder_diff) {
-					cursor_pos--;
-				}
-
-				if (enc_dif < lcd_encoder_diff) {
-					cursor_pos++;
-				}
-
-				if (cursor_pos > 3) {
-					cursor_pos = 3;
-					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
-				}
-
-				if (cursor_pos < 0) {
-					cursor_pos = 0;
-					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
-				}
-
-				lcd_puts_at_P(0, 0, PSTR(" \n \n \n "));
-				lcd_putc_at(0, cursor_pos, '>');
-				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
-				enc_dif = lcd_encoder_diff;
-				_delay(100);
-		}
-
-		if (lcd_clicked()) {
-			Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
-			lcd_clear();
-			while (1) {
-
-				manage_heater();
-				manage_inactivity(true);
-
-				lcd_puts_at_P(1, 1, PSTR("Extruder "));
-				lcd_print(cursor_pos);
-				lcd_print(": ");
-				lcd_set_cursor(13, 1);
-				lcd_print(bowden_length[cursor_pos] - 48);
-
-				if (abs((enc_dif - lcd_encoder_diff)) > 2) {
-						if (enc_dif > lcd_encoder_diff) {
-							bowden_length[cursor_pos]--;
-							lcd_set_cursor(13, 1);
-							lcd_print(bowden_length[cursor_pos] - 48);
-							enc_dif = lcd_encoder_diff;
-						}
-
-						if (enc_dif < lcd_encoder_diff) {
-							bowden_length[cursor_pos]++;
-							lcd_set_cursor(13, 1);
-							lcd_print(bowden_length[cursor_pos] - 48);
-							enc_dif = lcd_encoder_diff;
-						}
-				}
-				_delay(100);
-				if (lcd_clicked()) {
-					Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
-					eeprom_update_word((uint16_t*)EEPROM_BOWDEN_LENGTH + cursor_pos, bowden_length[cursor_pos]);
-					if (lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Continue with another bowden?"))) {
-						lcd_update_enable(true);
-						lcd_clear();
-						enc_dif = lcd_encoder_diff;
-						lcd_putc_at(0, cursor_pos, '>');
-						for (uint_least8_t i = 0; i < 4; i++) {
-							lcd_puts_at_P(1, i, PSTR("Extruder "));
-							lcd_print(i);
-							lcd_print(": ");
-							bowden_length[i] = eeprom_read_word((uint16_t*)EEPROM_BOWDEN_LENGTH + i);
-							lcd_print(bowden_length[i] - 48);
-
-						}
-						break;
-					}
-					else return;
-				}
-			}
-		}
-	}
-}
-
-#ifdef SNMM
-
-static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
-	lcd_clear();
-	lcd_puts_at_P(0,0,_T(MSG_UNLOAD_FILAMENT)); lcd_print(':');
-	lcd_set_cursor(0, 1); lcd_print('>');
-	lcd_puts_at_P(1,2,_i("Used during print"));////MSG_USED c=19
-	lcd_puts_at_P(1,3,_i("Current"));////MSG_CURRENT c=19
-	char cursor_pos = 1;
-	int enc_dif = 0;
-	KEEPALIVE_STATE(PAUSED_FOR_USER);
-	lcd_consume_click();
-	while (1) {
-		manage_heater();
-		manage_inactivity(true);
-		if (abs((enc_dif - lcd_encoder_diff)) > 4) {
-
-			if ((abs(enc_dif - lcd_encoder_diff)) > 1) {
-				if (enc_dif > lcd_encoder_diff) cursor_pos--;
-				if (enc_dif < lcd_encoder_diff) cursor_pos++;
-				if (cursor_pos > 3) {
-					cursor_pos = 3;
-					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
-				}
-				if (cursor_pos < 1){
-					cursor_pos = 1;
-					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
-				}	
-
-				lcd_puts_at_P(0, 1, PSTR(" \n \n "));
-				lcd_set_cursor(0, cursor_pos);
-				lcd_print('>');
-				enc_dif = lcd_encoder_diff;
-				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
-				_delay(100);
-			}
-		}
-		if (lcd_clicked()) {
-			Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
-			KEEPALIVE_STATE(IN_HANDLER);
-			return(cursor_pos - 1);
-		}
-	}
-	
-}
-
-#endif //SNMM
-
 //! @brief Select one of numbered items
 //! @brief Select one of numbered items
 //!
 //!
 //! Create list of items with header. Header can not be selected.
 //! Create list of items with header. Header can not be selected.
@@ -5960,28 +5409,25 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
 }
 }
 
 
 char reset_menu() {
 char reset_menu() {
-    const uint8_t items_no =
-#ifdef SNMM
-        6;
-#else
-        5;
-#endif
-    static int8_t first = 0;
-    int8_t enc_dif = 0;
+	const uint8_t items_no = 5;
+	static int8_t first = 0;
+	int8_t enc_dif = 0;
 	char cursor_pos = 0;
 	char cursor_pos = 0;
 
 
-    const char *const item[items_no] = {PSTR("Language"), PSTR("Statistics"), PSTR("Shipping prep"), PSTR("Service prep"), PSTR("All Data")
-#ifdef SNMM
-    , PSTR("Bowden length")
-#endif
-    };
+	const char *const item[items_no] = {
+		PSTR("Language"),
+		PSTR("Statistics"),
+		PSTR("Shipping prep"),
+		PSTR("Service prep"),
+		PSTR("All Data"),
+	};
 	
 	
 	enc_dif = lcd_encoder_diff;
 	enc_dif = lcd_encoder_diff;
 	lcd_clear();
 	lcd_clear();
 	lcd_set_cursor(0, 0);
 	lcd_set_cursor(0, 0);
-    lcd_putc('>');
+	lcd_putc('>');
 	lcd_consume_click();
 	lcd_consume_click();
-	while (1) {		
+	while (1) {
 
 
 		for (uint_least8_t i = 0; i < 4; i++) {
 		for (uint_least8_t i = 0; i < 4; i++) {
 			lcd_puts_at_P(1, i, item[first + i]);
 			lcd_puts_at_P(1, i, item[first + i]);
@@ -6052,20 +5498,13 @@ static void lcd_disable_farm_mode()
 
 
 
 
 
 
-static void fil_load_menu()
+static void mmu_load_filament_menu()
 {
 {
     MENU_BEGIN();
     MENU_BEGIN();
     MENU_ITEM_BACK_P(_T(MSG_MAIN));
     MENU_ITEM_BACK_P(_T(MSG_MAIN));
-    MENU_ITEM_FUNCTION_P(_i("Load all"), load_all); ////MSG_LOAD_ALL c=17
-    MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '1', extr_adj, 0); ////MSG_LOAD_FILAMENT_1 c=16
-    MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '2', extr_adj, 1); ////MSG_LOAD_FILAMENT_2 c=17
-    MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '3', extr_adj, 2); ////MSG_LOAD_FILAMENT_3 c=17
-    MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '4', extr_adj, 3); ////MSG_LOAD_FILAMENT_4 c=17
-
-    if (mmu_enabled)
-    {
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '5', extr_adj, 4);
-    }
+    MENU_ITEM_FUNCTION_P(_i("Load all"), load_all); ////MSG_LOAD_ALL c=18
+    for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++)
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', extr_adj, i); ////MSG_LOAD_FILAMENT c=16
     MENU_END();
     MENU_END();
 }
 }
 
 
@@ -6075,11 +5514,8 @@ static void mmu_load_to_nozzle_menu()
     {
     {
         MENU_BEGIN();
         MENU_BEGIN();
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '1', lcd_mmu_load_to_nozzle, 0);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '2', lcd_mmu_load_to_nozzle, 1);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '3', lcd_mmu_load_to_nozzle, 2);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '4', lcd_mmu_load_to_nozzle, 3);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '5', lcd_mmu_load_to_nozzle, 4);
+        for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++)
+            MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', lcd_mmu_load_to_nozzle, i); ////MSG_LOAD_FILAMENT c=16
         MENU_END();
         MENU_END();
     }
     }
     else
     else
@@ -6101,11 +5537,11 @@ static void mmu_fil_eject_menu()
     {
     {
         MENU_BEGIN();
         MENU_BEGIN();
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '1', mmu_eject_filament, 0);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '2', mmu_eject_filament, 1);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '3', mmu_eject_filament, 2);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '4', mmu_eject_filament, 3);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '5', mmu_eject_filament, 4);
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '1', mmu_eject_filament, 0); ////MSG_EJECT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '2', mmu_eject_filament, 1); ////MSG_EJECT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '3', mmu_eject_filament, 2); ////MSG_EJECT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '4', mmu_eject_filament, 3); ////MSG_EJECT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '5', mmu_eject_filament, 4); ////MSG_EJECT_FILAMENT c=16
         MENU_END();
         MENU_END();
     }
     }
     else
     else
@@ -6123,11 +5559,11 @@ static void mmu_cut_filament_menu()
     {
     {
         MENU_BEGIN();
         MENU_BEGIN();
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
         MENU_ITEM_BACK_P(_T(MSG_MAIN));
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '1', mmu_cut_filament, 0);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '2', mmu_cut_filament, 1);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '3', mmu_cut_filament, 2);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '4', mmu_cut_filament, 3);
-        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '5', mmu_cut_filament, 4);
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '1', mmu_cut_filament, 0); ////MSG_CUT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '2', mmu_cut_filament, 1); ////MSG_CUT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '3', mmu_cut_filament, 2); ////MSG_CUT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '4', mmu_cut_filament, 3); ////MSG_CUT_FILAMENT c=16
+        MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '5', mmu_cut_filament, 4); ////MSG_CUT_FILAMENT c=16
         MENU_END();
         MENU_END();
     }
     }
     else
     else
@@ -6144,35 +5580,6 @@ static void mmu_cut_filament_menu()
 }
 }
 #endif //MMU_HAS_CUTTER
 #endif //MMU_HAS_CUTTER
 
 
-#ifdef SNMM
-static void fil_unload_menu()
-{
-	MENU_BEGIN();
-	MENU_ITEM_BACK_P(_T(MSG_MAIN));
-	MENU_ITEM_FUNCTION_P(_i("Unload all"), extr_unload_all);////MSG_UNLOAD_ALL c=17
-	MENU_ITEM_FUNCTION_P(_i("Unload filament 1"), extr_unload_0);////MSG_UNLOAD_FILAMENT_1 c=17
-	MENU_ITEM_FUNCTION_P(_i("Unload filament 2"), extr_unload_1);////MSG_UNLOAD_FILAMENT_2 c=17
-	MENU_ITEM_FUNCTION_P(_i("Unload filament 3"), extr_unload_2);////MSG_UNLOAD_FILAMENT_3 c=17
-	MENU_ITEM_FUNCTION_P(_i("Unload filament 4"), extr_unload_3);////MSG_UNLOAD_FILAMENT_4 c=17
-
-	if (mmu_enabled)
-		MENU_ITEM_FUNCTION_P(_i("Unload filament 5"), extr_unload_4);////MSG_UNLOAD_FILAMENT_5 c=17
-
-	MENU_END();
-}
-
-
-static void change_extr_menu(){
-	MENU_BEGIN();
-	MENU_ITEM_BACK_P(_T(MSG_MAIN));
-	MENU_ITEM_FUNCTION_P(_i("Extruder 1"), extr_change_0);////MSG_EXTRUDER_1 c=17
-	MENU_ITEM_FUNCTION_P(_i("Extruder 2"), extr_change_1);////MSG_EXTRUDER_2 c=17
-	MENU_ITEM_FUNCTION_P(_i("Extruder 3"), extr_change_2);////MSG_EXTRUDER_3 c=17
-	MENU_ITEM_FUNCTION_P(_i("Extruder 4"), extr_change_3);////MSG_EXTRUDER_4 c=17
-
-	MENU_END();
-}
-#endif //SNMM
 
 
 // unload filament for single material printer (used in M702 gcode)
 // unload filament for single material printer (used in M702 gcode)
 // @param automatic: If true, unload_filament is part of a unload+load sequence (M600)
 // @param automatic: If true, unload_filament is part of a unload+load sequence (M600)
@@ -6526,20 +5933,14 @@ static void lcd_main_menu()
 
 
     if ( ! ( IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) {
     if ( ! ( IS_SD_PRINTING || usb_timer.running() || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) {
         if (mmu_enabled) {
         if (mmu_enabled) {
-            MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu);
+            MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), mmu_load_filament_menu);
             MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);////MSG_LOAD_TO_NOZZLE c=18
             MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);////MSG_LOAD_TO_NOZZLE c=18
-//-//          MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
-//bFilamentFirstRun=true;
             MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
             MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
             MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu);
             MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu);
 #ifdef  MMU_HAS_CUTTER
 #ifdef  MMU_HAS_CUTTER
             MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
             MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
 #endif //MMU_HAS_CUTTER
 #endif //MMU_HAS_CUTTER
         } else {
         } else {
-#ifdef SNMM
-            MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), fil_unload_menu);
-            MENU_ITEM_SUBMENU_P(_i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20
-#endif
 #ifdef FILAMENT_SENSOR
 #ifdef FILAMENT_SENSOR
             if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false))
             if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false))
                 MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18
                 MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18

+ 0 - 4
Firmware/ultralcd.h

@@ -189,12 +189,9 @@ void unload_filament(bool automatic = false);
 void lcd_printer_connected();
 void lcd_printer_connected();
 void lcd_ping();
 void lcd_ping();
 
 
-void lcd_calibrate_extruder();
-
 void lcd_wait_for_heater();
 void lcd_wait_for_heater();
 void lcd_wait_for_cool_down();
 void lcd_wait_for_cool_down();
 void lcd_move_e(); // NOT static due to usage in Marlin_main
 void lcd_move_e(); // NOT static due to usage in Marlin_main
-void lcd_extr_cal_reset();
 
 
 void lcd_temp_cal_show_result(bool result);
 void lcd_temp_cal_show_result(bool result);
 #ifdef PINDA_THERMISTOR
 #ifdef PINDA_THERMISTOR
@@ -202,7 +199,6 @@ bool lcd_wait_for_pinda(float temp);
 #endif //PINDA_THERMISTOR
 #endif //PINDA_THERMISTOR
 
 
 
 
-void bowden_menu();
 char reset_menu();
 char reset_menu();
 uint8_t choose_menu_P(const char *header, const char *item, const char *last_item = nullptr);
 uint8_t choose_menu_P(const char *header, const char *item, const char *last_item = nullptr);
 
 

+ 2 - 21
Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h

@@ -24,9 +24,6 @@ GENERAL SETTINGS
 // Electronics
 // Electronics
 #define MOTHERBOARD BOARD_RAMBO_MINI_1_0
 #define MOTHERBOARD BOARD_RAMBO_MINI_1_0
 
 
-// Prusa Single extruder multiple material suport
-//#define SNMM
-
 // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
 // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
 //#define E3D_PT100_EXTRUDER_WITH_AMP
 //#define E3D_PT100_EXTRUDER_WITH_AMP
 //#define E3D_PT100_EXTRUDER_NO_AMP
 //#define E3D_PT100_EXTRUDER_NO_AMP
@@ -39,11 +36,7 @@ AXIS SETTINGS
 *------------------------------------*/
 *------------------------------------*/
 
 
 // Steps per unit {X,Y,Z,E}
 // Steps per unit {X,Y,Z,E}
-#ifdef SNMM
-#define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,140}
-#else
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,161.3}
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,161.3}
-#endif
 
 
 
 
 // Endstop inverting
 // Endstop inverting
@@ -157,18 +150,6 @@ EXTRUDER SETTINGS
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
 
 
 
 
-#ifdef SNMM
-//#define BOWDEN_LENGTH	408
-#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu
-#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle
-#define FIL_COOLING 10 //length for cooling moves
-#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code
-#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming
-#endif //SNMM
-
-//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function
-
-
 /*------------------------------------
 /*------------------------------------
 CHANGE FILAMENT SETTINGS
 CHANGE FILAMENT SETTINGS
 *------------------------------------*/
 *------------------------------------*/
@@ -460,11 +441,11 @@ THERMISTORS SETTINGS
 
 
 #define M600_TIMEOUT 600  //seconds
 #define M600_TIMEOUT 600  //seconds
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 
 
-#ifndef SNMM
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
-#endif
 
 
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 
 

+ 2 - 21
Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h

@@ -24,9 +24,6 @@ GENERAL SETTINGS
 // Electronics
 // Electronics
 #define MOTHERBOARD BOARD_RAMBO_MINI_1_3
 #define MOTHERBOARD BOARD_RAMBO_MINI_1_3
 
 
-// Prusa Single extruder multiple material suport
-//#define SNMM
-
 // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
 // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
 //#define E3D_PT100_EXTRUDER_WITH_AMP
 //#define E3D_PT100_EXTRUDER_WITH_AMP
 //#define E3D_PT100_EXTRUDER_NO_AMP
 //#define E3D_PT100_EXTRUDER_NO_AMP
@@ -39,11 +36,7 @@ AXIS SETTINGS
 *------------------------------------*/
 *------------------------------------*/
 
 
 // Steps per unit {X,Y,Z,E}
 // Steps per unit {X,Y,Z,E}
-#ifdef SNMM
-#define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,140}
-#else
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,161.3}
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,3200/8,161.3}
-#endif
 
 
 
 
 // Endstop inverting
 // Endstop inverting
@@ -156,18 +149,6 @@ EXTRUDER SETTINGS
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
 
 
 
 
-#ifdef SNMM
-//#define BOWDEN_LENGTH	408
-#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu
-#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle
-#define FIL_COOLING 10 //length for cooling moves
-#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code
-#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming
-#endif //SNMM
-
-//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function
-
-
 /*------------------------------------
 /*------------------------------------
 CHANGE FILAMENT SETTINGS
 CHANGE FILAMENT SETTINGS
 *------------------------------------*/
 *------------------------------------*/
@@ -449,11 +430,11 @@ THERMISTORS SETTINGS
 
 
 #define M600_TIMEOUT 600  //seconds
 #define M600_TIMEOUT 600  //seconds
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 
 
-#ifndef SNMM
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
-#endif
 
 
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 
 

+ 2 - 0
Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h

@@ -516,6 +516,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 2 - 0
Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h

@@ -517,6 +517,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 2 - 0
Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h

@@ -516,6 +516,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 2 - 0
Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h

@@ -517,6 +517,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 2 - 0
Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h

@@ -663,6 +663,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_HWRESET
 #define MMU_HWRESET
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 2 - 0
Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h

@@ -667,6 +667,8 @@
 
 
 //#define SUPPORT_VERBOSITY
 //#define SUPPORT_VERBOSITY
 
 
+#define MMU_FILAMENT_COUNT 5
+
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_HWRESET
 #define MMU_HWRESET
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
 #define MMU_DEBUG //print communication between MMU2 and printer on serial

+ 1 - 1
lang/lang_en.txt

@@ -922,7 +922,7 @@
 #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
 #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 
 
 #MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6
 #MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=6

+ 1 - 1
lang/lang_en_cz.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Zavest vse"
 "Zavest vse"
 
 

+ 1 - 1
lang/lang_en_de.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Alle laden"
 "Alle laden"
 
 

+ 1 - 1
lang/lang_en_es.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Intr. todos fil."
 "Intr. todos fil."
 
 

+ 1 - 1
lang/lang_en_fr.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Charger un par un"
 "Charger un par un"
 
 

+ 1 - 1
lang/lang_en_it.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Caricare tutti"
 "Caricare tutti"
 
 

+ 1 - 1
lang/lang_en_nl.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Laad alle"
 "Laad alle"
 
 

+ 1 - 1
lang/lang_en_pl.txt

@@ -1230,7 +1230,7 @@
 "XYZ calibration compromised. Right front calibration point not reachable."
 "XYZ calibration compromised. Right front calibration point not reachable."
 "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
 
-#MSG_LOAD_ALL c=17
+#MSG_LOAD_ALL c=18
 "Load all"
 "Load all"
 "Zalad. wszystkie"
 "Zalad. wszystkie"
 
 

+ 1 - 1
lang/po/Firmware.pot

@@ -1555,7 +1555,7 @@ msgstr ""
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr ""
 msgstr ""
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr ""
 msgstr ""

+ 1 - 1
lang/po/Firmware_cs.po

@@ -1555,7 +1555,7 @@ msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Zavest vse"
 msgstr "Zavest vse"

+ 1 - 1
lang/po/Firmware_de.po

@@ -1555,7 +1555,7 @@ msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichb
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Alle laden"
 msgstr "Alle laden"

+ 1 - 1
lang/po/Firmware_es.po

@@ -1555,7 +1555,7 @@ msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Intr. todos fil."
 msgstr "Intr. todos fil."

+ 1 - 1
lang/po/Firmware_fr.po

@@ -1555,7 +1555,7 @@ msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont p
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Charger un par un"
 msgstr "Charger un par un"

+ 1 - 1
lang/po/Firmware_it.po

@@ -1555,7 +1555,7 @@ msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Caricare tutti"
 msgstr "Caricare tutti"

+ 1 - 1
lang/po/Firmware_nl.po

@@ -1555,7 +1555,7 @@ msgstr "XYZ-kalibratie niet gelukt. Voorste kalibratiepunten niet bereikbaar."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Laad alle"
 msgstr "Laad alle"

+ 1 - 1
lang/po/Firmware_pl.po

@@ -1555,7 +1555,7 @@ msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Zalad. wszystkie"
 msgstr "Zalad. wszystkie"

+ 1 - 1
lang/po/new/cs.po

@@ -1555,7 +1555,7 @@ msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Zavest vse"
 msgstr "Zavest vse"

+ 1 - 1
lang/po/new/de.po

@@ -1555,7 +1555,7 @@ msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichb
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Alle laden"
 msgstr "Alle laden"

+ 1 - 1
lang/po/new/es.po

@@ -1555,7 +1555,7 @@ msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Intr. todos fil."
 msgstr "Intr. todos fil."

+ 1 - 1
lang/po/new/fr.po

@@ -1555,7 +1555,7 @@ msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont p
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Charger un par un"
 msgstr "Charger un par un"

+ 1 - 1
lang/po/new/it.po

@@ -1555,7 +1555,7 @@ msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Caricare tutti"
 msgstr "Caricare tutti"

+ 1 - 1
lang/po/new/nl.po

@@ -1555,7 +1555,7 @@ msgstr "XYZ-kalibratie niet gelukt. Voorste kalibratiepunten niet bereikbaar."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Laad alle"
 msgstr "Laad alle"

+ 1 - 1
lang/po/new/pl.po

@@ -1555,7 +1555,7 @@ msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
 
-# MSG_LOAD_ALL c=17
+# MSG_LOAD_ALL c=18
 #: ultralcd.cpp:6167
 #: ultralcd.cpp:6167
 msgid "Load all"
 msgid "Load all"
 msgstr "Zalad. wszystkie"
 msgstr "Zalad. wszystkie"