diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt
index 3d27550e6..aeea8b8d9 100644
--- a/companion/src/CMakeLists.txt
+++ b/companion/src/CMakeLists.txt
@@ -355,6 +355,8 @@ elseif(PCB STREQUAL X10 AND PCBREV STREQUAL TX16S)
set(FLAVOUR tx16s)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18)
set(FLAVOUR t18)
+elseif(PCB STREQUAL X10 AND PCBREV STREQUAL TX18S)
+ set(FLAVOUR tx18s)
else()
string(TOLOWER ${PCB} FLAVOUR)
endif()
diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp
index 82e645d05..a88335260 100644
--- a/companion/src/firmwares/boards.cpp
+++ b/companion/src/firmwares/boards.cpp
@@ -83,6 +83,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x3F78746F;
case BOARD_JUMPER_T18:
return 0x4078746F;
+ case BOARD_RADIOKING_TX18S:
+ return 0x4278746F;
case BOARD_RADIOMASTER_TX16S:
return 0x3878746F;
case BOARD_RADIOMASTER_TX12:
@@ -122,6 +124,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_X10_EXPRESS:
case BOARD_JUMPER_T16:
case BOARD_JUMPER_T18:
+ case BOARD_RADIOKING_TX18S:
case BOARD_RADIOMASTER_TX16S:
return 0;
}
@@ -155,6 +158,7 @@ int Boards::getFlashSize(Type board)
case BOARD_X10_EXPRESS:
case BOARD_JUMPER_T16:
case BOARD_JUMPER_T18:
+ case BOARD_RADIOKING_TX18S:
case BOARD_RADIOMASTER_TX16S:
return FSIZE_HORUS;
case BOARD_UNKNOWN:
@@ -564,6 +568,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T16";
case BOARD_JUMPER_T18:
return "Jumper T18";
+ case BOARD_RADIOKING_TX18S:
+ return "Radioking TX18S";
case BOARD_RADIOMASTER_TX16S:
return "Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h
index 1e1588485..3f151ebec 100644
--- a/companion/src/firmwares/boards.h
+++ b/companion/src/firmwares/boards.h
@@ -52,6 +52,7 @@ namespace Board {
BOARD_JUMPER_T16,
BOARD_RADIOMASTER_TX16S,
BOARD_JUMPER_T18,
+ BOARD_RADIOKING_TX18S,
BOARD_RADIOMASTER_TX12,
};
@@ -214,6 +215,11 @@ inline bool IS_JUMPER_T18(Board::Type board)
return board == Board::BOARD_JUMPER_T18;
}
+inline bool IS_RADIOKING_TX18S(Board::Type board)
+{
+ return board == Board::BOARD_RADIOKING_TX18S;
+}
+
inline bool IS_RADIOMASTER_TX16S(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_TX16S;
@@ -226,7 +232,7 @@ inline bool IS_RADIOMASTER_TX12(Board::Type board)
inline bool IS_FAMILY_T16(Board::Type board)
{
- return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18;
+ return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18 || board == Board::BOARD_RADIOKING_TX18S;
}
inline bool IS_FAMILY_T12(Board::Type board)
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index 04f02eb29..68d6f2848 100644
--- a/companion/src/firmwares/opentx/opentxinterface.cpp
+++ b/companion/src/firmwares/opentx/opentxinterface.cpp
@@ -64,6 +64,8 @@ const char * OpenTxEepromInterface::getName()
return "OpenTX for Jumper T16";
case BOARD_JUMPER_T18:
return "OpenTX for Jumper T18";
+ case BOARD_RADIOKING_TX18S:
+ return "OpenTX for Radioking TX18S";
case BOARD_RADIOMASTER_TX16S:
return "OpenTX for Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
@@ -746,7 +748,7 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
case PULSES_ACCST_ISRM_D16:
return IS_ACCESS_RADIO(board, id);
case PULSES_MULTIMODULE:
- return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board);
+ return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) || IS_RADIOKING_TX18S(board);
default:
return false;
}
@@ -1312,6 +1314,14 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
+ /* Radioking TX18S board */
+ firmware = new OpenTxFirmware("opentx-tx18s", Firmware::tr("Radioking TX18S"), BOARD_RADIOKING_TX18S);
+ addOpenTxFrskyOptions(firmware);
+ firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
+ firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
+ registerOpenTxFirmware(firmware);
+ addOpenTxRfOptions(firmware, FLEX);
+
/* 9XR-Pro */
firmware = new OpenTxFirmware("opentx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
addOpenTxArm9xOptions(firmware, false);
diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp
index cab7600d4..397524eaf 100644
--- a/companion/src/simulation/simulatorwidget.cpp
+++ b/companion/src/simulation/simulatorwidget.cpp
@@ -97,6 +97,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
case Board::BOARD_JUMPER_T18:
radioUiWidget = new SimulatedUIWidgetJumperT18(simulator, this);
break;
+ case Board::BOARD_RADIOKING_TX18S: //TODO: This needs its own thingy
+ radioUiWidget = new SimulatedUIWidgetJumperT18(simulator, this);
+ break;
case Board::BOARD_RADIOMASTER_TX12:
radioUiWidget = new SimulatedUIWidgetTX12(simulator, this);
break;
diff --git a/companion/src/translations/companion_es.ts b/companion/src/translations/companion_es.ts
index de7f3cf00..6f0d4fa7e 100644
--- a/companion/src/translations/companion_es.ts
+++ b/companion/src/translations/companion_es.ts
@@ -3534,7 +3534,7 @@ Vacío significa incluir todos. Comodines ?, *, y [...] aceptados.
-
+
diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts
index 593231b91..534071444 100644
--- a/companion/src/translations/companion_fr.ts
+++ b/companion/src/translations/companion_fr.ts
@@ -3075,7 +3075,7 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont
-
+
diff --git a/companion/src/translations/companion_ja.ts b/companion/src/translations/companion_ja.ts
index 2d7d02b4d..bcb981b47 100644
--- a/companion/src/translations/companion_ja.ts
+++ b/companion/src/translations/companion_ja.ts
@@ -3083,8 +3083,8 @@ Blank means include all. ?, *, and [...] wildcards accepted.
-
- Jumper T18
+
+ Jumper T18 / Radioking TX18S
diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt
index 47a1fed2a..4e4bb0c98 100644
--- a/radio/src/CMakeLists.txt
+++ b/radio/src/CMakeLists.txt
@@ -341,6 +341,10 @@ if(JUMPER_RELEASE)
add_definitions(-DJUMPER_RELEASE)
endif()
+if(RADIOKING_RELEASE)
+ add_definitions(-DRADIOMASTER_RELEASE)
+endif()
+
if(RADIOMASTER_RELEASE)
add_definitions(-DRADIOMASTER_RELEASE)
endif()
diff --git a/radio/src/bitmaps/480x272/CMakeLists.txt b/radio/src/bitmaps/480x272/CMakeLists.txt
index 4ae20e970..63451a512 100644
--- a/radio/src/bitmaps/480x272/CMakeLists.txt
+++ b/radio/src/bitmaps/480x272/CMakeLists.txt
@@ -4,6 +4,9 @@ if(PCB STREQUAL X12S)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18)
set(BITMAP_TARGET_PREFIX x10)
set(BITMAP_FMT_SUFFIX "")
+elseif(PCB STREQUAL X10 AND PCBREV STREQUAL TX18S)
+ set(BITMAP_TARGET_PREFIX x10)
+ set(BITMAP_FMT_SUFFIX "")
else()
set(BITMAP_TARGET_PREFIX x10)
set(BITMAP_FMT_SUFFIX "-R")
diff --git a/radio/src/gui/480x272/themes/darkblue.cpp b/radio/src/gui/480x272/themes/darkblue.cpp
index 02fa5055b..f652b8326 100644
--- a/radio/src/gui/480x272/themes/darkblue.cpp
+++ b/radio/src/gui/480x272/themes/darkblue.cpp
@@ -139,7 +139,7 @@ class DarkblueTheme: public Theme
delete calibHorus;
#if defined(RADIO_T16)
calibHorus = BitmapBuffer::load(getThemePath("t16.bmp"));
-#elif defined(RADIO_T18)
+#elif defined(RADIO_T18) || defined(RADIO_TX18S) // TODO: add actual image
calibHorus = BitmapBuffer::load(getThemePath("t18.bmp"));
#elif defined(RADIO_TX16S)
calibHorus = BitmapBuffer::load(getThemePath("tx16s.bmp"));
@@ -271,4 +271,4 @@ BitmapBuffer * DarkblueTheme::menuIconSelected[MENUS_ICONS_COUNT] = { NULL };
DarkblueTheme darkblueTheme;
#if defined(DEFAULT_THEME_DARKBLUE)
Theme * theme = &darkblueTheme;
-#endif
\ No newline at end of file
+#endif
diff --git a/radio/src/gui/480x272/themes/default.cpp b/radio/src/gui/480x272/themes/default.cpp
index 740f30e39..ed9dbe7e5 100644
--- a/radio/src/gui/480x272/themes/default.cpp
+++ b/radio/src/gui/480x272/themes/default.cpp
@@ -176,7 +176,7 @@ class DefaultTheme: public Theme
delete calibHorus;
#if defined(RADIO_T16)
calibHorus = BitmapBuffer::load(getThemePath("t16.bmp"));
-#elif defined(RADIO_T18)
+#elif defined(RADIO_T18) || defined(RADIO_TX18S) // TODO: add actual image
calibHorus = BitmapBuffer::load(getThemePath("t18.bmp"));
#elif defined(RADIO_TX16S)
calibHorus = BitmapBuffer::load(getThemePath("tx16s.bmp"));
diff --git a/radio/src/gui/480x272/themes/flexi.cpp b/radio/src/gui/480x272/themes/flexi.cpp
index 55de41628..4fe9502ba 100644
--- a/radio/src/gui/480x272/themes/flexi.cpp
+++ b/radio/src/gui/480x272/themes/flexi.cpp
@@ -157,7 +157,7 @@ class FlexiTheme: public Theme
delete calibHorus;
#if defined(RADIO_T16)
calibHorus = BitmapBuffer::load(getThemePath("t16.bmp"));
-#elif defined(RADIO_T18)
+#elif defined(RADIO_T18) || defined(RADIO_TX18S) // TODO: add actual image
calibHorus = BitmapBuffer::load(getThemePath("t18.bmp"));
#elif defined(RADIO_TX16S)
calibHorus = BitmapBuffer::load(getThemePath("tx16s.bmp"));
@@ -360,4 +360,4 @@ BitmapBuffer * FlexiTheme::menuIconTitle[MENUS_ICONS_COUNT] = { NULL };
FlexiTheme FlexiTheme;
#if defined(DEFAULT_THEME_FLEXI)
Theme * theme = &FlexiTheme;
-#endif
\ No newline at end of file
+#endif
diff --git a/radio/src/opentx.h b/radio/src/opentx.h
index 52a51719b..3f3d09fb4 100644
--- a/radio/src/opentx.h
+++ b/radio/src/opentx.h
@@ -536,7 +536,7 @@ bool setTrimValue(uint8_t phase, uint8_t idx, int trim);
#if defined(PCBSKY9X)
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
-#elif defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)
+#elif defined(RADIO_FAMILY_T16) && (!defined(RADIO_T18) || !defined(RADIO_TX18S))
#define ROTARY_ENCODER_GRANULARITY (1)
#elif defined(RADIO_TX12)
#define ROTARY_ENCODER_GRANULARITY (1)
diff --git a/radio/src/sdcard.h b/radio/src/sdcard.h
index fc9a06b92..a5181be0f 100644
--- a/radio/src/sdcard.h
+++ b/radio/src/sdcard.h
@@ -131,6 +131,8 @@ const char * getBasename(const char * path);
#define OTX_FOURCC 0x3F78746F // otx for Jumper T16
#elif defined(RADIO_T18)
#define OTX_FOURCC 0x4078746F // otx for Jumper T18
+#elif defined(RADIO_TX18S)
+ #define OTX_FOURCC 0x4278746F // otx for RadioKing TX18S
#elif defined(RADIO_TX16S)
#define OTX_FOURCC 0x3878746F // otx for Radiomaster TX16S
#elif defined(PCBX10)
diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp
index 565df359a..d31a6e859 100644
--- a/radio/src/stamp.cpp
+++ b/radio/src/stamp.cpp
@@ -38,6 +38,8 @@
#define DISPLAY_VERSION "-jumper"
#elif defined(RADIOMASTER_RELEASE)
#define DISPLAY_VERSION "-RM"
+#elif defined(RADIOKING_RELEASE)
+#define DISPLAY_VERSION "-RK"
#elif defined(TBS_RELEASE)
#define DISPLAY_VERSION "-tbs"
#elif defined(IMRC_RELEASE)
@@ -48,7 +50,7 @@
#if defined(COLORLCD)
const char fw_stamp[] = "FW" TAB ": opentx-" FLAVOUR;
-#if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE)
+#if defined(RADIOMASTER_RELEASE) || defined(RADIOKING_RELEASE) || defined(JUMPER_RELEASE)
const char vers_stamp[] = "VERS" TAB ": Factory firmware (" GIT_STR ")";
#else
const char vers_stamp[] = "VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")";
@@ -60,6 +62,8 @@
const char vers_stamp[] = "FW" TAB ": opentx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME "\036EEPR" TAB ": " EEPROM_STR;
#elif defined(RADIOMASTER_RELEASE)
const char vers_stamp[] = "FW" TAB ": opentx-" FLAVOUR "\036VERS" TAB ": RM Factory (" GIT_STR ")" "\036BUILT BY : OpenTX" "\036DATE" TAB ": " DATE " " TIME "\036EEPR" TAB ": " EEPROM_STR;
+#elif defined(RADIOKING_RELEASE)
+ const char vers_stamp[] = "FW" TAB ": opentx-" FLAVOUR "\036VERS" TAB ": RK Factory (" GIT_STR ")" "\036BUILT BY : OpenTX" "\036DATE" TAB ": " DATE " " TIME "\036EEPR" TAB ": " EEPROM_STR;
#elif defined(JUMPER_RELEASE)
const char vers_stamp[] = "FW" TAB ": opentx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : OpenTX" "\036DATE" TAB ": " DATE " " TIME "\036EEPR" TAB ": " EEPROM_STR;
#else
diff --git a/radio/src/targets/common/arm/stm32/adc_driver.cpp b/radio/src/targets/common/arm/stm32/adc_driver.cpp
index c6f5ee182..4ae9665d3 100644
--- a/radio/src/targets/common/arm/stm32/adc_driver.cpp
+++ b/radio/src/targets/common/arm/stm32/adc_driver.cpp
@@ -24,7 +24,7 @@
// not needed
#elif defined(RADIO_T16)
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1};
-#elif defined(RADIO_T18)
+#elif defined(RADIO_T18) || defined(RADIO_TX18S)
const int8_t adcDirection[NUM_ANALOGS] = { 1,-1,1,-1, -1,1,-1, -1,1, -1,1 };
#elif defined(RADIO_TX16S)
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1};
diff --git a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp
index 570e134b1..cb78a8f42 100644
--- a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp
+++ b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp
@@ -71,7 +71,7 @@ void rotaryEncoderInit()
void rotaryEncoderCheck()
{
-#if (defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)) || defined(RADIO_TX12)
+#if (defined(RADIO_FAMILY_T16) && (!defined(RADIO_T18) || !defined(RADIO_TX18S))) || defined(RADIO_TX12)
static uint8_t state = 0;
uint8_t pins = ROTARY_ENCODER_POSITION();
diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt
index fbf963b71..645d953d5 100644
--- a/radio/src/targets/horus/CMakeLists.txt
+++ b/radio/src/targets/horus/CMakeLists.txt
@@ -86,6 +86,16 @@ if (PCB STREQUAL X10)
option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON)
option(BLUETOOTH "Support for bluetooth module" OFF)
add_definitions(-DMANUFACTURER_JUMPER)
+ elseif (PCBREV STREQUAL TX18S)
+ set(FLAVOUR tx18s)
+ set(LUA_EXPORT lua_export_t16)
+ add_definitions(-DRADIO_TX18S)
+ add_definitions(-DRADIO_FAMILY_T16)
+ option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON)
+ option(BLUETOOTH "Support for bluetooth module" OFF)
+ set(HARDWARE_TOUCH YES)
+ set(USB_CHARGER YES)
+ add_definitions(-DMANUFACTURER_RADIOKING)
else()
set(FLAVOUR x10)
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h
index cffc553dc..e7487b6ef 100644
--- a/radio/src/targets/horus/board.h
+++ b/radio/src/targets/horus/board.h
@@ -569,11 +569,15 @@ void usbJoystickUpdate();
#elif defined(RADIO_T16)
#define USB_NAME "Jumper T16"
#define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */
- #define USB_PRODUCT 'T', '1', '6', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
+ #define USB_PRODUCT 'T', '1', '6', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_T18)
#define USB_NAME "Jumper T18"
#define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'T', '1', '8', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
+#elif defined(RADIO_TX18S)
+ #define USB_NAME "RK TX18S"
+ #define USB_MANUFACTURER 'R', 'K', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
+ #define USB_PRODUCT 'R', 'K', ' ', 'T', 'X', '1', '8', 'S' /* 8 Bytes */
#elif defined(RADIO_TX16S)
#define USB_NAME "RM TX16S"
#define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h
index 479dd88c5..980f9ae42 100644
--- a/radio/src/targets/horus/hal.h
+++ b/radio/src/targets/horus/hal.h
@@ -322,7 +322,7 @@
#define ADC_TRANSFER_COMPLETE() (ADC_DMA->LISR & DMA_LISR_TCIF0)
#if defined(RADIO_TX16S)
#define ADC_VREF_PREC2 330
- #elif defined(RADIO_T16) || defined(RADIO_T18)
+ #elif defined(RADIO_T16) || defined(RADIO_T18) || defined(RADIO_TX18S)
#define ADC_VREF_PREC2 300
#else
#define ADC_VREF_PREC2 250
@@ -330,7 +330,7 @@
#endif
// Power
-#if defined(RADIO_T18)
+#if defined(RADIO_T18) || defined(RADIO_TX18S)
#define PWR_RCC_AHB1Periph RCC_AHB1Periph_GPIOJ | RCC_AHB1Periph_GPIOB
#define PWR_ON_GPIO GPIOJ
#define PWR_ON_GPIO_PIN GPIO_Pin_1 // PJ.01
@@ -527,7 +527,7 @@
#define LCD_GPIO_NRST GPIOI
#define LCD_GPIO_PIN_NRST GPIO_Pin_10 // PI.10
#endif
-#if defined(PCBX10) && !defined(RADIO_T18) && !defined(SIMU)
+#if defined(PCBX10) && !defined(RADIO_T18) && !defined(RADIO_TX18S) && !defined(SIMU)
#define LCD_VERTICAL_INVERT
#endif
#define LTDC_IRQ_PRIO 4
@@ -565,7 +565,7 @@
#define BACKLIGHT_GPIO_AF GPIO_AF_TIM8
#define BACKLIGHT_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#endif
-#if defined(RADIO_T18)
+#if defined(RADIO_T18) || defined(RADIO_TX18S)
#define KEYS_BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
#define KEYS_BACKLIGHT_GPIO GPIOC
#define KEYS_BACKLIGHT_GPIO_PIN GPIO_Pin_4 // PC.04
diff --git a/radio/src/targets/horus/lcd_driver.cpp b/radio/src/targets/horus/lcd_driver.cpp
index 751aa88cd..1d0c31b81 100644
--- a/radio/src/targets/horus/lcd_driver.cpp
+++ b/radio/src/targets/horus/lcd_driver.cpp
@@ -20,7 +20,7 @@
#include "opentx.h"
-#if defined(RADIO_T18)
+#if defined(RADIO_T18) || defined(RADIO_TX18S)
#define HBP 43
#define VBP 12
@@ -153,7 +153,7 @@ static void delay3(uint32_t nCount)
static void lcd_reset(void)
{
-#if defined(RADIO_T18) // T18 screen has issues if NRST is ever brought low
+#if defined(RADIO_T18) || defined(RADIO_TX18S) // T18/TX18S screen has issues if NRST is ever brought low
NRST_HIGH();
#else
NRST_HIGH();
diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt
index 2f42f7edd..74109876b 100644
--- a/radio/src/translations/cz.h.txt
+++ b/radio/src/translations/cz.h.txt
@@ -1117,6 +1117,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
#define TR_ABOUT_HARDWARE_3 "Přispěvatel firmware"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
+ #define TR_ABOUT_HARDWARE_3 "Přispěvatel firmware"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt
index 1e85008b0..dd153d19d 100644
--- a/radio/src/translations/de.h.txt
+++ b/radio/src/translations/de.h.txt
@@ -1124,6 +1124,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
+ #define TR_ABOUT_HARDWARE_3 "Firmware contributor"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt
index ad49d6997..6c9d71acf 100644
--- a/radio/src/translations/en.h.txt
+++ b/radio/src/translations/en.h.txt
@@ -1122,6 +1122,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
+ #define TR_ABOUT_HARDWARE_3 "Firmware contributor"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt
index e89998d7f..ba5ef7f0b 100644
--- a/radio/src/translations/es.h.txt
+++ b/radio/src/translations/es.h.txt
@@ -1121,6 +1121,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
#define TR_ABOUT_HARDWARE_3 "Colaborador firmware"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
+ #define TR_ABOUT_HARDWARE_3 "Colaborador firmware"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt
index e18b51102..9d9d2b3a1 100644
--- a/radio/src/translations/fi.h.txt
+++ b/radio/src/translations/fi.h.txt
@@ -1136,6 +1136,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
+ #define TR_ABOUT_HARDWARE_3 "Firmware contributor"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt
index ffaeb38c6..94592d7c3 100644
--- a/radio/src/translations/fr.h.txt
+++ b/radio/src/translations/fr.h.txt
@@ -1146,6 +1146,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
#define TR_ABOUT_HARDWARE_3 "du matériel"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
+ #define TR_ABOUT_HARDWARE_3 "du matériel"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt
index c1e8c0be0..f0236d844 100644
--- a/radio/src/translations/it.h.txt
+++ b/radio/src/translations/it.h.txt
@@ -1138,6 +1138,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
#define TR_ABOUT_HARDWARE_3 "Contributi al Firmware"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
+ #define TR_ABOUT_HARDWARE_3 "Contributi al Firmware"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt
index fe5abbfe3..4f1a8e8a3 100644
--- a/radio/src/translations/nl.h.txt
+++ b/radio/src/translations/nl.h.txt
@@ -1130,6 +1130,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
+ #define TR_ABOUT_HARDWARE_3 "Firmware contributor"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt
index edfcee741..08ead0d48 100644
--- a/radio/src/translations/pl.h.txt
+++ b/radio/src/translations/pl.h.txt
@@ -1137,6 +1137,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
#define TR_ABOUT_HARDWARE_3 "Współautor firmware"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
+ #define TR_ABOUT_HARDWARE_3 "Współautor firmware"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt
index 412e3698a..c85ccc386 100644
--- a/radio/src/translations/pt.h.txt
+++ b/radio/src/translations/pt.h.txt
@@ -1138,6 +1138,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
+ #define TR_ABOUT_HARDWARE_3 "Firmware contributor"
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt
index 57cf99ba6..f507f3816 100644
--- a/radio/src/translations/se.h.txt
+++ b/radio/src/translations/se.h.txt
@@ -1137,6 +1137,10 @@
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
#define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
#define TR_ABOUT_HARDWARE_3 ""
+#elif defined(MANUFACTURER_RADIOKING)
+ #define TR_ABOUT_HARDWARE_1 "Radioking"
+ #define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
+ #define TR_ABOUT_HARDWARE_3 ""
#elif defined(MANUFACTURER_JUMPER)
#define TR_ABOUT_HARDWARE_1 "JumperRC"
#define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py
index 66d9f053d..f511f9abe 100755
--- a/radio/util/build-firmware.py
+++ b/radio/util/build-firmware.py
@@ -158,6 +158,11 @@ def main():
cmake_options["PCBREV"] = "T18"
firmware_options = options_jumper_t18
maxsize = 2 * 1024 * 1024
+ elif board_name == "tx18s":
+ cmake_options["PCB"] = "X10"
+ cmake_options["PCBREV"] = "TX18S"
+ firmware_options = options_jumper_tx18s
+ maxsize = 2 * 1024 * 1024
elif board_name == "tx16s":
cmake_options["PCB"] = "X10"
cmake_options["PCBREV"] = "TX16S"
diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py
index f4438db44..dd1e823a1 100755
--- a/radio/util/fwoptions.py
+++ b/radio/util/fwoptions.py
@@ -246,6 +246,19 @@ options_jumper_t18 = {
"bluetooth": ("BLUETOOTH", "YES", "NO"),
}
+options_jumper_t18 = {
+ "noheli": ("HELI", "NO", "YES"),
+ "ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
+ "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"),
+ "nogvars": ("GVARS", "NO", "YES"),
+ "faimode": ("FAI", "YES", None),
+ "faichoice": ("FAI", "CHOICE", None),
+ "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
+ "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None),
+ "bluetooth": ("BLUETOOTH", "YES", "NO"),
+}
+
+
options_radiomaster_tx12 = {
"noheli": ("HELI", "NO", "YES"),
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
@@ -270,4 +283,4 @@ options_radiomaster_tx16s = {
"bluetooth": ("BLUETOOTH", "YES", "NO"),
"internalgps": ("INTERNAL_GPS", "YES", "NO"),
"externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"),
-}
\ No newline at end of file
+}
diff --git a/tools/build-companion-nightly.sh b/tools/build-companion-nightly.sh
index a0406f691..cef8be70f 100755
--- a/tools/build-companion-nightly.sh
+++ b/tools/build-companion-nightly.sh
@@ -114,6 +114,10 @@ cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=T18 ${SRCDIR}
make -j${JOBS} libsimulator
rm CMakeCache.txt
+cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=TX18S ${SRCDIR}
+make -j${JOBS} libsimulator
+rm CMakeCache.txt
+
cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=EXPRESS ${SRCDIR}
make -j${JOBS} libsimulator
rm CMakeCache.txt
diff --git a/tools/build-companion-release.sh b/tools/build-companion-release.sh
index 463645dc2..45f2a1a22 100755
--- a/tools/build-companion-release.sh
+++ b/tools/build-companion-release.sh
@@ -114,6 +114,10 @@ cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=T18 ${SRCDIR}
make -j${JOBS} libsimulator
rm CMakeCache.txt
+cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=TX18S ${SRCDIR}
+make -j${JOBS} libsimulator
+rm CMakeCache.txt
+
cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=EXPRESS ${SRCDIR}
make -j${JOBS} libsimulator
rm CMakeCache.txt