Signal SD completion later (#21840)
This commit is contained in:
		
				
					committed by
					
						
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							83309c1ac8
						
					
				
				
					commit
					c5c8ef436c
				
			@@ -550,7 +550,8 @@ void GCodeQueue::get_serial_commands() {
 | 
			
		||||
  inline void GCodeQueue::get_sdcard_commands() {
 | 
			
		||||
    static uint8_t sd_input_state = PS_NORMAL;
 | 
			
		||||
 | 
			
		||||
    if (!IS_SD_PRINTING()) return;
 | 
			
		||||
    // Get commands if there are more in the file
 | 
			
		||||
    if (!IS_SD_FETCHING()) return;
 | 
			
		||||
 | 
			
		||||
    int sd_count = 0;
 | 
			
		||||
    while (!ring_buffer.full() && !card.eof()) {
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@
 | 
			
		||||
#if ENABLED(SDSUPPORT)
 | 
			
		||||
 | 
			
		||||
#include "../gcode.h"
 | 
			
		||||
#include "../../module/planner.h"
 | 
			
		||||
#include "../../module/printcounter.h"
 | 
			
		||||
 | 
			
		||||
#if DISABLED(NO_SD_AUTOSTART)
 | 
			
		||||
@@ -64,6 +65,11 @@
 | 
			
		||||
 * M1001: Execute actions for SD print completion
 | 
			
		||||
 */
 | 
			
		||||
void GcodeSuite::M1001() {
 | 
			
		||||
  planner.synchronize();
 | 
			
		||||
 | 
			
		||||
  // SD Printing is finished when the queue reaches M1001
 | 
			
		||||
  card.flag.sdprinting = card.flag.sdprintdone = false;
 | 
			
		||||
 | 
			
		||||
  // If there's another auto#.g file to run...
 | 
			
		||||
  if (TERN(NO_SD_AUTOSTART, false, card.autofile_check())) return;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,7 @@ void GcodeSuite::M24() {
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  if (card.isFileOpen()) {
 | 
			
		||||
    card.startFileprint();            // SD card will now be read for commands
 | 
			
		||||
    card.startOrResumeFilePrinting();            // SD card will now be read for commands
 | 
			
		||||
    startOrResumeJob();               // Start (or resume) the print job timer
 | 
			
		||||
    TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@
 | 
			
		||||
void GcodeSuite::M27() {
 | 
			
		||||
  if (parser.seen('C')) {
 | 
			
		||||
    SERIAL_ECHOPGM("Current file: ");
 | 
			
		||||
    card.printFilename();
 | 
			
		||||
    card.printSelectedFilename();
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ void GcodeSuite::M32() {
 | 
			
		||||
 | 
			
		||||
    if (parser.seenval('S')) card.setIndex(parser.value_long());
 | 
			
		||||
 | 
			
		||||
    card.startFileprint();
 | 
			
		||||
    card.startOrResumeFilePrinting();
 | 
			
		||||
 | 
			
		||||
    // Procedure calls count as normal print time.
 | 
			
		||||
    if (!call_procedure) startOrResumeJob();
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
void GcodeSuite::M524() {
 | 
			
		||||
 | 
			
		||||
  if (IS_SD_PRINTING())
 | 
			
		||||
    card.flag.abort_sd_printing = true;
 | 
			
		||||
    card.abortFilePrintSoon();
 | 
			
		||||
  else if (card.isMounted())
 | 
			
		||||
    card.closefile();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user