From 142bf28dc262ac933c12bdd875daeda004e8fd70 Mon Sep 17 00:00:00 2001
From: Marek Bel <marek.bel@posta.cz>
Date: Thu, 23 Aug 2018 21:15:12 +0200
Subject: [PATCH 1/2] Clear communication buffer when sending load filament
 command to MMU.

This fixes PFW-517 in the moment, when the problem with not displaying "Loading filament 1" to "Loading filament 5" has appeared for the first time.
---
 Firmware/mmu.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp
index 57da1e80..bf7645a8 100644
--- a/Firmware/mmu.cpp
+++ b/Firmware/mmu.cpp
@@ -480,7 +480,7 @@ void extr_adj(int extruder) //loading filament for SNMM
 {
 #ifndef SNMM
     printf_P(PSTR("L%d \n"),extruder);
-    fprintf_P(uart2io, PSTR("L%d\n"), extruder);
+    mmu_printf_P(PSTR("L%d\n"), extruder);
 	
 	//show which filament is currently loaded
 	

From 050a7c41d0e2f3a4c2d1681af44461ba47959dcc Mon Sep 17 00:00:00 2001
From: Marek Bel <marek.bel@posta.cz>
Date: Fri, 24 Aug 2018 03:49:51 +0200
Subject: [PATCH 2/2] Fix "Check MMU. Fix the issue and then press button on
 MMU unit." shown instead of "Loading filament 1".

---
 Firmware/mmu.cpp | 18 +++++++++++++++---
 Firmware/mmu.h   |  5 +++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp
index bf7645a8..94a19b9f 100644
--- a/Firmware/mmu.cpp
+++ b/Firmware/mmu.cpp
@@ -162,6 +162,13 @@ void mmu_loop(void)
 				mmu_printf_P(PSTR("T%d\n"), extruder);
 				mmu_state = 3; // wait for response
 			}
+			else if ((mmu_cmd >= MMU_CMD_L0) && (mmu_cmd <= MMU_CMD_L4))
+			{
+			    int filament = mmu_cmd - MMU_CMD_L0;
+			    printf_P(PSTR("MMU <= 'L%d'\n"), filament);
+			    mmu_printf_P(PSTR("L%d\n"), filament);
+			    mmu_state = 3; // wait for response
+			}
 			mmu_cmd = 0;
 		}
 		else if ((mmu_last_response + 1000) < millis()) //request every 1s
@@ -479,8 +486,13 @@ void display_loading()
 void extr_adj(int extruder) //loading filament for SNMM
 {
 #ifndef SNMM
-    printf_P(PSTR("L%d \n"),extruder);
-    mmu_printf_P(PSTR("L%d\n"), extruder);
+    uint8_t cmd = MMU_CMD_L0 + extruder;
+    if (cmd > MMU_CMD_L4)
+    {
+        printf_P(PSTR("Filament out of range %d \n"),extruder);
+        return;
+    }
+    mmu_command(cmd);
 	
 	//show which filament is currently loaded
 	
@@ -490,7 +502,7 @@ void extr_adj(int extruder) //loading filament for SNMM
 	//if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1);
 	//else lcd.print(" ");
 	lcd_print(" ");
-	lcd_print(mmu_extruder + 1);
+	lcd_print(extruder + 1);
 
 	// get response
 	manage_response(false, false);
diff --git a/Firmware/mmu.h b/Firmware/mmu.h
index 763c15ea..835b615c 100644
--- a/Firmware/mmu.h
+++ b/Firmware/mmu.h
@@ -23,6 +23,11 @@ extern int16_t mmu_buildnr;
 #define MMU_CMD_T2   0x12
 #define MMU_CMD_T3   0x13
 #define MMU_CMD_T4   0x14
+#define MMU_CMD_L0   0x20
+#define MMU_CMD_L1   0x21
+#define MMU_CMD_L2   0x22
+#define MMU_CMD_L3   0x23
+#define MMU_CMD_L4   0x24
 
 extern int mmu_puts_P(const char* str);