diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index a080054e5..abd9d9cf4 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -821,6 +821,7 @@ class ModuleData {
int failsafeChannels[C9X_NUM_CHNOUT];
int ppmDelay;
bool ppmPulsePol; // false = positive
+ bool ppmOutputType; // false = open drain, true = push pull
int ppmFrameLength;
void clear() { memset(this, 0, sizeof(ModuleData)); }
QString polarityToString() { return ppmPulsePol ? QObject::tr("Positive") : QObject::tr("Negative"); }
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index 6f9aa3f87..915acc187 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -2983,7 +2983,16 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
internalField.Append(new SignedField<16>(modelData.moduleData[module].failsafeChannels[i]));
internalField.Append(new ConversionField< SignedField<8> >(modelData.moduleData[module].ppmDelay, exportPpmDelay, importPpmDelay));
internalField.Append(new SignedField<8>(modelData.moduleData[module].ppmFrameLength));
- internalField.Append(new BoolField<8>(modelData.moduleData[module].ppmPulsePol));
+ if (IS_9XRPRO(board)) {
+ internalField.Append(new BoolField<1>(modelData.moduleData[module].ppmPulsePol));
+ internalField.Append(new BoolField<1>(modelData.moduleData[module].ppmOutputType));
+ internalField.Append(new SpareBitsField<6>());
+ }
+ else {
+ internalField.Append(new BoolField<1>(modelData.moduleData[module].ppmPulsePol));
+ internalField.Append(new SpareBitsField<7>());
+ }
+
}
}
diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp
index 01a57b716..9d37b1af8 100644
--- a/companion/src/modeledit/setup.cpp
+++ b/companion/src/modeledit/setup.cpp
@@ -204,6 +204,7 @@ ModulePanel::~ModulePanel()
#define MASK_CHANNELS_RANGE 8
#define MASK_PPM_FIELDS 16
#define MASK_FAILSAFES 32
+#define MASK_OPEN_DRAIN 64
void ModulePanel::update()
{
@@ -230,6 +231,9 @@ void ModulePanel::update()
break;
case PPM:
mask |= MASK_PPM_FIELDS | MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT;
+ if (IS_9XRPRO(firmware->getBoard())) {
+ mask |= MASK_OPEN_DRAIN;
+ }
break;
case OFF:
default:
@@ -259,6 +263,9 @@ void ModulePanel::update()
ui->label_ppmPolarity->setVisible(mask & MASK_PPM_FIELDS);
ui->ppmPolarity->setVisible(mask & MASK_PPM_FIELDS);
ui->ppmPolarity->setCurrentIndex(module.ppmPulsePol);
+ ui->label_ppmOutputType->setVisible(mask & MASK_OPEN_DRAIN);
+ ui->ppmOutputType->setVisible(mask & MASK_OPEN_DRAIN);
+ ui->ppmOutputType->setCurrentIndex(module.ppmOutputType);
ui->label_ppmDelay->setVisible(mask & MASK_PPM_FIELDS);
ui->ppmDelay->setVisible(mask & MASK_PPM_FIELDS);
ui->ppmDelay->setValue(module.ppmDelay);
@@ -306,6 +313,12 @@ void ModulePanel::on_ppmPolarity_currentIndexChanged(int index)
emit modified();
}
+void ModulePanel::on_ppmOutputType_currentIndexChanged(int index)
+{
+ module.ppmOutputType = index;
+ emit modified();
+}
+
void ModulePanel::on_channelsCount_editingFinished()
{
if (!lock) {
diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h
index e7b0bb1c5..800fb3a32 100644
--- a/companion/src/modeledit/setup.h
+++ b/companion/src/modeledit/setup.h
@@ -55,6 +55,7 @@ class ModulePanel : public ModelPanel
void on_channelsCount_editingFinished();
void on_channelsStart_editingFinished();
void on_ppmPolarity_currentIndexChanged(int index);
+ void on_ppmOutputType_currentIndexChanged(int index);
void on_ppmFrameLength_editingFinished();
void on_rxNumber_editingFinished();
void on_failsafeMode_currentIndexChanged(int value);
diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui
index 3574236cf..d764103d8 100644
--- a/companion/src/modeledit/setup_module.ui
+++ b/companion/src/modeledit/setup_module.ui
@@ -6,7 +6,7 @@
0
0
- 692
+ 737
300
@@ -545,6 +545,27 @@
+ -
+
+
+ Output type
+
+
+
+ -
+
+
-
+
+ Open Drain
+
+
+ -
+
+ Push Pull
+
+
+
+
@@ -559,6 +580,7 @@
ppmPolarity
ppmDelay
failsafeMode
+ ppmOutputType
rxNumber
diff --git a/radio/src/gui/9X/menu_model_setup.cpp b/radio/src/gui/9X/menu_model_setup.cpp
index 9fd850f31..2b700edad 100644
--- a/radio/src/gui/9X/menu_model_setup.cpp
+++ b/radio/src/gui/9X/menu_model_setup.cpp
@@ -75,6 +75,9 @@ enum menuModelSetupItems {
ITEM_MODEL_EXTERNAL_MODULE_MODE,
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
ITEM_MODEL_EXTERNAL_MODULE_BIND,
+#if defined(PCBSKY9X) && defined(REVX)
+ ITEM_MODEL_EXTERNAL_MODULE_OUTPUT_TYPE,
+#endif
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
#if defined(PCBSKY9X) && !defined(REVA) && !defined(REVX)
ITEM_MODEL_EXTRA_MODULE_LABEL,
@@ -112,6 +115,12 @@ void menuModelSetup(uint8_t event)
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
#define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)
+ #define EXTERNAL_MODULE_SETTINGS_ROWS() (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW
+#if defined(PCBSKY9X) && defined(REVX)
+ #define OUTPUT_TYPE_ROWS() (IS_MODULE_PPM(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW) ,
+#else
+ #define OUTPUT_TYPE_ROWS()
+#endif
#define TRAINER_CHANNELS_ROWS() (HIDDEN_ROW)
#define PORT_CHANNELS_ROWS(x) (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : 0)
#define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
@@ -125,7 +134,7 @@ void menuModelSetup(uint8_t event)
#define EXTRA_MODULE_ROWS
#endif
#define TRAINER_MODULE_ROWS
- MENU_TAB({ 0, 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, 0, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS });
+ MENU_TAB({ 0, 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, 0, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), EXTERNAL_MODULE_SETTINGS_ROWS(), OUTPUT_TYPE_ROWS() IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS });
#elif defined(CPUM64)
#define CURSOR_ON_CELL (true)
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX)
@@ -621,6 +630,16 @@ void menuModelSetup(uint8_t event)
}
#endif
+#if defined(PCBSKY9X) && defined(REVX)
+ case ITEM_MODEL_EXTERNAL_MODULE_OUTPUT_TYPE:
+ {
+ uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
+ ModuleData & moduleData = g_model.moduleData[moduleIdx];
+ moduleData.ppmOutputType = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_OUTPUT_TYPE, STR_VOUTPUT_TYPE, moduleData.ppmOutputType, 0, 1, attr, event);
+ break;
+ }
+#endif
+
#if defined(CPUARM)
case ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE:
{
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index 6d922911e..a2bb9d715 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -414,7 +414,13 @@ PACK(typedef struct {
int16_t failsafeChannels[NUM_CHNOUT];
int8_t ppmDelay;
int8_t ppmFrameLength;
- uint8_t ppmPulsePol;
+ uint8_t ppmPulsePol:1;
+#if defined(PCBSKY9X) && defined(REVX)
+ uint8_t ppmOutputType:1; // false = open drain, true = push pull
+ uint8_t spare:6;
+#else
+ uint8_t spare:7;
+#endif
}) ModuleData;
#define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppmFrameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount)
diff --git a/radio/src/targets/sky9x/pulses_driver.cpp b/radio/src/targets/sky9x/pulses_driver.cpp
index 52c492d10..90b3723c1 100644
--- a/radio/src/targets/sky9x/pulses_driver.cpp
+++ b/radio/src/targets/sky9x/pulses_driver.cpp
@@ -43,7 +43,12 @@ void module_output_active()
pioptr->PIO_ABCDSR[1] |= PIO_PA17 ; // Peripheral C
pioptr->PIO_PDR = PIO_PA17 ; // Disable bit A17 Assign to peripheral
#if defined(REVX)
- pioptr->PIO_MDER = PIO_PA17 ; // Open Drain O/p in A17
+ if (g_model.moduleData[EXTERNAL_MODULE].ppmOutputType) {
+ pioptr->PIO_MDDR = PIO_PA17 ; // Push Pull O/p in A17
+ }
+ else {
+ pioptr->PIO_MDER = PIO_PA17 ; // Open Drain O/p in A17
+ }
pioptr->PIO_PUER = PIO_PA17 ; // With pull up
#endif
}
diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp
index 210b07221..b319a61b4 100644
--- a/radio/src/translations.cpp
+++ b/radio/src/translations.cpp
@@ -68,6 +68,9 @@ const pm_char STR_OPEN9X[] PROGMEM =
ISTR(RETA123)
ISTR(VPROTOS)
ISTR(POSNEG)
+#if defined(PCBSKY9X) && defined(REVX)
+ ISTR(VOUTPUT_TYPE)
+#endif
ISTR(VBLMODE)
ISTR(VCURVEFUNC)
ISTR(VMLTPX)
@@ -150,11 +153,14 @@ const pm_char STR_TIMER[] PROGMEM = TR_TIMER;
const pm_char STR_ELIMITS[] PROGMEM = TR_ELIMITS;
const pm_char STR_ETRIMS[] PROGMEM = TR_ETRIMS;
const pm_char STR_TRIMINC[] PROGMEM = TR_TRIMINC;
-const pm_char STR_DISPLAY_TRIMS[] PROGMEM = TR_DISPLAY_TRIMS;
+const pm_char STR_DISPLAY_TRIMS[] PROGMEM = TR_DISPLAY_TRIMS;
const pm_char STR_TTRACE[] PROGMEM = TR_TTRACE;
const pm_char STR_TTRIM[] PROGMEM = TR_TTRIM;
const pm_char STR_BEEPCTR[] PROGMEM = TR_BEEPCTR;
-const pm_char STR_USE_GLOBAL_FUNCS[] PROGMEM = TR_USE_GLOBAL_FUNCS;
+const pm_char STR_USE_GLOBAL_FUNCS[] PROGMEM = TR_USE_GLOBAL_FUNCS;
+#if defined(PCBSKY9X) && defined(REVX)
+ const pm_char STR_OUTPUT_TYPE[] PROGMEM = TR_OUTPUT_TYPE;
+#endif
const pm_char STR_PROTO[] PROGMEM = TR_PROTO;
const pm_char STR_PPMFRAME[] PROGMEM = TR_PPMFRAME;
const pm_char STR_MS[] PROGMEM = TR_MS;
@@ -252,8 +258,8 @@ const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING;
const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING;
#ifdef FRSKY
const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE;
-const pm_char STR_ADJUST_RTC[] PROGMEM = TR_ADJUST_RTC;
-const pm_char STR_GPS[] PROGMEM = TR_GPS;
+const pm_char STR_ADJUST_RTC[] PROGMEM = TR_ADJUST_RTC;
+const pm_char STR_GPS[] PROGMEM = TR_GPS;
const pm_char STR_GPSCOORD[] PROGMEM = TR_GPSCOORD;
const pm_char STR_VARIO[] PROGMEM = TR_VARIO;
const pm_char STR_PITCH_AT_ZERO[] PROGMEM = TR_PITCH_AT_ZERO;
@@ -261,9 +267,9 @@ const pm_char STR_PITCH_AT_MAX[] PROGMEM = TR_PITCH_AT_MAX;
const pm_char STR_REPEAT_AT_ZERO[] PROGMEM = TR_REPEAT_AT_ZERO;
#endif
const pm_char STR_RXCHANNELORD[] PROGMEM = TR_RXCHANNELORD;
-const pm_char STR_STICKS[] PROGMEM = TR_STICKS;
-const pm_char STR_POTS[] PROGMEM = TR_POTS;
-const pm_char STR_SWITCHES[] PROGMEM = TR_SWITCHES;
+const pm_char STR_STICKS[] PROGMEM = TR_STICKS;
+const pm_char STR_POTS[] PROGMEM = TR_POTS;
+const pm_char STR_SWITCHES[] PROGMEM = TR_SWITCHES;
const pm_char STR_SWITCHES_DELAY[] PROGMEM = TR_SWITCHES_DELAY;
const pm_char STR_SLAVE[] PROGMEM = TR_SLAVE;
const pm_char STR_MODESRC[] PROGMEM = TR_MODESRC;
@@ -505,7 +511,7 @@ const pm_char STR_PATH_TOO_LONG[] PROGMEM = TR_PATH_TOO_LONG;
const pm_char STR_VIEW_TEXT[] PROGMEM = TR_VIEW_TEXT;
const pm_char STR_FLASH_BOOTLOADER[] PROGMEM = TR_FLASH_BOOTLOADER;
const pm_char STR_FLASH_INTERNAL_MODULE[] PROGMEM = TR_FLASH_INTERNAL_MODULE;
-const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE;
+const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE;
const pm_char STR_WRITING[] PROGMEM = TR_WRITING;
const pm_char STR_CONFIRM_FORMAT[] PROGMEM = TR_CONFIRM_FORMAT;
const pm_char STR_EEBACKUP[] PROGMEM = TR_EEBACKUP;
diff --git a/radio/src/translations.h b/radio/src/translations.h
index 307b7cb4e..bd78c0737 100644
--- a/radio/src/translations.h
+++ b/radio/src/translations.h
@@ -119,7 +119,12 @@ extern const pm_char STR_OPEN9X[];
#endif
#define OFS_VPROTOS (OFS_RETA123 + sizeof(TR_RETA123))
#define OFS_POSNEG (OFS_VPROTOS + sizeof(TR_VPROTOS))
-#define OFS_VBLMODE (OFS_POSNEG + sizeof(TR_POSNEG))
+#if defined(PCBSKY9X) && defined(REVX)
+ #define OFS_VOUTPUT_TYPE (OFS_POSNEG + sizeof(TR_POSNEG))
+ #define OFS_VBLMODE (OFS_VOUTPUT_TYPE + sizeof(TR_VOUTPUT_TYPE))
+#else
+ #define OFS_VBLMODE (OFS_POSNEG + sizeof(TR_POSNEG))
+#endif
#define OFS_VCURVEFUNC (OFS_VBLMODE + sizeof(TR_VBLMODE))
#define OFS_VMLTPX (OFS_VCURVEFUNC + sizeof(TR_VCURVEFUNC))
#define OFS_VMLTPX2 (OFS_VMLTPX + sizeof(TR_VMLTPX))
@@ -226,6 +231,9 @@ extern const pm_char STR_OPEN9X[];
#define STR_RETA123 (STR_OPEN9X + OFS_RETA123)
#define STR_VPROTOS (STR_OPEN9X + OFS_VPROTOS)
#define STR_POSNEG (STR_OPEN9X + OFS_POSNEG)
+#if defined(PCBSKY9X) && defined(REVX)
+ #define STR_VOUTPUT_TYPE (STR_OPEN9X + OFS_VOUTPUT_TYPE)
+#endif
#define STR_VBLMODE (STR_OPEN9X + OFS_VBLMODE)
#define STR_VCURVEFUNC (STR_OPEN9X + OFS_VCURVEFUNC)
#define STR_VSIDE STR_VCURVEFUNC
@@ -338,11 +346,14 @@ extern const pm_char STR_TIMER[];
extern const pm_char STR_ELIMITS[];
extern const pm_char STR_ETRIMS[];
extern const pm_char STR_TRIMINC[];
-extern const pm_char STR_DISPLAY_TRIMS[];
+extern const pm_char STR_DISPLAY_TRIMS[];
extern const pm_char STR_TTRACE[];
extern const pm_char STR_TTRIM[];
extern const pm_char STR_BEEPCTR[];
-extern const pm_char STR_USE_GLOBAL_FUNCS[];
+extern const pm_char STR_USE_GLOBAL_FUNCS[];
+#if defined(PCBSKY9X) && defined(REVX)
+ extern const pm_char STR_OUTPUT_TYPE[];
+#endif
extern const pm_char STR_PROTO[];
extern const pm_char STR_PPMFRAME[];
extern const pm_char STR_MS[];
@@ -354,8 +365,8 @@ extern const pm_char STR_DEFAULT[];
extern const pm_char STR_CHECKTRIMS[];
extern const pm_char STR_SWASHTYPE[];
extern const pm_char STR_COLLECTIVE[];
-extern const pm_char STR_AILERON[];
-extern const pm_char STR_ELEVATOR[];
+extern const pm_char STR_AILERON[];
+extern const pm_char STR_ELEVATOR[];
extern const pm_char STR_SWASHRING[];
extern const pm_char STR_ELEDIRECTION[];
extern const pm_char STR_AILDIRECTION[];
@@ -435,17 +446,17 @@ extern const pm_char STR_SPLASHSCREEN[];
extern const pm_char STR_THROTTLEWARNING[];
extern const pm_char STR_SWITCHWARNING[];
extern const pm_char STR_TIMEZONE[];
-extern const pm_char STR_ADJUST_RTC[];
-extern const pm_char STR_GPS[];
+extern const pm_char STR_ADJUST_RTC[];
+extern const pm_char STR_GPS[];
extern const pm_char STR_GPSCOORD[];
extern const pm_char STR_VARIO[];
extern const pm_char STR_PITCH_AT_ZERO[];
extern const pm_char STR_PITCH_AT_MAX[];
extern const pm_char STR_REPEAT_AT_ZERO[];
extern const pm_char STR_RXCHANNELORD[];
-extern const pm_char STR_STICKS[];
-extern const pm_char STR_POTS[];
-extern const pm_char STR_SWITCHES[];
+extern const pm_char STR_STICKS[];
+extern const pm_char STR_POTS[];
+extern const pm_char STR_SWITCHES[];
extern const pm_char STR_SWITCHES_DELAY[];
extern const pm_char STR_SLAVE[];
extern const pm_char STR_MODESRC[];
@@ -678,8 +689,8 @@ extern const pm_char STR_MIXERS_MONITOR[];
extern const pm_char STR_PATH_TOO_LONG[];
extern const pm_char STR_VIEW_TEXT[];
extern const pm_char STR_FLASH_BOOTLOADER[];
-extern const pm_char STR_FLASH_EXTERNAL_DEVICE[];
-extern const pm_char STR_FLASH_INTERNAL_MODULE[];
+extern const pm_char STR_FLASH_EXTERNAL_DEVICE[];
+extern const pm_char STR_FLASH_INTERNAL_MODULE[];
extern const pm_char STR_WRITING[];
extern const pm_char STR_CONFIRM_FORMAT[];
extern const pm_char STR_EEBACKUP[];
diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt
index 5d7ec730a..73b828952 100644
--- a/radio/src/translations/cz.h.txt
+++ b/radio/src/translations/cz.h.txt
@@ -173,6 +173,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POZ""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -597,6 +602,9 @@
#define TR_TTRIM TR("TrimVolnob.", INDENT "Trim jen volnoběh")
#define TR_BEEPCTR TR("Středy \221\222", "Pípat středy \221\222")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO INDENT "Protokol"
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "PPM frame"
diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt
index a8048b30d..f603e01e7 100644
--- a/radio/src/translations/de.h.txt
+++ b/radio/src/translations/de.h.txt
@@ -173,6 +173,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -596,6 +601,9 @@
#define TR_TTRIM TR("Gastrim", INDENT "Gas-Leerlauftrim")
#define TR_BEEPCTR TR("Mitt.Piep","Mittelstell. -Pieps")
#define TR_USE_GLOBAL_FUNCS "Globale Funkt verw."
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT"Protok.",INDENT"Protokoll")
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "PPM frame"
diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt
index 2e06b8ed6..005388729 100644
--- a/radio/src/translations/en.h.txt
+++ b/radio/src/translations/en.h.txt
@@ -173,6 +173,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -596,6 +601,9 @@
#define TR_TTRIM TR("T-Trim", INDENT "Trim Idle Only")
#define TR_BEEPCTR TR("Ctr Beep", "Center Beep")
#define TR_USE_GLOBAL_FUNCS TR("Glob.Funcs", "Use Global Funcs")
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto", INDENT "Protocol")
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "PPM frame"
diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt
index ca6ad2156..4e7bbb0b4 100644
--- a/radio/src/translations/es.h.txt
+++ b/radio/src/translations/es.h.txt
@@ -165,6 +165,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -562,6 +567,9 @@
#define TR_TTRIM TR("Trim-A", INDENT "Trim Acelerad")
#define TR_BEEPCTR TR("Ctr Beep","Center Beep")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT"Proto",INDENT"Protocol")
#define TR_PPMFRAME "Trama PPM"
#define TR_MS "ms"
diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt
index 96f4ae3cf..7a205cb4d 100644
--- a/radio/src/translations/fi.h.txt
+++ b/radio/src/translations/fi.h.txt
@@ -165,6 +165,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -562,6 +567,9 @@
#define TR_TTRIM TR("T-Trim", INDENT "Throttle Trim")
#define TR_BEEPCTR TR("Ctr Beep", "Center Beep")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto", INDENT "Protocol")
#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame")
#define TR_MS "ms"
diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt
index d127c149d..96a7c2fa0 100644
--- a/radio/src/translations/fr.h.txt
+++ b/radio/src/translations/fr.h.txt
@@ -173,6 +173,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -596,6 +601,9 @@
#define TR_TTRIM TR("Trim gaz", INDENT "Trim ralenti uniq.")
#define TR_BEEPCTR TR("Bips centr", "Bips centrage")
#define TR_USE_GLOBAL_FUNCS "Fonctions Globales"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto.", INDENT "Protocole")
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "PPM frame"
diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt
index e879eba84..a5b0b2ac8 100644
--- a/radio/src/translations/it.h.txt
+++ b/radio/src/translations/it.h.txt
@@ -165,6 +165,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -562,6 +567,9 @@
#define TR_TTRIM TR("T-Trim", INDENT "Trim Motore")
#define TR_BEEPCTR TR("Ctr Beep","Beep al centro")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto", INDENT "Protocollo")
#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame")
#define TR_MS "ms"
diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt
index 7f9625a8b..6a3ac2575 100644
--- a/radio/src/translations/pl.h.txt
+++ b/radio/src/translations/pl.h.txt
@@ -177,6 +177,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POZ""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -600,6 +605,9 @@
#define TR_TTRIM TR("TryGaz", INDENT "TrymWolnObrotó")
#define TR_BEEPCTR TR("ŚrodBeep", "Pikn.Środka")
#define TR_USE_GLOBAL_FUNCS TR("Funk.Glb.","Użyj Funkcji Glb")
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto", INDENT "Protokół")
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "Ramka PPM"
diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt
index 88c1129f1..b79af47fa 100644
--- a/radio/src/translations/pt.h.txt
+++ b/radio/src/translations/pt.h.txt
@@ -165,6 +165,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "POS""NEG"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -562,6 +567,9 @@
#define TR_TTRIM TR("T-Trim", INDENT "T-Trim")
#define TR_BEEPCTR "Ctr Beep"
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO INDENT"Proto"
#define TR_PPMFRAME "PPM frame"
#define TR_MS "ms"
diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt
index 938175f1e..ce6b30db6 100644
--- a/radio/src/translations/se.h.txt
+++ b/radio/src/translations/se.h.txt
@@ -165,6 +165,11 @@
#define LEN_POSNEG "\003"
#define TR_POSNEG "Pos""Neg"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define LEN_VOUTPUT_TYPE "\011"
+ #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0"
+#endif
+
#define LEN_VCURVEFUNC "\003"
#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|"
@@ -562,6 +567,9 @@
#define TR_TTRIM TR("Gastrim", INDENT "Gastrim")
#define TR_BEEPCTR TR("Cent.pip", "Centerpip")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
+#if defined(PCBSKY9X) && defined(REVX)
+ #define TR_OUTPUT_TYPE INDENT "Output"
+#endif
#define TR_PROTO TR(INDENT "Proto", INDENT "Protokoll")
#define TR_PPMFRAME TR(INDENT "PPM-paket", INDENT "PPM-paket")
#define TR_MS "ms"