Fix kill() and ExtensibleUI (#12160)
* Fix to isPrintingFromMedia() - isPrintingFromMedia() will now return true even if SD print is paused. - isPrintingFromMediaPaused() allows UI to determine if the print is paused. * Don't use _delay_us in minkill (#12145) - In HAL_DUE, _delay_us is simply an alias for delay, which causes the board to hang and subsequently reboot due to the watchdog timer. * Shorten code with IFSD macro
This commit is contained in:
parent
b381cad399
commit
2e5e689a7f
3 changed files with 27 additions and 54 deletions
|
@ -42,6 +42,8 @@
|
|||
#include "module/printcounter.h" // PrintCounter or Stopwatch
|
||||
#include "feature/closedloop.h"
|
||||
|
||||
#include "HAL/shared/Delay.h"
|
||||
|
||||
#ifdef ARDUINO
|
||||
#include <pins_arduino.h>
|
||||
#endif
|
||||
|
@ -610,7 +612,6 @@ void idle(
|
|||
* After this the machine will need to be reset.
|
||||
*/
|
||||
void kill(PGM_P const lcd_msg/*=NULL*/) {
|
||||
|
||||
thermalManager.disable_all_heaters();
|
||||
|
||||
SERIAL_ERROR_START();
|
||||
|
@ -633,11 +634,14 @@ void kill(PGM_P const lcd_msg/*=NULL*/) {
|
|||
|
||||
void minkill() {
|
||||
|
||||
_delay_ms(600); // Wait a short time (allows messages to get out before shutting down.
|
||||
cli(); // Stop interrupts
|
||||
_delay_ms(250); // Wait to ensure all interrupts stopped
|
||||
// Wait a short time (allows messages to get out before shutting down.
|
||||
DELAY_US(600000);
|
||||
|
||||
cli(); // Stop interrupts
|
||||
|
||||
// Wait to ensure all interrupts stopped
|
||||
DELAY_US(250000);
|
||||
|
||||
disable_all_steppers();
|
||||
thermalManager.disable_all_heaters(); // turn off heaters again
|
||||
|
||||
#if HAS_POWER_SWITCH
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
#if ENABLED(SDSUPPORT)
|
||||
#include "../../sd/cardreader.h"
|
||||
#include "../../feature/emergency_parser.h"
|
||||
#define IFSD(A,B) (A)
|
||||
#else
|
||||
#define IFSD(A,B) (B)
|
||||
#endif
|
||||
|
||||
#if ENABLED(PRINTCOUNTER)
|
||||
|
@ -352,11 +355,7 @@ namespace UI {
|
|||
#endif
|
||||
|
||||
uint8_t getProgress_percent() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return card.percentDone();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
return IFSD(card.percentDone(), 0);
|
||||
}
|
||||
|
||||
uint32_t getProgress_seconds_elapsed() {
|
||||
|
@ -415,35 +414,23 @@ namespace UI {
|
|||
}
|
||||
|
||||
void printFile(const char *filename) {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
card.openAndPrintFile(filename);
|
||||
#endif
|
||||
IFSD(card.openAndPrintFile(filename), NOOP);
|
||||
}
|
||||
|
||||
bool isPrintingFromMediaPaused() {
|
||||
return IFSD(isPrintingFromMedia() && !card.sdprinting, false);
|
||||
}
|
||||
|
||||
bool isPrintingFromMedia() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return card.cardOK && card.isFileOpen() && card.sdprinting;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
return IFSD(card.cardOK && card.isFileOpen(), false);
|
||||
}
|
||||
|
||||
bool isPrinting() {
|
||||
return (planner.movesplanned() || IS_SD_PRINTING() ||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
(card.cardOK && card.isFileOpen())
|
||||
#else
|
||||
false
|
||||
#endif
|
||||
);
|
||||
return (planner.movesplanned() || IS_SD_PRINTING() || isPrintingFromMedia());
|
||||
}
|
||||
|
||||
bool isMediaInserted() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return IS_SD_INSERTED() && card.cardOK;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
return IFSD(IS_SD_INSERTED() && card.cardOK, false);
|
||||
}
|
||||
|
||||
void pausePrint() {
|
||||
|
@ -504,42 +491,23 @@ namespace UI {
|
|||
}
|
||||
|
||||
const char* FileList::filename() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return (card.longFilename && card.longFilename[0]) ? card.longFilename : card.filename;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
return IFSD(card.longFilename && card.longFilename[0]) ? card.longFilename : card.filename, "");
|
||||
}
|
||||
|
||||
const char* FileList::shortFilename() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return card.filename;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
return IFSD(card.filename, "");
|
||||
}
|
||||
|
||||
const char* FileList::longFilename() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return card.longFilename;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
return IFSD(card.longFilename, "");
|
||||
}
|
||||
|
||||
bool FileList::isDir() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
return card.filenameIsDir;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
return IFSD(card.filenameIsDir, false);
|
||||
}
|
||||
|
||||
uint16_t FileList::count() {
|
||||
#if ENABLED(SDSUPPORT)
|
||||
if (num_files == 0xFFFF) num_files = card.get_num_Files();
|
||||
return num_files;
|
||||
#endif
|
||||
return IFSD((num_files = (num_files == 0xFFFF ? card.get_num_Files() : num_files)), 0);
|
||||
}
|
||||
|
||||
bool FileList::isAtRootDir() {
|
||||
|
|
|
@ -133,6 +133,7 @@ namespace UI {
|
|||
void enqueueCommands(progmem_str gcode);
|
||||
|
||||
void printFile(const char *filename);
|
||||
bool isPrintingFromMediaPaused();
|
||||
bool isPrintingFromMedia();
|
||||
bool isPrinting();
|
||||
void stopPrint();
|
||||
|
|
Reference in a new issue