Fix bug in CardReader::stopSDPrint

If the SD print is paused, it cannot be stopped
This commit is contained in:
Scott Lahteine 2016-08-12 03:21:10 -07:00
parent 11027a56b6
commit 61932b859e
2 changed files with 7 additions and 15 deletions

View file

@ -276,19 +276,12 @@ void CardReader::openAndPrintFile(const char *name) {
} }
void CardReader::startFileprint() { void CardReader::startFileprint() {
if (cardOK) if (cardOK) sdprinting = true;
sdprinting = true;
}
void CardReader::pauseSDPrint() {
if (sdprinting) sdprinting = false;
} }
void CardReader::stopSDPrint() { void CardReader::stopSDPrint() {
if (sdprinting) { sdprinting = false;
sdprinting = false; if (isFileOpen()) file.close();
file.close();
}
} }
void CardReader::openLogFile(char* name) { void CardReader::openLogFile(char* name) {
@ -340,7 +333,6 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
SERIAL_ECHOPGM("Now doing file: "); SERIAL_ECHOPGM("Now doing file: ");
SERIAL_ECHOLN(name); SERIAL_ECHOLN(name);
} }
file.close();
} }
else { //opening fresh file else { //opening fresh file
file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure
@ -348,7 +340,8 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
SERIAL_ECHOPGM("Now fresh file: "); SERIAL_ECHOPGM("Now fresh file: ");
SERIAL_ECHOLN(name); SERIAL_ECHOLN(name);
} }
sdprinting = false;
stopSDPrint();
SdFile myDir; SdFile myDir;
curDir = &root; curDir = &root;
@ -425,8 +418,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
void CardReader::removeFile(char* name) { void CardReader::removeFile(char* name) {
if (!cardOK) return; if (!cardOK) return;
file.close(); stopSDPrint();
sdprinting = false;
SdFile myDir; SdFile myDir;
curDir = &root; curDir = &root;

View file

@ -51,7 +51,6 @@ public:
void release(); void release();
void openAndPrintFile(const char *name); void openAndPrintFile(const char *name);
void startFileprint(); void startFileprint();
void pauseSDPrint();
void stopSDPrint(); void stopSDPrint();
void getStatus(); void getStatus();
void printingHasFinished(); void printingHasFinished();
@ -70,6 +69,7 @@ public:
void updir(); void updir();
void setroot(); void setroot();
FORCE_INLINE void pauseSDPrint() { sdprinting = false; }
FORCE_INLINE bool isFileOpen() { return file.isOpen(); } FORCE_INLINE bool isFileOpen() { return file.isOpen(); }
FORCE_INLINE bool eof() { return sdpos >= filesize; } FORCE_INLINE bool eof() { return sdpos >= filesize; }
FORCE_INLINE int16_t get() { sdpos = file.curPosition(); return (int16_t)file.read(); } FORCE_INLINE int16_t get() { sdpos = file.curPosition(); return (int16_t)file.read(); }