From ee1f6e5bdcfbc87fd31080274521dfe115bba467 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 27 Nov 2016 14:47:01 +0100 Subject: [PATCH] [Companion] It's now possible to create an empty Horus storage and simulate it (only the 1st model) --- companion/src/CMakeLists.txt | 12 +- companion/src/constants.h | 1 + companion/src/customdebug.h | 3 +- companion/src/eepromimportexport.h | 10 +- companion/src/eeprominterface.cpp | 18 +-- companion/src/eeprominterface.h | 46 +++++-- .../src/firmwares/opentx/opentxeeprom.cpp | 112 ++++++++++++------ .../src/firmwares/opentx/opentxinterface.cpp | 8 +- companion/src/modeledit/customfunctions.cpp | 2 +- radio/src/datastructs.h | 2 +- 10 files changed, 141 insertions(+), 73 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index ef6b2a2f1..269e7cd58 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -22,17 +22,17 @@ if(ALLOW_NIGHTLY_BUILDS) add_definitions(-DALLOW_NIGHTLY_BUILDS) endif(ALLOW_NIGHTLY_BUILDS) -option(DEBUG_IMPORT "Turn on debug output for EEPROM import") # Disabled by default -if(DEBUG_IMPORT) - add_definitions(-DDEBUG_MODEL_IMPORT) - message(STATUS "EEPROM import debugging enabled") -endif(DEBUG_IMPORT) +option(DEBUG_STORAGE_IMPORT "Turn on debug output for storage import") # Disabled by default +if(DEBUG_STORAGE_IMPORT) + add_definitions(-DDEBUG_STORAGE_IMPORT) + message(STATUS "Storage import debugging enabled") +endif() option(TABLE_LAYOUT "Use QTableWidget for grid layouts") # Disabled by default if(TABLE_LAYOUT) add_definitions(-DTABLE_LAYOUT) message(STATUS "Using QTableWidget") -endif(TABLE_LAYOUT) +endif() if(SDL_FOUND) include_directories(${SDL_INCLUDE_DIR}) diff --git a/companion/src/constants.h b/companion/src/constants.h index f7ed5fb21..b33551600 100644 --- a/companion/src/constants.h +++ b/companion/src/constants.h @@ -57,6 +57,7 @@ enum BoardEnum { #define CPN_MAX_CYC 3 #define CPN_MAX_SWITCHES 32 #define CPN_MAX_KEYS 32 +#define CPN_MAX_MOUSE_ANALOGS 2 const char * const ARROW_LEFT = "\xE2\x86\x90"; const char * const ARROW_UP = "\xE2\x86\x91"; diff --git a/companion/src/customdebug.h b/companion/src/customdebug.h index b3d75a06a..e082ede9d 100644 --- a/companion/src/customdebug.h +++ b/companion/src/customdebug.h @@ -23,9 +23,8 @@ #include - // Controls the generation of debug output for EEPROM import -#if defined(DEBUG_MODEL_IMPORT) +#if defined(DEBUG_STORAGE_IMPORT) inline QDebug eepromImportDebug() { return QDebug(QtDebugMsg); } #else #undef eepromImportDebug diff --git a/companion/src/eepromimportexport.h b/companion/src/eepromimportexport.h index 97a10d3db..721ef328a 100644 --- a/companion/src/eepromimportexport.h +++ b/companion/src/eepromimportexport.h @@ -314,8 +314,8 @@ class SpareBitsField: public UnsignedField { template class CharField: public DataField { public: - CharField(char *field, bool truncate=true): - DataField("Char"), + CharField(char * field, bool truncate=true, const char * name="Char"): + DataField(name), field(field), truncate(truncate) { @@ -365,8 +365,8 @@ char idx2char(int8_t idx); template class ZCharField: public DataField { public: - ZCharField(char *field): - DataField("ZChar"), + ZCharField(char * field, const char * name = "ZChar"): + DataField(name), field(field) { } @@ -418,7 +418,7 @@ class ZCharField: public DataField { class StructField: public DataField { public: - StructField(const char *name="Struct"): + StructField(const char * name="Struct"): DataField(name) { } diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 4acbf4cf6..818d76ce6 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -640,9 +640,10 @@ QString RawSwitch::toString() const return QString("!") + RawSwitch(type, -index).toString(); } else { + BoardEnum board = GetEepromInterface()->getBoard(); switch(type) { case SWITCH_TYPE_SWITCH: - if (IS_TARANIS(GetEepromInterface()->getBoard())) { + if (IS_HORUS(board) || IS_TARANIS(board)) { div_t qr = div(index-1, 3); Firmware::Switch sw = GetCurrentFirmware()->getSwitch(qr.quot); const char * positions[] = { ARROW_UP, "-", ARROW_DOWN }; @@ -1105,12 +1106,9 @@ GeneralSettings::GeneralSettings() templateSetup = g.profile[g.id()].channelOrder(); stickMode = g.profile[g.id()].defaultMode(); - QString t_calib=g.profile[g.id()].stickPotCalib(); - int potsnum=GetCurrentFirmware()->getCapability(Pots); - if (t_calib.isEmpty()) { - return; - } - else { + QString t_calib = g.profile[g.id()].stickPotCalib(); + int potsnum = GetCurrentFirmware()->getCapability(Pots); + if (!t_calib.isEmpty()) { QString t_trainercalib=g.profile[g.id()].trainerCalib(); int8_t t_txVoltageCalibration=(int8_t)g.profile[g.id()].txVoltageCalibration(); int8_t t_txCurrentCalibration=(int8_t)g.profile[g.id()].txCurrentCalibration(); @@ -1203,6 +1201,12 @@ GeneralSettings::GeneralSettings() } } } + + strcpy(themeName, "default"); + ThemeOptionData option1 = { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 }; + memcpy(&themeOptionValue[0], option1, sizeof(ThemeOptionData)); + ThemeOptionData option2 = { 0x03, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 }; + memcpy(&themeOptionValue[1], option2, sizeof(ThemeOptionData)); } int GeneralSettings::getDefaultStick(unsigned int channel) const diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 136c23603..756fc386d 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -1035,6 +1035,33 @@ class SensorData { void clear() { memset(this, 0, sizeof(SensorData)); } }; +/* + * TODO ... + */ +#if 0 +class CustomScreenOptionData { + public: + +}; + +class CustomScreenZoneData { + public: + char widgetName[10+1]; + WidgetOptionData widgetOptions[5]; +}; + +class CustomScreenData { + public: + CustomScreenData(); + + char layoutName[10+1]; + CustomScreenZoneData zones[]; + CustomScreenOptionData options[]; +}; +#else +typedef char CustomScreenData[610+1]; +#endif + class ModelData { public: ModelData(); @@ -1101,7 +1128,9 @@ class ModelData { SensorData sensorData[CPN_MAX_SENSORS]; unsigned int toplcdTimer; - + + CustomScreenData customScreenData[5]; + void clear(); bool isEmpty() const; void setDefaultInputs(const GeneralSettings & settings); @@ -1174,9 +1203,9 @@ class GeneralSettings { unsigned int version; unsigned int variant; - int calibMid[CPN_MAX_STICKS+CPN_MAX_POTS]; - int calibSpanNeg[CPN_MAX_STICKS+CPN_MAX_POTS]; - int calibSpanPos[CPN_MAX_STICKS+CPN_MAX_POTS]; + int calibMid[CPN_MAX_STICKS+CPN_MAX_POTS+CPN_MAX_MOUSE_ANALOGS]; + int calibSpanNeg[CPN_MAX_STICKS+CPN_MAX_POTS+CPN_MAX_MOUSE_ANALOGS]; + int calibSpanPos[CPN_MAX_STICKS+CPN_MAX_POTS+CPN_MAX_MOUSE_ANALOGS]; unsigned int currModel; // 0..15 unsigned int contrast; unsigned int vBatWarn; @@ -1228,6 +1257,7 @@ class GeneralSettings { unsigned int gpsFormat; int speakerVolume; unsigned int backlightBright; + unsigned int backlightOffBright; int switchesDelay; int temperatureCalib; int temperatureWarn; @@ -1264,6 +1294,10 @@ class GeneralSettings { char sliderName[4][3+1]; unsigned int sliderConfig[4]; + char themeName[8+1]; + typedef uint8_t ThemeOptionData[8+1]; + ThemeOptionData themeOptionValue[5]; + struct SwitchInfo { SwitchInfo(unsigned int index, unsigned int position): index(index), @@ -1416,10 +1450,6 @@ class EEPROMInterface virtual unsigned long loadBackup(RadioData & radioData, const uint8_t * eeprom, int esize, int index) = 0; - virtual bool loadRadioSettings(GeneralSettings & model, const QByteArray & data) { return false; } - - virtual bool loadModel(ModelData & model, const QByteArray & data) { return false; } - virtual unsigned long loadxml(RadioData & radioData, QDomDocument &doc) = 0; virtual int save(uint8_t * eeprom, RadioData & radioData, uint8_t version=0, uint32_t variant=0) = 0; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 55f43f3e6..d95383fb2 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -31,7 +31,7 @@ #define HAS_PERSISTENT_TIMERS(board) (IS_ARM(board) || IS_2560(board)) #define MAX_VIEWS(board) (HAS_LARGE_LCD(board) ? 2 : 256) -#define MAX_POTS(board, version) (board == BOARD_X7D ? 2 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : (version >= 216 ? 3 : 2)) : 3)) +#define MAX_POTS(board, version) (IS_HORUS(board) ? 3 : (board == BOARD_X7D ? 2 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : (version >= 216 ? 3 : 2)) : 3))) #define MAX_SLIDERS(board) (IS_HORUS(board) ? 4 : (board == BOARD_X7D ? 0 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : 2) : 0))) #define MAX_MOUSE_ANALOGS(board) (IS_HORUS(board) ? 2 : 0) #define MAX_SWITCHES(board, version) (IS_HORUS(board) ? 8 : (board == BOARD_X7D ? 6 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 18 : 8) : 7))) @@ -835,9 +835,9 @@ class FlightModeField: public TransformedField { } if (IS_ARM(board) && version >= 218) { if (HAS_LARGE_LCD(board)) - internalField.Append(new ZCharField<10>(phase.name)); + internalField.Append(new ZCharField<10>(phase.name, "Flight mode name")); else - internalField.Append(new ZCharField<6>(phase.name)); + internalField.Append(new ZCharField<6>(phase.name, "Flight mode name")); internalField.Append(new SwitchField<9>(phase.swtch, board, version)); internalField.Append(new SpareBitsField<7>()); } @@ -2599,7 +2599,7 @@ class FrskyScreenField: public DataField { } if (IS_TARANIS(board) && version >= 217) { - script.Append(new CharField<8>(screen.body.script.filename)); + script.Append(new CharField<8>(screen.body.script.filename, true, "Script name")); script.Append(new SpareBitsField<16*8>()); } @@ -2912,6 +2912,23 @@ class MavlinkField: public StructField { } }; +/* + * TODO + */ +#if 0 +class CustomScreenField: public StructField { + public: + CustomScreenField(CustomScreenData & customScreen): + StructField("Custom Screen"), + customScreen(customScreen) + { + } + + protected: + CustomScreenData & customScreen; +}; +#endif + class SensorField: public TransformedField { public: SensorField(SensorData & sensor, BoardEnum board, unsigned int version): @@ -3016,11 +3033,11 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne eepromImportDebug() << QString("OpenTxModelData::OpenTxModelData(name: %1, board: %2, ver: %3, var: %4)").arg(name).arg(board).arg(version).arg(variant); if (board == BOARD_HORUS) - internalField.Append(new ZCharField<15>(modelData.name)); + internalField.Append(new ZCharField<15>(modelData.name, "Model name")); else if (HAS_LARGE_LCD(board)) - internalField.Append(new ZCharField<12>(modelData.name)); + internalField.Append(new ZCharField<12>(modelData.name, "Model name")); else - internalField.Append(new ZCharField<10>(modelData.name)); + internalField.Append(new ZCharField<10>(modelData.name, "Model name")); bool afterrelease21March2013 = IS_AFTER_RELEASE_21_MARCH_2013(board, version); @@ -3032,7 +3049,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne } if (HAS_LARGE_LCD(board) && version >= 215) { - internalField.Append(new CharField<10>(modelData.bitmap)); + internalField.Append(new CharField<10>(modelData.bitmap, true, "Model bitmap")); } for (int i=0; i(modelData.timers[i].persistent)); internalField.Append(new SpareBitsField<3>()); if (HAS_LARGE_LCD(board)) - internalField.Append(new ZCharField<8>(modelData.timers[i].name)); + internalField.Append(new ZCharField<8>(modelData.timers[i].name, "Timer name")); else - internalField.Append(new ZCharField<3>(modelData.timers[i].name)); + internalField.Append(new ZCharField<3>(modelData.timers[i].name, "Timer name")); } else if (IS_ARM(board) && version >= 217) { internalField.Append(new SwitchField<8>(modelData.timers[i].mode, board, version, true)); @@ -3058,9 +3075,9 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne internalField.Append(new UnsignedField<2>(modelData.timers[i].persistent)); internalField.Append(new SpareBitsField<3>()); if (IS_TARANIS(board)) - internalField.Append(new ZCharField<8>(modelData.timers[i].name)); + internalField.Append(new ZCharField<8>(modelData.timers[i].name, "Timer name")); else - internalField.Append(new ZCharField<3>(modelData.timers[i].name)); + internalField.Append(new ZCharField<3>(modelData.timers[i].name, "Timer name")); } else if ((IS_ARM(board) || IS_2560(board)) && version >= 216) { internalField.Append(new SwitchField<8>(modelData.timers[i].mode, board, version, true)); @@ -3187,7 +3204,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne if (board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) { for (int i=0; i= 218) { - internalField.Append(new ZCharField<3>(modelData.gvars_names[i])); + internalField.Append(new ZCharField<3>(modelData.gvars_names[i], "GVar name")); internalField.Append(new SpareBitsField<12>()); // TODO min internalField.Append(new SpareBitsField<12>()); // TODO max internalField.Append(new BoolField<1>(modelData.gvars_popups[i])); @@ -3196,7 +3213,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne internalField.Append(new SpareBitsField<4>()); } else { - internalField.Append(new ZCharField<6>(modelData.gvars_names[i])); + internalField.Append(new ZCharField<6>(modelData.gvars_names[i], "GVar name")); if (version >= 216) { internalField.Append(new BoolField<1>(modelData.gvars_popups[i])); internalField.Append(new SpareBitsField<7>()); @@ -3219,7 +3236,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne } if (IS_TARANIS(board) && version < 215) { - internalField.Append(new CharField<10>(modelData.bitmap)); + internalField.Append(new CharField<10>(modelData.bitmap, true, "Model bitmap")); } int modulesCount = 2; @@ -3286,7 +3303,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne if (IS_TARANIS(board) && version < 218) { for (int i=0; i(modelData.curves[i].name)); + internalField.Append(new ZCharField<6>(modelData.curves[i].name, "Curve name")); } } @@ -3294,8 +3311,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne if (version >= 218) { for (int i=0; i(script.filename)); - internalField.Append(new ZCharField<6>(script.name)); + internalField.Append(new CharField<6>(script.filename, true, "Script filename")); + internalField.Append(new ZCharField<6>(script.name, "Script name")); for (int j=0; j<6; j++) { internalField.Append(new SignedField<16>(script.inputs[j])); } @@ -3304,8 +3321,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne else if (version >= 217) { for (int i=0; i<7; i++) { ScriptData & script = modelData.scriptData[i]; - internalField.Append(new CharField<8>(script.filename)); - internalField.Append(new ZCharField<8>(script.name)); + internalField.Append(new CharField<8>(script.filename, true, "Script filename")); + internalField.Append(new ZCharField<8>(script.name, "Script name")); for (int j=0; j<8; j++) { internalField.Append(new SignedField<8>(script.inputs[j])); } @@ -3314,8 +3331,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne else if (version >= 216) { for (int i=0; i<7; i++) { ScriptData & script = modelData.scriptData[i]; - internalField.Append(new CharField<10>(script.filename)); - internalField.Append(new ZCharField<10>(script.name)); + internalField.Append(new CharField<10>(script.filename, true, "Script filename")); + internalField.Append(new ZCharField<10>(script.name, "Script name")); for (int j=0; j<10; j++) { internalField.Append(new SignedField<8>(script.inputs[j])); } @@ -3326,9 +3343,9 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne if (IS_ARM(board) && version >= 216) { for (int i=0; i<32; i++) { if (HAS_LARGE_LCD(board)) - internalField.Append(new ZCharField<4>(modelData.inputNames[i])); + internalField.Append(new ZCharField<4>(modelData.inputNames[i], "Input name")); else - internalField.Append(new ZCharField<3>(modelData.inputNames[i])); + internalField.Append(new ZCharField<3>(modelData.inputNames[i], "Input name")); } } @@ -3374,6 +3391,10 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne if (IS_TARANIS_X9E(board)) { internalField.Append(new UnsignedField<8>(modelData.toplcdTimer)); } + + for (int i=0; i<5; i++) { + internalField.Append(new CharField<610>(modelData.customScreenData[i], true, "Custom screen blob")); + } } void OpenTxModelData::beforeExport() @@ -3504,7 +3525,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo } internalField.Append(new UnsignedField<8>(generalData.view, 0, MAX_VIEWS(board)-1)); - + internalField.Append(new SpareBitsField<2>()); // TODO buzzerMode? internalField.Append(new BoolField<1>(generalData.fai)); internalField.Append(new SignedField<2>((int &)generalData.beeperMode)); @@ -3577,7 +3598,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo internalField.Append(new SignedField<8>(generalData.vBatMin)); internalField.Append(new SignedField<8>(generalData.vBatMax)); } - + if (IS_ARM(board)) { internalField.Append(new UnsignedField<8>(generalData.backlightBright)); if (version < 218) internalField.Append(new SignedField<8>(generalData.txCurrentCalibration)); @@ -3604,7 +3625,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo } } if (version >= 215) { - internalField.Append(new CharField<2>(generalData.ttsLanguage)); + internalField.Append(new CharField<2>(generalData.ttsLanguage, true, "TTS language")); if (version >= 218) { internalField.Append(new SignedField<4>(generalData.beepVolume)); internalField.Append(new SignedField<4>(generalData.wavVolume)); @@ -3628,6 +3649,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo internalField.Append(new ArmCustomFunctionField(generalData.customFn[i], board, version, variant)); } } + if (IS_STM32(board) && version >= 216) { if (version >= 218) { internalField.Append(new UnsignedField<4>(generalData.hw_uartMode)); @@ -3674,19 +3696,19 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo if (IS_HORUS(board)) { for (int i=0; i(generalData.switchName[i])); + internalField.Append(new ZCharField<3>(generalData.switchName[i], "Switch name")); } for (int i=0; i(generalData.stickName[i])); + internalField.Append(new ZCharField<3>(generalData.stickName[i], "Stick name")); } for (int i=0; i(generalData.potName[i])); + internalField.Append(new ZCharField<3>(generalData.potName[i], "Pot name")); } for (int i=0; i(generalData.sliderName[i])); + internalField.Append(new ZCharField<3>(generalData.sliderName[i], "Slider name")); } - static char * modelName = "model1.bin\0 "; - internalField.Append(new CharField<16>(modelName)); + static char modelName[17+1] = "model1.bin\0 "; + internalField.Append(new CharField<17>(modelName, true, "Model name")); } else if (IS_TARANIS(board) && version >= 217) { for (int i=0; i()); } for (int i=0; i(generalData.switchName[i])); + internalField.Append(new ZCharField<3>(generalData.switchName[i], "Switch name")); } for (int i=0; i(generalData.stickName[i])); + internalField.Append(new ZCharField<3>(generalData.stickName[i], "Stick name")); } for (int i=0; i(generalData.potName[i])); + internalField.Append(new ZCharField<3>(generalData.potName[i], "Pot name")); } for (int i=0; i(generalData.sliderName[i])); + internalField.Append(new ZCharField<3>(generalData.sliderName[i], "Slider name")); } } - if (IS_TARANIS_X9E(board) && version >= 217) { + if (IS_HORUS(board)) { + internalField.Append(new BoolField<1>(generalData.bluetoothEnable)); + internalField.Append(new UnsignedField<7>(generalData.backlightOffBright)); + internalField.Append(new ZCharField<10>(generalData.bluetoothName, "Bluetooth name")); + } + else if (IS_TARANIS_X9E(board) && version >= 217) { internalField.Append(new BoolField<8>(generalData.bluetoothEnable)); - internalField.Append(new ZCharField<10>(generalData.bluetoothName)); + internalField.Append(new ZCharField<10>(generalData.bluetoothName, "Bluetooth name")); + } + + if (IS_HORUS(board)) { + internalField.Append(new CharField<8>(generalData.themeName, true, "Theme name")); + for (int i=0; i<5; i++) { + internalField.Append(new CharField<8>((char *)generalData.themeOptionValue[i], true, "Theme blob")); + } } } } diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 69a411b68..42a83ce13 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -164,7 +164,7 @@ bool OpenTxEepromInterface::saveToByteArray(const T & src, QByteArray & data, ui { QByteArray raw; M manager((T&)src, board, version, 0); - // manager.Dump(); + manager.Dump(); manager.Export(raw); data.resize(8); *((uint32_t*)&data.data()[0]) = 0x3178396F; @@ -180,7 +180,7 @@ bool OpenTxEepromInterface::loadFromByteArray(T & dest, const QByteArray & data, { M manager(dest, board, version, variant); manager.Import(data); - // manager.Dump(); // Dumps the structure so that it's easy to check with firmware datastructs.h + manager.Dump(); // Dumps the structure so that it's easy to check with firmware datastructs.h return true; } @@ -222,7 +222,7 @@ unsigned long OpenTxEepromInterface::loadxml(RadioData &radioData, QDomDocument return errors.to_ulong(); } -int OpenTxEepromInterface::loadFile(RadioData &radioData, const QString & filename) +int OpenTxEepromInterface::loadFile(RadioData & radioData, const QString & filename) { StorageSdcard storage; @@ -234,7 +234,7 @@ int OpenTxEepromInterface::loadFile(RadioData &radioData, const QString & filena // radio.bin qDebug() << "Radio settings:" << storage.radio.size(); - loadRadioSettings(radioData.generalSettings, storage.radio); + loadFromByteArray(radioData.generalSettings, storage.radio); // all models QList models = storage.getModelsFileNames(); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 8a165e086..71222dc93 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -85,7 +85,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData * model, s1.report("get tracks"); - if (IS_TARANIS(firmware->getBoard())) { + if (IS_STM32(firmware->getBoard())) { scriptsSet = getFilesSet(g.profile[g.id()].sdPath() + "/SCRIPTS/FUNCTIONS", QStringList() << "*.lua", firmware->getCapability(VoicesMaxLength)); for (int i=0; i