// M27 - Report SD print status
// M28 - Start SD write (M28 filename.g)
// M29 - Stop SD write
-// M30 - Output time since last M109 or SD card start to serial
+// M30 - Delete file from SD (M30 filename.g)
+// M31 - Output time since last M109 or SD card start to serial
// M42 - Change pin status via gcode
// M80 - Turn on Power Supply
// M81 - Turn off Power Supply
//processed in write to file routine above
//card,saving = false;
break;
- case 30: //M31 <filename> Delete File
+ case 30: //M30 <filename> Delete File
if (card.cardOK){
card.closefile();
starpos = (strchr(strchr_pointer + 4,'*'));
#endif //SDSUPPORT
- case 31: //M30 take time since the start of the SD print or an M109 command
+ case 31: //M31 take time since the start of the SD print or an M109 command
{
stoptime=millis();
char time[30];
}
+void CardReader::removeFile(char* name)
+{
+ if(!cardOK)
+ return;
+ file.close();
+ sdprinting = false;
+
+
+ SdFile myDir;
+ curDir=&root;
+ char *fname=name;
+
+ char *dirname_start,*dirname_end;
+ if(name[0]=='/')
+ {
+ dirname_start=strchr(name,'/')+1;
+ while(dirname_start>0)
+ {
+ dirname_end=strchr(dirname_start,'/');
+ //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name));
+ //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name));
+ if(dirname_end>0 && dirname_end>dirname_start)
+ {
+ char subdirname[13];
+ strncpy(subdirname, dirname_start, dirname_end-dirname_start);
+ subdirname[dirname_end-dirname_start]=0;
+ SERIAL_ECHOLN(subdirname);
+ if(!myDir.open(curDir,subdirname,O_READ))
+ {
+ SERIAL_PROTOCOLPGM("open failed, File: ");
+ SERIAL_PROTOCOL(subdirname);
+ SERIAL_PROTOCOLLNPGM(".");
+ return;
+ }
+ else
+ ;//SERIAL_ECHOLN("dive ok");
+
+ curDir=&myDir;
+ dirname_start=dirname_end+1;
+ }
+ else // the reminder after all /fsa/fdsa/ is the filename
+ {
+ fname=dirname_start;
+ //SERIAL_ECHOLN("remaider");
+ //SERIAL_ECHOLN(fname);
+ break;
+ }
+
+ }
+ }
+ else //relative path
+ {
+ curDir=&workDir;
+ }
+ if (file.remove(curDir, fname))
+ {
+ SERIAL_PROTOCOLPGM("File deleted:");
+ SERIAL_PROTOCOL(fname);
+ sdpos = 0;
+ }
+ else
+ {
+ SERIAL_PROTOCOLPGM("Deletion failed, File: ");
+ SERIAL_PROTOCOL(fname);
+ SERIAL_PROTOCOLLNPGM(".");
+ }
+
+}
+
void CardReader::getStatus()
{
if(cardOK){
void checkautostart(bool x);
void openFile(char* name,bool read);
+ void removeFile(char* name);
void closefile();
void release();
void startFileprint();
FORCE_INLINE uint8_t percentDone(){return 0;};
};
#endif //SDSUPPORT
-#endif
\ No newline at end of file
+#endif