void EFile::EeFsCreate(uint8_t *eeprom, int size, BoardEnum board) { this->eeprom = eeprom; this->eeprom_size = size; this->board = board; if (IS_SKY9X(board)) { memset(eeprom, 0xFF, size); } else if (IS_TARANIS(board)) { eeFsArm = (EeFsArm *)eeprom; eeFsVersion = 5; eeFsSize = 8+4*62; eeFsBlockSize = 64; eeFsFirstBlock = 1; eeFsBlocksOffset = eeFsSize - eeFsBlockSize; eeFsBlocksMax = 1 + (EESIZE_TARANIS-eeFsSize)/eeFsBlockSize; eeFsLinkSize = sizeof(int16_t); memset(eeprom, 0, size); eeFsArm->version = eeFsVersion; eeFsArm->mySize = eeFsSize; eeFsArm->freeList = 0; eeFsArm->bs = 64; for (unsigned int i=eeFsFirstBlock; i<eeFsBlocksMax-1; i++) EeFsSetLink(i, i+1); EeFsSetLink(eeFsBlocksMax-1, 0); eeFsArm->freeList = eeFsFirstBlock; // EeFsFlush(); } else { eeFs = (EeFs *)eeprom; eeFsVersion = (board==BOARD_GRUVIN9X || board==BOARD_M128) ? 5 : 4; eeFsBlockSize = 16; eeFsLinkSize = 1; if (eeFsVersion == 5) { eeFsSize = 4+3*36; eeFsFirstBlock = 1; eeFsBlocksOffset = 112 - 16; eeFsBlocksMax = 1 + (4096-112)/16; } else { eeFsSize = 4+3*20; eeFsFirstBlock = 4; eeFsBlocksOffset = 0; eeFsBlocksMax = 2048/16; } memset(eeprom, 0, size); eeFs->version = eeFsVersion; eeFs->mySize = eeFsSize; eeFs->freeList = 0; eeFs->bs = eeFsBlockSize; for (unsigned int i=eeFsFirstBlock; i<eeFsBlocksMax-1; i++) EeFsSetLink(i, i+1); EeFsSetLink(eeFsBlocksMax-1, 0); eeFs->freeList = eeFsFirstBlock; // EeFsFlush(); } }
bool MdiChild::saveAs(bool isNew) { QString fileName; if (IS_SKY9X(GetEepromInterface()->getBoard())) { curFile.replace(".eepe", ".bin"); QFileInfo fi(curFile); #ifdef __APPLE__ fileName = QFileDialog::getSaveFileName(this, tr("Save As"), g.eepromDir() + "/" +fi.fileName()); #else fileName = QFileDialog::getSaveFileName(this, tr("Save As"), g.eepromDir() + "/" +fi.fileName(), tr(BIN_FILES_FILTER)); #endif } else { QFileInfo fi(curFile); #ifdef __APPLE__ fileName = QFileDialog::getSaveFileName(this, tr("Save As"), g.eepromDir() + "/" +fi.fileName()); #else fileName = QFileDialog::getSaveFileName(this, tr("Save As"), g.eepromDir() + "/" +fi.fileName(), tr(EEPROM_FILES_FILTER)); #endif } if (fileName.isEmpty()) return false; g.eepromDir( QFileInfo(fileName).dir().absolutePath() ); if (isNew) return saveFile(fileName); else return saveFile(fileName,true); }
void MdiChild::updateTitle() { QString title = userFriendlyCurrentFile() + "[*]" + " (" + GetCurrentFirmware()->getName() + QString(")"); if (!IS_SKY9X(GetCurrentFirmware()->getBoard())) title += QString(" - %1 ").arg(EEPromAvail) + tr("free bytes"); setWindowTitle(title); }
QString getRadioInterfaceCmd() { burnConfigDialog bcd; EEPROMInterface *eepromInterface = GetEepromInterface(); if (IS_TARANIS(eepromInterface->getBoard())) { return bcd.getDFU(); } else if (IS_SKY9X(GetEepromInterface()->getBoard())) { return bcd.getSAMBA(); } else { return bcd.getAVRDUDE(); } }
QStringList getWriteEEpromCmd(const QString &filename) { EEPROMInterface *eepromInterface = GetEepromInterface(); if (IS_TARANIS(eepromInterface->getBoard())) { // impossible return QStringList(); } else if (IS_SKY9X(eepromInterface->getBoard())) { return getSambaArgs(QString("SERIALFLASH::Init 0\n") + "send_file {SerialFlash AT25} \"" + filename + "\" 0x0 0\n"); } else { return getAvrdudeArgs("eeprom:w:", filename); } }
QStringList getReadEEpromCmd(const QString &filename) { QStringList result; EEPROMInterface *eepromInterface = GetEepromInterface(); if (IS_TARANIS(eepromInterface->getBoard())) { // impossible } else if (IS_SKY9X(eepromInterface->getBoard())) { result = getSambaArgs(QString("SERIALFLASH::Init 0\n") + "receive_file {SerialFlash AT25} \"" + filename + "\" 0x0 0x80000 0\n"); } else { result = getAvrdudeArgs("eeprom:r:", filename); } return result; }
void burnConfigDialog::on_advCtrChkB_toggled(bool checked) { EEPROMInterface *eepromInterface = GetEepromInterface(); if (checked) { if (IS_TARANIS(eepromInterface->getBoard())) { ui->label_dfu2->show(); ui->dfuArgs->show(); } else if (IS_SKY9X(eepromInterface->getBoard())) { ui->label_sb2->show(); ui->arm_mcu->show(); } else { ui->label_av3->show(); ui->avrdude_mcu->show(); QMessageBox::warning(this, tr("Companion"), tr("<b><u>WARNING!</u></b><br>Normally CPU type is automatically selected according to the chosen firmware.<br>If you change the CPU type the resulting eeprom could be inconsistent."), QMessageBox::Ok); } } else { if (IS_TARANIS(eepromInterface->getBoard())) { ui->label_dfu2->hide(); ui->dfuArgs->hide(); } else if (IS_SKY9X(eepromInterface->getBoard())) { ui->label_sb2->hide(); ui->arm_mcu->hide(); } else { ui->label_av3->hide(); ui->avrdude_mcu->hide(); } } QTimer::singleShot(0, this, SLOT(shrink())); }
// G: Read runlength (RLE) compressed bytes into buf. unsigned int EFile::readRlc12(uint8_t *buf, unsigned int i_len, bool rlc2) { memset(buf, 0, i_len); if (IS_SKY9X(board)) { int len = std::min((int)i_len, (int)m_size + (int)sizeof(t_eeprom_header) - (int)m_pos); if (len > 0) { eeprom_read_block(buf, (m_fileId << 12) + m_pos, len); m_pos += len; } return len; } else { unsigned int i=0; for( ; 1; ) { uint8_t ln = std::min<uint16_t>(m_zeroes, i_len-i); memset(&buf[i], 0, ln); i += ln; m_zeroes -= ln; if(m_zeroes) break; ln = std::min<uint16_t>(m_bRlc, i_len-i); uint8_t lr = read(&buf[i], ln); i += lr ; m_bRlc -= lr; if(m_bRlc) break; if (read(&m_bRlc, 1) !=1) break; //read how many bytes to read if (!(m_bRlc & 0x7f)) { qDebug() << "RLC decoding error!"; return 0; } if (rlc2) { if(m_bRlc&0x80){ // if contains high byte m_zeroes =(m_bRlc>>4) & 0x7; m_bRlc = m_bRlc & 0x0f; } else if(m_bRlc&0x40){ m_zeroes = m_bRlc & 0x3f; m_bRlc = 0; } //else m_bRlc } else { if(m_bRlc&0x80){ // if contains high byte
bool EFile::EeFsOpen(uint8_t *eeprom, int size, BoardEnum board) { this->eeprom = eeprom; this->eeprom_size = size; this->board = board; if (IS_SKY9X(board)) { return 1; } else if (IS_TARANIS(board)) { eeFsArm = (EeFsArm *)eeprom; eeFsVersion = eeFsArm->version; eeFsSize = 8+4*62; eeFsBlockSize = 64; eeFsLinkSize = sizeof(int16_t); eeFsFirstBlock = 1; eeFsBlocksOffset = eeFsSize - eeFsBlockSize; eeFsBlocksMax = 1 + (EESIZE_TARANIS-eeFsSize)/eeFsBlockSize; return eeFsArm->mySize == eeFsSize; } else { eeFs = (EeFs *)eeprom; eeFsVersion = eeFs->version; eeFsBlockSize = 16; eeFsLinkSize = 1; if (eeFsVersion == 5) { eeFsSize = 4+3*36; eeFsFirstBlock = 1; eeFsBlocksOffset = 112 - 16; eeFsBlocksMax = 1 + (4096-112)/16; } else if (eeFsVersion == 4) { eeFsSize = 4+3*20; eeFsFirstBlock = 4; eeFsBlocksOffset = 0; eeFsBlocksMax = 2048/16; } else { return 0; } return eeFs->mySize == eeFsSize; } }
int OpenTxEepromInterface::getSize(GeneralSettings &settings) { if (IS_SKY9X(board)) return 0; uint8_t tmp[EESIZE_RLC_MAX]; efile->EeFsCreate(tmp, EESIZE_RLC_MAX, board); OpenTxGeneralData open9xGeneral(settings, board, 255, GetCurrentFirmware()->getVariantNumber()); // open9xGeneral.Dump(); QByteArray eeprom; open9xGeneral.Export(eeprom); int sz = efile->writeRlc2(0, FILE_TYP_GENERAL, (const uint8_t*)eeprom.constData(), eeprom.size()); if (sz != eeprom.size()) { return -1; } return efile->size(0); }
unsigned int EFile::openRd(unsigned int i_fileId) { if (IS_SKY9X(board)) { m_fileId = get_current_block_number(i_fileId * 2, &m_size); m_pos = sizeof(t_eeprom_header); return 1; } else { m_fileId = i_fileId; m_pos = 0; m_currBlk = (IS_ARM(board) ? eeFsArm->files[m_fileId].startBlk : eeFs->files[m_fileId].startBlk); m_ofs = 0; m_zeroes = 0; m_bRlc = 0; m_err = ERR_NONE; //error reasons if (IS_ARM(board)) return eeFsArm->files[m_fileId].typ; else return eeFs->files[m_fileId].typ; } }
int OpenTxEepromInterface::getSize(ModelData &model) { if (IS_SKY9X(board)) return 0; if (model.isempty()) return 0; // TODO something better uint8_t tmp[EESIZE_RLC_MAX]; efile->EeFsCreate(tmp, EESIZE_RLC_MAX, board); OpenTxModelData open9xModel(model, board, 255, GetCurrentFirmware()->getVariantNumber()); QByteArray eeprom; open9xModel.Export(eeprom); int sz = efile->writeRlc2(0, FILE_TYP_MODEL, (const uint8_t*)eeprom.constData(), eeprom.size()); if (sz != eeprom.size()) { return -1; } return efile->size(0); }
bool OpenTxEepromInterface::loadModelVariant(unsigned int index, ModelData &model, uint8_t *data, unsigned int version, unsigned int variant) { T open9xModel(model, board, version, variant); if (!data) { // load from EEPROM QByteArray eepromData(sizeof(model), 0); // ModelData should be always bigger than the EEPROM struct efile->openRd(FILE_MODEL(index)); int numbytes = efile->readRlc2((uint8_t *)eepromData.data(), eepromData.size()); if (numbytes) { open9xModel.Import(eepromData); // open9xModel.Dump(); model.used = true; } else { model.clear(); } } else { // load from SD Backup, size is stored in index QByteArray backupData((char *)data, index); QByteArray modelData; if (IS_SKY9X(board)) modelData = backupData; else importRlc(modelData, backupData); if (modelData.size()) { open9xModel.Import(modelData); // open9xModel.Dump(); model.used = true; } else { model.clear(); } } return true; }
int OpenTxEepromInterface::isAvailable(Protocol proto, int port) { if (IS_TARANIS(board)) { switch (port) { case 0: switch (proto) { case OFF: case PXX_XJT_X16: case PXX_XJT_D8: case PXX_XJT_LR12: return 1; default: return 0; } break; case 1: switch (proto) { case OFF: case PPM: case PXX_XJT_X16: case PXX_XJT_D8: case PXX_XJT_LR12: //case PXX_DJT: // Unavailable for now case LP45: case DSM2: case DSMX: return 1; default: return 0; } break; case -1: switch (proto) { case PPM: return 1; default: return 0; } break; default: return 0; } } else if (IS_SKY9X(board)) { switch (port) { case 0: switch (proto) { case PPM: // case PXX_XJT_X16: // case PXX_XJT_D8: // case PXX_XJT_LR12: case LP45: case DSM2: case DSMX: return 1; default: return 0; } break; case 1: switch (proto) { case PPM: return 1; default: return 0; } break; default: return 0; } } else { switch (proto) { case PPM: case DSMX: case LP45: case DSM2: case PXX_DJT: case PPM16: case PPMSIM: return 1; default: return 0; } } }
int OpenTxFirmware::getCapability(const Capability capability) { switch (capability) { case Imperial: if (IS_ARM(board)) return 0; else return id.contains("imperial") ? 1 : 0; case ModelImage: if (IS_TARANIS(board)) return 1; else return 0; case HasBeeper: if (IS_ARM(board)) return 0; else return 1; case HasPxxCountry: return 1; case HasGeneralUnits: if (IS_ARM(board)) return 1; else return 0; case HasNegAndSwitches: if (IS_ARM(board)) return 1; else return 0; case PPMExtCtrl: return 1; case PPMFrameLength: return 40; case FlightModes: if (IS_ARM(board)) return 9; else if (board==BOARD_GRUVIN9X) return 6; else return 5; case FlightModesHaveFades: return 1; case Heli: if (IS_TARANIS(board)) return id.contains("noheli") ? 0 : 1; else return id.contains("heli") ? 1 : 0; case Gvars: if (IS_TARANIS(board)) return id.contains("nogvars") ? 0 : 9; else if (id.contains("gvars")) return IS_ARM(board) ? 9 : 5; else return 0; case FlightModesName: return (IS_TARANIS(board) ? 10 : 6); case GvarsName: return 6; case HasChNames: return (IS_TARANIS(board) ? 1 : 0); case GvarsInCS: case HasFAIMode: return 1; case GvarsAreNamed: case GvarsFlightModes: return ((IS_ARM(board) || board==BOARD_GRUVIN9X) ? 1 : 0); case Mixes: return (IS_ARM(board) ? O9X_ARM_MAX_MIXERS : O9X_MAX_MIXERS); case OffsetWeight: return (IS_ARM(board) ? 500 : 245); case Timers: return 2; case PermTimers: if (board == BOARD_GRUVIN9X || IS_ARM(board)) return 1; else return 0; case Pots: return (IS_TARANIS(board) ? 5 : 3); case Switches: return (IS_TARANIS(board) ? 8 : 7); case SwitchesPositions: return (IS_TARANIS(board) ? 22 : 9); case CustomFunctions: if (IS_ARM(board)) return 64; else if (board==BOARD_GRUVIN9X||board==BOARD_M128) return 24; else return 16; case LogicalSwitches: if (IS_ARM(board)) return 32; else if (board==BOARD_GRUVIN9X||board==BOARD_M128) return 15; else return 12; case CustomAndSwitches: if (IS_ARM(board)) return getCapability(LogicalSwitches); else return 15/*4bits*/-9/*sw positions*/; case LogicalSwitchesExt: return (IS_ARM(board) ? true : false); case RotaryEncoders: if (board == BOARD_GRUVIN9X) return 2; else if (IS_SKY9X(board)) return 1; else return 0; case Outputs: return (IS_ARM(board) ? O9X_ARM_NUM_CHNOUT : O9X_NUM_CHNOUT); case NumCurvePoints: return (IS_ARM(board) ? 512 : 104); case VoicesAsNumbers: return (IS_ARM(board) ? 0 : 1); case VoicesMaxLength: return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : 0); case MultiLangVoice: return (IS_ARM(board) ? 1 : 0); case SoundPitch: return 1; case Haptic: return (board == BOARD_GRUVIN9X || IS_SKY9X(board) || board == BOARD_TARANIS_PLUS || id.contains("haptic")); case ModelTrainerEnable: if (IS_ARM(board)) return 1; else return 0; case MaxVolume: return (IS_ARM(board) ? 23 : 7); case HasSoundMixer: return (IS_ARM(board) ? 1 : 0); case ExtraInputs: return 1; case ExtendedTrims: return 500; case Simulation: return 1; case DSM2Indexes: return 1; case NumCurves: return (IS_TARANIS(board) ? 32 : (IS_ARM(board) ? 16 : 8)); case HasMixerNames: return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false); case HasExpoNames: return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false); case HasNoExpo: return (IS_TARANIS(board) ? false : true); case ChannelsName: return (IS_TARANIS(board) ? 6 : 0); case HasCvNames: return (IS_TARANIS(board) ? 1 : 0); case Telemetry: return TM_HASTELEMETRY|TM_HASOFFSET|TM_HASWSHH; case TelemetryBars: return 1; case TelemetryCustomScreens: return IS_TARANIS(board) ? 3 : 2; case TelemetryCustomScreensFieldsPerLine: return IS_TARANIS(board) ? 3 : 2; case NoTelemetryProtocol: return IS_TARANIS(board) ? 1 : 0; case TelemetryUnits: return 0; case TelemetryTimeshift: return 1; case TelemetryMaxMultiplier: return (IS_ARM(board) ? 32 : 8); case PPMCenter: return 1; case SYMLimits: return 1; case OptrexDisplay: return (board==BOARD_SKY9X ? true : false); case HasVario: return 1; case HasVarioSink: return ((board == BOARD_GRUVIN9X || IS_ARM(board)) ? true : false); case HasFailsafe: return (IS_ARM(board) ? 32 : 0); case NumModules: return (IS_ARM(board) && !IS_9XRPRO(board)) ? 2 : 1; case HasPPMStart: return (IS_ARM(board) ? true : false); case HasCurrentCalibration: return (IS_SKY9X(board) ? true : false); case HasVolume: return (IS_ARM(board) ? true : false); case HasBrightness: return (IS_ARM(board) ? true : false); case PerModelTimers: return 1; case SlowScale: return (IS_ARM(board) ? 10 : 2); case SlowRange: return (IS_ARM(board) ? 250 : 15); case CSFunc: return 18; case HasSDLogs: return ((board == BOARD_GRUVIN9X || IS_ARM(board)) ? true : false); case LCDWidth: return (IS_TARANIS(board) ? 212 : 128) ; case GetThrSwitch: return (IS_TARANIS(board) ? SWITCH_SF1 : SWITCH_THR) ; case HasDisplayText: return IS_ARM(board) ? 1 : 0; case VirtualInputs: return IS_TARANIS(board) ? 32 : 0; case TrainerInputs: return IS_ARM(board) ? 16 : 8; case LuaScripts: return IS_TARANIS(board) ? 7 : 0; case LuaInputsPerScript: return IS_TARANIS(board) ? 10 : 0; case LuaOutputsPerScript: return IS_TARANIS(board) ? 6 : 0; case LimitsPer1000: case EnhancedCurves: return IS_TARANIS(board); case HasFasOffset: return (IS_STOCK(board) ? false : true); case HasMahPersistent: return (IS_ARM(board) ? true : false); case MultiposPots: return IS_TARANIS(board) ? 3 : 0; case MultiposPotsPositions: return IS_TARANIS(board) ? 6 : 0; case SimulatorVariant: if (board == BOARD_STOCK) return SIMU_STOCK_VARIANTS; else if (board == BOARD_M128) return SIMU_M128_VARIANTS; else return 0; case MavlinkTelemetry: return id.contains("mavlink") ? 1 : 0; default: return 0; } }
bool OpenTxEepromInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data, int index, unsigned int variant, unsigned int stickMode) { if (version == 201) { return loadModel<Open9xModelData_v201>(model, data, index, stickMode); } else if (version == 202) { return loadModel<Open9xModelData_v202>(model, data, index, 0 /*no more stick mode messed*/); } else if (version == 203) { return loadModel<Open9xModelData_v203>(model, data, index, 0 /*no more stick mode messed*/); } else if (version == 204) { return loadModel<Open9xModelData_v204>(model, data, index, 0 /*no more stick mode messed*/); } else if (version == 205) { return loadModel<Open9xModelData_v205>(model, data, index, 0 /*no more stick mode messed*/); } else if (board == BOARD_GRUVIN9X && version == 207) { return loadModel<Open9xGruvin9xModelData_v207>(model, data, index, 0 /*no more stick mode messed*/); } else if (version == 208) { if (board == BOARD_GRUVIN9X) { return loadModel<Open9xGruvin9xModelData_v208>(model, data, index, 0 /*no more stick mode messed*/); } else if (IS_SKY9X(board)) { return loadModel<Open9xArmModelData_v208>(model, data, index, 0 /*no more stick mode messed*/); } else { return loadModel<Open9xModelData_v208>(model, data, index, 0 /*no more stick mode messed*/); } } else if (version == 209) { if (board == BOARD_GRUVIN9X) { return loadModel<Open9xGruvin9xModelData_v209>(model, data, index, 0 /*no more stick mode messed*/); } else if (IS_SKY9X(board)) { return loadModel<Open9xArmModelData_v209>(model, data, index, 0 /*no more stick mode messed*/); } else { return loadModel<Open9xModelData_v209>(model, data, index, 0 /*no more stick mode messed*/); } } else if (version == 210) { if (board == BOARD_GRUVIN9X) { return loadModel<Open9xGruvin9xModelData_v210>(model, data, index, 0 /*no more stick mode messed*/); } else if (IS_SKY9X(board)) { return loadModel<Open9xArmModelData_v210>(model, data, index, 0 /*no more stick mode messed*/); } else { return loadModel<Open9xModelData_v210>(model, data, index, 0 /*no more stick mode messed*/); } } else if (version == 211) { if (board == BOARD_GRUVIN9X) { return loadModel<Open9xGruvin9xModelData_v211>(model, data, index, 0 /*no more stick mode messed*/); } else if (IS_SKY9X(board)) { return loadModel<Open9xArmModelData_v211>(model, data, index, 0 /*no more stick mode messed*/); } else { return loadModel<Open9xModelData_v211>(model, data, index, 0 /*no more stick mode messed*/); } } else if (version == 212) { if (IS_SKY9X(board)) { return loadModel<Open9xArmModelData_v212>(model, data, index); } else { return loadModelVariant<OpenTxModelData>(index, model, data, version, variant); } } else if (version >= 213) { return loadModelVariant<OpenTxModelData>(index, model, data, version, variant); } std::cout << " ko\n"; return false; }
bool MdiChild::saveFile(const QString &fileName, bool setCurrent) { QString myFile; myFile = fileName; if (IS_SKY9X(GetEepromInterface()->getBoard())) { myFile.replace(".eepe", ".bin"); } QFile file(myFile); int fileType = getFileType(myFile); uint8_t *eeprom = (uint8_t*)malloc(GetEepromInterface()->getEEpromSize()); int eeprom_size = 0; if (fileType != FILE_TYPE_XML) { eeprom_size = GetEepromInterface()->save(eeprom, radioData, GetCurrentFirmware()->getVariantNumber(), 0/*last version*/); if (!eeprom_size) { QMessageBox::warning(this, tr("Error"),tr("Cannot write file %1:\n%2.").arg(myFile).arg(file.errorString())); return false; } } if (!file.open(fileType == FILE_TYPE_BIN ? QIODevice::WriteOnly : (QIODevice::WriteOnly | QIODevice::Text))) { QMessageBox::warning(this, tr("Error"),tr("Cannot write file %1:\n%2.").arg(myFile).arg(file.errorString())); return false; } QTextStream outputStream(&file); #if 0 if (fileType==FILE_TYPE_XML) { if (!XmlInterface(outputStream).save(radioData)) { QMessageBox::warning(this, tr("Error"),tr("Cannot write file %1:\n%2.").arg(myFile).arg(file.errorString())); file.close(); return false; } } else #endif if (fileType==FILE_TYPE_HEX || fileType==FILE_TYPE_EEPE) { // write hex if (fileType==FILE_TYPE_EEPE) outputStream << EEPE_EEPROM_FILE_HEADER << "\n"; if (!HexInterface(outputStream).save(eeprom, eeprom_size)) { QMessageBox::warning(this, tr("Error"),tr("Cannot write file %1:\n%2.").arg(myFile).arg(file.errorString())); file.close(); return false; } } else if (fileType==FILE_TYPE_BIN) // write binary { long result = file.write((char*)eeprom, eeprom_size); if(result!=eeprom_size) { QMessageBox::warning(this, tr("Error"),tr("Error writing file %1:\n%2.").arg(myFile).arg(file.errorString())); return false; } } else { QMessageBox::warning(this, tr("Error"),tr("Error writing file %1:\n%2.").arg(myFile).arg("Unknown format")); return false; } free(eeprom); // TODO free in all cases ... file.close(); if(setCurrent) setCurrentFile(myFile); return true; }
burnConfigDialog::burnConfigDialog(QWidget *parent) : QDialog(parent), ui(new Ui::burnConfigDialog) { ui->setupUi(this); setWindowIcon(CompanionIcon("configure.png")); ui->avrdude_programmer->model()->sort(0); getSettings(); populateProgrammers(); EEPROMInterface *eepromInterface = GetEepromInterface(); if (IS_TARANIS(eepromInterface->getBoard())) { setWindowTitle(tr("DFU-UTIL Configuration")); ui->avrArgs->hide(); ui->avrdude_location->hide(); ui->avrdude_port->hide(); ui->avrdude_programmer->hide(); ui->label_av1->hide(); ui->label_av2->hide(); ui->label_av4->hide(); ui->label_av5->hide(); ui->pushButton->hide(); ui->pushButton_3->hide(); ui->pushButton_4->hide(); ui->label_sb1->hide(); ui->label_sb3->hide(); ui->samba_location->hide(); ui->samba_port->hide(); ui->sb_browse->hide(); } else if (IS_SKY9X(eepromInterface->getBoard())) { setWindowTitle(tr("SAM-BA Configuration")); ui->avrArgs->hide(); ui->avrdude_location->hide(); ui->avrdude_port->hide(); ui->avrdude_programmer->hide(); ui->label_av1->hide(); ui->label_av2->hide(); ui->label_av4->hide(); ui->label_av5->hide(); ui->pushButton->hide(); ui->pushButton_3->hide(); ui->pushButton_4->hide(); ui->label_dfu1->hide(); ui->dfu_location->hide(); ui->dfu_browse->hide(); } else { setWindowTitle(tr("AVRDUDE Configuration")); ui->label_sb1->hide(); ui->label_sb3->hide(); ui->samba_location->hide(); ui->samba_port->hide(); ui->sb_browse->hide(); ui->label_dfu1->hide(); ui->label_dfu2->hide(); ui->dfu_location->hide(); ui->dfu_browse->hide(); } ui->label_av3->hide(); ui->avrdude_mcu->hide(); ui->label_sb2->hide(); ui->arm_mcu->hide(); ui->label_dfu2->hide(); ui->dfuArgs->hide(); QTimer::singleShot(0, this, SLOT(shrink())); connect(this,SIGNAL(accepted()),this,SLOT(putSettings())); }