bugfix about SDCARD ERROR if no folder on FAT system for models

folder will be created now
if no model name assigned then an "MODELXX" hardcoded string used as name
This commit is contained in:
maxim.karban@gmail.com
2012-04-26 17:18:19 +00:00
parent 30be30212c
commit cdd862f261
+20
View File
@@ -531,6 +531,7 @@ const pm_char * eeArchiveModel(uint8_t i_fileSrc)
{
char *buf = reusableBuffer.model_name;
FIL archiveFile;
DIR archiveFolder;
UINT written;
FRESULT result = f_mount(0, &g_FATFS_Obj);
@@ -541,6 +542,9 @@ const pm_char * eeArchiveModel(uint8_t i_fileSrc)
strcpy_P(buf, PSTR(MODELS_PATH "/")); // TODO Not PSTR everywhere ...
eeLoadModelName(i_fileSrc, &buf[sizeof(MODELS_PATH)]);
if(buf[sizeof(MODELS_PATH)] == '\0'){//no model name loaded
strcpy_P(&buf[sizeof(MODELS_PATH)], PSTR("\x0d\x0f\x04\x05\x0c\x18\x18"));//temporary fix as "MODELXX", itoa(i_fileSrc-1) need to be appended
}
buf[sizeof(MODELS_PATH)+sizeof(g_model.name)] = '\0';
uint8_t i = sizeof(MODELS_PATH)+sizeof(g_model.name)-1;
@@ -554,6 +558,22 @@ const pm_char * eeArchiveModel(uint8_t i_fileSrc)
}
strcpy_P(&buf[len], PSTR(".bin")); // TODO Not PSTR everywhere ...
//check and create folder here
//temporary truncate for folder name only
buf[sizeof(MODELS_PATH)-1] = '\0';
result = f_opendir(&archiveFolder, buf);
if(result != FR_OK){
result = f_mkdir(buf);
if(result != FR_OK){
return SDCARD_ERROR(result);
}
}
//return back / char to get full model name
buf[sizeof(MODELS_PATH)-1] = '/';
//folder ready to write here
result = f_open(&archiveFile, buf, FA_OPEN_ALWAYS | FA_WRITE);
if (result != FR_OK) {
return SDCARD_ERROR(result);