diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 99b25de50..1ceacfd21 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2477,30 +2477,38 @@ class FrskyScreenField: public DataField { else numbers.Append(new SpareBitsField<4*8>()); } - - if (IS_TARANIS(board)) - none.Append(new SpareBitsField<24*8>()); - else if (IS_ARM(board)) - none.Append(new SpareBitsField<20*8>()); - else - none.Append(new SpareBitsField<12*8>()); - + if (IS_TARANIS(board) && version >= 217) { script.Append(new CharField<8>(screen.body.script.filename)); script.Append(new SpareBitsField<16*8>()); } + + if (IS_ARM(board) && version >= 217) { + if (IS_TARANIS(board)) + none.Append(new SpareBitsField<24*8>()); + else + none.Append(new SpareBitsField<20*8>()); + } } virtual void ExportBits(QBitArray & output) { - if (screen.type == TELEMETRY_SCREEN_SCRIPT) - script.ExportBits(output); - else if (screen.type == TELEMETRY_SCREEN_NUMBERS) - numbers.ExportBits(output); - else if (screen.type == TELEMETRY_SCREEN_BARS) - bars.ExportBits(output); - else - none.ExportBits(output); + if (IS_ARM(board) && version >= 217) { + if (screen.type == TELEMETRY_SCREEN_SCRIPT) + script.ExportBits(output); + else if (screen.type == TELEMETRY_SCREEN_NUMBERS) + numbers.ExportBits(output); + else if (screen.type == TELEMETRY_SCREEN_BARS) + bars.ExportBits(output); + else + none.ExportBits(output); + } + else { + if (screen.type == TELEMETRY_SCREEN_NUMBERS) + numbers.ExportBits(output); + else + bars.ExportBits(output); + } } virtual void ImportBits(QBitArray & input) @@ -2508,27 +2516,43 @@ class FrskyScreenField: public DataField { eepromImportDebug() << QString("importing %1: type: %2").arg(name).arg(screen.type); // NOTA: screen.type should have been imported first! - if (screen.type == TELEMETRY_SCREEN_SCRIPT) - script.ImportBits(input); - else if (screen.type == TELEMETRY_SCREEN_NUMBERS) - numbers.ImportBits(input); - else if (screen.type == TELEMETRY_SCREEN_BARS) - bars.ImportBits(input); - else - none.ImportBits(input); + if (IS_ARM(board) && version >= 217) { + if (screen.type == TELEMETRY_SCREEN_SCRIPT) + script.ImportBits(input); + else if (screen.type == TELEMETRY_SCREEN_NUMBERS) + numbers.ImportBits(input); + else if (screen.type == TELEMETRY_SCREEN_BARS) + bars.ImportBits(input); + else + none.ImportBits(input); + } + else { + if (screen.type == TELEMETRY_SCREEN_NUMBERS) + numbers.ImportBits(input); + else + bars.ImportBits(input); + } } virtual unsigned int size() { // NOTA: screen.type should have been imported first! - if (screen.type == TELEMETRY_SCREEN_SCRIPT) - return script.size(); - else if (screen.type == TELEMETRY_SCREEN_NUMBERS) - return numbers.size(); - else if (screen.type == TELEMETRY_SCREEN_BARS) - return bars.size(); - else - return none.size(); + if (IS_ARM(board) && version >= 217) { + if (screen.type == TELEMETRY_SCREEN_SCRIPT) + return script.size(); + else if (screen.type == TELEMETRY_SCREEN_NUMBERS) + return numbers.size(); + else if (screen.type == TELEMETRY_SCREEN_BARS) + return bars.size(); + else + return none.size(); + } + else { + if (screen.type == TELEMETRY_SCREEN_NUMBERS) + return numbers.size(); + else + return bars.size(); + } } protected: @@ -2642,7 +2666,7 @@ class FrskyField: public StructField { Append(new UnsignedField<8>(frsky.altitudeSource, "Altitude Source")); } else { - for (int i=0; i<((version >= 216) ? 4 : 2); i++) { + for (int i=0; i<(version >= 216 ? 4 : 2); i++) { Append(new UnsignedField<8>(frsky.channels[i].ratio, "Ratio")); Append(new SignedField<12>(frsky.channels[i].offset, "Offset")); Append(new UnsignedField<4>(frsky.channels[i].type, "Type")); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index fe222ab0b..2285d968f 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -425,11 +425,12 @@ PACK(typedef struct { #define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppmFrameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount) #define LEN_SCRIPT_FILENAME 8 +#define LEN_SCRIPT_NAME 8 #define MAX_SCRIPT_INPUTS 8 #define MAX_SCRIPT_OUTPUTS 6 PACK(typedef struct { char file[LEN_SCRIPT_FILENAME]; - char name[8]; + char name[LEN_SCRIPT_NAME]; int8_t inputs[MAX_SCRIPT_INPUTS]; }) ScriptData;