void backupEeprom() { char filename[60]; uint8_t buffer[1024]; FIL file; lcd_clear(); displayProgressBar(STR_WRITING); // reset unexpectedShutdown to prevent warning when user restores EEPROM backup g_eeGeneral.unexpectedShutdown = 0; eeDirty(EE_GENERAL); eeCheck(true); // create the directory if needed... DIR folder; FRESULT result = f_opendir(&folder, EEPROMS_PATH); if (result != FR_OK) { if (result == FR_NO_PATH) result = f_mkdir(EEPROMS_PATH); if (result != FR_OK) { POPUP_WARNING(SDCARD_ERROR(result)); return; } } // prepare the filename... char * tmp = strAppend(filename, EEPROMS_PATH "/eeprom"); tmp = strAppendDate(tmp, true); strAppend(tmp, EEPROM_EXT); // open the file for writing... f_open(&file, filename, FA_WRITE | FA_CREATE_ALWAYS); for (int i=0; i<EESIZE; i+=1024) { UINT count; eepromReadBlock(buffer, i, 1024); f_write(&file, buffer, 1024, &count); updateProgressBar(i, EESIZE); SIMU_SLEEP(100/*ms*/); } f_close(&file); //set back unexpectedShutdown g_eeGeneral.unexpectedShutdown = 1; eeDirty(EE_GENERAL); eeCheck(true); }
static void cmd_dump(BaseSequentialStream *chp, int argc, char *argv[]) { (void)argv; (void)argc; int i, j; msg_t status; /* for(i=0; i<=9; i++) { rx_data[i] = '0'+i; } rx_data[15] = 1; chprintf(chp, "Write page 0\r\n"); status = eepromWritePage(rx_data, 0); if(status != RDY_OK) { chprintf(chp, "I2C write error %08x\r\n", i2c_errors); return; } rx_data[15] = 2; chprintf(chp, "Write page 8\r\n"); status = eepromWritePage(rx_data, 8); if(status != RDY_OK) { chprintf(chp, "I2C write error %08x\r\n", i2c_errors); return; } */ for(i=0; i<256; i++) { rx_data[i] = 0; } for(i=0; i<1024; i += 16) { chprintf(chp, "%04x: ", i); status = eepromReadBlock(rx_data, i, 16); if(status != RDY_OK) { chprintf(chp, "I2C read error %08x\r\n", i2c_errors); return; } for(j=0; j<16; j++) { chprintf(chp, "%02x ", rx_data[j]); } chprintf(chp, "\r\n"); } }