void cmd_sdchalt(BaseSequentialStream *chp, int argc, char *argv[]){ (void)argv; (void)argc; (void)chp; sdc_haltnow() ; SHELLDBG("SDC card system halted. Remove card and restart system before inserting again.\r\n"); }
/* * Wrapper around fatfs f_write function. * Try to write twice before failing * Track the sdc_fp_index * Do periodic f_sync to sd card */ SDC_ERRORCode sdc_f_write(FIL* fp, void* buff, unsigned int btw, unsigned int* bytes_written) { static int8_t sync_wait = SDC_F_SYNC_COUNT; FRESULT f_ret; f_ret = f_write(fp, buff, btw, bytes_written); if (f_ret) { /* * const char* sdc_testdata_file = "LOGSMALL.bin"; * FILINFO DATAFil_info; *f_ret = f_stat(sdc_testdata_file, &DATAFil_info); *if(f_ret) { * SDCDEBUG("fail stat on file\r\n"); *} *SDCDEBUG("file size of %s is: %d\r\n", sdc_testdata_file, DATAFil_info.fsize); */ SDCDEBUG("\r\n%s: f_write error: %d\tbtw: %d\tbw: %d\r\n",__func__, f_ret, btw, *bytes_written) ; SDCDEBUG("sdc_fp_index is: %lu\r\n", sdc_fp_index); SDCDEBUG("f_size returns: %lu\r\n", f_size(fp)); sdc_haltnow() ; // SDCDEBUG("f_eof returns: %lu\r\n", f_eof(fp)); f_ret = f_write(fp, buff, btw, bytes_written); if (f_ret) { SDCDEBUG("%s: f_write error: %d\tbtw: %d\tbw: %d\r\n",__func__, f_ret, btw, *bytes_written) ; return SDC_FWRITE_ERROR; } } sdc_fp_index += *bytes_written; if(sync_wait-- <= 0) { f_ret = f_sync(fp); if (f_ret) { f_ret = f_sync(fp); if (f_ret) { SDCDEBUG("f_sync error: %d\r\n", f_ret); return SDC_SYNC_ERROR; } } sync_wait = SDC_F_SYNC_COUNT; } return SDC_OK; }