// Save the EEPROM to an .iic file DLLEXPORT(FLStatus) flSaveFirmware( struct FLContext *handle, uint32 eepromSize, const char *saveFile, const char **error) { FLStatus retVal = FL_SUCCESS; struct Buffer i2cBuf = {0,}; BufferStatus bStatus; FX2Status fxStatus; const char *const ext = saveFile + strlen(saveFile) - 4; CHECK_STATUS( strcmp(".iic", ext), FL_FX2_ERR, cleanup, "flSaveFirmware(): Filename should have .iic extension"); eepromSize <<= 7; // convert from kbits to bytes bStatus = bufInitialise(&i2cBuf, eepromSize, 0x00, error); CHECK_STATUS(bStatus, FL_ALLOC_ERR, cleanup, "flSaveFirmware()"); fxStatus = fx2ReadEEPROM(handle->device, eepromSize, &i2cBuf, error); CHECK_STATUS(fxStatus, FL_FX2_ERR, cleanup, "flSaveFirmware()"); bStatus = bufWriteBinaryFile(&i2cBuf, saveFile, 0UL, i2cBuf.length, error); CHECK_STATUS(bStatus, FL_FILE_ERR, cleanup, "flSaveFirmware()"); cleanup: bufDestroy(&i2cBuf); return retVal; }
int main(int argc, const char *argv[]) { int retVal = 0; struct Buffer csvfBuf = {0,}; BufferStatus bStatus; FLStatus fStatus; const char *error = NULL; uint32 csvfBufSize = 0; const char *srcFile, *dstFile; const char *ext; if ( argc != 3 ) { fprintf(stderr, "Synopsis: %s [-u] <src.xsvf|src.svf> <dst.csvf>\n", argv[0]); FAIL(1, cleanup); } srcFile = argv[1]; dstFile = argv[2]; ext = srcFile + strlen(srcFile) - 5; bStatus = bufInitialise(&csvfBuf, 10240, 0x00, &error); CHECK_STATUS(bStatus, 2, cleanup); if ( strcmp(".svf", ext+1) == 0 ) { fStatus = flLoadSvfAndConvertToCsvf(srcFile, &csvfBuf, &csvfBufSize, &error); } else if ( strcmp(".xsvf", ext) == 0 ) { fStatus = flLoadXsvfAndConvertToCsvf(srcFile, &csvfBuf, &csvfBufSize, &error); } else { fprintf(stderr, "Source filename should have an .svf or an .xsvf extension\n"); FAIL(3, cleanup); } CHECK_STATUS(fStatus, 4, cleanup); //printf("CSVF_BUF_SIZE = %d\n", csvfBufSize); bStatus = bufWriteBinaryFile(&csvfBuf, dstFile, 0, csvfBuf.length, &error); CHECK_STATUS(bStatus, 6, cleanup); cleanup: bufDestroy(&csvfBuf); if ( error ) { fprintf(stderr, "%s\n", error); bufFreeError(error); } return retVal; }