From 6d6f323535c8523341359ff3747516c86906969c Mon Sep 17 00:00:00 2001
From: Bernhard <bkubicek@x201.(none)>
Date: Sat, 26 Nov 2011 11:51:38 +0100
Subject: [PATCH] make an option if sd-card stop should release the steppers.

---
 Marlin/Configuration.h |  1 +
 Marlin/cardreader.h    |  3 ++-
 Marlin/cardreader.pde  | 11 +++++++++++
 Marlin/ultralcd.pde    |  2 +-
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 4dea777cf9a..17a8854638d 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -281,6 +281,7 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
 //LCD and SD support
 //#define ULTRA_LCD  //general lcd support, also 16x2
 //#define SDSUPPORT // Enable SD Card Support in Hardware Console
+#define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
 
 //#define ULTIPANEL
 #ifdef ULTIPANEL
diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h
index 18086e57687..4530e4e206b 100644
--- a/Marlin/cardreader.h
+++ b/Marlin/cardreader.h
@@ -2,7 +2,7 @@
 #define __CARDREADERH
 
 #ifdef SDSUPPORT
- 
+
 #include "SdFile.h"
 enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
 class CardReader
@@ -22,6 +22,7 @@ public:
   void startFileprint();
   void pauseSDPrint();
   void getStatus();
+  void printingHasFinished();
 
   void getfilename(const uint8_t nr);
   uint16_t getnrfilenames();
diff --git a/Marlin/cardreader.pde b/Marlin/cardreader.pde
index eec10f199f0..03f3f463861 100644
--- a/Marlin/cardreader.pde
+++ b/Marlin/cardreader.pde
@@ -2,6 +2,8 @@
 //#include <unistd.h>
 #ifdef SDSUPPORT
 
+#include "Configuration.h"
+
 CardReader::CardReader()
 {
    filesize = 0;
@@ -426,4 +428,13 @@ void CardReader::updir()
   }
 }
 
+
+void CardReader::printingHasFinished()
+{
+ sdprinting = false;
+ if(SD_FINISHED_STEPPERRELEASE)
+ {
+   finishAndDisableSteppers();
+ }
+}
 #endif //SDSUPPORT
\ No newline at end of file
diff --git a/Marlin/ultralcd.pde b/Marlin/ultralcd.pde
index 91bb43d4313..a90a6c66dd1 100644
--- a/Marlin/ultralcd.pde
+++ b/Marlin/ultralcd.pde
@@ -1471,7 +1471,7 @@ void MainMenu::showMainMenu()
         #endif
         if((activeline==line)&&CLICKED)
         {
-          card.sdprinting = false;
+          card.printingHasFinished();
           BLOCK;
           status=Main_SD;
           beepshort();