Exemplo n.º 1
0
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");
}
Exemplo n.º 2
0
/*
 * 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;
}