Browse Source

Работает команда M30 (удаление

файлов) из Cura
pull/1/head
Sergey 4 years ago
parent
commit
8b5c010990
  1. 12
      Marlin/src/gcode/gcode.cpp
  2. 14
      Marlin/src/libs/fatfs/diskio.cpp
  3. 8
      Marlin/src/module/mks_wifi/mks_wifi_gcodes.cpp
  4. 2
      Marlin/src/module/mks_wifi/mks_wifi_gcodes.h
  5. 27
      Marlin/src/module/mks_wifi/mks_wifi_sd.cpp
  6. 3
      Marlin/src/module/mks_wifi/mks_wifi_sd.h
  7. 41
      Marlin/src/module/mks_wifi/mks_wifi_sd_low_lev.cpp
  8. 3
      Marlin/src/module/mks_wifi/mks_wifi_sd_low_lev.h

12
Marlin/src/gcode/gcode.cpp

@ -422,7 +422,17 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
break; // M27: Get SD status
case 28: M28(); break; // M28: Start SD write
case 29: M29(); break; // M29: Stop SD write
case 30: M30(); break; // M30 <filename> Delete File
case 30:
#if ENABLED(MKS_WIFI)
if(!serial_port_index){
M30();
}else{
mks_m30(parser.string_arg);
}
#else
M30();
#endif
break; // M30 <filename> Delete File
case 32: M32(); break; // M32: Select file and start SD print
#if ENABLED(LONG_FILENAME_HOST_SUPPORT)

14
Marlin/src/libs/fatfs/diskio.cpp

@ -67,7 +67,12 @@ DRESULT disk_read (
uint8_t res=0;
if(pdrv == DEV_SD){
return RES_ERROR;
res=sd_read((uint8_t*)buff,sector,count);
if(res){
return RES_ERROR;
}else{
return RES_OK;
}
};
return RES_PARERR;
}
@ -88,7 +93,12 @@ DRESULT disk_write (
uint8_t res;
if(pdrv == DEV_SD){
return RES_ERROR;
res=sd_write((uint8_t*)buff,sector,count);
if(res){
return RES_ERROR;
}else{
return RES_OK;
}
};
return RES_PARERR;
}

8
Marlin/src/module/mks_wifi/mks_wifi_gcodes.cpp

@ -77,3 +77,11 @@ void mks_m27(void){
SERIAL_ECHOLN(100);
}
}
void mks_m30(char *filename){
filename[0]='0';
DEBUG("M30: %s",filename);
sd_delete_file(filename);
}

2
Marlin/src/module/mks_wifi/mks_wifi_gcodes.h

@ -5,11 +5,13 @@
#include "../temperature.h"
#include "../../sd/cardreader.h"
#include "mks_wifi.h"
#include "mks_wifi_sd.h"
void mks_m991(void);
void mks_m997(void);
void mks_m115(void);
void mks_m105(void);
void mks_m27(void);
void mks_m30(char *filename);
#endif

27
Marlin/src/module/mks_wifi/mks_wifi_sd.cpp

@ -4,12 +4,39 @@
FRESULT result;
FATFS FATFS_Obj;
DIR dir;
UINT i;
void mks_wifi_sd_init(void){
CardReader::release();
result = f_mount((FATFS *)&FATFS_Obj, "0", 1);
DEBUG("SD init %d",result);
/*
result = f_opendir(&dir, "0:");
if (result == FR_OK) {
for (;;) {
result = f_readdir(&dir, &fno);
if (result != FR_OK || fno.fname[0] == 0) break;
DEBUG("%s", fno.fname);
}
f_closedir(&dir);
}else{
DEBUG("Open dir error %d",result);
}
*/
}
void mks_wifi_sd_deinit(void){
f_mount(0, "", 0);
CardReader::mount();
};
void sd_delete_file(char *filename){
mks_wifi_sd_init();
DEBUG("Remove %s",filename);
f_unlink(filename);
mks_wifi_sd_deinit();
}

3
Marlin/src/module/mks_wifi/mks_wifi_sd.h

@ -2,7 +2,10 @@
#define MKS_WIFI_SD_H
#include "mks_wifi.h"
#include "../../sd/cardreader.h"
void mks_wifi_sd_init(void);
void mks_wifi_sd_deinit(void);
void sd_delete_file(char *filename);
#endif

41
Marlin/src/module/mks_wifi/mks_wifi_sd_low_lev.cpp

@ -1,8 +1,43 @@
#include "mks_wifi_sd_low_lev.h"
#include "../../sd/Sd2Card_sdio.h"
uint8_t sd_init(void){
if(SDIO_Init()){
return 0;
}else{
return 1;
}
}
uint8_t sd_read(uint8_t *buf, uint32_t sector,uint32_t count){
uint8_t res;
while (count--){
res=SDIO_ReadBlock(sector,buf);
if(!res){
return 1;
}else{
sector++;
buf=buf+512;
}
}
return 0;
}
uint8_t sd_write(uint8_t *buf, uint32_t sector,uint32_t count){
uint8_t res;
DEBUG("FATfs SD init");
return 1;
while (count--){
res=SDIO_WriteBlock(sector,buf);
if(!res){
return 1;
}else{
sector++;
buf=buf+512;
}
}
return 0;
}

3
Marlin/src/module/mks_wifi/mks_wifi_sd_low_lev.h

@ -3,6 +3,9 @@
#include "mks_wifi.h"
uint8_t sd_init(void);
uint8_t sd_read(uint8_t *buf, uint32_t sector,uint32_t count);
uint8_t sd_write(uint8_t *buf, uint32_t sector,uint32_t count);
#endif

Loading…
Cancel
Save