From 047f2a8389fe7b98b3a087106c47aa8e090df38b Mon Sep 17 00:00:00 2001
From: PavelSindler <sindlerpa@gmail.com>
Date: Wed, 18 Jan 2017 17:57:32 +0100
Subject: [PATCH] Added writing flag to EEPROM, that we started/finished print
 to detect printer reset and need for  filaments adjustment.

---
 Firmware/Configuration.h        |  2 +-
 Firmware/ConfigurationStore.cpp |  4 ++++
 Firmware/Marlin_main.cpp        | 12 ++++++++++++
 Firmware/ultralcd.cpp           |  3 +++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h
index 629c377b..9db6dfab 100644
--- a/Firmware/Configuration.h
+++ b/Firmware/Configuration.h
@@ -43,7 +43,7 @@
 #define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1)
 #define EEPROM_BED_CORRECTION_REAR  (EEPROM_BED_CORRECTION_FRONT-1)
 #define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1)
-#define EEPROM_STEPS_PER_UNIT_E (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-4)
+#define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1)
 
 // Currently running firmware, each digit stored as uint16_t.
 // The flavor differentiates a dev, alpha, beta, release candidate or a release version.
diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp
index aba92a60..7535d77c 100644
--- a/Firmware/ConfigurationStore.cpp
+++ b/Firmware/ConfigurationStore.cpp
@@ -120,6 +120,10 @@ void Config_StoreSettings()
   #endif
   #endif
   
+  /*MYSERIAL.print("Top address used:\n");
+  MYSERIAL.print(i);
+  MYSERIAL.print("\n");
+  */
   char ver2[4]=EEPROM_VERSION;
   i=EEPROM_OFFSET;
   EEPROM_WRITE_VAR(i,ver2); // validate data
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index 5e79b950..f7b20cd3 100644
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -2051,6 +2051,18 @@ void process_commands()
 
 	#endif
 	}
+	else if (code_seen("SetF")) {
+#ifdef SNMM
+		bool not_finished = (eeprom_read_byte((unsigned char*)EEPROM_PRINT_FLAG) != PRINT_FINISHED);
+		eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_STARTED);
+		if (not_finished) enquecommand_front_P(PSTR("PRUSA Y"));
+#endif
+	}
+	else if (code_seen("ResF")) {
+#ifdef SNMM
+		eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_FINISHED);
+#endif
+	}
     //else if (code_seen('Cal')) {
 		//  lcd_calibration();
 	  // }
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 23bacc69..696dc6db 100644
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -582,6 +582,9 @@ void lcd_commands()
 		{
       // M84: Disable steppers.
 			enquecommand_P(PSTR("M84"));
+#ifdef SNMM
+			enquecommand_P(PSTR("PRUSA ResF")); //resets flag at the end of the print (used for SNMM)
+#endif
 			autotempShutdown();
 			lcd_commands_step = 2;
 		}