diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 58ae897202..c2cccc6d15 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -345,6 +345,8 @@ if(PCB STREQUAL X7 AND PCBREV STREQUAL T12) set(FLAVOUR t12) elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) set(FLAVOUR x9d+2019) +elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS) + set(FLAVOUR x10express) else() string(TOLOWER ${PCB} FLAVOUR) endif() diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index 44e3f02215..ee4edd921b 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -59,6 +59,7 @@ uint32_t Boards::getFourCC(Type board) case BOARD_X12S: return 0x3478746F; case BOARD_X10: + case BOARD_X10_EXPRESS: return 0x3778746F; case BOARD_TARANIS_XLITE: return 0x3978746F; @@ -122,6 +123,7 @@ const int Boards::getEEpromSize(Board::Type board) return EESIZE_MAX; case BOARD_X12S: case BOARD_X10: + case BOARD_X10_EXPRESS: return 0; } @@ -155,6 +157,7 @@ const int Boards::getFlashSize(Type board) return FSIZE_TARANIS; case BOARD_X12S: case BOARD_X10: + case BOARD_X10_EXPRESS: return FSIZE_HORUS; case BOARD_UNKNOWN: return FSIZE_MAX; @@ -522,6 +525,8 @@ const QString Boards::getBoardName(Board::Type board) return "Horus X12S"; case BOARD_X10: return "Horus X10/X10S"; + case BOARD_X10_EXPRESS: + return "Horus X10 Express"; default: return tr("Unknown"); } diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 1533107c32..545d065515 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -46,6 +46,7 @@ namespace Board { BOARD_TARANIS_X9E, BOARD_X12S, BOARD_X10, + BOARD_X10_EXPRESS, BOARD_TARANIS_XLITE, BOARD_TARANIS_XLITES, BOARD_TARANIS_X9LITE, @@ -206,12 +207,11 @@ class Boards #define IS_TARANIS(board) (IS_TARANIS_X9(board) || IS_TARANIS_X7(board) || IS_TARANIS_X9LITE(board) || IS_TARANIS_XLITE(board) || IS_JUMPER_T12(board)) #define IS_TARANIS_SMALL(board) (IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_JUMPER_T12(board)) #define IS_HORUS_X12S(board) (board==Board::BOARD_X12S) -#define IS_HORUS_X10(board) (board==Board::BOARD_X10) +#define IS_HORUS_X10(board) (board==Board::BOARD_X10 || board==Board::BOARD_X10_EXPRESS) #define IS_HORUS(board) (IS_HORUS_X12S(board) || IS_HORUS_X10(board)) #define IS_HORUS_OR_TARANIS(board) (IS_HORUS(board) || IS_TARANIS(board)) #define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board)) #define IS_ARM(board) (IS_STM32(board) || IS_SKY9X(board)) -#define IS_ACCESS_RADIO(board) (IS_TARANIS_X9LITE(board) || IS_TARANIS_XLITES(board)) #define HAS_LARGE_LCD(board) (IS_HORUS(board) || IS_TARANIS_X9(board)) #endif // _BOARDS_H_ diff --git a/companion/src/firmwares/eeprominterface.h b/companion/src/firmwares/eeprominterface.h index 7b6447d9d3..9632af1ac7 100644 --- a/companion/src/firmwares/eeprominterface.h +++ b/companion/src/firmwares/eeprominterface.h @@ -345,7 +345,7 @@ class Firmware virtual QTime getMaxTimerStart() = 0; - virtual int isAvailable(PulsesProtocol proto, int port=0) = 0; + virtual bool isAvailable(PulsesProtocol proto, int port=0) = 0; const int getFlashSize(); diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index e3ef6d4246..65bc818040 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -203,7 +203,7 @@ int Er9xInterface::getSize(const GeneralSettings &settings) return 0; } -int Er9xInterface::isAvailable(PulsesProtocol prot, int port) +bool Er9xInterface::isAvailable(PulsesProtocol prot, int port) { switch (prot) { case PULSES_PPM: diff --git a/companion/src/firmwares/er9x/er9xinterface.h b/companion/src/firmwares/er9x/er9xinterface.h index 469ad9cd0c..ec3d9cc1a1 100644 --- a/companion/src/firmwares/er9x/er9xinterface.h +++ b/companion/src/firmwares/er9x/er9xinterface.h @@ -52,7 +52,7 @@ class Er9xInterface : public EEPROMInterface virtual int getSize(const GeneralSettings &settings); - virtual int isAvailable(PulsesProtocol proto, int port=0); + virtual bool isAvailable(PulsesProtocol proto, int port=0); virtual int getCapability(Capability capability); diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index 0e7e87e011..5c2a35edbc 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -251,7 +251,7 @@ int Ersky9xInterface::getSize(const GeneralSettings & settings) return 0; } -int Ersky9xInterface::isAvailable(PulsesProtocol prot, int port) +bool Ersky9xInterface::isAvailable(PulsesProtocol prot, int port) { switch (prot) { case PULSES_PPM: diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.h b/companion/src/firmwares/ersky9x/ersky9xinterface.h index 6d815190fd..c5aabdb07d 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.h +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.h @@ -51,7 +51,7 @@ class Ersky9xInterface : public EEPROMInterface virtual int getSize(const GeneralSettings & settings); - virtual int isAvailable(PulsesProtocol proto, int port=0); + virtual bool isAvailable(PulsesProtocol proto, int port=0); virtual int getCapability(Capability capability); diff --git a/companion/src/firmwares/modeldata.cpp b/companion/src/firmwares/modeldata.cpp index b615fd6491..b3d4f82fae 100644 --- a/companion/src/firmwares/modeldata.cpp +++ b/companion/src/firmwares/modeldata.cpp @@ -163,8 +163,9 @@ void ModelData::clear() moduleData[0].ppm.delay = 300; moduleData[1].ppm.delay = 300; moduleData[2].ppm.delay = 300; - int board = getCurrentBoard(); - if (IS_ACCESS_RADIO(board)) { + Firmware * firmware = Firmware::getCurrentVariant(); + int board = firmware->getBoard(); + if (firmware->isAvailable(PULSES_ACCESS_ISRM, 0)) { moduleData[0].protocol = PULSES_ACCESS_ISRM; moduleData[1].protocol = PULSES_OFF; } diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 4a268a35a2..f3558a2456 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -94,6 +94,8 @@ const char * OpenTxEepromInterface::getName() return "OpenTX for FrSky Horus"; case BOARD_X10: return "OpenTX for FrSky X10"; + case BOARD_X10_EXPRESS: + return "OpenTX for FrSky X10 Express"; default: return "OpenTX for an unknown board"; } @@ -756,37 +758,38 @@ QTime OpenTxFirmware::getMaxTimerStart() return QTime(0, 59, 59); } -int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) +bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) { if (IS_HORUS_OR_TARANIS(board)) { switch (port) { case 0: switch (proto) { case PULSES_OFF: - return 1; + return true; case PULSES_PXX_XJT_X16: case PULSES_PXX_XJT_LR12: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 0 : 1; + return !(IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); case PULSES_PXX_XJT_D8: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) || id.contains("eu")) ? 0 : 1; + return !(IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) || id.contains("eu")); case PULSES_PPM: - return id.contains("internalppm") ? 1 : 0; + return id.contains("internalppm"); case PULSES_ACCESS_ISRM: + return IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) || board == BOARD_TARANIS_X9DP_2019 || board == BOARD_X10_EXPRESS || (IS_HORUS(board) && id.contains("internalaccess")); case PULSES_ACCST_ISRM_D16: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; + return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); default: - return 0; + return false; } case 1: switch (proto) { case PULSES_OFF: case PULSES_PPM: - return 1; + return true; case PULSES_PXX_XJT_X16: case PULSES_PXX_XJT_D8: case PULSES_PXX_XJT_LR12: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 0 : 1; + return !(IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); case PULSES_PXX_R9M: case PULSES_LP45: case PULSES_DSM2: @@ -794,28 +797,28 @@ int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_SBUS: case PULSES_MULTIMODULE: case PULSES_CROSSFIRE: - return 1; + return true; case PULSES_ACCESS_R9M_LITE: case PULSES_ACCESS_R9M_LITE_PRO: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; + return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); case PULSES_XJT_LITE_X16: case PULSES_XJT_LITE_D8: case PULSES_XJT_LITE_LR12: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; + return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); default: - return 0; + return false; } case -1: switch (proto) { case PULSES_PPM: - return 1; + return true; default: - return 0; + return false; } default: - return 0; + return false; } } else if (IS_SKY9X(board)) { @@ -832,21 +835,21 @@ int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_DSMX: case PULSES_SBUS: case PULSES_MULTIMODULE: - return 1; + return true; default: - return 0; + return false; } break; case 1: switch (proto) { case PULSES_PPM: - return 1; + return true; default: - return 0; + return false; } break; default: - return 0; + return false; } } else { @@ -858,9 +861,9 @@ int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) // case PULSES_PXX_DJT: // Unavailable for now case PULSES_PPM16: case PULSES_PPMSIM: - return 1; + return true; default: - return 0; + return false; } } } @@ -1256,11 +1259,18 @@ void registerOpenTxFirmwares() /* FrSky X10 board */ firmware = new OpenTxFirmware("opentx-x10", Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10); addOpenTxFrskyOptions(firmware); + firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement")); + registerOpenTxFirmware(firmware); + + /* FrSky X10 Express board */ + firmware = new OpenTxFirmware("opentx-x10express", Firmware::tr("FrSky Horus X10 Express"), BOARD_X10_EXPRESS); + addOpenTxFrskyOptions(firmware); registerOpenTxFirmware(firmware); /* FrSky X12 (Horus) board */ firmware = new OpenTxFirmware("opentx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_X12S); addOpenTxFrskyOptions(firmware); + firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement")); firmware->addOption("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version")); registerOpenTxFirmware(firmware); diff --git a/companion/src/firmwares/opentx/opentxinterface.h b/companion/src/firmwares/opentx/opentxinterface.h index 2776707061..b71ba9eb9d 100644 --- a/companion/src/firmwares/opentx/opentxinterface.h +++ b/companion/src/firmwares/opentx/opentxinterface.h @@ -122,7 +122,7 @@ class OpenTxFirmware: public Firmware virtual QTime getMaxTimerStart(); - virtual int isAvailable(PulsesProtocol proto, int port=0); + virtual bool isAvailable(PulsesProtocol proto, int port=0); protected: diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index 2ec00381d1..f25873db35 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -90,6 +90,7 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato radioUiWidget = new SimulatedUIWidgetX12(simulator, this); break; case Board::BOARD_X10: + case Board::BOARD_X10_EXPRESS: radioUiWidget = new SimulatedUIWidgetX10(simulator, this); break; case Board::BOARD_JUMPER_T12: diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index c4cb70ed9f..dc43590920 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -27,7 +27,6 @@ if(SPLASH STREQUAL OFF) endif() if (PCB STREQUAL X10) - set(FLAVOUR x10) set(PCBREV "STD" CACHE STRING "PCB Revision") add_definitions(-DPCBX10) add_definitions(-DSOFTWARE_VOLUME) @@ -42,9 +41,11 @@ if (PCB STREQUAL X10) set(LCD_DRIVER lcd_driver.cpp) set(LUA_EXPORT lua_export_x10) if (PCBREV STREQUAL EXPRESS) + set(FLAVOUR x10express) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF) option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON) else() + set(FLAVOUR x10) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON) option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF) endif() diff --git a/tools/build-companion-nightly.sh b/tools/build-companion-nightly.sh index 6a9ffca5e7..c0cf47bd15 100755 --- a/tools/build-companion-nightly.sh +++ b/tools/build-companion-nightly.sh @@ -59,10 +59,10 @@ make -j${JOBS} libsimulator cmake ${COMMON_OPTIONS} -DPCB=X9D ${SRCDIR} make -j${JOBS} libsimulator -cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 ${SRCDIR} +cmake ${COMMON_OPTIONS} -DPCB=X9D+ ${SRCDIR} make -j${JOBS} libsimulator -cmake ${COMMON_OPTIONS} -DPCB=X9D+ ${SRCDIR} +cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 ${SRCDIR} make -j${JOBS} libsimulator cmake ${COMMON_OPTIONS} -DPCB=XLITE ${SRCDIR} @@ -77,6 +77,9 @@ make -j${JOBS} libsimulator cmake ${COMMON_OPTIONS} -DPCB=X10 ${SRCDIR} make -j${JOBS} libsimulator +cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=EXPRESS ${SRCDIR} +make -j${JOBS} libsimulator + cmake ${COMMON_OPTIONS} -DPCB=X12S ${SRCDIR} make -j${JOBS} libsimulator diff --git a/tools/build-companion-release.sh b/tools/build-companion-release.sh index 33400ae656..14bda21bf2 100755 --- a/tools/build-companion-release.sh +++ b/tools/build-companion-release.sh @@ -59,6 +59,9 @@ make -j${JOBS} libsimulator cmake ${COMMON_OPTIONS} -DPCB=X9D+ ${SRCDIR} make -j${JOBS} libsimulator +cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 ${SRCDIR} +make -j${JOBS} libsimulator + cmake ${COMMON_OPTIONS} -DPCB=XLITE ${SRCDIR} make -j${JOBS} libsimulator @@ -71,6 +74,9 @@ make -j${JOBS} libsimulator cmake ${COMMON_OPTIONS} -DPCB=X10 ${SRCDIR} make -j${JOBS} libsimulator +cmake ${COMMON_OPTIONS} -DPCB=X10 -DPCBREV=EXPRESS ${SRCDIR} +make -j${JOBS} libsimulator + cmake ${COMMON_OPTIONS} -DPCB=X12S ${SRCDIR} make -j${JOBS} libsimulator