diff --git a/.gitignore b/.gitignore index 93bd754d2..44f647bb5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ build*/ cmake-build-*/ /debian/ /*.vscode +radio/src/tests/googletest* +radio/src/tests/gtest*.tar.gz diff --git a/CMakeLists.txt b/CMakeLists.txt index 011d767c5..b7a0a982f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "0") set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) -set(SDCARD_REVISION "0020") +set(SDCARD_REVISION "0021") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) @@ -80,6 +80,14 @@ endif() option(DISABLE_COMPANION "Disable building companion and simulators" OFF) if(NOT DISABLE_COMPANION) # FIXME cosmetics/style + +if(APPLE AND EXISTS /usr/local/opt/qt5) + # Homebrew installs Qt5 (up to at least 5.9.1) in + # /usr/local/qt5, ensure it can be found by CMake since + # it is not in the default /usr/local prefix. + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") +endif() + find_package(Qt5Core) find_package(Qt5Widgets) find_package(Qt5Xml) @@ -190,6 +198,32 @@ if(WIN32) endif() endif() +set(GTEST_ROOT /usr CACHE STRING "Base path to Google Test headers and source.") + +find_path(GTEST_INCDIR gtest/gtest.h HINTS "${GTEST_ROOT}/include" DOC "Path to Google Test header files folder ('gtest/gtest.h').") +find_path(GTEST_SRCDIR src/gtest-all.cc HINTS "${GTEST_ROOT}" "${GTEST_ROOT}/src/gtest" DOC "Path of Google Test 'src' folder.") + +if(NOT GTEST_INCDIR OR NOT GTEST_SRCDIR) + message(STATUS "Googletest will be downloaded") + + set(GTEST_VERSION 1.8.1) + + set(GTEST_SRCDIR "${RADIO_SRC_DIRECTORY}/tests/googletest-release-${GTEST_VERSION}/googletest") + set(GTEST_INCDIR "${GTEST_SRCDIR}/include") + + set(GTEST_URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz") + set(GTEST_ARCHIVE "${RADIO_SRC_DIRECTORY}/tests/gtest-${GTEST_VERSION}.tar.gz") + + if (NOT EXISTS "${GTEST_SRCDIR}") + file(DOWNLOAD "${GTEST_URL}" ${GTEST_ARCHIVE} SHOW_PROGRESS) + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar -xf ${GTEST_ARCHIVE} + WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY}/tests) + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove -f ${GTEST_ARCHIVE}) + endif() +endif() + add_subdirectory(${RADIO_SRC_DIRECTORY}) if(Qt5Core_FOUND AND NOT DISABLE_COMPANION) diff --git a/CREDITS.txt b/CREDITS.txt index 84e03e4f3..68c996281 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -166,7 +166,7 @@ Eric Burdis Nigel Chippindale Michael Deasy Stephen Stough -Kenneth Lilja (monthly) +Kenneth Lilja Robert Jero Gary Bancroft Robert Cotsford @@ -351,7 +351,6 @@ Roberto Orsello David Finger Jean-Marie Oddo Mike Matheny -Glen Roe (Showmaster) Arron Bates Tim Spurr Daniel Morgan @@ -832,7 +831,7 @@ Carsten Wache Brock White Steven Poretz David Huelster -Gordon Stahl (monthly) +Gordon Stahl John Mathison Richard Duczmal Gregory Barron @@ -910,7 +909,7 @@ George Carnie Philippe Stofleth Tim Dzugan Illia Izotov -Richard Miles (monthly) +Richard Miles Attila Kapolnai Gilles Dando Denis Roussille @@ -1009,7 +1008,7 @@ Julien Kieffer Gregor Walter Carlos Viegas Roberto Orsello -Steve Murray (monthly) +Steve Murray Marcel Schäfer Sean Cull Holger Bothmer @@ -1443,7 +1442,7 @@ Marko Domagoj Zic Fabrice Debonnet Ms Place Jörg Hammer -Rapid Informatics LLC +Rapid Informatics LLC (monthly) Renaud Perriguey Edmond Dufresne Jaroslav Gazik @@ -1535,3 +1534,8 @@ Alain Labonne Darko Perković Pierre Malriq Donald Manson +Johannes Ferschl +Piotr Wysocki +Thomas Halenbeck (monthly) +Sjoerd Dost +Ralph Gustafson diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index c2cccc6d1..61309d394 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -588,7 +588,7 @@ elseif(APPLE) set(CPACK_GENERATOR "DragNDrop") # set(CPACK_GENERATOR "TGZ") # for quick testing set(CPACK_BINARY_DRAGNDROP ON) - set(CPACK_DMG_BACKGROUND_IMAGE ${COMPANION_SRC_DIRECTORY}/images/splash22_3_dmg.png) + set(CPACK_DMG_BACKGROUND_IMAGE ${COMPANION_SRC_DIRECTORY}/images/splash_dmg.png) set(CPACK_DMG_VOLUME_NAME "OpenTX Companion") set(CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR}/companion/targets/mac/DS_Store) set(CPACK_PACKAGE_FILE_NAME "opentx-${CPACK_PACKAGE_NAME_LOWERCASE}-${VERSION}") diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 36c46a5b4..c17d5c88d 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -37,6 +37,7 @@ AppPreferencesDialog::AppPreferencesDialog(QWidget * parent) : { ui->setupUi(this); setWindowIcon(CompanionIcon("apppreferences.png")); + ui->tabWidget->setCurrentIndex(0); initSettings(); connect(ui->boardCB, SIGNAL(currentIndexChanged(int)), this, SLOT(onBaseFirmwareChanged())); diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index ee4edd921..9f375411f 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -56,7 +56,7 @@ void Boards::setBoardType(const Type & board) uint32_t Boards::getFourCC(Type board) { switch (board) { - case BOARD_X12S: + case BOARD_HORUS_X12S: return 0x3478746F; case BOARD_X10: case BOARD_X10_EXPRESS: @@ -82,8 +82,8 @@ uint32_t Boards::getFourCC(Type board) case BOARD_MEGA2560: case BOARD_GRUVIN9X: return 0x3178746F; - case BOARD_STOCK: - case BOARD_M128: + case BOARD_9X_M64: + case BOARD_9X_M128: return 0; case BOARD_JUMPER_T12: return 0x3D78746F; @@ -94,12 +94,12 @@ uint32_t Boards::getFourCC(Type board) return 0; } -const int Boards::getEEpromSize(Board::Type board) +int Boards::getEEpromSize(Board::Type board) { switch (board) { - case BOARD_STOCK: + case BOARD_9X_M64: return EESIZE_STOCK; - case BOARD_M128: + case BOARD_9X_M128: return EESIZE_M128; case BOARD_MEGA2560: case BOARD_GRUVIN9X: @@ -121,7 +121,7 @@ const int Boards::getEEpromSize(Board::Type board) return EESIZE_TARANIS; case BOARD_UNKNOWN: return EESIZE_MAX; - case BOARD_X12S: + case BOARD_HORUS_X12S: case BOARD_X10: case BOARD_X10_EXPRESS: return 0; @@ -130,12 +130,12 @@ const int Boards::getEEpromSize(Board::Type board) return 0; } -const int Boards::getFlashSize(Type board) +int Boards::getFlashSize(Type board) { switch (board) { - case BOARD_STOCK: + case BOARD_9X_M64: return FSIZE_STOCK; - case BOARD_M128: + case BOARD_9X_M128: return FSIZE_M128; case BOARD_MEGA2560: case BOARD_GRUVIN9X: @@ -155,7 +155,7 @@ const int Boards::getFlashSize(Type board) case BOARD_TARANIS_X9E: case BOARD_JUMPER_T12: return FSIZE_TARANIS; - case BOARD_X12S: + case BOARD_HORUS_X12S: case BOARD_X10: case BOARD_X10_EXPRESS: return FSIZE_HORUS; @@ -166,7 +166,7 @@ const int Boards::getFlashSize(Type board) } } -const SwitchInfo Boards::getSwitchInfo(Board::Type board, int index) +SwitchInfo Boards::getSwitchInfo(Board::Type board, int index) { if (index < 0) return {SWITCH_NOT_AVAILABLE, CPN_STR_UNKNOWN_ITEM}; @@ -260,7 +260,7 @@ const SwitchInfo Boards::getSwitchInfo(Board::Type board, int index) return {SWITCH_NOT_AVAILABLE, CPN_STR_UNKNOWN_ITEM}; } -const int Boards::getCapability(Board::Type board, Board::Capability capability) +int Boards::getCapability(Board::Type board, Board::Capability capability) { switch (capability) { case Sticks: @@ -280,12 +280,6 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) else return 3; - case PotsStorage: - if (IS_HORUS(board)) - return 5; - else - return getCapability(board, Pots); - case FactoryInstalledPots: if (IS_TARANIS_X9(board)) return 2; @@ -300,12 +294,6 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) else return 0; - case SlidersStorage: - if (IS_HORUS_X10(board)) - return 4; - else - return getCapability(board, Sliders); - case MouseAnalogs: if (IS_HORUS(board)) return 2; @@ -313,7 +301,7 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) return 0; case GyroAnalogs: - if (IS_HORUS_X12S(board) || IS_TARANIS_XLITES(board)) + if (IS_TARANIS_XLITES(board)) return 2; else return 0; @@ -350,6 +338,8 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) case FactoryInstalledSwitches: if (IS_TARANIS_X9E(board)) return 8; + if (IS_HORUS_X12S(board)) + return 8; else return getCapability(board, Switches); @@ -372,7 +362,7 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) return 0; } -const QString Boards::getAxisName(int index) +QString Boards::getAxisName(int index) { const QString axes[] = { tr("Left Horizontal"), @@ -388,7 +378,7 @@ const QString Boards::getAxisName(int index) return tr("Unknown"); } -const QString Boards::getAnalogInputName(Board::Type board, int index) +QString Boards::getAnalogInputName(Board::Type board, int index) { if (index < 0) return CPN_STR_UNKNOWN_ITEM; @@ -454,8 +444,8 @@ const QString Boards::getAnalogInputName(Board::Type board, int index) "S1", "6P", "S2", - "L1", - "L2", + "S3", + "S4", "LS", "RS", "JSx", @@ -481,17 +471,17 @@ const QString Boards::getAnalogInputName(Board::Type board, int index) return CPN_STR_UNKNOWN_ITEM; } -const bool Boards::isBoardCompatible(Type board1, Type board2) +bool Boards::isBoardCompatible(Type board1, Type board2) { return (getFourCC(board1) == getFourCC(board2)); } -const QString Boards::getBoardName(Board::Type board) +QString Boards::getBoardName(Board::Type board) { switch (board) { - case BOARD_STOCK: + case BOARD_9X_M64: return "9X"; - case BOARD_M128: + case BOARD_9X_M128: return "9X128"; case BOARD_GRUVIN9X: return "Gruvin9x"; @@ -521,7 +511,7 @@ const QString Boards::getBoardName(Board::Type board) return "9XR-PRO"; case BOARD_AR9X: return "AR9X"; - case BOARD_X12S: + case BOARD_HORUS_X12S: return "Horus X12S"; case BOARD_X10: return "Horus X10/X10S"; diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 545d06551..06a7a0f04 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -32,8 +32,8 @@ namespace Board { enum Type { BOARD_UNKNOWN = -1, - BOARD_STOCK = 0, - BOARD_M128, + BOARD_9X_M64 = 0, + BOARD_9X_M128, BOARD_MEGA2560, BOARD_GRUVIN9X, BOARD_SKY9X, @@ -44,7 +44,7 @@ namespace Board { BOARD_TARANIS_X9DP, BOARD_TARANIS_X9DP_2019, BOARD_TARANIS_X9E, - BOARD_X12S, + BOARD_HORUS_X12S, BOARD_X10, BOARD_X10_EXPRESS, BOARD_TARANIS_XLITE, @@ -115,10 +115,8 @@ namespace Board { enum Capability { Sticks, Pots, - PotsStorage, FactoryInstalledPots, Sliders, - SlidersStorage, MouseAnalogs, GyroAnalogs, MaxAnalogs, @@ -172,14 +170,14 @@ class Boards const bool isBoardCompatible(Board::Type board2) const { return isBoardCompatible(m_boardType, board2); } static uint32_t getFourCC(Board::Type board); - static const int getEEpromSize(Board::Type board); - static const int getFlashSize(Board::Type board); - static const Board::SwitchInfo getSwitchInfo(Board::Type board, int index); - static const int getCapability(Board::Type board, Board::Capability capability); - static const QString getAxisName(int index); - static const QString getAnalogInputName(Board::Type board, int index); - static const bool isBoardCompatible(Board::Type board1, Board::Type board2); - static const QString getBoardName(Board::Type board); + static int getEEpromSize(Board::Type board); + static int getFlashSize(Board::Type board); + static Board::SwitchInfo getSwitchInfo(Board::Type board, int index); + static int getCapability(Board::Type board, Board::Capability capability); + static QString getAxisName(int index); + static QString getAnalogInputName(Board::Type board, int index); + static bool isBoardCompatible(Board::Type board1, Board::Type board2); + static QString getBoardName(Board::Type board); protected: @@ -189,29 +187,129 @@ class Boards // temporary aliases for transition period, use Boards class instead. #define getBoardCapability(b__, c__) Boards::getCapability(b__, c__) -#define IS_9X(board) (board==Board::BOARD_STOCK || board==Board::BOARD_M128) -#define IS_STOCK(board) (board==Board::BOARD_STOCK) -#define IS_M128(board) (board==Board::BOARD_M128) -#define IS_2560(board) (board==Board::BOARD_GRUVIN9X || board==Board::BOARD_MEGA2560) -#define IS_SKY9X(board) (board==Board::BOARD_SKY9X || board==Board::BOARD_9XRPRO || board==Board::BOARD_AR9X) -#define IS_9XRPRO(board) (board==Board::BOARD_9XRPRO) -#define IS_JUMPER_T12(board) (board==Board::BOARD_JUMPER_T12) -#define IS_TARANIS_XLITE(board) (board==Board::BOARD_TARANIS_XLITE || board==Board::BOARD_TARANIS_XLITES) -#define IS_TARANIS_XLITES(board) (board==Board::BOARD_TARANIS_XLITES) -#define IS_TARANIS_X7(board) (board==Board::BOARD_TARANIS_X7) -#define IS_TARANIS_X9LITE(board) (board==Board::BOARD_TARANIS_X9LITE) -#define IS_TARANIS_X9(board) (board==Board::BOARD_TARANIS_X9D || board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9DP_2019 || board==Board::BOARD_TARANIS_X9E) -#define IS_TARANIS_X9D(board) (board==Board::BOARD_TARANIS_X9D || board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9DP_2019) -#define IS_TARANIS_PLUS(board) (board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9E) -#define IS_TARANIS_X9E(board) (board==Board::BOARD_TARANIS_X9E) -#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 || 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 HAS_LARGE_LCD(board) (IS_HORUS(board) || IS_TARANIS_X9(board)) +inline bool IS_9X(Board::Type board) +{ + return board == Board::BOARD_9X_M64 || board == Board::BOARD_9X_M128; +} + +inline bool IS_STOCK(Board::Type board) +{ + return board == Board::BOARD_9X_M64; +} + +inline bool IS_M128(Board::Type board) +{ + return board == Board::BOARD_9X_M128; +} + +inline bool IS_2560(Board::Type board) +{ + return board == Board::BOARD_GRUVIN9X || board == Board::BOARD_MEGA2560; +} + +inline bool IS_SKY9X(Board::Type board) +{ + return board == Board::BOARD_SKY9X || board == Board::BOARD_9XRPRO || board == Board::BOARD_AR9X; +} + +inline bool IS_9XRPRO(Board::Type board) +{ + return board == Board::BOARD_9XRPRO; +} + +inline bool IS_JUMPER_T12(Board::Type board) +{ + return board == Board::BOARD_JUMPER_T12; +} + +inline bool IS_TARANIS_XLITE(Board::Type board) +{ + return board == Board::BOARD_TARANIS_XLITE || board == Board::BOARD_TARANIS_XLITES; +} + +inline bool IS_TARANIS_XLITES(Board::Type board) +{ + return board == Board::BOARD_TARANIS_XLITES; +} + +inline bool IS_TARANIS_X7(Board::Type board) +{ + return board == Board::BOARD_TARANIS_X7; +} + +inline bool IS_TARANIS_X9LITE(Board::Type board) +{ + return board == Board::BOARD_TARANIS_X9LITE; +} + +inline bool IS_TARANIS_X9(Board::Type board) +{ + return board==Board::BOARD_TARANIS_X9D || board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9DP_2019 || board==Board::BOARD_TARANIS_X9E; +} + +inline bool IS_TARANIS_X9D(Board::Type board) +{ + return board == Board::BOARD_TARANIS_X9D || board == Board::BOARD_TARANIS_X9DP || board == Board::BOARD_TARANIS_X9DP_2019; +} + +inline bool IS_TARANIS_PLUS(Board::Type board) +{ + return board == Board::BOARD_TARANIS_X9DP || board == Board::BOARD_TARANIS_X9E; +} + +inline bool IS_TARANIS_X9E(Board::Type board) +{ + return board == Board::BOARD_TARANIS_X9E; +} + +inline bool IS_TARANIS(Board::Type board) +{ + return IS_TARANIS_X9(board) || IS_TARANIS_X7(board) || IS_TARANIS_X9LITE(board) || IS_TARANIS_XLITE(board) || IS_JUMPER_T12(board); +} + +inline bool IS_TARANIS_SMALL(Board::Type board) +{ + return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_JUMPER_T12(board); +} + +inline bool IS_HORUS_X10(Board::Type board) +{ + return board == Board::BOARD_X10 || board == Board::BOARD_X10_EXPRESS; +} + +inline bool IS_HORUS_X12S(Board::Type board) +{ + return board == Board::BOARD_HORUS_X12S; +} + +inline bool IS_HORUS(Board::Type board) +{ + return IS_HORUS_X12S(board) || IS_HORUS_X10(board); +} + +inline bool IS_HORUS_OR_TARANIS(Board::Type board) +{ + return IS_HORUS(board) || IS_TARANIS(board); +} + +inline bool IS_STM32(Board::Type board) +{ + return IS_TARANIS(board) || IS_HORUS(board); +} + +inline bool IS_ARM(Board::Type board) +{ + return IS_STM32(board) || IS_SKY9X(board); +} + +inline bool HAS_LARGE_LCD(Board::Type board) +{ + return IS_HORUS(board) || IS_TARANIS_X9(board); +} + +inline bool HAS_EXTERNAL_ANTENNA(Board::Type board) +{ + return (IS_HORUS(board) && board != Board::BOARD_X10_EXPRESS) || (IS_TARANIS_XLITE(board) && !IS_TARANIS_XLITES(board)); +} #endif // _BOARDS_H_ diff --git a/companion/src/firmwares/eepromimportexport.h b/companion/src/firmwares/eepromimportexport.h index be562fb41..d325f00b8 100644 --- a/companion/src/firmwares/eepromimportexport.h +++ b/companion/src/firmwares/eepromimportexport.h @@ -22,23 +22,22 @@ #define _EEPROMIMPORTEXPORT_H_ #include "customdebug.h" - #include #include +#include class DataField { Q_DECLARE_TR_FUNCTIONS(DataField) public: - DataField(DataField * parent, const char * name=""): + explicit DataField(DataField * parent, const char * name=""): parent(parent), name(name) { } virtual ~DataField() - { - } + = default; virtual const QString & getName() { @@ -49,7 +48,7 @@ class DataField { virtual void ExportBits(QBitArray & output) = 0; virtual void ImportBits(const QBitArray & input) = 0; - QBitArray bytesToBits(QByteArray bytes) + static QBitArray bytesToBits(QByteArray bytes) { QBitArray bits(bytes.count()*8); // Convert from QByteArray to QBitArray @@ -59,7 +58,7 @@ class DataField { return bits; } - QByteArray bitsToBytes(QBitArray bits, int offset=0) + static QByteArray bitsToBytes(QBitArray bits, int offset=0) { QByteArray bytes; bytes.resize((offset+bits.count()+7)/8); @@ -126,16 +125,16 @@ class DataField { QString name; }; -class ProxyField: public DataField { - public: - explicit ProxyField(DataField * parent): - DataField(parent, "Proxy") - { - } - - virtual DataField * getField() = 0; - -}; +//class ProxyField: public DataField { +// public: +// explicit ProxyField(DataField * parent): +// DataField(parent, "Proxy") +// { +// } +// +// virtual DataField * getField() = 0; +// +//}; template class BaseUnsignedField: public DataField { @@ -164,7 +163,9 @@ class BaseUnsignedField: public DataField { { } - virtual void ExportBits(QBitArray & output) + BaseUnsignedField() = delete; + + void ExportBits(QBitArray & output) override { container value = field; if (value > max) value = max; @@ -178,7 +179,7 @@ class BaseUnsignedField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { field = 0; for (int i=0; i: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } - virtual unsigned int size() + unsigned int size() override { return N; } @@ -197,9 +198,6 @@ class BaseUnsignedField: public DataField { container & field; container min; container max; - - private: - BaseUnsignedField(); }; template @@ -231,7 +229,9 @@ class BoolField: public DataField { { } - virtual void ExportBits(QBitArray & output) + BoolField() = delete; + + void ExportBits(QBitArray & output) override { output.resize(N); if (field) { @@ -239,22 +239,19 @@ class BoolField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { - field = input[0] ? true : false; + field = input[0]; qCDebug(eepromImport) << QString("\timported %1<%2>: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } - virtual unsigned int size() + unsigned int size() override { return N; } protected: bool & field; - - private: - BoolField(); }; template @@ -262,17 +259,13 @@ class SignedField: public DataField { public: SignedField(DataField * parent, int & field): DataField(parent, "Signed"), - field(field), - min(INT_MIN), - max(INT_MAX) + field(field) { } SignedField(DataField * parent, int & field, const char *name): DataField(parent, name), - field(field), - min(INT_MIN), - max(INT_MAX) + field(field) { } @@ -284,7 +277,7 @@ class SignedField: public DataField { { } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { int value = field; if (value > max) value = max; @@ -297,7 +290,7 @@ class SignedField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { unsigned int value = 0; for (int i=0; i: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } - virtual unsigned int size() + unsigned int size() override { return N; } protected: int & field; - int min; - int max; + int min = INT_MIN; + int max = INT_MAX; }; template class SpareBitsField: public UnsignedField { public: - SpareBitsField(DataField * parent): + explicit SpareBitsField(DataField * parent): UnsignedField(parent, spare, 0, 0, "Spare"), spare(0) { } + protected: unsigned int spare; }; @@ -348,7 +342,7 @@ class CharField: public DataField { { } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { output.resize(N*8); int b = 0; @@ -362,7 +356,7 @@ class CharField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { unsigned int b = 0; for (int i=0; i: '%3'").arg(name).arg(N).arg(field); } - virtual unsigned int size() + unsigned int size() override { - return 8*N; + return 8 * N; } protected: @@ -423,7 +417,7 @@ class ZCharField: public DataField { { } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { output.resize(N*8); int b = 0; @@ -437,7 +431,7 @@ class ZCharField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { unsigned int b = 0; for (int i=0; i: '%3'").arg(name).arg(N).arg(field); } - virtual unsigned int size() + unsigned int size() override { return 8*N; } @@ -470,12 +464,12 @@ class ZCharField: public DataField { class StructField: public DataField { public: - StructField(DataField * parent, const char * name="Struct"): + explicit StructField(DataField * parent, const char * name = "Struct"): DataField(parent, name) { } - ~StructField() { + ~StructField() override { foreach(DataField * field, fields) { delete field; } @@ -486,7 +480,7 @@ class StructField: public DataField { fields.append(field); } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { int offset = 0; output.resize(size()); @@ -498,7 +492,7 @@ class StructField: public DataField { } } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { qCDebug(eepromImport) << QString("\timporting %1[%2]:").arg(name).arg(fields.size()); int offset = 0; @@ -512,7 +506,7 @@ class StructField: public DataField { } } - virtual unsigned int size() + unsigned int size() override { unsigned int result = 0; foreach(DataField *field, fields) { @@ -543,17 +537,16 @@ class TransformedField: public DataField { { } - virtual ~TransformedField() - { - } + ~TransformedField() override + = default; - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { beforeExport(); field.ExportBits(output); } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { qCDebug(eepromImport) << QString("\timporting TransformedField %1:").arg(field.getName()); field.ImportBits(input); @@ -561,12 +554,12 @@ class TransformedField: public DataField { } - virtual const QString & getName() + const QString & getName() override { return field.getName(); } - virtual unsigned int size() + unsigned int size() override { return field.size(); } @@ -575,7 +568,7 @@ class TransformedField: public DataField { virtual void afterImport() = 0; - virtual int dump(int level=0, int offset=0) + int dump(int level, int offset) override { beforeExport(); return field.dump(level, offset); @@ -591,7 +584,7 @@ class UnionField: public DataField { class UnionMember { public: - virtual ~UnionMember() {} + virtual ~UnionMember() = default; virtual bool select(const selectorT& attr) const = 0; virtual DataField* getField() = 0; }; @@ -602,6 +595,7 @@ class UnionField: public DataField { TransformedField(parent, field) { } + virtual DataField* getField() { return this; @@ -613,7 +607,7 @@ class UnionField: public DataField { { } - ~UnionField() { + ~UnionField() override { foreach(UnionMember *member, members) { delete member; } @@ -625,7 +619,7 @@ class UnionField: public DataField { maxSize = member->getField()->size(); } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { foreach(UnionMember *member, members) { if (member->select(selectField)) { @@ -636,7 +630,7 @@ class UnionField: public DataField { output.resize(maxSize); } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { foreach(UnionMember *member, members) { if (member->select(selectField)) { @@ -646,7 +640,7 @@ class UnionField: public DataField { } } - virtual unsigned int size() + unsigned int size() override { return maxSize; } @@ -664,8 +658,7 @@ class ConversionTable { { after = 0; - for (std::list::iterator it=exportTable.begin(); it!=exportTable.end(); it++) { - ConversionTuple & tuple = *it; + for (auto & tuple : exportTable) { if (before == tuple.a) { after = tuple.b; return true; @@ -679,8 +672,7 @@ class ConversionTable { { after = 0; - for (std::list::iterator it=importTable.begin(); it!=importTable.end(); it++) { - ConversionTuple & tuple = *it; + for (auto & tuple : importTable) { if (before == tuple.b) { after = tuple.a; return true; @@ -711,15 +703,15 @@ class ConversionTable { exportTable.push_back(conversion); } - void addImportConversion(const int a, const int b) - { - importTable.push_back(ConversionTuple(a, b)); - } - - void addExportConversion(const int a, const int b) - { - exportTable.push_back(ConversionTuple(a, b)); - } +// void addImportConversion(const int a, const int b) +// { +// importTable.push_back(ConversionTuple(a, b)); +// } +// +// void addExportConversion(const int a, const int b) +// { +// exportTable.push_back(ConversionTuple(a, b)); +// } std::list importTable; std::list exportTable; @@ -728,35 +720,21 @@ class ConversionTable { template class ConversionField: public TransformedField { public: - ConversionField(DataField * parent, int & field, ConversionTable *table, const char *name, const QString & error = ""): + ConversionField(DataField * parent, int & field, ConversionTable *table, const char *name, QString error = ""): TransformedField(parent, internalField), internalField(this, _field, name), field(field), - _field(0), table(table), - shift(0), - scale(1), - min(INT_MIN), - max(INT_MAX), - exportFunc(NULL), - importFunc(NULL), - error(error) + error(std::move(error)) { } - ConversionField(DataField * parent, unsigned int & field, ConversionTable *table, const char *name, const QString & error = ""): + ConversionField(DataField * parent, unsigned int & field, ConversionTable *table, const char *name, QString error = ""): TransformedField(parent, internalField), internalField(this, (unsigned int &)_field, name), field((int &)field), - _field(0), table(table), - shift(0), - scale(0), - min(INT_MIN), - max(INT_MAX), - exportFunc(NULL), - importFunc(NULL), - error(error) + error(std::move(error)) { } @@ -764,15 +742,8 @@ class ConversionField: public TransformedField { TransformedField(parent, internalField), internalField(this, _field), field(field), - _field(0), - table(NULL), - shift(0), - scale(0), - min(INT_MIN), - max(INT_MAX), exportFunc(exportFunc), - importFunc(importFunc), - error("") + importFunc(importFunc) { } @@ -780,15 +751,10 @@ class ConversionField: public TransformedField { TransformedField(parent, internalField), internalField(this, _field, name), field(field), - _field(0), - table(NULL), shift(shift), scale(scale), min(min), - max(max), - exportFunc(NULL), - importFunc(NULL), - error("") + max(max) { } @@ -796,25 +762,14 @@ class ConversionField: public TransformedField { TransformedField(parent, internalField), internalField(this, (unsigned int &)_field), field((int &)field), - _field(0), - table(NULL), shift(shift), - scale(scale), - min(INT_MIN), - max(INT_MAX), - exportFunc(NULL), - importFunc(NULL), - error("") + scale(scale) { } - virtual void beforeExport() + void beforeExport() override { - _field = field; - - if (scale) { - _field /= scale; - } + _field = scale ? field / scale : field; if (table) { if (!table->exportValue(_field, _field)) { @@ -837,7 +792,7 @@ class ConversionField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { field = _field; @@ -857,21 +812,22 @@ class ConversionField: public TransformedField { if (scale) { field *= scale; } + qCDebug(eepromImport) << QString("\timported ConversionField<%1>:").arg(internalField.getName()) << QString(" before: %1, after: %2").arg(_field).arg(field); } protected: T internalField; int & field; - int _field; - ConversionTable * table; - int shift; - int scale; - int min; - int max; - int (*exportFunc)(int); - int (*importFunc)(int); - const QString error; + int _field = 0; + ConversionTable * table = nullptr; + int shift = 0; + int scale = 0; + int min = INT_MIN; + int max = INT_MAX; + int (*exportFunc)(int) = nullptr; + int (*importFunc)(int) = nullptr; + const QString error = ""; }; #endif // _EEPROMIMPORTEXPORT_H_ diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 65bc81804..2905a94a8 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -32,7 +32,7 @@ #define FILE_MODEL(n) (1+n) Er9xInterface::Er9xInterface(): - EEPROMInterface(Board::BOARD_STOCK), + EEPROMInterface(Board::BOARD_9X_M64), efile(new RleFile()) { } @@ -120,13 +120,13 @@ unsigned long Er9xInterface::load(RadioData &radioData, const uint8_t *eeprom, i std::bitset errors; - if (size != Boards::getEEpromSize(Board::BOARD_STOCK)) { + if (size != Boards::getEEpromSize(Board::BOARD_9X_M64)) { dbg << "wrong size"; errors.set(WRONG_SIZE); return errors.to_ulong(); } - if (!efile->EeFsOpen((uint8_t *)eeprom, size, Board::BOARD_STOCK)) { + if (!efile->EeFsOpen((uint8_t *)eeprom, size, Board::BOARD_9X_M64)) { dbg << "wrong file system"; errors.set(WRONG_FILE_SYSTEM); return errors.to_ulong(); diff --git a/companion/src/firmwares/generalsettings.cpp b/companion/src/firmwares/generalsettings.cpp index c9c1907be..4f8532cd4 100644 --- a/companion/src/firmwares/generalsettings.cpp +++ b/companion/src/firmwares/generalsettings.cpp @@ -53,13 +53,15 @@ bool GeneralSettings::switchSourceAllowedTaranis(int index) const bool GeneralSettings::isPotAvailable(int index) const { - if (index<0 || index>getBoardCapability(getCurrentBoard(), Board::Pots)) return false; + if (index < 0 || index > getBoardCapability(getCurrentBoard(), Board::Pots)) + return false; return potConfig[index] != Board::POT_NONE; } bool GeneralSettings::isSliderAvailable(int index) const { - if (index<0 || index>getBoardCapability(getCurrentBoard(), Board::Sliders)) return false; + if (index < 0 || index > getBoardCapability(getCurrentBoard(), Board::Sliders)) + return false; return sliderConfig[index] != Board::SLIDER_NONE; } diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index 2fb98e8e6..f3b415ec4 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -151,7 +151,8 @@ class GeneralSettings { int backgroundVolume; unsigned int mavbaud; unsigned int switchUnlockStates; - unsigned int hw_uartMode; // UartModes + unsigned int auxSerialMode; + int antennaMode; unsigned int backlightColor; CustomFunctionData customFn[CPN_MAX_SPECIAL_FUNCTIONS]; char switchName[CPN_MAX_SWITCHES][3+1]; diff --git a/companion/src/firmwares/modeldata.cpp b/companion/src/firmwares/modeldata.cpp index b3d4f82fa..a2fdb4981 100644 --- a/companion/src/firmwares/modeldata.cpp +++ b/companion/src/firmwares/modeldata.cpp @@ -157,30 +157,14 @@ void ModelData::clear() { memset(reinterpret_cast(this), 0, sizeof(ModelData)); modelIndex = -1; // an invalid index, this is managed by the TreeView data model + moduleData[0].protocol = PULSES_OFF; + moduleData[1].protocol = PULSES_OFF; moduleData[0].channelsCount = 8; moduleData[1].channelsStart = 0; moduleData[1].channelsCount = 8; moduleData[0].ppm.delay = 300; moduleData[1].ppm.delay = 300; - moduleData[2].ppm.delay = 300; - 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; - } - else if (IS_HORUS_OR_TARANIS(board)) { - moduleData[0].protocol = PULSES_PXX_XJT_X16; - moduleData[1].protocol = PULSES_OFF; - } - else if (IS_SKY9X(board)) { - moduleData[0].protocol = PULSES_PPM; - moduleData[1].protocol = PULSES_PPM; - } - else { - moduleData[0].protocol = PULSES_PPM; - moduleData[1].protocol = PULSES_OFF; - } + moduleData[2].ppm.delay = 300; //Trainer PPM for (int i=0; i 1) - return CPN_STR_UNKNOWN_ITEM; - return strRef.value(pxx.power, CPN_STR_UNKNOWN_ITEM); } diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 72d7cff07..5d86c2876 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -169,10 +169,9 @@ class ModuleData { struct PXX { unsigned int power; // 0 10 mW, 1 100 mW, 2 500 mW, 3 1W - bool receiver_telem_off; // false = receiver telem enabled - bool receiver_channel_9_16; // false = pwm out 1-8, true 9-16 - bool external_antenna; // false = internal antenna, true = external antenna - bool sport_out; + bool receiverTelemetryOff; // false = receiver telem enabled + bool receiverHigherChannels; // false = pwm out 1-8, true 9-16 + int antennaMode; // false = internal antenna, true = external antenna } pxx; struct Access { diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index 4dc0f1595..41f2e83c8 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -30,6 +30,7 @@ #define STR_MULTI_RFPOWER QT_TRANSLATE_NOOP("Multiprotocols", "Radio output power") #define STR_MULTI_SERVOFREQ QT_TRANSLATE_NOOP("Multiprotocols", "Servo output frequency") #define STR_MULTI_OPTION QT_TRANSLATE_NOOP("Multiprotocols", "Option value") +#define STR_MULTI_FIXEDID QT_TRANSLATE_NOOP("Multiprotocols", "Fixed ID value") #define STR_MULTI_DEFAULT QT_TRANSLATE_NOOP("Multiprotocols", "DEFAULT") static const QStringList STR_SUBTYPE_CUSTOM ({ @@ -42,6 +43,7 @@ static const QStringList STR_SUBTYPE_FRSKY {"D16", "D8", "D16 8ch", "V8", "D static const QStringList STR_SUBTYPE_HISKY {"Standard", "HK310"}; static const QStringList STR_SUBTYPE_V2X2 {"Standard", "JXD506"}; static const QStringList STR_SUBTYPE_DSM {"DSM2 22ms", "DSM2 11ms", "DSMX 22ms", "DSMX 11ms"}; +static const QStringList STR_SUBTYPE_DEVO {"8 Channel", "10 Channel", "12 Channel", "6 Channel", "7 Channel"}; static const QStringList STR_SUBTYPE_YD717 {"Standard", "Skywalker", "Syma X4", "XINXUN", "NIHUI"}; static const QStringList STR_SUBTYPE_KN {"WLtoys", "FeiLun"}; static const QStringList STR_SUBTYPE_SYMAX {"Standard", "Syma X5C"}; @@ -61,11 +63,14 @@ static const QStringList STR_SUBTYPE_CABELL {"Cabell V3", "Cab V3 Telem", "-" static const QStringList STR_SUBTYPE_H83D {"H8 Mini 3D", "H20H", "H20 Mini", "H30 Mini"}; static const QStringList STR_SUBTYPE_CORONA {"Corona V1", "Corona V2", "Flydream V3"}; static const QStringList STR_SUBTYPE_HITEC {"Optima", "Optima Hub Telem", "Minima"}; +static const QStringList STR_SUBTYPE_TRAXXAS {"6519 RX"}; static const QStringList STR_SUBTYPE_BUGS_MINI {"Standard", "Bugs 3H"}; static const QStringList STR_SUBTYPE_E01X {"E012", "E015", "E016H"}; static const QStringList STR_SUBTYPE_GD00X {"GD V1", "GD V2"}; static const QStringList STR_SUBTYPE_REDPINE {"Fast", "Slow"}; -static const QStringList STR_SUBTYPE_POTENSIC {"A20 Firefly", " - "}; +static const QStringList STR_SUBTYPE_POTENSIC {"A20 Firefly"}; +static const QStringList STR_SUBTYPE_ZSX {"JJRC ZSX-280"}; +static const QStringList STR_SUBTYPE_FLYZONE {"FZ-410 TX"}; static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; @@ -79,6 +84,7 @@ const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, {MODULE_SUBTYPE_MULTI_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, {MODULE_SUBTYPE_MULTI_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, + {MODULE_SUBTYPE_MULTI_DEVO, 4, false, STR_SUBTYPE_DEVO, STR_MULTI_FIXEDID}, {MODULE_SUBTYPE_MULTI_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, {MODULE_SUBTYPE_MULTI_KN, 1, false, STR_SUBTYPE_KN, nullptr}, {MODULE_SUBTYPE_MULTI_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, @@ -101,14 +107,15 @@ const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr}, + {MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr}, {MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, {MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr}, {MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_REDPINE, 1, false, STR_SUBTYPE_REDPINE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_POTENSIC, 1, false, STR_SUBTYPE_POTENSIC, nullptr}, - {MODULE_SUBTYPE_MULTI_ZSX, 0, false, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_FLYZONE, 0, false, NO_SUBTYPE, nullptr}, + {MODULE_SUBTYPE_MULTI_POTENSIC, 0, false, STR_SUBTYPE_POTENSIC, nullptr}, + {MODULE_SUBTYPE_MULTI_ZSX, 0, false, STR_SUBTYPE_ZSX, nullptr}, + {MODULE_SUBTYPE_MULTI_FLYZONE, 0, false, STR_SUBTYPE_FLYZONE, nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, STR_SUBTYPE_CUSTOM, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) @@ -151,7 +158,7 @@ QString Multiprotocols::protocolToString(int protocol, bool custom) "Bayang", "ESky", "MT99XX", "MJXQ", "Shenqi", "FY326", "SFHSS", "J6 PRO","FQ777","Assan","Hontai","Open LRS", "FlySky AFHDS2A", "Q2x2", "Walkera", "Q303", "GW008", "DM002", "Cabell", "ESky 150", "H8 3D", "Corona", "CFlie", "Hitec", "Wfly", "Bugs", "Bugs Mini", "Traxxas", "NCC-1701-A", "E01X", "WL Heli V911S", "GD00X", "Volantex V761", - "KFPlan KF606", "Redpine", "Potensic", "ZXS", "Flyzone" + "KFPlan KF606", "Redpine", "Potensic", "ZXS", "FlyZone" }); if (protocol == MM_RF_CUSTOM_SELECTED || custom) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index ff991cf48..8da49c456 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include +#include #include #include "boards.h" #include "helpers.h" @@ -33,19 +33,40 @@ using namespace Board; inline int MAX_SWITCHES(Board::Type board, int version) { - if (version <= 218 && IS_TARANIS_X7(board)) - return 6; - if (version <= 218 && (IS_TARANIS_X9D(board) || IS_HORUS(board))) + if (version <= 218) { + if (IS_TARANIS_X7(board)) + return 6; + if (IS_TARANIS_X9D(board) || IS_HORUS(board)) + return 8; + if (IS_TARANIS_XLITE(board)) + return 4; + } + + if (IS_TARANIS_X9D(board)) + return 9; + + if (IS_JUMPER_T12(board)) return 8; + return Boards::getCapability(board, Board::Switches); } -inline int MAX_KNOBS(Board::Type board, int version) +inline int MAX_SWITCHES_POSITION(Board::Type board, int version) +{ + if (IS_HORUS_OR_TARANIS(board)) { + return MAX_SWITCHES(board, version) * 3; + } + else { + return Boards::getCapability(board, Board::SwitchPositions); + } +} + +inline int POTS_CONFIG_SIZE(Board::Type board, int version) { if (version >= 219 && IS_HORUS(board)) - return 8; + return 16; - return 4; + return 8; } inline int MAX_POTS(Board::Type board, int version) @@ -59,10 +80,33 @@ inline int MAX_POTS_STORAGE(Board::Type board, int version) { if (version <= 218 && IS_HORUS(board)) return 3; - return Boards::getCapability(board, Board::PotsStorage); + if (version >= 219 && IS_HORUS(board)) + return 5; + return Boards::getCapability(board, Board::Pots); } -inline int MAX_SLIDERS_SLOTS(Board::Type board, int version) +inline int MAX_POTS_SOURCES(Board::Type board, int version) +{ + if (version <= 218 && IS_HORUS(board)) + return 5; + return Boards::getCapability(board, Board::Pots); +} + +inline int MAX_SLIDERS_STORAGE(Board::Type board, int version) +{ + if (version >= 219 && IS_HORUS(board)) + return 4; + return Boards::getCapability(board, Board::Sliders); +} + +inline int MAX_SLIDERS_SOURCES(Board::Type board, int version) +{ + if (version <= 218 && IS_HORUS(board)) + return 2; + return Boards::getCapability(board, Board::Sliders); +} + +inline int SLIDERS_CONFIG_SIZE(Board::Type board, int version) { if (version >= 219 && IS_HORUS(board)) return 8; @@ -70,32 +114,20 @@ inline int MAX_SLIDERS_SLOTS(Board::Type board, int version) return 4; } -// bitsize of swconfig_t / 2 (see radio/src/datastructs.h) -inline int MAX_SWITCH_SLOTS(Board::Type board, int version) +inline int SWITCHES_CONFIG_SIZE(Board::Type board, int version) { if (IS_TARANIS_X9E(board)) - return 32; + return 64; if (IS_HORUS(board)) - return 16; - + return 32; + if (version >= 219 && IS_TARANIS_X9D(board)) - return 16; + return 32; - return 8; + return 16; } -inline int MAX_SWITCHES_POSITION(Board::Type board, int version) -{ - if (version < 219) { - if (IS_TARANIS_X7(board) || IS_HORUS(board)) - return Boards::getCapability(board, Board::SwitchPositions) - 2*3; - } - - return Boards::getCapability(board, Board::SwitchPositions); -} - -//#define MAX_SWITCHES_POSITION(board, version) (Boards::getCapability(board, Board::SwitchPositions)) #define MAX_ROTARY_ENCODERS(board) (IS_SKY9X(board) ? 1 : 0) #define MAX_FLIGHT_MODES(board, version) 9 #define MAX_TIMERS(board, version) 3 @@ -126,8 +158,8 @@ class SwitchesConversionTable: public ConversionTable { public: SwitchesConversionTable(Board::Type board, unsigned int version, bool timer=false) { - int val=0; - int offset=0; + int val = 0; + int offset = 0; if (timer) { offset = 4; for (int i=0; i<5; i++) { @@ -216,8 +248,7 @@ class SwitchesConversionTable: public ConversionTable { static SwitchesConversionTable * getInstance(Board::Type board, unsigned int version, unsigned long flags=0) { - for (std::list::iterator it=internalCache.begin(); it!=internalCache.end(); it++) { - Cache & element = *it; + for (auto & element : internalCache) { if (element.board == board && element.version == version && element.flags == flags) return element.table; } @@ -228,10 +259,8 @@ class SwitchesConversionTable: public ConversionTable { } static void Cleanup() { - for (std::list::iterator it=internalCache.begin(); it!=internalCache.end(); it++) { - Cache & element = *it; - if (element.table) - delete element.table; + for (auto & element : internalCache) { + delete element.table; } internalCache.clear(); } @@ -244,7 +273,6 @@ std::list SwitchesConversionTable::internalCache #define FLAG_NOTELEMETRY 0x04 class SourcesConversionTable: public ConversionTable { - public: SourcesConversionTable(Board::Type board, unsigned int version, unsigned int variant, unsigned long flags=0) { @@ -268,12 +296,11 @@ class SourcesConversionTable: public ConversionTable { } } - for (int i=0; i=CPN_MAX_STICKS+MAX_POTS_STORAGE(board, version)) + if (version <= 218 && IS_HORUS_X10(board) && i >= CPN_MAX_STICKS + MAX_POTS_STORAGE(board, version)) offset += 2; - + addConversion(RawSource(SOURCE_TYPE_STICK, i + offset), val++); } @@ -401,7 +428,7 @@ class SwitchField: public ConversionField< SignedField > { ConversionField< SignedField >::beforeExport(); } - virtual void afterImport() + void afterImport() override { ConversionField< SignedField >::afterImport(); sw = RawSwitch(_switch); @@ -435,7 +462,7 @@ class SourceField: public ConversionField< UnsignedField > { ConversionField< UnsignedField >::beforeExport(); } - virtual void afterImport() + void afterImport() override { ConversionField< UnsignedField >::afterImport(); source = RawSource(_source); @@ -567,7 +594,7 @@ class CurveReferenceField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { curve.type = (CurveReference::CurveRefType)_curve_type; curve.value = smallGvarExport(_curve_value); @@ -688,7 +715,7 @@ class FlightModeField: public TransformedField { trim = 501 + phase.trimRef[i] - (phase.trimRef[i] > index ? 1 : 0); else trim = std::max(-500, std::min(500, phase.trim[i])); - if (board == BOARD_STOCK || (board == BOARD_M128 && version >= 215)) { + if (board == BOARD_9X_M64 || (board == BOARD_9X_M128 && version >= 215)) { trimBase[i] = trim >> 2; trimExt[i] = (trim & 0x03); } @@ -699,7 +726,7 @@ class FlightModeField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { for (int i=0; i= 218) { @@ -719,7 +746,7 @@ class FlightModeField: public TransformedField { } else { int trim; - if (board == BOARD_STOCK || (board == BOARD_M128 && version >= 215)) + if (board == BOARD_9X_M64 || (board == BOARD_9X_M128 && version >= 215)) trim = ((trimBase[i]) << 2) + (trimExt[i] & 0x03); else trim = trimBase[i]; @@ -824,7 +851,7 @@ class MixField: public TransformedField { } } - virtual void beforeExport() override + void beforeExport() override { if (mix.destCh && mix.srcRaw.type != SOURCE_TYPE_NONE) { _destCh = mix.destCh - 1; @@ -842,14 +869,14 @@ class MixField: public TransformedField { _curveParam = mix.curve.value; } else if (mix.curve.type == CurveReference::CURVE_REF_DIFF) { - _curveMode = 0; + _curveMode = false; _curveParam = smallGvarImport(mix.curve.value); } } else { mix.clear(); _destCh = 0; - _curveMode = 0; + _curveMode = false; _curveParam = 0; } @@ -888,13 +915,12 @@ class MixField: public TransformedField { Board::Type board; unsigned int version; ModelData * model; - unsigned int _destCh; - bool _curveMode; - int _curveParam; - int _weight; - int _offset; - unsigned int _weightMode; - unsigned int _offsetMode; + unsigned int _destCh = 0; + bool _curveMode = false; + int _curveParam = 0; + int _weight = 0; + int _offset = 0; + unsigned int _offsetMode = 0; }; class InputField: public TransformedField { @@ -950,7 +976,7 @@ class InputField: public TransformedField { } } - virtual void beforeExport() + void beforeExport() override { _weight = smallGvarImport(expo.weight); @@ -974,7 +1000,7 @@ class InputField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { if (!IS_STM32(board) && expo.mode) { expo.srcRaw = RawSource(SOURCE_TYPE_STICK, expo.chn); @@ -1002,10 +1028,10 @@ class InputField: public TransformedField { ExpoData & expo; Board::Type board; unsigned int version; - bool _curveMode; - int _weight; - int _offset; - int _curveParam; + bool _curveMode = false; + int _weight = 0; + int _offset = 0; + int _curveParam = 0; }; class LimitField: public StructField { @@ -1205,8 +1231,8 @@ class CurvesField: public TransformedField { unsigned int version; int maxCurves; int maxPoints; - int _curves[CPN_MAX_CURVES]; - int _points[CPN_MAX_CURVES*CPN_MAX_POINTS*2]; + int _curves[CPN_MAX_CURVES] = {}; + int _points[CPN_MAX_CURVES*CPN_MAX_POINTS*2] = {}; }; class LogicalSwitchesFunctionsTable: public ConversionTable { @@ -1249,10 +1275,7 @@ class LogicalSwitchField: public TransformedField { model(model), functionsConversionTable(board, version), sourcesConversionTable(SourcesConversionTable::getInstance(board, version, variant, 0)), - switchesConversionTable(SwitchesConversionTable::getInstance(board, version)), - v1(0), - v2(0), - v3(0) + switchesConversionTable(SwitchesConversionTable::getInstance(board, version)) { if (version >= 218) { internalField.Append(new ConversionField< UnsignedField<8> >(this, csw.func, &functionsConversionTable, "Function")); @@ -1278,9 +1301,8 @@ class LogicalSwitchField: public TransformedField { } } - ~LogicalSwitchField() - { - } + ~LogicalSwitchField() override + = default; void beforeExport() override { @@ -1344,9 +1366,9 @@ class LogicalSwitchField: public TransformedField { LogicalSwitchesFunctionsTable functionsConversionTable; SourcesConversionTable * sourcesConversionTable; SwitchesConversionTable * switchesConversionTable; - int v1; - int v2; - int v3; + int v1 = 0; + int v2 = 0; + int v3 = 0; }; class CustomFunctionsConversionTable: public ConversionTable { @@ -1354,7 +1376,7 @@ class CustomFunctionsConversionTable: public ConversionTable { public: CustomFunctionsConversionTable(Board::Type board, unsigned int version) { - int val=0; + int val = 0; for (int i=0; i internalField; uint64_t & sw; - uint64_t _sw; + uint64_t _sw = 0; Board::Type board; unsigned int version; }; @@ -1446,10 +1468,7 @@ class ArmCustomFunctionField: public TransformedField { version(version), variant(variant), functionsConversionTable(board, version), - sourcesConversionTable(SourcesConversionTable::getInstance(board, version, variant, 0)), - _func(0), - _active(0), - _mode(0) + sourcesConversionTable(SourcesConversionTable::getInstance(board, version, variant, 0)) { memset(_param, 0, sizeof(_param)); @@ -1475,7 +1494,7 @@ class ArmCustomFunctionField: public TransformedField { return (fn.func == FuncPlaySound || fn.func == FuncPlayPrompt || fn.func == FuncPlayValue || fn.func == FuncPlayHaptic); } - virtual void beforeExport() + void beforeExport() override { if (fn.swtch.type != SWITCH_TYPE_NONE) { _func = fn.func; @@ -1534,7 +1553,7 @@ class ArmCustomFunctionField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { fn.func = (AssignFunc)_func; @@ -1596,10 +1615,9 @@ class ArmCustomFunctionField: public TransformedField { unsigned int variant; CustomFunctionsConversionTable functionsConversionTable; SourcesConversionTable * sourcesConversionTable; - unsigned int _func; - char _param[10]; - int _active; - unsigned int _mode; + unsigned int _func = 0; + char _param[10] = {}; + int _active = 0; }; class FrskyScreenField: public DataField { @@ -1647,7 +1665,7 @@ class FrskyScreenField: public DataField { none.Append(new SpareBitsField<20*8>(this)); } - virtual void ExportBits(QBitArray & output) + void ExportBits(QBitArray & output) override { if (screen.type == TELEMETRY_SCREEN_SCRIPT) script.ExportBits(output); @@ -1659,7 +1677,7 @@ class FrskyScreenField: public DataField { none.ExportBits(output); } - virtual void ImportBits(const QBitArray & input) + void ImportBits(const QBitArray & input) override { qCDebug(eepromImport) << QString("importing %1: type: %2").arg(name).arg(screen.type); @@ -1674,7 +1692,7 @@ class FrskyScreenField: public DataField { none.ImportBits(input); } - virtual unsigned int size() + unsigned int size() override { // NOTA: screen.type should have been imported first! if (screen.type == TELEMETRY_SCREEN_SCRIPT) @@ -1700,7 +1718,7 @@ class FrskyScreenField: public DataField { class RSSIConversionTable: public ConversionTable { public: - RSSIConversionTable(int index) + explicit RSSIConversionTable(int index) { addConversion(0, 2-index); addConversion(1, 3-index); @@ -1709,8 +1727,7 @@ class RSSIConversionTable: public ConversionTable } RSSIConversionTable() - { - } + = default; }; class TelemetryVarioSourceConversionTable: public ConversionTable @@ -1861,8 +1878,7 @@ class SensorField: public TransformedField { internalField(this, "Sensor"), sensor(sensor), model(model), - version(version), - _param(0) + version(version) { internalField.Append(new UnsignedField<16>(this, _id, "id/persistentValue")); internalField.Append(new UnsignedField<8>(this, _instance, "instance/formula")); @@ -1917,7 +1933,7 @@ class SensorField: public TransformedField { } } - virtual void afterImport() + void afterImport() override { if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) { sensor.id = _id; @@ -1960,11 +1976,11 @@ class SensorField: public TransformedField { SensorData & sensor; const ModelData& model; unsigned int version; - unsigned int _id; - unsigned int _subid; - unsigned int _instance; + unsigned int _id = 0; + unsigned int _subid = 0; + unsigned int _instance = 0; union { - unsigned int _param; + unsigned int _param = 0; uint8_t _sources[4]; struct { uint16_t _ratio; @@ -1989,12 +2005,12 @@ class ModuleUnionField: public UnionField { Append(new SignedField<8>(parent, ppm.frameLength)); } - virtual bool select(const unsigned int& attr) const + bool select(const unsigned int & attr) const override { return true; // take what's left } - virtual DataField* getField() + DataField * getField() override { return this; } @@ -2017,21 +2033,20 @@ class ModuleUnionField: public UnionField { internalField.Append(new SignedField<8>(this, multi.optionValue)); } - virtual bool select(const unsigned int& attr) const + bool select(const unsigned int & attr) const override { - return attr==PULSES_MULTIMODULE; + return attr == PULSES_MULTIMODULE; } - virtual void beforeExport() + void beforeExport() override { module.rfProtocol = module.multi.rfProtocol & 0xf; rfProtExtra = (module.multi.rfProtocol >> 4) & 0x03; } - virtual void afterImport() + void afterImport() override { - module.multi.rfProtocol = - (rfProtExtra & 0x3) << 4 | (module.rfProtocol & 0xf); + module.multi.rfProtocol = (rfProtExtra & 0x3) << 4 | (module.rfProtocol & 0xf); } private: @@ -2042,44 +2057,49 @@ class ModuleUnionField: public UnionField { class PxxField: public UnionField::TransformedMember { public: - PxxField(DataField * parent, ModuleData& module): + PxxField(DataField * parent, ModuleData& module, unsigned int version): UnionField::TransformedMember(parent, internalField), internalField(this, "Pxx"), - module(module) + module(module), + version(version) { ModuleData::PXX& pxx = module.pxx; internalField.Append(new UnsignedField<2>(this, pxx.power)); internalField.Append(new SpareBitsField<2>(this)); - internalField.Append(new BoolField<1>(this, pxx.receiver_telem_off)); - internalField.Append(new BoolField<1>(this, pxx.receiver_channel_9_16)); - internalField.Append(new BoolField<1>(this, pxx.external_antenna)); - internalField.Append(new BoolField<1>(this, pxx.sport_out)); + internalField.Append(new BoolField<1>(this, pxx.receiverTelemetryOff)); + internalField.Append(new BoolField<1>(this, pxx.receiverHigherChannels)); + internalField.Append(new SignedField<2>(this, pxx.antennaMode)); + internalField.Append(new SpareBitsField<8>(this)); } - bool select(const unsigned int& attr) const { - return attr==PULSES_PXX_XJT_X16 || + bool select(const unsigned int& attr) const override { + return (attr >= PULSES_PXX_XJT_X16 && attr <= PULSES_PXX_XJT_LR12) || attr==PULSES_PXX_DJT || attr==PULSES_PXX_R9M || attr==PULSES_PXX_R9M_LITE; } - virtual void beforeExport() + void beforeExport() override { if (module.protocol >= PULSES_PXX_XJT_X16 && module.protocol <= PULSES_PXX_XJT_LR12) { module.subType = module.protocol - PULSES_PXX_XJT_X16; } } - virtual void afterImport() + void afterImport() override { if (module.protocol == PULSES_PXX_XJT_X16) { - module.protocol += module.subType; + if (version <= 218) + module.protocol += module.rfProtocol; + else + module.protocol += module.subType; } } private: StructField internalField; ModuleData& module; + unsigned int version; }; class AccessField: public UnionField::TransformedMember { @@ -2094,24 +2114,23 @@ class ModuleUnionField: public UnionField { for (int i=0; i(this, receiverName[i])); + + memset(receiverName, 0, sizeof(receiverName)); } - bool select(const unsigned int& attr) const { + bool select(const unsigned int& attr) const override { return attr >= PULSES_ACCESS_ISRM && attr <= PULSES_ACCESS_R9M_LITE_PRO; } - virtual void beforeExport() + void beforeExport() override { - if (module.protocol == PULSES_ACCST_ISRM_D16 || - module.protocol == PULSES_ACCESS_ISRM) { + if (module.protocol == PULSES_ACCST_ISRM_D16 || module.protocol == PULSES_ACCESS_ISRM) { module.subType = module.protocol - PULSES_ACCESS_ISRM; } for (int i=0; i { } } - virtual void afterImport() + void afterImport() override { if (module.protocol == PULSES_ACCESS_ISRM) { module.protocol += module.subType; } for (int i=0; i { private: StructField internalField; - ModuleData& module; - char receiverName[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME+1]; + ModuleData & module; + char receiverName[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME+1] = {}; }; public: @@ -2151,7 +2167,7 @@ class ModuleUnionField: public UnionField { { if (version >= 219) Append(new AccessField(parent, module)); - Append(new PxxField(parent, module)); + Append(new PxxField(parent, module, version)); Append(new MultiField(parent, module)); Append(new PPMField(parent, module.ppm)); } @@ -2182,20 +2198,20 @@ class ModuleField: public TransformedField { internalField.Append(new ModuleUnionField(parent, module, board, version)); } - virtual void beforeExport() + void beforeExport() override { if (module.protocol >= PULSES_LP45 && module.protocol <= PULSES_DSMX) { module.rfProtocol = module.protocol - PULSES_LP45; } } - virtual void afterImport() + void afterImport() override { if (module.protocol == PULSES_LP45) { module.protocol += module.rfProtocol; } } - + private: StructField internalField; ModuleData& module; @@ -2297,6 +2313,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig internalField.Append(new SwitchesWarningField<32>(this, modelData.switchWarningStates, board, version)); else if (IS_TARANIS_X9E(board)) internalField.Append(new SwitchesWarningField<64>(this, modelData.switchWarningStates, board, version)); + else if (version >= 219 && IS_TARANIS_X9D(board)) + internalField.Append(new SwitchesWarningField<32>(this, modelData.switchWarningStates, board, version)); else if (IS_TARANIS(board)) internalField.Append(new SwitchesWarningField<16>(this, modelData.switchWarningStates, board, version)); else @@ -2304,6 +2322,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig if (IS_TARANIS_X9E(board)) internalField.Append(new UnsignedField<32>(this, modelData.switchWarningEnable)); + else if (version >= 219 && IS_TARANIS_X9D(board)) + internalField.Append(new UnsignedField<16>(this, modelData.switchWarningEnable)); else if (!IS_HORUS(board)) internalField.Append(new UnsignedField<8>(this, modelData.switchWarningEnable)); @@ -2355,8 +2375,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig } int modulesCount = (version <= 218 ? 3 : 2); - for (int module=0; module(this, modelData.potsWarningEnabled[i])); + internalField.Append(new BoolField<1>(this, modelData.potsWarnEnabled[i])); else internalField.Append(new SpareBitsField<1>(this)); } - for (int i=0; i < Boards::getCapability(board, Board::Pots) + Boards::getCapability(board, Board::Sliders); i++) { - internalField.Append(new SignedField<8>(this, modelData.potPosition[i])); + for (int i=0; i < MAX_POTS_STORAGE(board, version) + MAX_SLIDERS_STORAGE(board, version); i++) { + internalField.Append(new SignedField<8>(this, modelData.potsWarnPosition[i])); + } + + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<16>(this)); } if (IS_SKY9X(board)) { @@ -2464,9 +2487,6 @@ void OpenTxModelData::beforeExport() { // qDebug() << QString("before export model") << modelData.name; - for (int module=0; module<2; module++) { - } - if (IS_HORUS(board)) { uint32_t newSwitchWarningStates = 0; for (int i = 0; i < MAX_SWITCHES(board, version); i++) { @@ -2483,11 +2503,6 @@ void OpenTxModelData::afterImport() { qCDebug(eepromImport) << QString("OpenTxModelData::afterImport()") << modelData.name; - // ??? what's this ??? - if (IS_HORUS(board)) { - modelData.moduleData[0].protocol = PULSES_PXX_XJT_X16; - } - if (IS_HORUS(board)) { uint32_t newSwitchWarningStates = 0; for (int i = 0; i < MAX_SWITCHES(board, version); i++) { @@ -2500,8 +2515,9 @@ void OpenTxModelData::afterImport() modelData.switchWarningStates = newSwitchWarningStates; } - if (version <= 218 && IS_HORUS_X10(board) && modelData.thrTraceSrc > 3) + if (version <= 218 && IS_HORUS_X10(board) && modelData.thrTraceSrc > 3) { modelData.thrTraceSrc += 2; + } } OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type board, unsigned int version, unsigned int variant): @@ -2510,7 +2526,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type generalData(generalData), board(board), version(version), - inputsCount(CPN_MAX_STICKS + Boards::getCapability(board, Board::PotsStorage) + Boards::getCapability(board, Board::SlidersStorage) + Boards::getCapability(board, Board::MouseAnalogs)) + inputsCount(CPN_MAX_STICKS + MAX_POTS_STORAGE(board, version) + MAX_SLIDERS_STORAGE(board, version) + Boards::getCapability(board, Board::MouseAnalogs)) { qCDebug(eepromImport) << QString("OpenTxGeneralData::OpenTxGeneralData(board: %1, version:%2, variant:%3)").arg(board).arg(version).arg(variant); @@ -2520,29 +2536,40 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type internalField.Append(new UnsignedField<8>(this, generalData.version)); internalField.Append(new UnsignedField<16>(this, generalData.variant)); - for (int i=0; i(this, generalData.calibMid[i])); - internalField.Append(new SignedField<16>(this, generalData.calibSpanNeg[i])); - internalField.Append(new SignedField<16>(this, generalData.calibSpanPos[i])); + internalField.Append(new SignedField<16>(this, generalData.calibMid[input])); + internalField.Append(new SignedField<16>(this, generalData.calibSpanNeg[input])); + internalField.Append(new SignedField<16>(this, generalData.calibSpanPos[input])); + } + + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<16*6>(this)); } internalField.Append(new UnsignedField<16>(this, chkSum)); + if (!IS_HORUS(board)) { internalField.Append(new UnsignedField<8>(this, generalData.currModelIndex)); internalField.Append(new UnsignedField<8>(this, generalData.contrast)); } internalField.Append(new UnsignedField<8>(this, generalData.vBatWarn)); internalField.Append(new SignedField<8>(this, generalData.txVoltageCalibration)); - internalField.Append(new SignedField<8>(this, generalData.backlightMode)); - for (int i=0; i(this, generalData.backlightMode)); + if (version >= 219) + internalField.Append(new SignedField<2>(this, generalData.antennaMode)); + else + internalField.Append(new SpareBitsField<2>(this)); + internalField.Append(new SpareBitsField<3>(this)); + + for (int i=0; i<4; i++) { internalField.Append(new SignedField<16>(this, generalData.trainer.calib[i])); } - for (int i=0; i(this, generalData.trainer.mix[i].src)); internalField.Append(new UnsignedField<2>(this, generalData.trainer.mix[i].mode)); internalField.Append(new SignedField<8>(this, generalData.trainer.mix[i].weight)); @@ -2662,21 +2689,21 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type internalField.Append(new ArmCustomFunctionField(this, generalData.customFn[i], board, version, variant)); } } - + if (IS_STM32(board)) { if (version >= 218) { - internalField.Append(new UnsignedField<4>(this, generalData.hw_uartMode)); - if (!IS_HORUS(board) || version < 219) { - for (uint8_t i=0; i<4; i++) { + internalField.Append(new UnsignedField<4>(this, generalData.auxSerialMode)); + if (IS_HORUS(board) && version >= 219) { + internalField.Append(new SpareBitsField<4>(this)); + } + else { + for (uint8_t i=0; i(this, generalData.sliderConfig[i])); } } - else { - internalField.Append(new SpareBitsField<4>(this)); - } } else { - internalField.Append(new UnsignedField<6>(this, generalData.hw_uartMode)); + internalField.Append(new UnsignedField<6>(this, generalData.auxSerialMode)); if (IS_TARANIS_X9E(board)) { internalField.Append(new UnsignedField<1>(this, generalData.sliderConfig[2])); internalField.Append(new UnsignedField<1>(this, generalData.sliderConfig[3])); @@ -2687,33 +2714,35 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type } if (IS_HORUS(board)) { - for (int i=0; i(this, generalData.switchConfig[i])); else internalField.Append(new SpareBitsField<2>(this)); } } - for (int i=0; i= 3)) offset += 2; - - if (i < Boards::getCapability(board, Board::PotsStorage)) + + if (i < MAX_POTS_STORAGE(board, version)) internalField.Append(new UnsignedField<2>(this, generalData.potConfig[i+offset])); else internalField.Append(new SpareBitsField<2>(this)); } + if (IS_HORUS(board) && version >= 219) { - for (int i=0; i(this, generalData.sliderConfig[i])); else internalField.Append(new SpareBitsField<1>(this)); } - } + } + if (!IS_HORUS(board)) { internalField.Append(new UnsignedField<8>(this, generalData.backlightColor)); } @@ -2752,13 +2781,16 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type for (int i=0; i(this, generalData.potName[i], "Pot name")); } - for (int i=0; i(this, generalData.sliderName[i], "Slider name")); } + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<48>(this)); // DUMMY_ANAS + } internalField.Append(new CharField<17>(this, generalData.currModelFilename, true, "Current model filename")); } else if (IS_TARANIS(board)) { - for (int i=0; i(this, generalData.switchConfig[i])); else @@ -2799,7 +2831,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type internalField.Append(new ZCharField<8>(this, generalData.registrationId, "ACCESS Registration ID")); } - if (version >= 219 && (IS_TARANIS_XLITES(board) || IS_HORUS(board))) { + if (version >= 219 && IS_TARANIS_XLITES(board)) { internalField.Append(new SignedField<8>(this, generalData.gyroMax, "Gyro full scale")); internalField.Append(new SignedField<8>(this, generalData.gyroOffset, "Gyro Offset")); } diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index f3558a245..3ba4f2a7a 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -58,9 +58,9 @@ OpenTxEepromInterface::~OpenTxEepromInterface() const char * OpenTxEepromInterface::getName() { switch (board) { - case BOARD_STOCK: + case BOARD_9X_M64: return "OpenTX for 9X board"; - case BOARD_M128: + case BOARD_9X_M128: return "OpenTX for M128 / 9X board"; case BOARD_MEGA2560: return "OpenTX for MEGA2560 board"; @@ -90,7 +90,7 @@ const char * OpenTxEepromInterface::getName() return "OpenTX for 9XR-PRO"; case BOARD_AR9X: return "OpenTX for ar9x board / 9X"; - case BOARD_X12S: + case BOARD_HORUS_X12S: return "OpenTX for FrSky Horus"; case BOARD_X10: return "OpenTX for FrSky X10"; @@ -273,11 +273,11 @@ unsigned long OpenTxEepromInterface::load(RadioData &radioData, const uint8_t * uint8_t OpenTxEepromInterface::getLastDataVersion(Board::Type board) { switch (board) { - case BOARD_STOCK: + case BOARD_9X_M64: return 216; case BOARD_GRUVIN9X: case BOARD_MEGA2560: - case BOARD_M128: + case BOARD_9X_M128: return 217; default: return 219; @@ -317,7 +317,7 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u efile->EeFsCreate(eeprom, size, board, version); - if (board == BOARD_M128) { + if (board == BOARD_9X_M128) { variant |= M128_VARIANT; } else if (IS_TARANIS_X9E(board)) { @@ -433,7 +433,7 @@ int OpenTxFirmware::getCapability(::Capability capability) return 0; else if (IS_ARM(board)) return 60; - else if (board == BOARD_M128) + else if (board == BOARD_9X_M128) return 30; else if (IS_2560(board)) return 30; @@ -512,7 +512,7 @@ int OpenTxFirmware::getCapability(::Capability capability) case CustomFunctions: if (IS_ARM(board)) return 64; - else if (IS_2560(board) || board == BOARD_M128) + else if (IS_2560(board) || board == BOARD_9X_M128) return 24; else return 16; @@ -703,9 +703,9 @@ int OpenTxFirmware::getCapability(::Capability capability) case HasMahPersistent: return (IS_ARM(board) ? true : false); case SimulatorVariant: - if (board == BOARD_STOCK) + if (board == BOARD_9X_M64) return SIMU_STOCK_VARIANTS; - else if (board == BOARD_M128) + else if (board == BOARD_9X_M128) return SIMU_M128_VARIANTS; else if (IS_TARANIS_X9E(board)) return TARANIS_X9E_VARIANT; @@ -774,9 +774,8 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_PPM: 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)); + return IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board) || board == BOARD_TARANIS_X9DP_2019 || board == BOARD_X10_EXPRESS || (IS_HORUS(board) && id.contains("internalaccess")); default: return false; } @@ -945,7 +944,7 @@ EepromLoadErrors OpenTxEepromInterface::checkVersion(unsigned int version) bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int variant) { bool variantError = false; - if (board == BOARD_M128 && !(variant & M128_VARIANT)) { + if (board == BOARD_9X_M128 && !(variant & M128_VARIANT)) { if (version == 212) { uint8_t tmp[1000]; for (int i = 1; i < 31; i++) { @@ -1268,7 +1267,7 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); /* FrSky X12 (Horus) board */ - firmware = new OpenTxFirmware("opentx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_X12S); + firmware = new OpenTxFirmware("opentx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_HORUS_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")); @@ -1302,10 +1301,10 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); // These are kept only for import purposes, marked as deprecated to hide from UI. - registerOpenTxFirmware(new OpenTxFirmware("opentx-9xr", Firmware::tr("Turnigy 9XR"), BOARD_STOCK), true); - registerOpenTxFirmware(new OpenTxFirmware("opentx-9xr128", Firmware::tr("Turnigy 9XR with m128 chip"), BOARD_M128), true); - registerOpenTxFirmware(new OpenTxFirmware("opentx-9x", Firmware::tr("9X with stock board"), BOARD_STOCK), true); - registerOpenTxFirmware(new OpenTxFirmware("opentx-9x128", Firmware::tr("9X with stock board and m128 chip"), BOARD_M128), true); + registerOpenTxFirmware(new OpenTxFirmware("opentx-9xr", Firmware::tr("Turnigy 9XR"), BOARD_9X_M64), true); + registerOpenTxFirmware(new OpenTxFirmware("opentx-9xr128", Firmware::tr("Turnigy 9XR with m128 chip"), BOARD_9X_M128), true); + registerOpenTxFirmware(new OpenTxFirmware("opentx-9x", Firmware::tr("9X with stock board"), BOARD_9X_M64), true); + registerOpenTxFirmware(new OpenTxFirmware("opentx-9x128", Firmware::tr("9X with stock board and m128 chip"), BOARD_9X_M128), true); registerOpenTxFirmware(new OpenTxFirmware("opentx-gruvin9x", Firmware::tr("9X with Gruvin9x board"), BOARD_GRUVIN9X), true); registerOpenTxFirmware(new OpenTxFirmware("opentx-mega2560", Firmware::tr("DIY MEGA2560 radio"), BOARD_MEGA2560), true); diff --git a/companion/src/firmwares/rawsource.cpp b/companion/src/firmwares/rawsource.cpp index b2d13e401..47171c29f 100644 --- a/companion/src/firmwares/rawsource.cpp +++ b/companion/src/firmwares/rawsource.cpp @@ -48,7 +48,7 @@ RawSourceRange RawSource::getRange(const ModelData * model, const GeneralSetting RawSourceRange result; Firmware * firmware = Firmware::getCurrentVariant(); - int board = firmware->getBoard(); + Board::Type board = firmware->getBoard(); switch (type) { case SOURCE_TYPE_TELEMETRY: diff --git a/companion/src/generaledit/generalsetup.cpp b/companion/src/generaledit/generalsetup.cpp index bcc61afde..5e1bcd13c 100644 --- a/companion/src/generaledit/generalsetup.cpp +++ b/companion/src/generaledit/generalsetup.cpp @@ -256,14 +256,14 @@ ui(new Ui::GeneralSetup) } if (!firmware->getCapability(PwrButtonPress)) { - ui->pwrOnSpeedLabel->hide(); - ui->pwrOnSpeed->hide(); - ui->pwrOffSpeedLabel->hide(); - ui->pwrOffSpeed->hide(); + ui->pwrOnDelayLabel->hide(); + ui->pwrOnDelay->hide(); + ui->pwrOffDelayLabel->hide(); + ui->pwrOffDelay->hide(); } else if (!IS_TARANIS(firmware->getBoard())) { - ui->pwrOnSpeedLabel->hide(); - ui->pwrOnSpeed->hide(); + ui->pwrOnDelayLabel->hide(); + ui->pwrOnDelay->hide(); } setValues(); @@ -453,8 +453,8 @@ void GeneralSetupPanel::setValues() ui->vBatMaxDSB->setValue((double)(generalSettings.vBatMax + 120) / 10); } - ui->pwrOnSpeed->setValue(generalSettings.pwrOnSpeed); - ui->pwrOffSpeed->setValue(generalSettings.pwrOffSpeed); + ui->pwrOnDelay->setValue(2 - generalSettings.pwrOnSpeed); + ui->pwrOffDelay->setValue(2 - generalSettings.pwrOffSpeed); // TODO: only if ACCESS available?? ui->registrationId->setText(generalSettings.registrationId); @@ -510,15 +510,15 @@ void GeneralSetupPanel::on_splashScreenDuration_currentIndexChanged(int index) emit modified(); } -void GeneralSetupPanel::on_pwrOnSpeed_valueChanged() +void GeneralSetupPanel::on_pwrOnDelay_valueChanged() { - generalSettings.pwrOnSpeed = ui->pwrOnSpeed->value(); + generalSettings.pwrOnSpeed = 2 - ui->pwrOnDelay->value(); emit modified(); } -void GeneralSetupPanel::on_pwrOffSpeed_valueChanged() +void GeneralSetupPanel::on_pwrOffDelay_valueChanged() { - generalSettings.pwrOffSpeed = ui->pwrOffSpeed->value(); + generalSettings.pwrOffSpeed = 2 - ui->pwrOffDelay->value(); emit modified(); } diff --git a/companion/src/generaledit/generalsetup.h b/companion/src/generaledit/generalsetup.h index 5ad3a1afe..53a1286eb 100644 --- a/companion/src/generaledit/generalsetup.h +++ b/companion/src/generaledit/generalsetup.h @@ -89,8 +89,8 @@ class GeneralSetupPanel : public GeneralPanel void on_contrastSB_editingFinished(); void on_ownerID_editingFinished(); - void on_pwrOnSpeed_valueChanged(); - void on_pwrOffSpeed_valueChanged(); + void on_pwrOnDelay_valueChanged(); + void on_pwrOffDelay_valueChanged(); private: Ui::GeneralSetup *ui; diff --git a/companion/src/generaledit/generalsetup.ui b/companion/src/generaledit/generalsetup.ui index 88789aa8c..d4e9bff01 100644 --- a/companion/src/generaledit/generalsetup.ui +++ b/companion/src/generaledit/generalsetup.ui @@ -1567,9 +1567,9 @@ Acceptable values are 5v..10v - + - Power On Speed + Power On Delay @@ -2432,35 +2432,29 @@ p, li { white-space: pre-wrap; } - + - Power Off Speed + Power Off Delay - - - -1 + + + sec - 2 - - - Qt::Horizontal + 3 - - - -1 + + + sec - 2 - - - Qt::Horizontal + 3 diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index f33800635..09f109bda 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -153,7 +153,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings setupSwitchType(17, ui->srLabel, ui->srName, ui->srType); if (IS_TARANIS(board) && !IS_TARANIS_SMALL(board)) { - ui->serialPortMode->setCurrentIndex(generalSettings.hw_uartMode); + ui->serialPortMode->setCurrentIndex(generalSettings.auxSerialMode); } else { ui->serialPortMode->setCurrentIndex(0); @@ -183,6 +183,18 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings ui->bluetoothWidget->hide(); } + if ((IS_HORUS(board) && board != Board::BOARD_X10_EXPRESS) || (IS_TARANIS_XLITE(board) && !IS_TARANIS_XLITES(board))) { + ui->antennaMode->addItem(tr("Internal"), -2); + ui->antennaMode->addItem(tr("Ask"), -1); + ui->antennaMode->addItem(tr("Per model"), 0); + ui->antennaMode->addItem(IS_HORUS_X12S(board) ? tr("Internal + External") : tr("External"), 1); + ui->antennaMode->setField(generalSettings.antennaMode, this); + } + else { + ui->antennaLabel->hide(); + ui->antennaMode->hide(); + } + if (IS_HORUS_OR_TARANIS(board)) { ui->filterEnable->setChecked(!generalSettings.jitterFilter); } @@ -277,6 +289,6 @@ void HardwarePanel::on_txVoltageCalibration_editingFinished() void HardwarePanel::on_serialPortMode_currentIndexChanged(int index) { - generalSettings.hw_uartMode = index; + generalSettings.auxSerialMode = index; emit modified(); } diff --git a/companion/src/generaledit/hardware.ui b/companion/src/generaledit/hardware.ui index c28c4584c..79bb36a32 100644 --- a/companion/src/generaledit/hardware.ui +++ b/companion/src/generaledit/hardware.ui @@ -7,7 +7,7 @@ 0 0 470 - 1419 + 1585 @@ -23,219 +23,6 @@ 6 - - - - - - - - - - - - - - S3 - - - - - - - Rud - - - - - - - 3 - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - 0 - 10 - - - - Qt::Horizontal - - - - - - - 3 - - - - - - - 3 - - - - - - - 3 - - - - - - - S4 - - - - - - - - - - - - - - - - - Serial Port - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - Bluetooth - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - PPM Multiplier - - - - - - - SB - - - - - - - 3 - - - - - - - 3 - - - - - - - 3 - - - @@ -243,77 +30,6 @@ - - - - 3 - - - - - - - - - - - - - - RS2 - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SQ - - - - - - - - - - - - - @@ -327,36 +43,21 @@ - - - - - OFF - - - - - S-Port Mirror - - - - - Telemetry - - - - - SBUS Trainer - - - - - Debug - - + + + + SC + - + + + + 3 + + + + @@ -375,323 +76,6 @@ - - - - 3 - - - - - - - PPM 1 - - - - - - - SD - - - - - - - S1 - - - - - - - SC - - - - - - - SJ - - - - - - - 3 - - - - - - - SL - - - - - - - - - - - - - - - - - Ail - - - - - - - PPM 2 - - - - - - - 3 - - - - - - - - - - v - - - 1 - - - -9.900000000000000 - - - 9.900000000000000 - - - 0.100000000000000 - - - - - - - 3 - - - - - - - S2 - - - - - - - - - - - - - - - - -9999 - - - 9999 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SA - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 10 - - - - Qt::Horizontal - - - - - - - 3 - - - - - - - SH - - - - - - - SP - - - - - - - 1 - - - 5.000000000000000 - - - 1.000000000000000 - - - - - - - 3 - - - - - - - 3 - - - - - - - 3 - - - - - - - 3 - - - - - - - -49 - - - 49 - - - - - - - - - - - - - - - - - - - - PPM 4 - - - - - - - 3 - - - @@ -750,6 +134,51 @@ + + + + 3 + + + + + + + SR + + + + + + + S4 + + + + + + + 3 + + + + + + + 3 + + + + + + + -49 + + + 49 + + + @@ -763,22 +192,28 @@ - - + + - ADC Filter + RS2 - - - - SF + + + + + 0 + 10 + + + + Qt::Horizontal - - + + @@ -788,28 +223,24 @@ - - - - - - + + -9999 - - + + 9999 - - - - + + + + + 0 + 10 + - - - - - + + Qt::Horizontal @@ -820,10 +251,26 @@ - - + + + + + 0 + 0 + + - SR + Bluetooth + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Current Offset @@ -837,51 +284,24 @@ - - - - - - - - - - - - - - - - - - - - - - - - SG - - - - + - PPM 3 + PPM 2 - - + + 3 - - + + - SK + SD @@ -892,6 +312,16 @@ + + + + 3 + + + + + + @@ -905,36 +335,15 @@ - - - - RS + + + + 3 - - - - LS - - - - - - - Battery Offset - - - - - - - SI - - - - - + + @@ -946,7 +355,340 @@ - + + + + + + + + + + + + + + + + + SJ + + + + + + + + + + + + + + + + + SA + + + + + + + S1 + + + + + + + S3 + + + + + + + SP + + + + + + + SF + + + + + + + LS + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + 3 + + + + + + + 1 + + + 5.000000000000000 + + + 1.000000000000000 + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + Battery Offset + + + + + + + Serial Port + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + + + SG + + + + + + + S2 + + + + + + + + + + Ele + + + + + + + 3 + + + + + + + 3 + + + + + + + SI + + + + + + + SQ + + + + + + + SL + + + + + + + 3 + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SO + + + + @@ -965,8 +707,15 @@ - - + + + + PPM 1 + + + + + @@ -978,7 +727,14 @@ - + + + + PPM 4 + + + + @@ -997,8 +753,8 @@ - - + + @@ -1010,17 +766,32 @@ - - - - LS2 + + + + + + + v + + + 1 + + + -9.900000000000000 + + + 9.900000000000000 + + + 0.100000000000000 - - + + - Ele + SB @@ -1031,6 +802,158 @@ + + + + PPM Multiplier + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + Rud + + + + + + + + + + + + + + + + + ADC Filter + + + + + + + 3 + + + + + + + 3 + + + + + + + + + + + + + + + + + Antenna + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + + + S5 + + + + + + + PPM 3 + + + + + + + Ail + + + + + + + SK + + + @@ -1038,29 +961,35 @@ - - - - 3 - - - - - + + - SN + LS2 - - + + 3 - - + + + + + + + + + + + + + + + 3 @@ -1073,32 +1002,116 @@ - - - - Current Offset + + + + 3 - - + + - SO + SH - - - - S5 + + + + + + + + + + - - + + + + + OFF + + + + + S-Port Mirror + + + + + Telemetry + + + + + SBUS Trainer + + + + + Debug + + + - - + + + + 3 + + + + + + + + + + + + + + + + + + + + RS + + + + + + + 3 + + + + + + + SN + + + + + + + 3 + + + + + + + 3 + + diff --git a/companion/src/helpers.h b/companion/src/helpers.h index a54f89450..0ce75e7fb 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -67,6 +67,14 @@ class GVarGroup: public QObject { void setWeight(int val); + void setMinimum(int min) { + mini = min; + } + + void setMaximum(int max) { + maxi = max; + } + signals: void valueChanged(); diff --git a/companion/src/images/originals/splash20/splash-orig.png b/companion/src/images/originals/splash20/splash-orig.png deleted file mode 100644 index 792845e90..000000000 Binary files a/companion/src/images/originals/splash20/splash-orig.png and /dev/null differ diff --git a/companion/src/images/originals/splash20/splash.png b/companion/src/images/originals/splash20/splash.png deleted file mode 100644 index c1dd30dec..000000000 Binary files a/companion/src/images/originals/splash20/splash.png and /dev/null differ diff --git a/companion/src/images/originals/splash20/splashp.png b/companion/src/images/originals/splash20/splashp.png deleted file mode 100644 index 883817d54..000000000 Binary files a/companion/src/images/originals/splash20/splashp.png and /dev/null differ diff --git a/companion/src/images/originals/splash20/splashr.png b/companion/src/images/originals/splash20/splashr.png deleted file mode 100644 index 85da91e5b..000000000 Binary files a/companion/src/images/originals/splash20/splashr.png and /dev/null differ diff --git a/companion/src/images/originals/splash20/splasht.png b/companion/src/images/originals/splash20/splasht.png deleted file mode 100644 index 1de729daf..000000000 Binary files a/companion/src/images/originals/splash20/splasht.png and /dev/null differ diff --git a/companion/src/images/originals/splash21/splash21.svg b/companion/src/images/originals/splash21/splash21.svg deleted file mode 100644 index 3d36be7ae..000000000 --- a/companion/src/images/originals/splash21/splash21.svg +++ /dev/null @@ -1,1784 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATE TRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - 2.1 - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - - 2.1 - - - - - - 9X - - - - - - - - - - diff --git a/companion/src/images/originals/splash22/splash22_2.svg b/companion/src/images/originals/splash22/splash22_2.svg deleted file mode 100644 index a95269903..000000000 --- a/companion/src/images/originals/splash22/splash22_2.svg +++ /dev/null @@ -1,3272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATE TRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - - 2.1 - - - - - - 9X - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - 2.1 - - - - - - - - - - - - - - - - - - x - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - H - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Lorem Ipsum - Copyright (C) OpenTX www.open-tx.org - - - - - - - OPEN - - - - - - - - - - - - - - - - - - - - - - - - - - Hold power button to switch your radio on. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OPEN - - - - THE ULTIMATETRANSMITTER - COMPANION - - - diff --git a/companion/src/images/originals/splash22/splash22_3.svg b/companion/src/images/originals/splash22/splash22_3.svg deleted file mode 100644 index 3c93cb087..000000000 --- a/companion/src/images/originals/splash22/splash22_3.svg +++ /dev/null @@ -1,6367 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATE TRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - 2.1 - - - - THE ULTIMATETRANSMITTER - COMPANION - - - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - - 2.1 - - - - - - 9X - - - - - - - - - - - - - - - - - - THE ULTIMATETRANSMITTER - COMPANION - - 2.1 - - - - - - - - - - - - - - - - - - x - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - H - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Lorem Ipsum - Copyright (C) OpenTX www.open-tx.org - - - - - - - OPEN - - - - - - - - - - - - - - - - - - - - - - - - - - Hold power button to switch your radio on. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OPEN - - THE ULTIMATETRANSMITTER - COMPANION - - diff --git a/companion/src/images/originals/splash22/splash22_3_dmg.svg b/companion/src/images/originals/splash22/splash22_3_dmg.svg deleted file mode 100644 index 7d8072da0..000000000 --- a/companion/src/images/originals/splash22/splash22_3_dmg.svg +++ /dev/null @@ -1,948 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Copyright (C) OpenTX www.open-tx.org - - - - - - - OPEN - - THE ULTIMATETRANSMITTER - COMPANION - - diff --git a/companion/src/images/splash22_3_dmg.png b/companion/src/images/splash22_3_dmg.png deleted file mode 100644 index b457ccf39..000000000 Binary files a/companion/src/images/splash22_3_dmg.png and /dev/null differ diff --git a/companion/src/images/splash_dmg.png b/companion/src/images/splash_dmg.png new file mode 100644 index 000000000..b52324081 Binary files /dev/null and b/companion/src/images/splash_dmg.png differ diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index 57f68a5c2..4fbe64a9a 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -82,12 +82,14 @@ void LimitsGroup::updateMinMax(int max) { if (spinbox->maximum() == 0) { spinbox->setMinimum(-max * displayStep); + gvarGroup->setMinimum(-max); if (value < -max) { value = -max; } } if (spinbox->minimum() == 0) { spinbox->setMaximum(max * displayStep); + gvarGroup->setMaximum(max); if (value > max) { value = max; } diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 3e07a5f42..4b12115fe 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -199,7 +199,7 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul ui->trainerMode->setItemData(TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, 0, Qt::UserRole - 1); ui->trainerMode->setItemData(TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE, 0, Qt::UserRole - 1); } - if (generalSettings.hw_uartMode != UART_MODE_SBUS_TRAINER) { + if (generalSettings.auxSerialMode != UART_MODE_SBUS_TRAINER) { ui->trainerMode->setItemData(TRAINER_MODE_MASTER_BATTERY_COMPARTMENT, 0, Qt::UserRole - 1); } ui->trainerMode->setCurrentIndex(model.trainerMode); @@ -400,7 +400,7 @@ void ModulePanel::update() else if (protocol==PULSES_ACCESS_ISRM || protocol==PULSES_ACCESS_R9M || protocol==PULSES_ACCESS_R9M_LITE || protocol==PULSES_ACCESS_R9M_LITE_PRO) mask |= MASK_RX_NUMBER | MASK_ACCESS; - if ((IS_HORUS(board) || board == Board::BOARD_TARANIS_XLITE) && moduleIdx == 0) + if (moduleIdx == 0 && HAS_EXTERNAL_ANTENNA(board) && generalSettings.antennaMode == 0 /* per model */) mask |= MASK_ANTENNA; break; case PULSES_LP45: @@ -486,16 +486,18 @@ void ModulePanel::update() ui->ppmFrameLength->setMaximum(firmware->getCapability(PPMFrameLength)); ui->ppmFrameLength->setValue(22.5+((double)module.ppm.frameLength)*0.5); - // Antenna selection on Horus and xlite - ui->label_antenna->setVisible(mask & MASK_ANTENNA); - ui->antennaMode->setVisible(mask & MASK_ANTENNA); - if IS_HORUS_X12S(board) { - ui->antennaMode->setItemText(1,tr("Ext. + Int")); + // Antenna mode on Horus and XLite + if (mask & MASK_ANTENNA) { + ui->antennaMode->clear(); + ui->antennaMode->addItem(tr("Ask"), -1); + ui->antennaMode->addItem(tr("Internal"), 0); + ui->antennaMode->addItem(IS_HORUS_X12S(board) ? tr("Internal + External") : tr("External"), 1); + ui->antennaMode->setField(module.pxx.antennaMode, this); } else { - ui->antennaMode->setItemText(1,tr("External")); + ui->antennaLabel->hide(); + ui->antennaMode->hide(); } - ui->antennaMode->setCurrentIndex(module.pxx.external_antenna); // R9M options ui->r9mPower->setVisible(mask & MASK_R9M); @@ -642,14 +644,6 @@ void ModulePanel::on_ppmPolarity_currentIndexChanged(int index) } } -void ModulePanel::on_antennaMode_currentIndexChanged(int index) -{ - if (!lock && module.pxx.external_antenna != (bool)index) { - module.pxx.external_antenna = index; - emit modified(); - } -} - void ModulePanel::on_r9mPower_currentIndexChanged(int index) { if (!lock && module.pxx.power != (unsigned int)index) { @@ -1387,7 +1381,7 @@ void SetupPanel::updatePotWarnings() for (int i=0; iproperty("index").toInt(); - checkbox->setChecked(!model->potsWarningEnabled[index]); + checkbox->setChecked(!model->potsWarnEnabled[index]); checkbox->setDisabled(model->potsWarningMode == 0); } lock = false; @@ -1397,7 +1391,7 @@ void SetupPanel::potWarningToggled(bool checked) { if (!lock) { int index = sender()->property("index").toInt(); - model->potsWarningEnabled[index] = !checked; + model->potsWarnEnabled[index] = !checked; updatePotWarnings(); emit modified(); } diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index fcfc495a4..fc1a57cf7 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -80,7 +80,6 @@ class ModulePanel : public ModelPanel void on_ppmPolarity_currentIndexChanged(int index); void on_ppmOutputType_currentIndexChanged(int index); void on_ppmFrameLength_editingFinished(); - void on_antennaMode_currentIndexChanged(int index); void on_rxNumber_editingFinished(); void on_failsafeMode_currentIndexChanged(int value); void onMultiProtocolChanged(int index); diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index ddf5843f6..5ed3f9e11 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -6,8 +6,8 @@ 0 0 - 1042 - 375 + 1075 + 434 @@ -252,7 +252,7 @@ - -1 + 6 0 @@ -595,7 +595,7 @@ - + 16777215 @@ -611,7 +611,7 @@ - + 0 @@ -621,16 +621,6 @@ QComboBox::AdjustToContents - - - Internal - - - - - Ext. + Int. - - @@ -732,6 +722,26 @@ + + + + Registration ID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + @@ -775,6 +785,50 @@ + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 106 + 104 + 100 + + + + + + + + WARNING: Requires non-certified firmware! + + + @@ -883,70 +937,6 @@ - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 106 - 104 - 100 - - - - - - - - WARNING: Requires non-certified firmware! - - - - - - - Registration ID - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - true - - - @@ -1069,6 +1059,13 @@ QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; pad + + + AutoComboBox + QComboBox +
autocombobox.h
+
+
protocol channelsStart diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 5d6a23278..39a314fa7 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -939,7 +939,7 @@ void TelemetryPanel::setup() ui->telemetryProtocol->addItem(tr("FrSky S.PORT"), 0); ui->telemetryProtocol->addItem(tr("FrSky D"), 1); if (IS_9XRPRO(firmware->getBoard()) || - (IS_TARANIS(firmware->getBoard()) && generalSettings.hw_uartMode == 2)) { + (IS_TARANIS(firmware->getBoard()) && generalSettings.auxSerialMode == 2)) { ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2); } ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol); diff --git a/companion/src/modelprinter.cpp b/companion/src/modelprinter.cpp index 5b13a7e38..ac9f6f066 100644 --- a/companion/src/modelprinter.cpp +++ b/companion/src/modelprinter.cpp @@ -223,7 +223,6 @@ QString ModelPrinter::printModule(int idx) if (module.protocol == PULSES_PXX_R9M) { str << printLabelValue(tr("Sub Type"), module.subTypeToString()); str << printLabelValue(tr("RF Output Power"), module.powerValueToString(firmware)); - str << printLabelValue(tr("Telemetry"), printBoolean(module.pxx.sport_out, BOOLEAN_ENABLEDISABLE)); } } } @@ -869,7 +868,7 @@ QString ModelPrinter::printPotWarnings() for (int i=0; i 0) { + if (protocol != PULSES_OFF && moduleData.modelId > 0) { if (!rxs.isEmpty()) { rxs.append(", "); } - unsigned mdlidx = model.moduleData[j].modelId; + unsigned mdlidx = moduleData.modelId; rxs.append(QString("%1").arg(uint(mdlidx), 2, 10, QChar('0'))); - if (!isModelIdUnique(mdlidx)) { + if (!isModelIdUnique(mdlidx, moduleIdx, protocol)) { current->setHighlightRX(true); } } + moduleIdx++; } current->setData(currentColumn++, rxs); } @@ -746,17 +748,15 @@ void TreeModel::refresh() } } -bool TreeModel::isModelIdUnique(unsigned modelIdx) +bool TreeModel::isModelIdUnique(unsigned modelIdx, unsigned module, unsigned protocol) { int cnt = 0; - for (unsigned i=0; imodels.size(); i++) { - ModelData & model = radioData->models[i]; + for (auto const& model: radioData->models) { if (!model.isEmpty()) { - for (unsigned j=0; j 1) { - return false; - } + const ModuleData& moduleData = model.moduleData[module]; + if (moduleData.protocol == protocol && moduleData.modelId == modelIdx) { + if (++cnt > 1) { + return false; } } } diff --git a/companion/src/modelslist.h b/companion/src/modelslist.h index d7e60684c..135e8b28d 100644 --- a/companion/src/modelslist.h +++ b/companion/src/modelslist.h @@ -149,7 +149,7 @@ class TreeModel : public QAbstractItemModel private: TreeItem * getItem(const QModelIndex & index) const; - bool isModelIdUnique(unsigned modelId); + bool isModelIdUnique(unsigned modelId, unsigned module, unsigned protocol); TreeItem * rootItem; RadioData * radioData; diff --git a/companion/src/radiointerface.cpp b/companion/src/radiointerface.cpp index b1ca6240f..d83f40c5c 100644 --- a/companion/src/radiointerface.cpp +++ b/companion/src/radiointerface.cpp @@ -55,7 +55,7 @@ QStringList getAvrdudeArgs(const QString & cmd, const QString & filename) args << "-c" << programmer << "-p"; if (IS_2560(board)) args << "m2560"; - else if (board == Board::BOARD_M128) + else if (board == Board::BOARD_9X_M128) args << "m128"; else args << mcu; diff --git a/companion/src/shared/autocombobox.h b/companion/src/shared/autocombobox.h index edb1de514..fcb1845ac 100644 --- a/companion/src/shared/autocombobox.h +++ b/companion/src/shared/autocombobox.h @@ -29,12 +29,8 @@ class AutoComboBox: public QComboBox Q_OBJECT public: - explicit AutoComboBox(QWidget *parent = 0): - QComboBox(parent), - field(NULL), - panel(NULL), - next(0), - lock(false) + explicit AutoComboBox(QWidget *parent = nullptr): + QComboBox(parent) { connect(this, SIGNAL(currentIndexChanged(int)), this, SLOT(onCurrentIndexChanged(int))); } @@ -67,14 +63,14 @@ class AutoComboBox: public QComboBox updateValue(); } - void setField(unsigned int & field, GenericPanel * panel=NULL) + void setField(unsigned int & field, GenericPanel * panel=nullptr) { this->field = (int *)&field; this->panel = panel; updateValue(); } - void setField(int & field, GenericPanel * panel=NULL) + void setField(int & field, GenericPanel * panel=nullptr) { this->field = &field; this->panel = panel; @@ -113,10 +109,10 @@ class AutoComboBox: public QComboBox } protected: - int * field; - GenericPanel * panel; - int next; - bool lock; + int * field = nullptr; + GenericPanel * panel = nullptr; + int next = 0; + bool lock = false; }; #endif // _AUTOCOMBOBOX_H_ diff --git a/companion/src/simulation/radiooutputswidget.cpp b/companion/src/simulation/radiooutputswidget.cpp index d1c1434f5..a71e3098b 100644 --- a/companion/src/simulation/radiooutputswidget.cpp +++ b/companion/src/simulation/radiooutputswidget.cpp @@ -223,7 +223,7 @@ void RadioOutputsWidget::setupGVarsDisplay() QPalette::ColorRole bgrole = QPalette::AlternateBase; for (int fm=0; fm < fmodes; fm++) { QLabel * label = new QLabel(gvarsWidget); - label->setText(QString("FM%1").arg(fm)); + label->setText(QString(tr("FM%1")).arg(fm)); label->setAlignment(Qt::AlignCenter); label->setBackgroundRole(bgrole); gvarsLayout->addWidget(label, 0, fm+1); @@ -232,7 +232,7 @@ void RadioOutputsWidget::setupGVarsDisplay() for (int gv=0; gv < gvars; gv++) { bgrole = ((gv % 2) ? QPalette::Background : QPalette::AlternateBase); QLabel * label = new QLabel(gvarsWidget); - label->setText(QString("GV%1").arg(gv+1)); + label->setText(QString(tr("GV%1")).arg(gv+1)); label->setAutoFillBackground(true); label->setBackgroundRole(bgrole); gvarsLayout->addWidget(label, gv+1, 0); diff --git a/companion/src/simulation/simulateduiwidget.h b/companion/src/simulation/simulateduiwidget.h index 0b498924c..94ad0e966 100644 --- a/companion/src/simulation/simulateduiwidget.h +++ b/companion/src/simulation/simulateduiwidget.h @@ -97,7 +97,6 @@ class SimulatedUIWidget : public QWidget unsigned int m_backLight; int m_beepShow; int m_beepVal; - }; diff --git a/companion/src/simulation/simulatormainwindow.cpp b/companion/src/simulation/simulatormainwindow.cpp index 949f0a2f7..b0d40f024 100644 --- a/companion/src/simulation/simulatormainwindow.cpp +++ b/companion/src/simulation/simulatormainwindow.cpp @@ -153,19 +153,12 @@ SimulatorMainWindow::SimulatorMainWindow(QWidget *parent, const QString & firmwa SimulatorMainWindow::~SimulatorMainWindow() { - if (m_telemetryDockWidget) - delete m_telemetryDockWidget; - if (m_trainerDockWidget) - delete m_trainerDockWidget; - if (m_outputsDockWidget) - delete m_outputsDockWidget; - if (m_simulatorDockWidget) - delete m_simulatorDockWidget; - else if (m_simulatorWidget) - delete m_simulatorWidget; - if (m_consoleDockWidget) - delete m_consoleDockWidget; - + delete m_telemetryDockWidget; + delete m_trainerDockWidget; + delete m_outputsDockWidget; + delete m_simulatorDockWidget; + delete m_simulatorWidget; + delete m_consoleDockWidget; delete ui; if (m_simulator) { @@ -293,7 +286,7 @@ void SimulatorMainWindow::createDockWidgets() if (!m_telemetryDockWidget) { SimulatorIcon icon("telemetry"); m_telemetryDockWidget = new QDockWidget(tr("Telemetry Simulator"), this); - TelemetrySimulator * telem = new TelemetrySimulator(this, m_simulator); + auto * telem = new TelemetrySimulator(this, m_simulator); m_telemetryDockWidget->setWidget(telem); m_telemetryDockWidget->setObjectName("TELEMETRY_SIMULATOR"); addTool(m_telemetryDockWidget, Qt::LeftDockWidgetArea, icon, QKeySequence(tr("F4"))); @@ -302,7 +295,7 @@ void SimulatorMainWindow::createDockWidgets() if (!m_trainerDockWidget) { SimulatorIcon icon("trainer"); m_trainerDockWidget = new QDockWidget(tr("Trainer Simulator"), this); - TrainerSimulator * trainer = new TrainerSimulator(this, m_simulator); + auto * trainer = new TrainerSimulator(this, m_simulator); m_trainerDockWidget->setWidget(trainer); m_trainerDockWidget->setObjectName("TRAINER_SIMULATOR"); addTool(m_trainerDockWidget, Qt::TopDockWidgetArea, icon, QKeySequence(tr("F5"))); diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index f25873db3..4858d7135 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -50,17 +50,8 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato simulator(simulator), firmware(getCurrentFirmware()), radioSettings(GeneralSettings()), - radioUiWidget(NULL), - vJoyLeft(NULL), - vJoyRight(NULL), m_board(getCurrentBoard()), - flags(flags), - startupFromFile(false), - deleteTempRadioData(false), - saveTempRadioData(false) -#ifdef JOYSTICKS - , joystick(NULL) -#endif + flags(flags) { ui->setupUi(this); @@ -86,7 +77,7 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato case Board::BOARD_TARANIS_X9E: radioUiWidget = new SimulatedUIWidgetX9E(simulator, this); break; - case Board::BOARD_X12S: + case Board::BOARD_HORUS_X12S: radioUiWidget = new SimulatedUIWidgetX12(simulator, this); break; case Board::BOARD_X10: @@ -154,21 +145,16 @@ SimulatorWidget::~SimulatorWidget() { shutdown(); - if (radioUiWidget) - delete radioUiWidget; - if (vJoyLeft) - delete vJoyLeft; - if (vJoyRight) - delete vJoyRight; + delete radioUiWidget; + delete vJoyLeft; + delete vJoyRight; #ifdef JOYSTICKS - if (joystick) - delete joystick; + delete joystick; #endif - firmware = NULL; + firmware = nullptr; delete ui; } - /* * Public slots/setters */ @@ -570,7 +556,7 @@ void SimulatorWidget::setupRadioWidgets() continue; swcfg = Board::SwitchType(radioSettings.switchConfig[i]); - wname = RawSource(RawSourceType::SOURCE_TYPE_SWITCH, i).toString(NULL, &radioSettings); + wname = RawSource(RawSourceType::SOURCE_TYPE_SWITCH, i).toString(nullptr, &radioSettings); RadioSwitchWidget * sw = new RadioSwitchWidget(swcfg, wname, -1, ui->radioWidgetsHT); sw->setIndex(i); ui->radioWidgetsHTLayout->addWidget(sw); @@ -585,7 +571,7 @@ void SimulatorWidget::setupRadioWidgets() if (!radioSettings.isPotAvailable(i)) continue; - wname = RawSource(RawSourceType::SOURCE_TYPE_STICK, ttlSticks + i).toString(NULL, &radioSettings); + wname = RawSource(RawSourceType::SOURCE_TYPE_STICK, ttlSticks + i).toString(nullptr, &radioSettings); RadioKnobWidget * pot = new RadioKnobWidget(Board::PotType(radioSettings.potConfig[i]), wname, 0, ui->radioWidgetsHT); pot->setIndex(i); ui->radioWidgetsHTLayout->insertWidget(midpos++, pot); @@ -599,7 +585,7 @@ void SimulatorWidget::setupRadioWidgets() if (!radioSettings.isSliderAvailable(i)) continue; - wname = RawSource(RawSourceType::SOURCE_TYPE_STICK, ttlSticks + ttlKnobs + i).toString(NULL, &radioSettings); + wname = RawSource(RawSourceType::SOURCE_TYPE_STICK, ttlSticks + ttlKnobs + i).toString(nullptr, &radioSettings); RadioFaderWidget * sl = new RadioFaderWidget(wname, 0, ui->radioWidgetsVC); sl->setIndex(i); ui->VCGridLayout->addWidget(sl, 0, c++, 1, 1); @@ -613,7 +599,7 @@ void SimulatorWidget::setupRadioWidgets() for (i = extraTrims; i > 0; --i) { trswidx -= 2; --tridx; - wname = RawSource(RawSourceType::SOURCE_TYPE_TRIM, tridx).toString(NULL, &radioSettings); + wname = RawSource(RawSourceType::SOURCE_TYPE_TRIM, tridx).toString(nullptr, &radioSettings); wname = wname.left(1) % wname.right(1); RadioTrimWidget * tw = new RadioTrimWidget(Qt::Vertical, ui->radioWidgetsVC); tw->setIndices(tridx, trswidx, trswidx + 1); @@ -672,7 +658,7 @@ void SimulatorWidget::setupJoysticks() if (vJoyRight) disconnect(this, 0, vJoyRight, 0); joystick->deleteLater(); - joystick = NULL; + joystick = nullptr; } if (vJoyRight) vJoyRight->setStickConstraint((VirtualJoystickWidget::HOLD_X | VirtualJoystickWidget::HOLD_Y), joysticksEnabled); diff --git a/companion/src/simulation/simulatorwidget.h b/companion/src/simulation/simulatorwidget.h index e3377084b..62ee4c8ef 100644 --- a/companion/src/simulation/simulatorwidget.h +++ b/companion/src/simulation/simulatorwidget.h @@ -33,8 +33,6 @@ #include #include -void traceCb(const char * text); - class Firmware; class SimulatorInterface; class SimulatedUIWidget; @@ -130,9 +128,9 @@ class SimulatorWidget : public QWidget QVector keymapHelp; QElapsedTimer m_heartbeatTimer; - SimulatedUIWidget * radioUiWidget; - VirtualJoystickWidget * vJoyLeft; - VirtualJoystickWidget * vJoyRight; + SimulatedUIWidget * radioUiWidget = nullptr; + VirtualJoystickWidget * vJoyLeft = nullptr; + VirtualJoystickWidget * vJoyRight = nullptr; QVector m_radioWidgets; QString sdCardPath; @@ -141,14 +139,13 @@ class SimulatorWidget : public QWidget Board::Type m_board; quint8 flags; int radioProfileId; - bool startupFromFile; - bool deleteTempRadioData; - bool saveTempRadioData; + bool startupFromFile = false; + bool deleteTempRadioData = false; + bool saveTempRadioData = false; #ifdef JOYSTICKS - Joystick *joystick; + Joystick * joystick = nullptr; #endif - }; #endif // _SIMULATORWIDGET_H_ diff --git a/companion/src/storage/rlefile.cpp b/companion/src/storage/rlefile.cpp index 82cbf5bbf..b4d9da611 100644 --- a/companion/src/storage/rlefile.cpp +++ b/companion/src/storage/rlefile.cpp @@ -86,7 +86,7 @@ void RleFile::EeFsCreate(uint8_t *eeprom, int size, Board::Type board, unsigned } else { eeFs = (EeFs *)eeprom; - eeFsVersion = (IS_2560(board) || board==Board::BOARD_M128) ? 5 : 4; + eeFsVersion = (IS_2560(board) || board==Board::BOARD_9X_M128) ? 5 : 4; eeFsBlockSize = 16; eeFsLinkSize = 1; diff --git a/companion/src/tests/CMakeLists.txt b/companion/src/tests/CMakeLists.txt index a7666afeb..e66b41fd2 100644 --- a/companion/src/tests/CMakeLists.txt +++ b/companion/src/tests/CMakeLists.txt @@ -1,7 +1,4 @@ -set(GTEST_ROOT /usr CACHE STRING "Base path to Google Test headers and source.") -find_path(GTEST_INCDIR gtest/gtest.h HINTS "${GTEST_ROOT}/include" DOC "Path to Google Test header files folder ('gtest/gtest.h').") -find_path(GTEST_SRCDIR src/gtest-all.cc HINTS "${GTEST_ROOT}" "${GTEST_ROOT}/src/gtest" DOC "Path of Google Test 'src' folder.") if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) add_library(gtests-companion-lib STATIC EXCLUDE_FROM_ALL ${GTEST_SRCDIR}/src/gtest-all.cc ) diff --git a/companion/src/tests/conversions.cpp b/companion/src/tests/conversions.cpp index 0d6b34272..bee7b9520 100644 --- a/companion/src/tests/conversions.cpp +++ b/companion/src/tests/conversions.cpp @@ -10,12 +10,10 @@ TEST(Conversions, ConversionX9DPFrom22) RadioData radioData; Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_x9d+.bin"); - ASSERT_EQ(true, store.load(radioData)); - ASSERT_EQ(true, store.load(radioData)); const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), settings.customFn[0].swtch); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); EXPECT_EQ(FuncLogs, settings.customFn[0].func); EXPECT_EQ(20, settings.customFn[0].param); @@ -24,10 +22,16 @@ TEST(Conversions, ConversionX9DPFrom22) const ModelData& model = radioData.models[0]; EXPECT_STREQ("Test", model.name); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_SA0), model.timers[0].mode); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model.timers[0].mode); EXPECT_EQ(80, model.mixData[0].weight); EXPECT_EQ(900, model.limitData[0].max); // -100 EXPECT_EQ(80, model.expoData[0].weight); + + EXPECT_EQ(CurveReference::CURVE_REF_CUSTOM, model.expoData[0].curve.type); + EXPECT_EQ(1, model.expoData[0].curve.value); + EXPECT_EQ(CurveReference::CURVE_REF_EXPO, model.expoData[1].curve.type); + EXPECT_EQ(20, model.expoData[1].curve.value); + EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); EXPECT_EQ(10, model.flightModeData[0].gvars[0]); EXPECT_STREQ("Tes", model.gvarData[0].name); @@ -42,6 +46,60 @@ TEST(Conversions, ConversionX9DPFrom22) EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model.logicalSw[0].val1); } +TEST(Conversions, ConversionX9DPFrom23) +{ + RadioData radioData; + Storage store = Storage(RADIO_TESTS_PATH "/eeprom_23_x9d+.bin"); + + ASSERT_EQ(true, store.load(radioData)); + + const GeneralSettings& settings = radioData.generalSettings; + EXPECT_EQ(20, settings.speakerVolume); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); + EXPECT_EQ(FuncLogs, settings.customFn[0].func); + EXPECT_EQ(20, settings.customFn[0].param); + + EXPECT_STREQ("Tes", settings.switchName[0]); + EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); + + const ModelData & model1 = radioData.models[0]; + EXPECT_STREQ("Test", model1.name); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model1.timers[0].mode); + EXPECT_EQ(80, model1.mixData[0].weight); + EXPECT_EQ(900, model1.limitData[0].max); // -100 + EXPECT_EQ(80, model1.expoData[0].weight); +// EXPECT_EQ(HELI_SWASH_TYPE_120X, model1.swashRingData.type); + EXPECT_EQ(10, model1.flightModeData[0].gvars[0]); + EXPECT_STREQ("Tes", model1.gvarData[0].name); + EXPECT_EQ(PULSES_ACCST_ISRM_D16, model1.moduleData[0].protocol); + EXPECT_EQ(PULSES_PXX_R9M, model1.moduleData[1].protocol); + EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, model1.moduleData[1].subType); + EXPECT_STREQ("Rud", model1.inputNames[0]); + EXPECT_STREQ("Tes", model1.sensorData[0].label); + EXPECT_EQ(10, model1.sensorData[0].id); + EXPECT_EQ(10, model1.sensorData[0].instance); + EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model1.logicalSw[0].val1); + + const ModelData & model2 = radioData.models[1]; + EXPECT_STREQ("Test", model2.name); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_SWITCH, SWITCH_SA0), model2.timers[0].mode); + EXPECT_EQ(80, model2.mixData[0].weight); + EXPECT_EQ(900, model2.limitData[0].max); // -100 + EXPECT_EQ(80, model2.expoData[0].weight); +// EXPECT_EQ(HELI_SWASH_TYPE_120X, model2.swashRingData.type); + EXPECT_EQ(10, model2.flightModeData[0].gvars[0]); + EXPECT_STREQ("Tes", model2.gvarData[0].name); + EXPECT_EQ(PULSES_ACCESS_ISRM, model2.moduleData[0].protocol); + EXPECT_EQ(0, model2.moduleData[0].subType); + EXPECT_EQ(PULSES_PXX_R9M, model2.moduleData[1].protocol); + EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, model2.moduleData[1].subType); + EXPECT_STREQ("Rud", model2.inputNames[0]); + EXPECT_STREQ("Tes", model2.sensorData[0].label); + EXPECT_EQ(10, model2.sensorData[0].id); + EXPECT_EQ(10, model2.sensorData[0].instance); + EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model2.logicalSw[0].val1); +} + TEST(Conversions, ConversionX7From22) { RadioData radioData; @@ -50,7 +108,7 @@ TEST(Conversions, ConversionX7From22) ASSERT_EQ(true, store.load(radioData)); const GeneralSettings& settings = radioData.generalSettings; - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), settings.customFn[0].swtch); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); EXPECT_EQ(FuncLogs, settings.customFn[0].func); EXPECT_EQ(20, settings.customFn[0].param); @@ -66,7 +124,7 @@ TEST(Conversions, ConversionX7From22) EXPECT_EQ(80, model.expoData[0].weight); EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[4].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), model.mixData[4].swtch); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[4].swtch); EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); EXPECT_STREQ("Thr", model.inputNames[0]); @@ -90,6 +148,48 @@ TEST(Conversions, ConversionX7From22) EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); } +TEST(Conversions, ConversionXLiteFrom22) +{ + RadioData radioData; + Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_xlite.bin"); + + ASSERT_EQ(true, store.load(radioData)); + + const GeneralSettings& settings = radioData.generalSettings; + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); + EXPECT_EQ(FuncLogs, settings.customFn[0].func); + EXPECT_EQ(20, settings.customFn[0].param); + + EXPECT_STREQ("Tes", settings.switchName[0]); + EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); + + const ModelData& model = radioData.models[0]; + EXPECT_STREQ("Test", model.name); + EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); + EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); + + EXPECT_EQ(80, model.mixData[0].weight); + EXPECT_EQ(80, model.expoData[0].weight); + + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[4].srcRaw); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[4].swtch); + EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); + EXPECT_STREQ("Thr", model.inputNames[0]); + + EXPECT_STREQ("Tes", model.sensorData[0].label); + EXPECT_EQ(10, model.sensorData[0].id); + EXPECT_EQ(8, model.sensorData[0].instance); + EXPECT_EQ(900, model.limitData[0].max); // -100 + + EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); + EXPECT_EQ(0, model.logicalSw[0].val2); + + const FrSkyScreenData& screen = model.frsky.screens[0]; + EXPECT_EQ(TELEMETRY_SCREEN_NUMBERS, screen.type); + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), screen.body.lines[0].source[0]); + EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); +} bool loadFile(QByteArray & filedata, const QString & filename) { @@ -136,13 +236,13 @@ TEST(Conversions, ConversionX10From22) EXPECT_STREQ("en", settings.ttsLanguage); EXPECT_STREQ("model1.bin", settings.currModelFilename); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), settings.customFn[0].swtch); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); EXPECT_EQ(FuncLogs, settings.customFn[0].func); EXPECT_EQ(20, settings.customFn[0].param); EXPECT_EQ(RawSwitch(SWITCH_TYPE_ON), settings.customFn[1].swtch); EXPECT_EQ(FuncVolume, settings.customFn[1].func); - EXPECT_EQ(RawSource(SOURCE_TYPE_STICK,4+5+1).toValue(), settings.customFn[1].param); // RS + EXPECT_EQ(RawSource(SOURCE_TYPE_STICK, 4+5+1).toValue(), settings.customFn[1].param); // RS EXPECT_STREQ("Tes", settings.switchName[0]); EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); @@ -163,21 +263,98 @@ TEST(Conversions, ConversionX10From22) EXPECT_EQ(0, model.beepANACenter); EXPECT_EQ(80, model.mixData[0].weight); EXPECT_EQ(RawSource(SOURCE_TYPE_MAX), model.mixData[2].srcRaw); // MAX - EXPECT_EQ(RawSource(SOURCE_TYPE_STICK,4+5), model.mixData[3].srcRaw); // LS - EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[5].srcRaw); - EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), model.mixData[5].swtch); + EXPECT_EQ(RawSource(SOURCE_TYPE_STICK, 4+5), model.mixData[3].srcRaw); // LS + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM, 0), model.mixData[5].srcRaw); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[5].swtch); EXPECT_EQ(900, model.limitData[0].max); // -100 EXPECT_EQ(80, model.expoData[0].weight); EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); // TR1 EXPECT_EQ(0, model.logicalSw[0].val2); - EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,19*3).toValue(), model.logicalSw[1].val1); // TELE:20 + EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY, 19*3).toValue(), model.logicalSw[1].val1); // TELE:20 EXPECT_EQ(20, model.logicalSw[1].val2); EXPECT_EQ(RawSwitch(SWITCH_TYPE_VIRTUAL,1).toValue(), model.logicalSw[1].andsw); EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); EXPECT_STREQ("Tes", model.flightModeData[0].name); EXPECT_EQ(10, model.flightModeData[0].gvars[0]); EXPECT_STREQ("Tes", model.gvarData[0].name); + EXPECT_EQ(PULSES_PXX_XJT_D8, model.moduleData[0].protocol); + EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); + EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); + EXPECT_STREQ("Rud", model.inputNames[0]); + EXPECT_STREQ("Tes", model.sensorData[0].label); + EXPECT_EQ(10, model.sensorData[0].id); + EXPECT_EQ(9, model.sensorData[0].instance); + EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3 +} + +TEST(Conversions, ConversionX12SFrom22) +{ + QByteArray byteBuffer; + +#define USE_OTX + +#if defined(USE_OTX) + OtxFormat otx(RADIO_TESTS_PATH "/model_22_x12s.otx"); + RadioData radio; + EXPECT_EQ(true, otx.load(radio)); + + const GeneralSettings& settings = radio.generalSettings; + const ModelData& model = radio.models[0]; +#else + ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x12s/RADIO/radio.bin")); + + GeneralSettings settings; + EXPECT_NE(nullptr, loadRadioSettingsFromByteArray(settings, byteBuffer)); +#endif + + EXPECT_EQ(-30, settings.vBatMin); + EXPECT_EQ(20, settings.speakerVolume); + EXPECT_STREQ("en", settings.ttsLanguage); + EXPECT_STREQ("model1.bin", settings.currModelFilename); + + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), settings.customFn[0].swtch); + EXPECT_EQ(FuncLogs, settings.customFn[0].func); + EXPECT_EQ(20, settings.customFn[0].param); + + EXPECT_EQ(RawSwitch(SWITCH_TYPE_ON), settings.customFn[1].swtch); + EXPECT_EQ(FuncVolume, settings.customFn[1].func); + EXPECT_EQ(RawSource(SOURCE_TYPE_STICK, 4+5+1).toValue(), settings.customFn[1].param); // RS + + EXPECT_STREQ("Tes", settings.switchName[0]); + EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); + + EXPECT_STREQ("BT", settings.bluetoothName); + EXPECT_STREQ("Default", settings.themeName); + +#if !defined(USE_OTX) + byteBuffer.clear(); + ASSERT_EQ(true, loadFile(byteBuffer, RADIO_TESTS_PATH "/model_22_x10/MODELS/model1.bin")); + + ModelData model; + ASSERT_NE(nullptr, loadModelFromByteArray(model, byteBuffer)); +#endif + + EXPECT_STREQ("Test", model.name); + EXPECT_EQ(0, model.noGlobalFunctions); + EXPECT_EQ(0, model.beepANACenter); + EXPECT_EQ(80, model.mixData[0].weight); + EXPECT_EQ(RawSource(SOURCE_TYPE_MAX), model.mixData[2].srcRaw); // MAX + EXPECT_EQ(RawSource(SOURCE_TYPE_STICK, 4+5), model.mixData[3].srcRaw); // LS + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM, 0), model.mixData[5].srcRaw); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[5].swtch); + EXPECT_EQ(900, model.limitData[0].max); // -100 + EXPECT_EQ(80, model.expoData[0].weight); + EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); // TR1 + EXPECT_EQ(0, model.logicalSw[0].val2); + EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY, 19*3).toValue(), model.logicalSw[1].val1); // TELE:20 + EXPECT_EQ(20, model.logicalSw[1].val2); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_VIRTUAL,1).toValue(), model.logicalSw[1].andsw); + EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); + EXPECT_STREQ("Test", model.flightModeData[0].name); + EXPECT_EQ(10, model.flightModeData[0].gvars[0]); + EXPECT_STREQ("Tes", model.gvarData[0].name); EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); EXPECT_STREQ("Rud", model.inputNames[0]); diff --git a/companion/src/translations/companion_cs.ts b/companion/src/translations/companion_cs.ts index 4a9f97076..d309f5076 100644 --- a/companion/src/translations/companion_cs.ts +++ b/companion/src/translations/companion_cs.ts @@ -57,6 +57,38 @@ <br>Druhý kanál brzdících klapek: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + Chcete zobrazit toto upozornění i příště ? + + AppPreferencesDialog @@ -70,32 +102,32 @@ Profil rádia - + Default Channel Order Výchozí pořadí kanálů - + Build Options Volby sestavení firmware - + Menu Language Jazyk menu - + Default Stick Mode Výchozí mód vysílačky - + Select Image Vybrat obrázek - + Mode selection: Mode 1: @@ -136,528 +168,526 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mód1 (Směr.Výšk.Plyn.Křid) - + Mode 2 (RUD THR ELE AIL) Mód2 (Směr.Plyn.Výšk.Křid) - + Mode 3 (AIL ELE THR RUD) Mód3 (Křid.Výšk.Plyn.Směr) - + Mode 4 (AIL THR ELE RUD) Mód4 (Křid.Plyn.Výšk.Směr) - + Splash Screen Úvodní logo - - + + The profile specific folder, if set, will override general Backup folder Specifická složka profilu, pokud je nastavena, bude použita místo výchozí složky z nastavení aplikace - + Backup folder Složka pro zálohy - + If set it will override the application general setting Pokud je nastavena, bude použita místo výchozí složky z nastavení aplikace - + if set, will override general backup enable Pokud je nastaveno, bude použito místo výchozí volby z nastavení aplikace - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Pořadí kanálů</p><p><br/></p><p>Definuje výchozí pořadí kanálů použité při vytvoření nového modelu.</p></body></html> - + R E T A S V P K - + R E A T S V K P - + R T E A S P V K - + R T A E S P K V - + R A E T S K V P - + R A T E S K P V - + E R T A V S P K - + E R A T V S K P - + E T R A V P S K - + E T A R V P K S - + E A R T V K S P - + E A T R V K P S - + T R E A P S V K - + T R A E P S K V - + T E R A P V S K - + T E A R P V K S - + T A R E P K S V - + T A E R P K V S - + A R E T K S V P - + A R T E K S P V - + A E R T K V S P - + A E T R K V P S - + A T R E K P S V - + A T E R K P V S - - - - - - + + + + + + Select Folder Vybrat složku - + Select Executable Vybrat - - Simulator Volume Gain - Zisk hlasitosti simulátoru - - - - Profile Name - Název profilu - - - - Clear Image - Odstranit - - - - Append version number to FW file name - Přidat číslo verze do názvu souboru staženého firmwaru - - - - Offer to write FW to Tx after download - Po stažení firmwaru nabídnout okamžité zapsání do rádia - - - - Radio Type - Typ rádia - - - - Set voice language. -May be different from firmware language - Vyberte jazykovou verzi hlasu tts(voice). -Může být jiná než verze firmwaru - - - - Other Settings - Ostatní volby - - - - General Settings - Obecná nastavení - - - - SD Structure path - Cesta k obsahu SD karty - - - - Voice Language - Jazyk hlasových zpráv - - - - Application Settings - Nastavení aplikace - - - - Show splash screen when Companion starts - Zobrazit úvodní logo Companion - - - - Automatic check for Companion updates - Automatická kontrola aktualizací Companion - - - - - Enable automatic backup before writing firmware - Automatická záloha před zápisem firmwaru - - - - Automatic check for OpenTX firmware updates - Automatická kontrola aktualizací OpenTX firmwaru - - - - Splash Screen Library - Knihovna s úvodními logy - - - - Google Earth Executable - Spustitelný soubor Google Earth - - - - Only show user splash images - Zobrazit jen vlastní loga - - - - Show user and companion splash images - Zobrazit vlastní loga i loga Companion - - - - User Splash Screens - Cesta k vlastním souborům - - - - Automatic Backup Folder - Složka pro automatické zálohy - - - - Simulator Settings - Nastavení simulátoru - - - - Simulator BackLight - Barva podsvětlení Simu - - - - Enable - Povolit - - - - Action on New Model - Vytvoření nového modelu - - - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - <html><head/><body><p>Tato možnost zachovává chování ze starších verzí OpenTx, kde jsou prázdné pozice modelů zachovány při vymazání nebo přesunutí modelu.</p></body></html> - - - - Use releases (stable) + + Release channel - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - - most recently used files - - - - - Startup Settings - - - - - Remember - - - - - Output Logs Folder - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - Odstranění prázdných pozic při mazání modelů (pouze pro rádia bez kategorií) - - - - Use model wizard - Použít průvodce - - - - Open model editor - Otevřít editor modelu - - - - Just create the model - Jen vytvořit model - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + Zisk hlasitosti simulátoru + + + + Profile Name + Název profilu + + + + Clear Image + Odstranit + + + + Append version number to FW file name + Přidat číslo verze do názvu souboru staženého firmwaru + + + + Offer to write FW to Tx after download + Po stažení firmwaru nabídnout okamžité zapsání do rádia + + + + Radio Type + Typ rádia + + + + Other Settings + Ostatní volby + + + + General Settings + Obecná nastavení + + + + SD Structure path + Cesta k obsahu SD karty + + + + Application Settings + Nastavení aplikace + + + + Show splash screen when Companion starts + Zobrazit úvodní logo Companion + + + + Automatic check for Companion updates + Automatická kontrola aktualizací Companion + + + + + Enable automatic backup before writing firmware + Automatická záloha před zápisem firmwaru + + + + Automatic check for OpenTX firmware updates + Automatická kontrola aktualizací OpenTX firmwaru + + + + Splash Screen Library + Knihovna s úvodními logy + + + + Google Earth Executable + Spustitelný soubor Google Earth + + + + Only show user splash images + Zobrazit jen vlastní loga + + + + Show user and companion splash images + Zobrazit vlastní loga i loga Companion + + + + User Splash Screens + Cesta k vlastním souborům + + + + Automatic Backup Folder + Složka pro automatické zálohy + + + + Simulator Settings + Nastavení simulátoru + + + + Simulator BackLight + Barva podsvětlení Simu + + + + Enable + Povolit + + + + Action on New Model + Vytvoření nového modelu + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + <html><head/><body><p>Tato možnost zachovává chování ze starších verzí OpenTx, kde jsou prázdné pozice modelů zachovány při vymazání nebo přesunutí modelu.</p></body></html> + + + + most recently used files + + + + + Startup Settings + + + + + Remember + + + + + Output Logs Folder + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + Odstranění prázdných pozic při mazání modelů (pouze pro rádia bez kategorií) + + + + Use model wizard + Použít průvodce + + + + Open model editor + Otevřít editor modelu + + + + Just create the model + Jen vytvořit model + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Blue Modrá - + Green Zelená - + Red Červená - + Orange Oranžová - + Yellow Žlutá - + Screenshot capture folder - + Joystick - + Calibrate Kalibrovat - + Only capture to clipboard Kopírovat pouze do schránky - + Remember simulator switch values Pamatovat si polohy přepínačů v simulátoru - + My Radio Moje rádio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Vyberat složku pro snímky obrazovky simulátoru - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found Joystick nenalezen - + EMPTY: No radio settings stored in profile PRÁZDNÉ: V profilu nejsou uložena žádná nastavení rádia - + AVAILABLE: Radio settings of unknown age DOSTUPNÉ: Nastavení rádia jsou neznámého stáří - + AVAILABLE: Radio settings stored %1 DOSTUPNÉ: Nastavení rádia jsou uložena %1 - + Select your library folder Vyberat složkus s logy - - + + Select your Models and Settings backup folder Zvolit složku pro automatické zálohy modelů a nastavení - + Select a folder for application logs - + Select Google Earth executable Zvolit spustitelnou binárku aplikace Google Earth - + Select the folder replicating your SD structure Vyberat složku která představuje obsah SD karty rádia - + Open Image to load Otevřít soubor s logem - + Images (%1) Obrázky (%1) @@ -670,25 +700,25 @@ Může být jiná než verze firmwaru - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. Chyba při zápisu souboru %1: %2. - + Invalid binary EEPROM file %1 @@ -696,57 +726,58 @@ Může být jiná než verze firmwaru Boards - + Left Horizontal Levá horizontální - + Left Vertical Levá vertikální - + Right Vertical Pravá vertikální - + Right Horizontal Pravá horizontální - + Aux. 1 - + Aux. 2 - + + Unknown Neznámý - + Rud Směrovka - + Ele Výškovka - + Thr - + Plyn - + Ail Křidélka @@ -795,82 +826,82 @@ Může být jiná než verze firmwaru Channels - + Name Název - + Min - + Max - + Subtrim - + Direction Invertovat - + Curve Křivka - + PPM Center Střed - + Linear Subtrim Symetrický - + CH%1 - + Popup menu available - + --- - + INV - + &Copy &Kopírovat - + &Cut - + &Paste &Vložit - + &Delete @@ -883,27 +914,32 @@ Může být jiná než verze firmwaru - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -957,85 +993,193 @@ Může být jiná než verze firmwaru %2. + + + Line %1, Col %2 + + Companion - + OpenTX Companion - + Information - + Warning - + Varování - + Error Chyba - - Please Confirm - + + Application Settings + Nastavení aplikace - + files soubory - + Radio and Models settings Nastavení rádia a modelů - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. <p><b>Vítejte v aplikaci OpenTX %1.</b></p><p>Jako první krok, nastavte počáteční profil rádia výběrem typu rádia, jazyka a předvoleb vlastností firmware.</p><p>Projdéte také další dostupné možnosti nastavení v zobrazeném dialogovém okně Nastavení.</p><p>Po uložení nastavení doporučujeme stáhnout nejnovější firmware vašeho rádia pomocí <i>Soubor -&gt; Stáhnout</i></p><p>Pro nejnovější zprávy, aktualizace a další informace navštivte <a href='http://www.open-tx.org'>open-tx.org</a> Děkujeme, že jste si vybrali OpenTX! </p>- Tým OpenTX. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. <p><b>Děkujeme, že jste aktualizovali na OpenTX %1.</b></p><p>Toto je hlavní upgrade, který přidává a upravuje spoustu věcí, takže se pečlivě seznamte se změnami a důkladně zkontrolujte všechny modely.</p><p>Navštivte prosím <a href='http://www.open-tx.org'>open-tx.org</a> pro poznámky k vydání a další dokumentaci.</p>- Tým OpenTX. - - We have found existing settings for Companion version: %1. -Do you want to import them? + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available Simulátor pro tuto verzi firmware zatím není dostupný - + Uknown error during Simulator startup. Neznámá chyba během spuštění simulace. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1050,37 +1194,42 @@ Do you want to import them? Chcete-li porovnat modely, přetáhněte je do tohoto okna. - + Close Zavřít - + + Style + + + + Print Tisk - + Print to file Tisk do souboru - + Unnamed Model %1 Nepojmenovaný model %1 - + Click to remove this model. Kliněte pro odstranění tohoto modelu. - + Print Document Vytisknout dokument - + Select PDF output file Vyberte cílový PDF soubor @@ -1171,22 +1320,22 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) CurveGroup - + Diff Diferenciace - + Expo Exponenciála - + Func Funkce - + Curve Křivka @@ -1238,7 +1387,7 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) - + Curve type Typ křivky @@ -1248,47 +1397,52 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) Generátor křivek - + Y at X=0 Y v X=0 - + + Point size + + + + Y at X=100 Y v X=100 - + Both Obě - + x>0 - + x<0 - + Apply Vygenerovat - + Side Strana - + Y at X=-100 Y v X=-100 - + Coefficient Koeficient @@ -1298,72 +1452,77 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) Název křivky - + Curve %1 Křivka %1 - + + Popup menu available + + + + %1 points %1 bodů - + Linear Lineární - + Single Expo Expo - + Symmetrical f(x)=-f(-x) Symetrická f(x)=-f(-x) - + Symmetrical f(x)=f(-x) Symetrická f(x)=f(-x) - + Copy Kopírovat - + Paste Vložit - + Clear Vymazat - + Clear all curves Vymazat všechny křivky - + Are you sure you want to reset curve %1? Opravdu chcete vymazat křivku %1? - + Are you sure you want to reset all curves? Opravdu chcete vymazat všechny křivky? - + Editing curve %1 Upravit křivku k%1 - + Not enough free points in EEPROM to store the curve. V nastavení modelu již nejsou volné body k uložení této křivky. @@ -1371,244 +1530,234 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) CustomFunctionData - + GF - + SF - + Override %1 Zámek %1 - + Trainer Trenér - + Trainer RUD Trenér - směrovka - + Trainer ELE Trenér - výškovka - + Trainer THR Trenér - plyn - + Trainer AIL Trenér - křidélka - + Instant Trim - + Play Sound Přehrát zvuk - + Haptic Vibrovat - + Reset - + Set Timer %1 Nastav Timer %1 - + Vario - + Play Track Hrát stopu - + Play Both Přehrát pár - + Play Value Přehrát hodnotu - + Play Script Spustit skript - + SD Logs SD logy - + Volume Hlasitost - + Backlight Podsvětlení - + Screenshot Snímek LCD - + Background Music Hudba na pozadí - + Background Music Pause Hudba na pozadí -pozastavit - + Adjust %1 - + SetFailsafe Int. Module Nastavit Failsafe vnitř. modulu - + SetFailsafe Ext. Module Nastavit Failsafe ext. modulu - + RangeCheck Int. Module Test dosahu vnitř. modulu - + RangeCheck Ext. Module Test dosahu ext. modulu - + Bind Int. Module Bind vnitř. modulu - + Bind Ext. Module Bind ext. modulu - + Timer1 Stopky1 - + Timer2 Stopky2 - + Timer3 Stopky3 - + Flight Let - + Telemetry Telemetrie - + Rotary Encoder Rotační enkodér - + REa Otočný enkodér REa - + REb Otočný enkodér REb - + s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>parametr není konzistentní</b></font> - + Value Hodnota - - Decr: - Zmenšit: - - - - Incr: - Zvětšit: - - - + played once, not during startup přehrát jednou, ale ne po startu - + repeat(%1s) opakovat(%1s) - + DISABLED ZAKÁZÁN - + CFN @@ -1636,63 +1785,74 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) Povolit - + + Popup menu available + + + + SF%1 - + GF%1 - + ON Překlad se do formuláře nevejde. Zap - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Hodnota - + Source Zdroj - + GVAR Proměnná - + Increment Upravit - - Unable to find sound file %1! - Nemohu nalézt zvukový soubor %1! - - - + &Delete &Odstranit - + &Copy &Kopírovat - + &Cut V&yjmout - + &Paste &Vložit @@ -1855,69 +2015,53 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) DataField - + Conversion error on field %1 - + Switch Spínač - + Switch Spínač - + cannot be exported on this board! -na této desce nelze exportovat! - + Source Zdroj - + Source %1 cannot be exported on this board! Zdroj %1 nelze na této desce exportovat! - + OpenTX only accepts %1 points in all curves V OpenTX je možné zadat pouze %1 bodů dohromady ve všech křivkách - + OpenTx only accepts %1 points in all curves V OpenTX je možné zadat pouze %1 bodů dohromady ve všech křivkách - - - - - - + + OpenTX on this board doesn't accept this function OpenTX nepodporuje tuto funkci na této zákl. desce - - OpenTX doesn't accept this telemetry protocol - OpenTX nepodporuje tento protokol - - - - OpenTX doesn't allow this number of channels - V OpenTX nelze použít tento počet kanálů - - - - - + OpenTX doesn't accept this radio protocol OpenTX nepodporuje tento protokol @@ -1926,21 +2070,25 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe) DebugOutput + Debug Output Výstup ladění + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> <html><head/><body><p>Povolí nebo zakaže filtr. Pokud tlačítko nezůstane zapnuto, je pravděpodobné, že byla zadána chyba syntaxe v zadaném regulárním výrazu.</p></body></html> + Filter: Filtr: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> <html><head/><body><p>Zde vložte text filtru. Klikněte na tlačítko nápovědy / info pro podrobnosti o použití filtru.</p><p> @@ -1948,51 +2096,61 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá + Buffer: + Number of lines to keep in display. Počet řádků, které mají být zobrazeny. + Filter &Help &Nápověda Filtru + Show information about using the filter. Zobrazí informace o použití filtru. + Word &Wrap &Zalamování textu + Toggle word wrapping on/off. Zapne / vypne zalamování textu. + &Clear &Vymazat + Clear the output window of all text. Vymaže veškerý text ve výstupním okně. + Enable &Filter Povolit &Filtr + Turn the filter on/off. Zapne / vypne filtr. @@ -2007,6 +2165,24 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá Nápověda k filtru ladící konzole + + DownloadDialog + + + Downloading: + Stahuji: + + + + Unable to save the file %1: %2. + Nelze uložit soubor %1: %2. + + + + Download failed: %1. + Stažení se nezdařilo: %1. + + EEPROMInterface @@ -2081,22 +2257,17 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used Vaše rádio možná používá jiný firmware než by mělo, velikost eeprom je 4096, ale jen polovina je používána - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - Pozor! - EepeFormat @@ -2255,8 +2426,8 @@ Pokud není použito, vstup je AKTIVNÍ stále. - Click to access popup menu - Klepnutím otevřete místní nabídku + Popup menu available + @@ -2355,285 +2526,443 @@ Pokud není použito, vstup je AKTIVNÍ stále. Kanál klonění: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + Jak naložit s přepisem souborů, které již existují v cílové složce. + + + + Copy only if newer and different (compare contents) + Kopírovat pouze v případě, že je novější a odlišné (porovnání obsahu) + + + + Copy only if newer (do not compare contents) + Kopírovat pouze v případě, že je novější (neporovnává obsah) + + + + Copy only if different (ignore file time stamps) + Kopírovat pouze v případě, že jsou odlišné (ignoruje časové razítko) + + + + Always copy (force overwite existing files) + Vždy kopíruje (vymaže existující soubory) + + + + Any size + Jakákoliv + + + + Skip files larger than this size. Enter zero for unlimited. + Přeskočí soubory větší než tato velikost. Zadejte nulu pro neomezené. + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + Pouze testování + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + Běží jako normálně, ale nic nekopíruje. Užitečné pro ověření výsledků před reálnou synchronizací. + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Zavřít + + + + Sync. Direction: + Směr synchronizace: + + + + Existing Files: + Existující soubory: + + + + Max. File Size: + Max. velikost souboru: + + + + MB + + + + + KB + + + + + Abort + + + + + Start + První kanál + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Hodnoty kanálů budou zobrazeny v us (mikrosekundy) místo procent - + No OverrideCH functions available Funkce Zámek kanálu není dostupná - + Possibility to enable FAI MODE (no telemetry) at field Možnost povolit FAI MODE v menu rádia. FAI je soutěžní mód (www.fai.org), zablokuje vario, zobrazení telemetrie a funkce hlasového hlášení. - + FAI MODE (no telemetry) always enabled FAI MODE vždy aktivní (nelze vypnout v menu rádia) FAI je soutěžní mód (www.fai.org), zablokuje vario, zobrazení telemetrie a funkce hlasového hlášení. - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + + Disable HELI menu and cyclic mix support Odstranit funkce pro heli a nastavení typu mechaniky - + + Disable Global variables Odstranit Globální proměnné - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font Použít alternativní znakovou sadu písma (jiný font) - - ST7565P LCD or compatible - ST7565P LCD a kompatibilní - - - - ST7565R LCD or compatible - ST7565R LCD a kompatibilní - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - Podpora frsky telemetrie tj. zobrazení telemetrických dat na displeji rádia -(je potřeba upravit HW, bez této úpravy nebudou fungovat dva přepínače! -a pochopitelně nebudou zobrazena žádná telem. data.) - - - - Support for telemetry easy board - Podpora pro desku TelemetrEZ - - - - - Support for jeti telemetry mod - Podpora telemetrie JETI - - - - - Support for receiving ardupilot data - telemetrie - podpora pro příjem ardupilot dat - - - - - Support for receiving NMEA data - telemetrie - podpora pro příjem NMEA dat - - - - - Support for MAVLINK devices - Podpora pro zařízení s MAVLINK - - - - Rotary Encoder use in menus navigation - Použít Rotary Encoder pro navigaci v menu - - - - - - - - - + Pots use in menus navigation Moznost zadávat hodnoty a pohybovat se v menu pomocí potenciometrů - - - - - - Support for DSM2 modules - Podpora DSM2 modulů - - - - Support for DSM2 modules using ppm instead of true serial - Podpora DSM2 modulů s použitím PPM místo sériového protokolu - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack Podpora pro upravený vnitřní modul v režimu PPM - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D - + Haptic module installed Podpora pro vibrační modul - + FrSky Taranis X9E - + Confirmation before radio shutdown Přidá potvrzování před vypnutím rádia - + Horus gimbals installed (Hall sensors) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support Funkce pro heli, nastavení typu mechaniky - - - - - - - - - - No flight modes - Firmware nebude obsahovat podporu Letových Režimů - - - - - - - - - - - + Global variables Aktivuje Globální Proměnné Jsou to proměnné, které lze použít pro konfiguraci místo některých pevných číselných hodnot. @@ -2642,69 +2971,29 @@ Jejich hodnoty naleznete u originální 9x desky v seznamu křivek. U ostatních Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Funkce - - - - - - - - - + In model setup menus automatically set source by moving the control Výběr spínače v mixu atd. se provádí jeho sepnutím - - - - - - - - - + In model setup menus automatically set switch by moving the control Výběr spínače v mixu atd. se provádí jeho sepnutím - - - - - - - - - + No graphical check boxes and sliders Nahrazeni posuvníku a zatržítek (checkboxu) textem - - - - - - - - - + Battery graph Grafické znázornění stavu baterie - - - - - - - - - + Don't use bold font for highlighting active items Vypnout zvýraznění aktivních mixů/spínačů tučným písmem. Pokud není tato volby vybrána, @@ -2713,194 +3002,43 @@ zobrazovány tučným pismem. Neaktivní mixy/spínače budou zobrazeny normálním písmem - - Turnigy 9XR with m128 chip + + + Support for ACCESS internal module replacement - - - - - - - Enable heli menu and cyclic mix support - Funkce pro heli, nastavení typu mechaniky - - - - - - - - - Enable TEMPLATES menu - Přidá menu s jednoduchými -šablonami modelu - - - - - - - No splash screen - Bez úvodního loga -Firmware nebude obsahovat žádné logo, ani podporu pro něj. -Toto se hodí pokud je potřeba ušetřit místo v paměti FLASH pro jiné funkce - - - - - - - - - Disable curves menus - Bez uživatelsky definovatelných křivek - - - - - - - Support for radio modified with regular speaker - Vylepšený zvukový výstup, -funkční i s origo pípákem, -ale doporučuje se provést -instalaci reproduktoru + FrSky Horus X10 Express + - - - - - - Used if you have modified your radio with voice mode - Hlasový výstup pro telemetrii, -nutno zastavět hlasový modul - - - - - - - - Used if you have modified your radio with haptic mode - Výstrahy pomocí vibračního motoru -(je třeba osadit) - - - - - - - - - PPM center adjustment in limits - Možnost nastavovat střed serva šířkou pulzu - - - - - - - - - Symetrical Limits - Symetrické limity -Přidá možnost volby mezi --klasickými limity s označením ^ -(nastavené limity jsou rovny hodnotě -100% a 100% kde průběh od středu daného subtrimem je lineární až do limitu) --symetrickými limity s označením = -(Průběhy kanálů budou symetrické od středu daného subtrimem na obě strany, -nastavené limity tedy nemusí být rovny hodnotě -100% a 100%, ale budou pouze maximem výchylky) - - - - - - - Enable the throttle trace in Statistics - Přidat Stopu Plynu (Throttle-trace) v panelu STATISTIKA - - - - - - - - EEprom write Progress bar - Progresbar zobrazující zápis do EEPROM -(tj. ukládání nastavení) - - - - - - - - - Imperial units - Imerialní jednotky pro telemetrii -(stopy, palce, míle atd.) - - - - Turnigy 9XR + + Jumper T12 - - No Winged Shadow How High support - Bez podpory - Winged Shadow How High + Enable non certified R9M firmwares + - - - No vario support - Bez podpory varia + + Turnigy 9XR with m128 chip + - - - No GPS support - Bez podpory GPS + + Turnigy 9XR + - - - No gauges in the custom telemetry screen - Bez grafických ukazatelů hodnoty na obrazovkách telemetrie - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Přidá podporu pro revers os kniplů. -To je nutné zejména pro osazení FrSky kniplů do 9X. - - - + 9X with stock board - - - SmartieParts 2.2 Backlight support - Podpora pro modul SmartieParts 2.2 -(programátor/podsvícení) -Není určeno pro starší verze Smartie Parts - - - - - - - - + Enable resetting values by pressing up and down at the same time Rychlé nastavení hodnoty současným stiskem dvou tlačítek. (+) a (-) invertuje hodnotu @@ -2909,58 +3047,30 @@ Není určeno pro starší verze Smartie Parts (UP) a (DN) vastaví výchozí hodnotu - - EEprom write progress bar - Progresbar zobrazující zápis do EEPROM -(tj. ukládání nastavení) - - - - Allow compensating for offset errors in FrSky FAS current sensors - Povolit možnost kompenzace chyby ofsetu u Frsky FAS proudového senzoru, pokud je to potřeba - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - Podpora paměťové karty SD - - - - - Support of FrSky PXX protocol - Podpora pro Frsky PXX protokol - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - Ovládání napájení pomocí soft-off obvodu - FirmwarePreferencesDialog @@ -2994,6 +3104,11 @@ Není určeno pro starší verze Smartie Parts Latest Download Naposledy staženo + + + Unknown + Neznámý + FlapsPage @@ -3027,7 +3142,7 @@ Není určeno pro starší verze Smartie Parts FlashEEpromDialog - + Write Models and Settings to Radio Zapsat modely a nastavení do rádia @@ -3092,51 +3207,51 @@ Není určeno pro starší verze Smartie Parts Zapsat do rádia - + Current profile: %1 Současný profil: %1 - + Choose Radio Backup file Vyberte soubor se zálohou rádia - + Wrong radio calibration data in profile, Settings not patched Profil neobsahuje platná kalibrační data, nastavení nebyla upravena - + Wrong radio setting data in profile, Settings not patched Profil neobsahuje platná data nastavení rádia, nastavení nebyla upravena - + Cannot write file %1: %2. Nelze zapsat soubor %1: %2. - + Error writing file %1: %2. Chyba při zápisu souboru %1: %2. - + The radio firmware belongs to another product family, check file and preferences! Firmware rádia je z jiné rodiny produktů , zkontrolujte nastavení předvoleb! - + The radio firmware is outdated, please upgrade! Firmware rádia je zastaralý, aktualizujte ho prosím! - + Cannot check Models and Settings compatibility! Continue anyway? Nelze ověřit kompatibilitu dat modelů a nastavení! Chcete přesto pokračovat? @@ -3323,42 +3438,42 @@ Není určeno pro starší verze Smartie Parts Spustitelný soubor %1 nebyl nalezen - + Writing... Zápis... - + Reading... Načítání... - + Verifying... Ověřování... - + unknown neznámý - + ie: OpenTX for 9X board or OpenTX for 9XR board ie: OpenTX pro desku 9X nebo OpenTX pro 9XR - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip ie: OpenTX pro M128 / 9X nebo OpenTX pro 9XR s čipem M128 - + ie: OpenTX for Gruvin9X board ie: OpenTX pro desku Gruvin9X - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3367,7 +3482,7 @@ Please check advanced burn options to set the correct cpu type. Zkontrolujte prosím rozšířená nastavení programátoru a nastavte správný typ CPU. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3376,7 +3491,7 @@ Please select an appropriate firmware type to program it. Vyberte prosím správný typ firmwaru. - + You are currently using: %1 @@ -3385,16 +3500,7 @@ Nyní používáte: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - Vaše rádio není připojeno k USB nebo není nainstalován ovladač ! - -Prosím, použijte program Zadig pro správnou instalaci ovladače. - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. Vaše rádio není připojeno k USB nebo není inicializován ovladač!. @@ -3448,82 +3554,87 @@ Prosím, použijte program Zadig pro správnou instalaci ovladače. FlightModePanel - + Rotary Encoder %1 Otočný enkodér %1 - + Name Název - + Value source Zdroj hodnot - + Value Hodnota - + GVAR%1 GP%1 - + Popup enabled Vyskakovací okno povoleno - + + Popup menu available + + + + Trim disabled Trim zakázán - + Own Trim Vlastní trim - + Use Trim from Flight mode %1 Použít trim z letového režimu %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Použít hodnotu trimu z letového režimu %1 + vlastní trim jako ofset - + Unit Jednotky - + Prec - + Min - + Max - + 0._ - + 0.0 @@ -3548,17 +3659,17 @@ Prosím, použijte program Zadig pro správnou instalaci ovladače. FlightModesPanel - + Flight Mode %1 Letový režim %1 - + (%1) - + (default) (výchozí) @@ -3584,17 +3695,17 @@ Prosím, použijte program Zadig pro správnou instalaci ovladače. FrSkyAlarmData - + Yellow Žlutá - + Orange Oranžová - + Red Červená @@ -3603,12 +3714,12 @@ Prosím, použijte program Zadig pro správnou instalaci ovladače.FrSkyChannelData - + V - + --- @@ -3758,12 +3869,12 @@ p, li { white-space: pre-wrap; } GP - + Own value Vlastní hodnota - + Flight mode %1 value Hodnota režimu LR%1 @@ -3846,7 +3957,7 @@ Tyto volby jsou platné pro všechny modely v jedné EEPROM. GeneralSettings - + Radio Settings @@ -3904,167 +4015,169 @@ Tyto volby jsou platné pro všechny modely v jedné EEPROM. - + Timeshift from UTC Časový posun od UTC - + Voice Language Jazyk hlasových zpráv - + Country Code Kód země - + Stick reverse Revers os kniplů - + FAI Mode FAI mód - + Adjust RTC Nastavit RTC - + Vario pitch at max Tón varia na maximu - - + + Hz - + Speaker Volume Hlasitost reproduktoru - + Backlight Switch Spínač podsvětlení - + Sound Mode Mód zvuku - + Color 1 Barva 1 - + Color 2 Barva 2 - + Speaker Pitch (spkr only) Tón zvuku (pouze spkr) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Pokud tato hodnota není nula, každé stisknutí klávesy zapne podsvétlení a vypne ho až po uplynutí nastaveného počtu sekund. - + + + sec s - + Backlight color Barva podsvětlení - + Beeper Bzučák - + Speaker Reproduktor - + BeeperVoice Bzučák+Hlas - + SpeakerVoice Repro+Hlas - + Beep volume Upozornění - + Wav volume Wav soubor - + Vario volume Vario - + Background volume Zvuk v pozadí - - + + ms - + Backlight Auto OFF after Auto. vypnutí podsvětlení po - + Backlight flash on alarm Blik. podsvětlením při alarmu - + Vario pitch at zero Tón varia na nule - + Vario repeat at zero Opakování varia na nule - + This is the switch selectrion for turning on the backlight (if installed). Toto je volba spínače který zapne podsvětlení (pokud je nainstalováno). - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4079,42 +4192,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Hodnoty mohou být 20-45</span></p></body></html> - + Backlight Brightness Jas podsvětlení - + RotEnc Navigation Navigace otočným enkodérem - + Automatically adjust the radio's clock if a GPS is connected to telemetry. Automaticky nastaví hodiny rádia, pokud je k telemetrii připojen GPS. - + America Amerika - + Japan Japonsko - + Europe Evropa - + Backlight OFF Brightness Jas vypnutého podsvětlení - + Mode selection: Mode 1: @@ -4155,306 +4268,347 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mód1 (Směr.Výšk.Plyn.Křid) - + Mode 2 (RUD THR ELE AIL) Mód2 (Směr.Plyn.Výšk.Křid) - + Mode 3 (AIL ELE THR RUD) Mód3 (Křid.Výšk.Plyn.Směr) - + Mode 4 (AIL THR ELE RUD) Mód4 (Křid.Plyn.Výšk.Směr) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Pořadí kanálů</p><p><br/></p><p>Definuje výchozí pořadí kanálů použité při vytvoření nového modelu.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A S V P K - + R E A T S V K P - + R T E A S P V K - + R T A E S P K V - + R A E T S K V P - + R A T E S K P V - + E R T A V S P K - + E R A T V S K P - + E T R A V P S K - + E T A R V P K S - + E A R T V K S P - + E A T R V K P S - + T R E A P S V K - + T R A E P S K V - + T E R A P V S K - + T E A R P V K S - + T A R E P K S V - + T A E R P K V S - + A R E T K S V P - + A R T E K S P V - + A E R T K V S P - + A E T R K V P S - + A T R E K P S V - + A T E R K P V S - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + Trenér + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick Mode Výchozí mód vysílačky - + Metric Metrické - + Imperial Imperiální - + Default Channel Order Výchozí pořadí kanálů - + GPS Coordinates Souřadnice GPS - + Min - - + + v V - + Max - + Inactivity Timer Časovač nečinnosti - + Show Splash Screen on Startup Zobrazit úvodní logo - + Contrast Kontrast - + Battery Meter Range Rozsah ukazatele baterie - + Haptic Strength Síla vibrací - + LCD Display Type Typ LCD zobrazovače - + "No Sound" Warning Upozornění na vypnutý zvuk - + Battery Warning Alarm baterie - + Haptic Length Délka vibrací - + MAVLink Baud Rate Přenosová rychlost MAVLink - - + + Quiet Tichý - + Only Alarms Jen alarm - - + + No Keys Bez kláves - - + + All Vše - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4463,115 +4617,115 @@ Acceptable values are 5v..10v Použitelné hodnoty jsou 5v..10v - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Pokud není nastaveno na nulu, bude zapnuto zvukové upozornění, že jste rádio nechali bez povšimnutí nastavený počet minut. - + min - - + + Show splash screen on startup Zobrazit úvodní logo při zapnutí vysílčky - + --- - + 2s - + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4586,72 +4740,67 @@ p, li { white-space: pre-wrap; } - - + + X-Short Extra krátký - - + + Short Krátký - - + + Normal Normální - - + + Long Dlouhý - - + + X-Long Extra dlouhý - - hh° (N/S) mm' ss''.dd - - - - + NMEA - + Play Delay (switch mid position) Filtr poloh přepínače - + Measurement Units Měrné jednotky - + Haptic Mode Mód vibrací - + Beeper Length Délka zvuku - + Beeper Mode Mód zvuku - + Beeper volume 0 - Quiet. No beeps at all. @@ -4668,7 +4817,7 @@ p, li { white-space: pre-wrap; } 4 - Extra Hlasitý. - + Alarms Only Jen alarmy @@ -4676,127 +4825,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF - + Vypnuto - + Keys Klávesy - + Sticks Páky - + Keys + Sticks Klávesy i páky - + ON - + Zap - + English - + - + Dutch - + - + French - + - + Italian - + - + German - + - + Czech - + - + Slovak - + - + Spanish - + - + Polish - + - + Portuguese - + - + Russian - + - + Swedish - + - + Hungarian - + - + No - + Ne - + RotEnc A Otočný enkodér :A - + Rot Enc B Otočný enkodér :B - + Rot Enc C Otočný enkodér :C - + Rot Enc D Otočný enkodér :D - + Rot Enc E Otočný enkodér :E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4829,263 +4978,247 @@ Are you sure ? - + SQ - + SR - + LS2 - + SP - + SO - + S4 S4 - + RS - + SB - + PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Hlasitost Bzučáku - -0 - Tichý.. -1 - Bez zvuku kláves.. -2 - Normální. -3 - Hlasitý. -4 - Extra Hlasitý. - - - OFF Vypnuto - + S-Port Mirror Zrcadlit S-Port - + Telemetry Telemetrie - + SBUS Trainer SBUS trenér - + Debug - + Rud Směrovka - + PPM 3 - + S1 S1 - + S2 S2 - + S3 S3 - + PPM 1 - + Serial Port Seriový port - + v - + PPM Multiplier PPM Násobič - + Current Offset Ofset proudu - + PPM 4 - + SA - + Ele Výškovka - + + Antenna + Anténa + + + + S5 + S5 + + + Ail Křidélka - + Thr Plyn - + SC - + LS - + SD - + Battery Offset Ofset baterie - + SE - + SF - + SG - + SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 - + Bluetooth - + ADC Filter ADC filtr - + Device Name: Název zařízení: @@ -5094,8 +5227,8 @@ Are you sure ? HardwarePanel - - + + None Žádný @@ -5115,25 +5248,70 @@ Are you sure ? 3 pozice - + Pot with detent Pot s aretací - + Multipos switch Vícepolohový přepínač - + Pot without detent Pot bez aretace - + Slider with detent Jezdec s aretací + + + OFF + Vypnuto + + + + Enabled + + + + + Telemetry + Telemetrie + + + + Trainer + Trenér + + + + Internal + Interní + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5256,26 +5434,26 @@ Are you sure ? InputsPanel - + Move Up Posunout nahoru - + Ctrl+Up Ctrl+Nahoru Ctrl+Up - + Move Down Posunout dolů - + Ctrl+Down Ctrl+Dolů @@ -5285,92 +5463,92 @@ Are you sure ? Vymazat všechny vstupy - + Not enough available inputs! Již nejsou další volné vstupy! - + Delete Selected Inputs? Vymazat vybrané vstupy? - + &Add &Přidat - + Ctrl+A - + &Edit &Upravit - + Enter - + &Delete V&ymazat - + Delete - + &Copy &Kopírovat - + Ctrl+C - + &Cut Vyj&mout - + Ctrl+X - + &Paste &Vložit - + Ctrl+V - + Du&plicate &Duplikovat - + Ctrl+U - + Clear Inputs? Vymazat vstupy? - + Really clear all the inputs? Opravdu chcete vymazat všechny vstupy? @@ -5527,62 +5705,67 @@ Are you sure ? LogicalSwitchesPanel - + V1 - + V2 - + Duration Trvání - + Delay Zpoždění - + Function Funkce - + AND Switch AND spínač - + + Popup menu available + + + + (instant) - + (infinite) - + &Delete Vy&mazat - + &Copy &Kopírovat - + &Cut V&yjmout - + &Paste &Vložit @@ -5676,8 +5859,8 @@ Are you sure ? - Error: no GPS data not found - Chyba: žádná data GPS nebyla nalezena + Error: no GPS data found + @@ -5689,74 +5872,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Sloupce pro nadmořskou výšku "GAlt" a pro rychlost "GSpd" jsou volitelné - + Cannot write file %1: %2. Nelze zapsat soubor %1: %2. - + Cursor A: %1 m Kurzor A: %1 m - + Cursor B: %1 m Kurzor B: %1 m - + Time delta: %1 Rozdíl času: %1 - + Climb rate: %1 m/s Rychlost stoupání: %1 m/s - + Select your log file Vyberte soubor logu - + Available fields Dostupná pole - + The selected logfile contains %1 invalid lines out of %2 total lines Zvolený soubor logu obsahuje %1neplatných řádků z celkových %2 - + total duration celkové trvání - + duration trvání - + (L1) - + (R1) - + (L2) - + (R2) @@ -5764,207 +5947,178 @@ Sloupce pro nadmořskou výšku "GAlt" a pro rychlost "GSpd" MainWindow - - + + File loaded Soubor byl načten - + Checking for updates Kontroluji aktualizace - - Unable to check for updates. - Nelze ověřit aktualizace. - - - - + + Save As Uložit jako - + Executable (*.exe) Spustitelný (*.exe) - + New release available Je dostupné nové vydání - - + + No updates available at this time. Žádné aktualizace nejsou nyní dostupné. - - + + Would you like to launch the installer? Chcete spustit instalátor? - + Error opening file %1: %2. Chyba při otevírání souboru %1: %2. - + Compilation server too busy, try later Server companion je zaneprázdněn, zkuste to později - + Unknown server failure, try later Neznámá chyba serveru, zkuste to později - + Do you want to write the firmware to the radio now ? Chcete zapsat firmware do rádia nyní? - - + + Yes Ano - - + + No Ne - - + + Release Notes Poznámky k vydání - - - Do you want to download release %1 now ? - Chcete nyní stáhnout vydání %1 ? - - - - + + File saved Soubor byl uložen - + A new version of Companion is available (version %1)<br>Would you like to download it? Je dostupná nová verze Companion (verze %1)<br>Chcete ji nyní stáhnout? - - Ignore this release %1? - Ignorovat tuto verzi %1? - - - + The new theme will be loaded the next time you start Companion. Nové téma bude použito při příštím spuštění Companion. - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> Projekt OpenTX Companion vznikl oddělením z <a href='%1'>eePe</a> - - + + Open Models and Settings file Otevřít soubor modelů a nastavení - + Read Models and Settings From Radio Načíst modely a nastavení z rádia - + Save Radio Backup to File Uložit zálohu rádia do souboru - + Read Radio Firmware to File Načíst firmware rádia do souboru - + OpenTX Home Page: <a href='%1'>%1</a> Internetová stránka OpenTX : <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Pokud vám byl tento program užitečný, podpořte jej <a href='%1'>darem</a> - + Copyright OpenTX Team - + About Companion O aplikaci Companion - + New Nový - + Open... Otevřít - + Save Uložit - + Save As... Uložit jako... - + Compare models Porovnat modely - + Exit the application Ukončit aplikaci - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - Firmware %1 ještě nebyl pravděpodobně stažen. -Vydání %2 je dostupné. -Chcete ho stáhnout nyní? - -Doporučujeme prohlédnout poznámky k vydání, pomocí tlačítka níže se dozvíte o případných změnách, které mohou být pro vás důležité. - - - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -5981,772 +6135,787 @@ Chcete firmware stáhnout nyní? Doporučujeme prohlédnout poznámky k vydání, pomocí tlačítka níže se dozvíte o případných změnách, které mohou být pro vás důležité. - - + + Synchronize SD Synchronizace SD - + A monochrome black icon theme Černé mono téma - + A monochrome white icon theme Bílé mono téma - + A monochrome blue icon theme Modré mono téma - + + No Companion release candidates are currently being served for this version, please switch release channel + + + + + No nightly Companion builds are currently being served for this version, please switch release channel + + + + + No Companion release builds are currently being served for this version, please switch release channel + + + + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + Create a new Radio Settings Profile Vytvořit nový profil nastavení rádia - + Copy Current Radio Profile Kopírovat současný profil rádia - + Duplicate current Radio Settings Profile Duplikovat současný profil rádia - + Delete Current Radio Profile... Odstranit současný profil rádia... - + Delete the current Radio Settings Profile Odstranit současný profil nastavení rádia - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Tabbed Windows Okna se záložkami - + Use tabs to arrange open windows. Pomocí záložek můžete uspořádat otevřená okna. - + Tile Windows Dlaždice - + Arrange open windows across all the available space. Uspořádá otevřená okna napříč celým volným prostorem. - + Cascade Windows Kaskádová okna - + Arrange all open windows in a stack. Uspořádá všechna otevřená okna do kaskády. - + Close All Windows Zavřít všechna okna - + Closes all open files (prompts to save if necessary. Zavře všechny otevřené soubory (v případě potřeby vás požádá o uložení). - + Window Okno - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + Small Malá - + Use small toolbar icons Použít malé ikony nástrojové lišty - + Use normal size toolbar icons Použít normální velikost ikon nástrojové lišty - + Normal Normální - + Use big toolbar icons Použít velké ikony nástrojové lišty - + Big Velká - + Use huge toolbar icons Použít největší ikony nástrojové lišty - + Huge Největší - + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + Create a new Models and Settings file Vytvořit nový soubor modelů a nastavení - - + + Save Models and Settings file Uložit soubor modelů a nastavení - + Exit Ukončit - + Classical Klasik9x - + The classic companion9x icon theme Původní téma companion9x - + Yerico - + Yellow round honey sweet icon theme Žluté medové téma - + Monochrome Mono - + MonoWhite Mono-bílé - + MonoBlue Mono-modré - + System language Výchozí jazyk prostředí - + About... O aplikaci - + View Log File... Zobrazit Log - + Open and view log file Otevře a zobrazí soubor logu rádia - + Settings... Předvolby... - + Edit Settings Upravit nastavení předvoleb - + Download... Stáhnout - + Download firmware and voice files Stáhnout firmware a hlasové soubory - + Check for Updates... Zkontrolovat aktualizace - + Check OpenTX and Companion updates Zkontrolovat aktualizace OpenTX a Companion - + Compare Models... Porovnat modely... - + Edit Radio Splash Image... Upravit úvodní logo rádia... - + Edit the splash image of your Radio Upravit úvodní grafické logo rádia - + List programmers... Seznam programátorů... - + Fuses... Pojistky mikrokontroléru... - - + + Read Firmware from Radio Načíst firmware z rádia - + Read firmware from Radio Načíst firmware z rádia - + Write Firmware to Radio Zapsat firmware do rádia - + Write firmware to Radio Zapsat firmware do rádia - + Add Radio Profile Nový profil rádia - + Manuals and other Documents Manuály a jiné dokumenty - + Open the OpenTX document page in a web browser Otevřít stránku s dokumenty OpenTX v prohlížeči - + Write Models and Settings To Radio Zapsat modely a nastavení do rádia - + Write Models and Settings to Radio Zapsat modely a nastavení do rádia - + Not enough flash available on this board for all the selected options Na této desce není k dispozici dostatek paměti pro všechny vybrané možnosti - + Compilation server temporary failure, try later Dočasné selhání kompilačního serveru, zkuste to později - + Compilation error Chyba při kompilaci - + Invalid firmware Neplatný firmware - + Invalid board Neplatný deska - + Invalid language Neplatný jazyk - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. Některé texty nebudou přeloženy dokud nerestartujete Companion. Upozorňujeme, že některé překlady nemusí být kompletní. - - + + Read Models and Settings from Radio Načíst modely a nastavení z rádia - + Diskimage (*.dmg) - + Would you like to open the disk image to install the new version? - - Show this message again at next startup? - Chcete zobrazit toto upozornění i příště ? - - - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> Je dostupná nová verze Companion, prosím navštivte <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! Žádná cesta k místní struktuře SD karty není nakonfigurována! - + No Radio or SD card detected! Rádio ani SD karta nebyla nalezena! - - - :: Options - :: Volby - - - - Local Folder: - Lokální složka: - - - - Radio Folder: - Složka rádia: - - - - Sync. Direction: - Směr synchronizace: - - - - %1%2 Both directions, to radio folder first - %1%2 Oběma směry, prvně do složky rádia - - - - %1%2 Both directions, to local folder first - %1%2 Oběma směry, prvně do místní složky - - - - %1 Only from local folder to radio folder - %1 Pouze z místní složky do složky rádia - - - - %1 Only from radio folder to local folder - %1 Pouze z rádia do místní složky - - - - Existing Files: - Existující soubory: - - - - How to handle overwriting files which already exist in the destination folder. - Jak naložit s přepisem souborů, které již existují v cílové složce. - - - - Copy only if newer and different (compare contents) - Kopírovat pouze v případě, že je novější a odlišné (porovnání obsahu) - - - - Copy only if newer (do not compare contents) - Kopírovat pouze v případě, že je novější (neporovnává obsah) - - - - Copy only if different (ignore file time stamps) - Kopírovat pouze v případě, že jsou odlišné (ignoruje časové razítko) - - - - Always copy (force overwite existing files) - Vždy kopíruje (vymaže existující soubory) - - - - Max. File Size: - Max. velikost souboru: - - - - Any size - Jakákoliv - - - - Skip files larger than this size. Enter zero for unlimited. - Přeskočí soubory větší než tato velikost. Zadejte nulu pro neomezené. - - - - Test-run only - Pouze testování - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - Běží jako normálně, ale nic nekopíruje. Užitečné pro ověření výsledků před reálnou synchronizací. - - MB - - - - - KB - - - - - Source and destination folders are the same! - Zdrojové a cílové složky jsou stejné! - - - - Source folder not found: %1 - Zdrojový adresář nebyl nalezen: %1 - - - - Destination folder not found: %1 - Cílový adresář nebyl nalezen: %1 - - - - :: Error - :: Chyba - - - - :: Progress - :: Průběh - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - Models and Settings read Modely a nastavení byly přečteny - - + + This function is not yet implemented Tato funkce ještě není implementována - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - Rádio: %2 - Profil: %3 - + Close Zavřít - + Close Models and Settings file Zavřít soubor modelů a nastavení - + List of recently used files Seznam nedávno použitých souborů - + Radio Profiles Profily rádia - + Create or Select Radio Profiles Vytvořit nebo vybrat profil nastavení rádia - + Release notes... - + Show release notes - + Configure Communications... Nastavení propojení - + Configure software for communicating with the Radio Nastavení softwaru pro komunikaci s rádiem - + Write Backup to Radio Zapsat zálohu do rádia - + Write Backup from file to Radio Zapsat zálohu ze souboru do rádia - + Backup Radio to File Zálohovat rádio do souboru - + Save a complete backup file of all settings and model data in the Radio Uložit kompletní zálohu modelů a nastavení rádia - + Contributors... Přispěvatelé - + A tribute to those who have contributed to OpenTX and Companion Hold těm, kteří přispěli k OpenTX a Companion - + - Copy .-.Kopírovat - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile Není možné odebrat profil - + The default profile can not be removed. Výchozí profil nemůže být odstraněn. - + Confirm Delete Profile Potvrďte odstranění profilu - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! Opravdu chcete smazat profil "%1"? Neexistuje žádný způsob, jak tuto akci vrátit! - + SD card synchronization Syncronizace SD karty se složkou s daty - + Use default system language. Použít výchozí systémový jazyk. - + Use %1 language (some translations may not be complete). Použije jazyk %1 (některé překlady nemusí být kompletní). - + Recent Files Nedávné soubory - + Set Icon Theme Téma ikon - + Set Icon Size Velikost ikon - + Write Zápis - + Alt+%1 - + New Radio Nové rádio - + List available programmers Seznam použitelných programátorů - + Show fuses dialog Zobrazit dialog nastavení pojistek mikrokontroléru - + Show the application's About box O aplikaci Companion - + Set Menu Language - Nastavení jazyka + Jazyka - - + + File Soubor - - + + Edit Úpravy - + Settings Nastavení - + Read/Write Čtení/Zápis - - + + Help Nápověda - + Ready Připraven - + %2 @@ -6754,86 +6923,86 @@ Do you wish to continue? MdiChild - + free bytes volné[B] - + Editing model %1: Editace modelu %1: - + Unable to find file %1! Nemohu nalézt soubor %1! - + Error opening file %1: %2. Chyba při otevírání souboru %1: %2. - + Error reading file %1: %2. Chyba při otevírání souboru %1: %2. - + Save As Uložit jako - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6843,7 +7012,7 @@ Do you wish to continue? - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6853,7 +7022,7 @@ Do you wish to continue? - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6863,164 +7032,164 @@ Do you wish to continue? - + Nothing selected Nic nevybráno - + Rename Category Přejmenovat kategorii - + Edit Model Upravit model - + Cut Vyjmout - + Copy Kopírovat - + Paste Vložit - + Insert Vložit - + Edit Radio Settings Upravit nastavení rádia - + Copy Radio Settings Kopírovat nastavení rádia Edit Radio Settings - + Paste Radio Settings Vložit nastavení rádia - + Simulate Radio Simulace Rádia - + Add Category Přidat kategorii - + Category Kategorie - + Add Model Přidat model - + Model - + Restore from Backup Obnovit ze zálohy - + Model Wizard Průvodce nastavením modelu - + Set as Default Nastavit jako výchozí - + Print Model Vytisknout model - + Simulate Model Simulovat model - + Duplicate Model Duplikovat model - + Show Category Actions Toolbar Zobrazit panel nástrojů Kategorií - + Show Radio Actions Toolbar Zobrazit panel nástrojů Rádia - + Show Model Actions Toolbar Zobrazit panel nástrojů Modelů - + New category Translators do NOT use accent for this, this is the default category name on Horus. Kategorie - + Category index out of range. Index kategorie mimo rozsah. - + Cannot delete the last category. Poslední kategorii nelze odstranit. - + Cannot insert model, last model in list would be deleted. Nelze vložit model, poslední model v seznamu by byl smazán. - + Cannot add model, could not find an available model slot. Nelze přidat model, nelze najít dostupný volný slot. - + Cannot paste model, out of available model slots. Model nelze vložit, není dostupný volný slot. - + You are replacing an existing model, are you sure? Nahrazujete stávající model, jste si jisti? - + Delete %n selected model(s)? Odstranit %n vybraný model? @@ -7029,7 +7198,7 @@ Do you wish to continue? - + Delete %n selected category(ies)? Odstranit %n vabranou kategorii? @@ -7038,95 +7207,95 @@ Do you wish to continue? - + Cannot duplicate model, could not find an available model slot. Nelze duplikovat model, nelze najít dostupný volný slot. - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Open backup Models and Settings file Otevřít zálohu modelů a nastavení rádia - + Delete Odstranit - + Move to Category Přesunout do kategorie - + Alt+S - + Do you want to overwrite radio general settings? Chcete přepsat obecná nastavení rádia? - + This category is not empty! Tato kategorie není prázdná! - + New model Translators: do NOT use accents here, this is a default model name. Model - + %1 has been modified. Do you want to save your changes? %1 byl upraven. Chcete změny uložit? - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Unable to find Horus radio SD card! Nepodařilo se najít SD kartu Horusu! - + Models and Settings written Modely a nastavení byly zapsány - + Cannot write temporary file! Nelze zapsat dočasný soubor! - + Invalid binary backup File %1 Neplatný binární soubor zálohy %1 @@ -7379,22 +7548,22 @@ p, li { white-space: pre-wrap; } MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7403,25 +7572,25 @@ p, li { white-space: pre-wrap; } MixesPanel - + Move Up Posunout nahoru - + Ctrl+Up Ctrl+Nahoru - + Move Down Posunout dolů - + Ctrl+Down Ctrl+Dolů @@ -7431,102 +7600,102 @@ p, li { white-space: pre-wrap; } Vymazat všechny mixy - + Not enough available mixers! Není k dispozici dostatek mixů! - + Delete Selected Mixes? Odstranit vybrané mixy? - + &Add &Přidat - + Ctrl+A - + &Edit &Upravit - + Enter - + &Toggle highlight Přepnout &zvýraznění - + Ctrl+T - + &Delete &Odstranit - + Delete - + &Copy &Kopírovat - + Ctrl+C - + Ctrl+X - + C&ut &Vyjmout - + &Paste &Vložit - + Ctrl+V - + Du&plicate &Duplikovat - + Ctrl+U - + Clear Mixes? Vymazat mixy? - + Really clear all the mixes? Opravdu vymazat všechny mixy? @@ -7534,12 +7703,12 @@ p, li { white-space: pre-wrap; } ModelData - + Model: - + Throttle Source Stopa plynu @@ -7610,878 +7779,784 @@ p, li { white-space: pre-wrap; } ModelPrinter - + Exponential Exponenciální - + Extra Fine Extra jemný - + Fine Jemný - + Medium Střední - + Coarse Hrubý - + Unknown Neznámý - + Slave/Jack Žák/Jack konektor - + Master/SBUS Module Učitel/SBUS modul - + Master/CPPM Module Učitel/CPPM modul - + Master/SBUS in battery compartment Učitel/SBUS konektor v šachtě baterie - + Master/Jack Učitel/Jack konektor - + Enable Povolit - + Disable - + True - + False - + Yes Ano - + No - + Ne - + Y - + N - + ON - + Zap - - - - + + + + OFF - + Vypnuto - - - - - - - - - - - - - ??? - - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - - - - - 25mW - - - - - + + Mode Mód - - + + Channels Počet kanálů - - + + Frame length - + PPM delay PPM zpoždění - - + + Polarity Polarita - + Protocol Protokol - - - + + + Delay Zpoždění - - + + Receiver Dle nastavení přijímače - + Radio protocol - + Subtype Subtyp - + Option value Volitelná hodnota - + Sub Type - + RF Output Power - - Telemetry - Telemetrie - - - - - ???? - - - - + 90 - + 120 - + 120X - + 140 - - Rudder - Směrovka - - - - Elevator - Výškovka - - - - Throttle - Plyn - - - - Aileron - Křidélka - - - + MULT! - - + + Offset - + Slow Zpomalení - + Warn - + Flight modes Letové režimy - + Flight mode Letový režim - + All Vše - + Edge - + Sticky - + Timer - + missing - + Duration Trvání - + Extended Limits Rozšířené limity (125%) - + Display Checklist Zobrazit poznámky - + Global Functions Globální funkce - + Manual - + Auto - + Failsafe Mode Režim Failsafe - - + + Hold Držet hodnotu - + No Pulse Žádné pulzy - + Not set Nenastaveno - + No pulses - + Silent Tichý - + Beeps Zvuk - + Voice - + Hlas - + Haptic Vibrovat - + Flight Let - + Manual reset - + Step - + Display - + Extended - + Never Nikdy - + On Change - + Always Vždy - - Trainer Port - Port Trenér - - - - Internal Radio System - Interní vysílací modul - - - - External Radio Module - Externí vysílací modul - - - - - Radio System - Vysílací modul - - - - Extra Radio System - Extra modul - - - - - + + + Source Zdroj - + Trim idle only - + Warning - + Varování - + Reversed - + Tmr - + FrSky S.PORT - + FrSky D - + FrSky D (cable) FrSky D (kabel) - + Alti - + Alti+ - + VSpeed - - - + + + A1 Telem. vstup A1 - - - + + + A2 Telem. vstup A2 - - + + A3 Telem. vstup A3 - - + + A4 Telem. vstup A4 - - + + FAS - + Cells - + Calculated Vypočtený - + Add Součet - + Average Průměr - - + + Min - - + + Max - + Multiply Násobení - + Totalise - + Cell Článek - + Consumption Spotřeba - + Distance - + Lowest Nejnižší - + Cell %1 Článek %1 - + Highest Nejvyšší - + Delta - + Formula - - + + Id - + Instance - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades - + Multi. - + F - + Inst - + Alt Výška - + Unit Jednotky - + Prec - + Ratio - + Multi - + A/Offset - + Filter Filtr - + Persist - + Positive Pozitivní - + Log - + Numbers Hodnoty - + Bars Ukazatele - + Script Skript - + Filename Soubor - + + Error: Unable to open or read file! + + + + Persistent Trvalé - + Off Vypnuto - - - - - - + + + + + + None Žádný - + Name Název - + Countdown Odečítat - + Minute call - - - + + + FM%1 LR%1 - + FM%1%2 LR%1%2 - + FM%1+%2 LR%1+%2 - - + + Weight Váha - - + + Switch Spínač - - + + NoTrim Žádný trim - + No DR/Expo Bez DR/Expo - + Offset(%1) Ofset(%1) - + Disabled in all flight modes Zakázáno ve všech letových režimech - + instant - - - + + + Custom Volná-XY - + Standard Rastr-X @@ -8517,7 +8592,7 @@ p, li { white-space: pre-wrap; } Module - + Failsafe Mode Režim Failsafe @@ -8527,7 +8602,7 @@ p, li { white-space: pre-wrap; } První kanál - + PPM delay PPM zpoždění @@ -8547,12 +8622,12 @@ p, li { white-space: pre-wrap; } Polarita - + Trainer Mode Mód trenér - + PPM Frame Length Délka PPM rámce @@ -8562,27 +8637,17 @@ p, li { white-space: pre-wrap; } - + Antenna Anténa - - Internal - Interní - - - - Ext. + Int. - - - - + Option value Volitelná hodnota - + Bind on startup Bind při spuštění @@ -8592,129 +8657,146 @@ p, li { white-space: pre-wrap; } - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power Nízký výkon - + us - + Multi Radio Protocol Multi Rádio protokol - + Sub Type - + Master/Jack Učitel/Jack konektor - + Slave/Jack Žák/Jack konektor - + Master/SBUS Module Učitel/SBUS modul - + Master/CPPM Module Učitel/CPPM modul - + Master/SBUS in battery compartment Učitel/SBUS konektor v šachtě baterie - + Show values in: Zobrazit hodnoty v: - + % abbreviation for percent - + μs abbreviation for microseconds - + ms - + + Receiver 1 + + + + + + + X + + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Počet kanálů - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set Nenastaveno - + Hold Držet hodnotu - + Custom Vlastní - + No Pulses Žádné pulzy - + Receiver Dle nastavení přijímače - + Failsafe Positions Pozice Failsafe - + Protocol Protokol @@ -8724,17 +8806,17 @@ p, li { white-space: pre-wrap; } Číslo přijímače - + Output type Typ řízení výstupu - + Open Drain - + Push Pull @@ -8742,494 +8824,572 @@ p, li { white-space: pre-wrap; } ModuleData - + Positive Pozitivní - + Negative Negativní + + + Trainer Port + Port Trenér + + + + Internal Radio System + Interní vysílací modul + + + + External Radio Module + Externí vysílací modul + + + + Extra Radio System + Extra modul + + + + Radio System + Vysílací modul + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - Port Trenér - - - - Internal Radio System - Interní vysílací modul - - - - External Radio Module - Externí vysílací modul - - - - - Radio System - Vysílací modul - - - - Extra Radio System - Extra modul - - - + Value Hodnota - + Hold Držet hodnotu - + No Pulse Žádné pulzy + + + Ask + + + + + Internal + Interní + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Vstup - + Weight Váha - + Long. cyc - + Lateral cyc - + Collective Kolektiv - + Flight modes Letové režimy - - + + Flight mode Letový režim - - + + Switch Spínač - + General - + EEprom Size - + Model Image Obrázek modelu - + Throttle Plyn - + Trims - + Center Beep - + Switch Warnings Polohy spínačů - + Pot Warnings Hodnoty potenciometrů - + Other - + Timers - + Time - + Countdown Odečítat - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter Helikoptéra - + Swash - - + + Type - + Ring - - Fade IN - Přechod při aktivaci - - - - Fade OUT - Přechod při deaktivaci - - - + Protocol Protokol - + Low - + Critical - + Telemetry audio - + Altimetry - - + + Vario source Vario senzor - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar Hodnoty na horní liště - - + + Volts source Zdroj napětí - + Altitude source Zdroj výšky - + Various Různé - + Serial protocol - + FAS offset - + mAh count Počet mAh - + Persistent mAh Ukládat hodnoty - + Current source Snímač proudu - + Blades - + Parameters Hodnota - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + + + + + Global Functions + Globální funkce + + + + Checklist + + + + + GV%1 GP%1 - + RE%1 - + Channel Kanál - - - + + + Name Název - - Global variables - Aktivuje Globální Proměnné -Jsou to proměnné, které lze použít pro konfiguraci místo některých pevných číselných hodnot. -Aktivují se dlouhým stiskem MENU, číslo pak nahradí GPx. -Jejich hodnoty naleznete u originální 9x desky v seznamu křivek. U ostatních v Letových fázích. -Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Funkce - - - + Prec - + Popup - + Outputs Výstupy - + Subtrim - + Direct - + Curve Křivka - + PPM - + Linear Lineární - + Telemetry Telemetrie - + Offset Subtrim - - + + Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max - + Global Variables Globální proměnné - + Inputs Vstupy(DR/Expo) - + Mixers Mixy - + Curves Křivky - + L%1 - + Logical Switches Logické spínače - + SF%1 - + Special Functions Speciální funkce - + Analogs Analogy - - + + Unit Jednotky - + Scale Rozsah - + RSSI Alarms RSSI Alarmy @@ -9273,9 +9433,19 @@ Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Fun + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9313,12 +9483,12 @@ Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Fun - + Cannot write radio settings - + Cannot write model %1 @@ -9393,26 +9563,31 @@ Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Fun + Style + + + + Print Tisk - + Print to file Tisk do souboru - + Print Document Vytisknout dokument - + Select PDF output file Vyberte cílový PDF soubor - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) soubor ODF (*.odt);;soubor PDF (*.pdf);;soubor HTML (*.htm *.html);;Všechny (*) @@ -9611,36 +9786,43 @@ Nastavení hodnoty se provádí přímo v seznamu proměnných, nebo pomocí Fun RadioOutputsWidget + Form + View: Zobrazení: + Logical Switches Logické spínače + Global Variables Globální proměnné + Channel Outputs Výstupy kanálů + Mix Outputs + L o g @@ -9650,6 +9832,7 @@ c + G l o @@ -9660,6 +9843,7 @@ l + C h a @@ -9672,6 +9856,7 @@ s + M i x @@ -9679,11 +9864,21 @@ e s + + + FM%1 + LR%1 + + + + GV%1 + GP%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. Aretovat/odaretovat momentový spínač. @@ -10131,22 +10326,22 @@ s RawSwitch - + - + - + - - + ! @@ -10244,13 +10439,13 @@ s OFF - + Vypnuto ON - + Zap @@ -10365,126 +10560,136 @@ s SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + Interní + + + + External + + Setup @@ -10664,15 +10869,25 @@ Funkce trimu bude opačná, stejně tak i varování polohy páky plynu. SetupPanel - + Timer %1 Stopky %1 - + THR Plyn + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10697,182 +10912,192 @@ Funkce trimu bude opačná, stejně tak i varování polohy páky plynu. - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -11008,151 +11233,181 @@ Profil ID: [%1]; Rádio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11167,64 +11422,64 @@ Profil ID: [%1]; Rádio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator - + F4 - + Trainer Simulator - + F5 - + Debug Output Výstup ladění - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11233,64 +11488,76 @@ Profil ID: [%1]; Rádio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options OpenTX Simulator - Možnosti spuštění + Simulator Startup Options: Možnosti spuštění simulátoru: + Radio Profile: Profil rádia: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: Typ rádia: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: Zdroj dat: + Data File: Datový soubor: + Data Folder: Složka dat: + SD Image Path: Cesta k obsahu SD: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11298,48 +11565,59 @@ The radio type specified in the selected profile is used by default. + + + ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File Soubor + Folder + SD Path @@ -11368,71 +11646,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Companion Simulátor - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Cannot open joystick, joystick disabled Nelze otevřít joystick, není povolený - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) @@ -11491,109 +11770,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11642,101 +12052,106 @@ The default is configured in the chosen Radio Profile. Telemetry - + A1 Telem. vstup A1 - + A2 Telem. vstup A2 - + RSSI - + Alarm 1 - - + + ---- - - + + Yellow Žlutá - - + + Orange Oranžová - - + + Red Červená - + Alarm 2 - + Disable telemetry audio warnings - + + Source + Zdroj + + + Center Silent Tichý střed - + Altitude source Zdroj výšky - + Volts source Zdroj napětí - + Top Bar Hodnoty na horní liště - + Serial Protocol Sériový protokol - + Sensors Senzory - + Disable multi sensor handling Ignoruj chyby ID senzorů (znemožní násobné užití týž senzorů) - + Volt source Snímač napětí - + Current source Snímač proudu @@ -11746,82 +12161,82 @@ The default is configured in the chosen Radio Profile. Protokol - + None Žádný - + FrSky Sensor Hub FrSky Senzor Hub - + Blades Počet listů vrtule - + Sink Max Klesání Max - + Climb Max Stoupání Max - + Sink Min Klesání Min - + Climb Min Stoupání Min - + Vario source Vario senzor - + Vario limits Rozsah varia - + Altimetry - + mAh - + A - + Various Různé - + mAh count Počet mAh - + FAS Offset Ofset FAS - + Persistent mAh Ukládat hodnoty @@ -11935,7 +12350,7 @@ The default is configured in the chosen Radio Profile. MiliAmpéry (mA) - + Range Rozsah @@ -11948,22 +12363,22 @@ The default is configured in the chosen Radio Profile. Typ panelu - + None Žádný - + Numbers Hodnoty - + Bars Ukazatele - + Script Skript @@ -11991,99 +12406,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + Telemetry screen %1 Stránka telemetrie %1 - + Low Alarm Nízký alarm - + Critical Alarm Kriticky alarm - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (nepodporován) - - - + + + A1 Telem. vstup A1 - + Alti - + FrSky S.PORT - + FrSky D - + FrSky D (cable) FrSky D (kabel) - + + Source + Zdroj + + + Alti+ - + VSpeed - - - + + + A2 Telem. vstup A2 - - + + A3 Telem. vstup A3 - - + + A4 Telem. vstup A4 - - + + FAS - + Cells - + --- @@ -12096,269 +12516,279 @@ The default is configured in the chosen Radio Profile. - + Custom Vlastní - + Calculated Vypočtený - + Id - + Instance - + + Rx + + + + + Mod. + + + + Add Součet - + Average Průměr - + Min - + Max - + Multiply Násobení - + Totalize - + Cell Článek - + Consumption Spotřeba - + Dist Vzdálenost - + Cells Sensor : Senzor článků : - - - - - - - - + + + + + + + + --- - + GPS Sensor : GPS Senzor : - + Alt. Sensor : Senzor výšky : - + Sensor : Senzor : - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + g - + ° - + Rad - + mL - + US fl.Oz. - + Raw (-) Jednotky (-) - + RPM Otáčky (ot/min) - + Precision Přesnost - + Ratio - + Blades Listy vrtule - + Offset Ofset - + Multiplier Násobitel - + Auto Offset Auto ofset - + Filter Filtr - + Persistent Trvalé - + Positive Pozitivní - + Logs Logovat @@ -12366,22 +12796,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest Nejnižší - + Cell %1 Článek %1 - + Highest Nejvyšší - + Delta @@ -12390,545 +12820,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator - + + VFAS - + + RSSI - + + A1 Telem. vstup A1 - + + A2 Telem. vstup A2 + Simulate Simulace - + + Replay SD Log File - + + Replay rate - + + Load - + + |> - + + <| - + + > - + + <- - + + X - + + Row # Timestamp - + + 1/5x - + + 5x - + + No Log File Currently Loaded - + + RAS - - - + + + + + + V / ratio - + + Db - + + RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 Telem. vstup A3 - + + A4 Telem. vstup A4 - + + Tmp2 - + + Fuel Palivo - + + + + °C - + + ml - - Deg. C - - - - + + % - - + + + + Meters - + + Alt Výška - + + VSpd - + + m/s - + + Fuel Qty - - + + + + km/h - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS - + + Lat,Lon (dec.deg.) - + + AccX - + + dd-MM-yyyy hh:mm:ss - + + Date - + + Amps - + + AccZ - + + GAlt - - + + + + Volts - + + Cels - + + Curr Proud - + + AccY - + + GSpd - + + Degrees - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM Otáčky (ot/min) + When enabled, sends any non-blank values as simulated telemetry data. - + Log File - + LOG Files (*.csv) - + ERROR - invalid file - - Templates - - - Simple 4-CH - - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - Ocas typu V - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - - - - - - - - - - - - - - ELE - - - - - - - THR - Plyn - - - - - - - - - - - AIL - - - - - - - - AIL2 - - - - - - - - ELE2 - - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - - - - - - Clear Mixes? - Vymazat mixy? - - - - Really clear existing mixes on CH6? - - - - - Really clear existing mixes on CH5? - - - ThrottlePage @@ -12963,12 +13273,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 Stopky %1 @@ -13000,37 +13310,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Tichý - + Beeps Zvuk - + Voice Hlas - + Haptic Vibrovat - + Not persistent Neukládat - + Persistent (flight) Trvalý (v rámci letu) - + Persistent (manual reset) Trvalý (reset ručně) @@ -13162,6 +13472,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator @@ -13169,28 +13480,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index - + Name Název - + Size Velikost - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13785,93 +14101,89 @@ m2560 pro V4 desky <b><u>VAROVÁNÍ!</u></b><br>Běžně je typ CPU vybrán podle typu zvoleného firmware.<br>Pokud změníte typ CPU, výsledná eeprom nemusí být platná. - - downloadDialog - - - Downloading: - Stahuji: - - - - Unable to save the file %1: %2. - Nelze uložit soubor %1: %2. - - - - Download failed: %1. - Stažení se nezdařilo: %1. - - joystickDialog + Configure Joystick Nastavte joystick + Ch2 + Ch1 + Ch4 + Ch6 + Ch3 + Ch5 + Ch7 + Ch8 + Instructions Instrukce + Enable Povolit + Cancel Zrušit + Back + Start První kanál @@ -13882,6 +14194,7 @@ m2560 pro V4 desky + Ok OK diff --git a/companion/src/translations/companion_de.ts b/companion/src/translations/companion_de.ts index 252ae6ea0..ebf605eff 100644 --- a/companion/src/translations/companion_de.ts +++ b/companion/src/translations/companion_de.ts @@ -57,6 +57,38 @@ Zweiter, linker Airbrake Kanal: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + Diese Nachricht beim nächsten Starten wieder anzeigen? + + AppPreferencesDialog @@ -70,32 +102,32 @@ Sender Profil - + Default Channel Order Voreingest. Kanalordnung - + Build Options Software zusammenstellen - + Menu Language Menüsprache - + Default Stick Mode Standard Knüppelmodus - + Select Image Wähle Bild - + Mode selection: Mode 1: @@ -136,528 +168,526 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (Seite Höhe Gas Quer) - + Mode 2 (RUD THR ELE AIL) Mode 2 (Seite Gas Höhe Quer) - + Mode 3 (AIL ELE THR RUD) Mode 3 (Quer Höhe Gas Seite) - + Mode 4 (AIL THR ELE RUD) Mode 4 (Quer, Gas, Höhe, Seite) - + Splash Screen Splash Screen - - + + The profile specific folder, if set, will override general Backup folder - + Backup folder Backup Verzeichnis - + If set it will override the application general setting - + if set, will override general backup enable - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanalreihenfolge</p><p><br/></p><p>Definiert die Reihenfolge der Mischer wenn ein neues Modell erzeugt wird.</p></body></html> - + R E T A S H G Q - + R E A T S H Q G - + R T E A S G H Q - + R T A E S G Q H - + R A E T S Q H G - + R A T E S Q G H - + E R T A H S G Q - + E R A T H S Q G - + E T R A H G S Q - + E T A R H G Q S - + E A R T H Q S G - + E A T R H Q G S - + T R E A G S H Q - + T R A E G S Q H - + T E R A G H S Q - + T E A R G H Q S - + T A R E G Q S H - + T A E R G Q H S - + A R E T Q S H G - + A R T E Q S G H - + A E R T Q H S G - + A E T R Q H G S - + A T R E Q G S H - + A T E R Q G H S - - - - - - + + + + + + Select Folder Wähle Verzeichnis - + Select Executable Wähle ausführbare Datei (Programm) - - Simulator Volume Gain - Simulator Lautstärke - - - - Profile Name - Profil Name - - - - Clear Image - Lösche Bild - - - - Append version number to FW file name - Versionsnummer an die Bezeichnung des Firmware-Files anhängen - - - - Offer to write FW to Tx after download - Firmware nach dem Download in den Sender schreiben - - - - Radio Type - Sender Typ - - - - Set voice language. -May be different from firmware language - Sprachauswahl -die kann von der Menüsprache abweichen - - - - Other Settings - Andere Einstellungen - - - - General Settings - Sender Grundeinstellungen - - - - SD Structure path - SD Verzeichnis Pfad - - - - Voice Language - Ansagesprache - - - - Application Settings - Anwendungs-Einstellungen - - - - Show splash screen when Companion starts - Zeigt das Startbild wenn Companion startet - - - - Automatic check for Companion updates - Automatisches Prüfen auf Companion Updates - - - - - Enable automatic backup before writing firmware - Erstelle automatische Backups, bevor neue Firmware in den Sender geschrieben wird - - - - Automatic check for OpenTX firmware updates - Automatisches Prüfen auf OpenTX Firmware Updates - - - - Splash Screen Library - Splash Screen Verzeichnis - - - - Google Earth Executable - Ausführbare Datei Google Earth - - - - Only show user splash images - Nur das Benutzter-Bild zeigen - - - - Show user and companion splash images - Zeige Benutzer-und CompanionBild - - - - User Splash Screens - Verwende Startbild - - - - Automatic Backup Folder - Autom. Backup Verzeichnis - - - - Simulator Settings - Simulator Einstellungen - - - - Simulator BackLight - Simulator LCD-Beleuchtung - - - - Enable - Freigabe - - - - Use releases (stable) - Nur Releases (stable) - - - - Use release candidates (testing) - Releases und Release Candidates (testing) - - - - Use nightly builds (unstable) - Nightly Builds (unstable) - - - - most recently used files - Zuletzt verwendete Dateien - - - - Startup Settings - Starteinstellungen - - - - Remember - Merke - - - - Output Logs Folder + + Release channel - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - Leere Speicherplätze beim Löschen eines Modells entfernen (gilt nur für Sender ohne Kategorien) - - - - Use model wizard - Benutze den Modellwizard - - - - Open model editor - Öffne den Modelleditor - - - - Just create the model - Leeres Modell erzeugen - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + Simulator Lautstärke + + + + Profile Name + Profil Name + + + + Clear Image + Lösche Bild + + + + Append version number to FW file name + Versionsnummer an die Bezeichnung des Firmware-Files anhängen + + + + Offer to write FW to Tx after download + Firmware nach dem Download in den Sender schreiben + + + + Radio Type + Sender Typ + + + + Other Settings + Andere Einstellungen + + + + General Settings + Sender Grundeinstellungen + + + + SD Structure path + SD Verzeichnis Pfad + + + + Application Settings + Anwendungs-Einstellungen + + + + Show splash screen when Companion starts + Zeigt das Startbild wenn Companion startet + + + + Automatic check for Companion updates + Automatisches Prüfen auf Companion Updates + + + + + Enable automatic backup before writing firmware + Erstelle automatische Backups, bevor neue Firmware in den Sender geschrieben wird + + + + Automatic check for OpenTX firmware updates + Automatisches Prüfen auf OpenTX Firmware Updates + + + + Splash Screen Library + Splash Screen Verzeichnis + + + + Google Earth Executable + Ausführbare Datei Google Earth + + + + Only show user splash images + Nur das Benutzter-Bild zeigen + + + + Show user and companion splash images + Zeige Benutzer-und CompanionBild + + + + User Splash Screens + Verwende Startbild + + + + Automatic Backup Folder + Autom. Backup Verzeichnis + + + + Simulator Settings + Simulator Einstellungen + + + + Simulator BackLight + Simulator LCD-Beleuchtung + + + + Enable + Freigabe + + + + most recently used files + Zuletzt verwendete Dateien + + + + Startup Settings + Starteinstellungen + + + + Remember + Merke + + + + Output Logs Folder + + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + Leere Speicherplätze beim Löschen eines Modells entfernen (gilt nur für Sender ohne Kategorien) + + + + Use model wizard + Benutze den Modellwizard + + + + Open model editor + Öffne den Modelleditor + + + + Just create the model + Leeres Modell erzeugen + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) Anwendung (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) Senderfirmware (im Simulator) - + Action on New Model Aktion die beim Anlegen eines neuen Modells ausgeführt werden soll - + Blue Blau - + Green Grün - + Red Rot - + Orange Orange - + Yellow Gelb - + Screenshot capture folder Screenshot Verzeichnis - + Joystick Joystick - + Calibrate Kalibrieren - + Only capture to clipboard Hardcopy nur in die Zwischenablage speichern - + Remember simulator switch values Schalterstellungen im Simulator merken - + My Radio Mein Sender - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Auswahl des Snapshot Verzeichnis - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found Kein Joystick gefunden - + EMPTY: No radio settings stored in profile LEER: Keine Sender-Einstellungen im Profil gespeichert - + AVAILABLE: Radio settings of unknown age Verüfgbar: Sender-Einstellungen mit unklarem Alter - + AVAILABLE: Radio settings stored %1 Verfügbar: Sender-Einstellungen gespeichert %1 - + Select your library folder Auswahl des Bibliotheks-Verzeichnis - - + + Select your Models and Settings backup folder Auswahl der Modell-und Einstellungs-Verzeichnisse - + Select a folder for application logs Verzeichnis für Anwendungs-Logs - + Select Google Earth executable Wähle Google Earth exe - + Select the folder replicating your SD structure - + Open Image to load Öffne Bild zum laden - + Images (%1) Bilder (%1) @@ -670,26 +700,26 @@ die kann von der Menüsprache abweichen Lesefehler %1: %2 - + Cannot save EEPROM Schreibfehler EEPROM - + Cannot open file %1: %2. Kann Datei nicht öffnen %1: %2. - + Error writing file %1: %2. Fehler beim Schreiben der Datei %1: %2. - + Invalid binary EEPROM file %1 Ungültige binäre EEPROM-Datei %1 @@ -697,57 +727,58 @@ die kann von der Menüsprache abweichen Boards - + Left Horizontal Links Horizontal - + Left Vertical Links Vertikal - + Right Vertical Rechts Vertikal - + Right Horizontal Rechts Horizontal - + Aux. 1 Aux1 - + Aux. 2 Aux2 - + + Unknown Unbekannt - + Rud Sei - + Ele Höh - + Thr Gas - + Ail Qur @@ -796,82 +827,82 @@ die kann von der Menüsprache abweichen Channels - + Name Name - + Min Min - + Max Max - + Subtrim Mitte - + Direction Richtung - + Curve Kurve - + PPM Center PPM Mitte - + Linear Subtrim Lineare Mitte - + CH%1 CH%1 - + Popup menu available Menü verfügbar - + --- --- - + INV INV - + &Copy &Kopieren - + &Cut &Ausschneiden - + &Paste Ein&fügen - + &Delete &Löschen @@ -884,27 +915,32 @@ die kann von der Menüsprache abweichen Editiere Checkliste - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown Datei: unbekannt @@ -960,85 +996,193 @@ die kann von der Menüsprache abweichen Kann Datei nich tlesen %1: %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information Information - + Warning Warnung - + Error Fehler - - Please Confirm - Bitte bestätigen + + Application Settings + Anwendungs-Einstellungen - + files Dateien - + Radio and Models settings Sender- und Modelleinstellungen - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available Simulation für diese Firmware ist noch nicht verfügbar - + Uknown error during Simulator startup. Unbekannter Fehler während Simulator startup. - + Simulator Error Simulator Fehler - + Data Load Error Daten Ladefehler - + Error occurred while starting simulator. Beim Starten des Simulators ist ein Fehler aufgetreten. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1053,37 +1197,42 @@ Do you want to import them? Um Modelle zu vergleichen, Drag und Drop sie in dieses Fenster. - + Close Schliessen - + + Style + + + + Print Drucken - + Print to file Druck in Datei - + Unnamed Model %1 Namenloses Modell %1 - + Click to remove this model. Klick um dieses Modell zu entfernen. - + Print Document Drucke Dokument - + Select PDF output file PDF Output Datei wählen @@ -1174,22 +1323,22 @@ Do you want to import them? CurveGroup - + Diff Diff - + Expo Expo - + Func Funktion - + Curve Kurve @@ -1241,7 +1390,7 @@ Do you want to import them? - + Curve type Kurven Typ @@ -1251,47 +1400,52 @@ Do you want to import them? Kurve erzeugen - + Y at X=0 Y bei X=0 - + + Point size + + + + Y at X=100 Y bei X=100 - + Both Beide - + x>0 x>0 - + x<0 x<0 - + Apply Anwenden - + Side Seite - + Y at X=-100 Y bei X=-100 - + Coefficient Expo-Faktor @@ -1301,72 +1455,77 @@ Do you want to import them? Kurven Name - + Curve %1 Kurve %1 - + + Popup menu available + Menü verfügbar + + + %1 points %1 Punkte - + Linear Linear - + Single Expo Enfache Expo - + Symmetrical f(x)=-f(-x) Punktsym. Expo - + Symmetrical f(x)=f(-x) Achsensym. Expo - + Copy Kopieren - + Paste Einfügen - + Clear Löschen - + Clear all curves Lösche alle Kurven - + Are you sure you want to reset curve %1? Die Kurve %1 wirklich löschen? - + Are you sure you want to reset all curves? Wirklich alle Kurven löschen? - + Editing curve %1 Kurve %1 bearbeiten - + Not enough free points in EEPROM to store the curve. Nicht genug freie Stützstellen im EEPROM um die Kurve zu speichern. @@ -1374,244 +1533,234 @@ Do you want to import them? CustomFunctionData - + GF GF - + SF SF - + Override %1 Überschreibe %1 - + Trainer Schüler Signaleingang - + Trainer RUD Trainer Sei - + Trainer ELE Trainer Höh - + Trainer THR Trainer Gas - + Trainer AIL Trainer Que - + Instant Trim Instant Trim - + Play Sound Audio abspielen - + Haptic Haptik - + Reset Reset - + Set Timer %1 Setze Timer %1 - + Vario Varioton Ein/Aus - + Play Track Spiel Sound - + Play Both Sag Beides - + Play Value Sag Wert - + Play Script Starte Script - + SD Logs SD Logs - + Volume Lautstärke Gesamt - + Backlight LCD-Beleuchtung - + Screenshot LCD Screenshot - + Background Music Hintergrundmusik - + Background Music Pause Hintergrundmusik Pause - + Adjust %1 - + SetFailsafe Int. Module - + SetFailsafe Ext. Module - + RangeCheck Int. Module - + RangeCheck Ext. Module - + Bind Int. Module - + Bind Ext. Module - + Timer1 Stoppuhr1 - + Timer2 Stoppuhr2 - + Timer3 Stoppuhr3 - + Flight Flug - + Telemetry Telemetrie - + Rotary Encoder Drehgeber - + REa DGa - + REb DGb - + s s - - - + + + <font color=red><b>Inconsistent parameter</b></font> - + Value Wert - - Decr: - Dekr: - - - - Incr: - Inkr: - - - + played once, not during startup einmal, aber nicht beim hochfahren - + repeat(%1s) - + DISABLED Gesperrt - + CFN @@ -1639,62 +1788,73 @@ Do you want to import them? Aktivieren - + + Popup menu available + Menü verfügbar + + + SF%1 SF%1 - + GF%1 GF%1 - + ON EIN - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Wert - + Source Quelle - + GVAR GVAR - + Increment Inkrement - - Unable to find sound file %1! - Kann Soundfile nicht finden %1! - - - + &Delete &Löschen - + &Copy &Kopieren - + &Cut &Ausschneiden - + &Paste Ein&fügen @@ -1857,69 +2017,53 @@ Do you want to import them? DataField - + Conversion error on field %1 Übersetzungsfehler im Feld %1 - + Switch Schalter - + Switch Schalter - + cannot be exported on this board! Kann nicht in dieses Board übertagen werden! - + Source Quelle - + Source %1 cannot be exported on this board! - + OpenTX only accepts %1 points in all curves OpenTX unterstützt nur maximal %1 Stützstellen für alle Kurven - + OpenTx only accepts %1 points in all curves - - - - - - + + OpenTX on this board doesn't accept this function OpenTX unterstützt diese Funktion für dieses Board nicht - - OpenTX doesn't accept this telemetry protocol - - - - - OpenTX doesn't allow this number of channels - OpenTX unterstützt diese Anzahl an Kanälen nicht. - - - - - + OpenTX doesn't accept this radio protocol OpenTx kennt dieses Sendeprotokoll nicht @@ -1928,72 +2072,86 @@ Do you want to import them? DebugOutput + Debug Output Debug Ausgabe + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: Buffer: + Number of lines to keep in display. + Filter &Help Filter &Hilfe + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear &Löschen + Clear the output window of all text. + Enable &Filter Freigabe &Filter + Turn the filter on/off. Filter Ein/Aus. @@ -2008,6 +2166,24 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + Herunterladen: + + + + Unable to save the file %1: %2. + Kann Datei %1:%2 nicht abspeichern. + + + + Download failed: %1. + Herunterladen fehlgeschlagen: %1. + + EEPROMInterface @@ -2082,22 +2258,17 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - Warnungen! - EepeFormat @@ -2255,8 +2426,8 @@ If blank then the input is considered to be "ON" all the time. - Click to access popup menu - Klick für Fenter öffnen + Popup menu available + Menü verfügbar @@ -2355,572 +2526,533 @@ If blank then the input is considered to be "ON" all the time.Roll Kanal: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Schliessen + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + Start + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Kanalwerte Anzeige in µs statt % - + No OverrideCH functions available Keine Überschreibefunktion verfügbar - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Sperrt das D8 Protokoll wenn ausgewählt, denn D8 ist seit Jan 2015 in der EU nicht mehr zulässig - + + Disable HELI menu and cyclic mix support Kein Helimenü und zykl. Mischer - + + Disable Global variables Keine Globale Variablen - + + Enable Lua custom scripts screen - - Enable Lua compiler - Verwende Lua compiler - - - - - - - - - - - - + Use alternative SQT5 font Alternative SQT5 Schrift verw - - ST7565P LCD or compatible - - - - - ST7565R LCD or compatible - - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - Ünterstützt Frsky Telemetry Mod - - - - Support for telemetry easy board - - - - - - Support for jeti telemetry mod - Ünterstützt Jeti Telemetry Mod - - - - - Support for receiving ardupilot data - - - - - - Support for receiving NMEA data - - - - - - Support for MAVLINK devices - - - - - Rotary Encoder use in menus navigation - Nutze den Drehgeber für Menü Navigation - - - - - - - - - + Pots use in menus navigation Potis als Menü Navigation benutzen - - - - - - Support for DSM2 modules - Ünterstützung für DSM2-Module - - - - Support for DSM2 modules using ppm instead of true serial - Unterstüzung für DSM2 Modul mit PPM-Signal anstatt echtem seriellem Signal - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D - + Haptic module installed Haptikmodul installiert - + FrSky Taranis X9E - + Confirmation before radio shutdown Ausschalten bestätigung vor Sender runterfährt - + Horus gimbals installed (Hall sensors) Horus Knüppel installiert(Hallgeber) - - - FrSky Taranis X7 / X7S - - - - - FrSky Taranis X-Lite - - - - - Use JR-sized R9M module - - - - - FrSky Horus X10 / X10S - - - - - FrSky Horus X12S - - - - - Use ONLY with first DEV pcb version - - - - - Turnigy 9XR-PRO - - - - - - - Enable HELI menu and cyclic mix support - Freigabe von Heli-Menüs und zyklischer Mischer Unterstützung - - - - - - - - - - - - No flight modes - Keine Flugphasen - - - - - - - - - - - - Global variables - Globale Variablen - - - - - - - - - - - - In model setup menus automatically set source by moving the control - - - - - - - - - - - - - In model setup menus automatically set switch by moving the control - - - - - - - - - - - - - No graphical check boxes and sliders - - - - - - - - - - - - - Battery graph - Akku Ladezustand - - - - - - - - - - - - Don't use bold font for highlighting active items - - - - - Turnigy 9XR with m128 chip - - - - - - - - - - Enable heli menu and cyclic mix support - Freigabe Helimenü und zykl. Mischer - - - - - - - - - Enable TEMPLATES menu - Freigabe Tamplaptes Menü - - - - - - - No splash screen - Kein Startbild - - - - - - - - - Disable curves menus - Kein Kurvenmenü - - - - - - Support for radio modified with regular speaker - - - - - - - - - Used if you have modified your radio with voice mode + FrSky Taranis X9-Lite - - - - - Used if you have modified your radio with haptic mode + + Support for auto update on boot + + + + + FrSky Taranis X7 / X7S + + + + + FrSky Taranis X-Lite S/PRO + + + + + FrSky Taranis X-Lite + + + + + FrSky Horus X10 / X10S - - - - - - PPM center adjustment in limits - PPM Mitten-Einstellung bei Servo Limits - - - - - - - - - Symetrical Limits - Symmetrische Grenzen - - - - - - - Enable the throttle trace in Statistics + FrSky Horus X12S - - - - - - EEprom write Progress bar - EEprom Schreib-Balken + + Use ONLY with first DEV pcb version + - - - - - - - Imperial units - zöllige Einheiten + + Turnigy 9XR-PRO + - - Turnigy 9XR + + Enable HELI menu and cyclic mix support + Freigabe von Heli-Menüs und zyklischer Mischer Unterstützung + + + + Global variables + Globale Variablen + + + + In model setup menus automatically set source by moving the control + + + + + In model setup menus automatically set switch by moving the control + + + + + No graphical check boxes and sliders + + + + + Battery graph + Akku Ladezustand + + + + Don't use bold font for highlighting active items + + + + + + Support for ACCESS internal module replacement + + + + + FrSky Horus X10 Express + + + + + Jumper T12 - - No Winged Shadow How High support + Enable non certified R9M firmwares - - - No vario support - Kein Vario - - - - - No GPS support - Keine GPS Unterstützung - - - - - No gauges in the custom telemetry screen + + Turnigy 9XR with m128 chip - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) + + Turnigy 9XR - + 9X with stock board - - - SmartieParts 2.2 Backlight support - - - - - - - - - + Enable resetting values by pressing up and down at the same time - - EEprom write progress bar - EEprom Schreib-Balken - - - - Allow compensating for offset errors in FrSky FAS current sensors - - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - Unterstützung für SD-Speicherkarte - - - - - Support of FrSky PXX protocol - Unterstützung von FrSky PXX Protokol - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - - FirmwarePreferencesDialog @@ -2954,6 +3086,11 @@ If blank then the input is considered to be "ON" all the time.Latest Download Letztes Download + + + Unknown + Unbekannt + FlapsPage @@ -2987,7 +3124,7 @@ If blank then the input is considered to be "ON" all the time.FlashEEpromDialog - + Write Models and Settings to Radio Schreibe Modelle und Einstellungen in den Sender @@ -3052,51 +3189,51 @@ If blank then the input is considered to be "ON" all the time.Schreibe in Sender - + Current profile: %1 - + Choose Radio Backup file - + Wrong radio calibration data in profile, Settings not patched - + Wrong radio setting data in profile, Settings not patched - + Cannot write file %1: %2. Kann Datei nicht schreiben%1: %2. - + Error writing file %1: %2. Fehler beim Schreiben der Datei %1: %2. - + The radio firmware belongs to another product family, check file and preferences! - + The radio firmware is outdated, please upgrade! Die Sender Firmware ist überholt, bitte updaten! - + Cannot check Models and Settings compatibility! Continue anyway? @@ -3283,42 +3420,42 @@ If blank then the input is considered to be "ON" all the time. - + Writing... Schreiben... - + Reading... Lesen... - + Verifying... Vergleichen... - + unknown unbekannt - + ie: OpenTX for 9X board or OpenTX for 9XR board ie: OpenTX für das 9X Board oder OpenTX für das 9XR Board - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip ie: OpenTX für das M128 / 9X Board oder OpenTX für das 9XR Board mit dem M128 chip - + ie: OpenTX for Gruvin9X board ie: OpenTX für das Gruvin9X Board - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3327,7 +3464,7 @@ Please check advanced burn options to set the correct cpu type. Bitte die weiteren Brenn-Optionen prüfen und den CPU Typ korrekt setzen. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3336,7 +3473,7 @@ Please select an appropriate firmware type to program it. Bitte dazu eine passende Firmware zum Programmieren auswählen. - + You are currently using: %1 @@ -3344,14 +3481,7 @@ You are currently using: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. @@ -3405,82 +3535,87 @@ Please use ZADIG to properly install the driver. FlightModePanel - + Rotary Encoder %1 Drehgeber %1 - + Name Name - + Value source WertQuelle - + Value Wert - + GVAR%1 GVAR%1 - + Popup enabled Anzeige im Popupfenster freigeben - + + Popup menu available + Menü verfügbar + + + Trim disabled Trim ausgeschaltet - + Own Trim Eigene Trim - + Use Trim from Flight mode %1 Trim von Flugphase %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Trim von Flugphase %1 + Eigene Trim als Offset - + Unit Einheit - + Prec Prec - + Min Min - + Max Max - + 0._ 0._ - + 0.0 0.0 @@ -3505,17 +3640,17 @@ Please use ZADIG to properly install the driver. FlightModesPanel - + Flight Mode %1 Flugphase %1 - + (%1) (%1) - + (default) (normal) @@ -3541,17 +3676,17 @@ Please use ZADIG to properly install the driver. FrSkyAlarmData - + Yellow Gelb - + Orange Orange - + Red Rot @@ -3560,12 +3695,12 @@ Please use ZADIG to properly install the driver. FrSkyChannelData - + V V - + --- --- @@ -3706,12 +3841,12 @@ p, li { white-space: pre-wrap; } GV - + Own value Eigener Wert - + Flight mode %1 value Flugphase %1 Wert @@ -3794,7 +3929,7 @@ Dieses sind für alle Modelle im gleichen EEPROM gültig. GeneralSettings - + Radio Settings Sender Grunfeinstellungen @@ -3852,160 +3987,162 @@ Dieses sind für alle Modelle im gleichen EEPROM gültig. SG - + Timeshift from UTC Zeitverschiebung von UTC - + Voice Language Ansagesprache - + Country Code Ländercode - + Stick reverse Knüppel umkehren - + FAI Mode FAI Modus - + Adjust RTC Uhr einstellen - + Vario pitch at max Vario Tonhöhe bei Max-Steig - - + + Hz Hz - + Speaker Volume Gesamtlautstärke - + Backlight Switch LCD-Beleuchtung EIN mit - + Sound Mode Sound Modus - + Color 1 Farbe 1 - + Color 2 Farbe2 - + Speaker Pitch (spkr only) Lautstärke (Spkr Mod) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Wenn dieser Wert ungleich 0 ist, wird die Hintergrundbeleuchtung nach irgendeinem Tastendruck eingeschaltet und nach einer eingestellten Zeit in Sekunden ausgeschaltet. - + + + sec sek - + Backlight color LCD-Beleuchtung Farbe - + Beeper Piepser - + Speaker Lautsprecher - + BeeperVoice Beeper Sound - + SpeakerVoice Sprecher Stimme - + Beep volume Piepser Lautstärke - + Wav volume Wav Lautstärke - + Vario volume Vario Lautstärke - + Background volume Hintergrundlautstärke - - + + ms ms - + Backlight Auto OFF after LCD-Beleuchtung AUS nach - + Backlight flash on alarm LCD-Beleuchtung an bei Alarm - + Vario pitch at zero Vario Tonhöhe bei Min-Sink - + Vario repeat at zero Vario Ton Wiederholrate - + This is the switch selectrion for turning on the backlight (if installed). @@ -4014,8 +4151,8 @@ und nach einer eingestellten Zeit in Sekunden ausgeschaltet. - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4026,42 +4163,42 @@ p, li { white-space: pre-wrap; } Die Werte können sein - + Backlight Brightness LCD-Beleuchtung Helligkeit - + RotEnc Navigation Drehgeber Navigation - + Automatically adjust the radio's clock if a GPS is connected to telemetry. Automatisches Einstellen der Uhr im Sender wenn GPS mit der Telemetrie verbunden. - + America Amerika - + Japan Japan - + Europe Europa - + Backlight OFF Brightness Resthelligkeit wenn Beleuchtung AUS - + Mode selection: Mode 1: @@ -4102,306 +4239,347 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (Sei Höh Gas Qur) - + Mode 2 (RUD THR ELE AIL) Mode 2 (Sei Gas Höh Qur) - + Mode 3 (AIL ELE THR RUD) Mode 3 (Qur Höh Gas Sei) - + Mode 4 (AIL THR ELE RUD) Mode 4 (Qur Gas Höh Sei) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> - + <html><head/><body><p>Kanalreihenfolge</p><p><br/></p><p>Definiert die Reihenfolge der Mischer wenn ein neues Modell erzeugt wird.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Wenn man FAI auswählt gibt es nur noch RSSI und RxBat Werte. Diese Funktion kann dann im Sendern nicht mehr deaktiviert werden. - + RSSI Poweroff Warning RSSI Poweroff Warnung - + Low EEPROM Warning Low EEPROM Warnung - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A S H G Q - + R E A T S H Q G - + R T E A S G H Q - + R T A E S G Q H - + R A E T S Q H G - + R A T E S Q G H - + E R T A H S G Q - + E R A T H S Q G - + E T R A H G S Q - + E T A R H G Q S - + E A R T H Q S G - + E A T R H Q G S - + T R E A G S H Q - + T R A E G S Q H - + T E R A G H S Q - + T E A R G H Q S - + T A R E G Q S H - + T A E R G Q H S - + A R E T Q S H G - + A R T E Q S G H - + A E R T Q H S G - + A E T R Q H G S - + A T R E Q G S H - + A T E R Q G H S - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + Schüler Signaleingang + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect Nachfragen beim Verbinden - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) USB Serial (CDC) - + Stick Mode Knüppelmodus - + Metric Metrisch - + Imperial Zöllig - + Default Channel Order Voreingest. Kanalordnung - + GPS Coordinates GPS Koordinaten - + Min Min - - + + v V - + Max Max - + Inactivity Timer Inaktivitätstimer - + Show Splash Screen on Startup Zeige Startbild an - + Contrast LCD Kontrast - + Battery Meter Range Akku Ladestand - + Haptic Strength Haptik Stärke - + LCD Display Type LCD Display Typ - + "No Sound" Warning Keine Sound Warnung - + Battery Warning Sender Akkuwarnung - + Haptic Length Haptik Länge - + MAVLink Baud Rate Mav Link Baudrate - - + + Quiet Stumm - + Only Alarms Nur Alarme - - + + No Keys Kein Tastenpieps - - + + All Alles - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4412,115 +4590,115 @@ Legt die Schaltschwelle fest wann die Warnung für die Akku-Unterspannungmeldung Werte liegen zwischen 5-10V - + Standard Standard - + Optrex Optrex LCD - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Falls ungleich 0 ertönt ein Piepston wenn der Sender für eine bestimmte Anzahl Minuten nicht bedient wurde. - + min Min - - + + Show splash screen on startup Zeige Startbild an - + --- --- - + 2s 2s - + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + 4800 Baud 4800 Baud - + 9600 Baud 115200 Baud {9600 ?} - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4541,72 +4719,67 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte - - + + X-Short X-kurz - - + + Short Kurz - - + + Normal Normal - - + + Long Lang - - + + X-Long X-lang - - hh° (N/S) mm' ss''.dd - GMS hh° (N/S) mm' ss''.dd - - - + NMEA NMEA - + Play Delay (switch mid position) Schalter Mittenpos. verzögern - + Measurement Units Maßeinheiten - + Haptic Mode Haptik Modus - + Beeper Length Piepser Länge - + Beeper Mode Modus Piepser - + Beeper volume 0 - Quiet. No beeps at all. @@ -4623,7 +4796,7 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte 4 - Sehr laut. - + Alarms Only Nur Alarme @@ -4631,127 +4804,127 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte GeneralSetupPanel - + OFF AUS - + Keys Tasten - + Sticks Knüppel - + Keys + Sticks Taste+Knüppel - + ON EIN - + English Englisch - + Dutch Niederländisch - + French Französisch - + Italian Italienisch - + German Deutsch - + Czech Tschechisch - + Slovak Slowakisch - + Spanish Spanisch - + Polish Polnisch - + Portuguese Portogiesisch - + Russian - + Swedish Schwedisch - + Hungarian Ungarisch - + No Nein - + RotEnc A Drehgeber A - + Rot Enc B Drehgebeer B - + Rot Enc C Drehgeber C - + Rot Enc D Drehgeber D - + Rot Enc E Drehgeber E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4786,263 +4959,247 @@ Sind Sie sicher? Tabelle - + SQ SQ - + SR SR - + LS2 LS2 - + SP SP - + SO SO - + S4 S4 - + RS RS - + SB SB - + PPM 2 PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Lautstärke Piepser - -0 - Leise. Kein Piepston -1 - Kein Tastaturpieps. Normale Piepstöne aber kein Tastaturpieps -2 - Normal -3 - Laut -4 - Sehr laut. - - - OFF AUS - + S-Port Mirror S_Port Ausgang - + Telemetry Telemetrie - + SBUS Trainer SBus Schüler - + Debug Debugmode - + Rud Sei - + PPM 3 PPM 3 - + S1 S1 - + S2 S2 - + S3 S3 - + PPM 1 PPM 1 - + Serial Port Serielle Schnittstelle - + v V - + PPM Multiplier PPM Multiplikator - + Current Offset Strom Offset - + PPM 4 PPM 4 - + SA SA - + Ele Höh - + + Antenna + Antenne + + + + S5 + S5 + + + Ail Qur - + Thr Gas - + SC SC - + LS LS - + SD SD - + Battery Offset Akku Offset - + SE SE - + SF SF - + SG SG - + SH SH - + SI SI - + SJ SJ - + SK SK - + SL SL - + SM SM - + SN SN - + RS2 RS2 - + Bluetooth Bluetooth - + ADC Filter ADC-Filter - + Device Name: Gerätename: @@ -5051,8 +5208,8 @@ Sind Sie sicher? HardwarePanel - - + + None Kein @@ -5072,25 +5229,70 @@ Sind Sie sicher? 3 Positionen - + Pot with detent Poti mit Raste - + Multipos switch Stufenschalter - + Pot without detent Poti ohne Raste - + Slider with detent Schieber mit Raste + + + OFF + AUS + + + + Enabled + + + + + Telemetry + Telemetrie + + + + Trainer + Schüler Signaleingang + + + + Internal + Interne + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5214,25 +5416,25 @@ Sind Sie sicher? InputsPanel - + Move Up Nach oben - + Ctrl+Up Ctrl+Up - + Move Down Nach unten - + Ctrl+Down Ctrl+Down @@ -5242,92 +5444,92 @@ Sind Sie sicher? Alle Inputs löschen - + Not enough available inputs! Nicht genügend freie Eingänge! - + Delete Selected Inputs? Lösche ausgewählte Inputs? - + &Add &Addieren - + Ctrl+A Ctrl+a - + &Edit &Editieren - + Enter Eingabe - + &Delete &Löschen - + Delete Löschen - + &Copy &Kopieren - + Ctrl+C Ctrl+C - + &Cut &Ausschneiden - + Ctrl+X Ctrl+X - + &Paste Ein&fügen - + Ctrl+V Ctrl+V - + Du&plicate D&uplizieren - + Ctrl+U Ctrl+U - + Clear Inputs? Eingänge Löschen? - + Really clear all the inputs? wirklich alle Eingänge löschen? @@ -5484,62 +5686,67 @@ Sind Sie sicher? LogicalSwitchesPanel - + V1 V1 - + V2 V2 - + Duration Dauer - + Delay Verzögerung - + Function Funktion - + AND Switch UND Schalter - + + Popup menu available + Menü verfügbar + + + (instant) (sofort) - + (infinite) (endlos) - + &Delete &Löschen - + &Copy &Kopieren - + &Cut &Ausschneiden - + &Paste Ein&fügen @@ -5633,8 +5840,8 @@ Sind Sie sicher? - Error: no GPS data not found - Fehler: keine GPS-Daten gefunden + Error: no GPS data found + @@ -5646,74 +5853,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Die Spalten für Höhe "GAlt" und für Geschwindigkeit "GSpd" sind optional - + Cannot write file %1: %2. Kann Datei nicht schreiben%1: %2. - + Cursor A: %1 m Cursor A: %1 m - + Cursor B: %1 m Cursor B: %1 m - + Time delta: %1 Zeitdifferenz: %1 - + Climb rate: %1 m/s Steigrate: %1 m/s - + Select your log file Wähle die Logdatei aus - + Available fields Verfügbare Felder - + The selected logfile contains %1 invalid lines out of %2 total lines Die ausgewählte Log-Datei enthält %1 ungültige Zeilen von %2 Gesamtzeilen - + total duration Gesamtdauer - + duration Dauer - + (L1) - + (R1) - + (L2) - + (R2) @@ -5721,818 +5928,808 @@ Die Spalten für Höhe "GAlt" und für Geschwindigkeit "GSpd" MainWindow - - + + File loaded Datei geladen - - + + Save As Speichern unter - - + + No updates available at this time. Kein Update vorhanden. - - Unable to check for updates. - Kann nicht auf Updates überprüfen. - - - + Executable (*.exe) Anwendung (*.exe) - - + + Would you like to launch the installer? Möchtest Du das Installationsprogramm starten ? - + Do you want to write the firmware to the radio now ? Wollen sie die Firmware jetzt in den Sender schreiben? - - + + File saved Datei gespeichert - + Read Models and Settings From Radio Lese Modell und Einstellungen vom Sender - + Save Radio Backup to File Speichere Sender Backup in Datei - + Read Radio Firmware to File Lese Sender Firmware in Datei - + New release available Neuer Softwarestand verfügbar - + Error opening file %1: %2. Fehler beim Öffnen der Datei %1: %2. - + A new version of Companion is available (version %1)<br>Would you like to download it? Eine neue Version von Companion ist verfügbar (Version%1)<br>Wollen Sie die neu Version jetzt herunterladen? - + Compilation server too busy, try later Compilation-Server ist ausgelastet, Bitte später nochmal versuchen - + Unknown server failure, try later Unbekannter Serverfehler, bitte später nochmal versuchen - - + + Yes Ja - - + + No Nein - - + + Release Notes Softwarestände - - - Do you want to download release %1 now ? - Wollen sie jetzt das Release %1 downloaden? - - - + The new theme will be loaded the next time you start Companion. Die neue Oberfläche wird erst beim nächsten Start von Companion aktiv. - - + + Open Models and Settings file Öffne Modelle und Einstellungs Datei - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX Home Page: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> - + About Companion Über Companion - + Compare models Vergleiche Modelle - + Exit the application Beendet die Anwendung - - Ignore this release %1? - - - - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> - + Copyright OpenTX Team - + New Neu - + Open... Öffnen... - + Save Speichern - + Save As... Speichern als... - + A monochrome black icon theme - + A monochrome white icon theme - + A monochrome blue icon theme - + Diskimage (*.dmg) - + Would you like to open the disk image to install the new version? - - Show this message again at next startup? - Diese Nachricht beim nächsten Starten wieder anzeigen? - - - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! Kein Sender oder SD-Karte gefunden! - - :: Options - :: Optionen - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - + Close Schliessen - + Close Models and Settings file - + List of recently used files - + Radio Profiles - + Create or Select Radio Profiles - + Release notes... - + Show release notes - + Create a new Radio Settings Profile - + Copy Current Radio Profile - + Duplicate current Radio Settings Profile - + Delete Current Radio Profile... - + Delete the current Radio Settings Profile - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Tabbed Windows - + Use tabs to arrange open windows. - + Tile Windows - + Arrange open windows across all the available space. - + Cascade Windows - + Arrange all open windows in a stack. - + Close All Windows - + Closes all open files (prompts to save if necessary. - + Window - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + Small Klein - + Use small toolbar icons - + Use normal size toolbar icons - + Normal Normal - + Use big toolbar icons - + Big Groß - + Use huge toolbar icons - + Huge Riesig - + - Copy - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile - + The default profile can not be removed. - + Confirm Delete Profile - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + Create a new Models and Settings file Erzeuge eine neue Modell-und Einstellungen-Datei - + Not enough flash available on this board for all the selected options - + Compilation server temporary failure, try later - + Compilation error - + Invalid firmware - + Invalid board - + Invalid language - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Models and Settings read - - + + This function is not yet implemented - - + + Save Models and Settings file Speichere Modell und Einstellungen in Datei - + Exit Fertig - + Use default system language. - + Use %1 language (some translations may not be complete). - + Classical Klassisch - + The classic companion9x icon theme - + Yerico Yerico - + Yellow round honey sweet icon theme - + Monochrome Monochrom - + MonoWhite Weiß - + MonoBlue Blau - + System language Systemsprache - + About... Über... - - View Log File... - Anzeige Log Datei... - - - - Open and view log file - Öffne und zeige Log Datei an - - - - Settings... - Einstellungen... - - - - Edit Settings - Editiere Einstellungen - - - - Download... - Download... - - - - Download firmware and voice files - Download Firmware und Sprechdateien - - - - Check for Updates... - Prüfe auf Update... - - - - Check OpenTX and Companion updates - Prüfe Opentx und Companion auf Updates - - - - Compare Models... - Vergleiche Modelle... - - - - Edit Radio Splash Image... - Editiere Sender Start Bild... - - - - Edit the splash image of your Radio - Editiere das Starthbild für den Sender - - - - List programmers... - Liste der Programmiergeräte... - - - - Fuses... - Fuses... - - - - - Read Firmware from Radio - Lese Firmware aus dem Sender - - - - Read firmware from Radio - Lese Firmware aus dem Sender - - - - Write Firmware to Radio - Schreibe Firmware in den Sender - - - - Write firmware to Radio - Schreibe Firmware in den Sender - - - - Add Radio Profile - Füge Senderprofil hinzu - - - - Manuals and other Documents - Handbücher und andere Dokumente - - - - Open the OpenTX document page in a web browser + + No Companion release candidates are currently being served for this version, please switch release channel - - Write Models and Settings To Radio - Schreibe Modelle und Einstellungen in den Sender + + No nightly Companion builds are currently being served for this version, please switch release channel + - - Write Models and Settings to Radio - Schreibe Modelle und Einstellungen in den Sender + + No Companion release builds are currently being served for this version, please switch release channel + - + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. +Version %2 is available. Do you want to download it now? We recommend you view the release notes using the button below to learn about any changes that may be important to you. - + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + + View Log File... + Anzeige Log Datei... + + + + Open and view log file + Öffne und zeige Log Datei an + + + + Settings... + Einstellungen... + + + + Edit Settings + Editiere Einstellungen + + + + Download... + Download... + + + + Download firmware and voice files + Download Firmware und Sprechdateien + + + + Check for Updates... + Prüfe auf Update... + + + + Check OpenTX and Companion updates + Prüfe Opentx und Companion auf Updates + + + + Compare Models... + Vergleiche Modelle... + + + + Edit Radio Splash Image... + Editiere Sender Start Bild... + + + + Edit the splash image of your Radio + Editiere das Starthbild für den Sender + + + + List programmers... + Liste der Programmiergeräte... + + + + Fuses... + Fuses... + + + + + Read Firmware from Radio + Lese Firmware aus dem Sender + + + + Read firmware from Radio + Lese Firmware aus dem Sender + + + + Write Firmware to Radio + Schreibe Firmware in den Sender + + + + Write firmware to Radio + Schreibe Firmware in den Sender + + + + Add Radio Profile + Füge Senderprofil hinzu + + + + Manuals and other Documents + Handbücher und andere Dokumente + + + + Open the OpenTX document page in a web browser + + + + + Write Models and Settings To Radio + Schreibe Modelle und Einstellungen in den Sender + + + + Write Models and Settings to Radio + Schreibe Modelle und Einstellungen in den Sender + + + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6543,157 +6740,157 @@ We recommend you view the release notes using the button below to learn about an - - + + Synchronize SD Synchronisiere mit SD-Karte - - + + Read Models and Settings from Radio Lese Modelle und Einstellungen aus dem Sender - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - Sender: %2 - Profile: %3 - + Configure Communications... Kommunikation einstellen... - + Configure software for communicating with the Radio - + Write Backup to Radio Schreibe Backup in den Sender - + Write Backup from file to Radio Schreibe Backup aus Datei in den Sender - + Backup Radio to File Mach Backup von Sender in Datei - + Save a complete backup file of all settings and model data in the Radio - + Contributors... Mitwirkende... - + A tribute to those who have contributed to OpenTX and Companion - + SD card synchronization SD-Karte Synchronisation - + Recent Files Kürzlich verw. Dateien - + Set Icon Theme Icon setzen - + Set Icon Size Icon Größen - + List available programmers Liste der möglichen Programmiergeräte - + Show fuses dialog Zeige Fuses Einstellungen - + Show the application's About box Zeige das Infofenster - + Set Menu Language Menüsprache einstellen - + Write Schreibe - + %2 %2 - + Alt+%1 Alt+%1 - + New Radio Neuer Sender - + Checking for updates Überprüfe auf Updates - - + + File Datei - - + + Edit Bearbeiten - + Settings Einstellungen - + Read/Write Lesen/Schreiben - - + + Help Hilfe - + Ready Fertig @@ -6701,108 +6898,113 @@ We recommend you view the release notes using the button below to learn about an MdiChild - + Editing model %1: Modell %1 bearbeiten : - + Delete Löschen - + Move to Category - + Alt+S Alt+S - + Do you want to overwrite radio general settings? Wollen sie wirklich die Sender Grundeinstellungen überschreiben? - + This category is not empty! - + New model Translators: do NOT use accents here, this is a default model name. - - Unable to find Horus radio SD card! + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> - + + Unable to find Horus radio SD card! + Kann die Horus SD-Karte nicht finden! + + + Models and Settings written Modelle und Einstellungen geschrieben - + Unable to find file %1! Kann die Datei %1 nicht finden ! - + Save As Speichern unter - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6811,7 +7013,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6820,7 +7022,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6829,163 +7031,163 @@ We recommend you view the release notes using the button below to learn about an - + Nothing selected Nicht gewählt - + Rename Category Kategorie umbenennen - + Edit Model Editiere Modell - + Cut Ausschneiden - + Copy Kopieren - + Paste Einfügen - + Insert Einfügen - + Edit Radio Settings Editieren Sender Grundeinstellungen - + Copy Radio Settings Kopiere Sender Grundeinstellungen - + Paste Radio Settings Einfügen Sender Grundeinstellungen - + Simulate Radio Simulieren Sender - + Add Category Kategorie hinzufügen - + Category Kategorie - + Add Model - + Model Model - + Restore from Backup Wiederherstellen aus Backup - + Model Wizard Modell Wizard - + Set as Default - + Print Model - + Simulate Model - + Duplicate Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Category index out of range. - + Cannot delete the last category. - + Cannot insert model, last model in list would be deleted. - + Cannot add model, could not find an available model slot. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Delete %n selected model(s)? @@ -6993,7 +7195,7 @@ We recommend you view the release notes using the button below to learn about an - + Delete %n selected category(ies)? @@ -7001,73 +7203,68 @@ We recommend you view the release notes using the button below to learn about an - + Cannot duplicate model, could not find an available model slot. - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Open backup Models and Settings file Öffne Backup Modelle-und Einstellungs Datei - + free bytes Freie Bytes - + Error opening file %1: %2. Fehler beim Öffnen der Datei %1: %2. - + Error reading file %1: %2. Fehler beim Lesen der Datei%1: %2. - + %1 has been modified. Do you want to save your changes? %1 wurde verändert. Sollen die Änderungen gespeichert werden? - + Invalid binary backup File %1 Ungültige Binär Backup Datei %1 - + Cannot write temporary file! Kann temporäre Datei nicht schreiben! @@ -7308,22 +7505,22 @@ If blank then the mix is considered to be "ON" all the time. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7332,25 +7529,25 @@ If blank then the mix is considered to be "ON" all the time. MixesPanel - + Move Up Nach oben - + Ctrl+Up Ctrl+Up - + Move Down Nach unten - + Ctrl+Down Ctrl+Down @@ -7360,102 +7557,102 @@ If blank then the mix is considered to be "ON" all the time. Mischer löschen - + Not enough available mixers! Nicht genügend Mischer verfügbar! - + Delete Selected Mixes? Lösche ausgewählte Mischer? - + &Add &Addieren - + Ctrl+A Ctrl+a - + &Edit &Editieren - + Enter Eingabe - + &Toggle highlight &Toggle highlight - + Ctrl+T Ctrl+T - + &Delete &Löschen - + Delete Löschen - + &Copy &Kopieren - + Ctrl+C Ctrl+C - + Ctrl+X Ctrl+X - + C&ut &Ausschneiden - + &Paste Ein&fügen - + Ctrl+V Ctrl+V - + Du&plicate Du&plizieren - + Ctrl+U Ctrl+U - + Clear Mixes? Mischer löschen? - + Really clear all the mixes? Wirklich alle Mischer löschen ? @@ -7463,12 +7660,12 @@ If blank then the mix is considered to be "ON" all the time. ModelData - + Model: Model: - + Throttle Source GasTimer Quelle @@ -7539,878 +7736,784 @@ If blank then the mix is considered to be "ON" all the time. ModelPrinter - + Exponential Exponential - + Extra Fine Sehr fein - + Fine Fein - + Medium Mittel - + Coarse Grob - + Unknown Unbekannt - + Slave/Jack Schüler/Buchse - + Master/SBUS Module Lehrer/SBus Module - + Master/CPPM Module Lehrer/CPPM Module - + Master/SBUS in battery compartment Lehrer/SBus im Akkufach - + Master/Jack Lehrer/Buchse - + Enable Freigabe - + Disable Sperren - + True Wahr - + False Falsch - + Yes Ja - + No Nein - + Y Y - + N - + ON EIN - - - - + + + + OFF AUS - - - - - - - - - - - - - ??? - ??? - - - + bytes Bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 6P {1W?} - - - - 25mW - - - - - + + Mode Modus - - + + Channels Kanäle - - + + Frame length Framelänge - + PPM delay PPM Puls - - + + Polarity Polarität - + Protocol Protokoll - - - + + + Delay Verzögerung - - + + Receiver Empfänger - + Radio protocol Senderprotokoll - + Subtype Subtyp - + Option value Optionswert - + Sub Type Subtyp - + RF Output Power HF Sendeleistung - - Telemetry - Telemetrie - - - - - ???? - - - - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - Rudder - Seitenruder - - - - Elevator - Höhenruder - - - - Throttle - Gas - - - - Aileron - Querruder - - - + MULT! MULTI! - - + + Offset Offset - + Slow Langsam - + Warn Warnung - + Flight modes Flugphasen - + Flight mode Flugphase - + All Alles - + Edge Puls - + Sticky SRFF - + Timer Takt - + missing fehlt - + Duration Dauer - + Extended Limits Erw. Wege 100% --> 150% - + Display Checklist Anzeige Checkliste - + Global Functions Globale Funktionen - + Manual Manuell - + Auto Automatisch - + Failsafe Mode Failsafe Mode - - + + Hold Halte Servopos - + No Pulse Kein Signal - + Not set Nicht eingestellt - + No pulses Keine Signale - + Silent Ruhe - + Beeps Pieps - + Voice Stimme - + Haptic Haptik - + Flight Flug - + Manual reset Manual Reset - + Step Schritt - + Display Anzeige - + Extended Erweitert - + Never Nie - + On Change Bei Änderung - + Always Immer - - Trainer Port - Trainer Port - - - - Internal Radio System - Internes HF Modul - - - - External Radio Module - Externes HF Modul - - - - - Radio System - Sender System - - - - Extra Radio System - Extern Sende System - - - - - + + + Source Quelle - + Trim idle only Nur Leerlauftrimm - + Warning Warnung - + Reversed Invertiert - + Tmr Tmr - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (Kabel) - + Alti Höhe - + Alti+ Höhe+ - + VSpeed VSpeed - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Zellen - + Calculated Berechnung - + Add Add - + Average Mittelwert - - + + Min Min - - + + Max Max - + Multiply Multiplizeren - + Totalise Summieren - + Cell Zelle - + Consumption Verbrauch - + Distance Distanz - + Lowest Niedrigster - + Cell %1 Zelle %1 - + Highest Höchster - + Delta Differenz - + Formula Formel - - + + Id ID - + Instance SubID - - - - + + + + Sensor sensor - - + + Sources Quellen - - + + GPS - + GPS - + Alt. Alt. - - + + Blades Rotorblätter - + Multi. Multi. - + F - + Inst - + Alt Alt - + Unit Einheit - + Prec - + Prec - + Ratio - + Multi - + A/Offset - + Filter Filter - + Persist Dauerhaft - + Positive Positiv - + Log - + Numbers Nummern - + Bars Balken - + Script Script - + Filename Dateiname - + + Error: Unable to open or read file! + + + + Persistent Dauerhaft - + Off Aus - - - - - - + + + + + + None Kein - + Name Name - + Countdown Count Down - + Minute call Minutenansage - - - + + + FM%1 FM%1 - + FM%1%2 FM%1%2 - + FM%1+%2 - - + + Weight Gewichtung - - + + Switch Schalter - - + + NoTrim - + No DR/Expo Kein DR/Expo - + Offset(%1) Offset(%1) - + Disabled in all flight modes Abgewählt in allen Flugphasen - + instant sofort - - - + + + Custom Eigener - + Standard Standard @@ -8446,7 +8549,7 @@ If blank then the mix is considered to be "ON" all the time. Module - + Failsafe Mode Failsafe Mode @@ -8456,7 +8559,7 @@ If blank then the mix is considered to be "ON" all the time. Start - + PPM delay PPM Puls @@ -8476,12 +8579,12 @@ If blank then the mix is considered to be "ON" all the time. Polarität - + Trainer Mode Trainer Mode - + PPM Frame Length PPM Frame Länge @@ -8491,27 +8594,17 @@ If blank then the mix is considered to be "ON" all the time. CH - + Antenna Antenne - - Internal - Interne - - - - Ext. + Int. - Ext. + Int. - - - + Option value Optionswert - + Bind on startup Binden beim Starten @@ -8521,129 +8614,146 @@ If blank then the mix is considered to be "ON" all the time. HF Sendeleistung - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power Low Power - + us us - + Multi Radio Protocol MultiModul Sendeprotokoll - + Sub Type Subtyp - + Master/Jack Lehrer/Buchse - + Slave/Jack Schüler/Buchse - + Master/SBUS Module Lehrer/SBus Module - + Master/CPPM Module Lehrer/CPPM Module - + Master/SBUS in battery compartment Lehrer/SBus im Akkufach - + Show values in: Zeig Werte in: - + % abbreviation for percent % - + μs abbreviation for microseconds - + ms ms - + + Receiver 1 + + + + + + + X + X + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Kanäle - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set Nicht eingestellt - + Hold Halte Servopos - + Custom Frei einstellbar - + No Pulses Keine PPM Pulse - + Receiver Empfänger - + Failsafe Positions Failsafe Positionen - + Protocol Protokoll @@ -8653,17 +8763,17 @@ If blank then the mix is considered to be "ON" all the time. Empfänger Nr. - + Output type Ausgangstyp - + Open Drain Open Drain - + Push Pull Push Pull @@ -8671,490 +8781,572 @@ If blank then the mix is considered to be "ON" all the time. ModuleData - + Positive Positiv - + Negative Negativ + + + Trainer Port + Trainer Port + + + + Internal Radio System + Internes HF Modul + + + + External Radio Module + Externes HF Modul + + + + Extra Radio System + + + + + Radio System + Sender System + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - Trainer Port - - - - Internal Radio System - Internes HF Modul - - - - External Radio Module - Externes HF Modul - - - - - Radio System - Sender System - - - - Extra Radio System - Zusätzliches Sende System - - - + Value Wert - + Hold Halte Servopos - + No Pulse keine Pulse + + + Ask + + + + + Internal + Interne + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Eingang - + Weight Gewichtung - + Long. cyc Nick cyc u. Gew - + Lateral cyc Roll cyc u. Gew - + Collective Kollektiv Pitch-Quelle u. Gew - + Flight modes Flugphasen - - + + Flight mode Flugphase - - + + Switch Schalter - + General - + EEprom Size EEpromgröße - + Model Image Modellbild - + Throttle Gas - + Trims Trimmung - + Center Beep MittenBeeps - + Switch Warnings Schalter Warnungen - + Pot Warnings Poti Warnungen - + Other Weitere - + Timers Timer - + Time Zeit - + Countdown Countdown - - Minute call - Minutenansage - - - - Persistence - Dauerhaft - - - + Modules Module - + Trainer port - + Helicopter Hubschrauber - + Swash Taumelscheibe - - + + Type Typ - + Ring Ring - - Fade IN - Fade In - - - - Fade OUT - Fade Out - - - + Protocol Protokoll - + Low - + Critical Kritisch - + Telemetry audio - + Altimetry Höhenanzeige - - + + Vario source Varioquelle - + Vario limits > Variogrenzen > - + Sink max Sinkrate max - + Sink min Sinkrate min - + Climb min Steigrate min - + Climb max Steigrate max - + Center silent Mitte Ruhe - + Top Bar Obere Infozeile am Sender - - + + Volts source Spannung Quelle - + Altitude source Höhe Quelle - + Various Verschiedenes - + Serial protocol Serielles Protokoll - + FAS offset FAS offset - + mAh count mAh zählen - + Persistent mAh Speichern der mAh - + Current source Strom Quelle - + Blades Rotorblätter - + Parameters Parameter - + Telemetry Sensors Telemetriesensoren - + Telemetry Screens Telemetrieanzeigen - - + + GF%1 + GF%1 + + + + Global Functions + Globale Funktionen + + + + Checklist + + + + + GV%1 GV%1 - + RE%1 RE%1 - + Channel Kanal - - - + + + Name Name - - Global variables - Globale Variablen - - - + Prec Prec - + Popup Popup - + Outputs Ausgaben(Servos) - + Subtrim Mitte - + Direct Direkt - + Curve Kurve - + PPM PPM - + Linear Linear - + Telemetry Telemetrie - + Offset Offset - - + + Min Min - - + + Min.call + + + + + Persist + Dauerhaft + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max Max - + Global Variables Globale Variablen - + Inputs Inputs(Geber) - + Mixers Mischer - + Curves Kurven - + L%1 L%1 - + Logical Switches Logische Schalter - + SF%1 SF%1 - + Special Functions Spezial Funktionen - + Analogs Analogwerte - - + + Unit Einheit - + Scale Skalierung - + RSSI Alarms RSSI Alarme @@ -9165,7 +9357,7 @@ If blank then the mix is considered to be "ON" all the time. Subtype Subtyp - + Subtyp @@ -9200,9 +9392,19 @@ If blank then the mix is considered to be "ON" all the time. + Fixed ID value + + + + DEFAULT Standard + + + Custom - proto %1) + + MultirotorPage @@ -9240,12 +9442,12 @@ If blank then the mix is considered to be "ON" all the time. ...plus %1 Fehler - + Cannot write radio settings Kann Sender-Grundeinstellungen nicht speichern - + Cannot write model %1 Kann Model nicht speichern %1 @@ -9320,26 +9522,31 @@ If blank then the mix is considered to be "ON" all the time. + Style + + + + Print Drucken - + Print to file Druck in Datei - + Print Document Drucke Dokument - + Select PDF output file PDF Output Datei wählen - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) @@ -9454,7 +9661,7 @@ If blank then the mix is considered to be "ON" all the time. Type - + Typ @@ -9538,36 +9745,43 @@ If blank then the mix is considered to be "ON" all the time. RadioOutputsWidget + Form Werte + View: Anzeige: + Logical Switches Logische Schalter + Global Variables Globale Variablen + Channel Outputs Kanalwerte + Mix Outputs Mischerwerte + L o g @@ -9581,6 +9795,7 @@ k + G l o @@ -9596,6 +9811,7 @@ l + C h a @@ -9613,6 +9829,7 @@ e + M i x @@ -9626,11 +9843,21 @@ h e r + + + FM%1 + FM%1 + + + + GV%1 + GV%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. Sperren/Freigeben des Tasters. @@ -10078,22 +10305,22 @@ r RawSwitch - + - + - + - - + ! @@ -10312,126 +10539,136 @@ r SensorData - - + + V V - + A A - + mA mA - + kts kts - + m/s m/s - + km/h km/h - + mph mph - + m m - + f f - + °C °C - + °F - + % % - + mAh mAh - + W W - + mW - + dB dB - + rpms rpm - + g g - + ° ° - + Rad - + hours Std - + minutes min - + seconds sec - + TELE Tele + + + Internal + Interne + + + + External + + Setup @@ -10610,15 +10847,25 @@ umgedreht und ist dann vorne. SetupPanel - + Timer %1 Timer %1 - + THR Gas + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10643,182 +10890,192 @@ umgedreht und ist dann vorne. - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -10943,158 +11200,188 @@ Profile ID: [%1]; Radio ID: [%2] Uknown error during Simulator startup. - + Unbekannter Fehler während Simulator startup. SimulatorMainWindow + OpenTx Simulator - + OpenTX Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 F9 + Key Mapping + Show keyboard maping reference. + F1 F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11109,64 +11396,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 F2 - + Telemetry Simulator Telemetrie Simulator - + F4 F4 - + Trainer Simulator Trainer Simulator - + F5 F5 - + Debug Output Debug Ausgabe - + F6 F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11175,64 +11462,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11240,48 +11539,59 @@ The radio type specified in the selected profile is used by default. + + + ... ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File Datei + Folder + SD Path @@ -11310,71 +11620,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Companion Simulator - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Daten Ladefehler - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) - + Cannot open joystick, joystick disabled Kann joystick nicht öffnen, joystick ausgeschaltet @@ -11384,12 +11695,12 @@ The default is configured in the chosen Radio Profile. Right-double-click to reset to center. - + Doppelklick Rechts für Reset in die Mitte. <p>Value (input): <b>%1</b></p> - + <p>Wert (input): <b>%1</b></p> @@ -11433,109 +11744,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11584,66 +12026,66 @@ The default is configured in the chosen Radio Profile. Telemetry - + A1 A1 - + A2 A2 - + RSSI RSSI - + Alarm 1 Alarm 1 - - + + ---- ---- - - + + Yellow Gelb - - + + Orange Orange - - + + Red Rot - + Alarm 2 Alarm 2 - + Serial Protocol Serielles Protokoll - + Volt source Spg Quelle - + Current source Strom Quelle @@ -11653,117 +12095,122 @@ The default is configured in the chosen Radio Profile. Protokoll - + None Kein - + FrSky Sensor Hub FrSky Sensor Hub - + Blades Rotorblätter - + Sink Max Sink Max - + Climb Max Steig Max - + Sink Min Sink Min - + Climb Min Steig Min - + Center Silent Mitte Ruhig - + Vario source Vario Quelle - + Vario limits Vario Grenzen - + Disable telemetry audio warnings Keine Telemetrie Warnungsansage - + + Source + Quelle + + + Altimetry Höhenanzeige - + Altitude source Höhe Quelle - + Volts source Spannung Quelle - + Top Bar obere Infozeile am Sender - + mAh mAh - + A A - + Various Verschiedenes - + Sensors Sensor - + Disable multi sensor handling Kein Multisensor Handling - + mAh count mAh zählen - + FAS Offset FAS Offset - + Persistent mAh Speichern der mAh @@ -11877,7 +12324,7 @@ The default is configured in the chosen Radio Profile. mAmp (mA) - + Range Bereich @@ -11890,22 +12337,22 @@ The default is configured in the chosen Radio Profile. Telemetrie Anzeige als - + None Kein - + Numbers Nummern - + Bars Balken - + Script Script @@ -11933,99 +12380,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + Telemetry screen %1 Telemetrie Bild %1 - + Low Alarm Voralarm - + Critical Alarm Kritischer Alarm - + Winged Shadow How High Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (nicht unterstützt) - - - + + + A1 A1 - + Alti Höhe - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (Kabel) - + + Source + Quelle + + + Alti+ Höhe+ - + VSpeed VSpeed - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Zellen - + --- --- @@ -12038,269 +12490,279 @@ The default is configured in the chosen Radio Profile. Form - + Custom Eigene - + Calculated Berechnung - + Id ID - + Instance SubID - + + Rx + + + + + Mod. + + + + Add Add - + Average Mittelwert - + Min Min - + Max Max - + Multiply Multiplizeren - + Totalize Gesamt - + Cell Zelle - + Consumption Verbrauch - + Dist Dist - + Cells Sensor : Zellensensor: - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : GPS-Sensor: - + Alt. Sensor : Höhensensor: - + Sensor : Sensor: - + V V - + A A - + mA mA - + kt - + m/s m/s - + ft/s - + km/h km/h - + mph mph - + m m - + ft ft - + °C °C - + °F - + % % - + mAh mAh - + W W - + mW - + dBm - + g g - + ° ° - + Rad - + mL - + US fl.Oz. - + Raw (-) Roh (-) - + RPM Drehz - + Precision Precision - + Ratio - + Blades Rotorblätter - + Offset Offset - + Multiplier Muliplikator - + Auto Offset Auto Offset - + Filter Filter - + Persistent Dauerhaft - + Positive Positiv - + Logs Log Daten @@ -12308,22 +12770,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest Niedrigster - + Cell %1 Zelle %1 - + Highest Höchster - + Delta Differenz @@ -12332,545 +12794,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator Telemetrie Simulator - + + VFAS VFAS - + + RSSI RSSI - + + A1 A1 - + + A2 A2 + Simulate Simulation - + + Replay SD Log File - + + Replay rate - + + Load Lade - + + |> - + + <| - + + > > - + + <- - + + X X - + + Row # Timestamp - + + 1/5x 1/5x - + + 5x 5x - + + No Log File Currently Loaded - + + RAS - - - + + + + + + V / ratio - + + Db dB - + + RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 A3 - + + A4 A4 - + + Tmp2 - + + Fuel Fuel - + + + + °C °C - + + ml - - Deg. C - Grad Celsius - - - + + % % - - + + + + Meters Meter - + + Alt Alt - + + VSpd V-Speed - + + m/s m/s - + + Fuel Qty Füllstand - - + + + + km/h km/h - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS GPS - + + Lat,Lon (dec.deg.) - + + AccX AccX - + + dd-MM-yyyy hh:mm:ss - + + Date Datum - + + Amps Ampere - + + AccZ AccZ - + + GAlt - - + + + + Volts Volt - + + Cels Zellen - + + Curr Strom - + + AccY AccY - + + GSpd - + + Degrees Grad - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM RPM + When enabled, sends any non-blank values as simulated telemetry data. - + Log File Logdatei - + LOG Files (*.csv) Logdateien (*.csv) - + ERROR - invalid file Fehler ungültige Datei - - Templates - - - Simple 4-CH - Einfacher 4 Kanal - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - V-Leitwerk - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - SR - - - - - - - - - - - - - ELE - HR - - - - - - THR - Gas - - - - - - - - - - - AIL - QR - - - - - - - AIL2 - QR2 - - - - - - - ELE2 - HR2 - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - SR2 - - - - - Clear Mixes? - Mischer löschen? - - - - Really clear existing mixes on CH6? - Wirklich den Mischer in CH6 löschen? - - - - Really clear existing mixes on CH5? - Wirklich den Mischer in CH5 löschen? - - ThrottlePage @@ -12905,12 +13247,12 @@ hh:mm:ss TimerData - + TMR TMR - + Timer %1 Timer %1 @@ -12942,37 +13284,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Kein - + Beeps Pieps - + Voice Stimme - + Haptic Haptik - + Not persistent Nicht dauerhaft - + Persistent (flight) Dauerhaft für Flug - + Persistent (manual reset) Dauerhaft (per Hand reset) @@ -13104,6 +13446,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator Trainer Simulator @@ -13111,28 +13454,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index Index - + Name Name - + Size Größe - - Models - Translators do NOT use accent for this, this is the default category name on Horus. + + RX # - + + Models + Translators do NOT use accent for this, this is the default category name on Horus. + Modelle + + + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13722,33 +14070,17 @@ Please only use this if you know what you are doing. There are no error checks CPU des Senders - - downloadDialog - - - Downloading: - Herunterladen: - - - - Unable to save the file %1: %2. - Kann Datei %1:%2 nicht abspeichern. - - - - Download failed: %1. - Herunterladen fehlgeschlagen: %1. - - joystickDialog + Configure Joystick Joystick konfigurieren + Ch2 Ch2 @@ -13818,61 +14150,73 @@ Cancel zum abbrechen der Joystickkalibrierung ohne speichern. + Ch1 Ch1 + Ch4 Ch4 + Ch6 Ch6 + Ch3 Ch3 + Ch5 Ch5 + Ch7 Ch7 + Ch8 Ch8 + Instructions Anweisungen + Enable Freigabe + Cancel abbrechen + Back Zurück + Start Start @@ -13883,6 +14227,7 @@ Cancel zum abbrechen der Joystickkalibrierung ohne speichern. + Ok Ok diff --git a/companion/src/translations/companion_en.ts b/companion/src/translations/companion_en.ts index b58791b02..582291683 100644 --- a/companion/src/translations/companion_en.ts +++ b/companion/src/translations/companion_en.ts @@ -57,6 +57,38 @@ + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -70,90 +102,79 @@ - + Profile Name - + Radio Type - + Menu Language - - Voice Language - - - - - Set voice language. -May be different from firmware language - - - - + Build Options - + Splash Screen - + Other Settings - + SD Structure path - - + + The profile specific folder, if set, will override general Backup folder - + Backup folder - + If set it will override the application general setting - + if set, will override general backup enable - - + + Enable automatic backup before writing firmware - + General Settings - + Default Stick Mode - + Mode selection: Mode 1: @@ -176,469 +197,479 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Default Channel Order - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> - + R E T A - + R E A T - + R T E A - + R T A E - + R A E T - + R A T E - + E R T A - + E R A T - + E T R A - + E T A R - + E A R T - + E A T R - + T R E A - + T R A E - + T E R A - + T E A R - + T A R E - + T A E R - + A R E T - + A R T E - + A E R T - + A E T R - + A T R E - + A T E R - + Append version number to FW file name - + Offer to write FW to Tx after download - + Action on New Model - + Screenshot capture folder - + Clear Image - + Select Image - - - - - - + + + + + + Select Folder - + Application Settings - + Automatic check for Companion updates - - Use releases (stable) - - - - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - + most recently used files - + Startup Settings - + Remember - + Show splash screen when Companion starts - + Automatic check for OpenTX firmware updates - + Output Logs Folder - + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - + Remove empty model slots when deleting models (only applies for radios w/out categories) - + Use model wizard - + Open model editor - + Just create the model - + Debug Output Logging - + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Splash Screen Library - + Google Earth Executable - + User Splash Screens - + Automatic Backup Folder - + Only show user splash images - + Show user and companion splash images - + Select Executable - + + Release channel + + + + + Releases (stable) + + + + + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + Simulator Settings - + Calibrate - + Blue - + Green - + Red - + Orange - + Yellow - + Only capture to clipboard - + Enable - + Joystick - + Simulator BackLight - + Remember simulator switch values - + Simulator Volume Gain - + My Radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found - + EMPTY: No radio settings stored in profile - + AVAILABLE: Radio settings of unknown age - + AVAILABLE: Radio settings stored %1 - + Select your library folder - - + + Select your Models and Settings backup folder - + Select a folder for application logs - + Select Google Earth executable - + Select the folder replicating your SD structure - + Open Image to load - + Images (%1) @@ -651,24 +682,24 @@ Mode 4: - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. - + Invalid binary EEPROM file %1 @@ -676,57 +707,58 @@ Mode 4: Boards - + Left Horizontal - + Left Vertical - + Right Vertical - + Right Horizontal - + Aux. 1 - + Aux. 2 - + + Unknown - + Rud - + Ele - + Thr - + Ail @@ -775,82 +807,82 @@ Mode 4: Channels - + Name - + Subtrim - + Min - + Max - + Direction - + Curve - + PPM Center - + Linear Subtrim - + CH%1 - + Popup menu available - + --- - + INV - + &Copy - + &Cut - + &Paste - + &Delete @@ -863,27 +895,32 @@ Mode 4: - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -936,85 +973,193 @@ Mode 4: %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information - + Warning - + Error - - Please Confirm + + Application Settings - + files - + Radio and Models settings - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available - + Uknown error during Simulator startup. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1029,37 +1174,42 @@ Do you want to import them? - + Close - + + Style + + + + Print - + Print to file - + Unnamed Model %1 - + Click to remove this model. - + Print Document - + Select PDF output file @@ -1149,22 +1299,22 @@ Do you want to import them? CurveGroup - + Diff - + Expo - + Func - + Curve @@ -1221,7 +1371,7 @@ Do you want to import them? - + Curve type @@ -1231,117 +1381,127 @@ Do you want to import them? - + Y at X=0 - + + Point size + + + + Y at X=100 - + Both - + x>0 - + x<0 - + Apply - + Side - + Y at X=-100 - + Coefficient - + Curve %1 - + + Popup menu available + + + + %1 points - + Linear - + Single Expo - + Symmetrical f(x)=-f(-x) - + Symmetrical f(x)=f(-x) - + Editing curve %1 - + Not enough free points in EEPROM to store the curve. - + Copy - + Paste - + Clear - + Clear all curves - + Are you sure you want to reset curve %1? - + Are you sure you want to reset all curves? @@ -1349,244 +1509,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF - + Override %1 - + Trainer - + Trainer RUD - + Trainer ELE - + Trainer THR - + Trainer AIL - + Instant Trim - + Play Sound - + Haptic - + Reset - + Set Timer %1 - + Vario - + Play Track - + Play Both - + Play Value - + Play Script - + SD Logs - + Volume - + Backlight - + Screenshot - + Background Music - + Background Music Pause - + Adjust %1 - + SetFailsafe Int. Module - + SetFailsafe Ext. Module - + RangeCheck Int. Module - + RangeCheck Ext. Module - + Bind Int. Module - + Bind Ext. Module - + Timer1 - + Timer2 - + Timer3 - + Flight - + Telemetry - + Rotary Encoder - + REa - + REb - + s - - - + + + <font color=red><b>Inconsistent parameter</b></font> - + Value - - Decr: - - - - - Incr: - - - - + played once, not during startup - + repeat(%1s) - + DISABLED - + CFN @@ -1614,62 +1764,73 @@ Do you want to import them? - + + Popup menu available + + + + SF%1 - + GF%1 - + ON - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value - + Source - + GVAR - + Increment - - Unable to find sound file %1! - - - - + &Copy - + &Cut - + &Paste - + &Delete @@ -1832,69 +1993,53 @@ Do you want to import them? DataField - + Conversion error on field %1 - + Switch - + Switch - + cannot be exported on this board! - + Source - + Source %1 cannot be exported on this board! - + OpenTX only accepts %1 points in all curves - + OpenTx only accepts %1 points in all curves - - - - - - + + OpenTX on this board doesn't accept this function - - OpenTX doesn't accept this telemetry protocol - - - - - OpenTX doesn't allow this number of channels - - - - - - + OpenTX doesn't accept this radio protocol @@ -1903,72 +2048,86 @@ Do you want to import them? DebugOutput + Debug Output + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: + Number of lines to keep in display. + Filter &Help + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear + Clear the output window of all text. + Enable &Filter + Turn the filter on/off. @@ -1983,6 +2142,24 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + + + + + Unable to save the file %1: %2. + + + + + Download failed: %1. + + + EEPROMInterface @@ -2057,22 +2234,17 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - - EepeFormat @@ -2230,7 +2402,7 @@ If blank then the input is considered to be "ON" all the time. - Click to access popup menu + Popup menu available @@ -2330,572 +2502,533 @@ If blank then the input is considered to be "ON" all the time. + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us - + No OverrideCH functions available - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + + Disable HELI menu and cyclic mix support - + + Disable Global variables - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font - - ST7565P LCD or compatible - - - - - ST7565R LCD or compatible - - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - - - - - Support for telemetry easy board - - - - - - Support for jeti telemetry mod - - - - - - Support for receiving ardupilot data - - - - - - Support for receiving NMEA data - - - - - - Support for MAVLINK devices - - - - - Rotary Encoder use in menus navigation - - - - - - - - - - + Pots use in menus navigation - - - - - - Support for DSM2 modules - - - - - Support for DSM2 modules using ppm instead of true serial - - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack - + + Enable non certified firmwares + + + + Disable RAS (SWR) - - - FrSky Taranis X9D - - - - - Haptic module installed - - - - - FrSky Taranis X9E - - - - - Confirmation before radio shutdown - - - - - Horus gimbals installed (Hall sensors) - - - - - FrSky Taranis X7 / X7S - - - - - FrSky Taranis X-Lite - - - - - Use JR-sized R9M module - - - - - FrSky Horus X10 / X10S - - - - - FrSky Horus X12S - - - - - Use ONLY with first DEV pcb version - - - - - Turnigy 9XR-PRO - - - - - - - Enable HELI menu and cyclic mix support - - - - - - - - - - - - - No flight modes - - - - - - - - - - - Global variables - - - - - - - - - - - - - In model setup menus automatically set source by moving the control - - - - - - - - - - - - - In model setup menus automatically set switch by moving the control - - - - - - - - - - - - - No graphical check boxes and sliders - - - - - - - - - - - - - Battery graph + FrSky Taranis X9D+ 2019 - - - - - - - - - Don't use bold font for highlighting active items + FrSky Taranis X9D + + + + + Haptic module installed + + + + + FrSky Taranis X9E - Turnigy 9XR with m128 chip + Confirmation before radio shutdown - - - - - - - Enable heli menu and cyclic mix support - - - - - - - - - - Enable TEMPLATES menu - - - - - - - - No splash screen - - - - - - - - - - Disable curves menus + + Horus gimbals installed (Hall sensors) - - - - - Support for radio modified with regular speaker - - - - - - - - - Used if you have modified your radio with voice mode + FrSky Taranis X9-Lite - - - - - Used if you have modified your radio with haptic mode + + Support for auto update on boot + + + + + FrSky Taranis X7 / X7S + + + + + FrSky Taranis X-Lite S/PRO + + + + + FrSky Taranis X-Lite + + + + + FrSky Horus X10 / X10S - - - - - - PPM center adjustment in limits + FrSky Horus X12S - + + Use ONLY with first DEV pcb version + + + + + Turnigy 9XR-PRO + + + + + Enable HELI menu and cyclic mix support + + + + + Global variables + + + + + In model setup menus automatically set source by moving the control + + + + + In model setup menus automatically set switch by moving the control + + + + + No graphical check boxes and sliders + + + + + Battery graph + + + + + Don't use bold font for highlighting active items + + + + - - - - - Symetrical Limits + Support for ACCESS internal module replacement - - - - - Enable the throttle trace in Statistics + + FrSky Horus X10 Express - - - - - - EEprom write Progress bar - - - - - - - - - - Imperial units - - - - - Turnigy 9XR + + Jumper T12 - - No Winged Shadow How High support + Enable non certified R9M firmwares - - - No vario support + + Turnigy 9XR with m128 chip - - - No GPS support + + Turnigy 9XR - - - No gauges in the custom telemetry screen - - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - - - - + 9X with stock board - - - SmartieParts 2.2 Backlight support - - - - - - - - - + Enable resetting values by pressing up and down at the same time - - EEprom write progress bar - - - - - Allow compensating for offset errors in FrSky FAS current sensors - - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - - - - - - Support of FrSky PXX protocol - - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - - FirmwarePreferencesDialog @@ -2929,6 +3062,11 @@ If blank then the input is considered to be "ON" all the time.Latest Download + + + Unknown + + FlapsPage @@ -2962,7 +3100,7 @@ If blank then the input is considered to be "ON" all the time.FlashEEpromDialog - + Write Models and Settings to Radio @@ -3027,49 +3165,49 @@ If blank then the input is considered to be "ON" all the time. - + Current profile: %1 - + Choose Radio Backup file - + Wrong radio calibration data in profile, Settings not patched - + Wrong radio setting data in profile, Settings not patched - + Cannot write file %1: %2. - + Error writing file %1: %2. - + The radio firmware belongs to another product family, check file and preferences! - + The radio firmware is outdated, please upgrade! - + Cannot check Models and Settings compatibility! Continue anyway? @@ -3256,70 +3394,63 @@ If blank then the input is considered to be "ON" all the time. - + Writing... - + Reading... - + Verifying... - + unknown - + ie: OpenTX for 9X board or OpenTX for 9XR board - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip - + ie: OpenTX for Gruvin9X board - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. - + You are currently using: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. @@ -3373,82 +3504,87 @@ Please use ZADIG to properly install the driver. FlightModePanel - + Rotary Encoder %1 - + Name - + Value source - + Value - + GVAR%1 - + Popup enabled - + + Popup menu available + + + + Trim disabled - + Own Trim - + Use Trim from Flight mode %1 - + Use Trim from Flight mode %1 + Own Trim as an offset - + Unit - + Prec - + Min - + Max - + 0._ - + 0.0 @@ -3473,17 +3609,17 @@ Please use ZADIG to properly install the driver. FlightModesPanel - + Flight Mode %1 - + (%1) - + (default) @@ -3509,17 +3645,17 @@ Please use ZADIG to properly install the driver. FrSkyAlarmData - + Yellow - + Orange - + Red @@ -3528,12 +3664,12 @@ Please use ZADIG to properly install the driver. FrSkyChannelData - + V - + --- @@ -3674,12 +3810,12 @@ p, li { white-space: pre-wrap; } - + Own value - + Flight mode %1 value @@ -3761,7 +3897,7 @@ These will be relevant for all models in the same EEPROM. GeneralSettings - + Radio Settings @@ -3819,162 +3955,164 @@ These will be relevant for all models in the same EEPROM. - + Stick reverse - + Country Code - + FAI Mode - + Automatically adjust the radio's clock if a GPS is connected to telemetry. - + Adjust RTC - + Speaker Volume - - + + Hz - + Vario pitch at max - + Backlight Switch - + Color 1 - + Color 2 - + Sound Mode - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. - + + + sec - + Backlight color - + Speaker Pitch (spkr only) - + Beeper - + Speaker - + BeeperVoice - + SpeakerVoice - + Beep volume - + Wav volume - + Vario volume - + Background volume - - + + ms - + Backlight flash on alarm - + Vario pitch at zero - + Vario repeat at zero - + Backlight Auto OFF after - + This is the switch selectrion for turning on the backlight (if installed). - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3984,57 +4122,57 @@ p, li { white-space: pre-wrap; } - + RotEnc Navigation - + Backlight Brightness - + America - + Japan - + Europe - + Voice Language - + Timeshift from UTC - + Backlight OFF Brightness - + RSSI Poweroff Warning - + Low EEPROM Warning - + Mode selection: Mode 1: @@ -4057,296 +4195,337 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + USB Mode - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A - + R E A T - + R T E A - + R T A E - + R A E T - + R A T E - + E R T A - + E R A T - + E T R A - + E T A R - + E A R T - + E A T R - + T R E A - + T R A E - + T E R A - + T E A R - + T A R E - + T A E R - + A R E T - + A R T E - + A E R T - + A E T R - + A T R E - + A T E R - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + + + + + DMS + + + + Stick Mode - + + Power Off Delay + + + + Metric - + Imperial - + Default Channel Order - + GPS Coordinates - + Min - - + + v - + Max - + Inactivity Timer - + Show Splash Screen on Startup - + Contrast - + Battery Meter Range - + Haptic Strength - + LCD Display Type - + "No Sound" Warning - + Battery Warning - + Haptic Length - + MAVLink Baud Rate - - + + Quiet - + Only Alarms - - + + No Keys - - + + All - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4354,115 +4533,115 @@ Acceptable values are 5v..10v - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. - + min - - + + Show splash screen on startup - + --- - + 2s - + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4477,72 +4656,67 @@ p, li { white-space: pre-wrap; } - - + + X-Short - - + + Short - - + + Normal - - + + Long - - + + X-Long - - hh° (N/S) mm' ss''.dd - - - - + NMEA - + Play Delay (switch mid position) - + Measurement Units - + Haptic Mode - + Beeper Length - + Beeper Mode - + Beeper volume 0 - Quiet. No beeps at all. @@ -4553,7 +4727,7 @@ p, li { white-space: pre-wrap; } - + Alarms Only @@ -4561,127 +4735,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF - + Keys - + Sticks - + Keys + Sticks - + ON - + English - + Dutch - + French - + Italian - + German - + Czech - + Slovak - + Spanish - + Polish - + Portuguese - + Russian - + Swedish - + Hungarian - + No No - + RotEnc A - + Rot Enc B - + Rot Enc C - + Rot Enc D - + Rot Enc E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4714,257 +4888,247 @@ Are you sure ? - + SQ - + SR - + LS2 - + SP - + SO - + S4 - + RS - + SB - + PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - - - - OFF - + S-Port Mirror - + Telemetry - + SBUS Trainer - + Debug - + Rud - + PPM 3 - + S1 - + S2 - + S3 - + PPM 1 - + Serial Port - + v - + PPM Multiplier - + Current Offset - + PPM 4 - + SA - + Ele - + + Antenna + + + + + S5 + + + + Ail - + Thr - + SC - + LS - + SD - + Battery Offset - + SE - + SF - + SG - + SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 - + Bluetooth - + ADC Filter - + Device Name: @@ -4973,8 +5137,8 @@ Are you sure ? HardwarePanel - - + + None @@ -4994,25 +5158,70 @@ Are you sure ? - + Pot with detent - + Multipos switch - + Pot without detent - + Slider with detent + + + OFF + + + + + Enabled + + + + + Telemetry + + + + + Trainer + + + + + Internal + + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5134,25 +5343,25 @@ Are you sure ? InputsPanel - + Move Up - + Ctrl+Up - + Move Down - + Ctrl+Down @@ -5162,92 +5371,92 @@ Are you sure ? - + Not enough available inputs! - + Delete Selected Inputs? - + &Add - + Ctrl+A - + &Edit - + Enter - + &Delete - + Delete - + &Copy - + Ctrl+C - + &Cut - + Ctrl+X - + &Paste - + Ctrl+V - + Du&plicate - + Ctrl+U - + Clear Inputs? - + Really clear all the inputs? @@ -5404,62 +5613,67 @@ Are you sure ? LogicalSwitchesPanel - + Function - + V1 - + V2 - + AND Switch - + Duration - + Delay - + + Popup menu available + + + + (infinite) - + (instant) - + &Copy - + &Cut - + &Paste - + &Delete @@ -5553,7 +5767,7 @@ Are you sure ? - Error: no GPS data not found + Error: no GPS data found @@ -5564,73 +5778,73 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt - + Cannot write file %1: %2. - + Cursor A: %1 m - + Cursor B: %1 m - + Time delta: %1 - + Climb rate: %1 m/s - + Select your log file - + Available fields - + The selected logfile contains %1 invalid lines out of %2 total lines - + total duration - + duration - + (L1) - + (R1) - + (L2) - + (R2) @@ -5638,140 +5852,120 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt MainWindow - - + + File loaded - + Checking for updates - - Unable to check for updates. - - - - + A new version of Companion is available (version %1)<br>Would you like to download it? - - + + Save As - + Executable (*.exe) - + New release available - - + + No updates available at this time. - - + + Would you like to launch the installer? - + Error opening file %1: %2. - + Not enough flash available on this board for all the selected options - + Compilation server temporary failure, try later - + Compilation server too busy, try later - + Compilation error - + Invalid firmware - + Invalid board - + Invalid language - + Unknown server failure, try later - + Do you want to write the firmware to the radio now ? - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - - - - - + + Yes - - + + No No - - + + Release Notes - - - Do you want to download release %1 now ? - - - - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -5782,834 +5976,844 @@ We recommend you view the release notes using the button below to learn about an - - Ignore this release %1? - - - - + The new theme will be loaded the next time you start Companion. - - + + Open Models and Settings file - - + + File saved - - + + Synchronize SD - - + + Read Firmware from Radio - - + + Read Models and Settings from Radio - + Models and Settings read - - + + This function is not yet implemented - + Save Radio Backup to File - + Read Radio Firmware to File - + OpenTX Home Page: <a href='%1'>%1</a> - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> - + Copyright OpenTX Team - + About Companion - + OpenTX Companion %1 - Radio: %2 - Profile: %3 - + New - + Create a new Models and Settings file - + Open... - + Save - - + + Save Models and Settings file - + Save As... - + Exit - + Exit the application - + Create a new Radio Settings Profile - + Copy Current Radio Profile - + Duplicate current Radio Settings Profile - + Delete the current Radio Settings Profile - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Classical - + The classic companion9x icon theme - + Yerico - + Yellow round honey sweet icon theme - + Monochrome - + A monochrome black icon theme - + MonoWhite - + A monochrome white icon theme - + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + Tabbed Windows - + Tile Windows - + Cascade Windows - + Close All Windows - + Alt+%1 - + - Copy - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile - + The default profile can not be removed. - + Confirm Delete Profile - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - + MonoBlue - + Delete Current Radio Profile... - + Use tabs to arrange open windows. - + Arrange open windows across all the available space. - + Arrange all open windows in a stack. - + Closes all open files (prompts to save if necessary. - + Window - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + A monochrome blue icon theme - + Small - + Use small toolbar icons - + Normal - + Use normal size toolbar icons - + Big - + Use big toolbar icons - + Huge - + Use huge toolbar icons - + System language - + About... - - Show the application's About box + + No Companion release candidates are currently being served for this version, please switch release channel - - View Log File... - - - - - Open and view log file - - - - - Settings... - - - - - Edit Settings - - - - - Download... - - - - - Download firmware and voice files - - - - - Check for Updates... - - - - - Check OpenTX and Companion updates - - - - - Compare Models... - - - - - Compare models - - - - - Edit Radio Splash Image... - - - - - Edit the splash image of your Radio - - - - - List programmers... - - - - - List available programmers - - - - - Fuses... - - - - - Show fuses dialog - - - - - Read firmware from Radio - - - - - Write Firmware to Radio - - - - - Write firmware to Radio - - - - - Add Radio Profile - - - - - Manuals and other Documents - - - - - Diskimage (*.dmg) - - - - - Would you like to open the disk image to install the new version? - - - - - Show this message again at next startup? + + No nightly Companion builds are currently being served for this version, please switch release channel + No Companion release builds are currently being served for this version, please switch release channel + + + + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + + Show the application's About box + + + + + View Log File... + + + + + Open and view log file + + + + + Settings... + + + + + Edit Settings + + + + + Download... + + + + + Download firmware and voice files + + + + + Check for Updates... + + + + + Check OpenTX and Companion updates + + + + + Compare Models... + + + + + Compare models + + + + + Edit Radio Splash Image... + + + + + Edit the splash image of your Radio + + + + + List programmers... + + + + + List available programmers + + + + + Fuses... + + + + + Show fuses dialog + + + + + Read firmware from Radio + + + + + Write Firmware to Radio + + + + + Write firmware to Radio + + + + + Add Radio Profile + + + + + Manuals and other Documents + + + + + Diskimage (*.dmg) + + + + + Would you like to open the disk image to install the new version? + + + + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! - - :: Options - - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - + Close - + Close Models and Settings file - + List of recently used files - + Radio Profiles - + Create or Select Radio Profiles - + Release notes... - + Show release notes - + Open the OpenTX document page in a web browser - + Write Models and Settings To Radio - + Write Models and Settings to Radio - + Read Models and Settings From Radio - + Configure Communications... - + Configure software for communicating with the Radio - + Write Backup to Radio - + Write Backup from file to Radio - + Backup Radio to File - + Save a complete backup file of all settings and model data in the Radio - + Contributors... - + A tribute to those who have contributed to OpenTX and Companion - + SD card synchronization - + Use default system language. - + Use %1 language (some translations may not be complete). - + Recent Files - + Set Menu Language - + Set Icon Theme - + Set Icon Size - - + + File - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - - + + Edit - + Settings - + Read/Write - - + + Help - + Write - + Ready - + %2 - + New Radio @@ -6617,12 +6821,12 @@ Do you wish to continue? MdiChild - + Alt+S - + Delete %n selected model(s)? Delete %n selected model? @@ -6630,174 +6834,174 @@ Do you wish to continue? - + Edit Radio Settings - + Alt+Shift+E - + Copy Radio Settings - + Ctrl+Alt+C - + Paste Radio Settings - + Ctrl+Alt+V - + Simulate Radio - + Alt+Shift+S - + Alt+C - + Alt+R - + Alt+A - + Alt+W - + Duplicate Model - + Alt+U - + Print Model - + Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + Cannot insert model, last model in list would be deleted. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Do you want to overwrite radio general settings? - + free bytes - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + This category is not empty! - + New model Translators: do NOT use accents here, this is a default model name. - + Cannot add model, could not find an available model slot. - + Cut - + Copy - + Paste - + Insert - + Rename Category - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6806,7 +7010,7 @@ Do you wish to continue? - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6815,7 +7019,7 @@ Do you wish to continue? - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6824,72 +7028,72 @@ Do you wish to continue? - + Nothing selected - + Edit Model - + Delete - + Add Category - + Category - + Add Model - + Restore from Backup - + Model Wizard - + Set as Default - + Simulate Model - + Move to Category - + Category index out of range. - + Cannot delete the last category. - + Delete %n selected category(ies)? Delete %n selected category? @@ -6897,90 +7101,90 @@ Do you wish to continue? - + Cannot duplicate model, could not find an available model slot. - + Editing model %1: - + Save As - + %1 has been modified. Do you want to save your changes? - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Unable to find Horus radio SD card! - + Models and Settings written - + Cannot write temporary file! - + Open backup Models and Settings file - + Unable to find file %1! - + Error opening file %1: %2. - + Error reading file %1: %2. - + Invalid binary backup File %1 @@ -7215,22 +7419,22 @@ If blank then the mix is considered to be "ON" all the time. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7239,25 +7443,25 @@ If blank then the mix is considered to be "ON" all the time. MixesPanel - + Move Up - + Ctrl+Up - + Move Down - + Ctrl+Down @@ -7267,102 +7471,102 @@ If blank then the mix is considered to be "ON" all the time. - + Not enough available mixers! - + Delete Selected Mixes? - + &Add - + Ctrl+A - + &Edit - + Enter - + &Toggle highlight - + Ctrl+T - + &Delete - + Delete - + &Copy - + Ctrl+C - + C&ut - + Ctrl+X - + &Paste - + Ctrl+V - + Du&plicate - + Ctrl+U - + Clear Mixes? - + Really clear all the mixes? @@ -7370,12 +7574,12 @@ If blank then the mix is considered to be "ON" all the time. ModelData - + Model: - + Throttle Source @@ -7446,878 +7650,784 @@ If blank then the mix is considered to be "ON" all the time. ModelPrinter - + Exponential - + Extra Fine - + Fine - + Medium - + Coarse - + Unknown - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Master/Jack - + Enable - + Disable - + True - + False - + Yes - + No No - + Y - + N - + ON - - - - + + + + OFF - - - - - - - - - - - - - ??? - - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - - - - - 25mW - - - - - + + Mode - - + + Channels - - + + Frame length - + PPM delay - - + + Polarity - + Protocol - - - + + + Delay - - + + Receiver - + Radio protocol - + Subtype - + Option value - + Sub Type - + RF Output Power - - Telemetry - - - - - - ???? - - - - + 90 - + 120 - + 120X - + 140 - + Off - - Rudder - - - - - Elevator - - - - - Throttle - - - - - Aileron - - - - - - - - - + + + + + + None - + Name - + Countdown - + Minute call - + MULT! - - + + Offset - + Slow - + Warn - + Flight modes - + Flight mode - + All - + Edge - + Sticky - + Timer - + missing - + Duration - + Extended Limits - + Display Checklist - + Global Functions - + Manual - + Auto - + Failsafe Mode - - + + Hold - + No Pulse - + Not set - + No pulses - + Silent - + Beeps - + Voice - + Haptic - + Flight - + Manual reset - + Step - + Display - + Extended - + Never - + On Change - + Always - - Trainer Port - - - - - Internal Radio System - - - - - External Radio Module - - - - - - Radio System - - - - - Extra Radio System - - - - - - + + + Source - + Trim idle only - + Warning - + Reversed - + Tmr - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells - + Calculated - + Add - + Average - - + + Min - - + + Max - + Multiply - + Totalise - + Cell - + Consumption - + Distance - + Lowest - + Cell %1 - + Highest - + Delta - + Formula - - + + Id - + Instance - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades - + Multi. - + F - + Inst - + Alt - + Unit - + Prec - + Ratio - + Multi - + A/Offset - + Filter - + Persist - + Positive - + Log - + Numbers - + Bars - + Script - + Filename - + + Error: Unable to open or read file! + + + + Persistent - - - + + + FM%1 - + FM%1%2 - + FM%1+%2 - - + + Weight - - + + Switch - - + + NoTrim - + Offset(%1) - + No DR/Expo - + Disabled in all flight modes - + instant - - - + + + Custom - + Standard @@ -8378,42 +8488,59 @@ If blank then the mix is considered to be "ON" all the time. - + + Receiver 1 + + + + + + + X + + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Antenna - - Internal - - - - - Ext. + Int. - - - - + Output type - + Open Drain - + Push Pull - + Option value - + Channels @@ -8428,148 +8555,138 @@ If blank then the mix is considered to be "ON" all the time. - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Bind on startup - + Low Power - + PPM delay - + us - + PPM Frame Length - + ms - + Protocol - + + Registration ID + + + + Multi Radio Protocol - + Sub Type - + + WARNING: Requires non-certified firmware! + + + + Failsafe Mode - + Not set - + Hold - + Custom - + No Pulses - + Receiver - + Trainer Mode - + Master/Jack - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Failsafe Positions - + Show values in: - + % abbreviation for percent - + μs abbreviation for microseconds @@ -8578,490 +8695,572 @@ If blank then the mix is considered to be "ON" all the time. ModuleData - + Positive - + Negative + + + Trainer Port + + + + + Internal Radio System + + + + + External Radio Module + + + + + Extra Radio System + + + + + Radio System + + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - - - - - Internal Radio System - - - - - External Radio Module - - - - - - Radio System - - - - - Extra Radio System - - - - + Value - + Hold - + No Pulse + + + Ask + + + + + Internal + + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input - + Weight - + Long. cyc - + Lateral cyc - + Collective - + Flight modes - - + + Flight mode - - + + Switch - + General - + EEprom Size - + Model Image - + Throttle - + Trims - + Center Beep - + Switch Warnings - + Pot Warnings - + Other - + Timers - + Time - + Countdown - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter - + Swash - - + + Type - + Ring - - Fade IN - - - - - Fade OUT - - - - + Protocol - + Low - + Critical - + Telemetry audio - + Altimetry - - + + Vario source - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar - - + + Volts source - + Altitude source - + Various - + Serial protocol - + FAS offset - + mAh count - + Persistent mAh - + Current source - + Blades - + Parameters - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + + + + + Global Functions + + + + + Checklist + + + + + GV%1 - + RE%1 - + Channel - - - + + + Name - - Global variables - - - - + Prec - + Popup - + Outputs - + Subtrim - + Direct - + Curve - + PPM - + Linear - + Telemetry - + Offset - - + + Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max - + Global Variables - + Inputs - + Mixers - + Curves - + L%1 - + Logical Switches - + SF%1 - + Special Functions - + Analogs - - + + Unit - + Scale - + RSSI Alarms @@ -9105,9 +9304,19 @@ If blank then the mix is considered to be "ON" all the time. + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9145,12 +9354,12 @@ If blank then the mix is considered to be "ON" all the time. - + Cannot write radio settings - + Cannot write model %1 @@ -9223,26 +9432,31 @@ If blank then the mix is considered to be "ON" all the time. - Print + Style + Print + + + + Print to file - + Print Document - + Select PDF output file - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) @@ -9440,36 +9654,43 @@ If blank then the mix is considered to be "ON" all the time. RadioOutputsWidget + Form + View: + Logical Switches + Global Variables + Channel Outputs + Mix Outputs + L o g @@ -9479,6 +9700,7 @@ c + G l o @@ -9489,6 +9711,7 @@ l + C h a @@ -9501,6 +9724,7 @@ s + M i x @@ -9508,11 +9732,21 @@ e s + + + FM%1 + + + + + GV%1 + + RadioSwitchWidget - + Latch/unlatch the momentary switch. @@ -9960,22 +10194,22 @@ s RawSwitch - + - + - + - - + ! @@ -10193,126 +10427,136 @@ s SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + + + + + External + + Setup @@ -10488,15 +10732,25 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi SetupPanel - + Timer %1 - + THR + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10521,182 +10775,192 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -10828,151 +11092,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -10987,64 +11281,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator - + F4 - + Trainer Simulator - + F5 - + Debug Output - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11053,64 +11347,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11118,48 +11424,59 @@ The radio type specified in the selected profile is used by default. + + + ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File + Folder + SD Path @@ -11188,71 +11505,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Cannot open joystick, joystick disabled - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) @@ -11311,109 +11629,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11467,181 +11916,186 @@ The default is configured in the chosen Radio Profile. - + Alarm 1 - - + + ---- - - + + Yellow - - + + Orange - - + + Red - + Alarm 2 - + RSSI - + Disable telemetry audio warnings - + + Source + + + + A1 - + A2 - + Sink Max - + Climb Max - + Sink Min - + Climb Min - + Center Silent - + Vario limits - + Vario source - + Altimetry - + Altitude source - + Volts source - + Top Bar - + Volt source - + Current source - + Blades - + mAh count - + mAh - + A - + FAS Offset - + Persistent mAh - + Various - + Serial Protocol - + None - + FrSky Sensor Hub - + Sensors - + Disable multi sensor handling @@ -11755,7 +12209,7 @@ The default is configured in the chosen Radio Profile. - + Range @@ -11788,22 +12242,22 @@ The default is configured in the chosen Radio Profile. - + None - + Numbers - + Bars - + Script @@ -11811,99 +12265,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + Telemetry screen %1 - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + + Source + + + + Low Alarm - + Critical Alarm - + Winged Shadow How High - + Winged Shadow How High (not supported) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells - + --- @@ -11916,269 +12375,279 @@ The default is configured in the chosen Radio Profile. - + Custom - + Calculated - + Id - + Instance - + + Rx + + + + + Mod. + + + + Add - + Average - + Min - + Max - + Multiply - + Totalize - + Cell - + Consumption - + Dist - + Cells Sensor : - - - - - - - - + + + + + + + + --- - + GPS Sensor : - + Alt. Sensor : - + Sensor : - + Raw (-) - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + RPM - + g - + ° - + Rad - + mL - + US fl.Oz. - + Precision - + Ratio - + Blades - + Offset - + Multiplier - + Auto Offset - + Filter - + Persistent - + Positive - + Logs @@ -12186,22 +12655,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest - + Cell %1 - + Highest - + Delta @@ -12210,545 +12679,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator + When enabled, sends any non-blank values as simulated telemetry data. + Simulate - + + Replay SD Log File - + + Replay rate - + + Load - + + |> - + + <| - + + > - + + <- - + + X - + + Row # Timestamp - + + 1/5x - + + 5x - + + No Log File Currently Loaded - + + RAS - + + A2 - - - + + + + + + V / ratio - + + Db - + + RxBt - + + A1 - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 - + + A4 - + + RSSI - + + Tmp2 - - + + + + RPM - + + Fuel - + + + + °C - + + ml - - Deg. C - - - - + + % - - + + + + Meters - + + Alt - + + VSpd - + + m/s - + + Fuel Qty - - + + + + km/h - + + VFAS - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS - + + Lat,Lon (dec.deg.) - + + AccX - + + dd-MM-yyyy hh:mm:ss - + + Date - + + Amps - + + AccZ - + + GAlt - - + + + + Volts - + + Cels - + + Curr - + + AccY - + + GSpd - + + Degrees - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + Log File - + LOG Files (*.csv) - + ERROR - invalid file - - Templates - - - Simple 4-CH - - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - - - - - - - - - - - - - - ELE - - - - - - - THR - - - - - - - - - - - - AIL - - - - - - - - AIL2 - - - - - - - - ELE2 - - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - - - - - - Clear Mixes? - - - - - Really clear existing mixes on CH6? - - - - - Really clear existing mixes on CH5? - - - ThrottlePage @@ -12783,12 +13132,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 @@ -12820,37 +13169,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent - + Beeps - + Voice - + Haptic - + Not persistent - + Persistent (flight) - + Persistent (manual reset) @@ -12976,6 +13325,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator @@ -12983,28 +13333,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index - + Name - + Size - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13591,98 +13946,95 @@ m2560 for v4.1 boards - - downloadDialog - - - Downloading: - - - - - Unable to save the file %1: %2. - - - - - Download failed: %1. - - - joystickDialog + Configure Joystick + Ch2 + Ch1 + Ch4 + Ch6 + Ch3 + Ch5 + Ch7 + Ch8 + Instructions + Enable + Cancel + Back + Start + Ok diff --git a/companion/src/translations/companion_es.ts b/companion/src/translations/companion_es.ts index bbeaabfcd..7e1cf51d6 100644 --- a/companion/src/translations/companion_es.ts +++ b/companion/src/translations/companion_es.ts @@ -57,6 +57,38 @@ Segundo Canal Aerofreno: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -70,32 +102,32 @@ Perfil de Radio - + Default Channel Order Orden Prederterminado Canales - + Build Options Opciones Firmware - + Menu Language Lenguaje Menú - + Default Stick Mode Modo Prederterminado Sticks - + Select Image Seleccionar Imagen - + Mode selection: Mode 1: @@ -136,528 +168,526 @@ Modo 4: - + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Modo 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Modo 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Modo 4 (AIL THR ELE RUD) - + Splash Screen Pantalla de Inicio - - + + The profile specific folder, if set, will override general Backup folder - + Backup folder - + If set it will override the application general setting - + if set, will override general backup enable - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Orden de los canales</p><p><br/></p><p>Define el orden por defecto de las mezclas en un nuevo modelo</p></body></html> - + R E T A R E T A - + R E A T R E A T - + R T E A R T E A - + R T A E R T A E - + R A E T R A E T - + R A T E R A T E - + E R T A E R T A - + E R A T E R A T - + E T R A E T R A - + E T A R E T A R - + E A R T E A R T - + E A T R E A T R - + T R E A T R E A - + T R A E T R A E - + T E R A T E R A - + T E A R T E A R - + T A R E T A R E - + T A E R T A E R - + A R E T A R E T - + A R T E A R T E - + A E R T A E R T - + A E T R A E T R - + A T R E A T R E - + A T E R A T E R - - - - - - + + + + + + Select Folder - + Select Executable - - Simulator Volume Gain + + Release channel - - Profile Name - Nombre de Perfil - - - - Clear Image - Limpiar Imagen - - - - Append version number to FW file name - Agregar el número de version al nombre de archivo de Firmware - - - - Offer to write FW to Tx after download - Ofrecer grabar el firmware al Tx después de la descarga - - - - Radio Type - Tipo de Radio - - - - Other Settings - Otros Ajustes - - - - General Settings - Ajustes Generales - - - - SD Structure path - Estructura de archivos SD - - - - Set voice language. -May be different from firmware language - Seleccionar el lueaje de las voces. -Puede ser diferente del lenguaje del firmware - - - - Voice Language - Lenguaje de las Voces - - - - Application Settings - Ajustes Aplicación - - - - Show splash screen when Companion starts - Mostrar pantalla de inicion cuando Companion comience - - - - Automatic check for Companion updates - Comprobar automáticamente actualizaciones de Companion - - - - - Enable automatic backup before writing firmware - Activar copia de seguridad automática antes de escribir el firmware - - - - Automatic check for OpenTX firmware updates - Comprobar auromaticamente actualizaciones del firmware OpenTX - - - - Splash Screen Library - Libreria de pantallas de inicio - - - - Google Earth Executable - Ejecutable Google Earth - - - - Only show user splash images - Mostrar solo pantallas de inicio del usuario - - - - Show user and companion splash images - Mostrar pantallas de inicio del usuario y companion - - - - User Splash Screens - Pantallas de Inicio del Usuario - - - - Automatic Backup Folder - Carpeta copia de seguridad Automática - - - - Simulator Settings - Ajustes Simulador - - - - Simulator BackLight - Luz de fondo del simulador - - - - Enable - Activado - - - - Use releases (stable) - - - - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - - most recently used files - - - - - Startup Settings - - - - - Remember - - - - - Output Logs Folder - - - - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - - - - - Use model wizard - - - - - Open model editor - - - - - Just create the model - - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + + + + + Profile Name + Nombre de Perfil + + + + Clear Image + Limpiar Imagen + + + + Append version number to FW file name + Agregar el número de version al nombre de archivo de Firmware + + + + Offer to write FW to Tx after download + Ofrecer grabar el firmware al Tx después de la descarga + + + + Radio Type + Tipo de Radio + + + + Other Settings + Otros Ajustes + + + + General Settings + Ajustes Generales + + + + SD Structure path + Estructura de archivos SD + + + + Application Settings + Ajustes Aplicación + + + + Show splash screen when Companion starts + Mostrar pantalla de inicion cuando Companion comience + + + + Automatic check for Companion updates + Comprobar automáticamente actualizaciones de Companion + + + + + Enable automatic backup before writing firmware + Activar copia de seguridad automática antes de escribir el firmware + + + + Automatic check for OpenTX firmware updates + Comprobar auromaticamente actualizaciones del firmware OpenTX + + + + Splash Screen Library + Libreria de pantallas de inicio + + + + Google Earth Executable + Ejecutable Google Earth + + + + Only show user splash images + Mostrar solo pantallas de inicio del usuario + + + + Show user and companion splash images + Mostrar pantallas de inicio del usuario y companion + + + + User Splash Screens + Pantallas de Inicio del Usuario + + + + Automatic Backup Folder + Carpeta copia de seguridad Automática + + + + Simulator Settings + Ajustes Simulador + + + + Simulator BackLight + Luz de fondo del simulador + + + + Enable + Activado + + + + most recently used files + + + + + Startup Settings + + + + + Remember + + + + + Output Logs Folder + + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + + + + + Use model wizard + + + + + Open model editor + + + + + Just create the model + + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Action on New Model - + Blue Azul - + Green Verde - + Red Rojo - + Orange Naranja - + Yellow Amarillo - + Screenshot capture folder - + Joystick Joystick - + Calibrate Calibrar - + Only capture to clipboard Solo capturar a portapapeles - + Remember simulator switch values Recordar los valores de los switch en el simulador - + My Radio Mi Radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Selecciona tu carpeta de capturas - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found No se han encopntrado joysticks - + EMPTY: No radio settings stored in profile VACIO: No se han guardado ajustes en el perfil de tu radio - + AVAILABLE: Radio settings of unknown age DISPONIBLE:Ajustes de radio de tiempo desconocido - + AVAILABLE: Radio settings stored %1 DISPONIBLE: Ajustes de radio guardados %1 - + Select your library folder Selecciona tu carpeta de una carpeta - - + + Select your Models and Settings backup folder Selecciona la carpeta de seguridad de tus modelos y ajustes - + Select a folder for application logs - + Select Google Earth executable Selecciona el ejecutable de Google Earth - + Select the folder replicating your SD structure Selecciona la carpeta que replica la structura de tu tarjeta SD - + Open Image to load Abrir imagen para cargar - + Images (%1) Imagenes (%1) @@ -670,25 +700,25 @@ Puede ser diferente del lenguaje del firmware - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. Error escribiendo el archivo %1: %2. - + Invalid binary EEPROM file %1 @@ -696,57 +726,58 @@ Puede ser diferente del lenguaje del firmware Boards - + Left Horizontal Izquierda Hrizontal - + Left Vertical Izquierda Vertical - + Right Vertical Derecha Vertical - + Right Horizontal Derecha Horizontal - + Aux. 1 - + Aux. 2 - + + Unknown Desconocido - + Rud Rud - + Ele Ele - + Thr Thr - + Ail Ail @@ -795,82 +826,82 @@ Puede ser diferente del lenguaje del firmware Channels - + Name Nombre - + Min Min - + Max Max - + Subtrim Subtrim - + Direction Dirección - + Curve Curva - + PPM Center Centro PPM - + Linear Subtrim Subtrim lineal - + CH%1 - + Popup menu available - + --- --- - + INV INV - + &Copy &Copiar - + &Cut C&ortar - + &Paste &Pegar - + &Delete &Borrar @@ -883,27 +914,32 @@ Puede ser diferente del lenguaje del firmware - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -957,85 +993,193 @@ Puede ser diferente del lenguaje del firmware %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information Información - + Warning Aviso - + Error Error - - Please Confirm - + + Application Settings + Ajustes Aplicación - + files - + Radio and Models settings - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available El simulador para este firmware ya no está disponible - + Uknown error during Simulator startup. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1050,37 +1194,42 @@ Do you want to import them? - + Close Cerrar - + + Style + + + + Print Imprimir - + Print to file Imprimir a archivo - + Unnamed Model %1 - + Click to remove this model. - + Print Document Imprimir documento - + Select PDF output file Seleccionar archivo de salida PDF @@ -1170,22 +1319,22 @@ Do you want to import them? CurveGroup - + Diff Diff - + Expo Expo - + Func Func - + Curve Curva @@ -1237,7 +1386,7 @@ Do you want to import them? - + Curve type Tipo de Curva @@ -1247,47 +1396,52 @@ Do you want to import them? Creador de curva - + Y at X=0 Y a X=0 - + + Point size + + + + Y at X=100 Y a X=100 - + Both Ambos - + x>0 x>0 - + x<0 x<0 - + Apply Aplicar - + Side Cara - + Y at X=-100 Y a X=-100 - + Coefficient Coeficiente @@ -1297,72 +1451,77 @@ Do you want to import them? Nombre de la curva - + Curve %1 Curva %1 - + + Popup menu available + + + + %1 points %1 puntos - + Linear Lineal - + Single Expo Expo Unico - + Symmetrical f(x)=-f(-x) Simetricas f(x)=-f(-x) - + Symmetrical f(x)=f(-x) Simetricas f(x)=f(-x) - + Copy - + Paste - + Clear - + Clear all curves - + Are you sure you want to reset curve %1? - + Are you sure you want to reset all curves? - + Editing curve %1 Edición de curva %1 - + Not enough free points in EEPROM to store the curve. No hay suficientes puntos en el EEPROM para guardar la curva. @@ -1370,244 +1529,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF SF - + Override %1 Invalidar %1 - + Trainer - + Trainer - + Trainer RUD Entrenador RUD - + Trainer ELE Entrenador ELE - + Trainer THR Entrenador THR - + Trainer AIL Entrenador AIL - + Instant Trim Trim Instantáneo - + Play Sound Reproducir Sonido - + Haptic Reproducir Haptic - + Reset Resetear - + Set Timer %1 Ajustar temporizador %1 - + Vario - + Play Track Reproducir Pista - + Play Both Reproducir Ambos - + Play Value Reproducir Valor - + Play Script - + SD Logs - + Volume Volumen - + Backlight Luz de Fondo - + Screenshot - + Background Music Música de Fondo - + Background Music Pause Pausar Música de Fondo - + Adjust %1 - + SetFailsafe Int. Module - + SetFailsafe Ext. Module - + RangeCheck Int. Module - + RangeCheck Ext. Module - + Bind Int. Module - + Bind Ext. Module - + Timer1 Temporizador1 - + Timer2 Temporizador 2 - + Timer3 Temporizador 3 - + Flight - + Telemetry Telemetría - + Rotary Encoder Codificador Rotativo - + REa - + REb - + s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>Parámetro Inconsistente</b></font> - + Value Valor - - Decr: - - - - - Incr: - - - - + played once, not during startup - + repeat(%1s) - + DISABLED - + CFN @@ -1635,62 +1784,73 @@ Do you want to import them? Activar - + + Popup menu available + + + + SF%1 SF%1 - + GF%1 - + ON ON - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Valor - + Source - + GVAR GVAR - + Increment Incremento - - Unable to find sound file %1! - ¡No se ha encontrado el archivo de sonido %1! - - - + &Delete &Borrar - + &Copy &Copiar - + &Cut C&ortar - + &Paste &Pegar @@ -1853,69 +2013,53 @@ Do you want to import them? DataField - + Conversion error on field %1 - + Switch - + Switch - + cannot be exported on this board! - + Source - + Source %1 cannot be exported on this board! - + OpenTX only accepts %1 points in all curves OpenTx solo aceta %1 puntos en todas las curvas - + OpenTx only accepts %1 points in all curves OpenTx solo aceta %1 puntos en todas las curvas - - - - - - + + OpenTX on this board doesn't accept this function OpenTX en esta placa no acepta esa función - - OpenTX doesn't accept this telemetry protocol - OpenTX en esta placa no acepta este protocolo de telemetría - - - - OpenTX doesn't allow this number of channels - OpenTX en esta placa no acepta este número de canales - - - - - + OpenTX doesn't accept this radio protocol OpenTX en esta placa no acepta este protocolo de radio @@ -1924,72 +2068,86 @@ Do you want to import them? DebugOutput + Debug Output + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: + Number of lines to keep in display. + Filter &Help + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear + Clear the output window of all text. + Enable &Filter + Turn the filter on/off. @@ -2004,6 +2162,24 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + Descargando: + + + + Unable to save the file %1: %2. + No se puede guardar el archivo %1: %2. + + + + Download failed: %1. + Descarga fallida: %1. + + EEPROMInterface @@ -2078,22 +2254,17 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - - EepeFormat @@ -2252,7 +2423,7 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo - Click to access popup menu + Popup menu available @@ -2352,572 +2523,533 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Canal de roll: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Cerrar + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + Comenzar + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Visualizar los valores de canal en us - + No OverrideCH functions available No hay funciones OverrideCH disponibles - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + + Disable HELI menu and cyclic mix support Desactivar el menú de HELI y el soporte de mezcla de cíclico - + + Disable Global variables Desactivar las variables Globales - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font Usar fuente alternativa SQT5 - - ST7565P LCD or compatible - - - - - ST7565R LCD or compatible - - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - Mod de soporte para telemetría frsky - - - - Support for telemetry easy board - Soporte para para placa sencilla de telemetría - - - - - Support for jeti telemetry mod - Mod de soporte para tele,etría jeti - - - - - Support for receiving ardupilot data - Soporte para recepción de datos ardupilot - - - - - Support for receiving NMEA data - Soporte para recepción de datos NMEA - - - - - Support for MAVLINK devices - Soporte para dispositivos MAVLINK - - - - Rotary Encoder use in menus navigation - Uso de codificador rotativo en los menús de navegación - - - - - - - - - + Pots use in menus navigation Usar potenciómetros en los menús de navegación - - - - - - Support for DSM2 modules - Soporte para los módulos DSM2 - - - - Support for DSM2 modules using ppm instead of true serial - Soporte para módulos DSM2 que usan PPM en lugar de true serial - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D - + Haptic module installed Módulo Haptic instalado - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support Activar menú HELI y el soporte de mezcla de cíclico - - - - - - - - - - No flight modes - Sin modos de vuelo - - - - - - - - - - - + Global variables Variables globales - - - - - - - - - + In model setup menus automatically set source by moving the control En el menú de ajuste de modelo se selecciona automáticamente el origen del control moviendolo - - - - - - - - - + In model setup menus automatically set switch by moving the control En el menú de ajuste de modelo se selecciona automáticamente el switch de control moviendolo - - - - - - - - - + No graphical check boxes and sliders Sin casillas de verificación ni sliders gráficos - - - - - - - - - + Battery graph Gráfico batería - - - - - - - - - + Don't use bold font for highlighting active items No usar la fuente negrita para destacar elementos activos - - Turnigy 9XR with m128 chip + + + Support for ACCESS internal module replacement - - - - - - - Enable heli menu and cyclic mix support - Activar menú Heli y el soporte de mezcla de cíclico - - - - - - - - - Enable TEMPLATES menu - Activar menú PLANTILLAS - - - - - - - No splash screen - Sin pantalla de inicio - - - - - - - - - Disable curves menus - Desctivar el menú curvas - - - - - - - Support for radio modified with regular speaker - Soporte para radio modificada con altavoz normal + FrSky Horus X10 Express + - - - - - - Used if you have modified your radio with voice mode - Usado si tienes modificada tu radio con modo voz - - - - - - - - Used if you have modified your radio with haptic mode - Usado si tienes tu radio modificada con el modo haptic - - - - - - - - - PPM center adjustment in limits - Ajuste del centro PPM en los limites - - - - - - - - - Symetrical Limits - Límites simétricos - - - - - - - Enable the throttle trace in Statistics - Activar el recorrido del acelerador en las Estadísticas - - - - - - - - EEprom write Progress bar - Barra de progreso de escriture de EEprom - - - - - - - - - Imperial units - Unidades Imperiales - - - - Turnigy 9XR + + Jumper T12 - - No Winged Shadow How High support + Enable non certified R9M firmwares - - - No vario support - No hay soporte de variómetro + + Turnigy 9XR with m128 chip + - - - No GPS support - No hay soporte para GPS + + Turnigy 9XR + - - - No gauges in the custom telemetry screen - No hay indicadores en la pantalla de telemetría personalizada - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Añadir soporte para invertir las entradas de sticks (ejem. neseraio para los gimbals FrSky) - - - + 9X with stock board - - - SmartieParts 2.2 Backlight support - Soporte de retroiluminación para SmartieParts 2.2 - - - - - - - - + Enable resetting values by pressing up and down at the same time Activar el reseteo de valores presionando up y down al mismo tiempo - - EEprom write progress bar - Barra de progreso de escritura EEPROM - - - - Allow compensating for offset errors in FrSky FAS current sensors - Permitir la compensación de los errores de offset en los sensores FrSky FAS actuales - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - Soporte para tarjetas de memoria SD - - - - - Support of FrSky PXX protocol - Soporte para protocolo FrSky PXX - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - - FirmwarePreferencesDialog @@ -2951,6 +3083,11 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Latest Download Última Descarga + + + Unknown + Desconocido + FlapsPage @@ -2984,7 +3121,7 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo FlashEEpromDialog - + Write Models and Settings to Radio Escribir Modelos y Ajustes a la Radio @@ -3049,51 +3186,51 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Escribir al TX - + Current profile: %1 - + Choose Radio Backup file Elegir archivo de copia de seguridad de la radio - + Wrong radio calibration data in profile, Settings not patched Datos de calibración de radio incorrectos en el perfil, ajustes no corregidos - + Wrong radio setting data in profile, Settings not patched Datos de ajustes de radio incorrectos en el perfil, ajustes no corregidos - + Cannot write file %1: %2. No se puede escribir el archivo %1: %2. - + Error writing file %1: %2. Error escribiendo el archivo %1: %2. - + The radio firmware belongs to another product family, check file and preferences! El firmware de la radio pertenece a otro producto, ¡comprueba el archivo y las preferencias! - + The radio firmware is outdated, please upgrade! El firmware de la radio está obsoleto, ¡por favor actializalo! - + Cannot check Models and Settings compatibility! Continue anyway? ¡No se pueden comprobar la compatibilidad de Modelos y Ajustes! ¿Continuar de todas maneras? @@ -3280,42 +3417,42 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo - + Writing... - + Reading... - + Verifying... - + unknown - + ie: OpenTX for 9X board or OpenTX for 9XR board Esto es: OpenTX para placas 9x o OpenTX para placas 9XR - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip Esto es: OpenTX para placas M128 / 9x o OpenTX para placas 9XR con el chip M128 - + ie: OpenTX for Gruvin9X board Esto es: OpenTX para placas Gruvin9x - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3324,7 +3461,7 @@ Please check advanced burn options to set the correct cpu type. Por favor comprueba en las opciones avanzadas de gravado el tipo correcto de cpu. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3333,7 +3470,7 @@ Please select an appropriate firmware type to program it. Por favor elige el tipo de firmware apropiado para programarlo. - + You are currently using: %1 @@ -3342,14 +3479,7 @@ Actualmente estás usando: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. @@ -3403,82 +3533,87 @@ Please use ZADIG to properly install the driver. FlightModePanel - + Rotary Encoder %1 Codificador Rotativo %1 - + Name Nombre - + Value source - + Value Valor - + GVAR%1 GVAR%1 - + Popup enabled Popup activado - + + Popup menu available + + + + Trim disabled Trim desactivado - + Own Trim Trim propio - + Use Trim from Flight mode %1 Usar Trim para el modo de vuelo %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Usar Trim para el modo de vuelo %1 + Trim propio com un compensador - + Unit Unidad - + Prec - + Min - + Max - + 0._ - + 0.0 6P {0.0?} @@ -3503,17 +3638,17 @@ Please use ZADIG to properly install the driver. FlightModesPanel - + Flight Mode %1 Modo de vuelo%1 - + (%1) (%1) - + (default) (Predeterminado) @@ -3539,17 +3674,17 @@ Please use ZADIG to properly install the driver. FrSkyAlarmData - + Yellow Amarillo - + Orange Naranja - + Red Rojo @@ -3558,12 +3693,12 @@ Please use ZADIG to properly install the driver. FrSkyChannelData - + V - + --- --- @@ -3705,12 +3840,12 @@ p, li { white-space: pre-wrap; } GV - + Own value Valor propio - + Flight mode %1 value Valor modo de vuelo%1 @@ -3793,7 +3928,7 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. GeneralSettings - + Radio Settings @@ -3851,159 +3986,161 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. - + Timeshift from UTC Zona horaria UTC - + Voice Language Lenguaje de las Voces - + Country Code Codigo País - + Stick reverse - + FAI Mode Modo FAI - + Adjust RTC - + Vario pitch at max Tono de vario al max - - + + Hz - + Speaker Volume Volumen Altavoz - + Backlight Switch Switch de pantalla - + Sound Mode Modo sonido - + Color 1 - + Color 2 - + Speaker Pitch (spkr only) Tono del altavoz (solo altavoz) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Si este valor no es 0, cualquier pulsación encenderá la pantalla y se apagará despues de un número determinado de segundos. - + + + sec seg - + Backlight color Color de pantalla - + Beeper - + Speaker Altavoz - + BeeperVoice BeeperVoz - + SpeakerVoice VozAltavoz - + Beep volume Volumen Beep - + Wav volume Volumen Wav - + Vario volume Volumen Vario - + Background volume Volumen de Fondo - - + + ms - + Backlight Auto OFF after Apagado automático de pantalla después - + Backlight flash on alarm Pantalla parpadea con una alarma - + Vario pitch at zero Tono de vario a cero - + Vario repeat at zero Vario repite a cero - + This is the switch selectrion for turning on the backlight (if installed). @@ -4012,8 +4149,8 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4028,42 +4165,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Los valores pueden ser 20-45</span></p></body></html> - + Backlight Brightness Brillo pantalla - + RotEnc Navigation Navegación RotEnc - + Automatically adjust the radio's clock if a GPS is connected to telemetry. - + America - + Japan Japón - + Europe Europa - + Backlight OFF Brightness - + Mode selection: Mode 1: @@ -4104,306 +4241,347 @@ Modo 4: - + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Modo 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Modo 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Modo 4 (AIL THR ELE RUD) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Orden de los canales</p><p><br/></p><p>Define el orden por defecto de las mezclas en un nuevo modelo</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A R E T A - + R E A T R E A T - + R T E A R T E A - + R T A E R T A E - + R A E T R A E T - + R A T E R A T E - + E R T A E R T A - + E R A T E R A T - + E T R A E T R A - + E T A R E T A R - + E A R T E A R T - + E A T R E A T R - + T R E A T R E A - + T R A E T R A E - + T E R A T E R A - + T E A R T E A R - + T A R E T A R E - + T A E R T A E R - + A R E T A R E T - + A R T E A R T E - + A E R T A E R T - + A E T R A E T R - + A T R E A T R E - + A T E R A T E R - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + Trainer + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick Mode Modo Stick - + Metric Métrico - + Imperial - + Default Channel Order Orden Prederterminado Canales - + GPS Coordinates Coordenadas GPS - + Min - - + + v - + Max - + Inactivity Timer Tiempo de inactividad - + Show Splash Screen on Startup Mostrar Pantalla de Inicio al Enceder - + Contrast Contraste - + Battery Meter Range - + Haptic Strength Fuerza de Haptic - + LCD Display Type Tipo de Pantalla LCD - + "No Sound" Warning Aviso "Sin Sonido" - + Battery Warning Aviso de Bateria - + Haptic Length Longitud Haptic - + MAVLink Baud Rate Transferencia Baud MAVLink - - + + Quiet Silencio - + Only Alarms Solo Alarmas - - + + No Keys Sin teclas - - + + All Todo - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4414,115 +4592,115 @@ Este es el umbral cuando la batería emite sonidos de aviso. Los valores aceptables son 5v..10v - + Standard Estandar - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Si no es cero emitirá sonidos si el transmisor de deja sin pulsaciones surante el numero específico de minutos. - + min min - - + + Show splash screen on startup Mostrar pantalla de inicio al encender - + --- --- - + 2s 2s - + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4547,72 +4725,67 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de silencio - te alertará si el beeper está en modo silencio (0)</p></body></html> - - + + X-Short X-Corto - - + + Short Corto - - + + Normal - - + + Long Largo - - + + X-Long X-Largo - - hh° (N/S) mm' ss''.dd - - - - + NMEA - + Play Delay (switch mid position) Retardo de Play (switch en posición media) - + Measurement Units Unidades de Medida - + Haptic Mode Modo Haptic - + Beeper Length Longitud del beeper - + Beeper Mode Modo Beeper - + Beeper volume 0 - Quiet. No beeps at all. @@ -4629,7 +4802,7 @@ p, li { white-space: pre-wrap; } 4 - Extra Alto. - + Alarms Only Solo Alarmas @@ -4637,127 +4810,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF - + Keys Teclas - + Sticks - + Keys + Sticks Teclas + Sticks - + ON ON - + English Inglés - + Dutch - + French Francés - + Italian Italiano - + German Alemán - + Czech Checo - + Slovak Eslovaco - + Spanish Español - + Polish Polaco - + Portuguese Portugués - + Russian - + Swedish Sueco - + Hungarian - + No No - + RotEnc A - + Rot Enc B - + Rot Enc C - + Rot Enc D - + Rot Enc E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4790,263 +4963,247 @@ Are you sure ? - + SQ - + SR - + LS2 - + SP - + SO - + S4 - + RS - + SB - + PPM 2 PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Volumen Beeper - -0 - Silencio. Ningun tipo de beep. -1 - Sin teclas. Los beeps suenan normal pero las teclas de menu no sonarán. -2 - Normal. -3 - Alto. -4 - Extra Alto. - - - OFF - + S-Port Mirror S-Port Espejo - + Telemetry Telemetría - + SBUS Trainer - + Debug Depurar - + Rud Rud - + PPM 3 PPM 3 - + S1 - + S2 - + S3 - + PPM 1 PPM 1 - + Serial Port Puerto Serie - + v - + PPM Multiplier Multiplicador PPM - + Current Offset - + PPM 4 PPM 4 - + SA - + Ele Ele - + + Antenna + + + + + S5 + + + + Ail Ail - + Thr Thr - + SC - + LS LS - + SD - + Battery Offset - + SE - + SF SF - + SG - + SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 - + Bluetooth - + ADC Filter - + Device Name: @@ -5055,8 +5212,8 @@ Are you sure ? HardwarePanel - - + + None Ninguno @@ -5076,25 +5233,70 @@ Are you sure ? - + Pot with detent - + Multipos switch - + Pot without detent - + Slider with detent + + + OFF + + + + + Enabled + + + + + Telemetry + Telemetría + + + + Trainer + Trainer + + + + Internal + + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5217,25 +5419,25 @@ Are you sure ? InputsPanel - + Move Up Mover Arriba - + Ctrl+Up - + Move Down Mover Abajo - + Ctrl+Down @@ -5245,92 +5447,92 @@ Are you sure ? Limpiar Todas las entradas - + Not enough available inputs! ¡No hay disponibles suficientes entradas! - + Delete Selected Inputs? ¿Borrar las Entradas Seleccionadas? - + &Add &Añadir - + Ctrl+A - + &Edit &Editar - + Enter - + &Delete &Borrar - + Delete Borrar - + &Copy &Copiar - + Ctrl+C Ctrl+C - + &Cut C&ortar - + Ctrl+X Ctrl+X - + &Paste &Pegar - + Ctrl+V - + Du&plicate &Duplicar - + Ctrl+U - + Clear Inputs? ¿Limpiar entradas? - + Really clear all the inputs? ¿Seguro que quieres limpiar todas las entradas? @@ -5487,62 +5689,67 @@ Are you sure ? LogicalSwitchesPanel - + V1 - + V2 - + Duration Duración - + Delay Retardo - + Function Función - + AND Switch - + + Popup menu available + + + + (instant) - + (infinite) - + &Delete &Borrar - + &Copy &Copiar - + &Cut C&ortar - + &Paste &Pegar @@ -5636,7 +5843,7 @@ Are you sure ? - Error: no GPS data not found + Error: no GPS data found @@ -5647,74 +5854,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt - + Cannot write file %1: %2. No se puede escribir el archivo %1: %2. - + Cursor A: %1 m - + Cursor B: %1 m - + Time delta: %1 - + Climb rate: %1 m/s - + Select your log file Selecciona tu archivo de registros - + Available fields Campos disponibles - + The selected logfile contains %1 invalid lines out of %2 total lines El archivo de registros elegido contiene %1 lineas inválidas de un total de %2 lineas - + total duration - + duration - + (L1) - + (R1) - + (L2) - + (R2) @@ -5722,747 +5929,737 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt MainWindow - - + + File loaded Archivo Cargado - - + + Save As Guardar Como - - + + No updates available at this time. No hay actualizaciones disponibles ahora. - - Unable to check for updates. - Imposible comprobar actualizaciones. - - - + Checking for updates Comprobando actualizaciones - + Executable (*.exe) Ejecutable (*.exe) - - + + Would you like to launch the installer? ¿Quieres ejecutar el instalador? - - + + File saved Archivo guardado - + Read Models and Settings From Radio Leer los Modelos y Ajustes de la Radio - + Save Radio Backup to File Guardar Copia deSeguridad de la Radio a un Archivo - + Read Radio Firmware to File Leer el Firmware de la Radio a un Archivo - + OpenTX Home Page: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Si has encontrado este programa útl, por favor ayuda con una <a href='%1'>donación</a> - + New release available Nueva versión disponible - + Error opening file %1: %2. Error abriendo el archivo %1: %2. - + Compilation server too busy, try later Servidor de compilación demasiado ocupado, inténtalo mas tarde - + Unknown server failure, try later Fallo desconocido de servidor, inténtalo mas tarde - - + + Yes Si - - + + No - - + + Release Notes Notas de la Versión - - - Do you want to download release %1 now ? - ¿Quieres descargar la versión %1 ahora? - - - - + + Open Models and Settings file Abrir archivo de Modelos y Ajustes - + New Nuevo - + Open... Abrir... - + Save Guardar - + Save As... Guardar Como... - + Compare models Comparar modelos - + Exit the application Salir de la aplicación - + List available programmers Lista de programadores disponibles - + Show fuses dialog - + Show the application's About box Mostrar la ventana de aplicación Acerca de - + Set Menu Language Menú Ajuste Lenguaje - + Write Escribir - + %2 %2 - + Alt+%1 - + New Radio Nueva Radio - + A new version of Companion is available (version %1)<br>Would you like to download it? Una nueva versión de Companion está disponible (versión %1),<br>¿Te gustaría descargarla? - + Do you want to write the firmware to the radio now ? ¿Te gustaría escribir el firmware a la radio ahora? - + The new theme will be loaded the next time you start Companion. El nuevo tema será cargado la próxima vez que inicies Companion. - + About Companion Acerca de Companion - + A monochrome black icon theme Tema de icono monocromo negro - + A monochrome white icon theme Tema de icono monocromo blanco - + A monochrome blue icon theme Tema de icono monocromo azul - + Diskimage (*.dmg) - + Would you like to open the disk image to install the new version? - - Show this message again at next startup? - - - - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! - - :: Options - - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - + Close Cerrar - + Close Models and Settings file - + List of recently used files - + Radio Profiles - + Create or Select Radio Profiles - + Release notes... - + Show release notes - + Create a new Radio Settings Profile - + Copy Current Radio Profile - + Duplicate current Radio Settings Profile - + Delete Current Radio Profile... - + Delete the current Radio Settings Profile - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Tabbed Windows - + Use tabs to arrange open windows. - + Tile Windows - + Arrange open windows across all the available space. - + Cascade Windows - + Arrange all open windows in a stack. - + Close All Windows - + Closes all open files (prompts to save if necessary. - + Window - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + Small Pequeño - + Use small toolbar icons Usar iconos pequeños en la barra de herramientas - + Use normal size toolbar icons Usar iconos normales en la barra de herramientas - + Normal - + Use big toolbar icons Usar iconos grandes en la barra de herramientas - + Big Grande - + Use huge toolbar icons Usar iconos extra grandes en la barra de herramientas - + Huge Extra Grande - + - Copy - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile No es posible eliminar el perfil - + The default profile can not be removed. El perfil prederterminado no se puede eliminar. - + Confirm Delete Profile - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - - Ignore this release %1? - ¿Ignorar esta versión %1? + + Please save or close all modified files before importing settings + - + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + Not enough flash available on this board for all the selected options - + Compilation server temporary failure, try later - + Compilation error - + Invalid firmware - + Invalid board - + Invalid language - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Models and Settings read - - - This function is not yet implemented + + No Companion release candidates are currently being served for this version, please switch release channel - - The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> - El proyecto OpenTX Companion se ha bifurcado originalmente desde <a href='%1'>eePe</a> - - - - Copyright OpenTX Team - Derechos de autor del equipo OpenTX - - - - Create a new Models and Settings file - Crear un nuevo archivo de Modelos y Ajustes - - - - - Save Models and Settings file - Guardar el archivo de Modelos y Ajustes - - - - Exit - Salir - - - - Use default system language. + + No nightly Companion builds are currently being served for this version, please switch release channel - - Use %1 language (some translations may not be complete). + + No Companion release builds are currently being served for this version, please switch release channel - - Classical - Clasico - - - - The classic companion9x icon theme - Tema de iconos clasicos de companion9x - - - - Yerico + + Companion update check failed, new version information not found. - - Yellow round honey sweet icon theme - Tema de iconos amarillo miel redondo + + No firmware release candidates are currently being served for this version, please switch release channel + - - Monochrome - Monocromo + + No firmware nightly builds are currently being served for this version, please switch release channel + - - MonoWhite - MonoBlanco + + No firmware release builds are currently being served for this version, please switch release channel + - - MonoBlue - MonoAzul + + Release candidate builds are now available for this version, would you like to switch to using them? + - - System language - Lenguaje del sistema + + Channel changed to RC, please restart the download process + - + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. +Version %2 is available. Do you want to download it now? We recommend you view the release notes using the button below to learn about any changes that may be important to you. - + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + + + This function is not yet implemented + + + + + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> + El proyecto OpenTX Companion se ha bifurcado originalmente desde <a href='%1'>eePe</a> + + + + Copyright OpenTX Team + Derechos de autor del equipo OpenTX + + + + Create a new Models and Settings file + Crear un nuevo archivo de Modelos y Ajustes + + + + + Save Models and Settings file + Guardar el archivo de Modelos y Ajustes + + + + Exit + Salir + + + + Use default system language. + + + + + Use %1 language (some translations may not be complete). + + + + + Classical + Clasico + + + + The classic companion9x icon theme + Tema de iconos clasicos de companion9x + + + + Yerico + + + + + Yellow round honey sweet icon theme + Tema de iconos amarillo miel redondo + + + + Monochrome + Monocromo + + + + MonoWhite + MonoBlanco + + + + MonoBlue + MonoAzul + + + + System language + Lenguaje del sistema + + + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6473,228 +6670,228 @@ We recommend you view the release notes using the button below to learn about an - - + + Synchronize SD - + OpenTX Companion %1 - Radio: %2 - Profile: %3 - + About... Acerca de... - + View Log File... Ver Archivo de Registro... - + Open and view log file Abrir y ver el archivo de registro - + Settings... Ajustes... - + Edit Settings Editar Ajustes - + Download... Descargar... - + Download firmware and voice files Descargar los archivos de firmware y voces - + Check for Updates... Comprobar Actualizaciones... - + Check OpenTX and Companion updates Comprobar la actualizaciones de OpenTX y Companion - + Compare Models... Comparar Modelos... - + Edit Radio Splash Image... Editar Imagen de Inicio de la Radio... - + Edit the splash image of your Radio Editar la imagen de inicio de tu radio - + List programmers... Lista de programadores... - + Fuses... - - + + Read Firmware from Radio Leer Firmware desde la Radio - + Read firmware from Radio Leer firmware desde la Radio - + Write Firmware to Radio Escribir Firmware a la Radio - + Write firmware to Radio Escribir firmware a la Radio - + Add Radio Profile Añadir perfil de Radio - + Manuals and other Documents Manuales y otros Documentos - + Open the OpenTX document page in a web browser Abrir la página de documentación de OpenTX en un navegador - + Write Models and Settings To Radio Escribir Modelos y Ajustes a la Radio - + Write Models and Settings to Radio Escribir Modelos y Ajustes a la Radio - - + + Read Models and Settings from Radio Leer los Modelos y Ajustes de la Radio - + Configure Communications... Configurar Comunicaciones... - + Configure software for communicating with the Radio Configurar software para la comunicación con la Radio - + Write Backup to Radio Escribir Copia de Seguridad a la Radio - + Write Backup from file to Radio Escribir Copia de Seguridad desde un archivo a la Radio - + Backup Radio to File Copia de Seguridad de la Radio a un Archivo - + Save a complete backup file of all settings and model data in the Radio Guardar una copia de seguridad completa de todos los datos de ajustes y modelos en la Radio - + Contributors... Contribuidores... - + A tribute to those who have contributed to OpenTX and Companion Un tributo a aquellos que han contribuido en OpenTX y Companion - + SD card synchronization - + Recent Files Archivos Recientes - + Set Icon Theme Selecciona el Tema de Iconos - + Set Icon Size Selecciona el Tamaño de Iconos - - + + File Archivo - - + + Edit Editar - + Settings Ajustes - + Read/Write Leer/Escribir - - + + Help Ayuda - + Ready Listo @@ -6702,115 +6899,120 @@ We recommend you view the release notes using the button below to learn about an MdiChild - + Editing model %1: Editando modelo %1: - + Delete Borrar - + Move to Category - + Alt+S - + Do you want to overwrite radio general settings? ¿Quieres sobreescribir los ajustes generales de la radio? - + This category is not empty! - + New model Translators: do NOT use accents here, this is a default model name. - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Unable to find Horus radio SD card! - + Models and Settings written - + Unable to find file %1! ¡No es posible encontrar el archivo %1! - + Error reading file %1: %2. Error leyendo el archivo %1: %2. - + free bytes Bytes libres - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6819,7 +7021,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6828,7 +7030,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6837,163 +7039,163 @@ We recommend you view the release notes using the button below to learn about an - + Nothing selected - + Rename Category - + Edit Model - + Cut - + Copy - + Paste - + Insert - + Edit Radio Settings - + Copy Radio Settings - + Paste Radio Settings - + Simulate Radio - + Add Category - + Category - + Add Model - + Model Modelo - + Restore from Backup - + Model Wizard Asistente Modelos - + Set as Default - + Print Model - + Simulate Model - + Duplicate Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Category index out of range. - + Cannot delete the last category. - + Cannot insert model, last model in list would be deleted. - + Cannot add model, could not find an available model slot. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Delete %n selected model(s)? @@ -7001,7 +7203,7 @@ We recommend you view the release notes using the button below to learn about an - + Delete %n selected category(ies)? @@ -7009,66 +7211,61 @@ We recommend you view the release notes using the button below to learn about an - + Cannot duplicate model, could not find an available model slot. - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Error opening file %1: %2. Error abriendo el archivo %1: %2. - + Save As Guardar Como - + Open backup Models and Settings file Abrir archivo de copia de seguridad de Modelos y Ajustes - + %1 has been modified. Do you want to save your changes? %1 ha sido modificado. ¿Quieres guardar los cambios? - + Invalid binary backup File %1 Archivo binariode copia de seguridad inválido %1 - + Cannot write temporary file! ¡No se puede escribir el archivo temporal! @@ -7314,22 +7511,22 @@ Esto determina como los valores de mezcla son añadidos. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7338,25 +7535,25 @@ Esto determina como los valores de mezcla son añadidos. MixesPanel - + Move Up Mover Arriba - + Ctrl+Up Ctrl+Arriba - + Move Down Mover Abajo - + Ctrl+Down Ctrl+Abajo @@ -7366,102 +7563,102 @@ Esto determina como los valores de mezcla son añadidos. Limpiar mezclas - + Not enough available mixers! ¡No hay suficientes mezclas disponibles! - + Delete Selected Mixes? ¿Borrar las mezclas seleccionadas? - + &Add &Añadir - + Ctrl+A - + &Edit &Editar - + Enter Enter - + &Toggle highlight &Seleccionar Palanca - + Ctrl+T - + &Delete &Borrar - + Delete Borrar - + &Copy &Copiar - + Ctrl+C - + Ctrl+X - + C&ut C&ortar - + &Paste &Pegar - + Ctrl+V - + Du&plicate &Duplicar - + Ctrl+U - + Clear Mixes? ¿Limpiar mezclas? - + Really clear all the mixes? ¿Seguro que quieres limpiar todas las mezclas? @@ -7469,12 +7666,12 @@ Esto determina como los valores de mezcla son añadidos. ModelData - + Model: - + Throttle Source Fuente del acelerador @@ -7545,878 +7742,784 @@ Esto determina como los valores de mezcla son añadidos. ModelPrinter - + Exponential Exponencial - + Extra Fine Extra Fino - + Fine Fino - + Medium Medio - + Coarse Duro - + Unknown Desconocido - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Master/Jack - + Enable - + Disable - + True - + False - + Yes Si - + No No - + Y - + N - + ON ON - - - - + + + + OFF - - - - - - - - - - - - - ??? - ??? - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 6P {1W?} - - - - 25mW - - - - - + + Mode Modo - - + + Channels Canales - - + + Frame length - + PPM delay Retardo PPM - - + + Polarity Polaridad - + Protocol Protocolo - - - + + + Delay Retardo - - + + Receiver Receptor - + Radio protocol - + Subtype - + Option value - + Sub Type - + RF Output Power - - Telemetry - Telemetría - - - - - ???? - - - - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - Rudder - Timón - - - - Elevator - Profundidad - - - - Throttle - Acelerador - - - - Aileron - Aleron - - - + MULT! - - + + Offset Offset - + Slow Lento - + Warn - + Flight modes Modos de vuelo - + Flight mode Modo de vuelo - + All Todo - + Edge - + Sticky - + Timer Temporizador - + missing - + Duration Duración - + Extended Limits Límites extendidos - + Display Checklist Lista verificación pantalla - + Global Functions - + Manual - + Auto - + Failsafe Mode Modo Failsafe - - + + Hold Esperar - + No Pulse - + Not set - + No pulses - + Silent Silencio - + Beeps - + Voice Voz - + Haptic Reproducir Haptic - + Flight - + Manual reset - + Step - + Display - + Extended - + Never - + On Change - + Always - - Trainer Port - Puerto Entrenador - - - - Internal Radio System - Sistema Interno de Radio - - - - External Radio Module - Modulo externo de Radio - - - - - Radio System - Sistema de Radio - - - - Extra Radio System - Extra Sistema de Radio - - - - - + + + Source - + Trim idle only - + Warning Aviso - + Reversed - + Tmr - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells - + Calculated - + Add - + Average - - + + Min - - + + Max - + Multiply - + Totalise - + Cell - + Consumption - + Distance - + Lowest - + Cell %1 - + Highest - + Delta - + Formula - - + + Id - + Instance - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades Palas - + Multi. - + F - + Inst - + Alt - + Unit Unidad - + Prec - + Ratio - + Multi - + A/Offset - + Filter - + Persist - + Positive Positivo - + Log - + Numbers - + Bars Barras - + Script - + Filename Nombre Archivo - + + Error: Unable to open or read file! + + + + Persistent - + Off Apagado - - - - - - + + + + + + None Ninguno - + Name Nombre - + Countdown Cuenta Atrás - + Minute call - - - + + + FM%1 - + FM%1%2 - + FM%1+%2 - - + + Weight - - + + Switch - - + + NoTrim - + No DR/Expo - + Offset(%1) - + Disabled in all flight modes - + instant - - - + + + Custom A medida - + Standard Estandar @@ -8452,7 +8555,7 @@ Esto determina como los valores de mezcla son añadidos. Module - + Failsafe Mode Modo Failsafe @@ -8462,7 +8565,7 @@ Esto determina como los valores de mezcla son añadidos. Comenzar - + PPM delay Retardo PPM @@ -8482,12 +8585,12 @@ Esto determina como los valores de mezcla son añadidos. Polaridad - + Trainer Mode Modo Entrenador - + PPM Frame Length Longitud Trama PPM @@ -8497,27 +8600,17 @@ Esto determina como los valores de mezcla son añadidos. - + Antenna - - Internal - - - - - Ext. + Int. - - - - + Option value - + Bind on startup @@ -8527,129 +8620,146 @@ Esto determina como los valores de mezcla son añadidos. - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power - + us - + Multi Radio Protocol - + Sub Type - + Master/Jack - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Show values in: - + % abbreviation for percent - + μs abbreviation for microseconds - + ms - + + Receiver 1 + + + + + + + X + + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Canales - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set - + Hold Esperar - + Custom A medida - + No Pulses Sin Pulsos - + Receiver Receptor - + Failsafe Positions Posiciones Failsafe - + Protocol Protocolo @@ -8659,17 +8769,17 @@ Esto determina como los valores de mezcla son añadidos. Receptor Nº. - + Output type - + Open Drain - + Push Pull @@ -8677,490 +8787,572 @@ Esto determina como los valores de mezcla son añadidos. ModuleData - + Positive Positivo - + Negative Negativo + + + Trainer Port + Puerto Entrenador + + + + Internal Radio System + Sistema Interno de Radio + + + + External Radio Module + Modulo externo de Radio + + + + Extra Radio System + Extra Sistema de Radio + + + + Radio System + Sistema de Radio + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - Puerto Entrenador - - - - Internal Radio System - Sistema Interno de Radio - - - - External Radio Module - Modulo externo de Radio - - - - - Radio System - Sistema de Radio - - - - Extra Radio System - Extra Sistema de Radio - - - + Value Valor - + Hold Esperar - + No Pulse + + + Ask + + + + + Internal + + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Entrada - + Weight - + Long. cyc - + Lateral cyc - + Collective Colectivo - + Flight modes Modos de vuelo - - + + Flight mode Modo de vuelo - - + + Switch - + General - + EEprom Size - + Model Image Imagen del modelo - + Throttle Acelerador - + Trims - + Center Beep - + Switch Warnings Avisos palancas (Switch) - + Pot Warnings Avisos Potenciómetros - + Other - + Timers - + Time Hora - + Countdown Cuenta Atrás - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter Helicóptero - + Swash - - + + Type - + Ring - - Fade IN - - - - - Fade OUT - - - - + Protocol Protocolo - + Low - + Critical - + Telemetry audio - + Altimetry Altímetro - - + + Vario source Fuente Variómetro - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar - - + + Volts source - + Altitude source - + Various Varios - + Serial protocol - + FAS offset - + mAh count Valor mAh - + Persistent mAh mAh Constantes - + Current source Fuente Actual - + Blades Palas - + Parameters Parámetros - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + + + + + Global Functions + + + + + Checklist + + + + + GV%1 - + RE%1 - + Channel - - - + + + Name Nombre - - Global variables - Variables globales - - - + Prec - + Popup - + Outputs Salidas - + Subtrim Subtrim - + Direct - + Curve Curva - + PPM - + Linear Lineal - + Telemetry Telemetría - + Offset Offset - - + + Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max - + Global Variables Variables globales - + Inputs Entradas - + Mixers Mezclas - + Curves Curvas - + L%1 - + Logical Switches Switches lógicos - + SF%1 SF%1 - + Special Functions Funciones especiales - + Analogs - - + + Unit Unidad - + Scale Escala - + RSSI Alarms @@ -9204,9 +9396,19 @@ Esto determina como los valores de mezcla son añadidos. + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9244,12 +9446,12 @@ Esto determina como los valores de mezcla son añadidos. - + Cannot write radio settings - + Cannot write model %1 @@ -9324,26 +9526,31 @@ Esto determina como los valores de mezcla son añadidos. + Style + + + + Print Imprimir - + Print to file Imprimir a archivo - + Print Document Imprimir documento - + Select PDF output file Seleccionar archivo de salida PDF - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) Archivos ODF (*.odt);;Archivos PDF (*.pdf);;Archivos HTML(*.htm *.html);;Todos los Archivos (*) @@ -9542,36 +9749,43 @@ Esto determina como los valores de mezcla son añadidos. RadioOutputsWidget + Form + View: + Logical Switches Switches lógicos + Global Variables Variables globales + Channel Outputs + Mix Outputs + L o g @@ -9581,6 +9795,7 @@ c + G l o @@ -9591,6 +9806,7 @@ l + C h a @@ -9603,6 +9819,7 @@ s + M i x @@ -9610,11 +9827,21 @@ e s + + + FM%1 + + + + + GV%1 + + RadioSwitchWidget - + Latch/unlatch the momentary switch. @@ -10062,22 +10289,22 @@ s RawSwitch - + - + - + - - + ! @@ -10296,126 +10523,136 @@ s SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + + + + + External + + Setup @@ -10594,15 +10831,25 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t SetupPanel - + Timer %1 - + THR + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10627,182 +10874,192 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -10934,151 +11191,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11093,64 +11380,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator - + F4 - + Trainer Simulator - + F5 - + Debug Output - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11159,64 +11446,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11224,48 +11523,59 @@ The radio type specified in the selected profile is used by default. + + + ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File Archivo + Folder + SD Path @@ -11294,71 +11604,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Simulador Companion - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) - + Cannot open joystick, joystick disabled No se puede abrir el joystick, joystick desactivado @@ -11417,109 +11728,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11568,101 +12010,106 @@ The default is configured in the chosen Radio Profile. Telemetry - + A1 - + A2 - + RSSI - + Alarm 1 Alarma 1 - - + + ---- - - + + Yellow Amarillo - - + + Orange Naranja - - + + Red Rojo - + Alarm 2 Alarma 2 - + Disable telemetry audio warnings - + + Source + + + + Center Silent - + Altitude source - + Volts source - + Top Bar - + Serial Protocol Protocolo Serie - + Sensors - + Disable multi sensor handling - + Volt source Fuente Voltaje - + Current source Fuente Actual @@ -11672,82 +12119,82 @@ The default is configured in the chosen Radio Profile. Protocolo - + None Ninguno - + FrSky Sensor Hub - + Blades Palas - + Sink Max Descenso Máximo - + Climb Max Máximo Ascenso - + Sink Min Descenso Mínimo - + Climb Min Mínimo Ascenso - + Vario source Fuente Variómetro - + Vario limits Límites Variómetro - + Altimetry Altímetro - + mAh - + A - + Various Varios - + mAh count Valor mAh - + FAS Offset - + Persistent mAh mAh Constantes @@ -11861,7 +12308,7 @@ The default is configured in the chosen Radio Profile. miliAmperios (mA) - + Range Rango @@ -11874,22 +12321,22 @@ The default is configured in the chosen Radio Profile. Personalizar tipo pantalla - + None Ninguno - + Numbers - + Bars Barras - + Script @@ -11917,99 +12364,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Telemetry screen %1 Pantalla telemetría %1 - + + Source + + + + Low Alarm Alarma Baja - + Critical Alarm Alarma crítica - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (no soportado) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells - + --- @@ -12022,269 +12474,279 @@ The default is configured in the chosen Radio Profile. - + Custom A medida - + Calculated - + Id - + Instance - + + Rx + + + + + Mod. + + + + Add - + Average - + Min - + Max - + Multiply - + Totalize - + Cell - + Consumption - + Dist - + Cells Sensor : - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : - + Alt. Sensor : - + Sensor : - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + g - + ° - + Rad - + mL - + US fl.Oz. - + Raw (-) - + RPM - + Precision - + Ratio - + Blades Palas - + Offset Offset - + Multiplier - + Auto Offset - + Filter - + Persistent - + Positive Positivo - + Logs @@ -12292,22 +12754,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest - + Cell %1 - + Highest - + Delta @@ -12316,545 +12778,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator - + + VFAS - + + RSSI - + + A1 - + + A2 + Simulate Simular - + + Replay SD Log File - + + Replay rate - + + Load - + + |> - + + <| - + + > - + + <- - + + X - + + Row # Timestamp - + + 1/5x 1/5x - + + 5x 5x - + + No Log File Currently Loaded - + + RAS - - - + + + + + + V / ratio - + + Db - + + RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 - + + A4 - + + Tmp2 - + + Fuel Combustible - + + + + °C - + + ml - - Deg. C - - - - + + % - - + + + + Meters - + + Alt - + + VSpd - + + m/s - + + Fuel Qty - - + + + + km/h - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS - + + Lat,Lon (dec.deg.) - + + AccX - + + dd-MM-yyyy hh:mm:ss - + + Date - + + Amps - + + AccZ - + + GAlt - - + + + + Volts - + + Cels - + + Curr - + + AccY - + + GSpd - + + Degrees - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM + When enabled, sends any non-blank values as simulated telemetry data. - + Log File - + LOG Files (*.csv) - + ERROR - invalid file - - Templates - - - Simple 4-CH - - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - Cola-V - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - - - - - - - - - - - - - - ELE - - - - - - - THR - - - - - - - - - - - - AIL - - - - - - - - AIL2 - - - - - - - - ELE2 - - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - - - - - - Clear Mixes? - ¿Limpiar mezclas? - - - - Really clear existing mixes on CH6? - - - - - Really clear existing mixes on CH5? - - - ThrottlePage @@ -12889,12 +13231,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 @@ -12926,37 +13268,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Silencio - + Beeps - + Voice Voz - + Haptic Reproducir Haptic - + Not persistent No persistente - + Persistent (flight) Persistente (vuelo) - + Persistent (manual reset) Persistente (reset manual) @@ -13088,6 +13430,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator @@ -13095,28 +13438,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index - + Name Nombre - + Size - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13712,93 +14060,89 @@ Debe ser M64 para los valores de radios m2560 para las placas v4.1 - - downloadDialog - - - Downloading: - Descargando: - - - - Unable to save the file %1: %2. - No se puede guardar el archivo %1: %2. - - - - Download failed: %1. - Descarga fallida: %1. - - joystickDialog + Configure Joystick Configurar Joystick + Ch2 + Ch1 + Ch4 + Ch6 + Ch3 + Ch5 + Ch7 + Ch8 + Instructions Instrucciones + Enable + Cancel Cancelar + Back + Start Comenzar @@ -13809,6 +14153,7 @@ m2560 para las placas v4.1 + Ok diff --git a/companion/src/translations/companion_fi.ts b/companion/src/translations/companion_fi.ts index 6e235d7b5..96b43df85 100644 --- a/companion/src/translations/companion_fi.ts +++ b/companion/src/translations/companion_fi.ts @@ -57,6 +57,38 @@ 2. lentojarru kanava: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -70,32 +102,32 @@ Radio profiili - + Default Channel Order Kanavien järjestys - + Build Options Käännöksen valinnat - + Menu Language Valikon kieli - + Default Stick Mode Perus tikkujen tila - + Select Image Valitse kuva - + Mode selection: Mode 1: @@ -139,528 +171,526 @@ Tila 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (PER KOR KAA SII) - + Mode 2 (RUD THR ELE AIL) Mode 2 (PER KAA KOR SII) - + Mode 3 (AIL ELE THR RUD) Mode 3 (SII KOR KAA PER) - + Mode 4 (AIL THR ELE RUD) Mode 4 (SII KAA KOR PER) - + Splash Screen Alkuruutu - + Radio Type Radio tyyppi - - + + The profile specific folder, if set, will override general Backup folder - + Backup folder - + If set it will override the application general setting - + if set, will override general backup enable - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanava järjestys</p><p><br/></p><p>Määrittelee miksereiden perusasetukset uuteen malliin.</p></body></html> - + R E T A P Ko Ka S - + R E A T P Ko S Ka - + R T E A P Ka Ko S - + R T A E P Ka S Ko - + R A E T P S Ko Ka - + R A T E P S Ka Ko - + E R T A Ko P Ka S - + E R A T Ko P S Ka - + E T R A Ko Ka P S - + E T A R Ko Ka S P - + E A R T Ko S P Ka - + E A T R Ko S Ka P - + T R E A Ka P Ko S - + T R A E Ka P S Ko - + T E R A Ka Ko P S - + T E A R Ka Ko S P - + T A R E Ka S P Ko - + T A E R Ka S Ko P - + A R E T S P Ko Ka - + A R T E S P Ka Ko - + A E R T S Ko P Ka - + A E T R S Ko Ka P - + A T R E S Ka P Ko - + A T E R S Ka Ko P - - - - - - + + + + + + Select Folder - + Select Executable - - Simulator Volume Gain + + Release channel - - Profile Name - Profiilin nimi - - - - Clear Image - Tyhjennä kuva - - - - Append version number to FW file name - Liitä version numero FW tiedoston nimeen - - - - Offer to write FW to Tx after download - Tarjoa että FW ladataan lähettimeen kun se on ladattu - - - - Other Settings - - - - - General Settings - Yleiset asetukset - - - - SD Structure path - SD muistikortin kansio - - - - Voice Language - Äänen kieli - - - - Set voice language. -May be different from firmware language - Aseta äänen kieli. -Voi olla eri kun firmwaren kieli - - - - Application Settings - Ohjelman asetukset - - - - Show splash screen when Companion starts - Näytä alkuruutu kun Companion käynnistetään - - - - Automatic check for Companion updates - Tutki automaattisesti Companionin päivitykset - - - - - Enable automatic backup before writing firmware - Laita automaatiinen varmuuskopionti päälle ennen firmwaren kirjoitusta - - - - Automatic check for OpenTX firmware updates - Tutki automaattisesti OpenTX firmware päivitykset - - - - Splash Screen Library - Alkuruutu kirjasto - - - - Google Earth Executable - Google Earth tiedosto - - - - Only show user splash images - Näytä vain käyttäjän oma alkuruutu kuvat - - - - Show user and companion splash images - Näytä käyttäjän ja Companionin alkuruutu kuvat - - - - User Splash Screens - Käyttäjän oma alkuruudut - - - - Automatic Backup Folder - Automaattisen varmuuskopion kansio - - - - Simulator Settings - Simulaattorin asetukset - - - - Simulator BackLight - Simulaattorin taustavalo - - - - Enable - Päälle - - - - Use releases (stable) - - - - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - - most recently used files - - - - - Startup Settings - - - - - Remember - - - - - Output Logs Folder - - - - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - - - - - Use model wizard - - - - - Open model editor - - - - - Just create the model - - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + + + + + Profile Name + Profiilin nimi + + + + Clear Image + Tyhjennä kuva + + + + Append version number to FW file name + Liitä version numero FW tiedoston nimeen + + + + Offer to write FW to Tx after download + Tarjoa että FW ladataan lähettimeen kun se on ladattu + + + + Other Settings + + + + + General Settings + Yleiset asetukset + + + + SD Structure path + SD muistikortin kansio + + + + Application Settings + Ohjelman asetukset + + + + Show splash screen when Companion starts + Näytä alkuruutu kun Companion käynnistetään + + + + Automatic check for Companion updates + Tutki automaattisesti Companionin päivitykset + + + + + Enable automatic backup before writing firmware + Laita automaatiinen varmuuskopionti päälle ennen firmwaren kirjoitusta + + + + Automatic check for OpenTX firmware updates + Tutki automaattisesti OpenTX firmware päivitykset + + + + Splash Screen Library + Alkuruutu kirjasto + + + + Google Earth Executable + Google Earth tiedosto + + + + Only show user splash images + Näytä vain käyttäjän oma alkuruutu kuvat + + + + Show user and companion splash images + Näytä käyttäjän ja Companionin alkuruutu kuvat + + + + User Splash Screens + Käyttäjän oma alkuruudut + + + + Automatic Backup Folder + Automaattisen varmuuskopion kansio + + + + Simulator Settings + Simulaattorin asetukset + + + + Simulator BackLight + Simulaattorin taustavalo + + + + Enable + Päälle + + + + most recently used files + + + + + Startup Settings + + + + + Remember + + + + + Output Logs Folder + + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + + + + + Use model wizard + + + + + Open model editor + + + + + Just create the model + + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Action on New Model - + Blue Sininen - + Green Vihreä - + Red - + Orange - + Yellow - + Screenshot capture folder - + Joystick Joystick - + Calibrate Kalibroi - + Only capture to clipboard Kaappaa leikepöydälle - + Remember simulator switch values Muista simulaattorin kytkimien asennot - + My Radio Minun radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Valitse kansioi kuville - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found Joystickia ei löydy - + EMPTY: No radio settings stored in profile TYHJÄ: Ei radion asetuksia tallennettu profiiliin - + AVAILABLE: Radio settings of unknown age TARJOLLA: Radion asetukset, voi olla vanhoja - + AVAILABLE: Radio settings stored %1 TARJOLLA: Radion asetukset %1 - + Select your library folder Valitse kansio kirjastolle - - + + Select your Models and Settings backup folder Valitse kansio mallien ja asetusten varmuuskopioille - + Select a folder for application logs - + Select Google Earth executable Valitse Google Earth tiedosto - + Select the folder replicating your SD structure Valitse kansio mihin "monistetaan" SD muistikortin kansio - + Open Image to load Avaa kuva latausta varten - + Images (%1) Kuvia (%1) @@ -673,25 +703,25 @@ Voi olla eri kun firmwaren kieli - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. Virhe kirjottaessa tiedostoa %1: %2. - + Invalid binary EEPROM file %1 @@ -699,57 +729,58 @@ Voi olla eri kun firmwaren kieli Boards - + Left Horizontal Vasen vaaka - + Left Vertical Vasen pysty - + Right Vertical Oikea pysty - + Right Horizontal Oikea vaaka - + Aux. 1 - + Aux. 2 - + + Unknown Tuntematon - + Rud PER - + Ele KOR - + Thr KAA - + Ail SII @@ -798,82 +829,82 @@ Voi olla eri kun firmwaren kieli Channels - + Name Nimi - + Min Min - + Max Max - + Subtrim Alitrimmi - + Direction Suunta - + Curve Käyrä - + PPM Center PPM keski - + Linear Subtrim Lineaarinen alitrimmi - + CH%1 CH%1 - + Popup menu available - + --- --- - + INV KÄÄNT - + &Copy &Kopio - + &Cut &Leikkaa - + &Paste &Liitä - + &Delete &Poista @@ -886,27 +917,32 @@ Voi olla eri kun firmwaren kieli - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -960,85 +996,193 @@ Voi olla eri kun firmwaren kieli %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information Info - + Warning Varoitus - + Error Virhe - - Please Confirm - + + Application Settings + Ohjelman asetukset - + files - + Radio and Models settings - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available Tämän firmwaren simulointi ei ole vielä mahdollista - + Uknown error during Simulator startup. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1053,37 +1197,42 @@ Do you want to import them? - + Close Sulje - + + Style + + + + Print Tulosta - + Print to file Tulosta tiedostoon - + Unnamed Model %1 - + Click to remove this model. - + Print Document Tulosta dokumentti - + Select PDF output file Valitse PDF tiedosto @@ -1173,22 +1322,22 @@ Do you want to import them? CurveGroup - + Diff Ero - + Expo Expo - + Func Toiminto - + Curve Käyrä @@ -1240,7 +1389,7 @@ Do you want to import them? - + Curve type Käyrän tyyppi @@ -1250,47 +1399,52 @@ Do you want to import them? Käyrän luonti - + Y at X=0 Y suhde X =0 - + + Point size + + + + Y at X=100 Y suhde X =100 - + Both Molemmat - + x>0 x>0 - + x<0 x<0 - + Apply Käytä - + Side Sivu - + Y at X=-100 Y suhde X =-100 - + Coefficient Vaikutus @@ -1300,72 +1454,77 @@ Do you want to import them? Käyrän nimi - + Curve %1 Käyräi %1 - + + Popup menu available + + + + %1 points %1 pisteet - + Linear Suora - + Single Expo yks expo - + Symmetrical f(x)=-f(-x) Symmetrinen f(x)=-f(-x) - + Symmetrical f(x)=f(-x) Symmetrinen f(x)=f(-x) - + Copy - + Paste - + Clear - + Clear all curves - + Are you sure you want to reset curve %1? - + Are you sure you want to reset all curves? - + Editing curve %1 Muutetaan käyrää %1 - + Not enough free points in EEPROM to store the curve. Ei vapaata tilaa EEPROMissa tallentaa käyrää. @@ -1373,244 +1532,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF SF - + Override %1 Ohitus %1 - + Trainer Traineri - + Trainer RUD Trainerin PER - + Trainer ELE Trainerin KOR - + Trainer THR Trainerin KAA - + Trainer AIL Trainerin SII - + Instant Trim Välitön trimmi - + Play Sound Toista ääni - + Haptic Toista värinä - + Reset Resetti - + Set Timer %1 Aseta ajastin %1 - + Vario Variom - + Play Track Toista raita - + Play Both Toista molemmat - + Play Value Toista arvo - + Play Script - + SD Logs - + Volume Voluumi - + Backlight Taustavalo - + Screenshot - + Background Music Tausta musiikki - + Background Music Pause Tausta musiikki tauko - + Adjust %1 - + SetFailsafe Int. Module - + SetFailsafe Ext. Module - + RangeCheck Int. Module - + RangeCheck Ext. Module - + Bind Int. Module - + Bind Ext. Module - + Timer1 Ajastin 1 - + Timer2 Ajastin 2 - + Timer3 Ajastin 3 - + Flight - + Telemetry Telemetria - + Rotary Encoder Rotary encoderi - + REa REa - + REb REb - + s s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>epäjohdonmukainen arvo</b></font> - + Value Arvo - - Decr: - Väh: - - - - Incr: - Lis: - - - + played once, not during startup - + repeat(%1s) - + DISABLED Pois - + CFN @@ -1638,62 +1787,73 @@ Do you want to import them? Päälle - + + Popup menu available + + + + SF%1 SF%1 - + GF%1 - + ON ON - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Arvo - + Source Lähde - + GVAR Gvarit - + Increment Säätö - - Unable to find sound file %1! - Äänitiedostoa ei löydy %1! - - - + &Delete &Poista - + &Copy &Kopio - + &Cut &Leikkaa - + &Paste &Liitä @@ -1856,69 +2016,53 @@ Do you want to import them? DataField - + Conversion error on field %1 - + Switch Kytkin - + Switch - + cannot be exported on this board! - + Source Lähde - + Source %1 cannot be exported on this board! - + OpenTX only accepts %1 points in all curves OpenTX vastaanottaa vain %1 pistettä kaikkiin käyriin - + OpenTx only accepts %1 points in all curves OpenTX vastaanottaa vain %1 pistettä kaikkiin käyriin - - - - - - + + OpenTX on this board doesn't accept this function OpenTX ja tämä funktio ei onnistu tässä radiossa - - OpenTX doesn't accept this telemetry protocol - OpenTX ei hyväksy tätä telemetria protokollaa - - - - OpenTX doesn't allow this number of channels - OpenTX ei hyväksy näin montaa kanavaa - - - - - + OpenTX doesn't accept this radio protocol OpenTX ei hyväksy tätä radio protokollaa @@ -1927,72 +2071,86 @@ Do you want to import them? DebugOutput + Debug Output + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: + Number of lines to keep in display. + Filter &Help + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear + Clear the output window of all text. + Enable &Filter + Turn the filter on/off. @@ -2007,6 +2165,24 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + Ladataan: + + + + Unable to save the file %1: %2. + Ei voida tallentaa tiedstoa %1: %2. + + + + Download failed: %1. + Lataus epäonnistui %1. + + EEPROMInterface @@ -2081,22 +2257,17 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - - EepeFormat @@ -2255,7 +2426,7 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. - Click to access popup menu + Popup menu available @@ -2355,572 +2526,533 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. Roll kanava: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Sulje + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + Aloitus + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Kavanien arvot näytetään us mallissa - + No OverrideCH functions available Ei ohituskanava funkitoita saatavissa - + Possibility to enable FAI MODE (no telemetry) at field - + FAI MODE (no telemetry) always enabled - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + + Disable HELI menu and cyclic mix support HELI valikko pois ,myös cyclic mix tuki - + + Disable Global variables Globaalit muuttujat pois päältä - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font Käytä vaihtoehtoista SQT5 fonttia - - ST7565P LCD or compatible - - - - - ST7565R LCD or compatible - - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - Tuki FrSky telemetria moduulille - - - - Support for telemetry easy board - Tuki telemetrialle ( easy board ) - - - - - Support for jeti telemetry mod - Tuki Jeti telemetria moduulille - - - - - Support for receiving ardupilot data - Tuki vastaanottaa ardupilot dataa - - - - - Support for receiving NMEA data - Tuki vastaanottaa NMEA dataa - - - - - Support for MAVLINK devices - Tuki MAVLINK laitteille - - - - Rotary Encoder use in menus navigation - Rotary encoder käyttö valikon navigoinnissa - - - - - - - - - + Pots use in menus navigation Potikoiden käyttö valikko navigoinnissa - - - - - - Support for DSM2 modules - Tuki DSM2 moduleille - - - - Support for DSM2 modules using ppm instead of true serial - Tuki DSM2 moduuleille käyttäen PPM, eikä oikeaa sarjaliikennettä - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D - + Haptic module installed Värinä moduli asennettu - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support HELI valikko päälle ,cyclic mix tuella - - - - - - - - - - No flight modes - Ei lentotiloja - - - - - - - - - - - + Global variables Globaalit muuttujat - - - - - - - - - + In model setup menus automatically set source by moving the control Mallien asetukset asetetaan automaattisesti kun ohjaimia käänellään - - - - - - - - - + In model setup menus automatically set switch by moving the control Mallien asetukset asetetaan automaattisesti kun nappeja käänellään - - - - - - - - - + No graphical check boxes and sliders Ei graaffisia valintalaatikoita ja liukuja - - - - - - - - - + Battery graph Akun grafiikka - - - - - - - - - + Don't use bold font for highlighting active items Älä käytä lihavointua fonttia korostamaan aktiivisia asioita - - Turnigy 9XR with m128 chip + + + Support for ACCESS internal module replacement - - - - - - - Enable heli menu and cyclic mix support - HELI valikko päälle ,cyclic mix tuella - - - - - - - - - Enable TEMPLATES menu - Mallit valikko käyttöön - - - - - - - No splash screen - Ei alkuruutua - - - - - - - - - Disable curves menus - Käyrät valikko pois - - - - - - - Support for radio modified with regular speaker - Tuki radioille johon viritetty normaali kaiutin + FrSky Horus X10 Express + - - - - - - Used if you have modified your radio with voice mode - Käytetään jos radioon on viritetty ääni moduuli - - - - - - - - Used if you have modified your radio with haptic mode - Käytetään jos radioon on viritetty värinä moduuli - - - - - - - - - PPM center adjustment in limits - PPM keskitys arvojen mukaan - - - - - - - - - Symetrical Limits - Symmetriset rajat - - - - - - - Enable the throttle trace in Statistics - Salli kaasun seuranta statistiikassa - - - - - - - - EEprom write Progress bar - EEprom tallennus palkki - - - - - - - - - Imperial units - Imperiaali yksiköt - - - - Turnigy 9XR + + Jumper T12 - - No Winged Shadow How High support - erikoistoiminto korkea (ei tuettu) + Enable non certified R9M firmwares + - - - No vario support - Ei vario tukea + + Turnigy 9XR with m128 chip + - - - No GPS support - Ei GPS tukea + + Turnigy 9XR + - - - No gauges in the custom telemetry screen - Ei mittareita "omassa" telemetria ruudussa - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Lisää tuki käänteisille tikkujen tuloille ( esim taraniksen gimbaalit) - - - + 9X with stock board - - - SmartieParts 2.2 Backlight support - "Smartie parts 2.2" taustavalo tuki - - - - - - - - + Enable resetting values by pressing up and down at the same time Asetuksien poisto: Paina ylös ja alas samanaikaisesti - - EEprom write progress bar - EEprom tallennus palkki - - - - Allow compensating for offset errors in FrSky FAS current sensors - Salli virheiden kompensoiti FrSkyn FAS virta sensorille - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - Tuki SD Muistikortille - - - - - Support of FrSky PXX protocol - Tuli FrSky PXX protokollalle - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - - FirmwarePreferencesDialog @@ -2954,6 +3086,11 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. Latest Download Viimeisin lataus + + + Unknown + Tuntematon + FlapsPage @@ -2987,7 +3124,7 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. FlashEEpromDialog - + Write Models and Settings to Radio Kirjoita mallit ja asetukset lähettimeen @@ -3052,51 +3189,51 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. Kirjoita lähettimeen - + Current profile: %1 - + Choose Radio Backup file Valitse Lähettimen varmuuskopio tiedosto - + Wrong radio calibration data in profile, Settings not patched Väärä radion kalibraatio data profiilissa, asetuksia ei ole korjattu - + Wrong radio setting data in profile, Settings not patched Väärä radion asetus data profiilissa, asetuksia ei ole korjattu - + Cannot write file %1: %2. Ei voi kirjoittaa tiedostoa %1: %2. - + Error writing file %1: %2. Virhe kirjottaessa tiedostoa %1: %2. - + The radio firmware belongs to another product family, check file and preferences! Lähettimen firmware kuuluu toiselle lähettin mallille, tarkista oikea tiedosto ja asetukset! - + The radio firmware is outdated, please upgrade! Firware on vanhaa versio, päivitä se uudempaan! - + Cannot check Models and Settings compatibility! Continue anyway? Ei voi varmistaa että mallit ja asetukset täsmää laitteistoon. Jatketaanko silti ? @@ -3283,42 +3420,42 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan. - + Writing... - + Reading... - + Verifying... - + unknown - + ie: OpenTX for 9X board or OpenTX for 9XR board ie: OpenTX 9X tai OpenTX 9XR - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip ie: OpenTX M128 / 9X tai OpenTX 9XR M128 sirulla - + ie: OpenTX for Gruvin9X board ie: OpenTX Gruvin9X - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3327,7 +3464,7 @@ Please check advanced burn options to set the correct cpu type. Tarkasta asetuksista CPU:n oikea tyyppi. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3336,7 +3473,7 @@ Please select an appropriate firmware type to program it. Valitse oikea firmware jonka ohjelmoit. - + You are currently using: %1 @@ -3345,14 +3482,7 @@ Käytät nyt: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. @@ -3406,82 +3536,87 @@ Please use ZADIG to properly install the driver. FlightModePanel - + Rotary Encoder %1 ??Rotary Encoder?? %1 - + Name Nimi - + Value source - + Value Arvo - + GVAR%1 GVAR%1 - + Popup enabled Popupit sallittu - + + Popup menu available + + + + Trim disabled Trimmi pois - + Own Trim Oma trimmi - + Use Trim from Flight mode %1 Käytä trimmiä lentotilaan %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Käytä trimmiä lentotilaan %1 + Oma trimmi asetuksena - + Unit Yksikkö - + Prec - + Min Min - + Max Max - + 0._ - + 0.0 6P {0.0?} @@ -3506,17 +3641,17 @@ Please use ZADIG to properly install the driver. FlightModesPanel - + Flight Mode %1 Lentotila %1 - + (%1) (%1) - + (default) (oletus) @@ -3542,17 +3677,17 @@ Please use ZADIG to properly install the driver. FrSkyAlarmData - + Yellow - + Orange - + Red @@ -3561,12 +3696,12 @@ Please use ZADIG to properly install the driver. FrSkyChannelData - + V V - + --- --- @@ -3756,12 +3891,12 @@ p, li { white-space: pre-wrap; } GV - + Own value Oma arvo - + Flight mode %1 value Lento tila %1 arvo @@ -3844,7 +3979,7 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla. GeneralSettings - + Radio Settings @@ -3902,159 +4037,161 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla. SG - + Timeshift from UTC Ajansiirto UTC:stä - + Voice Language Äänen kieli - + Country Code Maa koodi - + Stick reverse - + FAI Mode FAI tila - + Adjust RTC - + Vario pitch at max Vario ääni kun max - - + + Hz Hz - + Speaker Volume Äänen voimakkuus - + Backlight Switch Taustavalon kytkin - + Sound Mode Ääni tila - + Color 1 Väri 1 - + Color 2 Väri 2 - + Speaker Pitch (spkr only) Äänen korkeus (vain kaj.) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Jos tämä arvo ei ole 0, jokainen painallus sytyttää taustavalon, sammuu valitun ajan jälkeen ( SEK). - + + + sec sec - + Backlight color Taustavalon väri - + Beeper Piipperi - + Speaker Kaiutin - + BeeperVoice Piippausääni - + SpeakerVoice Kaiutinääni - + Beep volume Piippaus voluumi - + Wav volume Wav voluumi - + Vario volume Vario voluumi - + Background volume Taustan voluumi - - + + ms ms - + Backlight Auto OFF after Taustavalo pois automaattisesti - + Backlight flash on alarm Taustavalo vilkkuu hälytyksenä - + Vario pitch at zero Vario ääni kun nolla - + Vario repeat at zero Varion toisto nollassa - + This is the switch selectrion for turning on the backlight (if installed). @@ -4063,8 +4200,8 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla. - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4079,42 +4216,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Values can be 20-45</span></p></body></html> - + Backlight Brightness Taustavalon kirkkaus - + RotEnc Navigation RotEnc navigaatio - + Automatically adjust the radio's clock if a GPS is connected to telemetry. - + America Amerikka - + Japan Japani - + Europe Eurooppa - + Backlight OFF Brightness - + Mode selection: Mode 1: @@ -4158,306 +4295,347 @@ Tila 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (PER KOR KAA SII) - + Mode 2 (RUD THR ELE AIL) Mode 2 (PER KAA KOR SII) - + Mode 3 (AIL ELE THR RUD) Mode 3 (SII KOR KAA PER) - + Mode 4 (AIL THR ELE RUD) Mode 4 (SII KAA KOR PER) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kanava järjestys</p><p><br/></p><p>Määrittelee miksereiden perusasetukset uuteen malliin.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A P Ko Ka S - + R E A T P Ko S Ka - + R T E A P Ka Ko S - + R T A E P Ka S Ko - + R A E T P S Ko Ka - + R A T E P S Ka Ko - + E R T A Ko P Ka S - + E R A T Ko P S Ka - + E T R A Ko Ka P S - + E T A R Ko Ka S P - + E A R T Ko S P Ka - + E A T R Ko S Ka P - + T R E A Ka P Ko S - + T R A E Ka P S Ko - + T E R A Ka Ko P S - + T E A R Ka Ko S P - + T A R E Ka S P Ko - + T A E R Ka S Ko P - + A R E T S P Ko Ka - + A R T E S P Ka Ko - + A E R T S Ko P Ka - + A E T R S Ko Ka P - + A T R E S Ka P Ko - + A T E R S Ka Ko P - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + Traineri + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick Mode Tikku tila - + Metric Metrit - + Imperial Imperiaali - + Default Channel Order Kanavien järjestys - + GPS Coordinates GPS koordinaatit - + Min Min - - + + v v - + Max Max - + Inactivity Timer Käyttämättömyys ajastin - + Show Splash Screen on Startup Näytä alkuruutu käynnistyksessä - + Contrast Kontrasti - + Battery Meter Range - + Haptic Strength Värinän voimakkuus - + LCD Display Type LCD näytön tyyppi - + "No Sound" Warning "Ei ääniä" hälytys - + Battery Warning Akun varoitin - + Haptic Length Värinän pituus - + MAVLink Baud Rate MAV linkki baudit - - + + Quiet Äänetön - + Only Alarms Vain hälyt - - + + No Keys Ei nap - - + + All Kaikki - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4468,115 +4646,115 @@ Tämä on jännitealue jolloin akun varoitus ääni annetaan. Hyväksytty arvo: 5v - 10v - + Standard Vakio - + Optrex Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Jos tämä arvo ei ole 0, piipataan valitun ajan jos mitään käskyjä ei tule ( MIN ). - + min Min - - + + Show splash screen on startup Näytä alkuruutu käynnistyksessä - + --- --- - + 2s 2s - + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + 4800 Baud 4800 Baudia - + 9600 Baud 9600 Baudia - + 14400 Baud 14400 Baudia - + 19200 Baud 19200 Baudia - + 38400 Baud 38400 Baudia - + 57600 Baud 57600 Baudia - + 76800 Baud 76800 Baudia - + 115200 Baud 115200 Baudia - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4601,72 +4779,67 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> - - + + X-Short X-lyhyt - - + + Short Lyhyt - - + + Normal Normaali - - + + Long Pitkä - - + + X-Long X-Pitkä - - hh° (N/S) mm' ss''.dd - hh° (N/S) mm' ss''.dd - - - + NMEA NMEA - + Play Delay (switch mid position) Toista viive (kytkin keskiasennossa) - + Measurement Units Mittayksiköt - + Haptic Mode Värinä tila - + Beeper Length Piippaus pituus - + Beeper Mode Piipperin moodi - + Beeper volume 0 - Quiet. No beeps at all. @@ -4683,7 +4856,7 @@ p, li { white-space: pre-wrap; } 4 -Erittäin voimakas. - + Alarms Only Vain hälyt @@ -4691,127 +4864,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF Pois - + Keys Napit - + Sticks Tikut - + Keys + Sticks Napit + Tikut - + ON ON - + English Englanti - + Dutch - + French Ranska - + Italian Italia - + German Saksa - + Czech Tsekki - + Slovak Slovakia - + Spanish Espanja - + Polish Puola - + Portuguese Portugali - + Russian - + Swedish Ruotsi - + Hungarian - + No Ei - + RotEnc A RotEnc A - + Rot Enc B RotEnc B - + Rot Enc C RotEnc C - + Rot Enc D RotEnc D - + Rot Enc E RotEnc E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4844,263 +5017,247 @@ Are you sure ? - + SQ - + SR - + LS2 LS2 - + SP - + SO - + S4 S4 - + RS RS - + SB SB - + PPM 2 PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Piipperin voluumi - -0 -Äänetön ( ei piippaa ). -1 -Ei nap ( normaalisti mutta ei menun napeista). -2 -Normaalisti. -3 -Voimakas. -4 -Erittäin voimakas. - - - OFF Pois - + S-Port Mirror S-Portti peilik - + Telemetry Telemetria - + SBUS Trainer - + Debug Korjaus - + Rud PER - + PPM 3 PPM 3 - + S1 S1 - + S2 S2 - + S3 S3 - + PPM 1 PPM 1 - + Serial Port Sarja portti - + v v - + PPM Multiplier PPM Kerroin - + Current Offset - + PPM 4 PPM 4 - + SA SA - + Ele KOR - + + Antenna + + + + + S5 + + + + Ail SII - + Thr KAA - + SC SC - + LS LS - + SD SD - + Battery Offset - + SE SE - + SF SF - + SG SG - + SH SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 - + Bluetooth - + ADC Filter - + Device Name: @@ -5109,8 +5266,8 @@ Are you sure ? HardwarePanel - - + + None Ei mitään @@ -5130,25 +5287,70 @@ Are you sure ? - + Pot with detent - + Multipos switch - + Pot without detent - + Slider with detent + + + OFF + Pois + + + + Enabled + + + + + Telemetry + Telemetria + + + + Trainer + Traineri + + + + Internal + + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5271,25 +5473,25 @@ Are you sure ? InputsPanel - + Move Up Siirrä ylös - + Ctrl+Up Ctrl+Ylös - + Move Down Siirrä alas - + Ctrl+Down Ctrl+Alas @@ -5299,92 +5501,92 @@ Are you sure ? Tyhjennä kaikki tulot - + Not enough available inputs! Ei vapaita tuloja vapaana! - + Delete Selected Inputs? Poista valitut tulot? - + &Add &Lisää - + Ctrl+A Ctrl+A - + &Edit &Muuta - + Enter Entteri - + &Delete &Poista - + Delete Poista - + &Copy &Kopio - + Ctrl+C Ctrl+C - + &Cut &Leikkaa - + Ctrl+X Ctrl+X - + &Paste &Liitä - + Ctrl+V Ctrl+V - + Du&plicate Jäl&jennä - + Ctrl+U Ctrl+U - + Clear Inputs? Tyhjennä tulot? - + Really clear all the inputs? Varmasti tyhjennä kaikki tulot? @@ -5541,62 +5743,67 @@ Are you sure ? LogicalSwitchesPanel - + V1 V1 - + V2 V2 - + Duration Kesto - + Delay Viive - + Function Toiminto - + AND Switch JA kytkin - + + Popup menu available + + + + (instant) - + (infinite) - + &Delete &Poista - + &Copy &Kopio - + &Cut &Leikkaa - + &Paste &Liitä @@ -5690,7 +5897,7 @@ Are you sure ? - Error: no GPS data not found + Error: no GPS data found @@ -5701,74 +5908,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt - + Cannot write file %1: %2. Ei voi kirjoittaa tiedostoa %1: %2. - + Cursor A: %1 m - + Cursor B: %1 m - + Time delta: %1 - + Climb rate: %1 m/s - + Select your log file Valitse logi tiedosto - + Available fields Valittavana olevat kentät - + The selected logfile contains %1 invalid lines out of %2 total lines Valittu logi sisältää: %1 virhe riviä, kokomäärästä %2 riviä - + total duration - + duration - + (L1) - + (R1) - + (L2) - + (R2) @@ -5776,722 +5983,712 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt MainWindow - - + + File loaded Tiedosto ladattu - + Checking for updates Tarkistetaan päivityksiä - - Unable to check for updates. - Ei voi tarkistaa päivityksiä. - - - + A new version of Companion is available (version %1)<br>Would you like to download it? Uusi versio Companionista on saatavilla (versio %1)<br>Haluatko ladata sen nyt ? - - + + Save As Tallenna nimellä - + Executable (*.exe) Suoritettava (*.exe) - + New release available Uusi julkaisu saatavilla - - + + No updates available at this time. Ei päivityksiä saatavilla tälläkertaa. - - + + Would you like to launch the installer? Haluatko suorittaa asennus ohjelman? - + Error opening file %1: %2. Virhe avattaessa tiedostoa %1: %2. - + Compilation server too busy, try later Kääntäjä palvelin liian kiireinen, yritä kohta uudelleen - + Unknown server failure, try later Tuntematon palvelin virhe, yritä kohta uudelleen - - + + Yes Kyllä - - + + No Ei - - + + Release Notes Julkaisuun liittyviä dokuja - - - Do you want to download release %1 now ? - Haluatko ladata julkaisun %1 nyt ? - - - + The new theme will be loaded the next time you start Companion. Uusi teema otetaan käyttöön Companionissa kun se käynnistettään seuraavan kerran. - - + + File saved Tiedosto tallennettu - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX Kotisivut: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Jos meinaat että tämä ohjelma on hyvä. Teeppä hyvä teko ja: <a href='%1'>Lahjoita</a> - + About Companion Tietoja Companionista - + New Uusi - + Open... Avaa... - + Save As... Tallenna nimellä... - + Exit Poistu - + Exit the application Poistu ohjelmasta - + Classical Klassinen - + Do you want to write the firmware to the radio now ? Haluatko kirjoittaa firmwaren lähettimen muistiin ? - - Ignore this release %1? - Ohita tämä versio (r%1)? - - - - + + Open Models and Settings file Avaa mallit ja asetukset - + Read Models and Settings From Radio Lue mallit ja asetukset lähettimestä - + Save Radio Backup to File Tallenna lähettimen varmuuskopio tiedostoon - - Read Radio Firmware to File - Lue firmware tiedostosta - - - - Create a new Models and Settings file - Luo uusi mallit ja asetukset tiedosto - - - - - Save Models and Settings file - Tallenna mallit ja asetukset tiedostoon - - - - The classic companion9x icon theme - Klassiset Companion iconit teema - - - - Yerico - Yerico - - - - Yellow round honey sweet icon theme - Hunajan keltaiset ikonit teema - - - - Monochrome - Yksivärinen - - - - A monochrome black icon theme - Yksivärisen teeman musta ikoni tyyli - - - - MonoWhite - Simppeli valkoinen - - - - A monochrome white icon theme - Yksivärisen teeman valkoinen ikoni tyyli - - - - MonoBlue - Simppeli sininen - - - - Diskimage (*.dmg) + + No Companion release candidates are currently being served for this version, please switch release channel - - Would you like to open the disk image to install the new version? - - - - - Show this message again at next startup? + + No nightly Companion builds are currently being served for this version, please switch release channel - A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> + No Companion release builds are currently being served for this version, please switch release channel - - There are unsaved file changes which you may lose when switching radio types. - -Do you wish to continue? + + Companion update check failed, new version information not found. - - No local SD structure path configured! + + No firmware release candidates are currently being served for this version, please switch release channel - - No Radio or SD card detected! + + No firmware nightly builds are currently being served for this version, please switch release channel - - :: Options + + No firmware release builds are currently being served for this version, please switch release channel - - Local Folder: + + Release candidate builds are now available for this version, would you like to switch to using them? - - Radio Folder: + + Channel changed to RC, please restart the download process - - Sync. Direction: + + Official release builds are now available for this version, would you like to switch to using them? - - %1%2 Both directions, to radio folder first + + Channel changed to Release, please restart the download process - - %1%2 Both directions, to local folder first + + This radio (%1) is not currently available in this firmware release channel - - %1 Only from local folder to radio folder + + Firmware update check failed, new version information not found or invalid. - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - - Close - Sulje - - - - Close Models and Settings file - - - - - List of recently used files - - - - - Radio Profiles - - - - - Create or Select Radio Profiles - - - - - Release notes... - - - - - Show release notes - - - - - Create a new Radio Settings Profile - - - - - Copy Current Radio Profile - - - - - Duplicate current Radio Settings Profile - - - - - Delete Current Radio Profile... - - - - - Delete the current Radio Settings Profile - - - - - Tabbed Windows - - - - - Use tabs to arrange open windows. - - - - - Tile Windows - - - - - Arrange open windows across all the available space. - - - - - Cascade Windows - - - - - Arrange all open windows in a stack. - - - - - Close All Windows - - - - - Closes all open files (prompts to save if necessary. - - - - - Window - - - - - Ctrl+Shift+S - - - - - Ctrl+Alt+L - - - - - Ctrl+Alt+D - - - - - Ctrl+Alt+R - - - - - A monochrome blue icon theme - Yksivärisen teeman sininen ikoni tyyli - - - - Small - Pieni - - - - Use small toolbar icons - Käytä pieniä ikoneita työkalupalkissa - - - - Normal - Normaali - - - - Use normal size toolbar icons - Käytä normaaleita ikoneita työkalupalkissa - - - - Big - Iso - - - - Use big toolbar icons - Käytä isoja ikoneita työkalupalkissa - - - - Huge - Valtava - - - - Use huge toolbar icons - Käytä valtavia ikoneita työkalupalkissa - - - - System language - Järjestelmän kieli - - - - Alt+%1 - - - - - - Copy - - - - - Companion :: Open files warning - - - - - Please save or close modified file(s) before deleting the active profile. - - - - - Not possible to remove profile - Profiilia ei voida poistaa - - - - The default profile can not be removed. - Nykyistä profiilia ei voida poistaa. - - - - Confirm Delete Profile - - - - - Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - - - - - SD card synchronization - - - - - New Radio - Uusi Radio - - - - About... - Tietoja... - - - - View Log File... - Näytä logi tiedosto... - - - - Open and view log file - Avaa ja näytä logi tiedosto - - - - Settings... - Asetukset... - - - - Download... - Ladattu... - - - - Check for Updates... - Tarkistetaan päivityksiä... - - - - Compare Models... - Vertaa malleja... - - - - Edit Radio Splash Image... - Muuta lähettimen alkuruutu kuvaa... - - - - Edit the splash image of your Radio - Muuta alkuruutua omaan lähettimeen - - - - - Read Firmware from Radio - Lue firmware lähettimestä - - - - Read firmware from Radio - Lue firmware lähettimestä - - - - Write Firmware to Radio - Kirjoita firmware lähettimeen - - - - Write firmware to Radio - Kirjoita firmware lähettimeen - - - - Write Models and Settings To Radio - Kirjoita mallit ja asetukset lähettimeen - - - - Write Models and Settings to Radio - Kirjoita mallit ja asetukset lähettimeen - - - + Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. +Version %2 is available. Do you want to download it now? We recommend you view the release notes using the button below to learn about any changes that may be important to you. - + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + + Read Radio Firmware to File + Lue firmware tiedostosta + + + + Create a new Models and Settings file + Luo uusi mallit ja asetukset tiedosto + + + + + Save Models and Settings file + Tallenna mallit ja asetukset tiedostoon + + + + The classic companion9x icon theme + Klassiset Companion iconit teema + + + + Yerico + Yerico + + + + Yellow round honey sweet icon theme + Hunajan keltaiset ikonit teema + + + + Monochrome + Yksivärinen + + + + A monochrome black icon theme + Yksivärisen teeman musta ikoni tyyli + + + + MonoWhite + Simppeli valkoinen + + + + A monochrome white icon theme + Yksivärisen teeman valkoinen ikoni tyyli + + + + MonoBlue + Simppeli sininen + + + + Diskimage (*.dmg) + + + + + Would you like to open the disk image to install the new version? + + + + + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> + + + + + There are unsaved file changes which you may lose when switching radio types. + +Do you wish to continue? + + + + + No local SD structure path configured! + + + + + No Radio or SD card detected! + + + + + Close + Sulje + + + + Close Models and Settings file + + + + + List of recently used files + + + + + Radio Profiles + + + + + Create or Select Radio Profiles + + + + + Release notes... + + + + + Show release notes + + + + + Create a new Radio Settings Profile + + + + + Copy Current Radio Profile + + + + + Duplicate current Radio Settings Profile + + + + + Delete Current Radio Profile... + + + + + Delete the current Radio Settings Profile + + + + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + + Tabbed Windows + + + + + Use tabs to arrange open windows. + + + + + Tile Windows + + + + + Arrange open windows across all the available space. + + + + + Cascade Windows + + + + + Arrange all open windows in a stack. + + + + + Close All Windows + + + + + Closes all open files (prompts to save if necessary. + + + + + Window + + + + + Ctrl+Shift+S + + + + + Ctrl+Alt+L + + + + + Ctrl+Alt+D + + + + + Ctrl+Alt+R + + + + + A monochrome blue icon theme + Yksivärisen teeman sininen ikoni tyyli + + + + Small + Pieni + + + + Use small toolbar icons + Käytä pieniä ikoneita työkalupalkissa + + + + Normal + Normaali + + + + Use normal size toolbar icons + Käytä normaaleita ikoneita työkalupalkissa + + + + Big + Iso + + + + Use big toolbar icons + Käytä isoja ikoneita työkalupalkissa + + + + Huge + Valtava + + + + Use huge toolbar icons + Käytä valtavia ikoneita työkalupalkissa + + + + System language + Järjestelmän kieli + + + + Alt+%1 + + + + + - Copy + + + + + Companion :: Open files warning + + + + + Please save or close modified file(s) before deleting the active profile. + + + + + Not possible to remove profile + Profiilia ei voida poistaa + + + + The default profile can not be removed. + Nykyistä profiilia ei voida poistaa. + + + + Confirm Delete Profile + + + + + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! + + + + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + + SD card synchronization + + + + + New Radio + Uusi Radio + + + + About... + Tietoja... + + + + View Log File... + Näytä logi tiedosto... + + + + Open and view log file + Avaa ja näytä logi tiedosto + + + + Settings... + Asetukset... + + + + Download... + Ladattu... + + + + Check for Updates... + Tarkistetaan päivityksiä... + + + + Compare Models... + Vertaa malleja... + + + + Edit Radio Splash Image... + Muuta lähettimen alkuruutu kuvaa... + + + + Edit the splash image of your Radio + Muuta alkuruutua omaan lähettimeen + + + + + Read Firmware from Radio + Lue firmware lähettimestä + + + + Read firmware from Radio + Lue firmware lähettimestä + + + + Write Firmware to Radio + Kirjoita firmware lähettimeen + + + + Write firmware to Radio + Kirjoita firmware lähettimeen + + + + Write Models and Settings To Radio + Kirjoita mallit ja asetukset lähettimeen + + + + Write Models and Settings to Radio + Kirjoita mallit ja asetukset lähettimeen + + + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6502,253 +6699,253 @@ We recommend you view the release notes using the button below to learn about an - - + + Synchronize SD - - + + Read Models and Settings from Radio Lue mallit ja asetukset lähettimestä - + Configure Communications... Määrittele yhteydet... - + Configure software for communicating with the Radio Asetetaan ohjelma joka lukee ja kirjoittaa tiedot lähettimeen - + Write Backup to Radio Kirjoita varmuuskiop lähettimeen - + Write Backup from file to Radio Kirjoita varmuuskopio tiedosto lähettimeen - + Backup Radio to File Varmuuskopio lähetin tiedostoon - + Save a complete backup file of all settings and model data in the Radio Tallenna täydellinen varmuuskopio kaikista malleista ja asetuksista lähettimeen - + Contributors... Avustajat... - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> OpenTX Companion projektin on aloittanut alunperin: <a href='%1'>eePe</a> {1'?} - + Copyright OpenTX Team Tekijänoikeus: OpenTX tiimi - + OpenTX Companion %1 - Radio: %2 - Profile: %3 - + Save Tallenna - + %2 %2 - + Show the application's About box Näytä sovelluksen tietoja ikkuna - + Not enough flash available on this board for all the selected options - + Compilation server temporary failure, try later - + Compilation error - + Invalid firmware - + Invalid board - + Invalid language - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Models and Settings read - - + + This function is not yet implemented - + Edit Settings Muuta asetuksia - + Download firmware and voice files Lataa firmware ja ääni tiedostot - + Check OpenTX and Companion updates Tarkista OpenTX ja Companion päivitykset - + Compare models Vertaa malleja - + List available programmers Lista vapaista ohjelmointilaitteista - + List programmers... Lista ohjelmointilaitteista... - + Fuses... Sulakkeet... - + Show fuses dialog Näytä sulake dialogi - + Add Radio Profile Lisää lähettimen profiili - + Manuals and other Documents Manuaalit ja muut dokut - + Open the OpenTX document page in a web browser Avaa OpenTX dokut webbi selaimen sivulle - + A tribute to those who have contributed to OpenTX and Companion Hatunnosto niille jotka on tukenut OpenTX ja Companion projektia - + Use default system language. - + Use %1 language (some translations may not be complete). - + Recent Files Viimeisimmät tiedostot - + Set Menu Language Aseta valikon kieli - + Set Icon Theme Aseta ikonien teema - + Set Icon Size Aseta ikonien koko - - + + File Tiedosto - - + + Edit Muuta - + Settings Asetukset - + Read/Write Lue/Kirjoita - - + + Help Apu - + Write Kirjoita - + Ready Valmis @@ -6756,127 +6953,132 @@ We recommend you view the release notes using the button below to learn about an MdiChild - + Delete Poista - + Move to Category - + Alt+S Alt+S - + Do you want to overwrite radio general settings? Haluatko päällekirjoittaa radion yleiset asetukset ? - + free bytes Vapaata tilaa - + This category is not empty! - + New model Translators: do NOT use accents here, this is a default model name. - + Editing model %1: Muutetaan mallia %1: - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Unable to find Horus radio SD card! - + Models and Settings written - + Unable to find file %1! Ei löydy tiedostoa %1! - + Error opening file %1: %2. Virhe avattaessa tiedostoa %1: %2. - + Error reading file %1: %2. Virhe luettaessa tiedostoa %1: %2. - + Save As Tallenna nimellä - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6885,7 +7087,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6894,7 +7096,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6903,163 +7105,163 @@ We recommend you view the release notes using the button below to learn about an - + Nothing selected - + Rename Category - + Edit Model - + Cut - + Copy - + Paste - + Insert - + Edit Radio Settings - + Copy Radio Settings - + Paste Radio Settings - + Simulate Radio - + Add Category - + Category - + Add Model - + Model Malli - + Restore from Backup - + Model Wizard Apuri - + Set as Default - + Print Model - + Simulate Model - + Duplicate Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Category index out of range. - + Cannot delete the last category. - + Cannot insert model, last model in list would be deleted. - + Cannot add model, could not find an available model slot. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Delete %n selected model(s)? @@ -7067,7 +7269,7 @@ We recommend you view the release notes using the button below to learn about an - + Delete %n selected category(ies)? @@ -7075,54 +7277,49 @@ We recommend you view the release notes using the button below to learn about an - + Cannot duplicate model, could not find an available model slot. - + %1 has been modified. Do you want to save your changes? %1 on modifoitu. Haluatko tallentaa muutokset ? - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Cannot write temporary file! Väliaikaiseen tiedostoon ei voida kirjoittaa! - + Open backup Models and Settings file Avaa varmuuskopio mallit ja asetukset - + Invalid binary backup File %1 Väärää tietoa varmuuskopio tiedostossa %1 @@ -7365,22 +7562,22 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7389,25 +7586,25 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. MixesPanel - + Move Up Siirrä ylös - + Ctrl+Up Ctrl+Ylös - + Move Down Siirrä alas - + Ctrl+Down Ctrl+Alas @@ -7417,102 +7614,102 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. Tyhjennä mikserit - + Not enough available mixers! Ei enempää vapaita miksereitä! - + Delete Selected Mixes? Poista valitut mikserit? - + &Add &Lisää - + Ctrl+A Ctrl+A - + &Edit &Muuta - + Enter Entteri - + &Toggle highlight &valitse korostettu - + Ctrl+T Ctrl+T - + &Delete &Poista - + Delete Poista - + &Copy &Kopio - + Ctrl+C Ctrl+C - + Ctrl+X Ctrl+X - + C&ut C&ut - + &Paste &Liitä - + Ctrl+V Ctrl+V - + Du&plicate Jäl&jennä - + Ctrl+U Ctrl+U - + Clear Mixes? Tyhjennä mikserit? - + Really clear all the mixes? Varmasti tyhjennä kaikki mikserit? @@ -7520,12 +7717,12 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. ModelData - + Model: - + Throttle Source Kaasun lähde @@ -7596,878 +7793,784 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. ModelPrinter - + Exponential Expo - + Extra Fine Eri hieno - + Fine Hieno - + Medium Keski - + Coarse Karkea - + Unknown Tuntematon - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Master/Jack - + Enable Päälle - + Disable - + True - + False - + Yes Kyllä - + No Ei - + Y Y - + N - + ON ON - - - - + + + + OFF Pois - - - - - - - - - - - - - ??? - ??? - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 6P {1W?} - - - - 25mW - - - - - + + Mode Moodi - - + + Channels Kanavat - - + + Frame length - + PPM delay PPM viive - - + + Polarity Napaisuus - + Protocol Protokolla - - - + + + Delay Viive - - + + Receiver Vastaanotin - + Radio protocol - + Subtype - + Option value - + Sub Type - + RF Output Power - - Telemetry - Telemetria - - - - - ???? - - - - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - Rudder - Sivuperäsin - - - - Elevator - Korkeusperäsin - - - - Throttle - Kaasu - - - - Aileron - Siivekkeet - - - + MULT! - - + + Offset Tasoitus - + Slow Hidas - + Warn - + Flight modes Lento tilat - + Flight mode Lento tila - + All Kaikki - + Edge Reuna - + Sticky Lukko - + Timer Ajastin - + missing - + Duration Kesto - + Extended Limits Laajemman rajat - + Display Checklist Näytä teht.lista - + Global Functions - + Manual Käsin - + Auto Autom - + Failsafe Mode Turvatila - - + + Hold Pidä - + No Pulse - + Not set - + No pulses - + Silent Äänetön - + Beeps Piipit - + Voice Ääni - + Haptic Toista värinä - + Flight - + Manual reset - + Step - + Display - + Extended - + Never - + On Change - + Always - - Trainer Port - Trainerin portti - - - - Internal Radio System - Sisäinen radio systeemi - - - - External Radio Module - Ulkoinen radio systeemi - - - - - Radio System - Radio systeemi - - - - Extra Radio System - Extra Radio järjestelmä - - - - - + + + Source Lähde - + Trim idle only - + Warning Varoitus - + Reversed - + Tmr - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (kaapeli) - + Alti Kork - + Alti+ Kork+ - + VSpeed Vnopeus - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Kennoja - + Calculated - + Add - + Average - - + + Min Min - - + + Max Max - + Multiply - + Totalise - + Cell Kenno - + Consumption - + Distance - + Lowest - + Cell %1 - + Highest - + Delta - + Formula - - + + Id - + Instance - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades Prop lavat - + Multi. - + F - + Inst - + Alt Kork - + Unit Yksikkö - + Prec - + Ratio - + Multi - + A/Offset - + Filter Filtteri - + Persist - + Positive Positiivinen - + Log - + Numbers - + Bars Palkit - + Script - + Filename Tiedoston nimi - + + Error: Unable to open or read file! + + + + Persistent Yhtämittainen - + Off Pois - - - - - - + + + + + + None Ei mitään - + Name Nimi - + Countdown Laskuri - + Minute call - - - + + + FM%1 FM%1 - + FM%1%2 FM%1%2 - + FM%1+%2 - - + + Weight Paino - - + + Switch Kytkin - - + + NoTrim Ei trimmiä - + No DR/Expo Ei DR / Expoja - + Offset(%1) Tasoitus(%1) - + Disabled in all flight modes - + instant - - - + + + Custom Omat - + Standard Vakio @@ -8503,7 +8606,7 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. Module - + Failsafe Mode Turvatila @@ -8513,7 +8616,7 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. Aloitus - + PPM delay PPM viive @@ -8533,12 +8636,12 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. Napaisuus - + Trainer Mode Harjoitus tila - + PPM Frame Length PPM läh pituus @@ -8548,27 +8651,17 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. CH - + Antenna - - Internal - - - - - Ext. + Int. - - - - + Option value - + Bind on startup @@ -8578,129 +8671,146 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power - + us us - + Multi Radio Protocol - + Sub Type - + Master/Jack - + Slave/Jack - + Master/SBUS Module - + Master/CPPM Module - + Master/SBUS in battery compartment - + Show values in: - + % abbreviation for percent % - + μs abbreviation for microseconds - + ms ms - + + Receiver 1 + + + + + + + X + X + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Kanavat - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set - + Hold Pidä - + Custom Omat - + No Pulses Ei pulsseja - + Receiver Vastaanotin - + Failsafe Positions Turvatila asennot - + Protocol Protokolla @@ -8710,17 +8820,17 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. Vastaanotin No. - + Output type - + Open Drain - + Push Pull @@ -8728,490 +8838,572 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. ModuleData - + Positive Positiivinen - + Negative Negatiivinen + + + Trainer Port + Trainerin portti + + + + Internal Radio System + Sisäinen radio systeemi + + + + External Radio Module + Ulkoinen radio systeemi + + + + Extra Radio System + Extra Radio järjestelmä + + + + Radio System + Radio systeemi + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - Trainerin portti - - - - Internal Radio System - Sisäinen radio systeemi - - - - External Radio Module - Ulkoinen radio systeemi - - - - - Radio System - Radio systeemi - - - - Extra Radio System - Extra Radio järjestelmä - - - + Value Arvo - + Hold Pidä - + No Pulse + + + Ask + + + + + Internal + + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Tulo - + Weight Paino - + Long. cyc - + Lateral cyc - + Collective Kopt Collective - + Flight modes Lento tilat - - + + Flight mode Lento tila - - + + Switch Kytkin - + General - + EEprom Size - + Model Image Mallin kuva - + Throttle Kaasu - + Trims - + Center Beep - + Switch Warnings Kytkin varoitukset - + Pot Warnings Potikka varoitus - + Other - + Timers - + Time Aika - + Countdown Laskuri - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter Helikopteri - + Swash - - + + Type - + Ring - - Fade IN - - - - - Fade OUT - - - - + Protocol Protokolla - + Low - + Critical - + Telemetry audio - + Altimetry Korkeusmittaus - - + + Vario source Variom lähde - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar - - + + Volts source - + Altitude source - + Various Useat - + Serial protocol - + FAS offset - + mAh count mAh laskuri - + Persistent mAh Yhtm. mAh - + Current source Virran lähde - + Blades Prop lavat - + Parameters Parametrit - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + + + + + Global Functions + + + + + Checklist + + + + + GV%1 GV%1 - + RE%1 - + Channel - - - + + + Name Nimi - - Global variables - Globaalit muuttujat - - - + Prec - + Popup - + Outputs - + Subtrim Alitrimmi - + Direct - + Curve Käyrä - + PPM - + Linear Suora - + Telemetry Telemetria - + Offset Tasoitus - - + + Min Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max Max - + Global Variables Globaalit muuttujat - + Inputs Tulot - + Mixers Mikserit - + Curves Käyrät - + L%1 L%1 - + Logical Switches Loogiset kytkimet - + SF%1 SF%1 - + Special Functions Spesiaali toiminnot - + Analogs - - + + Unit Yksikkö - + Scale Skaala - + RSSI Alarms @@ -9255,9 +9447,19 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9295,12 +9497,12 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. - + Cannot write radio settings - + Cannot write model %1 @@ -9375,26 +9577,31 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. + Style + + + + Print Tulosta - + Print to file Tulosta tiedostoon - + Print Document Tulosta dokumentti - + Select PDF output file Valitse PDF tiedosto - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) ODF tiedosto (*.odt);;PDF tiedosto (*.pdf);;HTML-tiedosto (*.htm *.html);;Kaikki tiedostot (*) @@ -9593,36 +9800,43 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan. RadioOutputsWidget + Form + View: + Logical Switches Loogiset kytkimet + Global Variables Globaalit muuttujat + Channel Outputs + Mix Outputs + L o g @@ -9632,6 +9846,7 @@ c + G l o @@ -9642,6 +9857,7 @@ l + C h a @@ -9654,6 +9870,7 @@ s + M i x @@ -9661,11 +9878,21 @@ e s + + + FM%1 + FM%1 + + + + GV%1 + GV%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. @@ -10113,22 +10340,22 @@ s RawSwitch - + - + - + - - + ! @@ -10347,126 +10574,136 @@ s SensorData - - + + V V - + A A - + mA - + kts - + m/s m/s - + km/h km/h - + mph mph - + m metri - + f - + °C °C - + °F - + % % - + mAh mAh - + W W - + mW - + dB - + rpms - + g g - + ° ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + + + + + External + + Setup @@ -10644,15 +10881,25 @@ Jos tämä valittuna, kaasu toimii käänteisesti. Tyhjäkäynti on ylhäällä, SetupPanel - + Timer %1 - + THR KAA + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10677,182 +10924,192 @@ Jos tämä valittuna, kaasu toimii käänteisesti. Tyhjäkäynti on ylhäällä, - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -10984,151 +11241,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11143,64 +11430,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator - + F4 - + Trainer Simulator - + F5 - + Debug Output - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11209,64 +11496,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11274,48 +11573,59 @@ The radio type specified in the selected profile is used by default. + + + ... ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File Tiedosto + Folder + SD Path @@ -11344,71 +11654,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Companion simulaattori - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) - + Cannot open joystick, joystick disabled Ei voi avata joystickia, joystick pois käytöstä @@ -11467,109 +11778,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11618,66 +12060,66 @@ The default is configured in the chosen Radio Profile. Telemetry - + A1 A1 - + A2 A2 - + RSSI RSSI - + Alarm 1 Varoitus 1 - - + + ---- ---- - - + + Yellow Kelt - - + + Orange Orans - - + + Red Puna - + Alarm 2 Varoitus 2 - + Serial Protocol Sarja protokolla - + Volt source Voltti lähde - + Current source Virran lähde @@ -11687,117 +12129,122 @@ The default is configured in the chosen Radio Profile. Protokolla - + None Ei mitään - + FrSky Sensor Hub FrSky:n hubi - + Blades Prop lavat - + Sink Max Maksimi vajoama - + Climb Max Maksimi nousu - + Sink Min Minimi vajoama - + Climb Min Minimi nousu - + Center Silent - + Vario source Variom lähde - + Vario limits Varionm asetukset - + Disable telemetry audio warnings - + + Source + Lähde + + + Altimetry Korkeusmittaus - + Altitude source - + Volts source - + Top Bar - + mAh mAh - + A A - + Various Useat - + Sensors - + Disable multi sensor handling - + mAh count mAh laskuri - + FAS Offset FAS asetus - + Persistent mAh Yhtm. mAh @@ -11911,7 +12358,7 @@ The default is configured in the chosen Radio Profile. mAmp (mA) - + Range Matka @@ -11924,22 +12371,22 @@ The default is configured in the chosen Radio Profile. Oman ruudun tyyppi - + None Ei mitään - + Numbers - + Bars Palkit - + Script @@ -11967,99 +12414,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (kaapeli) - + Telemetry screen %1 Telemetria ruutu %1 - + + Source + Lähde + + + Low Alarm Ala hälytys - + Critical Alarm Kriittinen hälytys - + Winged Shadow How High erikoistoiminto korkea - + Winged Shadow How High (not supported) erikoistoiminto korkea (ei tuettu) - + Alti Kork - + Alti+ Kork+ - + VSpeed Vnopeus - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Kennoja - + --- --- @@ -12072,269 +12524,279 @@ The default is configured in the chosen Radio Profile. - + Custom Omat - + Calculated - + Id - + Instance - + + Rx + + + + + Mod. + + + + Add - + Average - + Min Min - + Max Max - + Multiply - + Totalize - + Cell Kenno - + Consumption - + Dist Etäisyys - + Cells Sensor : - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : - + Alt. Sensor : - + Sensor : - + V V - + A A - + mA - + kt - + m/s m/s - + ft/s - + km/h km/h - + mph mph - + m metri - + ft jalka - + °C °C - + °F - + % % - + mAh mAh - + W W - + mW - + dBm - + g g - + ° ° - + Rad - + mL - + US fl.Oz. - + Raw (-) Raaka ( - ) - + RPM - + Precision - + Ratio - + Blades Prop lavat - + Offset Tasoitus - + Multiplier - + Auto Offset - + Filter Filtteri - + Persistent Yhtämittainen - + Positive Positiivinen - + Logs Logit @@ -12342,22 +12804,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest - + Cell %1 - + Highest - + Delta @@ -12366,545 +12828,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator - + + VFAS - + + RSSI RSSI - + + A1 A1 - + + A2 A2 + Simulate Simuloi - + + Replay SD Log File - + + Replay rate - + + Load - + + |> - + + <| - + + > > - + + <- - + + X X - + + Row # Timestamp - + + 1/5x 1/5x - + + 5x 5x - + + No Log File Currently Loaded - + + RAS - - - + + + + + + V / ratio - + + Db - + + RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 A3 - + + A4 A4 - + + Tmp2 - + + Fuel Bensa - + + + + °C °C - + + ml - - Deg. C - - - - + + % % - - + + + + Meters - + + Alt Kork - + + VSpd Vspd - + + m/s m/s - + + Fuel Qty - - + + + + km/h km/h - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS - + + Lat,Lon (dec.deg.) - + + AccX AccX - + + dd-MM-yyyy hh:mm:ss - + + Date - + + Amps - + + AccZ AccZ - + + GAlt - - + + + + Volts - + + Cels - + + Curr Virta - + + AccY AccY - + + GSpd - + + Degrees - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM + When enabled, sends any non-blank values as simulated telemetry data. - + Log File - + LOG Files (*.csv) - + ERROR - invalid file - - Templates - - - Simple 4-CH - - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - V-Peräsin - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - - - - - - - - - - - - - - ELE - - - - - - - THR - KAA - - - - - - - - - - - AIL - - - - - - - - AIL2 - - - - - - - - ELE2 - - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - - - - - - Clear Mixes? - Tyhjennä mikserit? - - - - Really clear existing mixes on CH6? - - - - - Really clear existing mixes on CH5? - - - ThrottlePage @@ -12939,12 +13281,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 @@ -12976,37 +13318,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Äänetön - + Beeps Piipit - + Voice Ääni - + Haptic Toista värinä - + Not persistent Ei yhtämittainen - + Persistent (flight) Jatkuva (lento) - + Persistent (manual reset) Jatkuva (manuaalinen nollaus) @@ -13138,6 +13480,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator @@ -13145,28 +13488,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index - + Name Nimi - + Size - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13760,93 +14108,89 @@ m2560 joka on v4.1 lähettimessä <b><u>VAROITUS!</u></b><br>CPU Tyyppi valitaan yleensä valitun firmwaren mukaan.<br>Jos vaihdat CPU Tyyppiä eeprom ei välttämättä toimi oikein. - - downloadDialog - - - Downloading: - Ladataan: - - - - Unable to save the file %1: %2. - Ei voida tallentaa tiedstoa %1: %2. - - - - Download failed: %1. - Lataus epäonnistui %1. - - joystickDialog + Configure Joystick Määrittele joystick + Ch2 CH2 + Ch1 CH1 + Ch4 CH4 + Ch6 CH6 + Ch3 CH3 + Ch5 CH5 + Ch7 CH7 + Ch8 CH8 + Instructions Ohjeita + Enable Päälle + Cancel Peruuta + Back + Start Aloitus @@ -13857,6 +14201,7 @@ m2560 joka on v4.1 lähettimessä + Ok Ok diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts index 074482b70..ea1789d6e 100644 --- a/companion/src/translations/companion_fr.ts +++ b/companion/src/translations/companion_fr.ts @@ -85,7 +85,7 @@ AppMessages - + Show this message again at next startup? Afficher ce message lors du prochain démarrage ? @@ -616,79 +616,79 @@ Manche Droit: Profondeur, Direction Mémoriser les positions des inters du simulateur - + My Radio Ma radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> <p><b>Vous ne pouvez pas changer de type de radio ou modifier les options de compilation tant que les changements ne sont pas sauvegardés. Que souhaitez-vous faire?</b></p> <ul><li><i>Sauvegarder tout</i> - Enregistrez le(s) fichier(s) ouvert(s) avant d'enregistrer les paramètres.<li><li><i>Réinitialiser</i> - Revenir aux précédentes options de type et de compilation de la radio avant d'enregistrer les paramètres</li><li><i>Annuler</i> - Retournez dans la boîte de dialogue de l'éditeur de paramètres.</li></ul> - + Select your snapshot folder Sélectionner le dossier où stocker les captures d'écran - + Note: Nightly builds are not available in this version, Release/RC update channel will be used. Remarque: la version " nightly" n'est pas disponible dans cette version. Le canal de mise à jour "officiel" sera utilisé. - - + + No joysticks found Aucun Joystick trouvé - + EMPTY: No radio settings stored in profile VIDE: Aucune donnée stockée dans le profil - + AVAILABLE: Radio settings of unknown age DISPONIBLE: Réglages enregistrés à une date inconnue - + AVAILABLE: Radio settings stored %1 DISPONIBLE: Réglages enregistrés le %1 - + Select your library folder Sélectionner le dossier de bibliothèque - - + + Select your Models and Settings backup folder Sélectionner le dossier dans lequel une sauvegarde des réglages et modèles sera placée automatiquement lors de chaque opération - + Select a folder for application logs Sélectionner un dossier pour le log des applications - + Select Google Earth executable Sélectionner l'emplacement de l'exécutable Google Earth - + Select the folder replicating your SD structure Sélectionner un dossier contenant une copie des dossiers de la carte SD - + Open Image to load Ouvrir l'image à charger - + Images (%1) Images (%1) @@ -701,26 +701,26 @@ Manche Droit: Profondeur, Direction Erreur de lecture %1: %2 - + Cannot save EEPROM Sauvegarde EEPROM impossible - + Cannot open file %1: %2. Impossible d'ouvrir le fichier %1: %2. - + Error writing file %1: %2. Erreur d'écriture du fichier %1: %2. - + Invalid binary EEPROM file %1 Fichier EEPROM invalide %1 @@ -728,58 +728,58 @@ Manche Droit: Profondeur, Direction Boards - + Left Horizontal Gauche Horizontal - + Left Vertical Gauche Vertical - + Right Vertical Droit Vertical - + Right Horizontal Droit Horizontal - + Aux. 1 - + Aux. 2 - - + + Unknown Inconnu - + Rud Dir - + Ele Prf - + Thr Gaz - + Ail @@ -828,82 +828,82 @@ Manche Droit: Profondeur, Direction Channels - + Name Nom - + Min - + Max - + Subtrim - + Direction - + Curve Courbe - + PPM Center Neutre PPM - + Linear Subtrim Subtrim linéaire - + CH%1 VOIE%1 - + Popup menu available Menu contextuel disponible - + --- - + INV - + &Copy &Copier - + &Cut &Couper - + &Paste &Coller - + &Delete &Supprimer @@ -2024,53 +2024,53 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import DataField - + Conversion error on field %1 Erreur de conversion du champ %1 - + Switch Interrupteur - + Switch L'interrupteur - + cannot be exported on this board! n'est pas supporté sur cette carte ! - + Source - + Source %1 cannot be exported on this board! La source %1 n'est pas supportée sur cette plateforme ! - + OpenTX only accepts %1 points in all curves OpenTX n'accepte que %1 points au maximum entre toutes les courbes - + OpenTx only accepts %1 points in all curves OpenTX n'accepte que %1 points au maximum entre toutes les courbes - - + + OpenTX on this board doesn't accept this function OpenTX ne supporte pas cette fonction sur cette carte - + OpenTX doesn't accept this radio protocol OpenTX ne supporte pas ce protocole radio @@ -2252,7 +2252,7 @@ Pour <b>retirer un filtre de l'historique</b>, sélectionnez-le - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - Le firmware de la radio est probablement incorrect, @@ -2260,17 +2260,12 @@ la taille de l'EEPROM est de 4096 mais seulement 2048 bytes sont utilisés. Vérifier la sélection (M64/M128) - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - Votre eeprom provient d'une ancienne version d'OpenTX, mettez à niveau! Pour conserver une sauvegarde de votre fichier d'origine, choisissez "Fichier → Enregistrer sous" en spécifiant un autre nom. - - - Warnings! - Avertissements ! - EepeFormat @@ -2554,27 +2549,27 @@ Si vide, la ligne est toujours active. %1%2 Both directions, to destination folder first - %1%2 Bidirectionnel, en commençant par le dossier Destination + %1%2 Bidirectionnel, en commençant par le dossier Radio %1%2 Both directions, to source folder first - %1%2 Bidirectionnel, en commençant par le dossier Source + %1%2 Bidirectionnel, en commençant par le dossier Local %1 Only from source folder to destination folder - %1 Uniquement du dossier Source vers le dossier Destination + %1 Uniquement du dossier Local vers le dossier Radio %1 Only from destination folder to source folder - %1 Uniquement du dossier Destination vers le dossier Source + %1 Uniquement du dossier Radio vers le dossier Local How to handle overwriting files which already exist in the destination folder. - Comment gérer l'écrasement des fichiers qui existent déjà dans le dossier Destination. + Comment gérer l'écrasement des fichiers qui existent déjà dans le dossier de destination. @@ -2812,62 +2807,50 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont Firmware - + Channel values displayed in us Positions de voies affichées en µs - + No OverrideCH functions available Désactive la fonction spéciale "Remplacer VOIExx" - + Possibility to enable FAI MODE (no telemetry) at field Possibilité d'activer le mode FAI (télémétrie désactivée) sur le terrain - + FAI MODE (no telemetry) always enabled Mode FAI (télémétrie toujours désactivée) - - - Support for the DIY-Multiprotocol-TX-Module - Support du module "Multiprotocol" - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Masque le protocole D8. Légalement obligatoire sur les radios Européennes importées après le 1er janvier 2015 - + Disable HELI menu and cyclic mix support Supprimer le menu HELICO et les mixages cycliques - + Disable Global variables Supprimer le support des variables globales - + Enable Lua custom scripts screen Activer l'écran des scripts Lua personnalisés - - - Enable Lua compiler - Activer le compilateur Lua - - - + Support for PPM internal module hack Support du remplacement du module interne par un module PPM @@ -2877,189 +2860,199 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont Utiliser la police alternative SQT5 - + Disable RAS (SWR) Désactiver le RAS (SWR). Utile uniquement pour les X9D+ avec un RAS/SWR non fonctionnel - + Pots use in menus navigation Support de la navigation dans les menus avec les POTS - + FrSky Taranis X9D+ - + FrSky Taranis X9D+ 2019 - + FrSky Taranis X9D - + Haptic module installed Module vibreur installé - + FrSky Taranis X9E - + Confirmation before radio shutdown Confirmation avant l'arrêt de la radio - + Horus gimbals installed (Hall sensors) Manches Horus à effet HALL installés - + FrSky Taranis X9-Lite - - + + Support for auto update on boot Prise en charge de la mise à jour automatique au démarrage - + FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO - + FrSky Taranis X-Lite - + FrSky Horus X10 / X10S - + + + Support for ACCESS internal module replacement + Prise en charge du module de remplacement interne ACCESS + + + + FrSky Horus X10 Express + + + + FrSky Horus X12S - + Use ONLY with first DEV pcb version Exclusivement pour les Horus DEV - + Jumper T12 - + + Enable non certified R9M firmwares + Activer les firmwares R9M non certifiés + + + Turnigy 9XR-PRO - + Enable HELI menu and cyclic mix support Activer le menu hélico et les mixages CCPM - + Global variables Variables globales - + Enable non certified firmwares Activer les firmwares non certifiés - - - Support for Crossfire TX Module - Prise en charge du module TX Crossfire - - - + In model setup menus automatically set source by moving the control Sélectionner les sources des mixeurs en bougeant le contrôle désiré - + In model setup menus automatically set switch by moving the control Sélectionner les interrupteurs en bougeant le contrôle désiré - + No graphical check boxes and sliders Pas de cases à cocher et de curseurs graphiques - + Battery graph Graphique de la batterie - + Don't use bold font for highlighting active items Ne pas mettre les lignes actives en gras - + Turnigy 9XR with m128 chip Turnigy 9XR avec une puce m128 - + Turnigy 9XR - + 9X with stock board 9X avec carte mère d'origine - + Enable resetting values by pressing up and down at the same time Permet la remise à zéro des valeurs en pressant haut-bas en même temps, valeur min avec gauche/bas, valeur max avec haut/droite, inversion avec gauche/droite - + 9X with stock board and m128 chip Carte 9x avec un chip m128 - + 9X with AR9X board 9X avec carte AR9X - + 9X with Sky9x board 9X avec carte Sky9x - + 9X with Gruvin9x board 9X avec carte Gruvin9x - + DIY MEGA2560 radio Radio DIY à base de MEGA2560 @@ -3989,7 +3982,7 @@ Communs à tous les modèles d'une même EEPROM. GeneralSettings - + Radio Settings Paramètres de la radio @@ -4047,167 +4040,169 @@ Communs à tous les modèles d'une même EEPROM. - + Timeshift from UTC Décalage horaire (UTC) - + Voice Language Langue des voix - + Country Code Zone géographique RF - + Stick reverse Inversion des manches - + FAI Mode Mode FAI - + Adjust RTC Ajuster l'heure par GPS - + Vario pitch at max Tonalité du vario au max - - + + Hz - + Speaker Volume Volume haut-parleur - + Backlight Switch Inter de rétroéclairage - + Sound Mode Mode Son - + Color 1 Couleur 1 - + Color 2 Couleur 2 - + Speaker Pitch (spkr only) Tonalité (HP uniquement) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Si cette valeur est différente de 0, l'appui sur une touche de navigation déclenche le rétroéclairage qui s'éteint après la durée spécifiée (en secondes). - + + + sec - + Backlight color Couleur du rétroéclairage - + Beeper Bipeur - + Speaker Haut-parleur - + BeeperVoice Bipeur/Voix - + SpeakerVoice Haut-parleur/Voix - + Beep volume Volume des bips - + Wav volume Volume des fichiers audio - + Vario volume Volume du variomètre - + Background volume Volume de la musique d'ambiance - - + + ms - + Backlight Auto OFF after Arrêt rétroéclairage après - + Backlight flash on alarm Clignotement rétroécl. alarmes - + Vario pitch at zero Tonalité du vario à 0 - + Vario repeat at zero Répétition du vario à 0 - + This is the switch selectrion for turning on the backlight (if installed). Interrupteur déclenchant le rétroéclairage' (si installé). - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4222,42 +4217,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Plage de valeurs: 20...45</span></p></body></html> - + Backlight Brightness Luminosité du rétroéclairage - + RotEnc Navigation Navigation sélecteur rotatif - + Automatically adjust the radio's clock if a GPS is connected to telemetry. Régle automatique l'heure de la radio si un GPS est présent. - + America Amérique - + Japan Japon - + Europe - + Backlight OFF Brightness Luminosité écran éteint - + Mode selection: Mode 1: @@ -4298,332 +4293,337 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (DIR PRF GAZ AIL) - + Mode 2 (RUD THR ELE AIL) Mode 2 (DIR GAZ PRF AIL) - + Mode 3 (AIL ELE THR RUD) Mode 3 (AIL PRF GAZ DIR) - + Mode 4 (AIL THR ELE RUD) Mode 4 (AIL GAZ PRF DIR) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Ordre des voies</p><p><br/></p><p>Détermine l'ordre des mixages par défaut sur un nouveau modèle.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Si vous activez l'option FAI, seuls les capteurs RSSI et BtRx vont fonctionner. Cette fonction ne peut pas être désactivée sur la radio. - + + Owner Registration ID + Enregistrement ID du propriétaire + + + + aaaaaaAA + + + + R E T A D P G A - + R E A T D P A G - + R T E A D G P A - + R T A E D G A P - + R A E T D A P G - + R A T E D A G P - + E R T A P D G A - + E R A T P D A G - + E T R A P G D A - + E T A R P G A D - + E A R T P A D G - + E A T R P A G D - + T R E A G D P A - + T R A E G D A P - + T E R A G P D A - + T E A R G P A D - + T A R E G A D P - + T A E R G A P D - + A R E T A D P G - + A R T E A D G P - + A E R T A P D G - + A E T R A P G D - + A T R E A G D P - + A T E R A G P D - - Power On Speed - Vitesse d'allumage + + Power Off Delay + Délai mise hors tension - + USB Mode Mode USB - - Power Off Speed - Vitesse d'extinction - - - + Jack Mode Mode Jack - + Audio - + Trainer Écolage - - + + Ask on Connect Demander à la connexion - + Joystick (HID) - + USB Mass Storage Stockage USB (SD) - + USB Serial (CDC) Port série USB (Debug) - + Stick Mode Mode - + Metric Métrique - + Imperial Impérial - + Default Channel Order Ordre des voies par défaut - + GPS Coordinates Coordonnées GPS - + Min - - + + v - + Max - + RSSI Poweroff Warning Vérifier RSSI à l'extinction - + DMS - + Inactivity Timer Alerte d'inactivité - + Show Splash Screen on Startup Afficher l'écran de démarrage - + Contrast Contraste - + Battery Meter Range Plage de l'indicateur de batterie - + Haptic Strength Puissance vibreur - + LCD Display Type Type de LCD - + "No Sound" Warning Alerte "son coupé" - + Battery Warning Alerte batterie - + Haptic Length Durée vibreur - + MAVLink Baud Rate Baudrate Mavlink - - + + Quiet Mode silencieux - + Only Alarms Seulement les alarmes - - + + No Keys Touches silencieuses - - + + All Tous - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4634,116 +4634,121 @@ Seuil auquel se déclenche l'alarme de batterie. Plage de valeurs: 5v...10v - + Standard - + Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Si différent de 0, émission d'un bip sonore régulier si aucune action n'a été effectuée sur l'émetteur depuis le temps spécifié (en minutes). Réinitialisation en agissant sur n'importe lequel des manches / touches de navigation. - + min - - + + Power On Delay + Délai mise sous tension + + + + Show splash screen on startup Affiche l'écran d'accueil au démarrage - + --- - + 2s - + 3s - + 4s - + 6s - + 8s - + 10s - + 15s - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4768,72 +4773,72 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alerte mode silencieux - Avertissement si les bips sont désactivés</p></body></html> - - + + X-Short Très court - - + + Short Court - - + + Normal - - + + Long - - + + X-Long Très long - + Low EEPROM Warning Avertissement EEPROM faible - + NMEA - + Play Delay (switch mid position) Délai position centrale inters - + Measurement Units Unités de mesure - + Haptic Mode Mode du vibreur - + Beeper Length Durée des bips - + Beeper Mode Réglage des bips - + Beeper volume 0 - Quiet. No beeps at all. @@ -4850,7 +4855,7 @@ Long : bips plus longs. Extra long : bips extra longs. - + Alarms Only Seulement les Alarmes @@ -4978,7 +4983,7 @@ Extra long : bips extra longs. Sel.Rot. E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -5013,242 +5018,247 @@ Cette fonction ne peut pas être désactivée sur la radio. Formulaire - + SQ - + SR - + LS2 - + SP - + SO - + S4 - + RS - + SB - + PPM 2 - + + Antenna + Antenne + + + OFF Eteint - + S-Port Mirror Recopie S. Port - + Telemetry Télémetrie - + SBUS Trainer Écolage SBUS - + Debug Débogage - + S5 - + Rud Dir - + PPM 3 - + S1 - + S2 - + S3 - + PPM 1 - + Serial Port Port série - + v - + PPM Multiplier Coeff. multiplicateur PPM - + Current Offset Correction courant - + PPM 4 - + SA - + Ele Prf - + Ail Ail - + Thr Gaz - + SC - + LS - + SD - + Battery Offset Correction tension - + SE - + SF - + SG - + SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 - + Bluetooth - + ADC Filter Filtre ADC - + Device Name: Nom de l'appareil: @@ -5317,6 +5327,31 @@ Cette fonction ne peut pas être désactivée sur la radio. Trainer Écolage + + + Internal + Interne + + + + Ask + Demander + + + + Per model + Par modèle + + + + Internal + External + Interne + Externe + + + + External + Externe + Heli @@ -6487,17 +6522,17 @@ Nous recommandons de lire attentivement les notes de version à l'aide du b No Companion release candidates are currently being served for this version, please switch release channel - Aucune version "candidate" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucune version "candidate" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "officiel" No nightly Companion builds are currently being served for this version, please switch release channel - Aucune version "nightly" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucune version "nightly" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "officiel" No Companion release builds are currently being served for this version, please switch release channel - Aucune version "officielle" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucune version "officielle" de Companion n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "candidate" ou "nightly" @@ -6507,17 +6542,17 @@ Nous recommandons de lire attentivement les notes de version à l'aide du b No firmware release candidates are currently being served for this version, please switch release channel - Aucun firmware "candidate" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucun firmware "candidate" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "officiel" No firmware nightly builds are currently being served for this version, please switch release channel - Aucun firmware "nightly" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucun firmware "nightly" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "officiel" No firmware release builds are currently being served for this version, please switch release channel - Aucun firmware "officiel" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal officiel + Aucun firmware "officiel" n'est actuellement disponible sur ce serveur, veuillez commuter sur le canal "candidate" ou "nightly" @@ -7710,12 +7745,12 @@ Mixage actif par défaut si non-renseigné. ModelData - + Model: Modèle: - + Throttle Source Source des gaz @@ -7816,27 +7851,27 @@ Mixage actif par défaut si non-renseigné. Inconnu - + Slave/Jack Elève/Jack - + Master/SBUS Module Maître/SBUS module - + Master/CPPM Module Maître/CPPM Module - + Master/SBUS in battery compartment Maître/SBUS compartiment batterie - + Master/Jack Maître/Jack @@ -7877,9 +7912,9 @@ Mixage actif par défaut si non-renseigné. - - - + + + OFF @@ -7890,7 +7925,7 @@ Mixage actif par défaut si non-renseigné. - + Mode @@ -7924,14 +7959,14 @@ Mixage actif par défaut si non-renseigné. - - + + Delay Délai - + Receiver Récepteur @@ -7961,582 +7996,577 @@ Mixage actif par défaut si non-renseigné. Puissance RF - - Telemetry - Télémétrie - - - + 90 - + 120 - + 120X - + 140 - + MULT! - - + + Offset Décalage - + Slow Ralenti - + Warn Attn - + Flight modes Phases de vol - + Flight mode Phase de vol - + All Tous - + Edge Flanc - + Sticky Bistable - + Timer Chrono - + missing absent - + Duration Durée - + Extended Limits Débattements étendus - + Display Checklist Afficher la checklist - + Global Functions Fonctions globales - + Manual Manuel - + Auto - + Failsafe Mode Mode Failsafe - - + + Hold Maintien - + No Pulse Pas d'impulsion - + Not set Non défini - + No pulses Pas d'impulsions - + Silent Aucun - + Beeps Bips - + Voice Voix - + Haptic Vibreur - + Flight Vol - + Manual reset RAZ manuelle - + Step Pas - + Display Affichage - + Extended Étendu - + Never Jamais - + On Change Sur changement - + Always Toujours - - - + + + Source - + Trim idle only Trim ralenti uniquement - + Warning Avertissement - + Reversed Inversé - + Tmr Chrono - + FrSky S.PORT - + FrSky D - + FrSky D (cable) FrSky D (câble) - + Alti Alt - + Alti+ Alt+ - + VSpeed Vitesse verticale - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells Velm - + Calculated Calculé - + Add Addition - + Average Moyenne - - + + Min - - + + Max - + Multiply Multiplication - + Totalise - + Cell Element LiPo - + Consumption Consommation - + Distance - + Lowest Min - + Cell %1 Elém. %1 - + Highest Max - + Delta - + Formula Formule - - + + Id - + Instance - - - - + + + + Sensor Capteur - - + + Sources - - + + GPS - + Alt. - - + + Blades Pales - + Multi. - + F - + Inst - + Alt Altitude - + Unit Unité - + Prec - + Ratio - + Multi - + A/Offset - + Filter Filtre - + Persist - + Positive - + Log - + Numbers Chiffres - + Bars Barres - + Script - + Filename Nom de fichier - + Error: Unable to open or read file! Erreur: Impossible d'ouvrir ou de lire le fichier! - + Persistent Persistant - + Off - - - - - - + + + + + + None Aucun - + Name Nom - + Countdown Compte à rebours - + Minute call Annonces minutes - - - + + + FM%1 PV%1 - + FM%1%2 PV%1%2 - + FM%1+%2 PV%1+%2 - - + + Weight Ratio - - + + Switch Inter - - + + NoTrim Pas de trim - + No DR/Expo Pas d'expo/DR - + Offset(%1) Décalage(%1) @@ -8551,24 +8581,24 @@ Mixage actif par défaut si non-renseigné. - + Disabled in all flight modes Désactivé pour toutes les phases de vol - + instant immédiat - - - + + + Custom Prédéfini - + Standard @@ -8604,7 +8634,7 @@ Mixage actif par défaut si non-renseigné. Module - + Failsafe Mode Mode Failsafe @@ -8614,7 +8644,7 @@ Mixage actif par défaut si non-renseigné. 1ère voie - + PPM delay Impulsion @@ -8634,12 +8664,12 @@ Mixage actif par défaut si non-renseigné. Polarité - + Trainer Mode Mode écolage - + PPM Frame Length Longueur de trame PPM @@ -8649,52 +8679,42 @@ Mixage actif par défaut si non-renseigné. VOIE - + Antenna Antenne - - Internal - Interne - - - - Ext. + Int. - Ext. + Int. - - - + Option value - + us µs - + Master/Jack Maître/Jack - + Slave/Jack Elève/Jack - + Master/SBUS Module Maître/SBUS module - + Master/CPPM Module Maître/CPPM Module - + Master/SBUS in battery compartment Maître/SBUS dans compartiment batterie @@ -8704,84 +8724,111 @@ Mixage actif par défaut si non-renseigné. Puissance RF - + Sub Type Sous-Type - + Show values in: Afficher les valeurs en: - + % abbreviation for percent - + μs abbreviation for microseconds - + ms - + + Receiver 1 + Récepteur 1 + + + + + + X + + + + + Receiver 2 + Récepteur 2 + + + + Receiver 3 + Récepteur 3 + + + WARNING: changing RF Output Power needs RE-BIND ATTENTION: RE-BIND nécessaire pour tout changement de puissance RF - + Channels Nb de voies - + Not set Non défini - + Hold Maintien - + Custom Prédéfini - + No Pulses Pas d'impulsions - + Receiver Récepteur - + WARNING: Requires non-certified firmware! ATTENTION: Nécessite un firmware non certifié! - + + Registration ID + ID d'enregistrement + + + Failsafe Positions Positions Failsafe - + Protocol Protocole - + Multi Radio Protocol Protocole Multi @@ -8791,27 +8838,27 @@ Mixage actif par défaut si non-renseigné. Récepteur No. - + Output type Type de sortie - + Open Drain - + Push Pull - + Bind on startup Bind au démarage - + Low Power Puissance Réduite @@ -8819,85 +8866,85 @@ Mixage actif par défaut si non-renseigné. ModuleData - + Positive - + Negative Négative - + Trainer Port Port écolage - + Internal Radio System Module HF interne - + External Radio Module Module HF externe - + Extra Radio System Module HF supplémentaire - + Radio System Module HF - + 10mW - 16CH 10mW - 16 VOIES - - + + 100mW - 16CH 100mW - 16 VOIES - + 500mW - 16CH 500mW - 16 VOIES - + Auto <= 1W - 16CH Auto <= 1W - 16 VOIES - - + + 25mW - 8CH 25mW - 8 VOIES - - + + 25mW - 16CH 25mW - 16 VOIES - + 200mW - 16CH (no telemetry) 200mW - 16 VOIES (pas de télémétrie) - + 500mW - 16CH (no telemetry) 500mW - 16 VOIES (pas de télémétrie) - + 100mW - 16CH (no telemetry) 100mW - 16 VOIES (pas de télémétrie) @@ -8905,27 +8952,37 @@ Mixage actif par défaut si non-renseigné. ModulePanel - + Value Valeur - + Hold Maintien - + No Pulse Pas d'impulsion - - Ext. + Int - + + Ask + Demander - + + Internal + Interne + + + + Internal + External + Interne + Externe + + + External Externe @@ -9418,11 +9475,16 @@ Mixage actif par défaut si non-renseigné. + Fixed ID value + Valeur ID fixe + + + DEFAULT DÉFAUT - + Custom - proto %1) Personnaliser - proto %1) @@ -9453,22 +9515,22 @@ Mixage actif par défaut si non-renseigné. OpenTxEepromInterface - + Unknown error Erreur inconnue - + ... plus %1 errors ... plus %1 erreurs - + Cannot write radio settings Impossible d'écrire les paramètres de la radio - + Cannot write model %1 Impossible d'écrire le modèle %1 @@ -9845,6 +9907,16 @@ A G E + + + FM%1 + PV%1 + + + + GV%1 + VG%1 + RadioSwitchWidget @@ -10532,126 +10604,136 @@ E SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours heures - + minutes - + seconds secondes - + TELE + + + Internal + Interne + + + + External + Externe + Setup @@ -10830,22 +10912,22 @@ Si cette option est cochée, la voie des gaz est inversée: le ralenti est &apo SetupPanel - + Timer %1 Chrono %1 - + THR GAZ - + Profile Settings Réglages du profil - + SD structure path not specified or invalid Chemin de la structure SD non spécifié ou invalide @@ -11354,64 +11436,64 @@ Profil ID: [%1]; Radio ID: [%2] - + Radio Outputs Sorties de la radio - + F2 - + Telemetry Simulator Simulateur de télémesure - + F4 - + Trainer Simulator Simulateur d'écolage - + F5 - + Debug Output Fenêtre de débogage - + F6 - + <b>Simulator Controls:</b> <b>Commandes simulateur:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). <tr><th>Touche/Souris</th><th>Action</th></tr> - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help Aide du simulateur @@ -11564,67 +11646,67 @@ La valeur par défaut est configurée dans le profil radio sélectionné.Simulateur Companion - + Radio Simulator (%1) Simulateur Radio (%1) - + Could not determine startup data source. Impossible de déterminer les données source. - + Could not load data, possibly wrong format. Impossible de charger les données, mauvais format. - + Data Load Error Erreur de lecture des données - + Invalid startup data provided. Plese specify a proper file/path. Données de démarrage fournies non valides. Veuillez spécifier un fichier/chemin approprié. - + Simulator Startup Error Erreur de démarrage du simulateur - + Error saving data: could open file for writing: '%1' Erreur de sauvegarde des données: impossible d'écrire le fichier '%1' - + Error saving data: could not get data from simulator interface. Erreur de sauvegarde des données: impossible de récupérer les données depuis l'interface de simulation. - + An unexpected error occurred while attempting to save radio data to file '%1'. Une erreur inattendue s'est produite lors de l'enregistrement des données radio dans le fichier '%1'. - + Data Save Error Erreur de sauvegarde des données - + Cannot open joystick, joystick disabled Impossible d'accéder au Joystick, Joystick désactivé - + Radio firmware error: %1 Erreur firmware radio: %1 - + - Flight Mode %1 (#%2) - Phase de Vol %1 (#%2) @@ -12327,104 +12409,104 @@ Trop d'erreurs, abandon. TelemetryPanel - + FrSky S.PORT - + FrSky D - + FrSky D (cable) FrSky D (câble) - + Telemetry screen %1 Ecran de télémesure %1 - + Source - + Low Alarm Alarme basse - + Critical Alarm Alarme critique - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (non supporté) - + Alti Alt - + Alti+ Alt+ - + VSpeed Vitesse verticale - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells Velm - + --- @@ -12437,269 +12519,279 @@ Trop d'erreurs, abandon. Formulaire - + Custom Prédéfini - + Calculated Calculé - + Id - + Instance - + + Rx + + + + + Mod. + + + + Add Addition - + Average Moyenne - + Min - + Max - + Multiply Multiplication - + Totalize Totalisation - + Cell Element LiPo - + Consumption Consommation - + Dist Distance - + Cells Sensor : Capteur d'éléments: - - - - - - - - + + + + + + + + --- - + GPS Sensor : Capteur GPS: - + Alt. Sensor : Capteur d'altitude: - + Sensor : Capteur: - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + g - + ° - + Rad - + mL - + US fl.Oz. - + Raw (-) Chiffres bruts (-) - + RPM Tours/minute - + Precision Précision - + Ratio - + Blades Pales - + Offset Décalage - + Multiplier Multiplicateur - + Auto Offset Offset auto - + Filter Filtre - + Persistent Persistant - + Positive - + Logs diff --git a/companion/src/translations/companion_it.ts b/companion/src/translations/companion_it.ts index 1584cd046..21b3e87db 100644 --- a/companion/src/translations/companion_it.ts +++ b/companion/src/translations/companion_it.ts @@ -57,6 +57,38 @@ Canale del secondo diruttore: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -70,32 +102,32 @@ Profilo Radio - + Default Channel Order Ordine canali predefinito - + Build Options Opzioni per compilazione - + Menu Language Lingua per i menu - + Default Stick Mode Modalità Stick - + Select Image Seleziona immagine - + Mode selection: Mode 1: @@ -136,528 +168,526 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Modo 1 (DIR ELE MOT ALE) - + Mode 2 (RUD THR ELE AIL) Modo 2 (DIR MOTO ELE ALE) - + Mode 3 (AIL ELE THR RUD) Modo 3 (ALE ELE MOT DIR) - + Mode 4 (AIL THR ELE RUD) Modo 4 (ALE MOT ELE DIR) - + Splash Screen Schermata di avvio - - + + The profile specific folder, if set, will override general Backup folder La cartella qui specificata, prevarrà su quella delle impostazioni generali - + Backup folder Cartella per backup - + If set it will override the application general setting Se impostato, prevarrà sulle impostazioni generali - + if set, will override general backup enable Se impostato, prevarrà sulle impostazioni generali - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Ordine dei canali</p><p><br/></p><p>Definisce l'ordine delle miscelazioni predefinite durante la creazione di un modello.</p></body></html> - + R E T A D E M A - + R E A T D E A M - + R T E A D M E A - + R T A E D M A E - + R A E T D A E M - + R A T E D A M E - + E R T A E D M A - + E R A T E D A M - + E T R A E M D A - + E T A R E M A D - + E A R T E A D M - + E A T R E A M D - + T R E A M D E A - + T R A E M D A E - + T E R A M E D A - + T E A R M E A D - + T A R E M A D E - + T A E R M A E D - + A R E T A D E M - + A R T E A D M E - + A E R T A E D M - + A E T R A E M D - + A T R E A M D E - + A T E R A M E D - - - - - - + + + + + + Select Folder - + Select Executable - - Simulator Volume Gain - Guadagno Volume Simulatore - - - - Profile Name - Descrizione - - - - Clear Image - Cancella immagine - - - - Append version number to FW file name - Aggiungi il numero di versione al nome del file - - - - Offer to write FW to Tx after download - Scrivere dopo aggiornamento - - - - Radio Type - Tipo di radio - - - - Other Settings - Altre impostazioni - - - - General Settings - Impostazioni generali radio - - - - SD Structure path - Cartella Struttura Scheda SD - - - - Set voice language. -May be different from firmware language - Impostazione del linguaggio della voce. -Può essere differente dalla lingua del firmware - - - - Voice Language - Lingua per le voci - - - - Application Settings - Impostazioni applicazione - - - - Show splash screen when Companion starts - Mostra schermata all'avvio - - - - Automatic check for Companion updates - Verifica automaticamente aggiornamenti di Companion - - - - - Enable automatic backup before writing firmware - Abilita il backup automatico prima degli aggiornamenti - - - - Automatic check for OpenTX firmware updates - Verifica automaticamente aggiornamenti di OpenTX - - - - Splash Screen Library - Libreria sfondi - - - - Google Earth Executable - Eseguibile Google Earth - - - - Only show user splash images - Solamente sfondi utente - - - - Show user and companion splash images - Mostra anche sfondi di Companion - - - - User Splash Screens - Cartella sfondi utente - - - - Automatic Backup Folder - Cartella per backup - - - - Simulator Settings - Impostazioni simulatore - - - - Simulator BackLight - Colore Retroilluminazione - - - - Enable - Abilita - - - - Use releases (stable) + + Release channel - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - - most recently used files - - - - - Startup Settings - - - - - Remember - - - - - Output Logs Folder - - - - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - - - - - Use model wizard - - - - - Open model editor - - - - - Just create the model - - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + Guadagno Volume Simulatore + + + + Profile Name + Descrizione + + + + Clear Image + Cancella immagine + + + + Append version number to FW file name + Aggiungi il numero di versione al nome del file + + + + Offer to write FW to Tx after download + Scrivere dopo aggiornamento + + + + Radio Type + Tipo di radio + + + + Other Settings + Altre impostazioni + + + + General Settings + Impostazioni generali radio + + + + SD Structure path + Cartella Struttura Scheda SD + + + + Application Settings + Impostazioni applicazione + + + + Show splash screen when Companion starts + Mostra schermata all'avvio + + + + Automatic check for Companion updates + Verifica automaticamente aggiornamenti di Companion + + + + + Enable automatic backup before writing firmware + Abilita il backup automatico prima degli aggiornamenti + + + + Automatic check for OpenTX firmware updates + Verifica automaticamente aggiornamenti di OpenTX + + + + Splash Screen Library + Libreria sfondi + + + + Google Earth Executable + Eseguibile Google Earth + + + + Only show user splash images + Solamente sfondi utente + + + + Show user and companion splash images + Mostra anche sfondi di Companion + + + + User Splash Screens + Cartella sfondi utente + + + + Automatic Backup Folder + Cartella per backup + + + + Simulator Settings + Impostazioni simulatore + + + + Simulator BackLight + Colore Retroilluminazione + + + + Enable + Abilita + + + + most recently used files + + + + + Startup Settings + + + + + Remember + + + + + Output Logs Folder + + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + + + + + Use model wizard + + + + + Open model editor + + + + + Just create the model + + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Action on New Model - + Blue Blu - + Green Verde - + Red Rosso - + Orange Arancione - + Yellow Giallo - + Screenshot capture folder - + Joystick Joystick - + Calibrate Calibrazione - + Only capture to clipboard Usa solo gli appunti per la cattura degli schermi - + Remember simulator switch values Ricorda la posizione degli switches nel simulatore - + My Radio La mia radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Selezionare la cartella per le schermate del simulatore - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found Nessun joystick trovato - + EMPTY: No radio settings stored in profile VUOTO: Nessuna impostazione radio nel profilo - + AVAILABLE: Radio settings of unknown age DISPONIBILE: Impostazioni di data sconosciuta - + AVAILABLE: Radio settings stored %1 DISPONIBILE: Impostazioni memorizzate %1 - + Select your library folder Selezionare la cartella degli sfondi - - + + Select your Models and Settings backup folder Selezionare la cartella per i backup - + Select a folder for application logs - + Select Google Earth executable Trova l'eseguibile di Google Earth - + Select the folder replicating your SD structure Selezionare la cartella contenente la struttura della scheda SD - + Open Image to load Apri l'immagine da caricare - + Images (%1) Immagini (%1) @@ -670,25 +700,25 @@ Può essere differente dalla lingua del firmware - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. Errore durante la scrittura del file %1: %2. - + Invalid binary EEPROM file %1 @@ -696,57 +726,58 @@ Può essere differente dalla lingua del firmware Boards - + Left Horizontal Orizzontale Sinistro - + Left Vertical Verticale Sinistro - + Right Vertical Verticale Destro - + Right Horizontal Orizzontale Destro - + Aux. 1 - + Aux. 2 - + + Unknown Sconosciuto - + Rud Dir - + Ele Ele - + Thr Mot - + Ail Ale @@ -795,82 +826,82 @@ Può essere differente dalla lingua del firmware Channels - + Name Nome - + Min Min - + Max Max - + Subtrim Subtrim - + Direction Direzione - + Curve Curva - + PPM Center Centro PPM - + Linear Subtrim Subtrim lineare - + CH%1 CH%1 - + Popup menu available - + --- --- - + INV INV - + &Copy &Copia - + &Cut &Taglia - + &Paste &Incolla - + &Delete &Elimina @@ -883,27 +914,32 @@ Può essere differente dalla lingua del firmware - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -957,85 +993,193 @@ Può essere differente dalla lingua del firmware %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information Informazione - + Warning Avviso - + Error Errore - - Please Confirm - + + Application Settings + Impostazioni applicazione - + files - + Radio and Models settings - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available Il simulatore per questo firmware non è ancora disponibile - + Uknown error during Simulator startup. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1050,37 +1194,42 @@ Do you want to import them? - + Close Chiudi - + + Style + + + + Print Stampa - + Print to file Stampa su file - + Unnamed Model %1 - + Click to remove this model. - + Print Document Stampa documento - + Select PDF output file Scegliere il nome del file PDF @@ -1170,22 +1319,22 @@ Do you want to import them? CurveGroup - + Diff Diff - + Expo Espo - + Func Funz - + Curve Curva @@ -1237,7 +1386,7 @@ Do you want to import them? - + Curve type Tipo curva @@ -1247,47 +1396,52 @@ Do you want to import them? Generatore di curve - + Y at X=0 Y a X=0 - + + Point size + + + + Y at X=100 Y a X=100 - + Both Entrambi - + x>0 x>0 - + x<0 x<0 - + Apply Applica - + Side Lato - + Y at X=-100 Y a X=-100 - + Coefficient Coefficiente @@ -1297,72 +1451,77 @@ Do you want to import them? Nome curva - + Curve %1 Curva %1 - + + Popup menu available + + + + %1 points punti %1 - + Linear Lineare - + Single Expo Esponenziale singola - + Symmetrical f(x)=-f(-x) Curva simmetrica f(x)=-f(-x) - + Symmetrical f(x)=f(-x) Curva simmetrica f(x)=f(-x) - + Copy Copia - + Paste Incolla - + Clear Cancella - + Clear all curves Cancella tutte le curve - + Are you sure you want to reset curve %1? Volete veramente cancellare la curva %1 ? - + Are you sure you want to reset all curves? Volete veramente cancellare tutte le curve ? - + Editing curve %1 Modifica curva %1 - + Not enough free points in EEPROM to store the curve. Non ci sono abbastanza punti liberi in memoria per salvare la curva. @@ -1370,244 +1529,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF SF - + Override %1 Imposta %1 - + Trainer - + Maestro/Allievo - + Trainer RUD Allievo DIR - + Trainer ELE Allievo ELE - + Trainer THR Allievo MOT - + Trainer AIL Allievo ALE - + Instant Trim Trim Istantanei - + Play Sound Suona - + Haptic Vibrazione - + Reset Ripristina - + Set Timer %1 Imposta temporizzatore %1 - + Vario Variometro - + Play Track Suona Traccia - + Play Both Suana Entrambi - + Play Value Suona valore - + Play Script Esegui Script - + SD Logs - + Volume Volume - + Backlight Retroilluminazione - + Screenshot Cattura schermo - + Background Music Musica di sottofondo - + Background Music Pause Pausa musica di sottofondo - + Adjust %1 - + SetFailsafe Int. Module - + SetFailsafe Ext. Module - + RangeCheck Int. Module - + RangeCheck Ext. Module - + Bind Int. Module - + Bind Ext. Module - + Timer1 Tempo1 - + Timer2 Tempo2 - + Timer3 Tempo3 - + Flight - + Telemetry Telemetria - + Rotary Encoder Encoder rotativo - + REa REa - + REb REb - + s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>Parametro inconsistente</b></font> - + Value Valore - - Decr: - Decr: - - - - Incr: - Incr: - - - + played once, not during startup - + repeat(%1s) - + DISABLED DISABILITATO - + CFN @@ -1635,62 +1784,73 @@ Do you want to import them? Abilita - + + Popup menu available + + + + SF%1 FS%1 - + GF%1 GF%1 - + ON Acceso - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Valore - + Source Sorgente - + GVAR VARG - + Increment Incremento - - Unable to find sound file %1! - Impossibile trovare il file sonoro %1! - - - + &Delete &Elimina - + &Copy &Copia - + &Cut &Taglia - + &Paste &Incolla @@ -1853,69 +2013,53 @@ Do you want to import them? DataField - + Conversion error on field %1 - + Switch Interruttore - + Switch - + cannot be exported on this board! - + Source Sorgente - + Source %1 cannot be exported on this board! La sorgente %1 non può essere esportata su questa radio! - + OpenTX only accepts %1 points in all curves OpenTX accetta solamente %1 punti in tutte le curve - + OpenTx only accepts %1 points in all curves OpenTx accetta solamente %1 punti in tutte le curve - - - - - - + + OpenTX on this board doesn't accept this function OpenTX in questa piattaforma non accetta la funzione - - OpenTX doesn't accept this telemetry protocol - OpenTX non accetta questo protocollo di telemetria - - - - OpenTX doesn't allow this number of channels - OpenTX non consente questo numero di canali - - - - - + OpenTX doesn't accept this radio protocol OpenTX non accetta questo protocollo di trasmissione @@ -1924,72 +2068,86 @@ Do you want to import them? DebugOutput + Debug Output Uscita diagnostica + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: + Number of lines to keep in display. + Filter &Help + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear + Clear the output window of all text. + Enable &Filter + Turn the filter on/off. @@ -2004,6 +2162,24 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + Scaricamento in corso: + + + + Unable to save the file %1: %2. + Impossibile salvare il file: %1: %2. + + + + Download failed: %1. + Scaricamento fallito: %1. + + EEPROMInterface @@ -2078,22 +2254,17 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - - EepeFormat @@ -2252,7 +2423,7 @@ Se vuoto verrà sempre considerata "Attiva". - Click to access popup menu + Popup menu available @@ -2355,572 +2526,533 @@ Se vuoto verrà sempre considerata "Attiva". Canale Rollio: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Chiudi + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + Inizio + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Posizione canali visualizzata in us - + No OverrideCH functions available Nessuna funzione di forzatura CH disponibile - + Possibility to enable FAI MODE (no telemetry) at field Impostazione della modalità FAI (no telemetria) da radio - + FAI MODE (no telemetry) always enabled Modalità FAI (no telemetria) sempre attiva - - Support for the DIY-Multiprotocol-TX-Module - - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + + Disable HELI menu and cyclic mix support Disabilita il menù HELI e le funzioni del piatto ciclico - + + Disable Global variables Disabilita variabili globali - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font Usa font alternativo SQT5 (Leggermente quadrato) - - ST7565P LCD or compatible - Display LCD ST7565R o compatibile - - - - ST7565R LCD or compatible - Display LCD ST7565R o compatibile - - - - ERC12864FSF LCD - - - - - ST7920 LCD - - - - - KS108 LCD - - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - Supporto per la modifica per la telemetria FrSky - - - - Support for telemetry easy board - Supporto per la scheda Telemetrez - - - - - Support for jeti telemetry mod - Supporto per la modifica per la telemetria Jeti - - - - - Support for receiving ardupilot data - Supporto per la modifica per la ricezione dati ardupilot - - - - - Support for receiving NMEA data - Supporto per la modifica per la ricezione dati NMEA - - - - - Support for MAVLINK devices - Supporto per dispositivi MAVLINK - - - - Rotary Encoder use in menus navigation - Utilizzo dell'encoder rotativo nella navigazione dei menù - - - - - - - - - + Pots use in menus navigation Utilizzo dei potenziometri per la navigazione nei menù - - - - - - Support for DSM2 modules - Supporto per moduli DSM2 - - - - Support for DSM2 modules using ppm instead of true serial - Supporto per moduli DSM2 usando il ppm invece della seriale - - - + FrSky Taranis X9D+ - - - + Support for PPM internal module hack - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D - + Haptic module installed Modulo vibrazione installato - + FrSky Taranis X9E - + Confirmation before radio shutdown - + Horus gimbals installed (Hall sensors) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version - + Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support Abilita il menù HELI e le funzioni del piatto ciclico - - - - - - - - - - No flight modes - Disabilita supporto fasi di volo - - - - - - - - - - - + Global variables Variabili Globali - - - - - - - - - + In model setup menus automatically set source by moving the control Nel menu settaggio modelli selezionare automaticamente la sorgente muovendo il controllo - - - - - - - - - + In model setup menus automatically set switch by moving the control Nel menu settaggio modelli selezionare automaticamente l'interruttore muovendo il controllo - - - - - - - - - + No graphical check boxes and sliders Disabilita grafica per caselle di spunta e cursori - - - - - - - - - + Battery graph Grafico della batteria - - - - - - - - - + Don't use bold font for highlighting active items Non utilizzare font in grassetto per evidenziare le voci attive - - Turnigy 9XR with m128 chip + + + Support for ACCESS internal module replacement - - - - - - - Enable heli menu and cyclic mix support - Abilita supporto menù elicotteri e miscelazione ciclico - - - - - - - - - Enable TEMPLATES menu - Abilita menù dei MODELLI - - - - - - - No splash screen - Disabilita schermata di avvio - - - - - - - - - Disable curves menus - Disabilita il menu delle curve - - - - - - - Support for radio modified with regular speaker - Supporto per modifica con altoparlante + FrSky Horus X10 Express + - - - - - - Used if you have modified your radio with voice mode - Utilizzato per la gestione del modulo audio - - - - - - - - Used if you have modified your radio with haptic mode - Abilita supporto vibrazione - - - - - - - - - PPM center adjustment in limits - Regolazione del centro PPM nel menù limiti - - - - - - - - - Symetrical Limits - Limiti Simmetrici - - - - - - - Enable the throttle trace in Statistics - Abilita il grafico utilizzo motore nelle statistiche - - - - - - - - EEprom write Progress bar - Barra di avanzamento durante la scrittura della eeprom - - - - - - - - - Imperial units - Unità Imperiali nella telemetria - - - - Turnigy 9XR + + Jumper T12 - - No Winged Shadow How High support - Disabilita supporto Winged Shadow How High + Enable non certified R9M firmwares + - - - No vario support - Nessun Variometro + + Turnigy 9XR with m128 chip + - - - No GPS support - Disabilita supporto GPS + + Turnigy 9XR + - - - No gauges in the custom telemetry screen - Disabilita schermate telemetriche a barre - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Aggiungi il supporto per l'inversione degli stick (Ad es. necessario per l'utilizzo degli stick FrSky) - - - + 9X with stock board - - - SmartieParts 2.2 Backlight support - Abilita il supporto per la scheda SmartiePart versione 2.2 - - - - - - - - + Enable resetting values by pressing up and down at the same time Abilita l'azzeramento di un valore mediante pressione contemporanea di tasti - - EEprom write progress bar - Barra di avanzamento durante la scrittura della eeprom - - - - Allow compensating for offset errors in FrSky FAS current sensors - Abilita compensazione per errore offset in sensore di corrente FAS FrSky - - - + 9X with stock board and m128 chip - + 9X with AR9X board - + 9X with Sky9x board - + 9X with Gruvin9x board - - - Support for SD memory card - Supporto memorie SD - - - - - Support of FrSky PXX protocol - Supporto del protocollo PXX FrSky - - - + DIY MEGA2560 radio - - - Power management by soft-off circuitry - Gestione dell'alimentazione mediante pulsante soft-off - FirmwarePreferencesDialog @@ -2954,6 +3086,11 @@ Se vuoto verrà sempre considerata "Attiva". Latest Download Ultimi download + + + Unknown + Sconosciuto + FlapsPage @@ -2987,7 +3124,7 @@ Se vuoto verrà sempre considerata "Attiva". FlashEEpromDialog - + Write Models and Settings to Radio Scrivi Modelli e Impostazioni sulla Radio @@ -3052,51 +3189,51 @@ Se vuoto verrà sempre considerata "Attiva". Scrivi sulla radio - + Current profile: %1 Profilo attuale: %1 - + Choose Radio Backup file Scegli il file di salvataggio della radio - + Wrong radio calibration data in profile, Settings not patched Dati errati nel profilo, la calibrazione della radio non è stata sostituita - + Wrong radio setting data in profile, Settings not patched Dati errati nel profilo, i settaggi HW della radio non sono stati sostituiti - + Cannot write file %1: %2. Non posso scrivere il file %1: %2. - + Error writing file %1: %2. Errore durante la scrittura del file %1: %2. - + The radio firmware belongs to another product family, check file and preferences! Il Firmware appartiene ad un'altra famiglia di prodotti, controllare il file e le preferenze! - + The radio firmware is outdated, please upgrade! Il firmware della radio è obsoleto, per favore aggiornare! - + Cannot check Models and Settings compatibility! Continue anyway? Non posso controllare la compatibilità delle impostazioni! Continuare ugualmente ? @@ -3283,42 +3420,42 @@ Se vuoto verrà sempre considerata "Attiva". Eseguibile %1 non trovato - + Writing... Scrittura in corso... - + Reading... Lettura in corso... - + Verifying... Verifica in corso... - + unknown Sconosciuto - + ie: OpenTX for 9X board or OpenTX for 9XR board ad esempio: OpenTX per 9X o OpenTX per 9XR - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip ad esempio: OpenTX per M128 9X o OpenTX per 9XR con M128 - + ie: OpenTX for Gruvin9X board ad esempio: OpenTX per piastra Gruivin9X - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3327,7 +3464,7 @@ Please check advanced burn options to set the correct cpu type. Per cortesia controllate le opzioni avanzate e impostate il tipo corretto. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3336,7 +3473,7 @@ Please select an appropriate firmware type to program it. Per cortesia selezionate un firmware corretto per programmarla. - + You are currently using: %1 @@ -3345,16 +3482,7 @@ state attualmente utilizzando: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - La vostra radio non sembra connessa alla USB o il driver non è installato!!! - -Usate ZADIG per installare correttamente il driver. - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. La vostra radio non sembra connessa alla USB o il driver non è inizializzato!!!. @@ -3408,82 +3536,87 @@ Usate ZADIG per installare correttamente il driver. FlightModePanel - + Rotary Encoder %1 Encoder rotativo %1 - + Name Nome - + Value source - + Value Valore - + GVAR%1 VAR.GLOB%1 - + Popup enabled Popup abilitato - + + Popup menu available + + + + Trim disabled Trim disabilitato - + Own Trim Trim proprio - + Use Trim from Flight mode %1 Usa Trim della Fase di volo %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Usa Trim della Fase di volo %1 + Trim proprio come offset - + Unit Unità - + Prec - + Min Min - + Max Max - + 0._ - + 0.0 9X {6P?} {0.0?} @@ -3508,17 +3641,17 @@ Usate ZADIG per installare correttamente il driver. FlightModesPanel - + Flight Mode %1 Fase di volo %1 - + (%1) (%1) - + (default) (Predefinita) @@ -3544,17 +3677,17 @@ Usate ZADIG per installare correttamente il driver. FrSkyAlarmData - + Yellow Giallo - + Orange Arancione - + Red Rosso @@ -3563,12 +3696,12 @@ Usate ZADIG per installare correttamente il driver. FrSkyChannelData - + V - + --- --- @@ -3758,12 +3891,12 @@ p, li { white-space: pre-wrap; } VG - + Own value Legato alla fase - + Flight mode %1 value Valore Fase di Volo %1 @@ -3846,7 +3979,7 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM. GeneralSettings - + Radio Settings @@ -3904,167 +4037,169 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM.SG - + Timeshift from UTC Differenza in ore da GMT - + Voice Language Lingua per le voci - + Country Code Codice paese - + Stick reverse Inverti Stick - + FAI Mode Modalità FAI - + Adjust RTC Aggiusta Orologio - + Vario pitch at max Tono del vario al massimo - - + + Hz Hz - + Speaker Volume Volume altoparlante - + Backlight Switch Interruttore retroilluminazione - + Sound Mode Modalità audio - + Color 1 Colore 1 - + Color 2 Colore 2 - + Speaker Pitch (spkr only) Tonalità suono (modifica HW) - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Se questo valore non è 0, ogni pressione di tasto provocherà l'accensione della luce e questa verrà spenta dopo il numero di secondi specificato. - + + + sec sec - + Backlight color Colore retroilluminazione - + Beeper Cicalino - + Speaker Altoparlante - + BeeperVoice Cicalino e voce - + SpeakerVoice Altoparlante e Voce - + Beep volume Volume cicalino - + Wav volume Volume file Wav - + Vario volume Volume per vario - + Background volume Volume sottofondo - - + + ms ms - + Backlight Auto OFF after Auto spegnimento luce dopo - + Backlight flash on alarm Retroilluminazione su allarme - + Vario pitch at zero Tono del vario a zero - + Vario repeat at zero Ripetizione vario a zero - + This is the switch selectrion for turning on the backlight (if installed). Questo è l'interruttore selezionato per l'accensione della retroilluminazione (se installata). - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4079,172 +4214,187 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">I valori possono andare da 20 a 45</span></p></body></html> - + Backlight Brightness Luminosità retroilluminazione - + RotEnc Navigation Navigazione con Encoder - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + America America - + Japan Giappone - + Europe Europa - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Ordine dei canali</p><p><br/></p><p>Definisce l'ordine delle miscelazioni predefinite durante la creazione di un modello.</p></body></html> - + R E T A D E M A - + R E A T D E A M - + R T E A D M E A - + R T A E D M A E - + R A E T D A E M - + R A T E D A M E - + E R T A E D M A - + E R A T E D A M - + E T R A E M D A - + E T A R E M A D - + E A R T E A D M - + E A T R E A M D - + T R E A M D E A - + T R A E M D A E - + T E R A M E D A - + T E A R M E A D - + T A R E M A D E - + T A E R M A E D - + A R E T A D E M - + A R T E A D M E - + A E R T A E D M - + A E T R A E M D - + A T R E A M D E - + A T E R A M E D - + + Power Off Delay + + + + Mode selection: Mode 1: @@ -4285,158 +4435,164 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Modo 1 (DIR ELE MOT ALE) - + Mode 2 (RUD THR ELE AIL) Modo 2 (DIR MOTO ELE ALE) - + Mode 3 (AIL ELE THR RUD) Modo 3 (ALE ELE MOT DIR) - + Mode 4 (AIL THR ELE RUD) Modo 4 (ALE MOT ELE DIR) - + + DMS + + + + USB Mode - + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick Mode Modo Stick - + Metric Sistema Metrico - + Imperial Imperiale - + Default Channel Order Ordine canali predefinito - + GPS Coordinates Coordinate GPS - + Min Min - - + + v v - + Max Max - + Beeper Mode Modalità suono beeper - + Inactivity Timer Temporizzatore di inattività - + Beeper Length Lunghezza suono - + Show Splash Screen on Startup Mostra schermata all'avvio - + Contrast Contrasto - + Battery Meter Range Campo misuratore batteria - + Haptic Strength Intensità vibrazione (mod. HW) - + LCD Display Type Tipo display LCD - + "No Sound" Warning Avviso "nessun suono" - + Battery Warning Allarme batteria scarica - + Haptic Length Lunghezza vibrazione - + MAVLink Baud Rate Baud rate MAVLink - + Haptic Mode Modalità vibrazione - + Beeper volume 0 - Quiet. No beeps at all. @@ -4453,45 +4609,45 @@ Mode 4: 4 - Fortissimo. - - + + Quiet Silenzioso - + Alarms Only Solo allarmi - - + + No Keys No Tasti - - + + All Tutti - + Only Alarms Solo allarmi - + Automatically adjust the radio's clock if a GPS is connected to telemetry. - + Backlight OFF Brightness - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4502,115 +4658,135 @@ Al di sotto di questo valore verrà generato un seganle di allarme. Valori accettabili da 5v a 10v - + Standard Standard - + Optrex Optrex - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Se non è zero, verrà fatto suonare l'allarme se la radio non è utilizzata per il numero di minuti specificato. - + min min - - + + Power On Delay + + + + + Jack Mode + + + + + Show splash screen on startup Mostra schermata all'avvio - + --- --- - + 2s 2s - + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + + Audio + + + + + Trainer + Maestro/Allievo + + + 4800 Baud 4800 Baud - + 9600 Baud 9600 Baud - + 14400 Baud 14400 Baud - + 19200 Baud 19200 Baud - + 38400 Baud 38400 Baud - + 57600 Baud 57600 Baud - + 76800 Baud 76800 Baud - + 115200 Baud 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4635,52 +4811,47 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Suoni disabilitati - avvisa se i suoni sono disabilitati (0)</p></body></html> - - + + X-Short Extra Corto - - + + Short Corto - - + + Normal Normale - - + + Long Lungo - - + + X-Long Extra Lungo - - hh° (N/S) mm' ss''.dd - hh° (N/S) mm' ss" .dd - - - + NMEA NMEA - + Play Delay (switch mid position) Ritardo esecuzione(posizione intermedia) - + Measurement Units Unità di misura @@ -4688,127 +4859,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF Spento - + Keys Tasti - + Sticks Leve - + Keys + Sticks Tasti + Leve - + ON Acceso - + English Inglese - + Dutch - + French Francese - + Italian Italiano - + German Tedesco - + Czech Ceco - + Slovak Slovacco - + Spanish Spagnolo - + Polish Polacco - + Portuguese Portoghese - + Russian - + Swedish Svedese - + Hungarian - + No No - + RotEnc A EncRot A - + Rot Enc B EncRot B - + Rot Enc C EncRot C - + Rot Enc D EncRot D - + Rot Enc E EncRot E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4841,263 +5012,247 @@ Are you sure ? - + SQ - + SR - + LS2 - + SP - + SO - + S4 S4 - + RS RS - + SB SB - + PPM 2 PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Volume allarmi - -0 - Silenzioso, nessun beep. -1 - No tastiera. Nessun suono viene generato alla pressione dei rasti. -2 - Normale. -3 - Forte. -4 - Fortissimo. - - - OFF Spento - + S-Port Mirror Replica dati S-Port - + Telemetry Telemetria - + SBUS Trainer Maestro/Allievo SBUS - + Debug Debug - + Rud Dir - + PPM 3 PPM 3 - + S1 S1 - + S2 S2 - + S3 S3 - + PPM 1 PPM 1 - + Serial Port Porta Seriale - + v v - + PPM Multiplier Moltiplicatore PPM - + Current Offset - + PPM 4 PPM 4 - + SA SA - + Ele Ele - + + Antenna + + + + + S5 + + + + Ail Ale - + Thr Mot - + SC SC - + LS LS - + SD SD - + Battery Offset - + SE SE - + SF SF - + SG SG - + SH SH - + SI SI - + SJ SJ - + SK SK - + SL SL - + SM SM - + SN SN - + RS2 RS2 - + Bluetooth - + ADC Filter - + Device Name: @@ -5106,8 +5261,8 @@ Are you sure ? HardwarePanel - - + + None Nessuno @@ -5127,25 +5282,70 @@ Are you sure ? 3 Posizioni - + Pot with detent Pot con fermo centrale - + Multipos switch Interruttore Multiposizione - + Pot without detent Potenziometro - + Slider with detent Slider con fermo centrale + + + OFF + Spento + + + + Enabled + + + + + Telemetry + Telemetria + + + + Trainer + Maestro/Allievo + + + + Internal + + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5268,25 +5468,25 @@ Are you sure ? InputsPanel - + Move Up Muovi Su - + Ctrl+Up Ctrl+Up - + Move Down Muovi Giù - + Ctrl+Down Ctrl+Down @@ -5296,92 +5496,92 @@ Are you sure ? Cancella tutti gli ingressi - + Not enough available inputs! Nessun ulteriore ingresso disponibile! - + Delete Selected Inputs? Cancellare gli ingressi selezionati? - + &Add &Aggiungi - + Ctrl+A Ctrl+A - + &Edit &Modifica - + Enter Invio - + &Delete &Elimina - + Delete Elimina - + &Copy &Copia - + Ctrl+C Ctrl+C - + &Cut &Taglia - + Ctrl+X Ctrl+X - + &Paste &Incolla - + Ctrl+V Ctrl+V - + Du&plicate Dup&lica - + Ctrl+U Ctrl+U - + Clear Inputs? Cancellare gli ingressi? - + Really clear all the inputs? Volete veramente cancellare gli ingressi? @@ -5538,62 +5738,67 @@ Are you sure ? LogicalSwitchesPanel - + V1 V1 - + V2 V2 - + Duration Durata - + Delay Ritardo - + Function Funzione - + AND Switch Interruttore AND - + + Popup menu available + + + + (instant) - + (infinite) - + &Delete &Elimina - + &Copy &Copia - + &Cut &Taglia - + &Paste &Incolla @@ -5687,7 +5892,7 @@ Are you sure ? - Error: no GPS data not found + Error: no GPS data found @@ -5698,74 +5903,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt - + Cannot write file %1: %2. Non posso scrivere il file %1: %2. - + Cursor A: %1 m - + Cursor B: %1 m - + Time delta: %1 - + Climb rate: %1 m/s - + Select your log file Selezionare il file di log - + Available fields Campi disponibili - + The selected logfile contains %1 invalid lines out of %2 total lines Il file di log selezionato contiene %1 righe errate su un totale di %2 righe - + total duration durata totale - + duration durata - + (L1) - + (R1) - + (L2) - + (R2) @@ -5773,908 +5978,894 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt MainWindow - - + + File loaded Documento caricato - + Checking for updates Controllo aggiornamenti in corso - - Unable to check for updates. - Impossibile controllare gli aggiornamenti. - - - - + + Save As Salva come - + Executable (*.exe) Eseguibili (*.exe) - + New release available Nuova versione disponibile - - + + No updates available at this time. Nessun aggiornamento disponibile. - - + + Would you like to launch the installer? Desiderate eseguire l'aggiornamento ? - + Error opening file %1: %2. Errore durante l'apertura del file %1: %2. - + Compilation server too busy, try later Il server di compilazione è occupato, provate più tardi - + Unknown server failure, try later Errore del server sconosciuto, provare più tardi - + Do you want to write the firmware to the radio now ? Volete scrivere il firmware sulla radio? - - + + File saved Documento salvato - - + + Yes Si - - + + No No - - + + Release Notes Note di aggiornamento - - - Do you want to download release %1 now ? - Volete scaricare la versione %1 adesso ? - - - - + + Open Models and Settings file Apri modelli e file impostazioni - + The new theme will be loaded the next time you start Companion. Il nuovo tema sarà caricato al prossimo riavvio di Companion. - + OpenTX Companion %1 - Radio: %2 - Profile: %3 - + New Nuovo - + Open... Apri... - + Save Salva - + Save As... Salva come... - + A monochrome black icon theme Tema icone monocromatico nero - + A monochrome white icon theme Tema icone monocromatico bianco - + A monochrome blue icon theme tema icone monocromatico blu - + Diskimage (*.dmg) - + Would you like to open the disk image to install the new version? - - Show this message again at next startup? - - - - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! - - :: Options - - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - + Close Chiudi - + Close Models and Settings file - + List of recently used files - + Radio Profiles - + Create or Select Radio Profiles - + Release notes... - + Show release notes - + Create a new Radio Settings Profile - + Copy Current Radio Profile - + Duplicate current Radio Settings Profile - + Delete Current Radio Profile... - + Delete the current Radio Settings Profile - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Tabbed Windows - + Use tabs to arrange open windows. - + Tile Windows - + Arrange open windows across all the available space. - + Cascade Windows - + Arrange all open windows in a stack. - + Close All Windows - + Closes all open files (prompts to save if necessary. - + Window - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + Small Piccole - + Use small toolbar icons Usa icone piccole barra strumenti - + Use normal size toolbar icons Usa icone normali nell barra strumenti - + Normal Normali - + Use big toolbar icons Usa icone grandi barra strumenti - + Big Grandi - + Use huge toolbar icons Usa icone giganti barra strumenti - + Huge Giganti - + - Copy - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile Non è possibile rimuover il profilo - + The default profile can not be removed. Il profilo predefinito non può essere rimosso. - + Confirm Delete Profile - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - - Ignore this release %1? - Ignorare questa versione %1? + + Please save or close all modified files before importing settings + - + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + Not enough flash available on this board for all the selected options - + Compilation server temporary failure, try later - + Compilation error - + Invalid firmware - + Invalid board - + Invalid language - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Models and Settings read - - + + This function is not yet implemented - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> Il progetto OpenTx-Companion è originariamente derivato da <a href='%1'>eePe</a> - + Copyright OpenTX Team Copyright OpenTX Team - + Create a new Models and Settings file Crea nuovo modello e file di impostazioni - - + + Save Models and Settings file Salva Modello e file impostazioni - + Exit Esci - + Use default system language. - + Use %1 language (some translations may not be complete). - + Classical Classica - + The classic companion9x icon theme Tema classico icone Companion - + Yerico Yerico - + Yellow round honey sweet icon theme Tema di icone giallo dolce miele rotondo - + Monochrome Monocromatico - + MonoWhite Monocolore Bianco - + MonoBlue Monocolore Blu - + System language Lingua di sistema - + About... Informa su... - + + No Companion release candidates are currently being served for this version, please switch release channel + + + + + No nightly Companion builds are currently being served for this version, please switch release channel + + + + + No Companion release builds are currently being served for this version, please switch release channel + + + + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + View Log File... Visualizza file di Log... - + Open and view log file Apri e visualizza file di log - + Settings... Impostazioni... - + Edit Settings Edita Impostazioni - + Download... Scarica... - + Download firmware and voice files Scarica Firmware e file voce - + Check for Updates... Controllo aggiornamenti... - + Check OpenTX and Companion updates Controllo degli aggiornamenti di openTx e Companion - + Compare Models... Confronta due modelli... - + Edit Radio Splash Image... Edita immagine Splah della radio... - + Edit the splash image of your Radio Edita immagine splash della tua radio - + List programmers... Lista programmatori... - + Fuses... Fuses... - - + + Read Firmware from Radio Leggi il Firmware dalla Radio - + Read firmware from Radio Leggi firmware dalla Radio - + Write Firmware to Radio Scrivi Firmware sulla Radio - + Write firmware to Radio Scrivi firmware sulla Radio - + Add Radio Profile Aggiungi profilo Radio - + Manuals and other Documents Manuali e altri documenti - + Open the OpenTX document page in a web browser Apri la pagina documenti di OpenTx in un browser web - + Write Models and Settings To Radio Scrivi modello e impostazioni sulla Radio - + Write Models and Settings to Radio Scrivi Modeli e Impostazioni sulla Radio - - + + Read Models and Settings from Radio Leggi Modelli e Impostazioni dalla Radio - + Configure Communications... Configura Comunicazioni... - + Configure software for communicating with the Radio Configura il software per comunicare con la Radio - + Write Backup to Radio Scrivi salvataggio sulla Radio - + Write Backup from file to Radio Scrivi salvataggio dal file sulla Radio - + Backup Radio to File Salvataggio Radio su File - + Save a complete backup file of all settings and model data in the Radio Salvataggio completo di Impostazioni e Modelli nella Radio - + Contributors... Contributori.... - + A tribute to those who have contributed to OpenTX and Companion Un ringraziamento a tutti coloro che hanno contribuito a OpenTx e Companion - + Recent Files File recenti - + Set Menu Language Inposta Menu Lingua - + Read Models and Settings From Radio Leggi Modelli e impostazioni dalla Radio - + Save Radio Backup to File Salvataggio Radio su file - + Read Radio Firmware to File Leggi firmware radio su File - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX Home Page: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Se avete trovato utile questo programma prego supportatelo con <a href='%1'>una donazione</a> - + Compare models Confronta due modelli - + Exit the application Esci dall'applicazione - + Write Scrivi - + A new version of Companion is available (version %1)<br>Would you like to download it? Una nuova versione di Companion è disponibile (versione %1)<br> Vuoi scaricarla? - + About Companion Informazioni su Companion - + List available programmers Lista dei programmatori supportati - + Show fuses dialog Mostra finestra di dialogo Fuses - + Show the application's About box Mostra la finestra Informazioni Su - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - Il firmware %1 non sembra mai stato essere scaricato. -E' disponibile la versione %2. -Volete scaricarla adesso ? - -Vi raccomandiamo di leggere le note di rilascio sottostanti per vedere se ci siano cambiamenti che possano essere ritenuti da Voi rilevanti. - - - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6691,71 +6882,71 @@ Do you want to download it now? We recommend you view the release notes using the button below to learn about any changes that may be important to you. - - + + Synchronize SD Sincronizza SD - + SD card synchronization Sincronizzazione scheda SD - + Set Icon Theme Scegliere il tema di icone - + Set Icon Size - Impostazione dimensione icone + Scegliere il dimensione di icone - - + + File Documento - - + + Edit Modifica - + Settings Impostazioni - + Read/Write Leggi/Scrivi - - + + Help Aiuto - + Ready Pronto - + %2 %2 - + Alt+%1 - + New Radio Nuova radio @@ -6763,86 +6954,91 @@ We recommend you view the release notes using the button below to learn about an MdiChild - + free bytes byte liberi - + Editing model %1: Modifica modello %1: - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Unable to find file %1! Impossibile trovare il file %1! - + Error opening file %1: %2. Errore durante l'apertura del file %1: %2. - + Error reading file %1: %2. Error durante la lettura del file %1: %2. - + Save As Salva Come - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6851,7 +7047,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6860,7 +7056,7 @@ We recommend you view the release notes using the button below to learn about an - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6869,163 +7065,163 @@ We recommend you view the release notes using the button below to learn about an - + Nothing selected - + Rename Category - + Edit Model - + Cut - + Copy Copia - + Paste Incolla - + Insert - + Edit Radio Settings - + Copy Radio Settings - + Paste Radio Settings - + Simulate Radio - + Add Category - + Category - + Add Model - + Model Modello - + Restore from Backup - + Model Wizard Assistente di configurazione - + Set as Default - + Print Model - + Simulate Model - + Duplicate Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Category index out of range. - + Cannot delete the last category. - + Cannot insert model, last model in list would be deleted. - + Cannot add model, could not find an available model slot. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Delete %n selected model(s)? @@ -7033,7 +7229,7 @@ We recommend you view the release notes using the button below to learn about an - + Delete %n selected category(ies)? @@ -7041,95 +7237,90 @@ We recommend you view the release notes using the button below to learn about an - + Cannot duplicate model, could not find an available model slot. - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Open backup Models and Settings file Apri salvataggio modelli e impostazioni - + Invalid binary backup File %1 File di backup binario non valido %1 - + %1 has been modified. Do you want to save your changes? %1 è stato modificato. Salvare le modifiche ? - + Delete Elimina - + Move to Category - + Alt+S Alt+S - + Do you want to overwrite radio general settings? Vuoi sovrascrivere le impostazioni generali della radio? - + This category is not empty! - + New model Translators: do NOT use accents here, this is a default model name. - + Unable to find Horus radio SD card! - + Models and Settings written - + Cannot write temporary file! Errore durante la scittura del file temporaneo! @@ -7382,22 +7573,22 @@ Determina come il valore viene aggiunto alla miscelazione. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7406,25 +7597,25 @@ Determina come il valore viene aggiunto alla miscelazione. MixesPanel - + Move Up Muovi in Su - + Ctrl+Up Ctrl+Up - + Move Down Muovi in Giù - + Ctrl+Down Ctrl+Down @@ -7434,102 +7625,102 @@ Determina come il valore viene aggiunto alla miscelazione. Cancella Miscelazioni - + Not enough available mixers! Non ci sono più miscelazioni disponibili! - + Delete Selected Mixes? Cancellare le miscelazioni selezionate ? - + &Add &Aggiungi - + Ctrl+A Ctrl+A - + &Edit &Modifica - + Enter Invio - + &Toggle highlight Al&terna evidenziazione - + Ctrl+T Ctrl+T - + &Delete &Elimina - + Delete Elimina - + &Copy &Copia - + Ctrl+C Ctrl+C - + Ctrl+X Ctrl+X - + C&ut Ta&glia - + &Paste &Incolla - + Ctrl+V Ctrl+V - + Du&plicate Du&plica - + Ctrl+U Ctrl+U - + Clear Mixes? Cancellare le miscelazioni ? - + Really clear all the mixes? Sicuri di voler cancellare le miscelazioni ? @@ -7537,12 +7728,12 @@ Determina come il valore viene aggiunto alla miscelazione. ModelData - + Model: - + Throttle Source Sorgente motore @@ -7613,878 +7804,784 @@ Determina come il valore viene aggiunto alla miscelazione. ModelPrinter - + Exponential Esponenziale - + Extra Fine Extra Fine - + Fine Fine - + Medium Medio - + Coarse Ampio - + Unknown Sconosciuto - + Slave/Jack Allievo/(Presa) - + Master/SBUS Module Maestro/Modulo SBUS - + Master/CPPM Module Maestro/Modulo CPPM - + Master/SBUS in battery compartment Maestro/SBUS nel compartimento batteria - + Master/Jack Maestro/(presa) - + Enable Abilita - + Disable - + True - + False - + Yes Si - + No No - + Y Y - + N - + ON Acceso - - - - + + + + OFF Spento - - - - - - - - - - - - - ??? - - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 9X {6P?} {1W?} - - - - 25mW - - - - - + + Mode Modo - - + + Channels Canali - - + + Frame length - + PPM delay Pausa PPM - - + + Polarity Polarità - + Protocol Protocollo - - - + + + Delay Ritardo - - + + Receiver Ricevitore - + Radio protocol - + Subtype - + Option value - + Sub Type - + RF Output Power - - Telemetry - Telemetria - - - - - ???? - - - - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - Rudder - Direzionale - - - - Elevator - Elevatore - - - - Throttle - Motore - - - - Aileron - Alettoni - - - + MULT! - - + + Offset Spostamento - + Slow Rallentamento - + Warn - + Flight modes Fasi di volo - + Flight mode Fase di volo - + All Tutti - + Edge Soglia - + Sticky Bloccato - + Timer Tempo - + missing - + Duration Durata - + Extended Limits Limiti estesi - + Display Checklist Mostra Note - + Global Functions Funzioni Globali - + Manual Manuale - + Auto Auto - + Failsafe Mode Modalità FailSafe - - + + Hold Mantieni - + No Pulse No impulsi - + Not set Non impostato - + No pulses - + Silent Silenzioso - + Beeps Suoni - + Voice Voce - + Haptic Vibrazione - + Flight - + Manual reset - + Step - + Display - + Extended - + Never Mai - + On Change - + Always Sempre - - Trainer Port - Porta Allievo - - - - Internal Radio System - Sistema Radio interno - - - - External Radio Module - Modulo radio Esterno - - - - - Radio System - Sistema Radio - - - - Extra Radio System - Sistema radio esteso - - - - - + + + Source Sorgente - + Trim idle only - + Warning Avviso - + Reversed - + Tmr - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (su cavo) - + Alti - + Alti+ - + VSpeed - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Celle - + Calculated Calcolato - + Add Somma - + Average Media - - + + Min Min - - + + Max Max - + Multiply Moltiplica - + Totalise - + Cell Cella - + Consumption Consumo - + Distance - + Lowest Minore - + Cell %1 Cella %1 - + Highest Maggiore - + Delta Diff - + Formula - - + + Id - + Instance Istanza - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades Pale dell'elica - + Multi. - + F - + Inst - + Alt Alt - + Unit Unità - + Prec - + Ratio - + Multi - + A/Offset - + Filter Filtra - + Persist - + Positive Positivo - + Log - + Numbers Numeri - + Bars Barre - + Script Script - + Filename Nome file - + + Error: Unable to open or read file! + + + + Persistent Persistente - + Off NO - - - - - - + + + + + + None Nessuno - + Name Nome - + Countdown Conto alla rovescia - + Minute call - - - + + + FM%1 FV %1 - + FM%1%2 FV %1%2 - + FM%1+%2 - - + + Weight Peso - - + + Switch Interruttore - - + + NoTrim NoTrim - + No DR/Expo No DR/Espo - + Offset(%1) Spostamento(%1) - + Disabled in all flight modes - + instant - - - + + + Custom Personalizzato - + Standard Standard @@ -8520,7 +8617,7 @@ Determina come il valore viene aggiunto alla miscelazione. Module - + Failsafe Mode Modalità FailSafe @@ -8530,7 +8627,7 @@ Determina come il valore viene aggiunto alla miscelazione. Inizio - + PPM delay Pausa PPM @@ -8550,12 +8647,12 @@ Determina come il valore viene aggiunto alla miscelazione. Polarità - + Trainer Mode Modalità maestro allievo - + PPM Frame Length Durata segnale PPM @@ -8565,27 +8662,17 @@ Determina come il valore viene aggiunto alla miscelazione. CH - + Antenna - - Internal - - - - - Ext. + Int. - - - - + Option value - + Bind on startup @@ -8595,129 +8682,146 @@ Determina come il valore viene aggiunto alla miscelazione. - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power - + us us - + Multi Radio Protocol - + Sub Type - + Master/Jack Maestro/(presa) - + Slave/Jack Allievo/(Presa) - + Master/SBUS Module Maestro/Modulo SBUS - + Master/CPPM Module Maestro/Modulo CPPM - + Master/SBUS in battery compartment Maestro/SBUS nel compartimento batteria - + Show values in: - + % abbreviation for percent - + μs abbreviation for microseconds - + ms ms - + + Receiver 1 + + + + + + + X + X + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Canali - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set Non impostato - + Hold Mantieni - + Custom Personalizzato - + No Pulses No impulsi - + Receiver Ricevitore - + Failsafe Positions Posizioni Failsafe - + Protocol Protocollo @@ -8727,17 +8831,17 @@ Determina come il valore viene aggiunto alla miscelazione. Numero Ricev. - + Output type Tipo uscita - + Open Drain - + Push Pull @@ -8745,490 +8849,572 @@ Determina come il valore viene aggiunto alla miscelazione. ModuleData - + Positive Positivo - + Negative Negativo + + + Trainer Port + Porta Allievo + + + + Internal Radio System + Sistema Radio interno + + + + External Radio Module + Modulo radio Esterno + + + + Extra Radio System + Sistema radio esteso + + + + Radio System + Sistema Radio + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) + + ModulePanel - - Trainer Port - Porta Allievo - - - - Internal Radio System - Sistema Radio interno - - - - External Radio Module - Modulo radio Esterno - - - - - Radio System - Sistema Radio - - - - Extra Radio System - Sistema radio esteso - - - + Value Valore - + Hold Mantieni - + No Pulse No impulsi + + + Ask + + + + + Internal + + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Ingresso - + Weight Peso - + Long. cyc - + Lateral cyc - + Collective Collettivo - + Flight modes Fasi di volo - - + + Flight mode Fase di volo - - + + Switch Interruttore - + General - + EEprom Size - + Model Image Immagine modello - + Throttle Motore - + Trims - + Center Beep - + Switch Warnings Avviso interruttore - + Pot Warnings Avviso Pot - + Other - + Timers - + Time Tempo - + Countdown Conto alla rovescia - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter Elicottero - + Swash - - + + Type - + Ring - - Fade IN - - - - - Fade OUT - - - - + Protocol Protocollo - + Low - + Critical - + Telemetry audio - + Altimetry Altimetro - - + + Vario source Sorgente per il Vario - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar Barra superiore - - + + Volts source Misura della tensione - + Altitude source Misura dell'altitudine - + Various Varie - + Serial protocol - + FAS offset - + mAh count Conteggio mAh - + Persistent mAh mAh persistenti - + Current source Misura della corrente - + Blades Pale dell'elica - + Parameters Parametri - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + GF%1 + + + + Global Functions + Funzioni Globali + + + + Checklist + + + + + GV%1 VG%1 - + RE%1 - + Channel - - - + + + Name Nome - - Global variables - Variabili Globali - - - + Prec - + Popup - + Outputs Uscite - + Subtrim Subtrim - + Direct - + Curve Curva - + PPM - + Linear Lineare - + Telemetry Telemetria - + Offset Spostamento - - + + Min Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max Max - + Global Variables Variabili Globali - + Inputs Ingressi - + Mixers Miscelazioni - + Curves Curve - + L%1 L%1 - + Logical Switches Interruttori logici - + SF%1 FS%1 - + Special Functions Funzioni speciali - + Analogs - - + + Unit Unità - + Scale Campo di misura - + RSSI Alarms @@ -9272,9 +9458,19 @@ Determina come il valore viene aggiunto alla miscelazione. + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9312,12 +9508,12 @@ Determina come il valore viene aggiunto alla miscelazione. - + Cannot write radio settings - + Cannot write model %1 @@ -9392,26 +9588,31 @@ Determina come il valore viene aggiunto alla miscelazione. + Style + + + + Print Stampa - + Print to file Stampa su file - + Print Document Stampa documento - + Select PDF output file Scegliere il nome del file PDF - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) Documenti ODF (*.odt);;Documenti PDF (*.pdf);;Documenti HTML (*.htm *.html);;Tutti i documenti (*) @@ -9610,36 +9811,43 @@ Determina come il valore viene aggiunto alla miscelazione. RadioOutputsWidget + Form + View: + Logical Switches Interruttori logici + Global Variables Variabili Globali + Channel Outputs + Mix Outputs + L o g @@ -9649,6 +9857,7 @@ c + G l o @@ -9659,6 +9868,7 @@ l + C h a @@ -9671,6 +9881,7 @@ s + M i x @@ -9678,11 +9889,21 @@ e s + + + FM%1 + FV %1 + + + + GV%1 + VG%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. @@ -10130,22 +10351,22 @@ s RawSwitch - + - + - + - - + ! @@ -10364,126 +10585,136 @@ s SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + + + + + External + + Setup @@ -10662,15 +10893,25 @@ Se l'opzione selezionata lo stick motore verrà rovesciato. Il minimo sarà SetupPanel - + Timer %1 - + THR MOT + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10695,182 +10936,192 @@ Se l'opzione selezionata lo stick motore verrà rovesciato. Il minimo sarà - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -11002,151 +11253,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11161,64 +11442,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator Simulatore Telemetria - + F4 - + Trainer Simulator - + F5 - + Debug Output Uscita diagnostica - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help @@ -11227,64 +11508,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11292,48 +11585,59 @@ The radio type specified in the selected profile is used by default. + + + ... ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File Documento + Folder + SD Path @@ -11362,71 +11666,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Simulatore di Companion - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) - + Cannot open joystick, joystick disabled Non riesco ad aprire il joystick, supporto joystick disabilitato @@ -11485,109 +11790,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11636,101 +12072,106 @@ The default is configured in the chosen Radio Profile. Telemetry - + A1 A1 - + A2 A2 - + RSSI RSSI - + Alarm 1 Allarme 1 - - + + ---- ---- - - + + Yellow Giallo - - + + Orange Arancione - - + + Red Rosso - + Alarm 2 Allarme 2 - + Disable telemetry audio warnings - + + Source + Sorgente + + + Center Silent - + Altitude source Misura dell'altitudine - + Volts source Misura della tensione - + Top Bar Barra superiore - + Serial Protocol Protocollo seriale - + Sensors Sensori - + Disable multi sensor handling - + Volt source Misura della tensione - + Current source Misura della corrente @@ -11740,82 +12181,82 @@ The default is configured in the chosen Radio Profile. Protocollo - + None Nessuno - + FrSky Sensor Hub FrSky Sensor Hub - + Blades Pale dell'elica - + Sink Max Max Discesa - + Climb Max Max Salita - + Sink Min Min Discesa - + Climb Min Min Salita - + Vario source Sorgente per il Vario - + Vario limits Limiti per il Vario - + Altimetry Altimetro - + mAh mAh - + A A - + Various Varie - + mAh count Conteggio mAh - + FAS Offset Offset FAS - + Persistent mAh mAh persistenti @@ -11929,7 +12370,7 @@ The default is configured in the chosen Radio Profile. Corrente (mA) - + Range Intervallo @@ -11942,22 +12383,22 @@ The default is configured in the chosen Radio Profile. Tipo schermo personalizzato - + None Nessuno - + Numbers Numeri - + Bars Barre - + Script Script @@ -11985,99 +12426,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + FrSky S.PORT FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (su cavo) - + Telemetry screen %1 Schermo telemetria %1 - + + Source + Sorgente + + + Low Alarm Allarme basso - + Critical Alarm Allarme critico - + Winged Shadow How High Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (non supportato) - + Alti - + Alti+ - + VSpeed - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Celle - + --- --- @@ -12090,269 +12536,279 @@ The default is configured in the chosen Radio Profile. - + Custom Personalizzato - + Calculated Calcolato - + Id - + Instance Istanza - + + Rx + + + + + Mod. + + + + Add Somma - + Average Media - + Min Min - + Max Max - + Multiply Moltiplica - + Totalize Totalizza - + Cell Cella - + Consumption Consumo - + Dist - + Cells Sensor : Sensore celle : - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : Sensore GPS : - + Alt. Sensor : Altimetro : - + Sensor : - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + g - + ° - + Rad - + mL - + US fl.Oz. - + Raw (-) Grezza (-) - + RPM - + Precision Precisione - + Ratio - + Blades Pale dell'elica - + Offset Spostamento - + Multiplier Moltiplicatore - + Auto Offset - + Filter Filtra - + Positive Positivo - + Logs Registra - + Persistent Persistente @@ -12360,22 +12816,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest Minore - + Cell %1 Cella %1 - + Highest Maggiore - + Delta Diff @@ -12384,545 +12840,425 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator Simulatore Telemetria - + + VFAS - + + RSSI RSSI - + + A1 A1 - + + A2 A2 + Simulate Simula Modello - + + Replay SD Log File - + + Replay rate - + + Load - + + |> - + + <| - + + > > - + + <- - + + X X - + + Row # Timestamp - + + 1/5x 9X {1/5x?} - + + 5x 9X {5x?} - + + No Log File Currently Loaded - + + RAS - - - + + + + + + V / ratio - + + Db - + + RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + Tmp1 - + + A3 A3 - + + A4 A4 - + + Tmp2 - + + Fuel - + + + + °C - + + ml - - Deg. C - - - - + + % - - + + + + Meters - + + Alt Alt - + + VSpd - + + m/s - + + Fuel Qty - - + + + + km/h - + + Hdg - + + ASpd - - - + + + + + + G - + + GPS - + + Lat,Lon (dec.deg.) - + + AccX - + + dd-MM-yyyy hh:mm:ss - + + Date - + + Amps - + + AccZ - + + GAlt - - + + + + Volts - + + Cels - + + Curr - + + AccY - + + GSpd - + + Degrees - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM + When enabled, sends any non-blank values as simulated telemetry data. Quando abilitato invia i valori non nulli come dati telemetrici simulati. - + Log File - + LOG Files (*.csv) - + ERROR - invalid file - - Templates - - - Simple 4-CH - - - - - T-Cut - - - - - Sticky T-Cut - - - - - V-Tail - Coda a V - - - - Elevon\Delta - - - - - Heli Setup - - - - - Heli Setup with gyro gain control - - - - - Gyro gain control - - - - - Heli Setup (Futaba's channel assignment style) - - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - - Gyro gain control (Futaba's channel assignment style) - - - - - Servo Test - - - - - MultiCopter - - - - - Use Model Config Wizard - - - - - Apply Template? - - - - - Apply template "%1"? - - - - - - - - - - - RUD - - - - - - - - - - - - - - ELE - - - - - - - THR - MOT - - - - - - - - - - - AIL - - - - - - - - AIL2 - - - - - - - - ELE2 - - - - - - - - - - FLAPS - - - - - - - - - - FLAP%1 - - - - - - - - PITCH - - - - - - - - - - - - GYRO - - - - - - SPOIL - - - - - - SPOIL%1 - - - - - - RUD2 - - - - - - Clear Mixes? - Cancellare le miscelazioni ? - - - - Really clear existing mixes on CH6? - - - - - Really clear existing mixes on CH5? - - - ThrottlePage @@ -12957,12 +13293,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 @@ -12994,37 +13330,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Silenzioso - + Beeps Suoni - + Voice Voce - + Haptic Vibrazione - + Not persistent Non persistente - + Persistent (flight) Persistente (volo) - + Persistent (manual reset) Persistente (reset manuale) @@ -13156,6 +13492,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator Simulatore allievo @@ -13163,28 +13500,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index - + Name Nome - + Size - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13781,93 +14123,89 @@ Deve essere m64 for le piastre originali m2560 per le schede v4.1 - - downloadDialog - - - Downloading: - Scaricamento in corso: - - - - Unable to save the file %1: %2. - Impossibile salvare il file: %1: %2. - - - - Download failed: %1. - Scaricamento fallito: %1. - - joystickDialog + Configure Joystick Configurazione Joystick + Ch2 Ch2 + Ch1 Ch1 + Ch4 Ch4 + Ch6 Ch6 + Ch3 Ch3 + Ch5 Ch5 + Ch7 Ch7 + Ch8 Ch8 + Instructions Istruzioni + Enable Abilita + Cancel Annulla + Back + Start Inizio @@ -13878,6 +14216,7 @@ m2560 per le schede v4.1 + Ok Ok diff --git a/companion/src/translations/companion_ja.ts b/companion/src/translations/companion_ja.ts index dd0cda486..b09ea0080 100644 --- a/companion/src/translations/companion_ja.ts +++ b/companion/src/translations/companion_ja.ts @@ -88,7 +88,7 @@ AppMessages - + Show this message again at next startup? 次回の起動時にこのメッセージをもう一度表示しますか? @@ -102,100 +102,100 @@ 設定 - + Radio Profile 様々な操作に対応する複数のうろファイルが存在する場合があります。 送信機プロファイル - - - - - - + + + + + + Select Folder フォルダの選択 - - + + The profile specific folder, if set, will override general Backup folder プロファイル保存フォルダが指定される場合は、バックアップフォルダを上書き保存します - + Splash Screen 起動イメージ - + Select Image イメージの選択 - + Clear Image イメージの消去 - + Profile Name プロファイル名 - + Radio Type 送信機タイプ - + Menu Language メニュー言語 - + Build Options ビルドオプション - + SD Structure path SDカード保存先パス - + Backup folder バックアップフォルダ - + If set it will override the application general setting 設定されている場合はアプリケーション設定を上書き保存します - + if set, will override general backup enable 設定されている場合は有効なバックアップを上書き保存します - - + + Enable automatic backup before writing firmware 設定した場合は自動バックアップを有効にします - + General Settings 一般設定 - + Default Stick Mode 初期スティックモード - + Mode selection: Mode 1: @@ -218,459 +218,464 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - モード1 (左:エレベーター・ラダー 右:スロットル・エルロン) + モード1 (左:エレベーター・ラダー 右:スロットル・エルロン) - + Mode 2 (RUD THR ELE AIL) - モード2 (左:スロットル・ラダー 右:エレベーター・エルロン) + モード2 (左:スロットル・ラダー 右:エレベーター・エルロン) - + Mode 3 (AIL ELE THR RUD) - モード3 (左:エレベーター・エルロン 右:スロットル・ラダー) + モード3 (左:エレベーター・エルロン 右:スロットル・ラダー) - + Mode 4 (AIL THR ELE RUD) - モード4 (左:スロットル・エルロン 右:エレベーター・ラダー) + モード4 (左:スロットル・エルロン 右:エレベーター・ラダー) - + Default Channel Order 初期チャンネルマップ - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>チャンネルマップ</p><p><br/></p><p>モデル作成された際の初期チャンネルマップを定義します</p></body></html> - + R E T A - ↔RUD ↕ELE ↕THR ↔AIL [R E T A] + ↔RUD ↕ELE ↕THR ↔AIL [R E T A] - + R E A T - ↔RUD ↕ELE ↔AIL ↕THR [R E A T] + ↔RUD ↕ELE ↔AIL ↕THR [R E A T] - + R T E A - ↔RUD ↕THR ↕ELE ↔AIL [R T E A] + ↔RUD ↕THR ↕ELE ↔AIL [R T E A] - + R T A E - ↔RUD ↕THR ↔AIL ↕ELE [R T A E] + ↔RUD ↕THR ↔AIL ↕ELE [R T A E] - + R A E T - ↔RUD ↔AIL ↕ELE ↕THR [R A E T] + ↔RUD ↔AIL ↕ELE ↕THR [R A E T] - + R A T E - ↔RUD ↔AIL ↕THR ↕ELE [R A T E] + ↔RUD ↔AIL ↕THR ↕ELE [R A T E] - + E R T A - ↕ELE ↔RUD ↕THR ↔AIL [E R T A] + ↕ELE ↔RUD ↕THR ↔AIL [E R T A] - + E R A T - ↕ELE ↔RUD ↔AIL ↕THR [E R A T] + ↕ELE ↔RUD ↔AIL ↕THR [E R A T] - + E T R A - ↕ELE ↕THR ↔RUD ↔AIL [E T R A] + ↕ELE ↕THR ↔RUD ↔AIL [E T R A] - + E T A R - ↕ELE ↕THR ↔AIL ↔RUD [E T A R] + ↕ELE ↕THR ↔AIL ↔RUD [E T A R] - + E A R T - ↕ELE ↔AIL ↔RUD ↕THR [E A R T] + ↕ELE ↔AIL ↔RUD ↕THR [E A R T] - + E A T R - ↕ELE ↔AIL ↕THR ↔RUD [E A T R] + ↕ELE ↔AIL ↕THR ↔RUD [E A T R] - + T R E A - ↕THR ↔RUD ↕ELE ↔AIL [T R E A] + ↕THR ↔RUD ↕ELE ↔AIL [T R E A] - + T R A E - ↕THR ↔RUD ↔AIL ↕ELE [T R A E] + ↕THR ↔RUD ↔AIL ↕ELE [T R A E] - + T E R A - ↕THR ↕ELE ↔RUD ↔AIL [T E R A] + ↕THR ↕ELE ↔RUD ↔AIL [T E R A] - + T E A R - ↕THR ↕ELE ↔AIL ↔RUD [T E A R] + ↕THR ↕ELE ↔AIL ↔RUD [T E A R] - + T A R E - ↕THR ↔AIL ↔RUD ↕ELE [T A R E] + ↕THR ↔AIL ↔RUD ↕ELE [T A R E] - + T A E R - ↕THR ↔AIL ↕ELE ↔RUD [T A E R] + ↕THR ↔AIL ↕ELE ↔RUD [T A E R] - + A R E T - ↔AIL ↔RUD ↕ELE ↕THR [A R E T] + ↔AIL ↔RUD ↕ELE ↕THR [A R E T] - + A R T E - ↔AIL ↔RUD ↕THR ↕ELE [A R T E] + ↔AIL ↔RUD ↕THR ↕ELE [A R T E] - + A E R T - ↔AIL ↕ELE ↔RUD ↕THR [A E R T] + ↔AIL ↕ELE ↔RUD ↕THR [A E R T] - + A E T R - ↔AIL ↕ELE ↕THR ↔RUD [A E T R] + ↔AIL ↕ELE ↕THR ↔RUD [A E T R] - + A T R E - ↔AIL ↕THR ↔RUD ↕ELE [A T R E] + ↔AIL ↕THR ↔RUD ↕ELE [A T R E] - + A T E R - ↔AIL ↕THR ↕ELE ↔RUD [A T E R] + ↔AIL ↕THR ↕ELE ↔RUD [A T E R] - + Append version number to FW file name ファームウェア ファイル名にバージョン番号を追加 - + Offer to write FW to Tx after download ダウンロード後、送信機にFWを適用可能な事を通知 - + Other Settings その他の設定 - + Application Settings アプリケーション設定 - + Automatic check for OpenTX firmware updates OpenTXファームアップデートの自動チェック - + Automatic check for Companion updates Companionアップデートの自動チェック - - Use releases (stable) - リリース (Stable版) を使用 - - - - Use release candidates (testing) - リリースとRC (Test版) を使用 - - - - Use nightly builds (unstable) - ナイトリービルド (Unstable版) を使用 - - - + most recently used files 最近使用したファイル - + Startup Settings スタートアップ設定 - + Google Earth Executable Google Earthの実行 - + Automatic Backup Folder 自動バックアップフォルダ - + Remember ファイル履歴 - + Show splash screen when Companion starts Companion起動時に起動イメージを表示 - + Output Logs Folder ログ出力フォルダ - + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> <html><head/><body><p>このオプションは、機体モデルが削除または移動した際、そのモデルスロットが保持される旧版のOpenTxバージョンの挙動を維持します。</p><p>このオプションが選択されない場合は、他の機体モデルは削除により残された差異を埋めるために並べ替えるかもしれません。</p></body></html> - + Remove empty model slots when deleting models (only applies for radios w/out categories) モデルを削除するとき同時に空モデルスロットを削除 (カテゴリなしの機体モデルにのみ適用) - + Use model wizard 機体モデルウィザードを使用 - + Open model editor 機体モデルエディタを開く - + Just create the model 機体モデルの作成のみ - + Debug Output Logging 出力したログのデバッグ - + Only show user splash images オリジナルの起動イメージのみを表示 - + Show user and companion splash images オリジナルとCompanion標準イメージを表示 - + Select Executable 実行ファイル選択 - + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> <html><head/><body><p>デスクトップのCompanion / シミュレータ アプリケーションにより生成された、すべてのデバッグメッセージのログを保存します。OpenTX開発者は問題を診断・解析するため、ログを要求するかもしれません。</p></body></html> - + Application (Companion/Simulator) アプリケーション (Companion / シミュレータ) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> <html><head/><body><p>シミュレータで実行しているときは、送信機ファームウェアによって生成されたすべてのメッセージのログを保存してください。これはシミュレータの<span style = "font-style:italic;">デバッグ出力</span>ウィンドウにも同じ情報が表示されます。</p></body></html> - + Radio Firmware (in Simulator) 送信機ファームウェア (シミュレータ内) - + Splash Screen Library 起動イメージライブラリ - + User Splash Screens オリジナル起動イメージ - + Action on New Model 機体モデル新規作成 - + + Release channel + リリース状態 選択 + + + + Releases (stable) + リリース版 (Stable) + + + + Release candidates (testing) + Release candidates RC版 (Testing) + + + + Nightly builds (unstable) + ナイトリービルド版 (Unstable) + + + Simulator Settings シミュレータ設定 - + Calibrate キャリブレート - + Blue 青色 - + Green 緑色 - + Red 赤色 - + Orange オレンジ - + Yellow 黄色 - + Screenshot capture folder 画面キャプチャフォルダ - + Only capture to clipboard キャプチャをクリップボードのみにコピー - + Enable 有効 - + Joystick スティック - + Simulator BackLight バックライト - + Remember simulator switch values シミュレータで設定した各スイッチの値を記憶 - + Simulator Volume Gain シミュレータ 音量幅 - + My Radio マイ送信機 - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - <p><b>ファイル変更後で保存されていない間は、送信機タイプの切り替えやビルドオプションの変更はできません。保存しますか?</b></p> <ul><li><i>すべて保存</i> - 設定を保存する前に、開いているファイルをすべて保存します  <li><li><i>リセット</i> - 設定を保存する前に、以前の送信機タイプとビルドオプションに戻します </li><li><i>キャンセル</i> - 設定エディタダイアログに戻ります </li></ul> + <p><b>ファイル変更後で保存されていない間は、送信機タイプの切り替えやビルドオプションの変更はできません。保存しますか?</b></p> <ul><li><i>すべて保存</i> - 設定を保存する前に、開いているファイルをすべて保存します  <li><li><i>リセット</i> - 設定を保存する前に、以前の送信機タイプとビルドオプションに戻します </li><li><i>キャンセル</i> - 設定エディタダイアログに戻ります </li></ul> - + Select your snapshot folder 画面キャプチャフォルダ選択してください - + Note: Nightly builds are not available in this version, Release/RC update channel will be used. 注: このバージョンではナイトリービルドは使用できません。リリース/RC版のアップデートチャネルが使用されます。 - - + + No joysticks found スティックが認識できません - + EMPTY: No radio settings stored in profile 空: プロファイルに送信機設定が保存されていません - + AVAILABLE: Radio settings of unknown age 利用可能: 詳細不明の送信機設定 - + AVAILABLE: Radio settings stored %1 利用可能: 送信機設定は %1 に保存されています - + Select your library folder ライブラリフォルダを選択してください - - + + Select your Models and Settings backup folder 機体モデルの選択とバックアップフォルダの設定をしてください - + Select a folder for application logs アプリケーションログフォルダを選択してください - + Select Google Earth executable Google Earth実行有無を選択してください - + Select the folder replicating your SD structure SDカード保存先フォルダを選択してください - + Open Image to load イメージを開いてロードします - + Images (%1) イメージ (%1) @@ -683,26 +688,26 @@ Mode 4: 読み取りエラー %1: %2 - + Cannot save EEPROM EEPROMへ保存できません - + Cannot open file %1: %2. ファイルを開けません %1: %2. - + Error writing file %1: %2. ファイルに書き込めません %1: %2. - + Invalid binary EEPROM file %1 無効なバイナリEEPROMファイルです %1 @@ -710,58 +715,58 @@ Mode 4: Boards - + Left Horizontal 左・横 - + Left Vertical 左・縦 - + Right Vertical 右・縦 - + Right Horizontal 右・横 - + Aux. 1 AUX. 1 - + Aux. 2 AUX. 2 - - + + Unknown 不明 - + Rud ラダー - + Ele エレベーター - + Thr スロットル - + Ail エルロン @@ -810,82 +815,82 @@ Mode 4: Channels - + Name 名称 - + Subtrim サブトリム - + Min 最小 - + Max 最大 - + Direction 方向 - + Curve カーブ - + PPM Center PPM センター - + Linear Subtrim 線形サブトリム - + CH%1 CH%1 - + Popup menu available 利用可能なポップアップメニュー - + --- --- - + INV リバース - + &Copy &コピー - + &Cut &切り取り - + &Paste &貼り付け - + &Delete &削除 @@ -898,27 +903,32 @@ Mode 4: チェックリスト編集 - + + Line nn, Col nn + 行 nn, カラー nn + + + &Import... &インポート... - + &Cancel &キャンセル - + &OK &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. 注: 表示可能な最大幅は送信機モデルによって異なります。また、モデル名称を変更すると、このチェックリストファイルへのリンクが解除されます。 - + File: unknown ファイル: 不明 @@ -976,6 +986,11 @@ Mode 4: ファイルを読み込めません %1: %2. + + + Line %1, Col %2 + 行 %1, カラー %2 + Companion @@ -1015,37 +1030,37 @@ Mode 4: 送信機と機体モデルの設定 - + Select or create a file for exported Settings: エクスポートした設定ファイルを選択または作成します: - + Press the 'Retry' button to choose another file. 別のファイルを選択するには『再試行』ボタンを押してください。 - + Simulator for this firmware is not yet available このファームウェアのシミュレータはまだ利用できません - + Uknown error during Simulator startup. シミュレータ起動中に不明なエラーが発生しました。 - + Simulator Error シミュレータ エラー - + Data Load Error データロード エラー - + Error occurred while starting simulator. シミュレータ起動中にエラーが発生しました。 @@ -1303,22 +1318,22 @@ If you have a settings backup file, you may import that instead. CurveGroup - + Diff 差分 - + Expo エクスポ - + Func 機能 - + Curve カーブ @@ -1440,67 +1455,72 @@ If you have a settings backup file, you may import that instead. カーブ %1 - + + Popup menu available + 利用可能なポップアップメニュー + + + %1 points %1 点 - + Linear 線形 - + Single Expo シングルエクスポ - + Symmetrical f(x)=-f(-x) 対称 f(x)=-f(-x) - + Symmetrical f(x)=f(-x) 対称 f(x)=f(-x) - + Editing curve %1 カーブ %1 編集 - + Not enough free points in EEPROM to store the curve. EEPROMにカーブを保存する十分な空き容量がありません。 - + Copy コピー - + Paste 貼り付け - + Clear 消去 - + Clear all curves すべてのカーブ消去 - + Are you sure you want to reset curve %1? カーブ %1をリセットしてもよいですか? - + Are you sure you want to reset all curves? すべてのカーブをリセットしてもよいですか? @@ -1720,32 +1740,22 @@ If you have a settings backup file, you may import that instead. - - Decr: - <: - - - - Incr: - >: - - - + played once, not during startup 起動時以外 1回実行 - + repeat(%1s) リピート(%1s) - + DISABLED 無効 - + CFN CFN @@ -1773,69 +1783,74 @@ If you have a settings backup file, you may import that instead. 有効 - + + Popup menu available + 利用可能なポップアップメニュー + + + SF%1 SF%1 - + GF%1 GF%1 - + ON ON - + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) サウンド再生中にエラーが発生しました。おそらくファイルは既に開かれています (Err: %1 [%2]) - + Unable to find or open sound file: %1 音源ファイルが見つからない、または開けません。 %1 - + &Copy &コピー - + &Cut &切り取り - + &Paste &貼り付け - + &Delete &削除 - + Value - + Source - ソース + 選択元 - + GVAR GVAR - + Increment 増加 @@ -1998,54 +2013,53 @@ If you have a settings backup file, you may import that instead. DataField - + Conversion error on field %1 フィールド %1 変換エラー - + Switch スイッチ - + Switch スイッチ - + cannot be exported on this board! このボードにエクスポートできません! - + Source - ソース + 選択元 - + Source %1 cannot be exported on this board! - このボードではソース %1 をエクスポートできません! + このボードでは選択元 %1 をエクスポートできません! - + OpenTX only accepts %1 points in all curves OpenTXはすべてのカーブで %1 点のみを許容します - + OpenTx only accepts %1 points in all curves OpenTxはすべてのカーブで %1 点のみを許容します - - - + + OpenTX on this board doesn't accept this function このボード上のOpenTXはこの機能を受け付けません - + OpenTX doesn't accept this radio protocol OpenTXはこの送信機プロトコルを受け付けません @@ -2054,21 +2068,25 @@ If you have a settings backup file, you may import that instead. DebugOutput + Debug Output デバッグ出力 + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> <html><head/><body><p>フィルタを有効または無効にします。ボタンが有効にならない場合は、入力した正規表現に構文エラーがある可能性があります。</p></body></html> + Filter: フィルタ: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> <html><head/><body><p>ここにフィルタテキストを入力してください。フィルタの使用方法の詳細は、help / info ボタンをクリックしてください。</p><p> @@ -2076,51 +2094,61 @@ To <b>remove a remembered entry</b> from the filter list, first cho + Buffer: バッファ: + Number of lines to keep in display. 画面へ表示し続ける行数を示します。 + Filter &Help フィルタ &ヘルプ + Show information about using the filter. フィルタの使用に関する情報を表示します。 + Word &Wrap 単語 &重複 + Toggle word wrapping on/off. 単語の重複チェックのON / OFFを切り替えます。 + &Clear &消去 + Clear the output window of all text. すべてのテキストの出力ウィンドウを消去します。 + Enable &Filter 有効 &フィルタ + Turn the filter on/off. フィルタをON / OFFします。 @@ -2227,24 +2255,19 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - この送信機は、おそらく間違ったファームウェアを適用しています。 EEPROMサイズは4096ですが、最初の2048しか使用されません - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - このEEPROMは古いバージョンのOpenTXでアップグレードしています。 元のファイルをバックアップとして保存するには『ファイル』 -> 『名前を付けて保存』を選択し、別名を指定してください。 - - - Warnings! - 警告! - EepeFormat @@ -2307,7 +2330,7 @@ To <b>remove a remembered entry</b> from the filter list, first cho Source for the mixer. - ミキサーのソース。 + ミキサー選択元. @@ -2374,12 +2397,12 @@ If blank then the input is considered to be "ON" all the time. Curve applied to the source. - ソースに適用されたカーブ。 + 選択元に適用されたカーブ. Source - ソース + 選択元 @@ -2394,7 +2417,7 @@ If blank then the input is considered to be "ON" all the time. The source for the mixer - ミキサーのソース + ミキサー選択元 @@ -2403,8 +2426,8 @@ If blank then the input is considered to be "ON" all the time. - Click to access popup menu - クリックしてポップアップメニューにアクセス + Popup menu available + 利用可能なポップアップメニュー @@ -2786,232 +2809,252 @@ Blank means include all. ?, *, and [...] wildcards accepted. Firmware - + Channel values displayed in us 表示されるチャンネル値 - + No OverrideCH functions available 使用可能な上書きチャンネル機能はありません - + Possibility to enable FAI MODE (no telemetry) at field フィールドでFAIモード (テレメトリーなし) を有効にする可能性 - + FAI MODE (no telemetry) always enabled FAIモード (テレメトリーなし) を常に有効 - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 2015/01/01以降に販売された送信機に対し、EUでの使用に適さないD8 FrSkyプロトコルサポートを削除 - + Enable non certified firmwares 認定されていないファームウェアを有効にする - - Support for the DIY-Multiprotocol-TX-Module - DIY-Multiprotocol-TX-Moduleのサポート - - - + + Disable HELI menu and cyclic mix support HELIメニューとサイクリックミックスサポートを無効にする - + + Disable Global variables グローバル変数を無効にする - + + Enable Lua custom scripts screen Luaカスタムスクリプト画面を有効にする - - Enable Lua compiler - Luaコンパイラを有効にする - - - + Use alternative SQT5 font SQT5 代替フォントを使用する - + Pots use in menus navigation メニューナビゲーションでダイヤルを使用 - + FrSky Taranis X9D+ FrSky Taranis X9D+ - + Support for PPM internal module hack PPM内部モジュールハックのサポート - + Disable RAS (SWR) RAS (SWR)を無効にする - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed タッチパネル対応モジュールをインストール - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown 送信機シャットダウン前の確認 - + Horus gimbals installed (Hall sensors) Horusジンバル (ホールセンサー) をインストール - + FrSky Taranis X9-Lite FrSky Taranis X9-Lite - + + + Support for auto update on boot + 起動時の自動更新サポート + + + FrSky Taranis X7 / X7S FrSky Taranis X7 / X7S - + FrSky Taranis X-Lite S/PRO FrSky Taranis X-Lite S/PRO - - Support for PXX1 internal module replacement - PXX1内蔵モジュール交換サポート - - - + FrSky Taranis X-Lite FrSky Taranis X-Lite - + FrSky Horus X10 / X10S FrSky Horus X10 / X10S - + FrSky Horus X12S FrSky Horus X12S - + Use ONLY with first DEV pcb version 初期DEV pcbバージョンでのみ使用 - + Turnigy 9XR-PRO Turnigy 9XR-PRO - + Enable HELI menu and cyclic mix support HELIメニューとサイクリックミックスのサポートを有効にする - + Global variables グローバル変数 - + In model setup menus automatically set source by moving the control - モデル設定メニューでは、コントローラを動かし自動的にソースを設定します + モデル設定メニューでは、コントローラーを動かし自動的に選択元を設定します - + In model setup menus automatically set switch by moving the control - モデル設定メニューでは、コントローラを動かし自動的にスイッチを設定します + モデル設定メニューでは、コントローラーを動かし自動的にスイッチを設定します - + No graphical check boxes and sliders グラフィカルなチェックボックスとスライダーはありません - + Battery graph バッテリーグラフ - + Don't use bold font for highlighting active items 有効なアイテムを強調表示するために太字フォントを使用しない - + + + Support for ACCESS internal module replacement + ACCESS内部モジュール変更のサポート + + + + FrSky Horus X10 Express + + + + + Jumper T12 + + + + + Enable non certified R9M firmwares + 非認定 R9Mファームウェアを有効 + + + Turnigy 9XR with m128 chip Turnigy 9XR m128チップ搭載 - + Turnigy 9XR Turnigy 9XR - + 9X with stock board 9X ストックボード - + Enable resetting values by pressing up and down at the same time 上下に同時に押し、値のリセットを有効にする - + 9X with stock board and m128 chip 9X ストックボード+m128 chip - + 9X with AR9X board 9X AR9Xボード - + 9X with Sky9x board 9X Sky9Xボード - + 9X with Gruvin9x board 9X Gruvin9X - + DIY MEGA2560 radio DIY MEGA2560 送信機 @@ -3086,7 +3129,7 @@ Blank means include all. ?, *, and [...] wildcards accepted. FlashEEpromDialog - + Write Models and Settings to Radio モデル・設定を書き込み @@ -3151,51 +3194,51 @@ Blank means include all. ?, *, and [...] wildcards accepted. 書き込み - + Current profile: %1 現在のプロファイル: %1 - + Choose Radio Backup file 送信機バックアップファイルを選択してください - + Wrong radio calibration data in profile, Settings not patched プロファイル内の送信機校正情報が正しくなく、パッチが適用されません - + Wrong radio setting data in profile, Settings not patched プロファイル内の送信機設定データが正しくなく、パッチが適用されません - + Cannot write file %1: %2. ファイルを書き込めません %1: %2. - + Error writing file %1: %2. ファイル書き込みエラーです %1: %2. - + The radio firmware belongs to another product family, check file and preferences! 送信機ファームウェアは他の製品ファミリーに属しています。ファイルと設定を確認してください! - + The radio firmware is outdated, please upgrade! 送信機ファームウェアは古いままとなっています。アップグレードしてください! - + Cannot check Models and Settings compatibility! Continue anyway? モデルと設定の互換性を確認できません。そのまま続けますか? @@ -3498,99 +3541,104 @@ You are currently using: FlightModePanel - + + Popup menu available + 利用可能なポップアップメニュー + + + Trim disabled トリム 無効 - + Own Trim 独自トリム - + Use Trim from Flight mode %1 フライトモードからトリムを使用してください %1 - + Use Trim from Flight mode %1 + Own Trim as an offset フライトモードからトリムを使用してください %1+オフセット独自トリム - + Rotary Encoder %1 ロータリーエンコーダ %1 - + Name 名称 - + Value source - ソース値 + 元値 - + Value - + Unit ユニット - + Prec - + Min 最小 - + Max 最大 - + Popup enabled ポップアップ有効 - + GVAR%1 - + 0._ - + 0.0 0.0 - - + + &Clear &消去 - - + + Clear 消去 - + Clear all current Flight Mode properties? 現在のフライトモードのプロパティをすべて消去しますか? @@ -3598,17 +3646,17 @@ You are currently using: FlightModesPanel - + Flight Mode %1 フライトモード %1 - + (%1) (%1) - + (default) (初期値) @@ -3848,12 +3896,12 @@ p, li { white-space: pre-wrap; } - + Own value 独自トリム - + Flight mode %1 value フライトモード %1 値 @@ -3890,7 +3938,7 @@ These will be relevant for all models in the same EEPROM. Global Functions - グローバル機能 + グローバルファンクション @@ -3936,7 +3984,7 @@ These will be relevant for all models in the same EEPROM. GeneralSettings - + Radio Settings 送信機設定 @@ -3994,159 +4042,161 @@ These will be relevant for all models in the same EEPROM. SG - + Stick reverse スティック リバース - + Country Code 地域 - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. FAIを有効にすると、RSSIとRxBtセンサーのみが機能し続けます。この機能を送信機側で無効にすることはできません。 - + FAI Mode FAIモード - + Automatically adjust the radio's clock if a GPS is connected to telemetry. GPSがテレメトリーに接続されている場合、自動的に送信機側の内蔵時計を調整します。 - + Adjust RTC 時計調整 - + Speaker Volume スピーカー音量 - - + + Hz Hz - + Vario pitch at max バリオピッチ 最大 - + Backlight Switch バックライトスイッチ - + Color 1 カラー 1 - + Color 2 カラー 2 - + Sound Mode サウンドモード - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. この値が0以外の場合、キーを押すとバックライトが点灯し、指定秒数を経過すると消灯します。 - + + + sec - + Backlight color バックライトカラー - + Speaker Pitch (spkr only) 再生ピッチ (対応機のみ) - + Beeper ビープ - + Speaker スピーカー - + BeeperVoice ビープ音声 - + SpeakerVoice スピーカー音声 - + Beep volume ビープ音量 - + Wav volume WAV音量 - + Vario volume バリオVOL - + Background volume バックグランドVOL - - + + ms ms - + Backlight flash on alarm アラーム時ライト点滅 - + Vario pitch at zero バリオピッチ ゼロ - + Vario repeat at zero バリオリピート ゼロ - + Backlight Auto OFF after バックライト 自動消灯 - + This is the switch selectrion for turning on the backlight (if installed). @@ -4155,8 +4205,8 @@ These will be relevant for all models in the same EEPROM. - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4171,49 +4221,49 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">値は20~45です</span></p></body></html> - + RotEnc Navigation Rot Enc ナビゲーション - + Backlight Brightness バックライト 明るさ - + America アメリカ - + Japan 日本 - + Europe ヨーロッパ - + Voice Language 音声言語 - + Timeshift from UTC UTC 時差 - + Backlight OFF Brightness バックライトOFF 明るさ - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4238,12 +4288,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">サイレントモード警告 - ビープ音が消音(0)に設定されていると警告します</p></body></html> - + RSSI Poweroff Warning RSSI 信号切断 警告 - + Beeper volume 0 - Quiet. No beeps at all. @@ -4260,216 +4310,216 @@ p, li { white-space: pre-wrap; } 4 - より大きい音量。 - - + + Quiet 消音 - + Alarms Only アラームのみ - - + + No Keys キーなし - - + + All すべて - + Beeper Mode ビープ モード - + Jack Mode Jackモード - + Audio 音声 - + Trainer トレーナー - - + + X-Short より短い - - + + Short 短い - - + + Normal 通常 - - + + Long 長い - - + + X-Long より長い - + Beeper Length ビープ音の長さ - + Haptic Mode タッチパネルモード - + Measurement Units 計量単位 - + Play Delay (switch mid position) 遅延動作 (スイッチ中央) - - hh° (N/S) mm' ss''.dd - - - - + NMEA - + 4800 Baud - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - + + Show splash screen on startup 起動時、起動イメージ表示 - + + Power On Delay + 起動時間 + + + --- --- - + 2s 2秒 - + 3s 3秒 - + 4s 4秒 - + 6s 6秒 - + 8s 8秒 - + 10s 10秒 - + 15s 15秒 - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. 指定された時間(分)入力がないまま送信機が放置されると、ゼロでない場合はビープ音が鳴ります。 - + min - + Standard 標準 - + Optrex オプトレックス(京セラ) - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4479,233 +4529,248 @@ Acceptable values are 5v..10v 許容値は5~10vです - + Only Alarms アラームのみ - + MAVLink Baud Rate MAVLink ボーレート - + Haptic Length タッチパネル長押し - + Battery Warning バッテリー警告 - + "No Sound" Warning 【無音】警告 - + LCD Display Type 液晶ディスプレイタイプ - + Haptic Strength タッチパネル感度 - + Battery Meter Range バッテリーメーター範囲 - + Contrast コントラスト - + Show Splash Screen on Startup 起動時、起動イメージ表示 - + Low EEPROM Warning EEPROM残量警告 - + Inactivity Timer 非アクティブタイマー - + Min 最小 - - + + v v - + Max 最大 - + GPS Coordinates GPS座標 - + Default Channel Order 初期チャンネルマップ - + Metric メートル法 - + Imperial ヤード・ポンド法 - + Stick Mode スティックモード - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>チャンネルマップ</p><p><br/></p><p>モデル作成された際の初期チャンネルマッピングを定義します</p></body></html> - + + Owner Registration ID + オーナー登録ID + + + + aaaaaaAA + + + + R E T A - ↔RUD ↕ELE ↕THR ↔AIL [R E T A] + ↔RUD ↕ELE ↕THR ↔AIL [R E T A] - + R E A T - ↔RUD ↕ELE ↔AIL ↕THR [R E A T] + ↔RUD ↕ELE ↔AIL ↕THR [R E A T] - + R T E A - ↔RUD ↕THR ↕ELE ↔AIL [R T E A] + ↔RUD ↕THR ↕ELE ↔AIL [R T E A] - + R T A E - ↔RUD ↕THR ↔AIL ↕ELE [R T A E] + ↔RUD ↕THR ↔AIL ↕ELE [R T A E] - + R A E T - ↔RUD ↔AIL ↕ELE ↕THR [R A E T] + ↔RUD ↔AIL ↕ELE ↕THR [R A E T] - + R A T E - ↔RUD ↔AIL ↕THR ↕ELE [R A T E] + ↔RUD ↔AIL ↕THR ↕ELE [R A T E] - + E R T A - ↕ELE ↔RUD ↕THR ↔AIL [E R T A] + ↕ELE ↔RUD ↕THR ↔AIL [E R T A] - + E R A T - ↕ELE ↔RUD ↔AIL ↕THR [E R A T] + ↕ELE ↔RUD ↔AIL ↕THR [E R A T] - + E T R A - ↕ELE ↕THR ↔RUD ↔AIL [E T R A] + ↕ELE ↕THR ↔RUD ↔AIL [E T R A] - + E T A R - ↕ELE ↕THR ↔AIL ↔RUD [E T A R] + ↕ELE ↕THR ↔AIL ↔RUD [E T A R] - + E A R T - ↕ELE ↔AIL ↔RUD ↕THR [E A R T] + ↕ELE ↔AIL ↔RUD ↕THR [E A R T] - + E A T R - ↕ELE ↔AIL ↕THR ↔RUD [E A T R] + ↕ELE ↔AIL ↕THR ↔RUD [E A T R] - + T R E A - ↕THR ↔RUD ↕ELE ↔AIL [T R E A] + ↕THR ↔RUD ↕ELE ↔AIL [T R E A] - + T R A E - ↕THR ↔RUD ↔AIL ↕ELE [T R A E] + ↕THR ↔RUD ↔AIL ↕ELE [T R A E] - + T E R A - ↕THR ↕ELE ↔RUD ↔AIL [T E R A] + ↕THR ↕ELE ↔RUD ↔AIL [T E R A] - + T E A R - ↕THR ↕ELE ↔AIL ↔RUD [T E A R] + ↕THR ↕ELE ↔AIL ↔RUD [T E A R] - + T A R E - ↕THR ↔AIL ↔RUD ↕ELE [T A R E] + ↕THR ↔AIL ↔RUD ↕ELE [T A R E] - + T A E R - ↕THR ↔AIL ↕ELE ↔RUD [T A E R] + ↕THR ↔AIL ↕ELE ↔RUD [T A E R] - + A R E T - ↔AIL ↔RUD ↕ELE ↕THR [A R E T] + ↔AIL ↔RUD ↕ELE ↕THR [A R E T] - + A R T E - ↔AIL ↔RUD ↕THR ↕ELE [A R T E] + ↔AIL ↔RUD ↕THR ↕ELE [A R T E] - + A E R T - ↔AIL ↕ELE ↔RUD ↕THR [A E R T] + ↔AIL ↕ELE ↔RUD ↕THR [A E R T] - + A E T R - ↔AIL ↕ELE ↕THR ↔RUD [A E T R] + ↔AIL ↕ELE ↕THR ↔RUD [A E T R] - + A T R E - ↔AIL ↕THR ↔RUD ↕ELE [A T R E] + ↔AIL ↕THR ↔RUD ↕ELE [A T R E] - + A T E R - ↔AIL ↕THR ↕ELE ↔RUD [A T E R] + ↔AIL ↕THR ↕ELE ↔RUD [A T E R] - + + Power Off Delay + 終了時間 + + + Mode selection: Mode 1: @@ -4746,48 +4811,53 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - モード1 (左:エレベーター・ラダー 右:スロットル・エルロン) + モード1 (左:エレベーター・ラダー 右:スロットル・エルロン) - + Mode 2 (RUD THR ELE AIL) - モード2 (左:スロットル・ラダー 右:エレベーター・エルロン) + モード2 (左:スロットル・ラダー 右:エレベーター・エルロン) - + Mode 3 (AIL ELE THR RUD) - モード3 (左:エレベーター・エルロン 右:スロットル・ラダー) + モード3 (左:エレベーター・エルロン 右:スロットル・ラダー) - + Mode 4 (AIL THR ELE RUD) - モード4 (左:スロットル・エルロン 右:エレベーター・ラダー) + モード4 (左:スロットル・エルロン 右:エレベーター・ラダー) - + + DMS + + + + USB Mode USBモード - - + + Ask on Connect 接続毎に確認 - + Joystick (HID) ジョイスティック (HID) - + USB Mass Storage USBストレージ - + USB Serial (CDC) USBシリアル (CDC) @@ -4795,127 +4865,127 @@ Mode 4: GeneralSetupPanel - + OFF OFF - + Keys キー - + Sticks スティック - + Keys + Sticks キー+スティック - + ON ON - + English - + Dutch - + French - + Italian - + German - + Czech - + Slovak - + Spanish - + Polish - + Portuguese - + Russian - + Swedish - + Hungarian - + No いいえ - + RotEnc A Rot Enc A - + Rot Enc B - + Rot Enc C - + Rot Enc D - + Rot Enc E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4950,237 +5020,247 @@ Are you sure ? フォーム - + SQ SQ - + SR SR - + LS2 LS2 - + SP SP - + SO SO - + S4 S4 - + RS RS - + SB SB - + PPM 2 PPM 2 - + + Antenna + アンテナ + + + + S5 + S5 + + + OFF OFF - + S-Port Mirror S-Port ミラー - + Telemetry テレメトリー - + SBUS Trainer SBUS トレーナー - + Debug デバッグ - + Rud ラダー - + PPM 3 PPM 3 - + S1 S1 - + S2 S2 - + S3 S3 - + PPM 1 PPM 1 - + Serial Port シリアルポート - + v v - + PPM Multiplier PPM 乗算 - + Current Offset 現在のオフセット - + PPM 4 PPM 4 - + SA SA - + Ele エレベーター - + Ail エルロン - + Thr スロットル - + SC SC - + LS LS - + SD SD - + Battery Offset バッテリーオフセット - + SE SE - + SF SF - + SG SG - + SH SH - + SI SI - + SJ SJ - + SK SK - + SL SL - + SM SM - + SN SN - + RS2 RS2 - + Bluetooth Bluetooth - + ADC Filter ADCフィルタ - + Device Name: デバイス名: @@ -5189,8 +5269,8 @@ Are you sure ? HardwarePanel - - + + None なし @@ -5210,45 +5290,70 @@ Are you sure ? 3 ポジション - + Pot with detent ダイヤル (ノッチあり) - + Multipos switch マルチPosスイッチ - + Pot without detent ダイヤル (ノッチなし) - + Slider with detent スライダー (ノッチあり) - + OFF OFF - + Enabled 有効 - + Telemetry テレメトリー - + Trainer トレーナー + + + Internal + 内部 + + + + Ask + 確認 + + + + Per model + Per モデル + + + + Internal + External + 内部 + 外部 + + + + External + 外部 + Heli @@ -5672,32 +5777,37 @@ Are you sure ? 遅延 - + + Popup menu available + 利用可能なポップアップメニュー + + + (instant) (瞬間) - + (infinite) (無制限) - + &Copy &コピー - + &Cut &切り取り - + &Paste &貼り付け - + &Delete &削除 @@ -5901,7 +6011,7 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt - + File loaded ファイルがロードされました @@ -5911,91 +6021,91 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt アップデートの確認 - + A new version of Companion is available (version %1)<br>Would you like to download it? Companionの新しいバージョンがあります。 (version %1)<br>ダウンロードしますか? - - + + Save As 名前を付けて保存 - + New release available 新リリースが利用可能 - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> Companionの新リリースが利用可能です。<a href='%1'>OpenTX Webサイト</a>をチェックしてください - - + + No updates available at this time. 現時点で利用可能なアップデートはありません。 - + Error opening file %1: %2. ファイル %1 を開くときにエラーが発生しました: %2. - + Not enough flash available on this board for all the selected options 選択されたすべてのオプションに対してこのボードでは十分な書き込みが行えません - + Compilation server temporary failure, try later コンパイルサーバが一時的に失敗しました。後程お試しください - + Compilation server too busy, try later コンパイルサーバがビジー状態です。後程お試しください - + Compilation error コンパイルエラー - + Invalid firmware 無効なファームウェア - + Invalid board 無効なボード - + Invalid language 無効な言語 - + Unknown server failure, try later 不明なサーバの障害です。後程お試しください - + Do you want to write the firmware to the radio now ? 今すぐファームウェアを送信機に書き込みますか? - + Firmware update check failed, new version information not found or invalid. ファームウェアアップデートの確認に失敗しました。新しいバージョン情報が見つからないか、または無効です。 - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now? @@ -6008,31 +6118,31 @@ We recommend you view the release notes using the button below to learn about an 重要な変更については、下のボタンをクリックしてリリースノートを参照することをお勧めします。 - - + + Yes はい - - + + No いいえ - - + + Release Notes リリースノート - - + + Do you want to download version %1 now ? 今すぐバージョン %1 をダウンロードしますか? - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6049,29 +6159,29 @@ We recommend you view the release notes using the button below to learn about an 重要な変更については、下のボタンをクリックしてリリースノートを参照することをお勧めします。 - + Ignore this version %1? このバージョン %1 を無視しますか? - + The new theme will be loaded the next time you start Companion. 次回Companionを起動したときに、新しいテーマがロードされます。 - - + + Open Models and Settings file 機体モデルと設定ファイルを開く - - + + File saved ファイル 保存 - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? @@ -6080,725 +6190,780 @@ Do you wish to continue? そのまま続けますか? - - + + Synchronize SD SDカードを同期する - + No local SD structure path configured! SDカード保存先パスが設定されていません! - + + No Companion release candidates are currently being served for this version, please switch release channel + 現在このバージョンのCompanion RC版は提供されていません。リリース状態を切り替えてください + + + + No nightly Companion builds are currently being served for this version, please switch release channel + 現在、このバージョンのCompanion ナイトリービルド版は提供されていません。リリース状態を切り替えてください + + + + No Companion release builds are currently being served for this version, please switch release channel + このバージョンのCompanion リリース版は現在提供されていません。リリース状態を切り替えてください + + + Companion update check failed, new version information not found. Companionアップデートの確認に失敗しました。新しいバージョン情報が見つかりません。 - + + No firmware release candidates are currently being served for this version, please switch release channel + 現在、このバージョンのファームウェア RC版は提供されていません。リリース状態を切り替えてください + + + + No firmware nightly builds are currently being served for this version, please switch release channel + 現在、このバージョンのファームウェア ナイトリービルド版は提供されていません。リリース状態を切り替えてください + + + + No firmware release builds are currently being served for this version, please switch release channel + 現在、このバージョンのファームウェア リリース版は提供されていません。リリース状態を切り替えてください + + + + Release candidate builds are now available for this version, would you like to switch to using them? + RC版はこのバージョンで利用可能になりました。それらに切り替えますか? + + + + Channel changed to RC, please restart the download process + リリース状態をRC版に変更しました。ダウンロードプロセスを再起動してください + + + + Official release builds are now available for this version, would you like to switch to using them? + このバージョンの公式リリース版が利用可能になりました。それらに切り替えますか? + + + + Channel changed to Release, please restart the download process + リリース状態をリリース版に変更しました。ダウンロードプロセスを再起動してください + + + + This radio (%1) is not currently available in this firmware release channel + この送信機 (%1) は、現在このファームウェアリリース状態では利用できません + + + No Radio or SD card detected! 送信機またはSDカードが検出されませんでした! - + Local Folder ローカルフォルダ - + Radio Folder 送信機フォルダ - - + + Read Firmware from Radio 送信機からファームウェアを読み込み - - + + Read Models and Settings from Radio 送信機から機体モデルや設定を読み込み - + Models and Settings read 機体モデルと設定の読み込み - - + + This function is not yet implemented この機能はまだ実装されていません - + Save Radio Backup to File 送信機のバックアップをファイルに保存 - + Read Radio Firmware to File 送信機ファームウェアからファイルへの読み込み - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX ホームページ: <a href='%1'>%1</a> - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> OpenTX Companionプロジェクトは元々<a href='%1'>eePe</a>から派生しました - + If you've found this program useful, please support by <a href='%1'>donating</a> このプログラムが役に立つと感じた場合は、<a href='%1'>寄付</a>でのサポートをお願いします - + Copyright OpenTX Team Copyright OpenTX Team - + About Companion Companionについて - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - 送信機: %2 - プロファイル: %3 - + New 新規 - + Create a new Models and Settings file 新規モデルと設定ファイルを作成します - + Open... 開く... - + Save 保存 - - + + Save Models and Settings file 機体モデルと設定ファイルを保存します - + Save As... 名前を付けて保存... - + Close 閉じる - + Close Models and Settings file 機体モデルと設定ファイルを閉じます - + Exit 終了 - + Exit the application アプリケーションを終了します - + About... バージョン情報... - + Show the application's About box アプリケーションのバージョン情報を表示します - + Recent Files 最近使用したファイル - + List of recently used files 最近使用したファイルを一覧表示 - + Radio Profiles 送信機プロファイル - + Create or Select Radio Profiles 送信機プロファイルを作成または選択します - + View Log File... ログファイルを表示... - + Open and view log file ログファイルを開いて表示します - + Settings... 設定... - + Edit Settings 設定を編集します - + Download... ダウンロード... - + Download firmware and voice files ファームウェアと音声ファイルをダウンロードします - + Check for Updates... アップデートのチェック... - + Check OpenTX and Companion updates OpenTXとCompanionのアップデートを確認します - + Release notes... リリースノート... - + Show release notes リリースノートを表示します - + Compare Models... 機体モデルを比較... - + Compare models 機体モデルを比較します - + Edit Radio Splash Image... 送信機の起動イメージを編集... - + Edit the splash image of your Radio 送信機の起動イメージを編集します - + List programmers... プログラムを一覧表示... - + List available programmers 利用可能なプログラムを一覧表示します - + Fuses... ヒューズ... - + Show fuses dialog ヒューズダイアログを表示します - + Read firmware from Radio 送信機からファームウェアを読み込み - + Write Firmware to Radio 送信機にファームウェアを書き込み - + Write firmware to Radio 送信機にファームウェアを書き込み - + SD card synchronization SDカードの同期 - + Manuals and other Documents マニュアルと他の文書 - + Open the OpenTX document page in a web browser WebブラウザでOpenTXドキュメントページを開く - + Write Models and Settings To Radio 機体モデルと設定を送信機に書き込み - + Write Models and Settings to Radio 機体モデルと設定を送信機に書き込み - + Read Models and Settings From Radio 送信機から機体モデルや設定を読み込み - + Configure Communications... 送信機疎通を設定... - + Configure software for communicating with the Radio 送信機と疎通するためのソフトウェアを設定します - + Write Backup to Radio 送信機からバックアップを書き出す - + Write Backup from file to Radio 送信機ファイルからバックアップを書き出します - + Backup Radio to File ファイルを送信機にバックアップ - + Save a complete backup file of all settings and model data in the Radio すべての設定とモデルデータの完全なバックアップファイルを送信機に保存します - + Contributors... 貢献者... - + A tribute to those who have contributed to OpenTX and Companion OpenTXとCompanionに貢献した人々への賛辞 - + Add Radio Profile 送信機プロファイルの追加 - + Create a new Radio Settings Profile 新しい送信機設定プロファイルを作成します - + Copy Current Radio Profile 現在の送信機プロファイルをコピー - + Duplicate current Radio Settings Profile 現在の送信機設定プロファイルを複製します - + Delete Current Radio Profile... 現在の送信機プロファイルを削除... - + Delete the current Radio Settings Profile 現在の送信機設定プロファイルを削除します - + Export Application Settings.. アプリケーション設定のエクスポート.. - + Save all the current %1 and Simulator settings (including radio profiles) to a file. 現在のすべての%1およびシミュレータ設定(送信機プロファイル含)をファイルに保存します。 - + Import Application Settings.. アプリケーション設定をインポート.. - + Load %1 and Simulator settings from a prevously exported settings file. 以前にエクスポートした設定ファイルから%1とシミュレーション設定を読み込みます。 - + Tabbed Windows タブ付きウィンドウ - + Use tabs to arrange open windows. 開いているウィンドウを並べ替えるのにタブを使用します。 - + Tile Windows ウィンドウのタイトル - + Arrange open windows across all the available space. 利用可能なすべてのスペースに開いているウィンドウを配置します。 - + Cascade Windows ウィンドウを重ねる - + Arrange all open windows in a stack. 開いているウィンドウをすべて重ねて配置します。 - + Close All Windows すべてのウィンドウを閉じる - + Closes all open files (prompts to save if necessary. 開いているファイルをすべて閉じます (必要に応じ保存を求められます)。 - - + + Edit 編集 - - + + File ファイル - + Settings 設定 - + Set Icon Theme アイコンテーマ設定 - + Set Icon Size アイコンサイズ設定 - + Read/Write 読み込み/書き込み - + Window ウィンドウ - - + + Help ヘルプ - + Write 書き込み - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. 次にCompanionを起動するまで一部のテキストは翻訳されません。いくつかの翻訳は完全ではないかもしれませんのでご注意ください。 - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + Classical クラシック - + The classic companion9x icon theme クラシック Companion9x アイコンテーマ - + Yerico イェリコ - + Yellow round honey sweet icon theme Yellow round honey sweet アイコンテーマ - + Monochrome モノクローム - + A monochrome black icon theme A monochrome black アイコンテーマ - + MonoBlue モノブルー - + A monochrome blue icon theme A monochrome blue アイコンテーマ - + MonoWhite モノホワイト - + A monochrome white icon theme A monochrome white アイコンテーマ - + Small 小サイズ - + Use small toolbar icons 小サイズのツールバーアイコンを使用 - + Normal 標準サイズ - + Use normal size toolbar icons 標準サイズのツールバーアイコンを使用 - + Big 大サイズ - + Use big toolbar icons 大サイズのツールバーアイコンを使用 - + Huge 特大サイズ - + Use huge toolbar icons 特大サイズのツールバーアイコンを使用 - + Set Menu Language メニュー言語を設定 - + System language システム言語 - + Use default system language. デフォルトのシステム言語を使用します。 - + Use %1 language (some translations may not be complete). %1言語を使用します (一部の翻訳が不完全な場合あり)。 - + Ready 準備完了 - + %2 %2 - + Alt+%1 - + New Radio 新規 送信機 - + - Copy - コピー - + Companion :: Open files warning - Companion :: ファイルオープン時の警告 + Companion :: ファイルを開くときの警告 - + Please save or close modified file(s) before deleting the active profile. 有効なプロファイルを削除する前に、変更したファイルを保存するか閉じてください。 - + Not possible to remove profile プロファイルを削除できません - + The default profile can not be removed. デフォルトプロファイルは削除できません。 - + Confirm Delete Profile プロファイル削除の確認 - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! 『%1』送信機プロファイルを削除してもよろしいですか?この操作を元に戻すことはできません! - + Please save or close all modified files before importing settings 設定をインポートする前に、変更したファイルをすべて保存するか閉じてください - + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> <html><p>%1とシミュレータの設定は、以前に保存したエクスポート(バックアップ)ファイルからインポート(復元)できます。これにより、現在の設定がファイル内の設定に置き換えられます。</p><p>現在の設定の自動バックアップが実行されます。ただし、現在の設定が便利な場合は、まず手動バックアップを作成することをお勧めします。</p><p>設定をインポートし最良の結果を得るには、<b>開いている%1ウィンドウをすべて閉じます。スタンドアロンのシミュレーターアプリケーションが実行されていません。</p><p>続行しますか?</p></html> - + Confirm Settings Import 設定のインポートの確認 - + Select %1: %1を選択: - + backup バックアップ - + Press the 'Ignore' button to continue anyway. とにかく続行するには『無視』ボタンを押してください。 - + The settings could not be imported. 設定をインポートできませんでした。 - + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> <html><p>新しい設定は次の場所からインポートされました。<br>%1.</p><p>%2は再初期化されます。</p><p>場合によっては閉じて再起動する必要があります。言語やアイコンテーマなどの設定が有効になる前に%2が発生しました。</p> - + <p>The previous settings were backed up to:<br> %1</p> <p>以前の設定は次の場所にバックアップされました:<br> %1</p> @@ -7010,164 +7175,164 @@ Do you wish to continue? 機体モデル実行ツールバーを表示 - + free bytes 空き容量 - + New category Translators do NOT use accent for this, this is the default category name on Horus. 新規カテゴリ - + Category index out of range. カテゴリインデックスが範囲外です。 - + Cannot delete the last category. 最後のカテゴリは削除できません。 - + This category is not empty! このカテゴリは空ではありません! - + Cannot insert model, last model in list would be deleted. 機体モデルを挿入できません。リストの最後のモデルが削除されます。 - + Cannot add model, could not find an available model slot. 機体モデルを追加できません。利用可能なモデルスロットが見つかりません。 - + New model Translators: do NOT use accents here, this is a default model name. 新規モデル - + Cannot paste model, out of available model slots. 利用可能なモデルスロットから、機体モデルを貼り付けることができません。 - + You are replacing an existing model, are you sure? 既存の機体モデルを差し替えます。よろしいですか? - + Do you want to overwrite radio general settings? 送信機の一般設定を上書きしますか? - + Delete %n selected model(s)? 選択した機体モデルを %n つ削除しますか? - + Delete %n selected category(ies)? 選択したカテゴリ(ies)を %n つ削除しますか? - + Cannot duplicate model, could not find an available model slot. 機体モデルを複製できません。利用なモデルスロットが見つかりません。 - + Editing model %1: 機体モデル %1 を編集しています: - + Save As 名前を付けて保存 - + %1 has been modified. Do you want to save your changes? %1 は変更されました。 変更を保存しますか? - + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> <p><b>現在選択されている送信機タイプ (%1) はファイル %3 (from %2) と互換性がありません。機体モデルと設定を変換する必要があります。</b></p> - + Do you wish to continue with the conversion? 変換を続けますか? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. ファイルを変換するには<i>適用</i>を、変換せずに閉じるには<i>閉じる</i>を選択します。 - + <b>The conversion generated some important messages, please review them below.</b> <b>変換によっていくつかの重要なメッセージが出力されました。下記の内容を確認してください。</b> - + Companion :: Conversion Result for %1 Companion :: %1 の変換結果 - + Unable to find Horus radio SD card! Horus送信機のSDカードが見つかりません! - + Models and Settings written 機体モデルと設定が書かれました - + Cannot write temporary file! 一時ファイルを書き込めません! - + Open backup Models and Settings file バックアップ機体モデルと設定ファイルを開く - + Unable to find file %1! ファイル %1 が見つかりません! - + Error opening file %1: %2. ファイル %1 を開くときにエラーが発生しました: %2. - + Error reading file %1: %2. ファイル %1 の読み取りエラーです: %2. - + Invalid binary backup File %1 無効なバイナリバックアップファイルです %1 @@ -7263,7 +7428,7 @@ p, li { white-space: pre-wrap; } Source - ソース + 選択元 @@ -7345,7 +7510,7 @@ Setting this value will cause a beep to be emmitted when this value is active. The source for the mixer - ミキサーのソース + ミキサー選択元 @@ -7575,14 +7740,14 @@ If blank then the mix is considered to be "ON" all the time. ModelData - + Model: 機体モデル: - + Throttle Source - スロットル ソース + スロットル値 @@ -7640,7 +7805,7 @@ If blank then the mix is considered to be "ON" all the time. Special Functions - 特殊機能 + スペシャルファンクション @@ -7651,787 +7816,787 @@ If blank then the mix is considered to be "ON" all the time. ModelPrinter - + Enable 有効 - + Disable 無効 - + True True - + False False - + Yes はい - + No いいえ - + Y Y - + N N - + ON ON - - - - + + + + OFF OFF - + bytes byte - + Exponential エクスポ―ネンシャル - + Extra Fine 極細 - + Fine 細かめ - + Medium 中間 - + Coarse 粗め - + Unknown 不明 - - + + Mode モード - - + + Channels チャンネル - - + + Frame length フレーム長 - + PPM delay PPM遅延 - - + + Polarity 極性 - + Protocol プロトコル - - - + + + Delay 遅延 - - + + Receiver 受信機 - + Radio protocol 送信機プロトコル - + Subtype サブタイプ - + Option value オプション値 - + Sub Type サブタイプ - + RF Output Power 送信出力 - - Telemetry - テレメトリー - - - + Master/Jack マスター/Jack - + Slave/Jack スレーブ/Jack - + Master/SBUS Module マスター/SBUSモジュール - + Master/CPPM Module マスター/CPPMモジュール - + Master/SBUS in battery compartment マスター/バッテリーカバー内SBUB - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - + Off OFF - - - - - - + + + + + + None なし - + Name 名称 - + Countdown カウントダウン - + Minute call 音声時報 - + Persistent 持続 - - - + + + FM%1 - + FM%1%2 - + FM%1+%2 - - + + Weight ウェイト - - + + Switch スイッチ - - + + NoTrim トリムなし - + Offset(%1) オフセット(%1) - + MULT! 複数! - + No DR/Expo DR/Expoなし - - + + Offset オフセット - + Slow ゆっくり - + Warn 警告 - + Disabled in all flight modes すべてのフライトモードを無効 - + Flight modes フライトモード - + Flight mode フライトモード - + All すべて - + Edge Edge:端 - + instant 簡易 - + Sticky Sticky:追尾 - + Timer タイマー - + missing 間違い - + Duration 期間 - - - + + + Custom カスタム - + Standard 標準 - + Extended Limits 拡張制限 - + Display Checklist ディスプレイ チェックリスト - + Global Functions - グローバル機能 + グローバルファンクション - + Manual 手動 - + Auto 自動 - + Failsafe Mode フェイルセーフモード - - + + Hold ホールド - + No Pulse パルスなし - + Not set セットなし - + No pulses パルスなし - + Silent 消音 - + Beeps ビープ - + Voice 音声 - + Haptic タッチパネル - + Flight フライト - + Manual reset 手動リセット - + Step ステップ - + Display ディスプレイ - + Extended 拡張 - + Never なし - + On Change 変更 - + Always 常に - - + + Source - ソース + 選択元 - + Trim idle only トリムアイドルのみ - + Warning 警告 - + Reversed リバース - + Tmr Tmr - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells セル - + Calculated 計算値 - + Add 追加 - + Average 平均 - - + + Min 最小 - - + + Max 最大 - + Multiply 乗算 - + Totalise 合計 - + Cell セル - + Consumption 消費 - + Distance 距離 - + Lowest より低く - + Cell %1 セル %1 - + Highest より高く - + Delta 差分 - + Formula 定式 - - + + Id - + Instance インスタンス - - - - + + + + Sensor センサー - - + + Sources - ソース + 選択元 - - + + GPS GPS - + Alt. Alt. - - + + Blades ブレード - + Multi. マルチ. - + F - + Inst - + Alt - + Unit - + Prec 精度 - + Ratio レシオ - + Multi マルチ - + A/Offset A/オフセット - + Filter フィルタ - + Persist 持続 - + Positive ノーマル - + Log ログ - + Numbers ナンバー - + Bars バー - + Script スクリプト - + Filename ファイル名 + + + Error: Unable to open or read file! + エラー: ファイルを開けないか、読み取れません! + ModelSelectionPage @@ -8499,178 +8664,195 @@ If blank then the mix is considered to be "ON" all the time. 送信出力 - + + Receiver 1 + 受信機 1 + + + + + + X + X + + + + Receiver 2 + 受信機 2 + + + + Receiver 3 + 受信機 3 + + + Bind on startup 起動時バインド - + Low Power 低パワー - + WARNING: changing RF Output Power needs RE-BIND 警告: 送信出力を変更するには再バインドが必要です - + Channels チャンネル - + PPM delay PPM 遅延 - + us - + PPM Frame Length PPM フレーム長 - + ms ms - + Antenna アンテナ - - Internal - 内部 - - - - Ext. + Int. - 外部.+内部. - - - + Output type 出力タイプ - + Open Drain - オープンドレイン + オープン ドレン - + Push Pull - プッシュプル + プッシュ プル - + Option value オプション値 - + Protocol プロトコル - + + Registration ID + 登録ID + + + Multi Radio Protocol マルチプロトコル - + Sub Type サブタイプ - + Failsafe Mode フェイルセーフモード - + Not set 設定なし - + Hold ホールド - + Custom カスタム - + No Pulses パルスなし - + Receiver 受信機 - + Trainer Mode トレーナーモード - + Master/Jack マスター/Jack - + Slave/Jack スレーブ/Jack - + Master/SBUS Module マスター/SBUSモジュール - + Master/CPPM Module マスター/CPPMモジュール - + Master/SBUS in battery compartment マスター/バッテリーカバー内SBUB - + WARNING: Requires non-certified firmware! 警告: 未認定のR9Mファームウェアが必要です! - + Failsafe Positions フェイルセーフポジション - + Show values in: 値の表示: - + % abbreviation for percent - + μs abbreviation for microseconds @@ -8679,85 +8861,85 @@ If blank then the mix is considered to be "ON" all the time. ModuleData - + Trainer Port トレーナーポート - + Internal Radio System 内部送信システム - + External Radio Module 外部送信モジュール - + Extra Radio System 追加送信システム - + Radio System 送信システム - + 10mW - 16CH - - + + 100mW - 16CH - + 500mW - 16CH - + Auto <= 1W - 16CH - - + + 25mW - 8CH - - + + 25mW - 16CH - + 200mW - 16CH (no telemetry) 200mW - 16CH (テレメトリーなし) - + 500mW - 16CH (no telemetry) 500mW - 16CH (テレメトリーなし) - + 100mW - 16CH (no telemetry) 100mW - 16CH (テレメトリーなし) - + Positive ノーマル - + Negative リバース @@ -8765,27 +8947,37 @@ If blank then the mix is considered to be "ON" all the time. ModulePanel - + Value - + Hold ホールド - + No Pulse パルスなし - - Ext. + Int - 外部+内部 + + Ask + 確認 - + + Internal + 内部 + + + + Internal + External + 内部 + 外部 + + + External 外部 @@ -8793,436 +8985,451 @@ If blank then the mix is considered to be "ON" all the time. MultiModelPrinter - + General 一般 - - - + + + Name 名称 - + EEprom Size EEPROMサイズ - + Model Image モデルイメージ - + Throttle スロットル - + Trims トリム - + Center Beep センター ビープ - + Switch Warnings スイッチ警告 - + Pot Warnings ダイヤル警告 - + Other その他 - + Timers タイマー - + Time 時間 - - + + Switch スイッチ - + Countdown カウントダウン - + Min.call 音声時報 - + Persist 持続 - + Modules モジュール - + Trainer port トレーナーポート - + Helicopter ヘリコプター - + Swash Swash - - + + Type タイプ - + Ring リング - + Input 入力 - + Weight ウェイト - + Long. cyc 長周期 - + Lateral cyc 側面周期 - + Collective コレクティブ - + Flight modes フライトモード - - + + Flight mode フライトモード - + F.In F.In - + F.Out F.Out - + Global vars グローバル変数 - - + + GV%1 GV%1 - + RE%1 RE%1 - - + + Unit ユニット - + Prec 精度 - - + + Min 最小 - - + + Max 最大 - + Popup ポップアップ - + Outputs 出力 - + Channel チャンネル - + Subtrim サブトリム - + Direct ダイレクト - + Curve カーブ - + PPM PPM - + Linear 線形 - + Global Variables グローバル変数 - + Inputs 入力 - + Mixers ミキサー - + Curves カーブ - + L%1 L%1 - + Logical Switches 論理スイッチ - + SF%1 SF%1 - + Special Functions - 特殊機能 + スペシャルファンクション - + Telemetry テレメトリー - + Analogs アナログ - + Scale スケール - + Offset オフセット - + Protocol プロトコル - + RSSI Alarms RSSIアラーム - + Low - + Critical クリティカル - + Telemetry audio テレメトリー音源 - + Altimetry 高度計 - - + + Vario source - バリオ ソース値 + バリオ 元値 - + Vario limits > バリオ リミット値 > - + Sink max Sink 最大 - + Sink min Sink 最小 - + Climb min クライム 最小 - + Climb max クライム 最大 - + Center silent センター サイレント - + Top Bar トップバー - - + + Volts source - ボルトソース + ボルト 元値 - + Altitude source - 高度ソース + 高度 元値 - + Various その他の設定 - + Serial protocol シリアル プロトコル - + FAS offset FAS オフセット - + mAh count mAh カウント - + Persistent mAh 持続 mAh - + Current source - 現在のソース + 現在の元値 - + Blades ブレード - + Parameters パラメータ - + Telemetry Sensors テレメトリーセンサー - + Telemetry Screens テレメトリースクリーン + + + GF%1 + GF%1 + + + + Global Functions + グローバルファンクション + + + + Checklist + チェックリスト + Multiprotocols @@ -9263,11 +9470,16 @@ If blank then the mix is considered to be "ON" all the time. + Fixed ID value + 固定ID値 + + + DEFAULT 初期値 - + Custom - proto %1) カスタム - プロトコル%1) @@ -9298,22 +9510,22 @@ If blank then the mix is considered to be "ON" all the time. OpenTxEepromInterface - + Unknown error 不明のエラー - + ... plus %1 errors ...追加 %1 エラー - + Cannot write radio settings 送信機設定を書き込めません - + Cannot write model %1 機体モデル %1 を書き込めません @@ -9613,36 +9825,43 @@ If blank then the mix is considered to be "ON" all the time. RadioOutputsWidget + Form フォーム + View: ビュー: + Logical Switches 論理スイッチ + Global Variables グローバル変数 + Channel Outputs チャンネルオプション + Mix Outputs ミキサー出力 + L o g @@ -9655,6 +9874,7 @@ W + G l o @@ -9667,6 +9887,7 @@ l + C h a @@ -9682,6 +9903,7 @@ H + M i x @@ -9693,11 +9915,21 @@ X 出 力 + + + FM%1 + + + + + GV%1 + GV%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. モーメンタリースイッチをラッチ/ラッチオフします。 @@ -10380,126 +10612,136 @@ X SensorData - - + + V V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + minutes - + seconds - + TELE + + + Internal + 内部 + + + + External + 外部 + Setup @@ -10586,7 +10828,7 @@ X Global Functions - グローバル機能 + グローバルファンクション @@ -10650,7 +10892,7 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi Throttle Source - スロットル + スロットル値 @@ -10676,15 +10918,25 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi SetupPanel - + Timer %1 タイマー %1 - + THR + + + Profile Settings + プロファイル設定 + + + + SD structure path not specified or invalid + SDカード保存先パスが指定されていないか無効です + SimpleTailPage @@ -10959,7 +11211,7 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi Data source type to use (applicable to Horus only). One of: - 使用するデータソースタイプ(Horusのみに適用)の一つ: + 使用するデータ元タイプ(Horusのみに適用)の一つ: @@ -10969,7 +11221,7 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi data-source - データソース + データ元 @@ -10981,7 +11233,7 @@ NOTE: any existing EEPROM data incompatible with the selected radio type may be [data-source] - [データソース] + [データ元] @@ -10991,7 +11243,7 @@ NOTE: any existing EEPROM data incompatible with the selected radio type may be Unrecognized startup data source type: %1 - 認識されないスタートアップデータソースタイプ: %1 + 認識されないスタートアップデータ元タイプ: %1 @@ -11031,151 +11283,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator OpenTX シミュレータ + View ビュー + Radio Window 送信機ウィンドウ + Reload... 再読み込み... + Tools ツール + Toolbar ツールバー + Reload Lua Scripts Luaスクリプトを再読み込み + Reload the Lua environment on the simulated radio. 送信機シミュレータでLua環境を再読み込みします。 + F7 + Reload Radio Data 送信機データを再読み込み + Reload all radio data without restarting the simulator. シミュレータを再起動せずにすべての送信機データを再読み込みします。 + F9 + Key Mapping キーマッピング + Show keyboard maping reference. 参照するキーマッピングを表示します。 + F1 + Joystick Settings スティック設定 + Open joystick configuration settings dialog. スティック設定ダイアログを開きます。 + F3 + LCD Screenshot 液晶 画面キャプチャ + Save a screenshot of the current simulated LCD screen. 現在シミュレートされている液晶画面のキャプチャを保存します。 + F8 + Dock In Main Window メインウィンドウに結合 + Show the radio in the main window or as a separate "floating" window. メインウィンドウまたは別の『フローティング』ウィンドウとして送信機を表示します。 + Menu Bar メニューバー + Show or hide the top menu bar. トップメニューバーを表示または非表示にします。 + Alt+M + Constrain Width 幅の制限 + Set radio widget width to be a fixed size. 送信機ウィジェットの幅を固定サイズに設定します。 + Constrain Height 高さ制限 + Set radio widget height to be a fixed size. 送信機ウィジェットの高さを固定サイズに設定します。 @@ -11190,66 +11472,66 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs 送信機出力 - + F2 - + Telemetry Simulator テレメトリー シミュレータ - + F4 - + Trainer Simulator トレーナー シミュレータ - + F5 - + Debug Output デバッグ出力 - + F6 - + <b>Simulator Controls:</b> <b>シミュレータ コントロール:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). 注: 各テーブル行のHTMLレイアウトと一致する必要があります (キーテンプレート)。 <tr><th>キー/マウス</th><th>Action</th></tr> - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. 注: ヘルプテキストテーブルのヘッダのHTMLレイアウトと一致する必要があります。 <tr><td><kbd>%1</kbd></td><td>%2</td></tr> - + Simulator Help シミュレータ ヘルプ @@ -11258,21 +11540,25 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options OpenTX シミュレータ - スタートアップオプション + Simulator Startup Options: シミュレータ スタートアップオプション: + Radio Profile: 送信機プロファイル: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. 既存の送信機プロファイルはこちらに表示されます。<br /> @@ -11280,11 +11566,13 @@ Companionアプリケーションを使用してプロファイルを作成ま + Radio Type: 送信機タイプ: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. 既存の送信機シミュレータをここに示します。<br /> @@ -11292,26 +11580,31 @@ The radio type specified in the selected profile is used by default. + Data Source: - データ種別: + データ元: + Data File: データファイル: + Data Folder: データフォルダ: + SD Image Path: SDイメージパス: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! 使用する送信機データ(.bin / .eeprom / .otx)画像ファイルです。必要に応じて、デフォルト画像を含む新しいファイルが作成されます。<br /> @@ -11319,6 +11612,7 @@ The radio type specified in the selected profile is used by default. + Select data file... データファイル選択... @@ -11326,11 +11620,15 @@ The radio type specified in the selected profile is used by default. + + + ... ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. 使用する送信機および機体モデルフォルダを含むディレクトリです。<br /> @@ -11338,11 +11636,13 @@ New folder(s) with default radio/model will be created here if necessary. + Select data folder... データフォルダ選択... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. 使用するSDカードイメージを含むディレクトリです。<br/> @@ -11350,26 +11650,31 @@ The default is configured in the chosen Radio Profile. + Select SD card image folder... SDカードイメージフォルダ選択... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. - シミュレータを起動するデータソース (ファイル/フォルダ/ SDカード) を選択します。 + シミュレータを起動するデータ元 (ファイル/フォルダ/ SDカード) を選択します。 + File ファイル + Folder フォルダ + SD Path SDパス @@ -11398,71 +11703,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Companion シミュレータ - + Radio Simulator (%1) 送信機シミュレータ (%1) - + Could not determine startup data source. - 起動データソースを特定できませんでした。 + 起動データ元を特定できませんでした。 - + Could not load data, possibly wrong format. データをロードできません、フォーマットが間違っている可能性があります。 - + Data Load Error データロード エラー - + Invalid startup data provided. Plese specify a proper file/path. 無効なスタートアップデータが提供されました。正しいファイル/パスを指定してください。 - + Simulator Startup Error シミュレータ スタートアップ エラー - + Error saving data: could open file for writing: '%1' データ保存エラー: 書き込み用にファイルを開くことができました: 「%1」 - + Error saving data: could not get data from simulator interface. データ保存エラー: シミュレータのインターフェイスからデータを取得できませんでした。 - + An unexpected error occurred while attempting to save radio data to file '%1'. 送信機データをファイル「%1」に保存しようとしたときに予期せぬエラーが発生しました。 - + Data Save Error データ保存 エラー - + Cannot open joystick, joystick disabled スティックが接続不可、もしくはスティックが無効です - + Radio firmware error: %1 送信機 ファームウェア エラー: %1 - + - Flight Mode %1 (#%2) - フライトモード %1 (#%2) @@ -11687,7 +11993,7 @@ Error: %2 Too many errors, giving up. -多大なエラーです、ギブアップします。 +エラーが多すぎるため、ギブアップします。 @@ -11732,7 +12038,7 @@ Too many errors, giving up. Could not open source file '%1': %2 - ソースファイルを開けませんでした 「%1」: %2 + 選択元のファイルを開けませんでした 「%1」: %2 @@ -11814,181 +12120,186 @@ Too many errors, giving up. プロトコル - - + + ---- - - + + Yellow 黄色 - - + + Orange オレンジ - - + + Red 赤色 - + Alarm 1 アラーム 1 - + Alarm 2 アラーム 2 - + RSSI RSSI - + Disable telemetry audio warnings テレメトリー音声警告を無効 - + + Source + 信号元 + + + A1 - + A2 - + Sink Max Sink 最大 - + Climb Max クライム 最大 - + Sink Min Sink 最小 - + Climb Min クライム 最小 - + Center Silent センター サイレント - + Vario limits バリオ リミット値 - + Vario source - バリオ ソース値 + バリオ 元値 - + Altimetry 高度計 - + Altitude source - 高度 ソース値 + 高度 元値 - + Volts source - ボルト ソース値 + ボルト 元値 - + Top Bar トップバー - + Volt source - ボルト ソース値 + ボルト 元値 - + Current source - 現在のソース値 + 現在の元値 - + Blades ブレード - + mAh count mAh カウント - + mAh - + A - + FAS Offset FAS オフセット - + Persistent mAh 持続 mAh - + Various その他の設定 - + Serial Protocol シリアルプロトコル - + None なし - + FrSky Sensor Hub FrSky センサーハブ - + Sensors センサー - + Disable multi sensor handling マルチセンサーハンドリング無効 @@ -12122,7 +12433,7 @@ Too many errors, giving up. Source - ソース + 選択元 @@ -12158,99 +12469,104 @@ Too many errors, giving up. TelemetryPanel - + Telemetry screen %1 テレメトリースクリーン %1 - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + + Source + 信号元 + + + Low Alarm 低アラーム - + Critical Alarm クリティカルアラーム - + Winged Shadow How High Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (サポートなし) - + Alti - + Alti+ - + VSpeed - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells セル - + --- --- @@ -12263,269 +12579,279 @@ Too many errors, giving up. フォーム - + Custom カスタム - + Calculated 計算値 - + Id ID - + Instance インスタンス - + + Rx + 受信 + + + + Mod. + モジュール. + + + Add 追加 - + Average 平均 - + Min 最小 - + Max 最大 - + Multiply 乗算 - + Totalize 合計 - + Cell セル - + Consumption 消費 - + Dist 距離 - + Cells Sensor : セル センサー : - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : GPS センサー : - + Alt. Sensor : 高度 センサー : - + Sensor : センサー : - + Raw (-) Raw (-) - + V V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + RPM - + g - + ° - + Rad - + mL - + US fl.Oz. - + Precision 精度 - + Ratio レシオ - + Blades ブレード - + Offset オフセット - + Multiplier 乗算 - + Auto Offset 自動オフセット - + Filter フィルタ - + Persistent 持続 - + Positive ノーマル - + Logs ログ @@ -12557,61 +12883,73 @@ Too many errors, giving up. TelemetrySimulator + Telemetry Simulator テレメトリー シミュレータ + When enabled, sends any non-blank values as simulated telemetry data. 有効にすると、空白以外の値をテレメトリーデータとしてシミュレートします。 + Simulate シミュレート + Replay SD Log File SDログファイルを再生 + Replay rate 再生レート + Load ロード + |> + <| + > + <- + X + Row # Timestamp Row # @@ -12619,26 +12957,31 @@ Timestamp + 1/5x 1/5x + 5x 5x + No Log File Currently Loaded 現在ロードされているログファイルなし + RAS 相対アンテナ + A2 @@ -12646,21 +12989,27 @@ Timestamp + + + V / ratio V/レシオ + Db + RxBt 受信機Batt + A1 @@ -12678,105 +13027,141 @@ Timestamp + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> + Tmp1 温度1 + A3 + A4 + RSSI RSSI + Tmp2 温度2 + + RPM RPM + Fuel 燃料 + + °C + ml + % + + Meters メートル + Alt 高度 + VSpd 昇降計 + m/s + Fuel Qty 燃料油量 + + km/h + VFAS + Hdg ヘッディング + ASpd 対気速度 @@ -12784,99 +13169,121 @@ Timestamp + + + G + GPS GPS + Lat,Lon (dec.deg.) + AccX 加速度X + dd-MM-yyyy hh:mm:ss + Date 日時 + Amps アンペア + AccZ 加速度Z + GAlt GPS高度 + + Volts ボルト + Cels セル + Curr 電流計 + AccY 加速度Y + GSpd GPS速度 + Degrees 角度(°) + Setting RSSI to zero simulates telemetry and radio link loss. RSSIをゼロに設定すると、テレメトリーと送信機リンク損失がシミュレートされます。 + Set RSSI to zero when paused. 一時停止したらRSSIをゼロに設定します。 + Stop sending telemetry data when the Telemetry Simulator window is hidden. - テレメトリーシミュレーターウィンドウが非表示になったらテレメトリーデータの送信を停止します。 + テレメトリーシミュレータ ウィンドウが非表示になったらテレメトリーデータの送信を停止します。 + Pause simulation when hidden. 非表示になったらシミュレーションを一時停止します。 @@ -12930,12 +13337,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 タイマー %1 @@ -12968,37 +13375,37 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ TimerPanel - + Silent 消音 - + Beeps ビープ - + Voice 音声 - + Haptic タッチパネル - + Not persistent 持続なし - + Persistent (flight) 持続 (フライト) - + Persistent (manual reset) 持続 (手動リセット) @@ -13130,6 +13537,7 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ TrainerSimulator + Trainer simulator トレーナー シミュレータ @@ -13137,29 +13545,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ TreeModel - + Index インデックス - + Name 名称 - + Size サイズ - + + RX # + 受信 # + + + Models Translators do NOT use accent for this, this is the default category name on Horus. 翻訳者: ここではアクセントは使用しないでください。これはHorusのデフォルトのカテゴリ名です。 機体モデル - + Model %1 Translators: do NOT use accents here, this is a default model name. 翻訳者: ここではアクセントは使用しないでください。これはデフォルトのモデル名です。 @@ -13757,76 +14170,91 @@ v4.1ボード用m2560 joystickDialog + Configure Joystick スティックの設定 + Ch2 + Ch1 + Ch4 + Ch6 + Ch3 + Ch5 + Ch7 + Ch8 + Instructions インストラクション + Enable 有効 + Cancel キャンセル + Back 戻る + Start スタート + Ok OK diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index ad7313770..06a4401c9 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -57,6 +57,38 @@ Drugi kanał hamulców: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -70,32 +102,32 @@ Profil radia - + Default Channel Order Bazowa kolejność kanałów - + Build Options Opcje kompilacji - + Menu Language Język Menu - + Default Stick Mode Bazowy mod drążków - + Select Image Wybierz obrazek - + Mode selection: Mode 1: @@ -118,528 +150,526 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mod 1 (SK.SW.Gaz.Lot) - + Mode 2 (RUD THR ELE AIL) Mod 2 (SK.Gaz.SW.Lot) - + Mode 3 (AIL ELE THR RUD) Mod 2 (Lot.SW.Gaz.SK) - + Mode 4 (AIL THR ELE RUD) Mod 4 (Lot.Gaz.SW.SK) - + Splash Screen Ekran startowy - - + + The profile specific folder, if set, will override general Backup folder Katalog profili, jeśli ustawiony zmieni główny katalog backupów - + Backup folder Katalog Backupów - + If set it will override the application general setting Jeśli ustawione, nadpisze główne ustawienia aplikacji - + if set, will override general backup enable Jeśli ustawione, nadpisze główne ustawienia backupów - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kolejność kanałów</p><p><br/></p><p>Definiuje kolejność standardowych mikserów dla nowego modelu.</p></body></html> - + R E T A K W G L - + R E A T K W L G - + R T E A K G W L - + R T A E K G L W - + R A E T K L W G - + R A T E - + E R T A W K G L - + E R A T W K L G - + E T R A W G K L - + E T A R W G L K - + E A R T W L K G - + E A T R W L G K - + T R E A G K W L - + T R A E G K L W - + T E R A G W K L - + T E A R G W L K - + T A R E G L K W - + T A E R G L W K - + A R E T L K W G - + A R T E L R G W - + A E R T L W K G - + A E T R L W G K - + A T R E L G K W - + A T E R L G W K - - - - - - + + + + + + Select Folder Wybierz Folder - + Select Executable Wybierz EXE - - Simulator Volume Gain - Głośność symulatora - - - - Profile Name - Nazwa profilu - - - - Clear Image - Wyczyść obrazek - - - - Append version number to FW file name - Dodaj numer Firmware do nazwy pliku - - - - Offer to write FW to Tx after download - Zaproponuj zapisanie Firmware do radia po pobraniu - - - - Radio Type - Typ Radia - - - - Set voice language. -May be different from firmware language - Ustaw język komunikatów głosowych. -Może być różny od języka firmware - - - - Other Settings - Inne ustawienia - - - - General Settings - Główne ustawienia - - - - SD Structure path - Struktura karty SD - - - - Voice Language - Język komunikatów - - - - Application Settings - Ustawienia Aplikacji - - - - Show splash screen when Companion starts - Pokaż ekran startowy przy uruchamianiu Companion - - - - Automatic check for Companion updates - Automatycznie sprawdź aktualizacje Companion - - - - - Enable automatic backup before writing firmware - Uaktywnij automatyczny backup przed zapisem firmware - - - - Automatic check for OpenTX firmware updates - Automatycznie sprawdź aktualizacje firmware OpenTX - - - - Splash Screen Library - Biblioteka ekranów startowych - - - - Google Earth Executable - Plik wykonywalny Google Earth - - - - Only show user splash images - Pokaż tylko ekrany startowe użytkownika - - - - Show user and companion splash images - Pokaż ekrany startowe użytkownika i Companion - - - - User Splash Screens - Użyj ekranu startowego - - - - Automatic Backup Folder - Automatyczny Katalog Backupów - - - - Simulator Settings - Ustawienia Symulatora - - - - Simulator BackLight - Podświetlenie symulatora - - - - Enable - Aktywuj - - - - Action on New Model - Akcje na nowym modelu - - - - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - - - - Use releases (stable) + + Release channel - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - - most recently used files - - - - - Startup Settings - - - - - Remember - - - - - Output Logs Folder - - - - - Remove empty model slots when deleting models (only applies for radios w/out categories) - Usuń puste sloty modeli gry kasujesz modele (dziala tylko z radiem bez kategori) - - - - Use model wizard - Użyj kreatora modelu - - - - Open model editor - Otwórz edytor modelu - - - - Just create the model - TYlko utwórz model - - - - Debug Output Logging + + Releases (stable) + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + Simulator Volume Gain + Głośność symulatora + + + + Profile Name + Nazwa profilu + + + + Clear Image + Wyczyść obrazek + + + + Append version number to FW file name + Dodaj numer Firmware do nazwy pliku + + + + Offer to write FW to Tx after download + Zaproponuj zapisanie Firmware do radia po pobraniu + + + + Radio Type + Typ Radia + + + + Other Settings + Inne ustawienia + + + + General Settings + Główne ustawienia + + + + SD Structure path + Struktura karty SD + + + + Application Settings + Ustawienia Aplikacji + + + + Show splash screen when Companion starts + Pokaż ekran startowy przy uruchamianiu Companion + + + + Automatic check for Companion updates + Automatycznie sprawdź aktualizacje Companion + + + + + Enable automatic backup before writing firmware + Uaktywnij automatyczny backup przed zapisem firmware + + + + Automatic check for OpenTX firmware updates + Automatycznie sprawdź aktualizacje firmware OpenTX + + + + Splash Screen Library + Biblioteka ekranów startowych + + + + Google Earth Executable + Plik wykonywalny Google Earth + + + + Only show user splash images + Pokaż tylko ekrany startowe użytkownika + + + + Show user and companion splash images + Pokaż ekrany startowe użytkownika i Companion + + + + User Splash Screens + Użyj ekranu startowego + + + + Automatic Backup Folder + Automatyczny Katalog Backupów + + + + Simulator Settings + Ustawienia Symulatora + + + + Simulator BackLight + Podświetlenie symulatora + + + + Enable + Aktywuj + + + + Action on New Model + Akcje na nowym modelu + + + + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> + + + + most recently used files + + + + + Startup Settings + + + + + Remember + + + + + Output Logs Folder + + + + + Remove empty model slots when deleting models (only applies for radios w/out categories) + Usuń puste sloty modeli gry kasujesz modele (dziala tylko z radiem bez kategori) + + + + Use model wizard + Użyj kreatora modelu + + + + Open model editor + Otwórz edytor modelu + + + + Just create the model + TYlko utwórz model + + + + Debug Output Logging + + + + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Blue Niebieskie - + Green Zielone - + Red Czerwone - + Orange Pomarańczowe - + Yellow Żółte - + Screenshot capture folder - + Joystick Joystick - + Calibrate Kalibracja - + Only capture to clipboard Zapisz tylko do schowka - + Remember simulator switch values Zapamiętaj ustawienia przełączników w symulatorze - + My Radio Moje Radio - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder Katalog zrzutów - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found Brak joysticka - + EMPTY: No radio settings stored in profile PUSTY:Brak ustawień radia w profilu - + AVAILABLE: Radio settings of unknown age DOSTĘPNY:Nieznany wiek ustawień radia - + AVAILABLE: Radio settings stored %1 DOSTĘPNY:Zapamiętane ustawienia radia %1 - + Select your library folder Wybierz katalog biblioteki - - + + Select your Models and Settings backup folder Wybierz folder do backupowania Modeli i Ustawień - + Select a folder for application logs - + Select Google Earth executable Wybierz wykonywalny plik Google Earth - + Select the folder replicating your SD structure Wybierz folder do zreplikowania struktury Twojej karty SD - + Open Image to load Otwórz obrazek do załadowania - + Images (%1) Obrazki (%1) @@ -652,26 +682,26 @@ Może być różny od języka firmware Błąd odczytu %1: %2 - + Cannot save EEPROM Nie mogę zapisać EEPROMu - + Cannot open file %1: %2. Nie mogę otwprzyć pliku %1: %2. - + Error writing file %1: %2. Błąd zapisu pliku %1: %2. - + Invalid binary EEPROM file %1 Nieprawidłowy binarny plik EEPROMu %1 @@ -679,57 +709,58 @@ Może być różny od języka firmware Boards - + Left Horizontal Lewy poziomy - + Left Vertical Lewy pionowy - + Right Vertical Prawy pionowy - + Right Horizontal Prawy poziomy - + Aux. 1 Dodatk. 1 - + Aux. 2 Dodatk. 2 - + + Unknown - + Nieznany - + Rud SK - + Ele SW - + Thr Gaz - + Ail Lotki @@ -778,82 +809,82 @@ Może być różny od języka firmware Channels - + Name Nazwa - + Min Min - + Max Maks - + Curve Krzywa - + CH%1 Kan %1 - + Subtrim Subtrim - + Direction Kierunek - + PPM Center Środek PPM - + Linear Subtrim Liniowy Subtrim - + Popup menu available - + --- --- - + INV Odwr - + &Copy &Kopiuj - + &Cut W&ytnij - + &Paste - + &Delete &Wykasuj @@ -866,27 +897,32 @@ Może być różny od języka firmware - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -941,85 +977,193 @@ Może być różny od języka firmware %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information Informacja - + Warning Ostrzeżenie - + Error Błąd - - Please Confirm - + + Application Settings + Ustawienia Aplikacji - + files Pliki - + Radio and Models settings Ustawienia Radia i Modeli - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available Nie jest dostępny symulator dla tego firmware - + Uknown error during Simulator startup. Nieznany błąd w trakcie startu Symulatora. - + Simulator Error Błąd Symulatora - + Data Load Error - + Błąd odczytu danych - + Error occurred while starting simulator. Błąd wystąpił w trakcie startu Symulatora. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1034,37 +1178,42 @@ Do you want to import them? Aby porównaćmodele przeciąnij i upuść je gdziekowiek do tego okna. - + Close Zamknij - + + Style + + + + Print Drukuj - + Print to file Drukuj do pliku - + Unnamed Model %1 Nienazwany Model %1 - + Click to remove this model. Klinij by usunąć ten model. - + Print Document Drukuj dokument - + Select PDF output file Wybierz plik docelowy PDF @@ -1154,22 +1303,22 @@ Do you want to import them? CurveGroup - + Diff Różnicowość - + Expo Expo - + Func Funkcja - + Curve Krzywa @@ -1221,7 +1370,7 @@ Do you want to import them? - + Curve type Typy Krzywej @@ -1231,47 +1380,52 @@ Do you want to import them? Kreator Krzywych - + Y at X=0 Y dla X=0 - + + Point size + + + + Y at X=100 Y dla X=100 - + Both Obie - + x>0 x>0 - + x<0 x<0 - + Apply Zatwierdź - + Side Strona - + Y at X=-100 Y dla X=-100 - + Coefficient Współczynnik @@ -1281,72 +1435,77 @@ Do you want to import them? Nazwa krzywej - + Curve %1 Krzywa %1 - + + Popup menu available + + + + %1 points %1 punktowa - + Linear Liniowa - + Single Expo Pojedyncze expo (wykładnicza) - + Symmetrical f(x)=-f(-x) Symetryczna (nieparzysta) f(x)=-f(-x) - + Symmetrical f(x)=f(-x) Symetryczna (parzysta) f(x)=f(-x) - + Copy Skopiuj - + Paste Wklej - + Clear Wyczyść - + Clear all curves Wyczyść wszystkie krzywe - + Are you sure you want to reset curve %1? Czy na pewno chcesz wyczyścić krzywą %1? - + Are you sure you want to reset all curves? Czy na pewno chcesz wyczyścić krzywe? - + Editing curve %1 Edycja krzywej k%1 - + Not enough free points in EEPROM to store the curve. Za mało wolnych punktów w eepromie by zapamiętać krzywą. @@ -1354,244 +1513,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF SF - + Override %1 Nadpisanie %1 - + Trainer Trener - + Trainer RUD Trener - SK - + Trainer ELE Trener - SW - + Trainer THR Trener - Gaz - + Trainer AIL Trener - Lotki - + Instant Trim Natychmiastowe trymowanie - + Play Sound Odtwórz dźwięk - + Haptic Wibracje - + Reset - + Reset - + Set Timer %1 Ustaw Timer %1 - + Vario Wariometr - + Play Track Odtwórz ścieżkę - + Play Both Odtwórz oba - + Play Value Odtwórz wartość - + Play Script Odtwórz Skrypt - + SD Logs Logi SD - + Volume Głośność - + Backlight Podświetlenie - + Screenshot Zrzut ekranu - + Background Music Muzyka tła - + Background Music Pause Muzyka tła - pauza - + Adjust %1 - + SetFailsafe Int. Module Ustaw FailSafe Wew. Modułu - + SetFailsafe Ext. Module Ustaw FailSafe Zew. Modułu - + RangeCheck Int. Module Sprawdzenie Zasiegu Wew. Modułu - + RangeCheck Ext. Module Sprawdzenie Zasiegu Zew. Modułu - + Bind Int. Module Bindowanie Wew. Modułu - + Bind Ext. Module Bindowanie Zew. Modułu - + Timer1 Timer1 - + Timer2 Timer2 - + Timer3 Timer3 - + Flight Lot - + Telemetry Telemetria - + Rotary Encoder Pokrętło - + REa Pokrętło :a - + REb Pokrętło :b - + s s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>Niespójny parametr</b></font> - + Value Wartość - - Decr: - Zmniejsz: - - - - Incr: - Zwiększ: - - - + played once, not during startup Odtworzone raz, nie w czasie startu - + repeat(%1s) powtórz(%1s) - + DISABLED Wyłączone - + CFN @@ -1619,62 +1768,73 @@ Do you want to import them? Włączone - + + Popup menu available + + + + SF%1 SF%1 - + GF%1 FG%1 - + ON Włącz - + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + + Unable to find or open sound file: +%1 + + + + Value Wartość - + Source Źródło - + GVAR Zmienna - + Increment Zwiększanie - - Unable to find sound file %1! - Nie mogę odnaleźć pliku dźwiękowego %1! - - - + &Delete &Wykasuj - + &Copy &Kopiuj - + &Cut W&ytnij - + &Paste W&klej @@ -1837,69 +1997,53 @@ Do you want to import them? DataField - + Conversion error on field %1 Błąd konwersji pola %1 - + Switch Przełącznik - + Switch Przełącznik - + cannot be exported on this board! nie może być wyeksportowana na tę platformę! - + Source Źródło - + Source %1 cannot be exported on this board! Źródło %1 nie może być wyeksportowane na tę płytę! - + OpenTX only accepts %1 points in all curves OpenTX zezwala tylko na %1 punktów we wszystkich krzywych - + OpenTx only accepts %1 points in all curves OpenTX zezwala tylko na %1 punktów we wszystkich krzywych - - - - - - + + OpenTX on this board doesn't accept this function OpenTX na tej platformie nie dopuszcza tej funkcji - - OpenTX doesn't accept this telemetry protocol - OpenTX nie obsługuje tego protokołu telemetrii - - - - OpenTX doesn't allow this number of channels - OpenTX nie obsługuje tej ilości kanałów - - - - - + OpenTX doesn't accept this radio protocol OpenTX nie obsługuje tego protokołu radiowego @@ -1908,21 +2052,25 @@ Do you want to import them? DebugOutput + Debug Output Wyjście debugera + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> <html><hrad/><body><p>Włącz lub wyłącz filtr. Jeśli przycisk nie będzie aktywny to znaczy że jest błąd składni we wprowadzonym wyrażeniu regularnym.</p></body></html> + Filter: Filtr: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> <html><head/><body><p>Wpisz teks filtru tutaj. Kliknij przycisk. pomoc/info w celu uzyskania szczegółów użycia filtra.</p><p> @@ -1930,51 +2078,61 @@ W celu <b>usunięcia filtru</b> z listy, najpierw wybierz go, a nast + Buffer: Bufor: + Number of lines to keep in display. Ilość linii trzymanej na wyświetlaczu. + Filter &Help &Pomoc Filtra + Show information about using the filter. Pokaż informacje jak uzywać filtra. + Word &Wrap Podział &Słowa + Toggle word wrapping on/off. Przełącz dzielenie słowa on/off. + &Clear &Wyczyść + Clear the output window of all text. Wyczyść tekst z okna. + Enable &Filter Włącz &Filtr + Turn the filter on/off. Przełącz filtr on/off. @@ -1989,6 +2147,24 @@ W celu <b>usunięcia filtru</b> z listy, najpierw wybierz go, a nast Debug Konsola Filtr Help + + DownloadDialog + + + Downloading: + Pobierz: + + + + Unable to save the file %1: %2. + Nie mogę zapisać pliku %1: %2. + + + + Download failed: %1. + Pobieranie nieudane: %1. + + EEPROMInterface @@ -2063,23 +2239,18 @@ W celu <b>usunięcia filtru</b> z listy, najpierw wybierz go, a nast - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - Twoje radio prawdopodobnie używa złego firmware, wielkość eepromu to 4096 ale tylko pierwsze 2048 jest użyte - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - Ostrzeżenia! - EepeFormat @@ -2238,8 +2409,8 @@ Jeśli puste linia jest uznawana za aktywną cały czas. - Click to access popup menu - Kliknij by uzyskać wyskakujące mene + Popup menu available + @@ -2338,517 +2509,505 @@ Jeśli puste linia jest uznawana za aktywną cały czas. Kanał przechylenia: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + Zamknij + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + Start + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us Wartości kanałów wyświetlone w us - + No OverrideCH functions available Brak dostępnych Funkcji Nadpisania Kanału - + Possibility to enable FAI MODE (no telemetry) at field Umożliwienie uaktywniania trybu FAI(brak telemetrii) w menu na lotnisku - + FAI MODE (no telemetry) always enabled Tryb FAI (brak telemetrii) zawsze aktywny - - Support for the DIY-Multiprotocol-TX-Module - Wsparcie dla wieloprotokołowego modułu nadawczego DIY - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 Usuwa wsparcie dla protokołu D8 FrSky, który jest nielegany w UE w radiach spradawanych po 01-01-2015 - + + Disable HELI menu and cyclic mix support Dezaktywowane menu Heli i wsparcie dla cyklicznych mikserów - + + Disable Global variables dezaktywowane zmienne globalne - + + Enable Lua custom scripts screen - - Enable Lua compiler - Uaktywnia kompilator LUA - - - - - - - - - - - - + Use alternative SQT5 font Użyj alternatywnego fontu SQT5 - - ST7565P LCD or compatible - LCD ST7565P lub kompatybilny - - - - ST7565R LCD or compatible - LCD ST7565R lub kompatybilny - - - - ERC12864FSF LCD - LCD: ERC12864FSF - - - - ST7920 LCD - LCD: ST7920 - - - - KS108 LCD - KS108 LCD - - - - WTV20 voice module - Moduł dźwiękowy WT20 - - - - JQ6500 voice module - Moduł dźwiękowy JQ6500 - - - - - Support for frsky telemetry mod - Wsparcie dla telemetrii FrSky - - - - Support for telemetry easy board - Wsparcie dla platformy TelemetrEZ - - - - - Support for jeti telemetry mod - Wsparcie telemetrii JETI - - - - - Support for receiving ardupilot data - Wsparcie dla otrzymywania danych ardupilota - - - - - Support for receiving NMEA data - Wsparcie dla otrzymywania danych NMEA - - - - - Support for MAVLINK devices - Wsparcie urządzeń MAVLINK - - - - Rotary Encoder use in menus navigation - Użycie pokrętła do nawigacji w menu - - - - - - - - - + Pots use in menus navigation Użycie potencjometrów do nawigacji w menu - - - - - - Support for DSM2 modules - wsparcie modułu DSM2 - - - - Support for DSM2 modules using ppm instead of true serial - Wsparcie modułu DSM2 przez użycie PPM zamiast prawdziwego szeregowego - - - + FrSky Taranis X9D+ FrSky Taranis X9D+ - - - + Support for PPM internal module hack Wsparcie dla shakowania wewnętrznego modułu PPM - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed Moduł wibracji zainstalowany - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown Potwierdzenie przez wyłączeniem radia - + Horus gimbals installed (Hall sensors) Zainstalowane gimbale Horusa (na czujnikach Halla) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version Użyć tylko dla pierwszych deweloperskich platform - + Turnigy 9XR-PRO Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support Uaktywnij menu HELI i cyklicznych mikserów - - - - - - - - - - No flight modes - Firmware bez menu faz lotu - - - - - - - - - - - + Global variables Globalne zmienne - - - - - - - - - + In model setup menus automatically set source by moving the control W menu ustawień modelu automatycznie wybierz źródło poprzez poruszenie nim - - - - - - - - - + In model setup menus automatically set switch by moving the control W menu ustawień modelu automatycznie wybierz źródło poprzez poruszenie nim - - - - - - - - - + No graphical check boxes and sliders Brak graficznych pol wyboru i suwaków - - - - - - - - - + Battery graph Grafika baterii - - - - - - - - - + Don't use bold font for highlighting active items Nie używaj podświetlenia dla wybranych aktywnych elementów, mikserów, krzywych, expo, etc - + + + Support for ACCESS internal module replacement + + + + + FrSky Horus X10 Express + + + + + Jumper T12 + + + + + Enable non certified R9M firmwares + + + + Turnigy 9XR with m128 chip Turnigy 9XR z kością m128 - - - - - - - Enable heli menu and cyclic mix support - Uaktywnione menu Heli i wsparcie dla cyklicznych mikserów - - - - - - - - - Enable TEMPLATES menu - Uaktywnienie menu szablonów - - - - - - - No splash screen - Bez loga na ekranie - - - - - - - - - Disable curves menus - Bez menu krzywych - - - - - - - - Support for radio modified with regular speaker - Wsparcie dla modyfikacji radia zwykłym głośnikiem - - - - - - - - Used if you have modified your radio with voice mode - Używane jeśli radio jest zmodyfikowane w calu użycia komunikatów głosowych - - - - - - - - Used if you have modified your radio with haptic mode - Używane jeśli radio jest zmodyfikowane do użycia wibracji - - - - - - - - PPM center adjustment in limits - Limit dostrojenia centrowania PPM - - - - - - - - - Symetrical Limits - Limity symetryczne - - - - - - - Enable the throttle trace in Statistics - Uaktywnić śledzenie gazu w statystykach - - - - - - - - EEprom write Progress bar - Pasek postępu zapisywania EEPROM - - - - - - - - - Imperial units - Imperialne jednostki w telemetrii - - - Turnigy 9XR Turnigy 9XR - - - No Winged Shadow How High support - Bez wsparcia - Winged Shadow How High - - - - - No vario support - Bez wsparcia wario - - - - - No GPS support - Bez wsparcia GPS - - - - - No gauges in the custom telemetry screen - Bez graficznych wskazań telemetrii - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Dodanie wsparcia dla odwracania wejścia drążków (np. potrzebne dla gimbali FrSky) - - - + 9X with stock board 9X ze standardową platformą - - - SmartieParts 2.2 Backlight support - Wsparcie podświetlenia SmartieParts 2.2 - - - - - - - - + Enable resetting values by pressing up and down at the same time Szybkie nastawianie wartości (+) a (-) neguje wartość @@ -2857,57 +3016,30 @@ Jeśli puste linia jest uznawana za aktywną cały czas. (UP) a (DN) ustawia 0 - - EEprom write progress bar - Pasek postępu wgrywania EEPROMu - - - - Allow compensating for offset errors in FrSky FAS current sensors - Pozwolenie na kompensację błędów w czujnikach natężenia FrSky FAS - - - + 9X with stock board and m128 chip 9X ze standardową platformą i kością m128 - + 9X with AR9X board 9X z platformą AR9X - + 9X with Sky9x board 9X z platformą Sky9X - + 9X with Gruvin9x board 9X z platformą Gruvin9X - - - Support for SD memory card - Wsparcie karty SD - - - - - Support of FrSky PXX protocol - Wsparcie dla protokołu Frsky PXX - - - + DIY MEGA2560 radio Radio DIY MEGA2560 - - - Power management by soft-off circuitry - Zarządzanie zasilaniem przez obwód Soft-Off - FirmwarePreferencesDialog @@ -2941,6 +3073,11 @@ Jeśli puste linia jest uznawana za aktywną cały czas. Latest Download Ostatnie pobranie + + + Unknown + Nieznany + FlapsPage @@ -2974,7 +3111,7 @@ Jeśli puste linia jest uznawana za aktywną cały czas. FlashEEpromDialog - + Write Models and Settings to Radio Zapisz Modele i Ustawienia do radia @@ -3039,51 +3176,51 @@ Jeśli puste linia jest uznawana za aktywną cały czas. Zapisz do radia - + Current profile: %1 Aktualny profil %1 - + Choose Radio Backup file Wybierz plik Backupu radia - + Wrong radio calibration data in profile, Settings not patched Błędna kalibracja radia w profilu, Ustawienia nie spatchowane - + Wrong radio setting data in profile, Settings not patched Błędne ustawienia radia w profilu, Ustawienia nie spatchowane - + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - + Error writing file %1: %2. Błąd zapisu pliku %1: %2. - + The radio firmware belongs to another product family, check file and preferences! Firmware radia należy do innej rodziny produktów, sprawdź plik i preferencje ! - + The radio firmware is outdated, please upgrade! Firmware w radiu jest przestarzały. Proszę zaktualizować! - + Cannot check Models and Settings compatibility! Continue anyway? Nie mogę potwierdzić kompatybilności Modeli i Ustawień. Kontynuować? @@ -3270,42 +3407,42 @@ Jeśli puste linia jest uznawana za aktywną cały czas. Plik wykonywany %1 nie znaleziony - + Writing... Zapis... - + Reading... Czytanie... - + Verifying... Weryfikacja... - + unknown nieznany - + ie: OpenTX for 9X board or OpenTX for 9XR board ie: OpenTX dal platformy 9X lub OpenTX lub 9XR - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip ie: OpenTX dla platformy M128 / 9X lub OpenTX dla platformy 9XR z chipem M128 - + ie: OpenTX for Gruvin9X board ie: OpenTX dla platformy Gruvin9X - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3314,7 +3451,7 @@ Please check advanced burn options to set the correct cpu type. Sprawdź zaawansowane opcje aby ustalić prawidłowy procesor. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3323,7 +3460,7 @@ Please select an appropriate firmware type to program it. Proszę wybrać poprany rodzaj firmware. - + You are currently using: %1 @@ -3332,16 +3469,7 @@ Aktualnie używasz: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - Radio nie jest podłączone do USB lub brak drivera!!! - -W celu instalacji drivera użyj ZADIG. - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. Radio nie jest podłączone do USB lub driver nie został zainicjalizowany!!!. @@ -3395,82 +3523,87 @@ W celu instalacji drivera użyj ZADIG. FlightModePanel - + Rotary Encoder %1 Pokrętło %1 - + Name Nazwa - + Value source Źródło wartości - + Value Wartość - + GVAR%1 ZmGl%1 - + Popup enabled Wyskakujące okna aktywne - + + Popup menu available + + + + Trim disabled Trymery wyłączone - + Own Trim Własne trymery - + Use Trim from Flight mode %1 Użyj trymerów dla Fazy Lotu %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Użyj trymerów dla Fazy Lotu %1 + Własne trymery jako wyrównania - + Unit Jednostka - + Prec - + Min Min - + Max Maks - + 0._ - + 0.0 5x {0.0?} @@ -3495,17 +3628,17 @@ W celu instalacji drivera użyj ZADIG. FlightModesPanel - + Flight Mode %1 Faza lotu %1 - + (%1) (%1) - + (default) (bazowa) @@ -3531,17 +3664,17 @@ W celu instalacji drivera użyj ZADIG. FrSkyAlarmData - + Yellow - + Orange - + Red @@ -3550,12 +3683,12 @@ W celu instalacji drivera użyj ZADIG. FrSkyChannelData - + V V - + --- --- @@ -3745,12 +3878,12 @@ p, li { white-space: pre-wrap; } - + Own value Własna Wartość - + Flight mode %1 value Wartość Fazy lotu FL%1 @@ -3833,7 +3966,7 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie. GeneralSettings - + Radio Settings @@ -3846,137 +3979,132 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie.Formularz - + GPS Coordinates Koordynaty GPS - + Speaker Pitch (spkr only) Wysokość tonów (tylko dźwięki) - + Measurement Units Jednostki miar - - hh° (N/S) mm' ss''.dd - hh° (N/S) mm' ss''.dd - - - + NMEA NMEA - + Voice Language Język komunikatów - + Timeshift from UTC Strefa czasowa względem UTC - + Metric Metryczne - + Imperial Imperialne - + Country Code Kod kraju - + America Ameryka - + Japan Japonia - + Europe Europa - - + + X-Short Bardzo krótka - - + + Short Krótka - - + + Normal Normalna - - + + Long Długa - - + + X-Long Bardzo długa - + Color 1 Kolor 1 - + Color 2 Kolor 2 - + Beeper Length Długość piknięcia - + RotEnc Navigation Nawigacja pokrętłem - + Beeper Mode Tryb pikania - + Vario pitch at zero Ton Wario dla zera - + Standard Standard - + Optrex Optrex @@ -3986,12 +4114,12 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie.Odblokuj "Tylko do odczytu" - + Sound Mode Tryb dźwiękowy - + Beeper volume 0 - Quiet. No beeps at all. @@ -4008,61 +4136,61 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie. - - + + Quiet Cichy - + Alarms Only Tylko alarmy - - + + No Keys Bez przycisków - - + + All Wszystkie - + Only Alarms Tylko Alarmy - + Haptic Mode Tryb wibracji - + Beeper Pikanie - + Speaker Głośnik - + BeeperVoice Pikanie i głosy - + SpeakerVoice Głośnik i głosy - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4117,18 +4245,18 @@ p, li { white-space: pre-wrap; } SG - - + + Hz Hz - + Battery Warning Ostrzeżenie o zasilaniu - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4139,153 +4267,155 @@ Ustala próg ostrzeżenia. Dopuszczalne wartości 5v-10v - + Vario pitch at max Ton Wario dla Maks - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Jeśli ta wartość jest różna od 0, każde naciśnięcie klawisza włączy podświetlenie, które zgaśnie po ustalonej liczbie sekund. - + + + sec s - - + + ms ms - + Backlight Brightness Jasność Podświetlenia - + Vario repeat at zero Powtarzanie dla Wario zero - + Backlight Auto OFF after Wyłącz podświetlenie po - + Backlight color Kolor Podświetlenia - + Min Min - - + + v V - + Max Maks - + Contrast Kontrast - + Battery Meter Range Zakres Pomiaru Baterii - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Radio zasygnalizuje dźwiękiem brak aktywności po określonej liczbie minut. 0- wyłącza tę funkcję. - + min Min - + 4800 Baud 4800 bps - + 9600 Baud 9600 bps - + 14400 Baud 14400 bps - + 19200 Baud 19200 bps - + 38400 Baud 38400 bps - + 57600 Baud 57600 bps - + 76800 Baud 76800 bps - + 115200 Baud 115200 bps - + Backlight Switch Przełącznik Podświetlenia - + Show Splash Screen on Startup Pokazuj ekran startowy z logo - + This is the switch selectrion for turning on the backlight (if installed). To jest przełącznik do włączenia podświetlenia (jeśli zainstalowane). - + LCD Display Type Typ ekranu LCD - + Adjust RTC Dostosuj Zegar - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4310,128 +4440,128 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ostrzeżenie cichej pracy - będzie ostrzegało gdy pikanie jest ustawione na cicho(0)</p></body></html> - + MAVLink Baud Rate Prędkość przesyłu MAVLink - + Speaker Volume Głośność dźwięków - + Haptic Length Długość wibracji - + Inactivity Timer Timer bezczynności - - + + Show splash screen on startup Pokazuj ekran startowy z logo - + --- --- - + 2s 2s - + 3s 3s - + 4s 4s - + 6s 6s - + 8s 8s - + 10s 10s - + 15s 15s - + "No Sound" Warning Ostrzeżenie "Brak Dźwięku" - + Haptic Strength Siła wibracji - + Beep volume Głośność sygnałów - + Wav volume Głośność WAV - + Vario volume Głośność wariometru - + Background volume Głośność tła - + Stick Mode Mod drążków - + Default Channel Order Bazowa kolejność kanałów - + FAI Mode Tryb FAI - + Automatically adjust the radio's clock if a GPS is connected to telemetry. Dostrój automatycznie zegar radia jesli GPS jest podłączony do telemetri. - + Backlight OFF Brightness Jacność wyłączonego podświetlenia - + Mode selection: Mode 1: @@ -4472,202 +4602,243 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mod 1 (SK.SW.Gaz.Lot) - + Mode 2 (RUD THR ELE AIL) Mod 2 (SK.Gaz.SW.Lot) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Mod 4 (Lot.Gaz.SW.SK) - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>Kolejność kanałów</p><p><br/></p><p>Definiuje kolejność standardowych mikserów dla nowego modelu.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A K W G L - + R E A T K W L G - + R T E A K G W L - + R T A E K G L W - + R A E T K L W G - + R A T E K L G W - + E R T A W K G L - + E R A T W K L G - + E T R A W G K L - + E T A R W G L K - + E A R T W L K G - + E A T R W L G K - + T R E A G K W L - + T R A E G K L W - + T E R A G W K L - + T E A R G W L K - + T A R E G L K W - + T A E R G L W K - + A R E T L K W G - + A R T E L R G W - + A E R T L W K G - + A E T R L W G K - + A T R E L G K W - + A T E R L G W K - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + Trener + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick reverse Rewers drążków - + Play Delay (switch mid position) Opóźnienie odtwarzania (pozycja środkowa przełącznika) - + Backlight flash on alarm Błyskanie podświetleniem przy alarmie @@ -4675,127 +4846,127 @@ Mode 4: GeneralSetupPanel - + OFF Wyłącz - + Keys Przyciski - + Sticks Drążki - + Keys + Sticks Przyciski i Drążki - + ON Włącz - + English Angielski - + Dutch Holenderski - + French Francuski - + Italian Włoski - + German Niemiecki - + Czech Czeski - + Slovak Słowacki - + Spanish Hiszpański - + Polish Polski - + Portuguese Portugalski - + Russian - + Swedish Szwedzki - + Hungarian Węgierski - + No Nie - + RotEnc A Pokrętło :A - + Rot Enc B Pokrętło :B - + Rot Enc C Pokrętło :C - + Rot Enc D Pokrętło :D - + Rot Enc E Pokrętło :E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4828,263 +4999,247 @@ Are you sure ? Formularz - + SQ SQ - + SR SR - + LS2 LS2 - + SP SP - + SO SO - + S4 S4 - + RS Prawy suwak - + SB SB - + PPM 2 PPM 2 - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Głośność piknięć - -0 -Cicho. Żadnych piknięć. -1 - Bez przycisków. Normalne piknięcia ale bez pikania dla przycisków menu. -2 - Normalna. -3 - Głośna. -4 - Bardzo głośna. - - - OFF Wyłącz - + S-Port Mirror Kopia S-Port - + Telemetry Telemetria - + SBUS Trainer Trener SBUS - + Debug Debugowanie - + Rud SK - + PPM 3 PPM 3 - + S1 Potencjometr 1 - + S2 Potencjometr 2 - + S3 S3 - + PPM 1 PPM 1 - + Serial Port Port szeregowy - + v V - + PPM Multiplier Mnożnik PPM - + Current Offset Aktuany ofset - + PPM 4 PPM 4 - + SA SA - + Ele SW - + + Antenna + Antena + + + + S5 + S5 + + + Ail Lotki - + Thr Gaz - + SC SC - + LS Lewy suwak - + SD SD - + Battery Offset Ofset baterii - + SE SE - + SF SF - + SG SG - + SH SH - + SI SI - + SJ SJ - + SK SK - + SL SL - + SM SM - + SN SN - + RS2 RS2 - + Bluetooth Bluetooth - + ADC Filter Filtr ADC - + Device Name: @@ -5093,8 +5248,8 @@ Are you sure ? HardwarePanel - - + + None Brak @@ -5114,25 +5269,70 @@ Are you sure ? 3 Pozycje - + Pot with detent Potencj. z zapadką - + Multipos switch Przeł. wielopoz - + Pot without detent Potencjometr bez zapadki - + Slider with detent Suwak z zapadką + + + OFF + Wyłącz + + + + Enabled + + + + + Telemetry + Telemetria + + + + Trainer + Trener + + + + Internal + Wewnętrzny + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5256,25 +5456,25 @@ Are you sure ? InputsPanel - + Move Up W górę - + Ctrl+Up Ctrl+Up - + Move Down W dół - + Ctrl+Down Ctrl+Down @@ -5284,92 +5484,92 @@ Are you sure ? Wyczyść wszystkie wejścia - + Not enough available inputs! Za mało dostępnych wejść! - + Delete Selected Inputs? Skasować Wybrane Wejścia? - + &Add &Dodaj - + Ctrl+A Ctrl+A - + &Edit &Edycja - + Enter Enter - + &Delete &Wykasuj - + Delete Wykasuj - + &Copy &Kopiuj - + Ctrl+C Ctrl+C - + &Cut W&ytnij - + Ctrl+X Ctrl+X - + &Paste W&klej - + Ctrl+V Ctrl+V - + Du&plicate &Zduplikuj - + Ctrl+U Ctrl+U - + Clear Inputs? Wyczyść Wejścia? - + Really clear all the inputs? Czy na pewno wyczyścić wszystkie wejścia? @@ -5379,7 +5579,7 @@ Are you sure ? INV - + Odwr @@ -5510,7 +5710,7 @@ Are you sure ? Unknown - + Nieznany @@ -5526,62 +5726,67 @@ Are you sure ? LogicalSwitchesPanel - + V1 Wartość 1 - + V2 Wartość 2 - + Function Funkcja - + AND Switch Przełącznik "I" - + Duration Czas trwania - + Delay Opóźnienie - + + Popup menu available + + + + (infinite) - + &Delete &Wykasuj - + &Copy &Kopiuj - + (instant) (natychmistowy) - + &Cut W&ytnij - + &Paste W&klej @@ -5675,8 +5880,8 @@ Are you sure ? - Error: no GPS data not found - Błąd: Brak danych GPS + Error: no GPS data found + @@ -5688,74 +5893,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Kolumny wysokości "GAlt" i prędkości "GSpd" są opcjonalne - + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - + Cursor A: %1 m Wskaźnik A: %1 m - + Cursor B: %1 m Wskaźnik B: %1 m - + Time delta: %1 Delta czasu: %1 - + Climb rate: %1 m/s Wznoszenie: %1 m/s - + Select your log file Wybierz plik logów - + Available fields Dostępne pola - + The selected logfile contains %1 invalid lines out of %2 total lines Wybrany plik zawiera %1 błędnych linii z %2 wszystkich linii - + total duration Całkowity czas trwania - + duration Czas trwania - + (L1) (L1) - + (R1) (R1) - + (L2) (L2) - + (R2) (R2) @@ -5763,783 +5968,769 @@ Kolumny wysokości "GAlt" i prędkości "GSpd" są opcjonaln MainWindow - - + + File loaded Plik załadowany - + Checking for updates Sprawdź aktualizacje - - Unable to check for updates. - Nie mogę sprawdzić aktualizacji. - - - - + + Save As Zapisz jako - + Executable (*.exe) Wykonywalny (*.exe) - + New release available Dostępne jest nowe wydanie - - + + No updates available at this time. Brak aktualizacji dostępnych teraz. - - + + Would you like to launch the installer? Chcesz uruchomić instalator? - + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - + Compilation server too busy, try later Serwer kompilacji zbyt zajęty, spróbuj później - + Compilation error Błąd kompilacji - + Invalid firmware Błedne firmware - + Invalid board Błędna płyta główna - + Invalid language Błedny język - + Unknown server failure, try later Nieznany błąd serwera, spróbuj później - - + + Yes Tak - - + + No Nie - - + + Release Notes Informacje o wydaniu - - - Do you want to download release %1 now ? - Chcesz pobrać wydanie %1 teraz? - - - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! - - :: Options - - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - + Close Zamknij - + Close Models and Settings file Zamknij plik modeli i ustawień - + List of recently used files Lista użytych plików - + Radio Profiles Profile radia - + Create or Select Radio Profiles Utwórz lub Wybierz Profile Radia - + Release notes... - + Show release notes - + Delete Current Radio Profile... Skasuj Aktualny Profil Radia... - + Tabbed Windows Zakładkowane okna - + Use tabs to arrange open windows. Użyj zakładek do ustawienia otwartych okien. - + Tile Windows Tytuł Okien - + Arrange open windows across all the available space. Ustaw otwarte okna na całej dostępnej przestrzeni. - + Cascade Windows Okna kaskadowo - + Arrange all open windows in a stack. Ustaw wszytkie otwarte okna na stosie. - + Close All Windows Zamknij wszytkie okna - + Closes all open files (prompts to save if necessary. Zamknij wszystkie otwarte pliki (zapytaj by zapisać jeśli trzeba). - + Window Okno - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. Część tekstów nie będzie przetłumaczona do następnego uruchomienia Comapnion. Zwróć uwagę ze część tłumaczeń może nie być dokończona. - - + + File saved Plik zapisany - - Models and Settings read - Odczytaj Modele i Ustawienia - - - - - This function is not yet implemented - Funkcja niezaimplementowana jeszcze - - - - The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> - Projekt Companion odłączony z oryginalnego <a href='%1'>eePe</a> - - - - New - Nowy - - - - Open... - Otwórz... - - - - Save - Zapisz - - - - Save As... - Zapisz jako... - - - - About... - O aplikacji... - - - - View Log File... - Obejrzyj plik logów... - - - - Open and view log file - Otwórz i obejrzyj plik logów - - - - Edit Settings - Edycja Ustawień - - - - Settings... - Ustawienia... - - - - Download firmware and voice files - Pobierz firmware i pliki dźwiękowe - - - - Ctrl+Shift+S - Ctrl+Shift+S - - - - Ctrl+Alt+L - Ctrl+Alt+L - - - - Ctrl+Alt+D - Ctrl+Alt+D - - - - Ctrl+Alt+R - Ctrl+Alt+R - - - - Alt+%1 - Alt+%1 - - - - - Copy - - Skopiuj - - - - Companion :: Open files warning + + No Companion release candidates are currently being served for this version, please switch release channel - - Please save or close modified file(s) before deleting the active profile. - - - - - Not possible to remove profile - Usunięcie profilu jest niemożliwe - - - - The default profile can not be removed. - Podstawowy profil nie może być usunięty. - - - - Confirm Delete Profile - Potwierdź usunięcie profilu - - - - Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - Jesteś pewien że chcesz wykasować profil radia %1? Nie ma możliwości cofnięcia tego działania! - - - - Copy Current Radio Profile - Kopiuj aktualny profil radia - - - - Use default system language. - Uzyj języja bazowego systemu. - - - - Use %1 language (some translations may not be complete). - Użyj języka %1 (częsć tłumaczeń może być niekompletna). - - - - A monochrome black icon theme - Monochromatyczny czarny wygląd ikon - - - - Do you want to write the firmware to the radio now ? - Chcesz wgrać firmware do radia teraz? - - - - Ignore this release %1? - Zignorować to wydanie %1? - - - - - Open Models and Settings file - Otwórz plik Modeli i Ustawień - - - - Read Models and Settings From Radio - Wczytaj Modele i Ustawienia z radia - - - - Save Radio Backup to File - Zapisz Backup radia do pliku - - - - Read Radio Firmware to File - Odczytaj Firmware radia do pliku - - - - Create a new Models and Settings file - Utwórz nowy plik Modeli i Ustawień - - - - - Save Models and Settings file - Zapisz plik Modeli i Ustawień - - - - The classic companion9x icon theme - Klasyczny zestaw ikon Companion - - - - A monochrome white icon theme - Monochromatyczny biały wygląd ikon - - - - A monochrome blue icon theme - Monochromatyczny niebieski wygląd ikon - - - - Diskimage (*.dmg) - - - - - Would you like to open the disk image to install the new version? - - - - - Show this message again at next startup? + + No nightly Companion builds are currently being served for this version, please switch release channel + No Companion release builds are currently being served for this version, please switch release channel + + + + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + + Models and Settings read + Odczytaj Modele i Ustawienia + + + + + This function is not yet implemented + Funkcja niezaimplementowana jeszcze + + + + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> + Projekt Companion odłączony z oryginalnego <a href='%1'>eePe</a> + + + + New + Nowy + + + + Open... + Otwórz... + + + + Save + Zapisz + + + + Save As... + Zapisz jako... + + + + About... + O aplikacji... + + + + View Log File... + Obejrzyj plik logów... + + + + Open and view log file + Otwórz i obejrzyj plik logów + + + + Edit Settings + Edycja Ustawień + + + + Settings... + Ustawienia... + + + + Download firmware and voice files + Pobierz firmware i pliki dźwiękowe + + + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + + Ctrl+Shift+S + Ctrl+Shift+S + + + + Ctrl+Alt+L + Ctrl+Alt+L + + + + Ctrl+Alt+D + Ctrl+Alt+D + + + + Ctrl+Alt+R + Ctrl+Alt+R + + + + Alt+%1 + Alt+%1 + + + + - Copy + - Skopiuj + + + + Companion :: Open files warning + + + + + Please save or close modified file(s) before deleting the active profile. + + + + + Not possible to remove profile + Usunięcie profilu jest niemożliwe + + + + The default profile can not be removed. + Podstawowy profil nie może być usunięty. + + + + Confirm Delete Profile + Potwierdź usunięcie profilu + + + + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! + Jesteś pewien że chcesz wykasować profil radia %1? Nie ma możliwości cofnięcia tego działania! + + + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + + Copy Current Radio Profile + Kopiuj aktualny profil radia + + + + Use default system language. + Uzyj języja bazowego systemu. + + + + Use %1 language (some translations may not be complete). + Użyj języka %1 (częsć tłumaczeń może być niekompletna). + + + + A monochrome black icon theme + Monochromatyczny czarny wygląd ikon + + + + Do you want to write the firmware to the radio now ? + Chcesz wgrać firmware do radia teraz? + + + + + Open Models and Settings file + Otwórz plik Modeli i Ustawień + + + + Read Models and Settings From Radio + Wczytaj Modele i Ustawienia z radia + + + + Save Radio Backup to File + Zapisz Backup radia do pliku + + + + Read Radio Firmware to File + Odczytaj Firmware radia do pliku + + + + Create a new Models and Settings file + Utwórz nowy plik Modeli i Ustawień + + + + + Save Models and Settings file + Zapisz plik Modeli i Ustawień + + + + The classic companion9x icon theme + Klasyczny zestaw ikon Companion + + + + A monochrome white icon theme + Monochromatyczny biały wygląd ikon + + + + A monochrome blue icon theme + Monochromatyczny niebieski wygląd ikon + + + + Diskimage (*.dmg) + + + + + Would you like to open the disk image to install the new version? + + + + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + Small Małe - + Use small toolbar icons Użyj małych ikon paska narzędzi - + Use normal size toolbar icons Użyj normalnych ikon paska narzędzi - + Normal Normalne - + Use big toolbar icons Użyj dużych ikon paska narzędzi - + Big Duże - + Use huge toolbar icons Użyj olbrzymich ikon paska narzędzi - + Huge Olbrzymie - + Edit Radio Splash Image... Edytor ekranu startowego radia... - + Edit the splash image of your Radio Edytuj ekran startowy swojego radia - - + + Read Firmware from Radio Odczytaj Firmware z radia - + Read firmware from Radio Odczytaj Firmware z radia - + Write Firmware to Radio Zapisz firmware do radia - + Write firmware to Radio Zapisz firmware do radia - + Write Models and Settings To Radio Zapisz Modele i Ustawienia do radia - + Write Models and Settings to Radio Zapisz Modele i Ustawienia do radia - - + + Read Models and Settings from Radio Wczytaj Modele i Ustawienia z radia - + Configure software for communicating with the Radio Ustaw oprogramowanie komunikacyjne z radiem - + Write Backup to Radio Zapisz Backup do radia - + Backup Radio to File Zbackupuj radio do pliku - + Save a complete backup file of all settings and model data in the Radio Zachowaj kompletny plik backup wszystkich ustawień i danych modeli z radia - + Recent Files Ostatnie Pliki - + Check OpenTX and Companion updates Sprawdź aktualizacje OpenTX i Companion - + Fuses... Bezpieczniki... - + Manuals and other Documents Podręcznik i dokumentacja - + Open the OpenTX document page in a web browser Otwórz stronę dokumentacji OpenTX w przeglądarce - + A tribute to those who have contributed to OpenTX and Companion Hołd dla tych, którzy przyczynili się do rozwoju OpenTX i Companion - + Contributors... Współpracownicy... - + Set Icon Theme Ustaw wygląd ikon - + Set Icon Size Ustaw wielkość ikon - + A new version of Companion is available (version %1)<br>Would you like to download it? Dostępna jest nowy Companion (wersja %1)<br>Chcesz ją pobrać ? - + The new theme will be loaded the next time you start Companion. Wybrany wygląd będzie użyty po ponownym uruchomieniu Comapnion. - + OpenTX Home Page: <a href='%1'>%1</a> Strona domowa OpenTX: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Jeśli uważasz, że ten program jest użyteczny, wesprzyj poprzez <a href='%1'>donację</a> - + About Companion O aplikacji Companion - + Exit Zakończ - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - Firmware %1 nigdy nie zostało pobrane. -Wydanie %2 jest dostępne. -Czy chcesz teraz je pobrać? - -Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania zmian które mogą być istotne dla Ciebie. - - - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6555,196 +6746,196 @@ Czy chcesz teraz pobrać ? Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania zmian które mogą być istotne dla Ciebie. - - + + Synchronize SD Zsynchronizuj kartę pamięci - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - Radio: %2 - Profil: %3 - + Monochrome Monochromatyczny - + MonoWhite Mono-Biały - + MonoBlue Mono-Niebieski - + System language Język systemu - + Download... Pobieranie... - + Check for Updates... Sprawdź aktualizacje... - + Compare Models... Porównaj modele... - + List programmers... Lista programistów... - + Add Radio Profile Dodaj profil radia - + Configure Communications... Ustaw komunikację... - + Yerico - + Yellow round honey sweet icon theme Żółty zaokrąglony miodowy motyw ikon - + Write Zapis - + %2 %2 - + Compare models Porównaj modele - + Exit the application Zakończ aplikację companion9x - + List available programmers Lista dostępnych programatorów - + Show fuses dialog Pokaż okno ustawień mikro-kontrolera - + Show the application's About box O aplikacji companion9x - + Copyright OpenTX Team Prawa Zespół OpenTX - + Classical Klasyczny - + Write Backup from file to Radio Zapisz Backup z pliku do radia - + Not enough flash available on this board for all the selected options Ta platforma posiada za mało pamięci flash dla wybranych opcji - + Compilation server temporary failure, try later Serwer kompilacji czasowo niesprawny, spróbuj później - + SD card synchronization Synchronizacja karty SD - + Create a new Radio Settings Profile Utwórz nowy Profil Ustawień Radia - + Duplicate current Radio Settings Profile Zdupilkuj aktualny Profil Ustawień Radia - + Delete the current Radio Settings Profile Skasuj aktualny Profil Ustawień Radia - + Set Menu Language Ustaw język menu - - + + File Plik - - + + Edit Edycja - + Settings Ustawienia - + Read/Write Odczyt/Zapis - - + + Help Pomoc - + Ready Gotowe - + New Radio Nowe Radio @@ -6752,79 +6943,79 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z MdiChild - + free bytes wolna pamięć[B] - + Editing model %1: Edycja modelu %1: - + Unable to find file %1! Nie mogę odnaleźć pliku %1! - + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - + Save As Zapisz jako - + Alt+Shift+E Alt+Shift+E - + Ctrl+Alt+C Ctrl+Alt+C - + Ctrl+Alt+V Ctrl+Alt+V - + Alt+Shift+S Alt+Shift+S - + Alt+C Alt+C - + Alt+A Alt+A - + Alt+R Alt+R - + Alt+W Alt+W - + Alt+U Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6834,7 +7025,7 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6844,7 +7035,7 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6854,157 +7045,157 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z - + Nothing selected Brak wyboru - + Rename Category Przemianuj kategorię - + Edit Model Edytuj model - + Cut Wytnij - + Copy Skopiuj - + Paste Wklej - + Insert Wprowadź - + Edit Radio Settings Edytuj ustawienia radia - + Copy Radio Settings Skopiuj ustawienia radia - + Paste Radio Settings Wklej ustawienia radia - + Simulate Radio Symulacja radia - + Add Category Dodaj Kategorię - + Category Kategoria - + Add Model Dodaj model - + Model Model - + Restore from Backup Odtworzyć z backupu - + Model Wizard Kreator ustawień modelu - + Set as Default Ustaw jako bazowy - + Print Model Wydrukuj model - + Simulate Model Zasymuluj model - + Duplicate Model Duplikuj model - + Show Category Actions Toolbar Pokaż kategorię na pasku akcji - + Show Radio Actions Toolbar Pokar pasek akcji radia - + Show Model Actions Toolbar Pokar pasek akcji modelu - + Category index out of range. Indek kategorii poza limitem. - + Cannot delete the last category. Nie mogę wykasować ostatniej kategori. - + Cannot insert model, last model in list would be deleted. Nie moge dodać modelu, ostatni model z listy zostanie skasowany. - + Cannot add model, could not find an available model slot. Nie moge dodać modelu, brak dostępnego miejsca. - + Cannot paste model, out of available model slots. Nie moge wkleić modelu, brak dostępnego miejsca. - + You are replacing an existing model, are you sure? Podmieniasz istniejący, czy modeś jestes pewien? - + Delete %n selected model(s)? Wykasuj %n wybrany model? @@ -7013,7 +7204,7 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z - + Delete %n selected category(ies)? Wykasuj %n wybraną kategorię? @@ -7022,108 +7213,108 @@ Zalecamy przeczytanie informacji o wydaniu (przycisk poniżej) w celu poznania z - + Cannot duplicate model, could not find an available model slot. Nie moge powielić modelu, brak dostępnego miejsca. - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Error reading file %1: %2. Błąd odczytu pliku %1: %2. - + %1 has been modified. Do you want to save your changes? %1 został zmieniony. Zapisać? - + Delete Wykasuj - + Move to Category Przesuń do kategori - + Alt+S Alt+S - + Do you want to overwrite radio general settings? Czy chcesz nadpisać główne ustawienia radia? - + New category Translators do NOT use accent for this, this is the default category name on Horus. Nowa Kategoria - + This category is not empty! Ta kategoria nie jest pusta! - + New model Translators: do NOT use accents here, this is a default model name. Nowy model - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Unable to find Horus radio SD card! Nie mogę znaleźc karty SD radia Horus! - + Models and Settings written Zapisane modele i ustawienia - + Cannot write temporary file! Nie mogę zapisać pliku tymczasowego! - + Open backup Models and Settings file Otwórz plik backupu Modeli i Ustawień - + Invalid binary backup File %1 nieprawidłowy binarny plik %1 @@ -7376,22 +7567,22 @@ p, li { white-space: pre-wrap; } MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7400,25 +7591,25 @@ p, li { white-space: pre-wrap; } MixesPanel - + Move Up W górę - + Ctrl+Up Ctrl+Up - + Move Down W dół - + Ctrl+Down Ctrl+Down @@ -7428,102 +7619,102 @@ p, li { white-space: pre-wrap; } Wyczyść miksery - + Not enough available mixers! Za mało dostępnych mikserów! - + Delete Selected Mixes? Skasować wybrane miksery? - + &Add &Dodaj - + Ctrl+A Ctrl+A - + &Edit &Edycja - + Enter Enter - + &Toggle highlight &Przełącz podświetlenie - + Ctrl+T Ctrl+T - + &Delete &Wykasuj - + Delete Wykasuj - + &Copy &Kopiuj - + Ctrl+C Ctrl+C - + Ctrl+X Ctrl+X - + C&ut &Wytnij - + &Paste &Wklej - + Ctrl+V Ctrl+V - + Du&plicate &Zduplikuj - + Ctrl+U Ctrl+U - + Clear Mixes? Wyczyść miksery? - + Really clear all the mixes? Czy na pewno wyczyścić wszystkie miksery? @@ -7531,12 +7722,12 @@ p, li { white-space: pre-wrap; } ModelData - + Model: - + Throttle Source Źródło gazu @@ -7607,878 +7798,784 @@ p, li { white-space: pre-wrap; } ModelPrinter - + Exponential Exponential - + Extra Fine Bardzo dokładny - + Fine Dokładny - + Medium Średni - + Coarse Zgrubny - + Unknown Nieznany - + Slave/Jack Uczeń/Jack - + Master/SBUS Module Trener/SBUS Moduł - + Master/CPPM Module Trener/CPPM Moduł - + Master/SBUS in battery compartment Trener/SBUS w kieszeni baterii - + Master/Jack Trener/Jack - + Enable - + Disable - + True - + False - + Yes Tak - + No Nie - + Y Y - + N - + ON Włącz - - - - + + + + OFF Wyłącz - - - - - - - - - - - - - ??? - ??? - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 5x {1W?} - - - - 25mW - - - - - + + Mode Tryb - - + + Channels Kanały - - + + Frame length - + PPM delay Opóźnienie PPM - - + + Polarity Polaryzacja - + Protocol Protokół - - - + + + Delay Opóźnienie - - + + Receiver Odbiornik - + Radio protocol - + Subtype Podtyp - + Option value Wartość opcjonalna - + Sub Type - + RF Output Power - - Telemetry - Telemetria - - - - - ???? - - - - + 90 90 - + 120 120 - + 120X 120X - + 140 140 - - Rudder - SK - - - - Elevator - SW - - - - Throttle - Gaz - - - - Aileron - Lotki - - - + MULT! - - + + Offset Wyrównanie - + Slow Spowolnienie - + Warn - + Flight modes Fazy lotu - + Flight mode Faza lotu - + All Wszystkie - + Edge Brzeg - + Sticky Trwałe przełączenie - + Timer Timer - + missing - + Duration Czas trwania - + Extended Limits Rozszerzone limity (125%) - + Display Checklist Wyświetl Czeklistę - + Global Functions Funkcje Globalne - + Manual - + Auto Automatyczne - + Failsafe Mode Tryb Failsafe - - + + Hold Utrzymuj - + No Pulse Brak impulsu - + Not set BRAK - + No pulses - + Silent Cisza - + Beeps Dźwięk - + Voice - + Komunikaty głosowe - + Haptic Wibracje - + Flight Lot - + Manual reset - + Step - + Display - + Extended - + Never Nigdy - + On Change - + Always Zawsze - - Trainer Port - Port trenera - - - - Internal Radio System - Wewnętrzny moduł radiowy - - - - External Radio Module - Zewnętrzny moduł radiowy - - - - - Radio System - System radia - - - - Extra Radio System - System Radiowy Ekstra - - - - - + + + Source Źródło - + Trim idle only - + Warning Ostrzeżenie - + Reversed - + Tmr - + FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (kabel) - + Alti Wysokościomierz - + Alti+ Wysokościomierz+ - + VSpeed Prędkość Pionowa - - - + + + A1 A1 - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Cele - + Calculated Obliczone - + Add Dodaj - + Average Średnio - - + + Min Min - - + + Max Maks - + Multiply Mnożenie - + Totalise - + Cell Cela - + Consumption Zużycie - + Distance - + Lowest Najniższy - + Cell %1 Cela %1 - + Highest Najwyższy - + Delta Delta - + Formula - - + + Id Id - + Instance Wystąpienie - - - - + + + + Sensor - - + + Sources - - + + GPS GPS - + Alt. - - + + Blades - + Multi. - + F - + Inst - + Alt Wysokość - + Unit Jednostka - + Prec - + Ratio Współczynnik - + Multi - + A/Offset - + Filter Filtr - + Persist - + Positive - + Log - + Numbers Liczby - + Bars Paski - + Script Skrypt - + Filename Nazwa pliku - + + Error: Unable to open or read file! + + + + Offset(%1) Wyrównanie(%1) - + Persistent Stały - + Off Wyłącz - - - - - - + + + + + + None - + Name Nazwa - + Countdown Odliczanie - + Minute call - - - + + + FM%1 FM%1 - + FM%1%2 FM%1%2 - + FM%1+%2 FM%1+%2 - - + + Weight Waga - - + + Switch Przełącznik - - + + NoTrim Bez Trymera - + No DR/Expo Bez DR/Expo - + Disabled in all flight modes Wyłaczone we wszystkich fazach lotu - + instant natychmiastowy - - - + + + Custom Własny - + Standard Standard @@ -8514,7 +8611,7 @@ p, li { white-space: pre-wrap; } Module - + Failsafe Mode Tryb Failsafe @@ -8524,7 +8621,7 @@ p, li { white-space: pre-wrap; } Start - + PPM delay Opóźnienie PPM @@ -8544,12 +8641,12 @@ p, li { white-space: pre-wrap; } Polaryzacja - + Trainer Mode Tryb trenera - + PPM Frame Length Długość ramki PPM @@ -8559,27 +8656,17 @@ p, li { white-space: pre-wrap; } Kan - + Antenna Antena - - Internal - Wewnętrzny - - - - Ext. + Int. - Zewn. + Wewn. - - - + Option value Wartość opcjonalna - + Bind on startup Binduj na starcie @@ -8589,129 +8676,146 @@ p, li { white-space: pre-wrap; } - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Low Power Słabe zasilanie - + us us - + Multi Radio Protocol Wieloradiowy Protokół - + Sub Type - + Master/Jack Trener/Jack - + Slave/Jack Uczeń/Jack - + Master/SBUS Module Trener/SBUS Moduł - + Master/CPPM Module Trener/CPPM Moduł - + Master/SBUS in battery compartment Trener/SBUS w kieszeni baterii - + Show values in: Pokaż wartości w: - + % abbreviation for percent % - + μs abbreviation for microseconds µs - + ms ms - + + Receiver 1 + + + + + + + X + X + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Channels Kanały - + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set BRAK - + Hold Utrzymuj - + Custom Ustawienia Własne - + No Pulses Brak sygnałów - + Receiver Odbiornik - + Failsafe Positions Pozycja Failsave - + Protocol Protokół @@ -8721,17 +8825,17 @@ p, li { white-space: pre-wrap; } Nr odbiornika. - + Output type Typ wyjścia - + Open Drain Otwarty dren - + Push Pull Push Pull @@ -8739,492 +8843,572 @@ p, li { white-space: pre-wrap; } ModuleData - + Positive - + Negative + Ujemna + + + + Trainer Port + Port trenera + + + + Internal Radio System + Wewnętrzny moduł radiowy + + + + External Radio Module + Zewnętrzny moduł radiowy + + + + Extra Radio System + System Radiowy Ekstra + + + + Radio System + System radia + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) ModulePanel - - Trainer Port - Port trenera - - - - Internal Radio System - Wewnętrzny moduł radiowy - - - - External Radio Module - External Radio Module - Internal Radio System - zaznaczyć by opisać spójność nazw angielskich - - Zewnętrzny moduł radiowy - - - - - Radio System - System radia - - - - Extra Radio System - System Radiowy Ekstra - - - + Value Wartość - + Hold Utrzymuj - + No Pulse Brak impulsu + + + Ask + + + + + Internal + Wewnętrzny + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input Wejście - + Weight Waga - + Long. cyc Długi cykl - + Lateral cyc Boczny cykl - + Collective Pochylenie (Collective) - + Flight modes Fazy lotu - - + + Flight mode Faza lotu - - + + Switch Przełącznik - + General - + EEprom Size - + Model Image Obrazek modelu - + Throttle Gaz - + Trims - + Center Beep - + Switch Warnings Ostrzeżenie o przełącznikach - + Pot Warnings Ostrzeżenie o potencjometrach - + Other - + Timers - + Time Czas - + Countdown Odliczanie - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter Śmigłowiec - + Swash - - + + Type - + Ring - - Fade IN - Pojawianie - - - - Fade OUT - Zanikanie - - - + Protocol Protokół - + Low - + Critical - + Telemetry audio - + Altimetry Wysokościomierz - - + + Vario source Źródło wario - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar Górny pasek - - + + Volts source Źródło napięcia - + Altitude source Źródło wysokości - + Various Różne - + Serial protocol - + FAS offset - + mAh count Licznik mAh - + Persistent mAh Stałe mAh - + Current source Źródło prądu(natężenia) - + Blades - + Parameters Parametry - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + FG%1 + + + + Global Functions + Funkcje Globalne + + + + Checklist + + + + + GV%1 ZG%1 - + RE%1 RE%1 - + Channel Kanał - - - + + + Name Nazwa - - Global variables - Globalne zmienne - - - + Prec - + Popup - + Outputs Wyjścia - + Subtrim Subtrim - + Direct - + Curve Krzywa - + PPM - + Linear Liniowa - + Telemetry Telemetria - + Offset Wyrównanie - - + + Min Min - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max Maks - + Global Variables Zmienne globalne - + Inputs Wejścia - + Mixers Miksery - + Curves Krzywe - + L%1 L%1 - + Logical Switches Przełączniki logiczne - + SF%1 SF%1 - + Special Functions Funkcje Specjalne - + Analogs Analogowe - - + + Unit Jednostka - + Scale Skala - + RSSI Alarms Alarmy RSSI @@ -9268,9 +9452,19 @@ p, li { white-space: pre-wrap; } + Fixed ID value + + + + DEFAULT PODSTAWOWY + + + Custom - proto %1) + + MultirotorPage @@ -9308,12 +9502,12 @@ p, li { white-space: pre-wrap; } ,,, plus %1 błędów - + Cannot write radio settings Nie mogę zapisać ustawień radia - + Cannot write model %1 Nie mogę zapisać modelu %1 @@ -9389,26 +9583,31 @@ p, li { white-space: pre-wrap; } + Style + + + + Print Drukuj - + Print to file Drukuj do pliku - + Print Document Drukuj dokument - + Select PDF output file Wybierz plik docelowy PDF - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) pliki ODF (*.odt);;pliki PDF (*.pdf);;pliki HTML (*.htm *.html);;Wszystkie pliki (*) @@ -9607,36 +9806,43 @@ p, li { white-space: pre-wrap; } RadioOutputsWidget + Form Formularz + View: Widok: + Logical Switches Przełączniki logiczne + Global Variables Zmienne globalne + Channel Outputs + Mix Outputs + L o g @@ -9651,6 +9857,7 @@ a + G l o @@ -9666,6 +9873,7 @@ l + C h a @@ -9683,6 +9891,7 @@ y + M i x @@ -9690,11 +9899,21 @@ e s + + + FM%1 + FM%1 + + + + GV%1 + ZG%1 + RadioSwitchWidget - + Latch/unlatch the momentary switch. Zablokuj/odblokuj przełącznik chwilowy. @@ -9726,7 +9945,7 @@ s m - + m @@ -9918,7 +10137,7 @@ s Dist - + Zasięg @@ -10142,22 +10361,22 @@ s RawSwitch - + - + - + - - + ! ! @@ -10377,126 +10596,136 @@ s SensorData - - + + V V - + A A - + mA mA - + kts kts - + m/s m/s - + km/h km/h - + mph mph - + m - + m - + f f - + °C °C - + °F °F - + % % - + mAh mAh - + W W - + mW mW - + dB dB - + rpms rpms - + g g - + ° ° - + Rad Rad - + hours godziny - + minutes minuty - + seconds sekundy - + TELE + + + Internal + Wewnętrzny + + + + External + + Setup @@ -10674,15 +10903,25 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również SetupPanel - + Timer %1 Timer %1 - + THR THR + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10707,182 +10946,192 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również + S + + + + PG-UP PG-UP - + PG-DN PG-DN - + DEL DEL - + BKSP BKSP - + ESC ESC - + INS INS - + <font size=+3>+</font> <font size=+3>+</font> - + <font size=+3>-</font> <font size=+3>-</font> - + <font size=+3>&larr;</font> <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> <pre>[ WYJŚCIE ]</pre> - + <pre>[ ENT ]</pre> <pre>[ ENT ]</pre> - + + <pre>[ SHIFT ]</pre> + + + + <pre>[ UP ]</pre> <pre>[ GÓRA ]</pre> - + <pre>[ DN ]</pre> <pre>[ DÓŁ ]</pre> - + <pre>[ <font size=+2>+</font> ]</pre> <pre>[ <font size=+2>+</font> ]</pre> - + <pre>[ <font size=+2>-</font> ]</pre> <pre>[ <font size=+2>-</font> ]</pre> - + <pre>[ PgUp ]</pre> <pre>[ PgUp ]</pre> - + <pre>[ PgDn ]</pre> <pre>[ PgDn ]</pre> - + <pre>[ MDL ]</pre> <pre>[ MDL ]</pre> - + <pre>[ RTN ]</pre> <pre>[ RTN ]</pre> - + <pre>[ SYS ]</pre> <pre>[ SYS ]</pre> - + <pre>[ TELE ]</pre> <pre>[ TELE ]</pre> - + <font size=+3>&#x2261;</font> <font size=+3>&#x2261;</font> @@ -11017,151 +11266,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator Symulator OpenTX + View Widok + Radio Window Okno Radia + Reload... Przeładuj... + Tools Narzędzia + Toolbar Pasek narzędzi + Reload Lua Scripts Przeładuj skrypty LUA + Reload the Lua environment on the simulated radio. Przeładuj środowisko LUA na symulowanym radiu. + F7 F7 + Reload Radio Data Przeładuj Dane Radia + Reload all radio data without restarting the simulator. Przeładuj dane radia bez restartowania symulatora. + F9 F9 + Key Mapping Mapowanie Klawiszy + Show keyboard maping reference. Pokaż mapowanie klawiatury. + F1 F1 + Joystick Settings Ustawienia Joystika + Open joystick configuration settings dialog. Otwórz dialog ustawień joystika. + F3 F3 + LCD Screenshot Zrzut ekrany LCD + Save a screenshot of the current simulated LCD screen. Zapisz zrzut ekranu aktualnnie symulowanego monitora LCD. + F8 F8 + Dock In Main Window Zadokuj w głównym oknie + Show the radio in the main window or as a separate "floating" window. Pokaż radio w głównym oknie lub w pływającym oddzielnym oknie. + Menu Bar Pasek Menu + Show or hide the top menu bar. Pokaż lub ukryj górny pasek menu. + Alt+M Alt+M + Constrain Width Wymuś szerokość + Set radio widget width to be a fixed size. Ustaw stałą wielkość widgetu radia. + Constrain Height Wymuś wysokość + Set radio widget height to be a fixed size. Ustaw stałą wysokość widgetu radia. @@ -11176,64 +11455,64 @@ Profile ID: [%1]; Radio ID: [%2] Alt+T - + Radio Outputs Wyjścia radia - + F2 F2 - + Telemetry Simulator Symulator telemetrii - + F4 F4 - + Trainer Simulator Symulator trenera - + F5 F5 - + Debug Output Wyjście debugera - + F6 F6 - + <b>Simulator Controls:</b> <b>Sterowanie Symulatora:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). <tr><th>Klawisz/Mysz</th><th>Action</th></tr> - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. <tr><td><kbd>%1</kbd></td><td>%2</td></tr> - + Simulator Help Pomoc Symulatora @@ -11242,21 +11521,25 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options Symulator OpenTX - Opcje Startowe + Simulator Startup Options: Opcje Startowe Symulatora: + Radio Profile: Profil radia: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. Tu są pokazane istniejące profile radia.<br /> @@ -11264,11 +11547,13 @@ Stwórz lub edytuj profile używając aplikacji Companion. + Radio Type: Typ Radia: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. Tu są pokazane istniejące profile radia.<br /> @@ -11276,26 +11561,31 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny. + Data Source: Źródło Danych: + Data File: Źródło Pliku: + Data Folder: Folder Danych: + SD Image Path: Ścieżka Obrazu SD: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! Plik obrazu danych radia (.bin/.eeprom/.otx) do użytku. W razie potrzeby zostanie stworzony nowy plik z domyślnym obrazem.<br /> @@ -11303,6 +11593,7 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny. + Select data file... Wybierz plik danych... @@ -11310,22 +11601,28 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny. + + + ... ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. Katalog zawierajacy foldery RADIA i MODELI do użycia.<br />W razie potrzeby zostanią stworzone nowe foldery z domyślnym Radiem/Modelami. + Select data folder... Wybierz folder danych... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. Katalog zawierajacy obraz karty SD do użycia.<br/> @@ -11333,26 +11630,31 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. + Select SD card image folder... Wybierz folder obrazu karty SD... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. Wybierz jakie źródło danych (Plik/Folder/Karta SD) chcesz użyć do uruchomienia symulatora. + File Plik + Folder Katalog + SD Path Scieżka SD @@ -11381,71 +11683,72 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. SimulatorWidget + Companion Simulator Symulator Companion - + Radio Simulator (%1) Symulator Radia (%1) - + Could not determine startup data source. Nie mogę ustalić startowego źródła danych. - + Could not load data, possibly wrong format. Nie mogę załadować danych, prawdopodobnie zły format. - + Data Load Error Błąd odczytu danych - + Invalid startup data provided. Plese specify a proper file/path. Dostarczone błędne dane startowe. Proszę określić prawidłowy plik/ścieżkę. - + Simulator Startup Error Błąd startu symulatora - + Error saving data: could open file for writing: '%1' Błąd zapisu danych: nie mogę otworzyć pliku do zapisu: '%1' - + Error saving data: could not get data from simulator interface. Błąd zapisu danych: nie mogę pobrać danych z interfacu symulatora. - + An unexpected error occurred while attempting to save radio data to file '%1'. Nastąpił nieoczekiwany błąd w trakcie próby zapisu danych radia do pliku '%1'. - + Data Save Error Błąd zapisu danych - + Cannot open joystick, joystick disabled Nie mogę otworzyć joysticka, dezaktywowany - + Radio firmware error: %1 Błąd Firmware Radia: %1 - + - Flight Mode %1 (#%2) - Faza lotu %1 (#%2) @@ -11504,109 +11807,240 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11655,101 +12089,106 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. Telemetry - + A1 A1 - + A2 A2 - + RSSI RSSI - + Alarm 1 Alarm 1 - - + + ---- ---- - - + + Yellow Żółty - - + + Orange Pomarańczowy - - + + Red Czerwony - + Alarm 2 Alarm 2 - + Disable telemetry audio warnings - + + Source + Źródło + + + Center Silent Środek cichy - + Altitude source Źródło wysokości - + Volts source Źródło napięcia - + Top Bar Górny pasek - + Serial Protocol Protokół szeregowy - + Sensors Czujniki - + Disable multi sensor handling Wyłącz obsługę wielu czujników - + Volt source Źródło napięcia - + Current source Źródło prądu(natężenia) @@ -11759,82 +12198,82 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. Protokół - + None Żadne - + FrSky Sensor Hub Hub Czujników FrSky - + Blades Łopaty śmigła - + Sink Max Maks. Opadanie - + Climb Max Maks. Wznoszenie - + Sink Min Min. Opadanie - + Climb Min Min. Wznoszenie - + Vario source Źródło wario - + Vario limits Limity wario - + Altimetry Wysokościomierz - + mAh mAh - + A A - + Various Różne - + mAh count Licznik mAh - + FAS Offset Wyrównanie FAS - + Persistent mAh Stałe mAh @@ -11948,7 +12387,7 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. miliAmpery (mA) - + Range Zasięg @@ -11961,22 +12400,22 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. Typ panelu - + None Żaden - + Numbers Liczby - + Bars Paski - + Script Skrypt @@ -12004,99 +12443,104 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. TelemetryPanel - + Telemetry screen %1 Panel Telemetrii %1 - + Low Alarm Alarm niski - + Critical Alarm Alarm krytyczny - + Winged Shadow How High Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (Nie obsługiwane) - - - + + + A1 A1 - + Alti Wysokościomierz - + FrSky S.PORT - + FrSky D FrSky D - + FrSky D (cable) FrSky D (kabel) - + + Source + Źródło + + + Alti+ Wysokościomierz+ - + VSpeed Prędkość Pionowa - - - + + + A2 A2 - - + + A3 A3 - - + + A4 A4 - - + + FAS FAS - + Cells Cele - + --- --- @@ -12109,269 +12553,279 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. Formularz - + Custom Własne - + Calculated Obliczone - + Id Id - + Instance Wystąpienie - + + Rx + + + + + Mod. + + + + Add Dodaj - + Average Średnio - + Min Min - + Max Maks - + Multiply Mnożenie - + Totalize Całkowite - + Cell Cela - + Consumption Zużycie - + Dist Zasięg - + Cells Sensor : Czujniki Cel : - - - - - - - - + + + + + + + + --- --- - + GPS Sensor : Czujnik GPS : - + Alt. Sensor : Czujnik wys. : - + Sensor : - + V V - + A A - + mA mA - + kt kt - + m/s m/s - + ft/s ft/s - + km/h km/h - + mph mph - + m m - + ft ft - + °C °C - + °F °F - + % % - + mAh mAh - + W W - + mW mW - + dBm dBm - + g g - + ° ° - + Rad Rad - + mL ml - + US fl.Oz. US fl.Oz. - + Raw (-) Bezwymiarowe (-) - + Ratio Współczynnik - + Positive Dodatni - + RPM RPM - + Precision Precyzja - + Blades Łopaty - + Offset Wyrównanie - + Multiplier Mnożnik - + Auto Offset Wyrównanie automatyczne - + Filter Filtr - + Logs Logi - + Persistent Stały @@ -12379,22 +12833,22 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. TelemetrySensorPanel - + Lowest Najniższy - + Cell %1 Cela %1 - + Highest Najwyższy - + Delta Delta @@ -12403,548 +12857,428 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia. TelemetrySimulator + Telemetry Simulator Symulator telemetrii - + + VFAS Napięcie - + + RSSI RSSI - + + A1 A1 - + + A2 A2 + Simulate Symulacja - + + Replay SD Log File Odtwórz plig logów z SD - + + Replay rate Współczynnik odtwarzania - + + Load Załaduj - + + |> |> - + + <| <| - + + > > - + + <- <- - + + X X - + + Row # Timestamp Czysty # Timestamp - + + 1/5x 1/5x - + + 5x 5x - + + No Log File Currently Loaded Nie jest załadowany żaden plik logu - + + RAS - - - + + + + + + V / ratio V / współczynnik - + + Db - + + RxBt RxBt - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> <html><head/><body><p><br/></p></body></html> - + + Tmp1 Tmp1 - + + A3 A3 - + + A4 A4 - + + Tmp2 Tmp2 - + + Fuel Paliwo - + + + + °C °C - + + ml ml - - Deg. C - St. C - - - + + % % - - + + + + Meters Metry - + + Alt Wysokość - + + VSpd Pr.Wznoszenia - + + m/s m/s - + + Fuel Qty Ilość Paliwa - - + + + + km/h km/h - + + Hdg Kurs - + + ASpd Prędk. Pow - - - + + + + + + G G - + + GPS GPS - + + Lat,Lon (dec.deg.) Szer. Dł. (dec.deg) - + + AccX AccX - + + dd-MM-yyyy hh:mm:ss dd-MM-yyyy hh:mm:ss - + + Date Data - + + Amps Ampery - + + AccZ AccZ - + + GAlt Wys - - + + + + Volts Wolty - + + Cels Cele - + + Curr Natężenie - + + AccY AccY - + + GSpd Pr.w.Ziemi - + + Degrees Stopnie - - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + + + RPM RPM + When enabled, sends any non-blank values as simulated telemetry data. Kiedy aktywne, wysyła jakiekolwiek dane jako symulację danych telemetrii. - + Log File Plik Logu - + LOG Files (*.csv) Pliki LOGu (*.csv) - + ERROR - invalid file BŁĄD - błędny plik - - Templates - - - Simple 4-CH - Proste 4 kanały - - - - T-Cut - Wył Gazu - - - - Sticky T-Cut - Stały wyłącznik Gazu - - - - V-Tail - Motylkowy - - - - Elevon\Delta - Elevon/Delta - - - - Heli Setup - Ustawienie Heli - - - - Heli Setup with gyro gain control - Ustawienie heli ze stabilizacją Żyro - - - - Gyro gain control - Stabilizacja Żyro - - - - Heli Setup (Futaba's channel assignment style) - Ustawienie heli (Ustawienie kanałów w stylu Futaby) - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - Ustawienie heli ze stabilizacją Żyro(Ustawienie kanałów w stylu Futaby) - - - - Gyro gain control (Futaba's channel assignment style) - Stabilizacja Żyro(Ustawienie kanałów w stylu Futaby) - - - - Servo Test - Test Serwa - - - - MultiCopter - Wielowirnikowiec - - - - Use Model Config Wizard - Użyj konfiguratora modelu - - - - Apply Template? - Dodać szablon ? - - - - Apply template "%1"? - Dodać szablon "%1"? - - - - - - - - - - RUD - SK - - - - - - - - - - - - - ELE - SW - - - - - - THR - THR - - - - - - - - - - - AIL - Lotki - - - - - - - AIL2 - Lotka2 - - - - - - - ELE2 - SW2 - - - - - - - - - FLAPS - Klapy - - - - - - - - - FLAP%1 - Klapy %1 - - - - - - - PITCH - Pochylenie - - - - - - - - - - - GYRO - ŻYRO - - - - - SPOIL - Spoiler - - - - - SPOIL%1 - Spoiler%1 - - - - - RUD2 - SK2 - - - - - Clear Mixes? - Wyczyść miksery? - - - - Really clear existing mixes on CH6? - Na pewno wyczyścić mikser na kanale 6? - - - - Really clear existing mixes on CH5? - Na pewno wyczyścić mikser na kanale 5? - - ThrottlePage @@ -12979,12 +13313,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 Timer %1 @@ -13000,7 +13334,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. m - + m @@ -13016,37 +13350,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent Cisza - + Beeps Dźwięk - + Voice Komunikaty głosowe - + Haptic Wibracje - + Not persistent Niestałe - + Persistent (flight) Stałe (lot) - + Persistent (manual reset) Stałe (Ręczny reset) @@ -13178,6 +13512,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator Symulator trenera @@ -13185,28 +13520,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index Indeks - + Name Nazwa - + Size Wielkość - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. Modele - + Model %1 Translators: do NOT use accents here, this is a default model name. Model %1 @@ -13801,93 +14141,89 @@ m2560 dla platformy V4 <b><u>Ostrzeżenie!</u></b><br>Normalnie typ procesora jest wybierany automatycznie zgodnie z wybranym firmware.<br>Jeśli zmienisz typ procesora dla EEpromu rezultaty mogą być nieprzewidywalne. - - downloadDialog - - - Downloading: - Pobierz: - - - - Unable to save the file %1: %2. - Nie mogę zapisać pliku %1: %2. - - - - Download failed: %1. - Pobieranie nieudane: %1. - - joystickDialog + Configure Joystick Ustaw joystick + Ch2 Kanał 02 + Ch1 Kanał 01 + Ch4 Kanał 04 + Ch6 Kanał 06 + Ch3 Kanał 03 + Ch5 Kanał 05 + Ch7 Kanał 07 + Ch8 Kanał 08 + Instructions Instrukcje + Enable Aktywuj + Cancel Przerwij + Back Cofnij + Start Start @@ -13898,6 +14234,7 @@ m2560 dla platformy V4 + Ok OK diff --git a/companion/src/translations/companion_sv.ts b/companion/src/translations/companion_sv.ts index ad95f82f0..8985ae180 100644 --- a/companion/src/translations/companion_sv.ts +++ b/companion/src/translations/companion_sv.ts @@ -47,6 +47,33 @@ Andra Luftbromskanalen: + + AppData + + Application Settings have been saved to + %1 + + + + Could not save Application Settings to file "%1" + + + + because the file could not be saved (check access permissions). + + + + for unknown reasons. + + + + + AppMessages + + Show this message again at next startup? + + + AppPreferencesDialog @@ -257,12 +284,6 @@ Mode 4: Radio Type Radiotyp - - Set voice language. -May be different from firmware language - Välj röstspråk. -Behöver inte vara samma som menyspråk - Other Settings Andra Inställningar @@ -275,10 +296,6 @@ Behöver inte vara samma som menyspråk SD Structure path Sökväg till SD-struktur - - Voice Language - Röstspråk - Application Settings Programmet @@ -447,18 +464,6 @@ Behöver inte vara samma som menyspråk Select Executable - - Use releases (stable) - - - - Use release candidates (testing) - - - - Use nightly builds (unstable) - - most recently used files @@ -531,6 +536,26 @@ Behöver inte vara samma som menyspråk Select a folder for application logs + + Release channel + + + + Releases (stable) + + + + Release candidates (testing) + + + + Nightly builds (unstable) + + + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + BinEepromFormat @@ -770,14 +795,17 @@ Behöver inte vara samma som menyspråk %2. + + Line nn, Col nn + + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - OpenTX Companion @@ -794,10 +822,6 @@ Do you want to import them? Error Fel - - Please Confirm - - files @@ -834,6 +858,98 @@ Do you want to import them? <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + The saved settings could not be imported, please try again or continue with current settings. + + + + Import from File + + + + Import from v%1 + + + + Do not import + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + Import settings from a file, or start with current values. + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + Select %1: + + + + Save application settings to file... + + + + Load application settings from file or previous version... + + + + Reset ALL application settings to default and remove radio profiles... + + + + Exit before settings initialization and application startup. + + + + Print version number and exit. + + + + Print this help text. + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + Would you like to perform a backup first? + + + + Application settings were reset and saved. + + + + Application Settings + Programmet + + + Select or create a file for exported Settings: + + + + Press the 'Retry' button to choose another file. + + + + settings + + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + CompareDialog @@ -873,6 +989,10 @@ Do you want to import them? Click to remove this model. + + Style + + ConclusionPage @@ -1102,6 +1222,14 @@ Do you want to import them? Are you sure you want to reset all curves? Är du säker på att du vill ta bort alla kurvor? + + Point size + + + + Popup menu available + + CustomFunctionData @@ -1119,7 +1247,7 @@ Do you want to import them? Trainer - + Elev Trainer RUD @@ -1273,14 +1401,6 @@ Do you want to import them? Value Värde - - Decr: - Minsk: - - - Incr: - Öka: - played once, not during startup @@ -1324,10 +1444,6 @@ Do you want to import them? ON - - Unable to find sound file %1! - Kan inte hitta ljudfilen %1! - &Delete &Ta bort @@ -1364,6 +1480,19 @@ Do you want to import them? Increment Ökning + + Popup menu available + + + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) + + + + Unable to find or open sound file: +%1 + + CustomizeSplashDialog @@ -1521,14 +1650,6 @@ Do you want to import them? OpenTX on this board doesn't accept this function OpenTX stödjer inte funktionen för den aktuella hårdvaran - - OpenTX doesn't accept this telemetry protocol - OpenTX accepterar inte detta telemetri-protokoll - - - OpenTX doesn't allow this number of channels - OpenTX accepterar inte detta antal kanaler - OpenTX doesn't accept this radio protocol OpenTX accepterar inte detta radio-protokoll @@ -1602,6 +1723,21 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + Downloading: + Nedladdning: + + + Unable to save the file %1: %2. + Kan ej spara filen %1: %2. + + + Download failed: %1. + Nedladdningen misslyckades: %1. + + EEPROMInterface @@ -1670,10 +1806,6 @@ To <b>remove a remembered entry</b> from the filter list, first cho To keep your original file as a backup, please choose File -> Save As specifying a different name. - - Warnings! - - EepeFormat @@ -1800,10 +1932,6 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Edit %1 Redigera %1 - - Click to access popup menu - - Clear All @@ -1816,6 +1944,10 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Invert All + + Popup menu available + + ExportableTableView @@ -1883,6 +2015,226 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Roll-kanal: + + FileSyncDialog + + Synchronize Files + + + + Are you sure you wish to abort the sync? + + + + Source Folder: + + + + Destination Folder: + + + + %1%2 Both directions, to destination folder first + + + + %1%2 Both directions, to source folder first + + + + %1 Only from source folder to destination folder + + + + %1 Only from destination folder to source folder + + + + How to handle overwriting files which already exist in the destination folder. + + + + Copy only if newer and different (compare contents) + + + + Copy only if newer (do not compare contents) + + + + Copy only if different (ignore file time stamps) + + + + Always copy (force overwite existing files) + + + + Any size + + + + Skip files larger than this size. Enter zero for unlimited. + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + Skipped + + + + Created + + + + Updated + + + + Errors Only + + + + Test-run only + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + Log Level: + + + + Filters: + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + Include: + + + + Exclude: + + + + Case sensitive + + + + Follow links + + + + Include hidden + + + + Recursive + + + + Skip empty + + + + Apply filters + + + + Filter Options: + + + + Folder Options: + + + + Options + + + + Show extra options + + + + Reset to defaults + + + + Close + Stäng + + + Sync. Direction: + + + + Existing Files: + + + + Max. File Size: + + + + MB + + + + KB + + + + Abort + + + + Start + Start + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + Current: <b>%1</b> of + + + + Source folder not found. + + + + Destination folder not found. + + + + Source and destination folders are the same. + + + Firmware @@ -1901,10 +2253,6 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. FAI MODE (no telemetry) always enabled FAI-LÄGE (ingen telemetri) alltid aktivt - - Support for the DIY-Multiprotocol-TX-Module - - Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 @@ -1921,82 +2269,14 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Enable Lua custom scripts screen - - Enable Lua compiler - - Use alternative SQT5 font Använd SQT5-typsnittet - - ST7565P LCD or compatible - ST7565P LCD eller kompatibel - - - ST7565R LCD or compatible - ST7565R LCD eller kompatibel - - - ERC12864FSF LCD - ERC12864FSF LCD - - - ST7920 LCD - ST7920 LCD - - - KS108 LCD - - - - WTV20 voice module - - - - JQ6500 voice module - - - - Support for frsky telemetry mod - Stöd för FrSky telemeri - - - Support for telemetry easy board - Stöd för TelemetryEZ-kort - - - Support for jeti telemetry mod - Stöd för Jeti telemetri - - - Support for receiving ardupilot data - Stöd för att ta emot ardupilot-data - - - Support for receiving NMEA data - Stöd för att ta emot NMEA-data - - - Support for MAVLINK devices - Stöd för MAVLINK-enheter - - - Rotary Encoder use in menus navigation - Använd inmatningshjul för att navigera i menyer - Pots use in menus navigation Använd potentiometrar förr menyskrollning - - Support for DSM2 modules - Stöd för DSM2-moduler - - - Support for DSM2 modules using ppm instead of true serial - Stöd för DSM2-moduler via ppm istället för via seriellt gränssnitt - FrSky Taranis X9D+ @@ -2037,10 +2317,6 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. FrSky Taranis X-Lite - - Use JR-sized R9M module - - FrSky Horus X10 / X10S @@ -2061,10 +2337,6 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Enable HELI menu and cyclic mix support Slå på helikoptermenyn och stöd för cyklisk mix - - No flight modes - Inga flyglägen - Global variables Globala variabler @@ -2093,98 +2365,18 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Turnigy 9XR with m128 chip - - Enable heli menu and cyclic mix support - Slå på helikoptermenyn och stöd för cyklisk mix - - - Enable TEMPLATES menu - Slå på menyn Mallar - - - No splash screen - Ingen startbild - - - Disable curves menus - Slå av menyn för kurvor - - - Support for radio modified with regular speaker - Stöd för sändare modifierad med en vanlig högtalare - - - Used if you have modified your radio with voice mode - Används om en röstmodul monterats i sändaren - - - Used if you have modified your radio with haptic mode - Används om vibrator monterats i sändaren - - - PPM center adjustment in limits - Justering av PPM-centrum i menyn för Gränser - - - Symetrical Limits - Symetriska Gränser - - - Enable the throttle trace in Statistics - Slå på gasspårning i statistiken - - - EEprom write Progress bar - Visa skrivning av modelldata - - - Imperial units - British Imperial Units - Turnigy 9XR - - No Winged Shadow How High support - Inget stöd för Winged Shadow How High - - - No vario support - Vario stöds ej - - - No GPS support - GPS-stöd saknas - - - No gauges in the custom telemetry screen - Inga mätare i på telemetri-skärmen - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - Addera stöd för reversering av spakar (behövs om man byter till FrSky-spakar) - 9X with stock board - - SmartieParts 2.2 Backlight support - Stöd för belysning mha. SmartieParts v2.2 - Enable resetting values by pressing up and down at the same time Slå på nollställning av värden genom att hålla ned upp- och ned-knappen samtidigt - - EEprom write progress bar - Grafisk visning av skrivning till eeprom - - - Allow compensating for offset errors in FrSky FAS current sensors - Tillåt justering av offsett-fel i FrSkys FAS ström-sensorer - 9X with stock board and m128 chip @@ -2201,21 +2393,45 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. 9X with Gruvin9x board - - Support for SD memory card - Stöd för SD-minneskort - - - Support of FrSky PXX protocol - Stöd för FrSky PXX-protokoll - DIY MEGA2560 radio - Power management by soft-off circuitry - Strömbrytare styrd av mjukvara + Enable non certified firmwares + + + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9-Lite + + + + Support for auto update on boot + + + + FrSky Taranis X-Lite S/PRO + + + + Support for ACCESS internal module replacement + + + + FrSky Horus X10 Express + + + + Jumper T12 + + + + Enable non certified R9M firmwares + @@ -2244,6 +2460,10 @@ Om fältet lämnas tomt så är raden aktivt hela tiden. Download SD contents + + Unknown + Okänd + FlapsPage @@ -2572,14 +2792,6 @@ Du använder för närvarande: unknown okänd - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - Din radio verkar inte vara ansluten via USB eller så är USB-drivrutinen inte installerad!!! - -Använd Zadig för att installera drivrutinen. - Your radio does not seem connected to USB or the driver is not initialized!!!. Din radio verkar inte vara ansluten via USB eller så är USB-drivrutinen inte startad!!!. @@ -2689,6 +2901,10 @@ Använd Zadig för att installera drivrutinen. 0.0 6P {0.0?} + + Popup menu available + + FlightModesPanel @@ -3008,10 +3224,6 @@ Dessa inställningar gäller för alla modeller. Measurement Units Måttenheter - - hh° (N/S) mm' ss''.dd - hh° (N/S) mm' ss''.dd - NMEA NMEA @@ -3665,6 +3877,38 @@ brytare USB Serial (CDC) + + Owner Registration ID + + + + aaaaaaAA + + + + Power On Delay + + + + Jack Mode + + + + Audio + + + + Trainer + Elev + + + DMS + + + + Power Off Delay + + GeneralSetupPanel @@ -3828,22 +4072,6 @@ Are you sure ? PPM 2 PPM 2 - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - Summervolym - -0 - Tyst. Inga pip alls. -1 - Ej vid knapptryck. Normala pip, men inte vid knapptryckningar. -2 - Normalt. -3 - Högt. -4 - Extra högt. - OFF Av @@ -3996,6 +4224,14 @@ Are you sure ? Device Name: + + Antenna + + + + S5 + + HardwarePanel @@ -4031,6 +4267,42 @@ Are you sure ? Slider with detent Skjutpot med mittklick + + OFF + Av + + + Enabled + + + + Telemetry + Telemetri + + + Trainer + Elev + + + Internal + + + + Ask + + + + Per model + + + + Internal + External + + + + External + + Heli @@ -4394,6 +4666,10 @@ Are you sure ? (infinite) + + Popup menu available + + LogsDialog @@ -4461,10 +4737,6 @@ Are you sure ? New graph name: Nytt grafnamn: - - Error: no GPS data not found - Fel: GPS-data saknas - The column containing GPS coordinates must be named "GPS". @@ -4533,6 +4805,10 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Save session CSV + + Error: no GPS data found + + MainWindow @@ -4548,10 +4824,6 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt No updates available at this time. Inga updateringar finns tillgängliga. - - Unable to check for updates. - Det gick inte att söka efter uppdateringar. - Executable (*.exe) Program (*.exe) @@ -4791,10 +5063,6 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Release Notes Release Notes - - Do you want to download release %1 now ? - Vill du ladda ned firmware %1 nu ? - The new theme will be loaded the next time you start Companion. De nya ikonerna kommer att användas nästa gång Companion startas. @@ -4815,10 +5083,6 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Do you want to write the firmware to the radio now ? Vill du skriva firmware till radion nu? - - Ignore this release %1? - Hoppa över den här versionen (%1) ? - Read Models and Settings From Radio Läs Modeller och Inställningar från radion @@ -4967,18 +5231,6 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt SD card synchronization Synkronisering av SD-kort - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - Programvaran %1 för radion verkar inte ha laddats ned. -Version %2 finns tillgänglig. -Vill du ladda ned den nu? - -Vi rekommenderar att du använder knappen nedan för att ta del av de senaste förändringarna och bedöma om de är viktiga för dig. - A new version of %1 firmware is available: - current is %2 @@ -5051,10 +5303,6 @@ Vi rekommenderar att du använder knappen nedan för att ta del av de senaste f Would you like to open the disk image to install the new version? - - Show this message again at next startup? - - A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> @@ -5073,118 +5321,6 @@ Do you wish to continue? No Radio or SD card detected! - - :: Options - - - - Local Folder: - - - - Radio Folder: - - - - Sync. Direction: - - - - %1%2 Both directions, to radio folder first - - - - %1%2 Both directions, to local folder first - - - - %1 Only from local folder to radio folder - - - - %1 Only from radio folder to local folder - - - - Existing Files: - - - - How to handle overwriting files which already exist in the destination folder. - - - - Copy only if newer and different (compare contents) - - - - Copy only if newer (do not compare contents) - - - - Copy only if different (ignore file time stamps) - - - - Always copy (force overwite existing files) - - - - Max. File Size: - - - - Any size - - - - Skip files larger than this size. Enter zero for unlimited. - - - - Test-run only - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - MB - - - - KB - - - - Source and destination folders are the same! - - - - Source folder not found: %1 - - - - Destination folder not found: %1 - - - - :: Error - - - - :: Progress - - - - Release notes - - - - Cannot retrieve release notes from the server. - - Close Stäng @@ -5317,6 +5453,134 @@ Do you wish to continue? Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! + + No Companion release candidates are currently being served for this version, please switch release channel + + + + No nightly Companion builds are currently being served for this version, please switch release channel + + + + No Companion release builds are currently being served for this version, please switch release channel + + + + Companion update check failed, new version information not found. + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + Channel changed to RC, please restart the download process + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + Channel changed to Release, please restart the download process + + + + This radio (%1) is not currently available in this firmware release channel + + + + Firmware update check failed, new version information not found or invalid. + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + Do you want to download version %1 now ? + + + + Ignore this version %1? + + + + Local Folder + + + + Radio Folder + + + + Export Application Settings.. + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + Import Application Settings.. + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Please save or close all modified files before importing settings + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + Confirm Settings Import + + + + Select %1: + + + + backup + + + + Press the 'Ignore' button to continue anyway. + + + + The settings could not be imported. + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + <p>The previous settings were backed up to:<br> %1</p> + + MdiChild @@ -5602,10 +5866,6 @@ Vill du spara förändringarna? Cannot duplicate model, could not find an available model slot. - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - Do you wish to continue with the conversion? @@ -5622,6 +5882,10 @@ Vill du spara förändringarna? Companion :: Conversion Result for %1 + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + MixData @@ -6052,22 +6316,6 @@ p, li { white-space: pre-wrap; } Master/Jack Tränare/Uttag - - Rudder - Sidroder - - - Elevator - Höjdroder - - - Throttle - Gas - - - Aileron - Skevroder - Persistent Bestående @@ -6180,34 +6428,10 @@ p, li { white-space: pre-wrap; } OFF Av - - ??? - ??? - bytes - - 10mW - - - - 100mW - - - - 500mW - - - - 1W - 6P {1W?} - - - 25mW - - Mode Läge @@ -6260,14 +6484,6 @@ p, li { white-space: pre-wrap; } RF Output Power - - Telemetry - Telemetri - - - ???? - - None Ingen @@ -6420,26 +6636,6 @@ p, li { white-space: pre-wrap; } Always Alltid - - Trainer Port - Trainer-ingång - - - Internal Radio System - Intern Radosändare - - - External Radio Module - Extern Sändarmodul - - - Radio System - Radiosystem - - - Extra Radio System - Ytterligare Radiosystem - Source @@ -6664,6 +6860,10 @@ p, li { white-space: pre-wrap; } Filename Filnamn + + Error: Unable to open or read file! + + ModelSelectionPage @@ -6806,14 +7006,6 @@ p, li { white-space: pre-wrap; } Antenna - - Internal - - - - Ext. + Int. - - Option value @@ -6848,26 +7040,38 @@ p, li { white-space: pre-wrap; } RF Output Power - - 10 mW - - - - 100 mW - - - - 500 mW - - - - 1000 mW - - Sub Type + + Receiver 1 + + + + X + X + + + Receiver 2 + + + + Receiver 3 + + + + WARNING: changing RF Output Power needs RE-BIND + + + + Registration ID + + + + WARNING: Requires non-certified firmware! + + ModuleData @@ -6879,29 +7083,65 @@ p, li { white-space: pre-wrap; } Negative Negativ - - - ModulePanel Trainer Port - Trainer-ingång + Trainer-ingång Internal Radio System - Intern Radosändare + Intern Radosändare External Radio Module - Extern Sändarmodul - - - Radio System - Radiosystem + Extern Sändarmodul Extra Radio System - Ytterligare Radiosystem + Ytterligare Radiosystem + + Radio System + Radiosystem + + + 10mW - 16CH + + + + 100mW - 16CH + + + + 500mW - 16CH + + + + Auto <= 1W - 16CH + + + + 25mW - 8CH + + + + 25mW - 16CH + + + + 200mW - 16CH (no telemetry) + + + + 500mW - 16CH (no telemetry) + + + + 100mW - 16CH (no telemetry) + + + + + ModulePanel Value Värde @@ -6914,6 +7154,22 @@ p, li { white-space: pre-wrap; } No Pulse Ingen Puls + + Ask + + + + Internal + + + + Internal + External + + + + External + + MultiModelPrinter @@ -6929,14 +7185,6 @@ p, li { white-space: pre-wrap; } Switch Brytare - - Fade IN - - - - Fade OUT - - GV%1 GV%1 @@ -7081,14 +7329,6 @@ p, li { white-space: pre-wrap; } Countdown Nedräkning - - Minute call - - - - Persistence - - Modules @@ -7113,10 +7353,6 @@ p, li { white-space: pre-wrap; } Ring - - Global variables - Globala variabler - Prec @@ -7253,6 +7489,38 @@ p, li { white-space: pre-wrap; } Telemetry Screens + + Min.call + + + + Persist + + + + F.In + + + + F.Out + + + + Global vars + + + + GF%1 + GF%1 + + + Global Functions + Globala Funktioner + + + Checklist + + Multiprotocols @@ -7288,6 +7556,14 @@ p, li { white-space: pre-wrap; } CC2500 frequency fine tune + + Fixed ID value + + + + Custom - proto %1) + + MultirotorPage @@ -7404,6 +7680,10 @@ p, li { white-space: pre-wrap; } ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) ODF filer (*.odt);;PDF Filer(*.pdf);;HTML-Filer (*.htm *.html);;Alla Filer (*) + + Style + + ProgressDialog @@ -7622,6 +7902,14 @@ e s + + FM%1 + FM%1 + + + GV%1 + GV%1 + RadioSwitchWidget @@ -8258,6 +8546,14 @@ s TELE + + Internal + + + + External + + Setup @@ -8410,6 +8706,14 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga THR GAS + + Profile Settings + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -8573,6 +8877,14 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga <font size=+3>&#x2261;</font> + + S + + + + <pre>[ SHIFT ]</pre> + + SimulatorMain @@ -9066,48 +9378,97 @@ The default is configured in the chosen Radio Profile. Kan inte hitta filen %1 ! + + StyleEditDialog + + Style Sheet Editor + + + + &Reset to default + + + + &Cancel + + + + &OK + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + Cannot retrieve style %1 +Error: %2 + + + + Cannot retrieve default style %1 +Error: %2 + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + Style sheet data read from '%1' + + + + Style sheet data unable to be read from '%1' + + + + Cannot create folder '%1' + + + + Cannot open file for writing '%1': Error: %2 + + + + Cannot write to file '%1': Error: %2 + + + + Cannot flush buffer for file '%1': Error: %2 + + + + Style sheet written to '%1' + + + + Custom style sheet deleted: '%1' + + + + Unable to delete custom style sheet: '%1' + + + SyncProcess - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; - - [TEST RUN] - - Gathering file information... - - Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - Synchronizing %1 -&gt; %2: %3 - - - - Starting synchronization: %1 -&gt; %2<br> - - Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - Creating directory: %1 @@ -9116,10 +9477,6 @@ The default is configured in the chosen Radio Profile. Could not create directory: %1 - - Destination directory exists: %1 - - Skipping older file: %1 @@ -9136,20 +9493,80 @@ The default is configured in the chosen Radio Profile. Skipping identical file: %1 - - Replacing destination file: %1 - - Could not delete destination file '%1': %2 - Creating destination file: %1 + Copy failed: '%1' to '%2': %3 - Copy failed: '%1' to '%2': %3 + Gathering file information for %1... + + + + No files found in %1 + + + + Synchronization aborted at %1 of %2 files. + + + + Synchronization finished with %1 files in %2m %3s. + + + + Synchronizing: %1 + To: %2 + + + + Starting synchronization: + %1 -> %2 + + + + + +Too many errors, giving up. + + + + Skipping filtered file: %1 + + + + Skipping linked file: %1 + + + + Aborted synchronization of: + + + + Finished synchronizing: + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + Directory exists: %1 + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Replacing file: %1 + + + + Creating file: %1 @@ -9333,6 +9750,10 @@ The default is configured in the chosen Radio Profile. Disable telemetry audio warnings + + Source + + TelemetryAnalog @@ -9534,6 +9955,10 @@ The default is configured in the chosen Radio Profile. Cells + + Source + + TelemetrySensor @@ -9749,6 +10174,14 @@ The default is configured in the chosen Radio Profile. Rad + + Rx + + + + Mod. + + TelemetrySensorPanel @@ -9896,10 +10329,6 @@ Timestamp ml - - Deg. C - - % % @@ -10014,135 +10443,20 @@ hh:mm:ss RAS - - - Templates - Simple 4-CH + Setting RSSI to zero simulates telemetry and radio link loss. - T-Cut + Set RSSI to zero when paused. - Sticky T-Cut + Stop sending telemetry data when the Telemetry Simulator window is hidden. - V-Tail - V-stjärt - - - Elevon\Delta - - - - Heli Setup - - - - Heli Setup with gyro gain control - - - - Gyro gain control - - - - Heli Setup (Futaba's channel assignment style) - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - - - - Gyro gain control (Futaba's channel assignment style) - - - - Servo Test - - - - MultiCopter - - - - Use Model Config Wizard - - - - Apply Template? - - - - Apply template "%1"? - - - - RUD - - - - ELE - - - - THR - GAS - - - AIL - - - - AIL2 - - - - ELE2 - - - - FLAPS - - - - FLAP%1 - - - - PITCH - - - - GYRO - - - - SPOIL - - - - SPOIL%1 - - - - RUD2 - - - - Clear Mixes? - Ta bort mixarna? - - - Really clear existing mixes on CH6? - - - - Really clear existing mixes on CH5? + Pause simulation when hidden. @@ -10344,6 +10658,10 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Translators: do NOT use accents here, this is a default model name. + + RX # + + VTailPage @@ -10802,21 +11120,6 @@ m2560 för v4.1-kort Hjälp för Avrdude - - downloadDialog - - Downloading: - Nedladdning: - - - Unable to save the file %1: %2. - Kan ej spara filen %1: %2. - - - Download failed: %1. - Nedladdningen misslyckades: %1. - - joystickDialog diff --git a/companion/src/translations/companion_zh_CN.ts b/companion/src/translations/companion_zh_CN.ts index 5bec62fcb..9e5838f9d 100644 --- a/companion/src/translations/companion_zh_CN.ts +++ b/companion/src/translations/companion_zh_CN.ts @@ -60,6 +60,38 @@ 第二个空气刹车通道: + + AppData + + + Application Settings have been saved to + %1 + + + + + Could not save Application Settings to file "%1" + + + + + because the file could not be saved (check access permissions). + + + + + for unknown reasons. + + + + + AppMessages + + + Show this message again at next startup? + + + AppPreferencesDialog @@ -75,93 +107,81 @@ 遥控器档案 - + Profile Name 档案名称 - + Radio Type 遥控器型号 - + Menu Language 遥控器档案中 菜单语言 - - Voice Language - 语音语言 - - - - Set voice language. -May be different from firmware language - 设置语音文件语言 -可以与固件语言不同 - - - + Build Options 编译选项 - + Splash Screen 遥控器档案中 开机画面 - + Other Settings 其他设置 - + SD Structure path SD卡目录 - - + + The profile specific folder, if set, will override general Backup folder 制定档案目录,如果设定此目录,将代替默认备份目录 - + Backup folder 备份目录 - + If set it will override the application general setting 如果设置将会代替程序一般设定 - + if set, will override general backup enable 如果设定将会覆盖一般备份允许选项 - - + + Enable automatic backup before writing firmware 写入固件前允许自动备份 - + General Settings 一般设定 - + Default Stick Mode 默认摇杆模式 - + Mode selection: Mode 1: @@ -192,476 +212,486 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) 遥控器档案中 MODE1 日本手 ↕升降↔方向 ↕油门↔副翼 - + Mode 2 (RUD THR ELE AIL) MODE2 美国手 ↕油门↔方向 ↕升降↔副翼 - + Mode 3 (AIL ELE THR RUD) MODE3 中国手 ↕升降↔副翼 ↕油门↔方向 - + Mode 4 (AIL THR ELE RUD) MODE4 模式4 ↕油门↔副翼 ↕升降↔方向 - + Default Channel Order 遥控器档案中 默认通道顺序 - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>通道顺序</p><p><br/></p><p>定义了新建模型时默认设置的通道顺序</p></body></html> - + R E T A 方向 升降 油门 副翼 [R E T A] - + R E A T 方向 升降 副翼 油门 [R E A T] - + R T E A 方向 油门 升降 副翼 [R T E A] - + R T A E 方向 油门 副翼 升降 [R T A E] - + R A E T 方向 副翼 升降 油门 [R A E T] - + R A T E 方向 副翼 油门 升降 [R A T E] - + E R T A 升降 方向 油门 副翼 [E R T A] - + E R A T 升降 方向 副翼 油门 [E R A T] - + E T R A 升降 油门 方向 副翼 [E T R A] - + E T A R 升降 油门 副翼 方向 [E T A R] - + E A R T 升降 副翼 方向 油门 [E A R T] - + E A T R 升降 副翼 油门 方向 [E A T R] - + T R E A 油门 方向 升降 副翼 [T R E A] - + T R A E 油门 方向 副翼 升降 [T R A E] - + T E R A 油门 升降 方向 副翼 [T E R A] - + T E A R 油门 升降 副翼 方向 [T E A R] - + T A R E 油门 副翼 方向 升降 [T A R E] - + T A E R 油门 副翼 升降 方向 [T A E R] - + A R E T 副翼 方向 升降 油门 [A R E T] - + A R T E 副翼 方向 油门 升降 [A R T E] - + A E R T 副翼 升降 方向 油门 [A E R T] - + A E T R 副翼 升降 油门 方向 [A E T R] - + A T R E 副翼 油门 方向 升降 [A T R E] - + A T E R 副翼 油门 升降 方向 [A T E R] - + Append version number to FW file name 将版本号添加到固件文件的文件名中 - + Offer to write FW to Tx after download 下载完成后提示将固件写入到遥控器 - + Action on New Model - + Screenshot capture folder - + Clear Image 清除图片 - + Select Image 遥控器档案中 选择图片 - - - - - - + + + + + + Select Folder 选择目录 - + Application Settings 程序首选项 - + Automatic check for Companion updates 自动检查 Companion 版本更新 - - Use releases (stable) - - - - - Use release candidates (testing) - - - - - Use nightly builds (unstable) - - - - + most recently used files - + Startup Settings - + Remember - + Show splash screen when Companion starts Companion 启动时显示启动画面 - + Automatic check for OpenTX firmware updates 自动检查 OpenTX 固件版本更新 - + Output Logs Folder - + <html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html> - + Remove empty model slots when deleting models (only applies for radios w/out categories) - + Use model wizard - + Open model editor - + Just create the model - + Debug Output Logging - + <html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html> - + Application (Companion/Simulator) - + <html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html> - + Radio Firmware (in Simulator) - + Splash Screen Library 开机画面图片库 - + Google Earth Executable Google Earch 可执行文件 - + User Splash Screens 自定义开机画面 - + Automatic Backup Folder 自动备份目录 - + Only show user splash images 只显示自定义开机画面 - + Show user and companion splash images 显示自定义和系统开机画面 - + Select Executable 选择可执行文件 - + + Release channel + + + + + Releases (stable) + + + + + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + Simulator Settings 模拟器设置 - + Calibrate 校准 - + Blue 蓝色 - + Green 绿色 - + Red 红色 - + Orange 橙色 - + Yellow 黄色 - + Only capture to clipboard 只截图到剪贴板中 - + Enable 使用游戏杆 - + Joystick 游戏杆 - + Simulator BackLight 模拟器背光颜色 - + Remember simulator switch values 关闭模拟器后记忆开关位置 - + Simulator Volume Gain 模拟器音量调节 - + My Radio 我的遥控器 - + <p><b>You cannot switch Radio Type or change Build Options while there are unsaved file changes. What do you wish to do?</b></p> <ul><li><i>Save All</i> - Save any open file(s) before saving Settings.<li><li><i>Reset</i> - Revert to the previous Radio Type and Build Options before saving Settings.</li><li><i>Cancel</i> - Return to the Settings editor dialog.</li></ul> - + Select your snapshot folder 选择你的快照目录 - - + + Note: Nightly builds are not available in this version, Release/RC update channel will be used. + + + + + No joysticks found 找不到游戏杆 - + EMPTY: No radio settings stored in profile 空白:在遥控器档案中找不到遥控器设定 - + AVAILABLE: Radio settings of unknown age 允许:不明日期的遥控器设定 - + AVAILABLE: Radio settings stored %1 允许:遥控器设定保存到 %1 - + Select your library folder 对话框标题栏 选择你的图片库文件夹 - - + + Select your Models and Settings backup folder 对话框标题栏 选择你的模型和设定备份文件夹 - + Select a folder for application logs - + Select Google Earth executable 对话框标题栏 选择 Google Earth 可执行文件 - + Select the folder replicating your SD structure 对话框标题栏 选择模拟SD卡目录结构的电脑文件夹 - + Open Image to load 打开图片并载入 - + Images (%1) 图片 (%1) @@ -674,25 +704,25 @@ Mode 4: - + Cannot save EEPROM - + Cannot open file %1: %2. - + Error writing file %1: %2. 写入文件错误 %1: %2. - + Invalid binary EEPROM file %1 @@ -700,57 +730,58 @@ Mode 4: Boards - + Left Horizontal 左摇杆水平方向 - + Left Vertical 左摇杆垂直方向 - + Right Vertical 右摇杆上下方向 - + Right Horizontal 右摇杆水平方向 - + Aux. 1 - + Aux. 2 - + + Unknown - + 未知[Unknown] - + Rud - + Ele - + Thr - + Ail @@ -799,93 +830,93 @@ Mode 4: Channels - + Name 在舵机设置页面中 通道名称 [Name] - + Subtrim 在舵机设置页面中 舵机中位 [Subtrim] - + Min 在舵机设置页面中 舵机下限 [Min] - + Max 在舵机设置页面中 舵机上限 [Max] - + Direction 在舵机设置页面中 舵机反向 [Dir] - + Curve 在舵机设置页面中 舵机曲线 [Curve] - + PPM Center 在舵机设置页面中 PPM中位脉宽 - + Linear Subtrim 在舵机设置页面中 线性微调 [Linear] - + CH%1 在舵机设置页面中 通道%1 - + Popup menu available - + --- 在舵机设置页面中 表示舵机正向 正向 [→] - + INV 在舵机设置页面中 反向 [←] - + &Copy - + &Cut 剪切 (&C) - + &Paste 粘贴 (&P) - + &Delete 删除 (&D) @@ -898,27 +929,32 @@ Mode 4: - + + Line nn, Col nn + + + + &Import... - + &Cancel - + &OK - + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + File: unknown @@ -972,85 +1008,193 @@ Mode 4: %2. + + + Line %1, Col %2 + + Companion - - We have found existing settings for Companion version: %1. -Do you want to import them? - - - - + OpenTX Companion - + Information 信息 - + Warning - + 启用时蜂鸣 [Warning] - + Error 错误 - - Please Confirm - + + Application Settings + 程序首选项 - + files - + Radio and Models settings - + + Select or create a file for exported Settings: + + + + + Press the 'Retry' button to choose another file. + + + + Simulator for this firmware is not yet available 模拟器现在还不支持此版固件 - + Uknown error during Simulator startup. - + Simulator Error - + Data Load Error - + Error occurred while starting simulator. - + <p><b>Welcome to OpenTX %1.</b></p><p>As the first step, please configure the initial Radio Profile by selecting your Radio Type, Menu Language, and Build Options.</p><p>You may also want to take this time to review the other available options in the displayed Settings dialog.</p><p>After saving your settings, we recommend you download the latest firmware for your radio by using the <i>File -&gt; Download</i> menu option.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for latest news, updates and documentation. Thank you for choosing OpenTX!</p>- The OpenTX Team. - + <p><b>Thank you for upgrading to OpenTX %1.</b></p><p>This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.</p><p>Please visit <a href='http://www.open-tx.org'>open-tx.org</a> for release notes and other documentation.</p>- The OpenTX Team. + + + <p>The radio type in the selected profile does not exist. Using the default type instead.</p> <p><b>Please update your profile settings!</b></p> + + + + + The saved settings could not be imported, please try again or continue with current settings. + + + + + Import from File + + + + + Import from v%1 + + + + + Do not import + + + + + We have found possible Companion settings backup file(s). +Do you want to import settings from a file? + + + + + Import settings from a file, or start with current values. + + + + + We have found existing settings for Companion version: %1. +Do you want to import them? + +If you have a settings backup file, you may import that instead. + + + + + Select %1: + + + + + Save application settings to file... + + + + + Load application settings from file or previous version... + + + + + Reset ALL application settings to default and remove radio profiles... + + + + + Exit before settings initialization and application startup. + + + + + Print version number and exit. + + + + + Print this help text. + + + + + Reset ALL application settings to default values and remove radio profiles, are you sure? + + + + + Would you like to perform a backup first? + + + + + Application settings were reset and saved. + + + + + settings + + CompareDialog @@ -1066,41 +1210,46 @@ Do you want to import them? - + Close Compare 模型对比对话框 关闭 - + + Style + + + + Print Compare 模型对比对话框 打印 - + Print to file Compare 模型对比对话框 打印到文件 - + Unnamed Model %1 - + Click to remove this model. - + Print Document Compare 模型对比对话框 打印文档 - + Select PDF output file Compare 模型对比对话框 选择PDF输出文件 @@ -1195,25 +1344,25 @@ Do you want to import them? CurveGroup - + Diff 用于INPUT和MIXER曲线选择项 差动曲线 [Diff] - + Expo 用于INPUT和MIXER曲线选择项 指数曲线 [Expo] - + Func 用于INPUT和MIXER曲线选择项 其他曲线 [Func] - + Curve 用于INPUT和MIXER曲线选择项 多点曲线 [Cstm] @@ -1271,7 +1420,7 @@ Do you want to import them? - + Curve type 曲线类型 @@ -1281,118 +1430,128 @@ Do you want to import them? 曲线生成器 - + Y at X=0 曲线中央的高度 - + + Point size + + + + Y at X=100 曲线最右侧高度 - + Both 两侧 - + x>0 仅创建右侧曲线 - + x<0 仅创建左侧曲线 - + Apply 应用 - + Side 仅创建单侧曲线 - + Y at X=-100 曲线最左侧高度 - + Coefficient 弯曲系数 - + Curve %1 曲线 %1 - + + Popup menu available + + + + %1 points %1 点 - + Linear 直线 - + Single Expo 非对称指数曲线 - + Symmetrical f(x)=-f(-x) 左右中心对称 - + Symmetrical f(x)=f(-x) 左右镜像对称 - + Editing curve %1 编辑曲线 %1 - + Not enough free points in EEPROM to store the curve. EEPROM中没有足够的空余曲线点存储空间. - + Copy 复制 - + Paste 粘贴 - + Clear curve 清除 - + Clear all curves 清除所有曲线 - + Are you sure you want to reset curve %1? 你确定想要重置曲线%1么? - + Are you sure you want to reset all curves? 你确定想要重置全部曲线么? @@ -1400,244 +1559,234 @@ Do you want to import them? CustomFunctionData - + GF - + SF - + Override %1 锁定通道值 %1 [Override] - + Trainer - + 教练功能 - + Trainer RUD 教练开关 方向 [Trainer RUD] - + Trainer ELE 教练开关 升降 [Trainer ELE] - + Trainer THR 教练开关 油门 [Trainer THR] - + Trainer AIL 教练开关 副翼 [Trainer AIL] - + Instant Trim 操纵杆位变微调 [Instant Trim] - + Play Sound 播放蜂鸣 [Play Sound] - + Haptic - + 振动 [Haptic] - + Reset - + 重设 - + Set Timer %1 设定计时器%1 [Set Timer] - + Vario 开启 Vario 声音 [Vario] - + Play Track 播放声音文件 [Play Track] - + Play Both 播放同时振动 [Play Both] - + Play Value 播放数值 [Play Value] - + Play Script 运行脚本 [Play Script] - + SD Logs SD Log 记录 [SD Logs] - + Volume 音量 [Volume] - + Backlight 背光 [Backlight] - + Screenshot 截屏 [Screenshot] - + Background Music 背景音乐播放 [Bg Music] - + Background Music Pause 背景音乐暂停 [Bg Music Pause] - + Adjust %1 - + SetFailsafe Int. Module 启动内置高频头失控保护 [SetFailsafe Int] - + SetFailsafe Ext. Module 启动外置高频头失控保护 [SetFailsafe Ext] - + RangeCheck Int. Module 内置高频头拉距测试 - + RangeCheck Ext. Module 外置高频头拉距测试 - + Bind Int. Module 内置高频头对频 - + Bind Ext. Module 外置高频头对频 - + Timer1 计时器1 [Timer1] - + Timer2 计时器2 [Timer2] - + Timer3 计时器3 [Timer3] - + Flight 飞行 [Flight] - + Telemetry - + Rotary Encoder 旋转编码器 [Rotary Encoder] - + REa - + REb - + s - - - + + + <font color=red><b>Inconsistent parameter</b></font> <font color=red><b>不一致的参数</b></font> - + Value - - Decr: - 减少: - - - - Incr: - 增加: - - - + played once, not during startup 播放一次但开机时不播放 - + repeat(%1s) 每%1秒重复 - + DISABLED 禁用 - + CFN @@ -1669,68 +1818,79 @@ Do you want to import them? 是否启用 - + + Popup menu available + + + + SF%1 CustomFunctionPanel SF%1 - + GF%1 CustomFunctionPanel GF%1 - + ON CustomFunctionPanel 启用 - - Value + + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + + Unable to find or open sound file: +%1 + + + + + Value + 设为 + + + Source - + GVAR GVAR - + Increment 增加 - - Unable to find sound file %1! - 找不到声音文件 %1! - - - + &Copy CustomFunctionPanel 复制 (&C) - + &Cut CustomFunctionPanel 剪切 (&C) - + &Paste CustomFunctionPanel 粘贴 (&P) - + &Delete CustomFunctionPanel 删除 (&D) @@ -1894,69 +2054,53 @@ Do you want to import them? DataField - + Conversion error on field %1 - + Switch - + Switch 启动开关 - + cannot be exported on this board! 无法输出到这个主板! - + Source - + Source %1 cannot be exported on this board! 源 %1 无法输出到这个主板! - + OpenTX only accepts %1 points in all curves OpenTX只允许最大%1点曲线 - + OpenTx only accepts %1 points in all curves OpenTX只允许最大%1点曲线 - - - - - - + + OpenTX on this board doesn't accept this function OpenTX在这个主板上不支持此项功能 - - OpenTX doesn't accept this telemetry protocol - OpenTX 不接受此回传协议 - - - - OpenTX doesn't allow this number of channels - OpenTX 不允许此通道数量 - - - - - + OpenTX doesn't accept this radio protocol OpenTX 不接受此遥控器协议 @@ -1965,72 +2109,86 @@ Do you want to import them? DebugOutput + Debug Output Debug 输出 + <html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html> + Filter: + <html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p> To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html> + Buffer: + Number of lines to keep in display. + Filter &Help + Show information about using the filter. + Word &Wrap + Toggle word wrapping on/off. + &Clear (&C)清除 + Clear the output window of all text. + Enable &Filter + Turn the filter on/off. @@ -2045,6 +2203,25 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + DownloadDialog + + + Downloading: + 下载中: + + + + Unable to save the file %1: %2. + 无法保存文件 %1: +%2. + + + + Download failed: %1. + 下载失败:%1. + + EEPROMInterface @@ -2119,23 +2296,18 @@ To <b>remove a remembered entry</b> from the filter list, first cho - + - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - 你的遥控器可能使用了错误的固件, eeprom 大小为4096但仅前半部分的2048被使用 - + - Your eeprom is from an old version of OpenTX, upgrading! To keep your original file as a backup, please choose File -> Save As specifying a different name. - - - Warnings! - 警告! - EepeFormat @@ -2316,7 +2488,7 @@ If blank then the input is considered to be "ON" all the time. - Click to access popup menu + Popup menu available @@ -2416,572 +2588,533 @@ If blank then the input is considered to be "ON" all the time.滚转通道 [Roll]: + + FileSyncDialog + + + Synchronize Files + + + + + Are you sure you wish to abort the sync? + + + + + Source Folder: + + + + + Destination Folder: + + + + + %1%2 Both directions, to destination folder first + + + + + %1%2 Both directions, to source folder first + + + + + %1 Only from source folder to destination folder + + + + + %1 Only from destination folder to source folder + + + + + How to handle overwriting files which already exist in the destination folder. + + + + + Copy only if newer and different (compare contents) + + + + + Copy only if newer (do not compare contents) + + + + + Copy only if different (ignore file time stamps) + + + + + Always copy (force overwite existing files) + + + + + Any size + + + + + Skip files larger than this size. Enter zero for unlimited. + + + + + Minimum reporting level. Events of this type and of higher importance are shown. +WARNING: High log rates may make the user interface temporarily unresponsive. + + + + + Skipped + + + + + Created + + + + + Updated + + + + + Errors Only + + + + + Test-run only + + + + + Run as normal but do not actually copy anything. Useful for verifying results before real sync. + + + + + Log Level: + + + + + Filters: + + + + + The "Include" filter will only copy files which match the pattern(s). +The "Exclude" filter will skip files matching the filter pattern(s). +The Include filter is evaluated first. + + + + + One or more file pattern(s) to exclude, separated by commas. +Blank means exclude none. ?, *, and [...] wildcards accepted. + + + + + One or more file pattern(s) to include, separated by commas. +Blank means include all. ?, *, and [...] wildcards accepted. + + + + + Include: + + + + + Exclude: + + + + + Case sensitive + + + + + + Follow links + + + + + Include hidden + + + + + Recursive + + + + + Skip empty + + + + + Apply filters + + + + + Filter Options: + + + + + Folder Options: + + + + + + Options + + + + + Show extra options + + + + + Reset to defaults + + + + + Close + 关闭 + + + + Sync. Direction: + + + + + Existing Files: + + + + + Max. File Size: + + + + + MB + + + + + KB + + + + + Abort + + + + + Start + 开始通道 [CH] + + + + Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; + + + + + Current: <b>%1</b> of + + + + + Source folder not found. + + + + + Destination folder not found. + + + + + Source and destination folders are the same. + + + Firmware - + Channel values displayed in us 通道值显示为微秒 - + No OverrideCH functions available 不允许锁定通道值功能 - + Possibility to enable FAI MODE (no telemetry) at field 可选择启用 FAI 模式 (没有回传) - + FAI MODE (no telemetry) always enabled 一直启用 FAI 模式 (没有回传) - - Support for the DIY-Multiprotocol-TX-Module - 支持 DIY-Multiprotocol-TX-Module - - - + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 移除 D8 FrSky 协议支持,因为在20151月1日后在欧洲销售的遥控器中使用此协议是不合法的 - + + Disable HELI menu and cyclic mix support 禁用直升机菜单和CCPM混控菜单 - + + Disable Global variables 禁用GV[Global variables]功能 - + + Enable Lua custom scripts screen - - Enable Lua compiler - - - - - - - - - - - - - + Use alternative SQT5 font 使用 另一个 SQT5 font - - ST7565P LCD or compatible - ST7565P LCD或兼容型号 - - - - ST7565R LCD or compatible - ST7565R LCD或兼容型号 - - - - ERC12864FSF LCD - ERC12864FSF LCD - - - - ST7920 LCD - ST7920 LCD - - - - KS108 LCD - KS108 LCD - - - - WTV20 voice module - - - - - JQ6500 voice module - - - - - - Support for frsky telemetry mod - 支持 Frsky 回传模块 - - - - Support for telemetry easy board - 支持 telemetry easy board - - - - - Support for jeti telemetry mod - 支持J JETI 回传mod - - - - - Support for receiving ardupilot data - 支持接收 ardupilot 数据 - - - - - Support for receiving NMEA data - 支持接收 NMEA 数据 - - - - - Support for MAVLINK devices - 支持 MAVLINK 设备 - - - - Rotary Encoder use in menus navigation - 使用旋转编码器 进行菜单导航 - - - - - - - - - + Pots use in menus navigation 使用旋钮进行菜单导航 - - - - - - Support for DSM2 modules - 支持DSM2高频头 - - - - Support for DSM2 modules using ppm instead of true serial - 通过PPM而非真串行支持DSM2高频头 - - - + FrSky Taranis X9D+ FrSky Taranis X9D+ - - - + Support for PPM internal module hack 支持 hack PPM内置高频头 - + + Enable non certified firmwares + + + + Disable RAS (SWR) - + + FrSky Taranis X9D+ 2019 + + + + FrSky Taranis X9D FrSky Taranis X9D - + Haptic module installed 振动模块已经安装 - + FrSky Taranis X9E FrSky Taranis X9E - + Confirmation before radio shutdown 遥控器关机前确认 - + Horus gimbals installed (Hall sensors) Horus 摇杆已安装 (霍尔传感器) - + + FrSky Taranis X9-Lite + + + + + + Support for auto update on boot + + + + FrSky Taranis X7 / X7S - + + FrSky Taranis X-Lite S/PRO + + + + FrSky Taranis X-Lite - - Use JR-sized R9M module - - - - + FrSky Horus X10 / X10S - + FrSky Horus X12S - + Use ONLY with first DEV pcb version 只用与 DEV pcb 版本 - + Turnigy 9XR-PRO Turnigy 9XR-PRO - - - + Enable HELI menu and cyclic mix support 允许直升机菜单和斜盘混控支持 - - - - - - - - - - No flight modes - - - - - - - - - - - - + Global variables GV [Global variables] - - - - - - - - - + In model setup menus automatically set source by moving the control 在模型配置菜单通过移动摇杆自动设置源 - - - - - - - - - + In model setup menus automatically set switch by moving the control 在模型配置菜单通过拨动开关自动设置源 - - - - - - - - - + No graphical check boxes and sliders 无图形选择框和滑杆 - - - - - - - - - + Battery graph 电池图标 - - - - - - - - - + Don't use bold font for highlighting active items 不使用粗体高亮活动项目 - + + + Support for ACCESS internal module replacement + + + + + FrSky Horus X10 Express + + + + + Jumper T12 + + + + + Enable non certified R9M firmwares + + + + Turnigy 9XR with m128 chip Turnigy 9XR (m128芯片) - - - - - - - Enable heli menu and cyclic mix support - 允许直升机菜单和斜盘混控支持 - - - - - - - - - Enable TEMPLATES menu - 允许模板菜单 - - - - - - - No splash screen - 不使用开机画面 - - - - - - - - - Disable curves menus - 禁用曲线菜单 - - - - - - - - Support for radio modified with regular speaker - 支持改装过普通扬声器的遥控器 - - - - - - - - Used if you have modified your radio with voice mode - 使用, 如果你的遥控器加入语音板 - - - - - - - - Used if you have modified your radio with haptic mode - 使用, 如果你的遥控器改装过振动 - - - - - - - - PPM center adjustment in limits - 限值中调整PPM中位 - - - - - - - - - Symetrical Limits - 对称的舵机上下限 - - - - - - - Enable the throttle trace in Statistics - 允许记录油门信息 ,以便在遥控器Statistics菜单中显示 - - - - - - - - EEprom write Progress bar - EEPROM写入进度条 - - - - - - - - - Imperial units - 英制单位 - - - Turnigy 9XR Turnigy 9XR - - - No Winged Shadow How High support - 不支持 Winged Shadow How High - - - - - No vario support - 不支持Vario - - - - - No GPS support - 不支持 GPS - - - - - No gauges in the custom telemetry screen - 在自定义回传屏幕中没有仪表盘 - - - - - Add support for reversing stick inputs (e.g. needed for FrSky gimbals) - 增添了摇杆输入反向功能 (例如Frsky的摇杆组件需要此功能) - - - + 9X with stock board 9X (原装主板) - - - SmartieParts 2.2 Backlight support - 支持 SmartieParts 2.2 - - - - - - - - + Enable resetting values by pressing up and down at the same time 允许通过同时按上下键重设数值 - - EEprom write progress bar - EEPROM写入进度条 - - - - Allow compensating for offset errors in FrSky FAS current sensors - 允许补偿Frsky FAS电流传感器的偏移误差 - - - + 9X with stock board and m128 chip 9X (原装主板和m128芯片) - + 9X with AR9X board 9X (AR9X主板) - + 9X with Sky9x board 9X (Sky9x主板) - + 9X with Gruvin9x board 9X (Gruvin9x主板) - - - Support for SD memory card - 支持SD卡 - - - - - Support of FrSky PXX protocol - 支持 FrSky PXX 高频头协议 - - - + DIY MEGA2560 radio DIY的 MEGA2560 遥控器 - - - Power management by soft-off circuitry - 使用软关机电路控制电源 - FirmwarePreferencesDialog @@ -3019,6 +3152,11 @@ If blank then the input is considered to be "ON" all the time.FirmwarePref 最后下载的固件版本 + + + Unknown + 未知[Unknown] + FlapsPage @@ -3053,7 +3191,7 @@ If blank then the input is considered to be "ON" all the time.FlashEEpromDialog - + Write Models and Settings to Radio 将模型和设置写入到遥控器 @@ -3118,51 +3256,51 @@ If blank then the input is considered to be "ON" all the time.写入到遥控器 - + Current profile: %1 当前档案: %1 - + Choose Radio Backup file 选择遥控器备份文件 - + Wrong radio calibration data in profile, Settings not patched 此文档包含错误的遥控器校准数据.设置没有修改 - + Wrong radio setting data in profile, Settings not patched 此文档包含错误的遥控器设置数据.设置没有修改 - + Cannot write file %1: %2. 无法写入文件 %1: %2. - + Error writing file %1: %2. 写入文件错误 %1: %2. - + The radio firmware belongs to another product family, check file and preferences! 这个遥控器固件属于其他产品,检查文件和配置! - + The radio firmware is outdated, please upgrade! 这个遥控器固件已经过期, 请升级! - + Cannot check Models and Settings compatibility! Continue anyway? 无法检查模型和设置兼容性! 仍然继续么? @@ -3350,46 +3488,46 @@ If blank then the input is considered to be "ON" all the time.未找到可执行文件 %1 - + Writing... FlashProcess 写入中... - + Reading... FlashProcess 读取中... - + Verifying... FlashProcess 验证中... - + unknown FlashProcess 未知 - + ie: OpenTX for 9X board or OpenTX for 9XR board 例如: OpenTX for 9X 主板 或 OpenTX for 9XR 主板 - + ie: OpenTX for M128 / 9X board or OpenTX for 9XR board with M128 chip 例如: OpenTX for M128 / 9X 主板 或 带有M128芯片的OpenTX for 9XR 主板 - + ie: OpenTX for Gruvin9X board 例如: OpenTX for Gruvin9X 主板 - + Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. @@ -3398,7 +3536,7 @@ Please check advanced burn options to set the correct cpu type. 请检查高级烧录选项设置正确的cpu型号. - + Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. @@ -3407,7 +3545,7 @@ Please select an appropriate firmware type to program it. 请选择合适的用来编程它的固件类型. - + You are currently using: %1 @@ -3416,16 +3554,7 @@ You are currently using: %1 - - Your radio does not seem connected to USB or the driver is not installed!!! - -Please use ZADIG to properly install the driver. - 你的遥控器似乎没有连接到到USB端口,或没有安装驱动程序!!! - -请使用ZADIG来恰当的安装驱动程序. - - - + Your radio does not seem connected to USB or the driver is not initialized!!!. 你的遥控器似乎没有连接到到USB端口,或没有安装驱动程序!!!. @@ -3483,82 +3612,87 @@ Please use ZADIG to properly install the driver. FlightModePanel - + Rotary Encoder %1 - + Name - + Value source - + Value - + 设为 - + GVAR%1 全局变量[GV] %1 - + Popup enabled 屏幕弹窗提示 - + + Popup menu available + + + + Trim disabled 不使用微调 - + Own Trim 使用单独的微调值 - + Use Trim from Flight mode %1 使用 FM%1 的微调值 - + Use Trim from Flight mode %1 + Own Trim as an offset 使用 FM%1 的微调值 + 单独的微调偏移值 - + Unit - + Prec - + Min - + Max - + 0._ - + 0.0 0.0 @@ -3583,19 +3717,19 @@ Please use ZADIG to properly install the driver. FlightModesPanel - + Flight Mode %1 用于FM设定 飞行模式[FM] %1 - + (%1) FlightModePanel (%1) - + (default) FlightModePanel (默认) @@ -3622,17 +3756,17 @@ Please use ZADIG to properly install the driver. FrSkyAlarmData - + Yellow - + Orange - + Red @@ -3641,12 +3775,12 @@ Please use ZADIG to properly install the driver. FrSkyChannelData - + V - + --- 正向 [→] @@ -3836,12 +3970,12 @@ p, li { white-space: pre-wrap; } GV - + Own value 使用单独的取值 - + Flight mode %1 value 使用FM%1值 @@ -3929,7 +4063,7 @@ These will be relevant for all models in the same EEPROM. GeneralSettings - + Radio Settings @@ -3988,164 +4122,166 @@ These will be relevant for all models in the same EEPROM. - + Timeshift from UTC 依照UTC调整时间 [From UTC] - + Voice Language 语音语言 [Voice Language] - + Country Code 国家代码 [Country Code] - + Stick reverse 反向摇杆 [Stick Reverse] - + FAI Mode FAI 模式 [FAI Mode] - + Automatically adjust the radio's clock if a GPS is connected to telemetry. 如果安装有GPS回传则自动调整遥控器时钟. - + Adjust RTC 自动调整时钟 - + Vario pitch at max 最大上升率时Vario音调 [Max] - - + + Hz - + Speaker Volume 喇叭音量 [Volume] - + Backlight Switch 背光开关 [Switch] - + Sound Mode 声音模式 [Sound Mode] - + Color 1 颜色 1 - + Color 2 颜色 2 - + Speaker Pitch (spkr only) 喇叭音调 (仅喇叭) [Pitch] - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. 如果值非0, 任何按键将会开启背光, 并在所设定秒数后关闭. - + + + sec - + Backlight color 背光颜色 [Color] - + Beeper 蜂鸣器 - + Speaker 喇叭 - + BeeperVoice 蜂鸣器和语音 - + SpeakerVoice 喇叭和语音 - + Beep volume 蜂鸣器音量 - + Wav volume WAV播放音量 - + Vario volume Vario音量 - + Background volume 背景音乐音量 - - + + ms 毫秒 - + Backlight Auto OFF after 背光自动关闭时间 [Duration] - + Backlight flash on alarm 告警时背光闪烁 [Alarm] - + Vario pitch at zero 升降率为0时Vario音调 [Zero] - + Vario repeat at zero 升降率0时Vario重复率 [Repeat] - + This is the switch selectrion for turning on the backlight (if installed). @@ -4155,8 +4291,8 @@ These will be relevant for all models in the same EEPROM. - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4171,37 +4307,37 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">取值范围 20-45</span></p></body></html> - + Backlight Brightness 背光亮度 [Brightness] - + RotEnc Navigation 旋转编码器导航 [RotEnc] - + America 美国 - + Japan 日本 - + Europe 欧洲 - + Backlight OFF Brightness - + Mode selection: Mode 1: @@ -4242,313 +4378,354 @@ MODE4 模式4: - + Mode 1 (RUD ELE THR AIL) MODE1 日本手↕升降↔方向 ↕油门↔副翼 - + Mode 2 (RUD THR ELE AIL) MODE2 美国手↕油门↔方向 ↕升降↔副翼 - + Mode 3 (AIL ELE THR RUD) MODE3 中国手↕升降↔副翼 ↕油门↔方向 - + Mode 4 (AIL THR ELE RUD) MODE4 模式4 ↕油门↔副翼 ↕升降↔方向 - + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> <html><head/><body><p>通道顺序</p><p><br/></p><p>定义了当新的混控创建时默认的通道顺序.</p></body></html> - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. - + RSSI Poweroff Warning - + Low EEPROM Warning - + + Owner Registration ID + + + + + aaaaaaAA + + + + R E T A 方向 升降 油门 副翼 [R E T A] - + R E A T 方向 升降 副翼 油门 [R E A T] - + R T E A 方向 油门 升降 副翼 [R T E A] - + R T A E 方向 油门 副翼 升降 [R T A E] - + R A E T 方向 副翼 升降 油门 [R A E T] - + R A T E 方向 副翼 油门 升降 [R A T E] - + E R T A 升降 方向 油门 副翼 [E R T A] - + E R A T 升降 方向 副翼 油门 [E R A T] - + E T R A 升降 油门 方向 副翼 [E T R A] - + E T A R 升降 油门 副翼 方向 [E T A R] - + E A R T 升降 副翼 方向 油门 [E A R T] - + E A T R 升降 副翼 油门 方向 [E A T R] - + T R E A 油门 方向 升降 副翼 [T R E A] - + T R A E 油门 方向 副翼 升降 [T R A E] - + T E R A 油门 升降 方向 副翼 [T E R A] - + T E A R 油门 升降 副翼 方向 [T E A R] - + T A R E 油门 副翼 方向 升降 [T A R E] - + T A E R 油门 副翼 升降 方向 [T A E R] - + A R E T 副翼 方向 升降 油门 [A R E T] - + A R T E 副翼 方向 油门 升降 [A R T E] - + A E R T 副翼 升降 方向 油门 [A E R T] - + A E T R 副翼 升降 油门 方向 [A E T R] - + A T R E 副翼 油门 方向 升降 [A T R E] - + A T E R 副翼 油门 升降 方向 [A T E R] - + + Power On Delay + + + + + Jack Mode + + + + + Audio + + + + + Trainer + 教练功能 + + + + DMS + + + + USB Mode - + + Power Off Delay + + + + + Ask on Connect - + Joystick (HID) - + USB Mass Storage - + USB Serial (CDC) - + Stick Mode 摇杆模式 [MODE] - + Metric 公制 [Metric] - + Imperial 英制 [Imperial] - + Default Channel Order 默认通道顺序[Default Ch Order] - + GPS Coordinates GPS坐标格式 [GPS Coordinates] - + Min GeneralEdit 最小 - - + + v GeneralEdit v - + Max GeneralEdit 最大 - + Inactivity Timer 忘记关机定时器 [Inactivity] - + Show Splash Screen on Startup 显示开机画面 [Splash Screen] - + Contrast 显示屏对比度 [Contrast] - + Battery Meter Range 遥控器电池图标范围 [Range] - + Haptic Strength 振动强度 [Haptic Strength] - + LCD Display Type LCD显示屏类型 [LCD Disp Type] - + "No Sound" Warning 当静音时 开机告警 [Sound Off] - + Battery Warning 遥控器电量警告 [Battery Low] - + Haptic Length 振动时长 [Haptic Length] - + MAVLink Baud Rate MAVLink 波特率 [Baud Rate] - - + + Quiet GeneralEdit 禁用 [Quiet] - + Only Alarms GeneralEdit 只有告警 [Alarm] - - + + No Keys GeneralEdit 忽略按键 [NoKey] - - + + All GeneralEdit 开启 [All] - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -4559,122 +4736,122 @@ Acceptable values are 5v..10v 允许值是5V - 10V - + Standard 标准LCD [Standard] - + Optrex GeneralEdit 光王LCD [Optrex] - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. - + min - - + + Show splash screen on startup - + --- GeneralEdit - + 2s GeneralEdit - + 3s GeneralEdit - + 4s GeneralEdit - + 6s GeneralEdit - + 8s - + 10s - + 15s - + 4800 Baud GeneralEdit - + 9600 Baud - + 14400 Baud - + 19200 Baud - + 38400 Baud - + 57600 Baud - + 76800 Baud - + 115200 Baud - - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4689,77 +4866,72 @@ p, li { white-space: pre-wrap; } - - + + X-Short GeneralEdit 极短 - - + + Short GeneralEdit 较短 - - + + Normal 正常 - - + + Long GeneralEdit 较长 - - + + X-Long 极长 - - hh° (N/S) mm' ss''.dd - - - - + NMEA GeneralEdit - + Play Delay (switch mid position) 开关拨过中档时播音延迟 [Delay] - + Measurement Units 单位制 [Units] - + Haptic Mode GeneralEdit 振动 [Haptic Mode] - + Beeper Length 蜂鸣时长 [Beep Length] - + Beeper Mode 蜂鸣音 [Beep Mode] - + Beeper volume 0 - Quiet. No beeps at all. @@ -4770,7 +4942,7 @@ p, li { white-space: pre-wrap; } - + Alarms Only GeneralEdit 只有告警 [Alarm] @@ -4779,127 +4951,127 @@ p, li { white-space: pre-wrap; } GeneralSetupPanel - + OFF - + Keys 按键 [Keys] - + Sticks 摇杆 [Sticks] - + Keys + Sticks 按键和摇杆 [Keys + Sticks] - + ON - + 启用 - + English 英语 - + Dutch 荷兰语 - + French 法语 - + Italian 意大利语 - + German 德语 - + Czech 捷克语 - + Slovak 慢动作 [Slow] - + Spanish 西班牙语 - + Polish 波兰语 - + Portuguese 葡萄牙语 - + Russian - + Swedish 瑞典语 - + Hungarian 匈牙利语 - + No - + RotEnc A 旋转编码器A - + Rot Enc B 旋转编码器B - + Rot Enc C 旋转编码器C - + Rot Enc D 旋转编码器D - + Rot Enc E 旋转编码器E - + If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio. Are you sure ? @@ -4934,263 +5106,247 @@ Are you sure ? 表单 - + SQ - + SR - + LS2 LS2 滑杆 - + SP - + SO - + S4 S4 旋钮 - + RS RS 滑杆 - + SB - + PPM 2 教练口信号2 [PPM 2] - - - - - - - - - - Beeper volume - -0 - Quiet. No beeps at all. -1 - No Keys. Normal beeps but menu keys do not beep. -2 - Normal. -3 - Loud. -4 - Extra loud. - 蜂鸣音量 - -0 - 静音 没有蜂鸣声 -1 - 除菜单键外都有有蜂鸣声. -2 - 普通音量. -3 - 大音量. -4 - 超大音量. - - - OFF 关闭 [OFF] - + S-Port Mirror S-Port 镜像 [S-Port Mirror] - + Telemetry 回传 [Telemetry] - + SBUS Trainer SBUS 教练功能 [SBUS Trainer] - + Debug 除错 [Debug] - + Rud Rud 摇杆 - + PPM 3 教练口信号3 [PPM 3] - + S1 S1 旋钮 - + S2 S2 旋钮 - + S3 S3 旋钮 - + PPM 1 教练口信号1 [PPM 1] - + Serial Port 串口 [Serial Port] - + v - + PPM Multiplier 教练口信号系数 [PPM Multiplier] - + Current Offset 当前修正 [Offset] - + PPM 4 教练口信号4 [PPM 4] - + SA - + Ele Ele 摇杆 - + + Antenna + + + + + S5 + S5 旋钮 + + + Ail Ail 摇杆 - + Thr Thr 摇杆 - + SC - + LS LS 滑杆 - + SD - + Battery Offset 控电电压修正 [Battery Offset] - + SE - + SF - + SG - + SH - + SI - + SJ - + SK - + SL - + SM - + SN - + RS2 RS2 滑杆 - + Bluetooth 蓝牙 [Bluetooth] - + ADC Filter - + Device Name: @@ -5199,8 +5355,8 @@ Are you sure ? HardwarePanel - - + + None @@ -5220,25 +5376,70 @@ Are you sure ? 3位开关 - + Pot with detent 有中位旋钮 - + Multipos switch 多位开关 - + Pot without detent 无中位旋钮 - + Slider with detent 有中位滑杆 + + + OFF + + + + + Enabled + + + + + Telemetry + + + + + Trainer + 教练功能 + + + + Internal + + + + + Ask + + + + + Per model + + + + + Internal + External + + + + + External + + Heli @@ -5361,25 +5562,25 @@ Are you sure ? InputsPanel - + Move Up 上移 - + Ctrl+Up Ctrl+Up - + Move Down 下移 - + Ctrl+Down Ctrl+Down @@ -5389,93 +5590,93 @@ Are you sure ? 清除所有输入 - + Not enough available inputs! 没有足够的可用输入! - + Delete Selected Inputs? 删除选择的输入? - + &Add 添加 (&A) - + Ctrl+A - + &Edit 编辑 (&E) - + Enter InputPanel 确定 - + &Delete 删除 (&D) - + Delete 删除 - + &Copy 复制 (&C) - + Ctrl+C - + &Cut 剪切 (&C) - + Ctrl+X - + &Paste 粘贴 (&P) - + Ctrl+V - + Du&plicate 克隆 (&P) - + Ctrl+U - + Clear Inputs? 清除输入? - + Really clear all the inputs? 确定清除所有输入么? @@ -5485,7 +5686,7 @@ Are you sure ? INV - + 反向 [←] @@ -5616,7 +5817,7 @@ Are you sure ? Unknown - + 未知[Unknown] @@ -5632,70 +5833,75 @@ Are you sure ? LogicalSwitchesPanel - + Function LogicalSwitchPanel 运算方式 [Function] - + V1 LogicalSwitchPanel 数值1 [V1] - + V2 LogicalSwitchPanel 数值2 [V2] - + AND Switch 与开关 [AND Sw] - + Duration LogicalSwitchPanel 持续时间 [Duration] - + Delay LogicalSwitchPanel 延迟 [Delay] - + + Popup menu available + + + + (infinite) - + (instant) LogicalSwitchPanel 边沿触发使用 (立刻 [instant]) - + &Copy 复制 (&C) - + &Cut LogicalSwitchPanel 剪切 (&C) - + &Paste LogicalSwitchPanel 粘贴 (&P) - + &Delete LogicalSwitchPanel 删除 (&D) @@ -5791,8 +5997,8 @@ Are you sure ? - Error: no GPS data not found - 错误: 找不到GPS数据 + Error: no GPS data found + @@ -5804,74 +6010,74 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt 包含高度的列 "GAlt" 和包含速度的列 "GSpd" 是可选的 - + Cannot write file %1: %2. 无法写入文件 %1: %2. - + Cursor A: %1 m 光标 A: %1 m - + Cursor B: %1 m 光标 B: %1 m - + Time delta: %1 时间偏移: %1 - + Climb rate: %1 m/s 升降速率: %1 m/s - + Select your log file 选择你的 log 文件 - + Available fields 可用项目 - + The selected logfile contains %1 invalid lines out of %2 total lines 选择的 Log 文件共有 %2 条记录, 其中 %1 条记录无效 - + total duration 总持续时间 - + duration 持续时间 - + (L1) (L1) - + (R1) - + (L2) - + (R2) @@ -5879,147 +6085,123 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt MainWindow - - + + File loaded 文件已载入 - + Checking for updates 检查更新中 - - Unable to check for updates. - 无法检查更新. - - - + A new version of Companion is available (version %1)<br>Would you like to download it? 有新版本的 Companion 可用. (版本号 %1)<br>你希望现在就下载么? - - + + Save As 另存为 - + Executable (*.exe) 可执行文件 (*.exe) - + New release available 有新版本发布 - - + + No updates available at this time. 目前没有更新的固件版本发布. - - + + Would you like to launch the installer? 你希望打开安装程序么? - + Error opening file %1: %2. 打开文件错误 %1: %2. - + Not enough flash available on this board for all the selected options 此主板上没有足够的Flash用来存储所有所选选项 - + Compilation server temporary failure, try later 编译服务器临时不可用, 请稍后再试 - + Compilation server too busy, try later 编译服务器太忙, 请稍后再试 - + Compilation error 编译错误 - + Invalid firmware 无效的固件 - + Invalid board 无效的主板 - + Invalid language 无效的语言 - + Unknown server failure, try later 未知服务器失效, 请稍后再试 - + Do you want to write the firmware to the radio now ? 你希望现在就将固件写入到遥控器么? - - Firmware %1 does not seem to have ever been downloaded. -Release %2 is available. -Do you want to download it now? - -We recommend you view the release notes using the button below to learn about any changes that may be important to you. - 固件 %1 看起来还没有被下载过. -版本 %2 现在可用. -你希望现在就下载它么? - -我们建议你使用下面的按钮查看版本说明, 以便了解对你来说重要的更新项目. - - - - + + Yes MainWindow - - + + No MainWindow - - + + Release Notes 版本发布说明 - - - Do you want to download release %1 now ? - 你希望现在就下载版本 %1 么? - - - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6036,836 +6218,846 @@ We recommend you view the release notes using the button below to learn about an 我们建议你使用下面的按钮查看版本发布说明, 以便了解对你来说重要的更新项目. - - Ignore this release %1? - 忽略此版本 %1? - - - + The new theme will be loaded the next time you start Companion. 新的主题将在重新打开程序后使用. - - + + Open Models and Settings file 打开模型和配置文件 - - + + File saved 文件已保存 - - + + Synchronize SD 同步SD卡 - - + + Read Firmware from Radio 从遥控器中读取固件 - + Write Firmware to Radio 将固件写入遥控器 - - + + Read Models and Settings from Radio 从遥控器中读取模型和配置 - + Write Models and Settings to Radio 将模型和配置写入遥控器 - + Save Radio Backup to File 保存遥控器备份到文件 - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Models and Settings read - + Diskimage (*.dmg) - + Would you like to open the disk image to install the new version? - - Show this message again at next startup? - - - - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + No local SD structure path configured! - + No Radio or SD card detected! - - :: Options - - - - - Local Folder: - - - - - Radio Folder: - - - - - Sync. Direction: - - - - - %1%2 Both directions, to radio folder first - - - - - %1%2 Both directions, to local folder first - - - - - %1 Only from local folder to radio folder - - - - - %1 Only from radio folder to local folder - - - - - Existing Files: - - - - - How to handle overwriting files which already exist in the destination folder. - - - - - Copy only if newer and different (compare contents) - - - - - Copy only if newer (do not compare contents) - - - - - Copy only if different (ignore file time stamps) - - - - - Always copy (force overwite existing files) - - - - - Max. File Size: - - - - - Any size - - - - - Skip files larger than this size. Enter zero for unlimited. - - - - - Test-run only - - - - - Run as normal but do not actually copy anything. Useful for verifying results before real sync. - - - - - MB - - - - - KB - - - - - Source and destination folders are the same! - - - - - Source folder not found: %1 - - - - - Destination folder not found: %1 - - - - - :: Error - - - - - :: Progress - - - - - Release notes - - - - - Cannot retrieve release notes from the server. - - - - - + + This function is not yet implemented - + Read Radio Firmware to File 读取遥控器固件并保存到文件 - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX 网站主页: <a href='%1'>%1</a> - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> OpenTX Companion项目起初分支于 <a href='%1'>eePe</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> 如果你觉得此程序有用, 请通过<a href='%1'>捐赠</a>支持 - + Copyright OpenTX Team 版权所有 OpenTX Team - + About Companion 关于 Companion - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - 遥控器: %2 - 档案: %3 - + New MainWindow 新建配置文件 - + Create a new Models and Settings file 建立新的模型和设置文件 - + Open... 打开... - + Save 保存 - - + + Save Models and Settings file 保存模型和配置文件 - + Save As... 另存为... - + Close 关闭 - + Close Models and Settings file - + Exit 退出 - + Exit the application 退出程序 - + - Copy - + Companion :: Open files warning - + Please save or close modified file(s) before deleting the active profile. - + Not possible to remove profile 不能移除遥控器档案 - + The default profile can not be removed. 默认遥控器档案无法被移除. - + Confirm Delete Profile - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - + Classical 经典 - + The classic companion9x icon theme 经典 companion9x 图标主题 - + Yerico Yerico图标主题 - + Yellow round honey sweet icon theme 黄色圆润甜蜜图标主题 - + Monochrome 单色黑白 - + A monochrome black icon theme 黑色图标的黑白主题 - + MonoWhite 单色白色 - + A monochrome white icon theme 白色图标的黑白主题 - + MonoBlue 单色蓝色 - + + No Companion release candidates are currently being served for this version, please switch release channel + + + + + No nightly Companion builds are currently being served for this version, please switch release channel + + + + + No Companion release builds are currently being served for this version, please switch release channel + + + + + Companion update check failed, new version information not found. + + + + + No firmware release candidates are currently being served for this version, please switch release channel + + + + + No firmware nightly builds are currently being served for this version, please switch release channel + + + + + No firmware release builds are currently being served for this version, please switch release channel + + + + + Release candidate builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to RC, please restart the download process + + + + + Official release builds are now available for this version, would you like to switch to using them? + + + + + Channel changed to Release, please restart the download process + + + + + This radio (%1) is not currently available in this firmware release channel + + + + + Firmware update check failed, new version information not found or invalid. + + + + + Firmware %1 does not seem to have ever been downloaded. +Version %2 is available. +Do you want to download it now? + +We recommend you view the release notes using the button below to learn about any changes that may be important to you. + + + + + + Do you want to download version %1 now ? + + + + + Ignore this version %1? + + + + + Local Folder + + + + + Radio Folder + + + + List of recently used files - + Radio Profiles - + Create or Select Radio Profiles - + Release notes... - + Show release notes - + Create a new Radio Settings Profile - + Copy Current Radio Profile - + Duplicate current Radio Settings Profile - + Delete Current Radio Profile... - + Delete the current Radio Settings Profile - + + Export Application Settings.. + + + + + Save all the current %1 and Simulator settings (including radio profiles) to a file. + + + + + Import Application Settings.. + + + + + Load %1 and Simulator settings from a prevously exported settings file. + + + + Tabbed Windows - + Use tabs to arrange open windows. - + Tile Windows - + Arrange open windows across all the available space. - + Cascade Windows - + Arrange all open windows in a stack. - + Close All Windows - + Closes all open files (prompts to save if necessary. - + Window - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + A monochrome blue icon theme 蓝色图标的黑白主题 - + Small - + Use small toolbar icons 使用小的工具栏图标 - + Normal MainWindow 普通 - + Use normal size toolbar icons 使用普通大小的工具栏图标 - + Big - + Use big toolbar icons 使用大工具栏图标 - + Huge 超大 - + Use huge toolbar icons 使用特大的工具栏图标 - + System language 使用系统语言 - + + Please save or close all modified files before importing settings + + + + + <html><p>%1 and Simulator settings can be imported (restored) from a previosly saved export (backup) file. This will replace current settings with any settings found in the file.</p><p>An automatic backup of the current settings will be attempted. But if the current settings are useful then it is recommended that you make a manual backup first.</p><p>For best results when importing settings, <b>close any other %1 windows you may have open, and make sure the standalone Simulator application is not running.</p><p>Do you wish to continue?</p></html> + + + + + Confirm Settings Import + + + + + Select %1: + + + + + backup + + + + + Press the 'Ignore' button to continue anyway. + + + + + The settings could not be imported. + + + + + <html><p>New settings have been imported from:<br> %1.</p><p>%2 will now re-initialize.</p><p>Note that you may need to close and restart %2 before some settings like language and icon theme take effect.</p> + + + + + <p>The previous settings were backed up to:<br> %1</p> + + + + About... 关于... - + Show the application's About box 显示程序的关于对话框 - + View Log File... 查看 Log 文件... - + Open and view log file 打开和查看 Log 文件 - + Settings... 设置... - + Edit Settings 编辑设定 - + Download... 下载... - + Download firmware and voice files 下载固件和语音文件 - + Check for Updates... 检查更新... - + Check OpenTX and Companion updates 检查 OpenTX 和 Companion 更新 - + Compare Models... 比较模型... - + Compare models 比较模型参数 - + Edit Radio Splash Image... 编辑遥控器开机画面... - + Edit the splash image of your Radio 编辑你的遥控器的开机画面 - + List programmers... 列出编程器... - + List available programmers 列出可用的编程器 - + Fuses... 熔丝位... - + Show fuses dialog 显示熔丝位对话框 - + Read firmware from Radio 从遥控器中读取固件 - + Write firmware to Radio 将固件写入遥控器 - + Add Radio Profile 添加遥控器档案 - + Manuals and other Documents 使用说明书和其他文档 - + Open the OpenTX document page in a web browser 在网络浏览器中打开OpenTX文档主页 - + Write Models and Settings To Radio 将模型和配置写入遥控器 - + Read Models and Settings From Radio 从遥控器中读取模型和配置 - + Configure Communications... 配置通讯... - + Configure software for communicating with the Radio 配置与遥控器通讯的软件 - + Write Backup to Radio 将备份写入遥控器 - + Write Backup from file to Radio 将备份文件写入到遥控器 - + Backup Radio to File 备份遥控器到文件 - + Save a complete backup file of all settings and model data in the Radio 保存一个包含所有遥控器设置和模型数据的备份文件 - + Contributors... 贡献者... - + A tribute to those who have contributed to OpenTX and Companion 向所有对OpenTX和Companion做出过贡献的人致敬 - + SD card synchronization 同步SD卡 - + Use default system language. - + Use %1 language (some translations may not be complete). - + Recent Files 最近使用的文件 - + Set Menu Language 设置菜单语言 - + Set Icon Theme 设置程序图标 - + Set Icon Size 设置图标大小 - - + + File 文件 - - + + Edit 编辑 - + Settings 设置 - + Read/Write 读/写 - - + + Help 帮助 - + Write 写入 - + Ready 已准备好 - + %2 - + Alt+%1 - + New Radio 新的遥控器 @@ -6873,72 +7065,72 @@ Do you wish to continue? MdiChild - + Delete 删除 - + Move to Category - + Alt+S - + Do you want to overwrite radio general settings? 你希望覆盖遥控器一般设定么? - + Alt+Shift+E - + Ctrl+Alt+C - + Ctrl+Alt+V - + Alt+Shift+S - + Alt+C - + Alt+A - + Alt+R - + Alt+W - + Alt+U - + %n Model(s) As in "Copy 3 Models" or "Cut 1 Model" or "Delete 3 Models" action). @@ -6946,7 +7138,7 @@ Do you wish to continue? - + %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." @@ -6954,7 +7146,7 @@ Do you wish to continue? - + %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." @@ -6962,279 +7154,279 @@ Do you wish to continue? - + Nothing selected - + Rename Category - + Edit Model - + Cut - + Copy 复制 - + Paste 粘贴 - + Insert - + Edit Radio Settings - + Copy Radio Settings - + Paste Radio Settings - + Simulate Radio - + Add Category - + Category - + Add Model - + Model 模型名称 [Model Name] - + Restore from Backup - + Model Wizard 模型向导 - + Set as Default - + Print Model - + Simulate Model - + Duplicate Model - + Show Category Actions Toolbar - + Show Radio Actions Toolbar - + Show Model Actions Toolbar - + free bytes 剩余空间 (Bytes) - + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Category index out of range. - + Cannot delete the last category. - + This category is not empty! - + Cannot insert model, last model in list would be deleted. - + Cannot add model, could not find an available model slot. - + New model Translators: do NOT use accents here, this is a default model name. - + Cannot paste model, out of available model slots. - + You are replacing an existing model, are you sure? - + Delete %n selected model(s)? - + Delete %n selected category(ies)? - + Cannot duplicate model, could not find an available model slot. - + Editing model %1: 编辑模型 %1: - + + <p><b>Currently selected radio type (%1) is not compatible with file %3 (from %2), models and settings need to be converted.</b></p> + + + + Unable to find Horus radio SD card! - + Models and Settings written - + Unable to find file %1! 无法找到文件 %1! - + Error opening file %1: %2. 打开文件错误 %1: %2. - + Error reading file %1: %2. 打开文件错误 %1: %2. - + Save As 另存为 - + %1 has been modified. Do you want to save your changes? %1已经修改. 想要保存修改么? - - <p><b>Current radio type is not compatible with file %1, models and settings need to be converted.</b></p> - - - - + Do you wish to continue with the conversion? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + <b>The conversion generated some important messages, please review them below.</b> - + Companion :: Conversion Result for %1 - + Cannot write temporary file! - + Open backup Models and Settings file 打开备份的模型和设置文件 - + Invalid binary backup File %1 无效的二进制备份文件 %1 @@ -7495,22 +7687,22 @@ If blank then the mix is considered to be "ON" all the time. MixersListWidget - + Increase font size - + Decrease font size - + Default font size - + Ctrl+0 @@ -7519,25 +7711,25 @@ If blank then the mix is considered to be "ON" all the time. MixesPanel - + Move Up 向上移动此行 - + Ctrl+Up - + Move Down 向下移动此行 - + Ctrl+Down Ctrl+Dn @@ -7547,102 +7739,102 @@ If blank then the mix is considered to be "ON" all the time. 清除本页所有混控 - + Not enough available mixers! 无空白混控存储位置! - + Delete Selected Mixes? 是否删除选择的混控? - + &Add 添加 (&A) - + Ctrl+A - + &Edit 编辑 (&E) - + Enter 确定 - + &Toggle highlight 切换高亮 (&T) - + Ctrl+T - + &Delete 删除 (&D) - + Delete 删除 - + &Copy 复制 (&C) - + Ctrl+C - + C&ut 剪切 (&C) - + Ctrl+X - + &Paste 粘贴 (&P) - + Ctrl+V - + Du&plicate 克隆 (&P) - + Ctrl+U - + Clear Mixes? 清除混控? - + Really clear all the mixes? 是否真的删除所有混控? @@ -7650,12 +7842,12 @@ If blank then the mix is considered to be "ON" all the time. ModelData - + Model: - + Throttle Source 设为油门杆 [Thr Source] @@ -7728,887 +7920,789 @@ If blank then the mix is considered to be "ON" all the time. ModelPrinter - + Exponential 指微调的步长 先小后大 [Exp] - + Extra Fine 很小 [Extra Fine] - + Fine 小 [Fine] - + Medium 中等 [Medium] - + Coarse 大 [Coarse] - + Unknown Model Printer 未知[Unknown] - + Slave/Jack 教练从机/教练线插口 [Slave/Jack] - + Master/SBUS Module 教练主机/SBUS 模块 [Master/SBUS] - + Master/CPPM Module 教练主机/CPPM 模块 [Master/CPPM] - + Master/SBUS in battery compartment 教练主机/SBUS 电池盒中插座 - + Master/Jack 教练主机/教练线插口 [Master/Jack] - + Enable - + Disable - + True - + False - + Yes - + No - + Y - + N - + ON - + 启用 - - - - + + + + OFF - - - - - - - - - - - - - ??? - - - - + bytes - - 10mW - - - - - 100mW - - - - - - 500mW - - - - - 1W - 1W - - - - 25mW - - - - - + + Mode 模式 - - + + Channels 通道数 [Channels] - - + + Frame length - + PPM delay PPM 延迟 [Delay] - - + + Polarity 极性 [Polarity] - + Protocol - - - + + + Delay - - + + Receiver 接收机设置[Reciever] - + Radio protocol - + Subtype - + Option value - + Sub Type - + RF Output Power - - Telemetry - - - - - - ???? - - - - + 90 - + 120 - + 120X - + 140 - + Off Model Printer 关闭 - - Rudder - Model Printer - 方向[Rudder] - - - - Elevator - Model Printer - 升降[Elevator] - - - - Throttle - Model Printer - 油门[Throttle] - - - - Aileron - Model Printer - 副翼[Aileron] - - - - - - - - + + + + + + None - + Name - + Countdown 倒数报数 - + Minute call - + MULT! - - + + Offset - + Slow 慢动作 [Slow] - + Warn - + Flight modes - + Flight mode 飞行模式 [Modes] - + All 开启 [All] - + Edge 边沿触发 EDGE - + Sticky 粘滞键 Sticky - + Timer 定时开关 Timer - + missing - + Duration 持续时间 [Duration] - + Extended Limits 舵机上下限扩展 [Extended Limits] - + Display Checklist 显示检查单 [Checklist] - + Global Functions - + Manual 手动 [Manual] - + Auto 用关机位置 [Auto] - + Failsafe Mode 失控保护方式 [Failsafe Mode] - - + + Hold - + No Pulse 不输出脉冲 [No Pulse] - + Not set 未设置 - + No pulses - + Silent 静音 [Silent] - + Beeps 蜂鸣 [Beeps] - + Voice - + 语音 [Voice] - + Haptic - + 振动 [Haptic] - + Flight 飞行 [Flight] - + Manual reset - + Step - + Display - + Extended - + Never 从不 [Never] - + On Change - + Always 一直 [Always] - - Trainer Port - 教练功能 [Trainer Port] - - - - Internal Radio System - 内置高频头 [Internal RF] - - - - External Radio Module - 外置高频头 [External RF] - - - - - Radio System - 高频头 [Radio System] - - - - Extra Radio System - 附加高频头 [Extra RF] - - - - - + + + Source - + Trim idle only - + Warning - + 启用时蜂鸣 [Warning] - + Reversed - + Tmr - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Alti 高度 - + Alti+ 最大高度 - + VSpeed 垂直速度 - - - + + + A1 A1 模拟值1 - - - + + + A2 A2 模拟值2 - - + + A3 A3 模拟值3 - - + + A4 A4 模拟值4 - - + + FAS FAS - + Cells - + 锂电总电压 - + Calculated 运算 - + Add - + Average 平均值 - - + + Min - - + + Max - + Multiply 乘以 - + Totalise - + Cell - + 锂电单片电压 - + Consumption 消耗 - + Distance - + Lowest 最低 - + Cell %1 第%1片 - + Highest 最高 - + Delta 每片电压差 - + Formula - - + + Id - + Instance 对象 - - - - + + + + Sensor - - + + Sources - - + + GPS - + Alt. - - + + Blades 旋翼数 - + Multi. - + F - + Inst - + Alt Alt 高度 - + Unit - + Prec - + Ratio 比例 - + Multi - + A/Offset - + Filter 过滤器 - + Persist - + Positive - + Log - + Numbers 数字 - + Bars 条状图 - + Script 脚本 - + Filename 文件名 - + + Error: Unable to open or read file! + + + + Persistent 保持[Persistent] - - - + + + FM%1 - + FM%1%2 - + FM%1+%2 - - + + Weight 比例 [Weight] - - + + Switch 启用开关[Switch] - - + + NoTrim 不使用微调[Notrim] - + Offset(%1) 偏移[Offse](%1) - + No DR/Expo 不使用 DR/Expo - + Disabled in all flight modes 在所有飞行模式中禁用 - + instant 立刻执行[instant] - - - + + + Custom 自定义[Custom] - + Standard 标准[Standard] @@ -8649,7 +8743,7 @@ If blank then the mix is considered to be "ON" all the time. 通道 - + Failsafe Mode 失控保护方式 [Failsafe Mode] @@ -8659,12 +8753,12 @@ If blank then the mix is considered to be "ON" all the time. 开始通道 [CH] - + PPM delay PPM 延迟 [Delay] - + us 微秒 @@ -8684,88 +8778,58 @@ If blank then the mix is considered to be "ON" all the time. - - 10 mW - - - - - 100 mW - - - - - 500 mW - - - - - 1000 mW - - - - + Antenna - - Internal - - - - - Ext. + Int. - - - - + Option value - + Sub Type - + Master/Jack 教练主机/教练线插口 [Master/Jack] - + Slave/Jack 教练从机/教练线插口 [Slave/Jack] - + Master/SBUS Module 教练主机/SBUS 模块 [Master/SBUS] - + Master/CPPM Module 教练主机/CPPM 模块 [Master/CPPM] - + Master/SBUS in battery compartment 教练主机/SBUS 电池盒中插座 - + Show values in: - + % abbreviation for percent - + μs abbreviation for microseconds @@ -8776,66 +8840,103 @@ If blank then the mix is considered to be "ON" all the time. 极性 [Polarity] - + Trainer Mode 教练功能模式 [Trainer Mode] - + ms 毫秒 - + PPM Frame Length PPM帧长 [Frame Length] - + Channels 通道数 [Channels] - + + Receiver 1 + + + + + + + X + + + + + Receiver 2 + + + + + Receiver 3 + + + + + WARNING: changing RF Output Power needs RE-BIND + + + + + Registration ID + + + + + WARNING: Requires non-certified firmware! + + + + Not set 未设置 - + Hold 自定义 [Custom]]]]] 保持 [Hold] - + Custom 自定义 [Custom]]]]] 自定义 [Custom] - + No Pulses 自定义 [Custom]]]]] 不输出脉冲 [No Puls] - + Receiver 自定义 [Custom]]]]] 接收机设置[Reciever] - + Failsafe Positions 失控保护位置 [F.s. Positons] - + Protocol 遥控器射频协议 [Protocol] - + Multi Radio Protocol 多遥控协议 [Multi Protocal] @@ -8845,27 +8946,27 @@ If blank then the mix is considered to be "ON" all the time. 接收机编号 [Receiver No.]. - + Output type 输出类型 [Output type] - + Open Drain 开漏输出 [Open Drain] - + Push Pull 推挽输出 [Push Pull] - + Bind on startup 开机时对频[Bind] - + Low Power 低功率[Range] @@ -8873,491 +8974,573 @@ If blank then the mix is considered to be "ON" all the time. ModuleData - + Positive - + Negative + 负 [Negative] + + + + Trainer Port + 教练功能 [Trainer Port] + + + + Internal Radio System + 内置高频头 [Internal RF] + + + + External Radio Module + 外置高频头 [External RF] + + + + Extra Radio System + 附加高频头 [Extra RF] + + + + Radio System + 高频头 [Radio System] + + + + 10mW - 16CH + + + + + + 100mW - 16CH + + + + + 500mW - 16CH + + + + + Auto <= 1W - 16CH + + + + + + 25mW - 8CH + + + + + + 25mW - 16CH + + + + + 200mW - 16CH (no telemetry) + + + + + 500mW - 16CH (no telemetry) + + + + + 100mW - 16CH (no telemetry) ModulePanel - - Trainer Port - 教练功能 [Trainer Port] - - - - Internal Radio System - 内置高频头 [Internal RF] - - - - External Radio Module - 外置高频头 [External RF] - - - - - Radio System - 高频头 [Radio System] - - - - Extra Radio System - 附加高频头 [Extra RF] - - - + Value 自定义回传中使用 设为 - + Hold 保持 [Hold] - + No Pulse 不输出脉冲 [No Pulse] + + + Ask + + + + + Internal + + + + + Internal + External + + + + + External + + MultiModelPrinter - + Input 输入 - + Weight 比例 [Weight] - + Long. cyc 纵向循环螺距 [Long] - + Lateral cyc 横向循环螺距 [Lateral] - + Collective 总距 [Collective] - + Flight modes 飞行模式 [Modes] - - + + Flight mode 飞行模式 [Modes] - - + + Switch 启用开关 [Switch] - + General - + EEprom Size - + Model Image 模型图片 [Medel Image] - + Throttle - + 油门 - + Trims - + Center Beep - + Switch Warnings 开关位置告警 [Switch Positions] - + Pot Warnings 旋钮位置告警 [Pot Positions] - + Other - + Timers - + Time Time 当前时间 - + Countdown 倒数报数 - - Minute call - - - - - Persistence - - - - + Modules - + Trainer port - + Helicopter 直升机 - + Swash - - + + Type - + Ring - - Fade IN - 淡入 - - - - Fade OUT - 淡出 - - - + Protocol - + Low - + Critical - + Telemetry audio - + Altimetry 高度计 - - + + Vario source Vario 传感器 - + Vario limits > - + Sink max - + Sink min - + Climb min - + Climb max - + Center silent - + Top Bar 顶部横条 - - + + Volts source 电压传感器 - + Altitude source 高度传感器 - + Various 不同的 - + Serial protocol - + FAS offset - + mAh count - + Persistent mAh 保持mAh - + Current source 当前源 - + Blades 旋翼数 - + Parameters 参数 - + Telemetry Sensors - + Telemetry Screens - - + + GF%1 + GF%1 + + + + Global Functions + + + + + Checklist + + + + + GV%1 - + RE%1 - + Channel 通道 - - - + + + Name 名称 [Name] - - Global variables - GV [Global variables] - - - + Prec - + Popup - + Outputs 输出 Outputs - + Subtrim 舵机中位 [Subtrim] - + Direct - + Curve - + PPM - + Linear 直线 - + Telemetry - + Offset 偏移 [Offset] - - + + Min 舵机下限 [Min] - - + + Min.call + + + + + Persist + + + + + F.In + + + + + F.Out + + + + + Global vars + + + + + Max 舵机上限 [Max] - + Global Variables 全局变量 [Global Variables] - + Inputs 输入 - + Mixers 混控 [Mixers] - + Curves 多点曲线 [Curves] - + L%1 - + Logical Switches 逻辑开关 [Logical Sw] - + SF%1 - + Special Functions 特殊功能 [Special Func] - + Analogs 模拟量 [Analogs] - - + + Unit 单位 [Unit] - + Scale 缩放 [Scale] - + RSSI Alarms RSSI 告警 [RSSI Alarms] @@ -9401,9 +9584,19 @@ If blank then the mix is considered to be "ON" all the time. + Fixed ID value + + + + DEFAULT + + + Custom - proto %1) + + MultirotorPage @@ -9441,12 +9634,12 @@ If blank then the mix is considered to be "ON" all the time. - + Cannot write radio settings - + Cannot write model %1 @@ -9522,26 +9715,31 @@ If blank then the mix is considered to be "ON" all the time. + Style + + + + Print 打印 - + Print to file 打印到文件 - + Print Document 打印文档 - + Select PDF output file 选择PDF输出文件 - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) ODF 文件 (*.odt);;PDF 文件 (*.pdf);;HTML文件 (*.htm *.html);;所有文件 (*) @@ -9740,36 +9938,43 @@ If blank then the mix is considered to be "ON" all the time. RadioOutputsWidget + Form 表单 + View: + Logical Switches + Global Variables 全局变量 [Global Variables] + Channel Outputs + Mix Outputs + L o g @@ -9779,6 +9984,7 @@ c + G l o @@ -9789,6 +9995,7 @@ l + C h a @@ -9801,6 +10008,7 @@ s + M i x @@ -9808,11 +10016,21 @@ e s + + + FM%1 + + + + + GV%1 + + RadioSwitchWidget - + Latch/unlatch the momentary switch. @@ -10016,7 +10234,7 @@ s Fuel - + Fule 燃油 @@ -10036,7 +10254,7 @@ s Dist - + 距离 @@ -10046,12 +10264,12 @@ s Cell - + 锂电单片电压 Cells - + 锂电总电压 @@ -10260,22 +10478,22 @@ s RawSwitch - + - + - + - - + ! @@ -10379,7 +10597,7 @@ s ON - + 启用 @@ -10496,126 +10714,136 @@ s SensorData - - + + V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours 小时 - + minutes - + seconds - + TELE + + + Internal + + + + + External + + Setup @@ -10804,15 +11032,25 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi SetupPanel - + Timer %1 计时器[Timer] %1 - + THR 油门 + + + Profile Settings + + + + + SD structure path not specified or invalid + + SimpleTailPage @@ -10837,182 +11075,192 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - PG-UP + S - PG-DN + PG-UP - DEL + PG-DN - BKSP + DEL - ESC + BKSP - INS + ESC - <font size=+3>+</font> + INS + <font size=+3>+</font> + + + + <font size=+3>-</font> - + <font size=+3>&larr;</font> - + <font size=+3>&rarr;</font> - + <font size=+3>&uarr;</font> - + <font size=+3>&darr;</font> - + <font size=+3>&#x2686;</font> - + <font size=+3>&#x21b6;</font> - + <font size=+3>&#x21b7;</font> - + <font size=+3>&#x21c6;</font> - - + + <font size=+3>&#x21d3;</font> - + <font size=+3>&#x21d1;</font> - + <font size=+3>&#x21d5;</font> - + <img src='qrc:/images/simulator/icons/svg/mouse.svg' width=20 height=18 /> - + <img src='qrc:/images/simulator/icons/svg/arrow_click.svg' width=18 height=18 /> - + <pre>[ MENU ]</pre> - + <pre>[ PAGE ]</pre> - + <pre>[ EXIT ]</pre> - + <pre>[ ENT ]</pre> - - - <pre>[ UP ]</pre> - - - <pre>[ DN ]</pre> + <pre>[ SHIFT ]</pre> - <pre>[ <font size=+2>+</font> ]</pre> + <pre>[ UP ]</pre> - <pre>[ <font size=+2>-</font> ]</pre> + <pre>[ DN ]</pre> - <pre>[ PgUp ]</pre> + <pre>[ <font size=+2>+</font> ]</pre> - <pre>[ PgDn ]</pre> + <pre>[ <font size=+2>-</font> ]</pre> - <pre>[ MDL ]</pre> + <pre>[ PgUp ]</pre> - <pre>[ RTN ]</pre> + <pre>[ PgDn ]</pre> - <pre>[ SYS ]</pre> + <pre>[ MDL ]</pre> - <pre>[ TELE ]</pre> + <pre>[ RTN ]</pre> + <pre>[ SYS ]</pre> + + + + + <pre>[ TELE ]</pre> + + + + <font size=+3>&#x2261;</font> @@ -11146,151 +11394,181 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorMainWindow + OpenTx Simulator + View + Radio Window + Reload... + Tools + Toolbar + Reload Lua Scripts 载入 Lua 脚本 + Reload the Lua environment on the simulated radio. + F7 + Reload Radio Data + Reload all radio data without restarting the simulator. + F9 + Key Mapping + Show keyboard maping reference. + F1 + Joystick Settings + Open joystick configuration settings dialog. + F3 + LCD Screenshot + Save a screenshot of the current simulated LCD screen. + F8 + Dock In Main Window + Show the radio in the main window or as a separate "floating" window. + Menu Bar + Show or hide the top menu bar. + Alt+M + Constrain Width + Set radio widget width to be a fixed size. + Constrain Height + Set radio widget height to be a fixed size. @@ -11305,64 +11583,64 @@ Profile ID: [%1]; Radio ID: [%2] - + Radio Outputs - + F2 - + Telemetry Simulator 回传模拟器 - + F4 - + Trainer Simulator - + F5 - + Debug Output Debug 输出 - + F6 - + <b>Simulator Controls:</b> - + <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><td><kbd>%1</kbd></td><td>%2</td></tr> note: must match html layout of help text table header. - + Simulator Help 模拟器帮助 @@ -11371,64 +11649,76 @@ Profile ID: [%1]; Radio ID: [%2] SimulatorStartupDialog + OpenTX Simulator - Startup Options + Simulator Startup Options: 模拟器启动选项: + Radio Profile: + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. + Radio Type: 遥控器型号: + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. + Data Source: + Data File: + Data Folder: + SD Image Path: + Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br /> <b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten! + Select data file... @@ -11436,48 +11726,59 @@ The radio type specified in the selected profile is used by default. + + + ... + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. + Select data folder... + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. + Select SD card image folder... + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. + File 文件 + Folder + SD Path @@ -11506,71 +11807,72 @@ The default is configured in the chosen Radio Profile. SimulatorWidget + Companion Simulator Companion 模拟器 - + Radio Simulator (%1) - + Could not determine startup data source. - + Could not load data, possibly wrong format. - + Data Load Error - + Invalid startup data provided. Plese specify a proper file/path. - + Simulator Startup Error - + Error saving data: could open file for writing: '%1' - + Error saving data: could not get data from simulator interface. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Data Save Error - + Radio firmware error: %1 - + - Flight Mode %1 (#%2) - + Cannot open joystick, joystick disabled 无法打开游戏杆, 游戏杆功能禁用 @@ -11629,109 +11931,240 @@ The default is configured in the chosen Radio Profile. - SyncProcess + StyleEditDialog - - New: <b>%1</b>; Updated: <b>%2</b>; Skipped: <b>%3</b>; Errors: <font color=%5><b>%4</b></font>; + + + + + Style Sheet Editor - + + &Reset to default + + + + + &Cancel + + + + + &OK + + + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. + + + + + Cannot retrieve style %1 +Error: %2 + + + + + Cannot retrieve default style %1 +Error: %2 + + + + + Cannot update custom style %1 +Error: %2 + + + + + Stylesheet + + + Style sheet data read from '%1' + + + + + Style sheet data unable to be read from '%1' + + + + + Cannot create folder '%1' + + + + + Cannot open file for writing '%1': Error: %2 + + + + + Cannot write to file '%1': Error: %2 + + + + + Cannot flush buffer for file '%1': Error: %2 + + + + + Style sheet written to '%1' + + + + + Custom style sheet deleted: '%1' + + + + + Unable to delete custom style sheet: '%1' + + + + + SyncProcess + + [TEST RUN] - - Gathering file information... - - - - + Synchronization failed, nothing found to copy. - - Synchronization finished. - - - - - Synchronizing %1 -&gt; %2: %3 - - - - - Starting synchronization: %1 -&gt; %2<br> - - - - + Skipping large file: %1 (%2KB) - - <br><b>Too many errors, giving up.<b> - - - - - Finished synchronizing %1 -&gt; %2 :<br>&nbsp;&nbsp;&nbsp;&nbsp; %3 - - - - + Creating directory: %1 - + Could not create directory: %1 - - Destination directory exists: %1 + + Gathering file information for %1... - + + No files found in %1 + + + + + Synchronization aborted at %1 of %2 files. + + + + + Synchronization finished with %1 files in %2m %3s. + + + + + Synchronizing: %1 + To: %2 + + + + + Starting synchronization: + %1 -> %2 + + + + + + +Too many errors, giving up. + + + + + Skipping filtered file: %1 + + + + + Skipping linked file: %1 + + + + + Aborted synchronization of: + + + + + Finished synchronizing: + + + + + Created: %1; Updated: %2; Skipped: %3; Errors: %4; + + + + + Directory exists: %1 + + + + + At least one of the file modification dates is in the future, error on: %1 + + + + Skipping older file: %1 - + Could not open source file '%1': %2 - + Could not open destination file '%1': %2 - + Skipping identical file: %1 - - Replacing destination file: %1 + + Replacing file: %1 - + + Creating file: %1 + + + + Could not delete destination file '%1': %2 - - Creating destination file: %1 - - - - + Copy failed: '%1' to '%2': %3 @@ -11785,182 +12218,187 @@ The default is configured in the chosen Radio Profile. 协议 - + Alarm 1 警告 1 - - + + ---- - - + + Yellow 黄色警告 - - + + Orange 橙色警告 - - + + Red 红色警告 - + Alarm 2 警告 2 - + RSSI - + Disable telemetry audio warnings - + + Source + + + + A1 A1 模拟值1 - + A2 A2 模拟值2 - + Sink Max 最大下降率 - + Climb Max 最大爬升 - + Sink Min 最小下降率 - + Climb Min 最小爬升 - + Center Silent 中间静音 - + Vario limits Vario 限值 - + Vario source Vario 传感器 - + Altimetry 高度计 - + Altitude source 高度传感器 - + Volts source 电压传感器 - + Top Bar 顶部横条 - + Volt source 电压传感器 - + Current source 当前源 - + Blades 旋翼数 - + mAh count - + mAh - + A - + FAS Offset FAS偏移 - + Persistent mAh 保持mAh - + Various ???? 不同的 - + Serial Protocol 串口协议 - + None - + FrSky Sensor Hub FrSky Sensor Hub - + Sensors 传感器 - + Disable multi sensor handling 禁止多传感器处理 @@ -12074,7 +12512,7 @@ The default is configured in the chosen Radio Profile. 电流 (mA) - + Range 范围 @@ -12107,23 +12545,23 @@ The default is configured in the chosen Radio Profile. 最大 - + None 回传屏幕设置中的选项 - + Numbers 数字 - + Bars 条状图 - + Script 脚本 @@ -12131,99 +12569,104 @@ The default is configured in the chosen Radio Profile. TelemetryPanel - + Telemetry screen %1 回传屏幕 %1 - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + + Source + + + + Low Alarm 低告警 - + Critical Alarm 紧急告警 - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (不支持) - + Alti 高度 - + Alti+ 最大高度 - + VSpeed 垂直速度 - - - + + + A1 A1 模拟值1 - - - + + + A2 A2 模拟值2 - - + + A3 A3 模拟值3 - - + + A4 A4 模拟值4 - - + + FAS FAS - + Cells 锂电总电压 - + --- @@ -12236,269 +12679,279 @@ The default is configured in the chosen Radio Profile. 表单 - + Custom 自定义 - + Calculated 运算 - + Id - + Instance 对象 - + + Rx + + + + + Mod. + + + + Add - + Average 平均值 - + Min 最小 - + Max 最大 - + Multiply 乘以 - + Totalize 总计 - + Cell 锂电单片电压 - + Consumption 消耗 - + Dist 距离 - + Cells Sensor : 锂电电压传感器 : - - - - - - - - + + + + + + + + --- - + GPS Sensor : GPS 传感器 : - + Alt. Sensor : 高度传感器 : - + Sensor : 传感器 : - + Raw (-) 原始值 (-) - + V - + A - + mA - + kt - + m/s - + ft/s - + km/h - + mph - + m - + ft - + °C - + °F - + % - + mAh - + W - + mW - + dBm - + RPM - + g - + ° - + Rad - + mL - + US fl.Oz. - + Precision 精确度 - + Ratio 比例 - + Blades 旋翼数 - + Offset 偏移 - + Multiplier 系数 - + Auto Offset 自动偏移 - + Filter 过滤器 - + Persistent 保持 - + Positive 正向 - + Logs LOG记录 @@ -12506,22 +12959,22 @@ The default is configured in the chosen Radio Profile. TelemetrySensorPanel - + Lowest 最低 - + Cell %1 第%1片 - + Highest 最高 - + Delta 每片电压差 @@ -12530,546 +12983,426 @@ The default is configured in the chosen Radio Profile. TelemetrySimulator + Telemetry Simulator 回传模拟器 + When enabled, sends any non-blank values as simulated telemetry data. 如果允许 =, 发送任何非空值作为回传模拟数据. + Simulate 模拟 - + + Replay SD Log File 重播 SD Log 文件 - + + Replay rate - + + |> - + + <| - + + > - + + <- - + + X - + + 1/5x 1/5x - + + 5x 5x - + + No Log File Currently Loaded 现在没有载入任何 log 文件 - + + + Setting RSSI to zero simulates telemetry and radio link loss. + + + + + + Set RSSI to zero when paused. + + + + + + Stop sending telemetry data when the Telemetry Simulator window is hidden. + + + + + + Pause simulation when hidden. + + + + + Load 载入 - + + Row # Timestamp 行数 时间戳 - + + RxBt RxBt 接收机电压 - - - + + + + + + V / ratio 伏 / 比值 - + + RAS - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + + VFAS VFAS FAS传感器电压 - + + Lat,Lon (dec.deg.) - + + dd-MM-yyyy hh:mm:ss - - + + + + Volts V - + + RSSI RSSI 信号强度 - + + Db - + + Curr Curr 电流 - + + Amps A - + + Cels Cells 锂电电压 - + + A1 A1 模拟值1 - + + A2 A2 模拟值2 - + + ASpd ASpd 空速 - - + + + + km/h - + + A3 A3 模拟值3 - + + GAlt GALT GPS高度 - - + + + + Meters m - + + A4 A4 模拟值4 - + + GSpd GSpd GPS速度 - + + Tmp1 Tmp1 温度1 - - Deg. C - - - - + + Hdg Hdg 航向角 - + + Degrees ° - + + Tmp2 Tmp2 温度2 - + + + + °C - + + Date Date 日期 - - + + + + RPM Rpm - + + GPS - + + Fuel Fule 燃油 - + + % - + + AccX AccX X轴加速度 - - - + + + + + + G G - + + Fuel Qty Fule Qty 油量 - + + ml - + + AccY AccY Y轴加速度 - + + VSpd VSpd 垂直速度 - + + m/s - + + AccZ AccZ Z轴加速度 - + + Alt Alt 高度 - + Log File Log 文件 - + LOG Files (*.csv) LOG文件 (*.csv) - + ERROR - invalid file 错误 无效的文件 - - Templates - - - Simple 4-CH - 简单的4通道 - - - - T-Cut - 油门切断 - - - - Sticky T-Cut - 粘滞的油门切断 - - - - V-Tail - V尾 - - - - Elevon\Delta - 升降副翼\三角翼 - - - - Heli Setup - 直升机设定 - - - - Heli Setup with gyro gain control - 带有陀螺感度的直升机设定 - - - - Gyro gain control - 陀螺仪感度控制 - - - - Heli Setup (Futaba's channel assignment style) - 直升机设定 (Futaba式的通道顺序) - - - - Heli Setup with gyro gain control (Futaba's channel assignment style) - 带有陀螺感度的直升机设定 (Futaba式的通道顺序) - - - - Gyro gain control (Futaba's channel assignment style) - 陀螺仪感度控制 (Futaba式的通道顺序) - - - - Servo Test - 舵机测试 - - - - MultiCopter - 多轴 - - - - Use Model Config Wizard - 使用模型配置向导 - - - - Apply Template? - 应用模板? - - - - Apply template "%1"? - 应用模板 "%1"么? - - - - - - - - - - RUD - 方向舵 - - - - - - - - - - - - - ELE - 升降舵 - - - - - - THR - 油门 - - - - - - - - - - - AIL - 副翼 - - - - - - - AIL2 - 副翼2 - - - - - - - ELE2 - 升降舵2 - - - - - - - - - FLAPS - 襟翼 - - - - - - - - - FLAP%1 - 襟翼%1 - - - - - - - PITCH - 仰俯 - - - - - - - - - - - GYRO - 陀螺仪 - - - - - SPOIL - 扰流板 - - - - - SPOIL%1 - 扰流板%1 - - - - - RUD2 - 方向舵2 - - - - - Clear Mixes? - 清除混控? - - - - Really clear existing mixes on CH6? - 是否删除目前6通道上的混控? - - - - Really clear existing mixes on CH5? - 是否删除目前5通道上的混控? - - ThrottlePage @@ -13104,12 +13437,12 @@ hh:mm:ss TimerData - + TMR - + Timer %1 计时器[Timer] %1 @@ -13141,37 +13474,37 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TimerPanel - + Silent 静音 [Silent] - + Beeps 蜂鸣 [Beeps] - + Voice 语音 [Voice] - + Haptic 振动 [Haptic] - + Not persistent 关机不记忆 [Not persistent] - + Persistent (flight) 关机记忆 随Flight重设 [Flight] - + Persistent (manual reset) 关机记忆 手动重设 [manual reset] @@ -13303,6 +13636,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TrainerSimulator + Trainer simulator 教练功能模拟 @@ -13310,28 +13644,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. TreeModel - + Index 模型编号 - + Name - + Size 占用内存 - + + RX # + + + + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Model %1 Translators: do NOT use accents here, this is a default model name. @@ -13925,94 +14264,89 @@ v4.1版电路板应为m2560 <b><u>警告</u></b><br>一般来说CPU类型将会根据固件文件自动选择<br>如果你更改CPU类型, EEPROM可能会不兼容. - - downloadDialog - - - Downloading: - 下载中: - - - - Unable to save the file %1: %2. - 无法保存文件 %1: -%2. - - - - Download failed: %1. - 下载失败:%1. - - joystickDialog + Configure Joystick 配置游戏杆 + Ch2 游戏杆通道2 + Ch1 游戏杆通道1 + Ch4 游戏杆通道4 + Ch6 游戏杆通道6 + Ch3 游戏杆通道3 + Ch5 游戏杆通道5 + Ch7 游戏杆通道7 + Ch8 游戏杆通道8 + Instructions 指令 + Enable + Cancel 取消 + Back + Start 开始通道 [CH] @@ -14023,6 +14357,7 @@ v4.1版电路板应为m2560 + Ok 确定 diff --git a/companion/src/warnings.h b/companion/src/warnings.h index c0bff9b4d..598a911c0 100644 --- a/companion/src/warnings.h +++ b/companion/src/warnings.h @@ -48,6 +48,7 @@ class AppMessages { Q_DECLARE_TR_FUNCTIONS("AppMessages") + public: // These are used for saving "[don't] show this message again" user preferences. enum MessageCodes { diff --git a/companion/targets/mac/DS_Store b/companion/targets/mac/DS_Store index d874b8a2b..4641c21b5 100644 Binary files a/companion/targets/mac/DS_Store and b/companion/targets/mac/DS_Store differ diff --git a/radio/sdcard/horus/CROSSFIRE/crossfire.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua similarity index 100% rename from radio/sdcard/horus/CROSSFIRE/crossfire.lua rename to radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua diff --git a/radio/sdcard/horus/CROSSFIRE/device.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua similarity index 98% rename from radio/sdcard/horus/CROSSFIRE/device.lua rename to radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua index e733dc5a6..e8d8be6db 100644 --- a/radio/sdcard/horus/CROSSFIRE/device.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -320,7 +320,7 @@ local function fieldCommandLoad(field, data, offset) field.status = data[offset] field.timeout = data[offset+1] field.info, offset = fieldGetString(data, offset+2) - if field.status < 2 or field.status > 3 then + if field.status == 0 then fieldPopup = nil end end @@ -406,8 +406,7 @@ local function refreshNext() local time = getTime() if fieldPopup then if time > fieldTimeout then - local frame = { deviceId, 0xEA, fieldPopup.id } - crossfireTelemetryPush(0x2D, frame) + crossfireTelemetryPush(0x2D, { deviceId, 0xEA, fieldPopup.id, 6 }) fieldTimeout = time + fieldPopup.timeout end elseif time > fieldTimeout and not edit then @@ -435,7 +434,7 @@ local function runDevicePage(event) else return "crossfire.lua" end - elseif event == EVT_VIRTUAL_EXIT then -- toggle editing/selecting current field + elseif event == EVT_VIRTUAL_ENTER then -- toggle editing/selecting current field local field = getField(lineIndex) if field.name then if field.type == 10 then diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua new file mode 100755 index 000000000..df7fce8ce --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua @@ -0,0 +1,515 @@ + +---- ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +-----# # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + +local version = "v1.1" + +local VALUE = 0 +local COMBO = 1 +local FLPOI = 2 + + +local edit = false +local page = 1 +local current = 1 --row +local refreshState = 0 +local refreshIndex = 0 +local refreshIndex3 = 0 +local pageOffset = 0 +local pages = {} +local fields = {} +local modifications = {} +local thistime = getTime() +local lastTime = thistime +local margin = 1 +local spacing = 8 +local configFields = {} +local counter = 0 +local appId = 0 + +local function drawScreenTitle(title,page, pages) + if math.fmod(math.floor(getTime()/100),10) == 0 then + title = version + end + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + lcd.drawText(LCD_W-40, 5, page.."/"..pages, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, page, pages) + end +end + +local interfaceconfig = { + {"Sensor group select", VALUE, appId, nil, 0, 15}, +} + +local settingsFields = { + {"Software version", FLPOT, 0x0c, nil, 1, 100 }, + {"Physical ID", VALUE, 0x01, nil, 0, 26 }, + {"Application IDgroup", VALUE, 0x0D, nil, 0, 15 }, + {"Data rate(*100ms)", VALUE, 0x22, nil, 1, 255 }, +} + +local telemetryFields = { + {"TEMP1(C/F)", VALUE, 0x90, nil, -30, 600}, + {"TEMP2(C/F)", VALUE, 0x91, nil, -30, 600}, + {"SPEED(r/min)", VALUE, 0x92, nil, 0, 100000}, + {"Residual Volume(mL)", VALUE, 0x93, nil, 0, 60000}, + {"Residual Percent(%)", VALUE, 0x94, nil, 0, 100}, + {"FLOW(mL/min)", VALUE, 0x95, nil, 0, 2000}, + {"Max Flow(mL/min)", VALUE, 0x96, nil, 0, 2000}, + {"Avg Flow(mL/min)", VALUE, 0x97, nil, 0, 2000}, +} + +-- Change display attribute to current field +local function addField(step) + local field = fields[current] + local min, max + if field[2] == VALUE then + min = field[5] + max = field[6] + elseif field[2] == COMBO then + min = 0 + max = #(field[5]) - 1 + end + if field[2] ~= FLPOT then --only read ? + if field[2] == VALUE and field[6] > 256 then + if field[4] > 1000 then + step = step * 50 + field[4] = math.floor(field[4]/50) + field[4] = field[4] *50 + elseif field[4] > 500 then + step = step * 20 + field[4] = math.floor(field[4]/20) + field[4] = field[4] *20 + elseif field[4] > 200 then + step = step * 10 + field[4] = math.floor(field[4]/10) + field[4] = field[4] *10 + else + step = step * 1 + field[4] = math.floor(field[4]/1) + field[4] = field[4] *1 + end + end + if (step < 0 and field[4] > min) or (step > 0 and field[4] < max) then + field[4] = field[4] + step + end + else + field[4] = field[4] + end +end + +-- Select the next or previous page +local function selectPage(step) + page = 1 + ((page + step - 1 + #pages) % #pages) + refreshIndex = 0 + pageOffset = 0 +end + +-- Select the next or previous editable field +local function selectField(step) + current = current + step + if current > #fields then + current = #fields + elseif current < 1 then + current = 1 + end + if current > 7 + pageOffset then + pageOffset = current - 7 + elseif current <= pageOffset then + pageOffset = current - 1 + end +end + +local function drawProgressBar() + if LCD_W == 480 then + local width = (300 * refreshIndex) / #fields + lcd.drawRectangle(100, 10, 300, 6) + lcd.drawFilledRectangle(102, 13, width, 2); + else + local width = (60 * refreshIndex) / #fields + lcd.drawRectangle(45, 1, 60, 6) + lcd.drawFilledRectangle(47, 3, width, 2); + end +end + +-- Redraw the current page +local function redrawFieldsPage() + lcd.clear() + drawScreenTitle("GasSuit", page, #pages) + if refreshIndex < #fields then + drawProgressBar() + end + for index = 1, 7, 1 do + local field = fields[pageOffset+index] + if field == nil then + break + end + local attr = current == (pageOffset+index) and ((edit == true and BLINK or 0) + INVERS) or 0 + lcd.drawText(1, margin+ spacing * index, field[1]) + if field[4] == nil then + lcd.drawText(LCD_W, margin+ spacing * index, "---", attr + RIGHT) + else + if field[2] == VALUE then + if (field[3] == 0x90 or field[3] == 0x91) and field[4] == 500 then + lcd.drawText(LCD_W, margin+ spacing * index, "---", attr + RIGHT) + else + + lcd.drawNumber(LCD_W, margin+ spacing * index, field[4] , attr + RIGHT) + end + elseif field[2] == COMBO then + if field[4] >= 0 and field[4] < #(field[5]) then + lcd.drawText(LCD_W, margin+ spacing * index, field[5][1+field[4]], attr + RIGHT) + end + elseif field[2] == FLPOT then + lcd.drawText(LCD_W, margin+ spacing * index, field[4], attr + RIGHT) + end + end + end +end + +local function telemetryRead(fieldx) + return sportTelemetryPush(0x1b, 0x30, appId, fieldx) +end + +local function telemetryListen(fieldx) + return sportTelemetryPush(0x1b, 0, 0, 0) +end + +local function telemetryWrite(fieldx, valuex) + return sportTelemetryPush(0x1b, 0x31, appId, fieldx + valuex*256) +end + +local telemetryPopTimeout = 0 +local function refreshNext() + if refreshState == 0 and page ~= 3 then -- + if #modifications > 0 then -- + if modifications[1][1] ~= 0x0c then + if modifications[1][1] == 0x22 then + modifications[1][2] = modifications[1][2] + 0xf00 + end + local modificationstmp = modifications[1][2] + if modifications[1][1] == 0x8a or modifications[1][1] == 0x8b then + if configFields[11][4]== 1 then + modificationstmp = (modifications[1][2] - 32)*10 + modificationstmp = math.floor(modificationstmp/18) + end + end + telemetryWrite(modifications[1][1], modificationstmp) + refreshIndex = 0 + end + modifications[1] = nil + elseif refreshIndex < #fields then + local field = fields[refreshIndex + 1] + if telemetryRead(field[3]) == true then + refreshState = 1 + telemetryPopTimeout = getTime() + 80 + end + end + elseif refreshState == 0 and page == 3 then + if #modifications > 0 then + if modifications[1][1] == 0x96 or modifications[1][1] == 0x97 or modifications[1][1] == 0x93 then + telemetryWrite(modifications[1][1], 0) + end + modifications[1] = nil + elseif refreshIndex < #fields then + local field = fields[refreshIndex + 1] + if telemetryRead(field[3]) == true then + refreshState = 1 + telemetryPopTimeout = getTime() + 20 + end + elseif refreshIndex >= #fields then + refreshIndex = 0 + refreshState = 0 + end + elseif refreshState == 1 and page ~= 3 then + local physicalId, primId, dataId, value = sportTelemetryPop() + if primId == 0x32 and dataId >= 0x0d00 and dataId <= 0x0d7f then + local fieldId = value % 256 + local field = fields[refreshIndex + 1] + if fieldId == field[3] then + local value = math.floor(value / 256) + if field[2] == COMBO then + for index = 1, #(field[6]), 1 do + if value == field[6][index] then + value = index - 1 + break + end + end + elseif field[2] == VALUE then + value = value -- - field[8] + field[5] + end + if field[1] == "Software version" then + local flo_string = string.char(value/16%16 + 48).."."..string.char(value%16 + 48) + fields[refreshIndex + 1][4] = flo_string + else + fields[refreshIndex + 1][4] = value + end + refreshIndex = refreshIndex + 1 + refreshState = 0 + end + elseif getTime() > telemetryPopTimeout then + refreshState = 0 + end + elseif refreshState == 1 and page == 3 then + local pageID3 = 0 + local physicalId3, primId3, dataId3, value3 = sportTelemetryPop() + if value3 ~= nil then + pageID3 = value3 % 256 + value3 = math.floor(value3 / 0x100) + end + if primId3 == 0x32 and value3 ~= nil then + if pageID3 == fields[refreshIndex + 1][3] then + local field = fields[refreshIndex + 1] + if field[2] == COMBO and #field == 6 then + for index = 1, #(field[6]), 1 do + if value3 == field[6][index] then + value3 = index - 1 + break + end + end + elseif field[2] == VALUE then + if field[3] == 0x90 or field[3] == 0x91 then + value3 = math.floor(value3 % 0x10000) + if value3 > 0xf000 then + value3 = value3 - 0x10000 + end + if configFields[11][4]== 1 and (field[3] == 0x90 or field[3] == 0x91) then + value3 =(value3*18) + value3 = math.floor(value3/10)+32 + end + else + value3 = value3 + end + end + fields[refreshIndex + 1][4] = value3 + refreshIndex = refreshIndex + 1 + refreshState = 0 + end + elseif getTime() > telemetryPopTimeout then + refreshState = 0 + end + end +end + +local function updateField(field) + local value = field[4] + if field[2] == COMBO and #field == 6 then + value = field[6][1+value] + elseif field[2] == VALUE and #field == 6 then + value = value -- + field[8] - field[5] + elseif field[2] == FLPOT then + value = 0 + end + modifications[#modifications+1] = {field[3], value} +end + +-- Main1 +local function runFieldsPage(event) + if event == EVT_VIRTUAL_EXIT then + return 2 + elseif event == EVT_VIRTUAL_ENTER then + if fields[current][4] ~= nil then + edit = not edit + if edit == false then + updateField(fields[current]) + end + end + elseif edit then + if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then + addField(1) + elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then + addField(-1) + end + else + if event == EVT_VIRTUAL_NEXT then + selectField(1) + elseif event == EVT_VIRTUAL_PREVIOUS then + selectField(-1) + end + end + redrawFieldsPage() + return 0 +end + +local function runConfigPage(event) + fields = configFields + local result = runFieldsPage(event) + return result +end + +local function runSettingsPage(event) + fields = settingsFields + return runFieldsPage(event) +end + +local function runTelemetryPage(event) + fields = telemetryFields + return runFieldsPage(event) +end + +-- Init +local function init() + current, edit, refreshState, refreshIndex = 1, false, 0, 0 + if LCD_W == 480 then + margin = 10 + spacing = 20 + end + if LCD_W == 128 then + configFields = { + {"CDI off speed limit", VALUE, 0x81, nil, 10,10000}, -- 1 + {"Milliliter per pulse", VALUE, 0x80, nil, 1, 2000}, -- 2 + {"Volume", VALUE, 0x83, nil, 10,60000}, -- 3 + -- {"Flow trigger", VALUE, 0x84, nil, 5, 50 }, + -- {"Flow Reset", COMBO, 0x85, nil, { "ON", "OFF" }, {1 , 0}}, + {"Auto Reset", COMBO, 0x8d, nil, { "ON", "OFF" }, {0 , 1}}, -- 4 + {"Reset settings", COMBO, 0x86, nil,{ "YES", "NO" }, {1 , 0} }, -- 5 + {"Volume alarm(%)", VALUE, 0x87, nil, 0, 90 }, -- 6 + {"Max.Flow alarm", VALUE, 0x88, nil, 0, 2000 }, -- 7 + {"Over speed alarm", VALUE, 0x89, nil, 0, 10000 }, -- 8 + {"Over temp1 alarm", VALUE, 0x8a, nil, 0, 600 }, -- 9 + {"Over temp2 alarm", VALUE, 0x8b, nil, 0, 600 }, -- 10 + {"Temperature C/F", COMBO, 0x8c, nil,{ "C", "F" }, {0 , 1} }, -- 11 + } + else + configFields = { + {"CDI off speed limit(*100RPM)", VALUE, 0x81, nil, 10,10000}, + {"Milliliter per pulse(*0.001mL/pul)", VALUE, 0x80, nil, 1, 2000}, + {"Volume(mL)", VALUE, 0x83, nil, 10,60000}, + -- {"Flow trigger(mL/min)", VALUE, 0x84, nil, 5, 50 }, + -- {"Flow Reset", COMBO, 0x85, nil, { "ON", "OFF" }, {1 , 0}}, + {"Auto Reset", COMBO, 0x8d, nil, { "ON", "OFF" }, {0 , 1}}, + {"Reset to factory settings", COMBO, 0x86, nil,{ "YES", "NO" }, {1 , 0} }, + {"Volume alarm(%)", VALUE, 0x87, nil, 0, 90 }, + {"Max.Flow alarm(mL/min)", VALUE, 0x88, nil, 0, 2000 }, + {"Over speed alarm(*100RPM)", VALUE, 0x89, nil, 0, 10000 }, + {"Over temperature1 alarm(C/F)", VALUE, 0x8a, nil, 0, 600 }, + {"Over temperature2 alarm(C/F)", VALUE, 0x8b, nil, 0, 600 }, + {"Temperature Celsius/Fahrenheit", COMBO, 0x8c, nil,{ "C", "F" }, {0 , 1} }, + } + end + + pages = { + runConfigPage, + runSettingsPage, + runTelemetryPage, + } + + -- Warning : GaSuite tool requires Temp2 to be connected and discovered for script to work + for index = 1, 40, 1 do + local sensor = model.getSensor(index) + if sensor ~= nil and sensor.id >= 0x0d10 and sensor.id <= 0x0d1f then + appId = sensor.id + break + end + end + + if appId == 0 then + error("No GasSuit sensor in this model!") + end +end + +local function background() + local tonefrq,tonelength,tonepause + thistime = getTime() + lastTime = thistime + refreshNext() + if page == 3 then --alarm + local alarmnum = 0 + if fields[3][4] ~= nil and configFields[9][4] ~= nil then + local speedtest = fields[3][4] + local speedover = configFields[9][4]*100 + if speedtest >= speedover then + tonefrq = 800 + math.max(0,math.floor((speedtest - speedover)/10)) + tonelength = 50 + math.max(0,(150 - math.floor((speedtest - speedover)/10))) + tonepause = tonelength + playTone(tonefrq, tonelength, tonepause, PLAY_BACKGROUND,10) + alarmnum = alarmnum + 1 + end + end + if fields[5][4] ~= nil and configFields[7][4] ~= nil then + local Residualtest = fields[5][4] + local Residualline = configFields[6][4] + if Residualtest < Residualline then + tonefrq = 400 + tonelength = 100 + tonepause = 1000 + math.floor( Residualline - Residualtest )*30 + playTone(tonefrq, tonelength, tonepause, PLAY_BACKGROUND,10) + alarmnum = alarmnum + 1 + end + end + if fields[6][4] ~= nil and configFields[8][4] ~= nil then + local Flowtest = fields[6][4] + local Flowover = configFields[7][4] + if Flowtest > Flowover then + tonefrq = 400 + tonelength = 100 + tonepause = 200 + playTone(tonefrq, tonelength, tonepause, PLAY_BACKGROUND,10) + alarmnum = alarmnum + 1 + end + end + if fields[1][4] ~= nil and configFields[10][4] ~= nil then + local temp1test = fields[1][4] -- + local temp1over = configFields[9][4] + if temp1test > temp1over and (temp1test ~= 500 and temp1test ~= 932) then + tonefrq = 2000 + tonelength = 100 + tonepause = 900 + playTone(tonefrq, tonelength, tonepause, PLAY_BACKGROUND,10) + alarmnum = alarmnum + 1 + end + end + if fields[2][4] ~= nil and configFields[11][4] ~= nil then + local temp2test = fields[2][4] + local temp2over = configFields[10][4] + if temp2test > temp2over and (temp2test ~= 500 and temp2test ~= 932) then + tonefrq = 2000 + tonelength = 300 + tonepause = 700 + playTone(tonefrq, tonelength, tonepause, PLAY_BACKGROUND,10) + alarmnum = alarmnum + 1 + end + end + if alarmnum > 1 then + playTone(2000, 100, 100, PLAY_BACKGROUND,10) + end + alarmnum = 0 + end +end + +local function run(event) + if event == nil then + error("Cannot be run as a sensor script!") + return 2 + elseif event == EVT_VIRTUAL_NEXT_PAGE then + selectPage(1) + elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + killEvents(event); + selectPage(-1) + end + local result = pages[page](event) + if page ~= 3 then + refreshNext() + end + background() + return result +end + +return { init=init, background=background, run=run } diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua new file mode 100644 index 000000000..1b82bc47f --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua @@ -0,0 +1,289 @@ +---- ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +-----# # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + +local version = "v1.2" + +local VALUE = 0 +local COMBO = 1 + +local edit = false +local page = 1 +local current = 1 --row +local refreshState = 0 +local refreshIndex = 0 +local pageOffset = 0 +local pages = {} +local fields = {} +local modifications = {} +local margin = 1 +local spacing = 8 +local appId = 0 + +local function drawScreenTitle(title,page, pages) + if math.fmod(math.floor(getTime()/100),10) == 0 then + title = version + end + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + lcd.drawText(LCD_W-40, 5, page.."/"..pages, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, page, pages) + end +end + +local settingsFields = { + {"SBEC OUTPUT (V)", VALUE, 0x80, nil, 50, 84 }, + {"Physical ID", VALUE, 0x01, nil, 0, 26 }, + {"Application IDgroup", VALUE, 0x0D, nil, 0, 15 }, + {"Data rate(*100ms)", VALUE, 0x22, nil, 1, 255 }, +} + +-- Change display attribute to current field +local function addField(step) + local field = fields[current] + local min, max + if field[2] == VALUE then + min = field[5] + max = field[6] + elseif field[2] == COMBO then + min = 0 + max = #(field[5]) - 1 + end + if field[2] ~= FLPOT then --only read ? + if field[2] == VALUE and field[6] > 256 then + if field[4] > 1000 then + step = step * 50 + field[4] = math.floor(field[4]/50) + field[4] = field[4] *50 + elseif field[4] > 500 then + step = step * 20 + field[4] = math.floor(field[4]/20) + field[4] = field[4] *20 + elseif field[4] > 200 then + step = step * 10 + field[4] = math.floor(field[4]/10) + field[4] = field[4] *10 + else + step = step * 1 + field[4] = math.floor(field[4]/1) + field[4] = field[4] *1 + end + end + if (step < 0 and field[4] > min) or (step > 0 and field[4] < max) then + field[4] = field[4] + step + end + else + field[4] = field[4] + end +end + + +-- Select the next or previous editable field +local function selectField(step) + current = current + step + if current > #fields then + current = #fields + elseif current < 1 then + current = 1 + end + if current > 7 + pageOffset then + pageOffset = current - 7 + elseif current <= pageOffset then + pageOffset = current - 1 + end +end + +local function drawProgressBar() + if LCD_W == 480 then + local width = (300 * refreshIndex) / #fields + lcd.drawRectangle(100, 10, 300, 6) + lcd.drawFilledRectangle(102, 13, width, 2); + else + local width = (60 * refreshIndex) / #fields + lcd.drawRectangle(45, 1, 60, 6) + lcd.drawFilledRectangle(47, 3, width, 2); + end +end + +-- Redraw the current page +local function redrawFieldsPage() + lcd.clear() + drawScreenTitle("SBEC", page, #pages) + if refreshIndex < #fields then + drawProgressBar() + end + for index = 1, 7, 1 do + local field = fields[pageOffset+index] + if field == nil then + break + end + local attr = current == (pageOffset+index) and ((edit == true and BLINK or 0) + INVERS) or 0 + lcd.drawText(1, margin+ spacing * index, field[1]) + if field[4] == nil then + lcd.drawText(LCD_W, margin+ spacing * index, "---", attr + RIGHT) + else + if field[2] == VALUE then + if field[3] == 0x80 then + lcd.drawNumber(LCD_W, margin+ spacing * index, field[4] , attr + RIGHT + PREC1) + else + lcd.drawNumber(LCD_W, margin+ spacing * index, field[4] , attr + RIGHT) + end + end + end + end +end + +local function telemetryRead(fieldx) + return sportTelemetryPush(0x17, 0x30, appId, fieldx) +end + +local function telemetryIdle(field) + return sportTelemetryPush(0x17, 0x21, appId, field) +end + +local function telemetryUnIdle(field) + return sportTelemetryPush(0x17, 0x20, appId, field) +end + +local function telemetryWrite(fieldx, valuex) + return sportTelemetryPush(0x17, 0x31, appId, fieldx + valuex*256) +end + +local telemetryPopTimeout = 0 +local function refreshNext() + if refreshState == 0 then + if #modifications > 0 then + local modificationstmp = modifications[1][2] + telemetryWrite(modifications[1][1], modificationstmp) + refreshIndex = 0 + modifications[1] = nil + elseif refreshIndex < #fields then + local field = fields[refreshIndex + 1] + if telemetryRead(field[3]) == true then + refreshState = 1 + telemetryPopTimeout = getTime() + 80 + end + end + elseif refreshState == 1 then + local physicalId, primId, dataId, value = sportTelemetryPop() + if primId == 0x32 and dataId == appId then + local fieldId = value % 256 + local field = fields[refreshIndex + 1] + if fieldId == field[3] then + local value = math.floor(value / 256) + if field[2] == VALUE then + value = value + end + + fields[refreshIndex + 1][4] = value + refreshIndex = refreshIndex + 1 + refreshState = 0 + end + elseif getTime() > telemetryPopTimeout then + refreshState = 0 + end + end +end + +local function updateField(field) + local value = field[4] + if field[2] == VALUE and #field == 6 then + value = value + end + modifications[#modifications+1] = {field[3], value} +end + +-- Main1 +local function runFieldsPage(event) + if event == EVT_VIRTUAL_EXIT then + telemetryUnIdle(0x80) + return 2 + elseif event == EVT_VIRTUAL_ENTER then + if fields[current][4] ~= nil then + edit = not edit + if edit == false then + updateField(fields[current]) + end + end + elseif edit then + if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then + addField(1) + elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then + addField(-1) + end + else + if event == EVT_VIRTUAL_NEXT then + selectField(1) + elseif event == EVT_VIRTUAL_PREVIOUS then + selectField(-1) + end + end + redrawFieldsPage() + return 0 +end + +local function runSettingsPage(event) + fields = settingsFields + return runFieldsPage(event) +end + +-- Init +local function init() + current, edit, refreshState, refreshIndex = 1, false, 0, 0 + if LCD_W == 480 then + margin = 10 + spacing = 20 + end + + pages = { + runSettingsPage, + } + + for index = 1, 40, 1 do + local sensor = model.getSensor(index) + if sensor ~= nil and sensor.id >= 0x0e50 and sensor.id <= 0x0e5f then + appId = sensor.id + break + end + end + + if appId == 0 then + error("No SBEC sensor in this model!") + end + + telemetryIdle(0x80) +end + +local function run(event) + if event == nil then + error("Cannot run as a model script!") + return 2 + elseif event == EVT_PAGE_BREAK or event == EVT_PAGEDN_FIRST or event == EVT_SHIFT_BREAK then + --selectPage(1) + elseif event == EVT_PAGE_LONG or event == EVT_PAGEUP_FIRST or event == EVT_SHIFT_LONG then + --killEvents(event); + --selectPage(-1) + end + local result = pages[page](event) + + refreshNext() + + return result +end + +return { init=init, background=background, run=run } diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua new file mode 100755 index 000000000..c49b78f52 --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua @@ -0,0 +1,363 @@ +--- - ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +----- # # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + +local version = "v2.00" + +local VALUE = 0 +local COMBO = 1 + +local COLUMN_2 = 300 + +local edit = false +local page = 1 +local current = 1 +local refreshState = 0 +local refreshIndex = 0 +local calibrationState = 0 +local pageOffset = 0 +local calibrationStep = 0 +local pages = {} +local fields = {} +local modifications = {} +local wingBitmaps = {} +local mountBitmaps = {} +local margin = 1 +local spacing = 8 +local counter = 0 + +local configFields = { + { "Wing type", COMBO, 0x80, nil, { "Normal", "Delta", "VTail" } }, + { "Mounting type", COMBO, 0x81, nil, { "Horz", "Horz rev.", "Vert", "Vert rev." } }, +} + +local wingBitmapsFile = { "bmp/plane.bmp", "bmp/delta.bmp", "bmp/vtail.bmp" } +local mountBitmapsFile = { "bmp/horz.bmp", "bmp/horz-r.bmp", "bmp/vert.bmp", "bmp/vert-r.bmp" } + +local settingsFields = { + {"SxR functions", COMBO, 0x9C, nil, { "Disable", "Enable" } }, + {"Quick Mode:", COMBO, 0xAA, nil, { "Disable", "Enable" } }, + {"CH5 mode", COMBO, 0xA8, nil, { "AIL2", "AUX1" } }, + {"CH6 mode", COMBO, 0xA9, nil, { "ELE2", "AUX2" } }, + {"AIL direction", COMBO, 0x82, nil, { "Normal", "Invers" }, { 255, 0 } }, + {"ELE direction", COMBO, 0x83, nil, { "Normal", "Invers" }, { 255, 0 } }, + {"RUD direction", COMBO, 0x84, nil, { "Normal", "Invers" }, { 255, 0 } }, + {"AIL2 direction", COMBO, 0x9A, nil, { "Normal", "Invers" }, { 255, 0 } }, + {"ELE2 direction", COMBO, 0x9B, nil, { "Normal", "Invers" }, { 255, 0 } }, + {"AIL stab gain", VALUE, 0x85, nil, 0, 200, "%"}, + {"ELE stab gain", VALUE, 0x86, nil, 0, 200, "%"}, + {"RUD stab gain", VALUE, 0x87, nil, 0, 200, "%"}, + {"AIL autolvl gain", VALUE, 0x88, nil, 0, 200, "%"}, + {"ELE autolvl gain", VALUE, 0x89, nil, 0, 200, "%"}, + {"ELE hover gain", VALUE, 0x8C, nil, 0, 200, "%"}, + {"RUD hover gain", VALUE, 0x8D, nil, 0, 200, "%"}, + {"AIL knife gain", VALUE, 0x8E, nil, 0, 200, "%"}, + {"RUD knife gain", VALUE, 0x90, nil, 0, 200, "%"}, + {"AIL autolvl offset", VALUE, 0x91, nil, -20, 20, "%", 0x6C}, + {"ELE autolvl offset", VALUE, 0x92, nil, -20, 20, "%", 0x6C}, + {"ELE hover offset", VALUE, 0x95, nil, -20, 20, "%", 0x6C}, + {"RUD hover offset", VALUE, 0x96, nil, -20, 20, "%", 0x6C}, + {"AIL knife offset", VALUE, 0x97, nil, -20, 20, "%", 0x6C}, + {"RUD knife offset", VALUE, 0x99, nil, -20, 20, "%", 0x6C}, +} + +local calibrationFields = { + { "X:", VALUE, 0x9E, 0, -100, 100, "%" }, + { "Y:", VALUE, 0x9F, 0, -100, 100, "%" }, + { "Z:", VALUE, 0xA0, 0, -100, 100, "%" } +} + +local function drawScreenTitle(title, page, pages) + if math.fmod(math.floor(getTime() / 100), 10) == 0 then + title = version + end + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + lcd.drawText(LCD_W - 40, 5, page .. "/" .. pages, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, page, pages) + end +end + +-- Change display attribute to current field +local function addField(step) + local field = fields[current] + local min, max + if field[2] == VALUE then + min = field[5] + max = field[6] + elseif field[2] == COMBO then + min = 0 + max = #(field[5]) - 1 + end + if (step < 0 and field[4] > min) or (step > 0 and field[4] < max) then + field[4] = field[4] + step + end +end + +-- Select the next or previous page +local function selectPage(step) + page = 1 + ((page + step - 1 + #pages) % #pages) + refreshIndex = 0 + calibrationStep = 0 + pageOffset = 0 +end + +-- Select the next or previous editable field +local function selectField(step) + current = 1 + ((current + step - 1 + #fields) % #fields) + if current > 7 + pageOffset then + pageOffset = current - 7 + elseif current <= pageOffset then + pageOffset = current - 1 + end +end + +local function drawProgressBar() + if LCD_W == 480 then + local width = (300 * refreshIndex) / #fields + lcd.drawRectangle(100, 10, 300, 6) + lcd.drawFilledRectangle(102, 13, width, 2); + else + local width = (60 * refreshIndex) / #fields + lcd.drawRectangle(45, 1, 60, 6) + lcd.drawFilledRectangle(47, 3, width, 2); + end +end + +-- Redraw the current page +local function redrawFieldsPage(event) + lcd.clear() + drawScreenTitle("SxR", page, #pages) + + if refreshIndex < #fields then + drawProgressBar() + end + + for index = 1, 10, 1 do + local field = fields[pageOffset + index] + if field == nil then + break + end + + local attr = current == (pageOffset + index) and ((edit == true and BLINK or 0) + INVERS) or 0 + + lcd.drawText(1, margin + spacing * index, field[1], attr) + + if field[4] == nil then + lcd.drawText(LCD_W, margin + spacing * index, "---", RIGHT + attr) + else + if field[2] == VALUE then + lcd.drawNumber(LCD_W, margin + spacing * index, field[4], RIGHT + attr) + elseif field[2] == COMBO then + if field[4] >= 0 and field[4] < #(field[5]) then + lcd.drawText(LCD_W, margin + spacing * index, field[5][1 + field[4]], RIGHT + attr) + end + end + end + end +end + +local function telemetryRead(field) + return sportTelemetryPush(0x17, 0x30, 0x0C30, field) +end + +local function telemetryWrite(field, value) + return sportTelemetryPush(0x17, 0x31, 0x0C30, field + value * 256) +end + +local telemetryPopTimeout = 0 +local function refreshNext() + if refreshState == 0 then + if calibrationState == 1 then + if telemetryWrite(0x9D, calibrationStep) == true then + refreshState = 1 + calibrationState = 2 + telemetryPopTimeout = getTime() + 120 -- normal delay is 500ms + end + elseif #modifications > 0 then + telemetryWrite(modifications[1][1], modifications[1][2]) + modifications[1] = nil + elseif refreshIndex < #fields then + local field = fields[refreshIndex + 1] + if telemetryRead(field[3]) == true then + refreshState = 1 + telemetryPopTimeout = getTime() + 80 -- normal delay is 500ms + end + end + elseif refreshState == 1 then + local physicalId, primId, dataId, value = sportTelemetryPop() + if physicalId == 0x1A and primId == 0x32 and dataId == 0x0C30 then + local fieldId = value % 256 + if calibrationState == 2 then + if fieldId == 0x9D then + refreshState = 0 + calibrationState = 0 + calibrationStep = (calibrationStep + 1) % 7 + end + else + local field = fields[refreshIndex + 1] + if fieldId == field[3] then + local value = math.floor(value / 256) + if field[3] == 0xAA then + value = bit32.band(value, 0x0001) + end + if field[3] >= 0x9E and field[3] <= 0xA0 then + local b1 = value % 256 + local b2 = math.floor(value / 256) + value = b1 * 256 + b2 + value = value - bit32.band(value, 0x8000) * 2 + end + if field[2] == COMBO and #field == 6 then + for index = 1, #(field[6]), 1 do + if value == field[6][index] then + value = index - 1 + break + end + end + elseif field[2] == VALUE and #field == 8 then + value = value - field[8] + field[5] + end + fields[refreshIndex + 1][4] = value + refreshIndex = refreshIndex + 1 + refreshState = 0 + end + end + elseif getTime() > telemetryPopTimeout then + fields[refreshIndex + 1][4] = nil + refreshIndex = refreshIndex + 1 + refreshState = 0 + calibrationState = 0 + end + end +end + +local function updateField(field) + local value = field[4] + if field[2] == COMBO and #field == 6 then + value = field[6][1 + value] + elseif field[2] == VALUE and #field == 8 then + value = value + field[8] - field[5] + end + modifications[#modifications + 1] = { field[3], value } +end + +-- Main +local function runFieldsPage(event) + if event == EVT_VIRTUAL_EXIT then -- exit script + return 2 + elseif event == EVT_VIRTUAL_ENTER then -- toggle editing/selecting current field + if fields[current][4] ~= nil then + edit = not edit + if edit == false then + updateField(fields[current]) + end + end + elseif edit then + if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then + addField(1) + elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then + addField(-1) + end + else + if event == EVT_VIRTUAL_NEXT then + selectField(1) + elseif event == EVT_VIRTUAL_PREVIOUS then + selectField(-1) + end + end + redrawFieldsPage(event) + return 0 +end + +local function runConfigPage(event) + fields = configFields + local result = runFieldsPage(event) + if LCD_W == 128 then + local mountText = { "Label is facing the sky", "Label is facing ground", "Label is left when", "Label is right when" } + if fields[2][4] ~= nil then + lcd.drawText(1, 30, "Pins toward tail") + lcd.drawText(1, 40, mountText[1 + fields[2][4]]) + if fields[2][4] > 1 then + lcd.drawText(1, 50, "looking from the tail") + end + end + else + if fields[1][4] ~= nil then + if LCD_W == 480 then + if wingBitmaps[1 + fields[1][4]] == nil then + wingBitmaps[1 + fields[1][4]] = Bitmap.open(wingBitmapsFile[1 + fields[1][4]]) + end + lcd.drawBitmap(wingBitmaps[1 + fields[1][4]], 10, 90) + else + lcd.drawPixmap(20, 28, wingBitmapsFile[1 + fields[1][4]]) + end + end + if fields[2][4] ~= nil then + if LCD_W == 480 then + if mountBitmaps[1 + fields[2][4]] == nil then + mountBitmaps[1 + fields[2][4]] = Bitmap.open(mountBitmapsFile[1 + fields[2][4]]) + end + lcd.drawBitmap(mountBitmaps[1 + fields[2][4]], 190, 110) + else + lcd.drawPixmap(128, 28, mountBitmapsFile[1 + fields[2][4]]) + end + end + end + return result +end + +local function runSettingsPage(event) + fields = settingsFields + return runFieldsPage(event) +end + +-- Init +local function init() + current, edit, refreshState, refreshIndex = 1, false, 0, 0 + if LCD_W == 480 then + margin = 10 + spacing = 20 + wingBitmapsFile = { "img/plane_b.png", "img/delta_b.png", "img/planev_b.png" } + mountBitmapsFile = { "img/up.png", "img/down.png", "img/vert.png", "img/vert-r.png" } + end + pages = { + runConfigPage, + runSettingsPage, + } +end + +-- Main +local function run(event) + if event == nil then + error("Cannot be run as a model script!") + return 2 + elseif event == EVT_VIRTUAL_NEXT_PAGE then + selectPage(1) + elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + killEvents(event); + selectPage(-1) + end + + local result = pages[page](event) + refreshNext() + + return result +end + +return { init = init, run = run } + diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/crossfire.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/crossfire.lua new file mode 100644 index 000000000..de0ec06dc --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/crossfire.lua @@ -0,0 +1,37 @@ +local toolName = "TNS|Crossfire configure|TNE" + +---- ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +-----# # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + + + +-- Init +local function init() +end + +-- Run +local function run(event) + if event == nil then + error("Cannot run as a model script!") + return 2 + end + + chdir("CROSSFIRE") + return "crossfire.lua" +end + +return { init=init, run=run } diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/readme.txt b/radio/sdcard/horus/SCRIPTS/TOOLS/readme.txt new file mode 100644 index 000000000..20b95c415 --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/readme.txt @@ -0,0 +1 @@ +Scripts that need to be available in TOOLS menu should be in this directory diff --git a/radio/sdcard/horus/SCRIPTS/WIZARD/glider/wizard.lua b/radio/sdcard/horus/SCRIPTS/WIZARD/glider/wizard.lua index 05a8bf6e0..1985589bc 100644 --- a/radio/sdcard/horus/SCRIPTS/WIZARD/glider/wizard.lua +++ b/radio/sdcard/horus/SCRIPTS/WIZARD/glider/wizard.lua @@ -258,7 +258,7 @@ local function runFlapsConfig(event) end local TailFields = { - {50, 50, COMBO, 1, 1, { "1 channel for Elevator, no Rudder", "One chan for Elevator, one for Rudder", "Two chans for Elevator, one for Rudder", "V Tail"} }, + {50, 50, COMBO, 1, 1, { "1 channel for Elevator, no Rudder", "One channel for Elevator, one for Rudder", "Two channels for Elevator, one for Rudder", "V Tail"} }, {50, 127, COMBO, 1, 1, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --ele {50, 167, COMBO, 1, 3, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --rud {50, 207, COMBO, 0, 5, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --ele2 @@ -302,8 +302,8 @@ local function runTailConfig(event) if fields[1][5] == 2 then lcd.drawBitmap(ImgTail, 252, 100) lcd.drawBitmap(ImgTailRud, 340, 100) - drawMark(415, 150, "A") - drawMark(380, 120, "C") + drawMark(415, 150, "C") + drawMark(380, 120, "A") drawMark(390, 185, "B") lcd.drawFilledRectangle(40, 122, 100, 30, CUSTOM_COLOR) drawMark(152, 124, "A") @@ -332,7 +332,7 @@ end local lineIndex local function drawNextLine(text, text2) lcd.drawText(40, lineIndex, text, TEXT_COLOR) - lcd.drawText(250, lineIndex, text2 + 1, TEXT_COLOR) + lcd.drawText(242, lineIndex, ": CH" .. text2 + 1, TEXT_COLOR) lineIndex = lineIndex + 20 end @@ -354,38 +354,35 @@ local function runConfigSummary(event) lineIndex = 40 -- motors if(MotorFields[1][5] == 1) then - drawNextLine("Motor chan :", MotorFields[2][5]) - elseif (MotorFields[1][5] == 2) then - drawNextLine("Motor 1 chan :", MotorFields[2][5]) - drawNextLine("Motor 2 chan :", MotorFields[3][5]) + drawNextLine("Motor channel", MotorFields[2][5]) end -- ail if(AilFields[1][5] == 1) then - drawNextLine("Aileron chan :",AilFields[2][5]) + drawNextLine("Aileron channel",AilFields[2][5]) elseif (AilFields[1][5] == 2) then - drawNextLine("Aileron 1 chan :",AilFields[2][5]) - drawNextLine("Aileron 2 chan :",AilFields[3][5]) + drawNextLine("Aileron Right channel",AilFields[2][5]) + drawNextLine("Aileron Left channel",AilFields[3][5]) end -- flaps if(FlapsFields[1][5] == 1) then - drawNextLine("Flaps chan :",FlapsFields[2][5]) + drawNextLine("Flaps channel",FlapsFields[2][5]) elseif (FlapsFields[1][5] == 2) then - drawNextLine("Flaps 1 chan :",FlapsFields[2][5]) - drawNextLine("Flaps 2 chan :",FlapsFields[3][5]) + drawNextLine("Flaps Right channel",FlapsFields[2][5]) + drawNextLine("Flaps Left channel",FlapsFields[3][5]) end -- tail if(TailFields[1][5] == 0) then - drawNextLine("Elevator chan :",TailFields[2][5]) + drawNextLine("Elevator channel",TailFields[2][5]) elseif (TailFields[1][5] == 1) then - drawNextLine("Elevator chan :",TailFields[2][5]) - drawNextLine("Rudder chan :",TailFields[3][5]) + drawNextLine("Elevator channel",TailFields[2][5]) + drawNextLine("Rudder channel",TailFields[3][5]) elseif (TailFields[1][5] == 2) then - drawNextLine("Elevator 1 chan :",TailFields[2][5]) - drawNextLine("Rudder chan :",TailFields[3][5]) - drawNextLine("Elevator 2 chan :",TailFields[4][5]) + drawNextLine("Elevator Right channel",TailFields[2][5]) + drawNextLine("Rudder channel",TailFields[3][5]) + drawNextLine("Elevator Left channel",TailFields[4][5]) elseif (TailFields[1][5] == 3) then - drawNextLine("V-Tail elevator :", TailFields[2][5]) - drawNextLine("V-Tail rudder :", TailFields[3][5]) + drawNextLine("V-Tail Right", TailFields[2][5]) + drawNextLine("V-Tail Left", TailFields[3][5]) end local result = runFieldsPage(event) if(fields[1][5] == 1 and edit == false) then @@ -414,23 +411,20 @@ local function createModel(event) -- motor if(MotorFields[1][5] == 1) then addMix(MotorFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor") - elseif (MotorFields[1][5] == 2) then - addMix(MotorFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor1") - addMix(MotorFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor2") end -- Ailerons if(AilFields[1][5] == 1) then addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail") elseif (AilFields[1][5] == 2) then - addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL") - addMix(AilFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR", -100) + addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR") + addMix(AilFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL", -100) end -- Flaps if(FlapsFields[1][5] == 1) then addMix(FlapsFields[2][5], MIXSRC_SA, "Flaps") elseif (FlapsFields[1][5] == 2) then - addMix(FlapsFields[2][5], MIXSRC_SA, "FlapsL") - addMix(FlapsFields[3][5], MIXSRC_SA, "FlapsR") + addMix(FlapsFields[2][5], MIXSRC_SA, "FlapsR") + addMix(FlapsFields[3][5], MIXSRC_SA, "FlapsL") end -- Tail if(TailFields[1][5] == 0) then @@ -439,14 +433,14 @@ local function createModel(event) addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev") addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") elseif (TailFields[1][5] == 2) then - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevL") + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevR") addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") - addMix(TailFields[4][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevR") + addMix(TailFields[4][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevL") elseif (TailFields[1][5] == 3) then - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", 50, 1) - addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) - addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", -50, 1) + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", 50, 1) + addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) + addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", -50, 1) end lcd.drawText(70, 90, "Model successfully created !", TEXT_COLOR) lcd.drawText(100, 130, "Press RTN to exit", TEXT_COLOR) diff --git a/radio/sdcard/horus/SCRIPTS/WIZARD/plane/wizard.lua b/radio/sdcard/horus/SCRIPTS/WIZARD/plane/wizard.lua index b5701e56d..37a78d4e3 100755 --- a/radio/sdcard/horus/SCRIPTS/WIZARD/plane/wizard.lua +++ b/radio/sdcard/horus/SCRIPTS/WIZARD/plane/wizard.lua @@ -258,7 +258,7 @@ local function runFlapsConfig(event) end local TailFields = { - {50, 50, COMBO, 1, 1, { "1 channel for Elevator, no Rudder", "One chan for Elevator, one for Rudder", "Two chans for Elevator, one for Rudder", "V Tail"} }, + {50, 50, COMBO, 1, 1, { "1 channel for Elevator, no Rudder", "One channel for Elevator, one for Rudder", "Two channels for Elevator, one for Rudder", "V Tail"} }, {50, 127, COMBO, 1, 1, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --ele {50, 167, COMBO, 1, 3, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --rud {50, 207, COMBO, 0, 5, { "CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8" } }, --ele2 @@ -332,7 +332,7 @@ end local lineIndex local function drawNextLine(text, text2) lcd.drawText(40, lineIndex, text, TEXT_COLOR) - lcd.drawText(250, lineIndex, text2 + 1, TEXT_COLOR) + lcd.drawText(242, lineIndex, ": CH" .. text2 + 1, TEXT_COLOR) lineIndex = lineIndex + 20 end @@ -354,38 +354,35 @@ local function runConfigSummary(event) lineIndex = 40 -- motors if(MotorFields[1][5] == 1) then - drawNextLine("Motor chan :", MotorFields[2][5]) - elseif (MotorFields[1][5] == 2) then - drawNextLine("Motor 1 chan :", MotorFields[2][5]) - drawNextLine("Motor 2 chan :", MotorFields[3][5]) + drawNextLine("Motor channel", MotorFields[2][5]) end -- ail if(AilFields[1][5] == 1) then - drawNextLine("Aileron chan :",AilFields[2][5]) + drawNextLine("Aileron channel",AilFields[2][5]) elseif (AilFields[1][5] == 2) then - drawNextLine("Aileron 1 chan :",AilFields[2][5]) - drawNextLine("Aileron 2 chan :",AilFields[3][5]) + drawNextLine("Aileron Right channel",AilFields[2][5]) + drawNextLine("Aileron Left channel",AilFields[3][5]) end -- flaps if(FlapsFields[1][5] == 1) then - drawNextLine("Flaps chan :",FlapsFields[2][5]) + drawNextLine("Flaps channel",FlapsFields[2][5]) elseif (FlapsFields[1][5] == 2) then - drawNextLine("Flaps 1 chan :",FlapsFields[2][5]) - drawNextLine("Flaps 2 chan :",FlapsFields[3][5]) + drawNextLine("Flaps Right channel",FlapsFields[2][5]) + drawNextLine("Flaps Left channel",FlapsFields[3][5]) end -- tail if(TailFields[1][5] == 0) then - drawNextLine("Elevator chan :",TailFields[2][5]) + drawNextLine("Elevator channel",TailFields[2][5]) elseif (TailFields[1][5] == 1) then - drawNextLine("Elevator chan :",TailFields[2][5]) - drawNextLine("Rudder chan :",TailFields[3][5]) + drawNextLine("Elevator channel",TailFields[2][5]) + drawNextLine("Rudder channel",TailFields[3][5]) elseif (TailFields[1][5] == 2) then - drawNextLine("Elevator 1 chan :",TailFields[2][5]) - drawNextLine("Rudder chan :",TailFields[3][5]) - drawNextLine("Elevator 2 chan :",TailFields[4][5]) + drawNextLine("Elevator Right channel",TailFields[2][5]) + drawNextLine("Rudder channel",TailFields[3][5]) + drawNextLine("Elevator Left channel",TailFields[4][5]) elseif (TailFields[1][5] == 3) then - drawNextLine("V-Tail elevator :", TailFields[2][5]) - drawNextLine("V-Tail rudder :", TailFields[3][5]) + drawNextLine("V-Tail Right", TailFields[2][5]) + drawNextLine("V-Tail Left", TailFields[3][5]) end local result = runFieldsPage(event) if(fields[1][5] == 1 and edit == false) then @@ -414,23 +411,20 @@ local function createModel(event) -- motor if(MotorFields[1][5] == 1) then addMix(MotorFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor") - elseif (MotorFields[1][5] == 2) then - addMix(MotorFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor1") - addMix(MotorFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(2), "Motor2") end -- Ailerons if(AilFields[1][5] == 1) then addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail") elseif (AilFields[1][5] == 2) then - addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL") - addMix(AilFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR", -100) + addMix(AilFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR") + addMix(AilFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL", -100) end -- Flaps if(FlapsFields[1][5] == 1) then addMix(FlapsFields[2][5], MIXSRC_SA, "Flaps") elseif (FlapsFields[1][5] == 2) then - addMix(FlapsFields[2][5], MIXSRC_SA, "FlapsL") - addMix(FlapsFields[3][5], MIXSRC_SA, "FlapsR") + addMix(FlapsFields[2][5], MIXSRC_SA, "FlapsR") + addMix(FlapsFields[3][5], MIXSRC_SA, "FlapsL") end -- Tail if(TailFields[1][5] == 0) then @@ -439,14 +433,14 @@ local function createModel(event) addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev") addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") elseif (TailFields[1][5] == 2) then - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevL") + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevR") addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") - addMix(TailFields[4][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevR") + addMix(TailFields[4][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevL") elseif (TailFields[1][5] == 3) then - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) - addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", 50, 1) - addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) - addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", -50, 1) + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) + addMix(TailFields[2][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", 50, 1) + addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) + addMix(TailFields[3][5], MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", -50, 1) end lcd.drawText(70, 90, "Model successfully created !", TEXT_COLOR) lcd.drawText(100, 130, "Press RTN to exit", TEXT_COLOR) diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 27900f5b1..289df386b 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -315,7 +315,7 @@ local function fieldCommandLoad(field, data, offset) field.status = data[offset] field.timeout = data[offset+1] field.info, offset = fieldGetString(data, offset+2) - if field.status < 2 or field.status > 3 then + if field.status == 0 then fieldPopup = nil end end @@ -401,8 +401,7 @@ local function refreshNext() local time = getTime() if fieldPopup then if time > fieldTimeout then - local frame = { deviceId, 0xEA, fieldPopup.id } - crossfireTelemetryPush(0x2D, frame) + crossfireTelemetryPush(0x2D, { deviceId, 0xEA, fieldPopup.id, 6 }) fieldTimeout = time + fieldPopup.timeout end elseif time > fieldTimeout and not edit then diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/crossfire.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/crossfire.lua new file mode 100644 index 000000000..62ca776d7 --- /dev/null +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/crossfire.lua @@ -0,0 +1,37 @@ +local toolName = "TNS|Crossfire config|TNE" + +---- ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +-----# # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + + + +-- Init +local function init() +end + +-- Run +local function run(event) + if event == nil then + error("Cannot run as a model script!") + return 2 + end + + chdir("CROSSFIRE") + return "crossfire.lua" +end + +return { init=init, run=run } diff --git a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/delta.lua b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/delta.lua index 5f3e5185f..b30185e2f 100755 --- a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/delta.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/delta.lua @@ -311,6 +311,7 @@ end local function drawNextLine(x, y, label, channel) lcd.drawText(x, y, label, 0); + lcd.drawText(x+48, y, ":", 0); lcd.drawSource(x+52, y, MIXSRC_CH1+channel, 0) y = y + 8 if y > 50 then @@ -327,12 +328,12 @@ local function drawConfirmationMenu() lcd.drawText(48, 1, "Ready to go?", 0); lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0) if engineMode == 1 then - x, y = drawNextLine(x, y, "Thr:", thrCH1) + x, y = drawNextLine(x, y, "Throttle", thrCH1) end - x, y = drawNextLine(x, y, "Ele L:", elevCH1) - x, y = drawNextLine(x, y, "Ele R:", elevCH2) + x, y = drawNextLine(x, y, "Elevon L", elevCH1) + x, y = drawNextLine(x, y, "Elevon R", elevCH2) if rudderMode == 1 then - drawNextLine(x, y, "Rudder:", rudCH1) + drawNextLine(x, y, "Rudder", rudCH1) end lcd.drawText(48, LCD_H-8, "[Enter Long] to confirm", 0); lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0) diff --git a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/multi.lua b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/multi.lua index 970fc0529..ebc7c536f 100755 --- a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/multi.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/multi.lua @@ -165,8 +165,8 @@ end -- Init function local function init() thrCH1 = defaultChannel(2) - rollCH1 = defaultChannel(3) - yawCH1 = defaultChannel(0) + rollCH1 = defaultChannel(0) + yawCH1 = defaultChannel(3) pitchCH1 = defaultChannel(1) local ver, radio, maj, minor, rev = getVersion() if string.match(radio, "x7") then @@ -326,6 +326,7 @@ end -- Confirmation Menu local function drawNextLine(x, y, label, channel) lcd.drawText(x, y, label, 0); + lcd.drawText(x+46, y, ":", 0); lcd.drawSource(x+50, y, MIXSRC_CH1+channel, 0) y = y + 8 if y > 50 then @@ -337,6 +338,7 @@ end local function drawNextSWLine(x, y, label, switch) lcd.drawText(x, y, label, 0); + lcd.drawText(x+38, y, ":", 0); lcd.drawText(x+42, y, switches[switch], 0) y = y + 8 if y > 50 then @@ -352,15 +354,15 @@ local function drawConfirmationMenu() lcd.clear() lcd.drawText(0, 1, "Ready to go?", 0); lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0) - x, y = drawNextLine(x, y, "Throttle:", thrCH1) - x, y = drawNextLine(x, y, "Roll:", rollCH1) - x, y = drawNextLine(x, y, "Pitch:", pitchCH1) - x, y = drawNextLine(x, y, "Yaw:", yawCH1) + x, y = drawNextLine(x, y, "Throttle", thrCH1) + x, y = drawNextLine(x, y, "Roll", rollCH1) + x, y = drawNextLine(x, y, "Pitch", pitchCH1) + x, y = drawNextLine(x, y, "Yaw", yawCH1) local x = 72 local y = 12 - x, y = drawNextSWLine(x, y, "Arm:", armSW1) - x, y = drawNextSWLine(x, y, "Mode:", modeSW1) - x, y = drawNextSWLine(x, y, "Beeper:", beeperSW1) + x, y = drawNextSWLine(x, y, "Arm", armSW1) + x, y = drawNextSWLine(x, y, "Mode", modeSW1) + x, y = drawNextSWLine(x, y, "Beeper", beeperSW1) lcd.drawText(0, LCD_H-8, "[Enter Long] to confirm", 0); lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0) fieldsMax = 0 diff --git a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/plane.lua b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/plane.lua index ce32430bc..6558b8f12 100755 --- a/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/plane.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/WIZARD/plane.lua @@ -429,6 +429,7 @@ end -- Confirmation Menu local function drawNextLine(x, y, label, channel) lcd.drawText(x, y, label, 0); + lcd.drawText(x+26, y, ":", 0); lcd.drawSource(x+30, y, MIXSRC_CH1+channel, 0) y = y + 8 if y > 50 then @@ -502,8 +503,8 @@ local function applySettings() if aileronsMode == 1 then addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail") elseif aileronsMode == 2 then - addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL") - addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR", -100) + addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL", -100) + addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR") end if flapsMode == 1 then addMix(flapsCH1, MIXSRC_SA, "Flap") @@ -519,9 +520,9 @@ local function applySettings() end if tailMode == 3 then addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) - addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", 50, 1) + addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", -50, 1) addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) - addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", -50, 1) + addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", 50, 1) else if tailMode > 0 then addMix(rudCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua index ee3f87958..6f733469a 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -315,7 +315,7 @@ local function fieldCommandLoad(field, data, offset) field.status = data[offset] field.timeout = data[offset+1] field.info, offset = fieldGetString(data, offset+2) - if field.status < 2 or field.status > 3 then + if field.status == 0 then fieldPopup = nil end end @@ -401,8 +401,7 @@ local function refreshNext() local time = getTime() if fieldPopup then if time > fieldTimeout then - local frame = { deviceId, 0xEA, fieldPopup.id } - crossfireTelemetryPush(0x2D, frame) + crossfireTelemetryPush(0x2D, { deviceId, 0xEA, fieldPopup.id, 6 }) fieldTimeout = time + fieldPopup.timeout end elseif time > fieldTimeout and not edit then diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/crossfire.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/crossfire.lua new file mode 100644 index 000000000..de0ec06dc --- /dev/null +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/crossfire.lua @@ -0,0 +1,37 @@ +local toolName = "TNS|Crossfire configure|TNE" + +---- ######################################################################### +---- # # +---- # Copyright (C) OpenTX # +-----# # +---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html # +---- # # +---- # This program is free software; you can redistribute it and/or modify # +---- # it under the terms of the GNU General Public License version 2 as # +---- # published by the Free Software Foundation. # +---- # # +---- # This program is distributed in the hope that it will be useful # +---- # but WITHOUT ANY WARRANTY; without even the implied warranty of # +---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +---- # GNU General Public License for more details. # +---- # # +---- ######################################################################### + + + +-- Init +local function init() +end + +-- Run +local function run(event) + if event == nil then + error("Cannot run as a model script!") + return 2 + end + + chdir("CROSSFIRE") + return "crossfire.lua" +end + +return { init=init, run=run } diff --git a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/delta.lua b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/delta.lua index 6ca2f2f2c..06af19541 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/delta.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/delta.lua @@ -338,10 +338,10 @@ local function drawConfirmationMenu() if engineMode == 1 then x, y = drawNextLine(x, y, "Throttle", thrCH1) end - x, y = drawNextLine(x, y, "Elev L", elevCH1) - x, y = drawNextLine(x, y, "Elev R", elevCH2) + x, y = drawNextLine(x, y, "Elevon L", elevCH1) + x, y = drawNextLine(x, y, "Elevon R", elevCH2) if rudderMode == 1 then - drawNextLine(x, y, "Rudder:", rudCH1) + drawNextLine(x, y, "Rudder", rudCH1) end lcd.drawText(48, LCD_H-8, "Long [ENT] to confirm", 0); lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0) diff --git a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/multi.lua b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/multi.lua index 5335f0e72..773abafad 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/multi.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/multi.lua @@ -20,8 +20,8 @@ local ROLL_PAGE = 1 local PITCH_PAGE = 2 local YAW_PAGE = 3 local ARM_PAGE = 4 -local MODE_PAGE = 5 -local BEEPER_PAGE = 6 +local BEEPER_PAGE = 5 +local MODE_PAGE = 6 local CONFIRMATION_PAGE = 7 -- Navigation variables @@ -340,6 +340,7 @@ end -- Confirmation Menu local function drawNextCHLine(x, y, label, channel) lcd.drawText(x, y, label, 0); + lcd.drawText(x+48, y, ":", 0); lcd.drawSource(x+52, y, MIXSRC_CH1+channel, 0) y = y + 8 if y > 50 then @@ -351,6 +352,7 @@ end local function drawNextSWLine(x, y, label, switch) lcd.drawText(x, y, label, 0); + lcd.drawText(x+76, y, ":", 0); lcd.drawText(x+80, y, switches[switch], 0) y = y + 8 if y > 50 then @@ -366,15 +368,15 @@ local function drawConfirmationMenu() lcd.clear() lcd.drawText(48, 1, "Ready to go?", 0); lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0) - x, y = drawNextCHLine(x, y, "Throttle:", thrCH1) - x, y = drawNextCHLine(x, y, "Roll:", rollCH1) - x, y = drawNextCHLine(x, y, "Pitch:", pitchCH1) - x, y = drawNextCHLine(x, y, "Yaw:", yawCH1) + x, y = drawNextCHLine(x, y, "Throttle", thrCH1) + x, y = drawNextCHLine(x, y, "Roll", rollCH1) + x, y = drawNextCHLine(x, y, "Pitch", pitchCH1) + x, y = drawNextCHLine(x, y, "Yaw", yawCH1) x = 95 y = 12 - x, y = drawNextSWLine(x, y, "Arm switch:", armSW1) - x, y = drawNextSWLine(x, y, "Mode switch:", modeSW1) - x, y = drawNextSWLine(x, y, "Beeper switch:", beeperSW1) + x, y = drawNextSWLine(x, y, "Arm switch", armSW1) + x, y = drawNextSWLine(x, y, "Beeper switch", beeperSW1) + x, y = drawNextSWLine(x, y, "Mode switch", modeSW1) lcd.drawText(48, LCD_H-8, "[Enter Long] to confirm", 0); lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0) lcd.drawPixmap(LCD_W-18, 0, "confirm-tick.bmp") @@ -396,7 +398,7 @@ end local function applySettings() model.defaultInputs() model.deleteMixes() - addMix(thrCH1, MIXSRC_FIRST_INPUT+defaultChannel(2), "Throttle") + addMix(thrCH1, MIXSRC_FIRST_INPUT+defaultChannel(2), "Engine") addMix(rollCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Roll") addMix(yawCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Yaw") addMix(pitchCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "Pitch") diff --git a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/plane.lua b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/plane.lua index d682d13f3..5a75fbcc1 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/plane.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/WIZARD/plane.lua @@ -509,8 +509,8 @@ local function applySettings() if aileronsMode == 1 then addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail") elseif aileronsMode == 2 then - addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL") - addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR", -100) + addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilL", -100) + addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "AilR") end if flapsMode == 1 then addMix(flapsCH1, MIXSRC_SA, "Flaps") @@ -526,9 +526,9 @@ local function applySettings() end if tailMode == 3 then addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleL", 50) - addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", 50, 1) + addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudL", -50, 1) addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-EleR", 50) - addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", -50, 1) + addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-RudR", 50, 1) else if tailMode > 0 then addMix(rudCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder") diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 8febbc149..84591767f 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -32,7 +32,7 @@ option(AUTOSOURCE "Automatic source detection in menus" ON) option(AUTOSWITCH "Automatic switch detection in menus" ON) option(SEMIHOSTING "Enable debugger semihosting" OFF) option(JITTER_MEASURE "Enable ADC jitter measurement" OFF) -option(WATCHDOG_DISABLED "Disable hardware Watchdog" OFF) +option(WATCHDOG "Enable hardware Watchdog" ON) if(SDL_FOUND) option(SIMU_AUDIO "Enable simulator audio." ON) endif() @@ -232,8 +232,8 @@ if(JITTER_MEASURE) add_definitions(-DJITTER_MEASURE) endif() -if(WATCHDOG_DISABLED) - add_definitions(-DWATCHDOG_DISABLED) +if(WATCHDOG) + add_definitions(-DWATCHDOG) endif() if(SIMU_AUDIO) diff --git a/radio/src/audio.cpp b/radio/src/audio.cpp index e23c06412..caa15119d 100644 --- a/radio/src/audio.cpp +++ b/radio/src/audio.cpp @@ -529,7 +529,7 @@ void audioTask(void * pdata) RTOS_WAIT_MS(1000); // 1s #endif - if (!unexpectedShutdown) { + if (!globalData.unexpectedShutdown) { AUDIO_HELLO(); } diff --git a/radio/src/bitmaps/colorlcd/mask_antenna.png b/radio/src/bitmaps/colorlcd/mask_antenna.png new file mode 100755 index 000000000..c9c66efb2 Binary files /dev/null and b/radio/src/bitmaps/colorlcd/mask_antenna.png differ diff --git a/radio/src/bluetooth.h b/radio/src/bluetooth.h index 26f8b308b..72e0120ac 100644 --- a/radio/src/bluetooth.h +++ b/radio/src/bluetooth.h @@ -54,6 +54,7 @@ class Bluetooth public: void writeString(const char * str); char * readline(bool error_reset = true); + void write(const uint8_t * data, uint8_t length); void forwardTelemetry(const uint8_t * packet); void wakeup(); @@ -66,7 +67,6 @@ class Bluetooth protected: void pushByte(uint8_t byte); uint8_t read(uint8_t * data, uint8_t size, uint32_t timeout=1000/*ms*/); - void write(const uint8_t * data, uint8_t length); void appendTrainerByte(uint8_t data); void processTrainerFrame(const uint8_t * buffer); void processTrainerByte(uint8_t data); diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 0d0e49891..16d459b06 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -191,8 +191,8 @@ enum TrainerMode { #if defined(PCBTARANIS) TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE, TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, -#endif TRAINER_MODE_MASTER_BATTERY_COMPARTMENT, +#endif #if defined(BLUETOOTH) TRAINER_MODE_MASTER_BLUETOOTH, TRAINER_MODE_SLAVE_BLUETOOTH, @@ -482,7 +482,6 @@ enum SwitchSources { SWSRC_SR2, #endif - #if defined(PCBSKY9X) SWSRC_ID0 = SWSRC_FIRST_SWITCH, SWSRC_ID1, @@ -501,7 +500,7 @@ enum SwitchSources { #if NUM_XPOTS > 0 SWSRC_FIRST_MULTIPOS_SWITCH, - SWSRC_LAST_MULTIPOS_SWITCH = SWSRC_FIRST_MULTIPOS_SWITCH + (NUM_POTS * XPOTS_MULTIPOS_COUNT) - 1, + SWSRC_LAST_MULTIPOS_SWITCH = SWSRC_FIRST_MULTIPOS_SWITCH + (NUM_XPOTS * XPOTS_MULTIPOS_COUNT) - 1, #endif SWSRC_FIRST_TRIM, diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 035e3fbba..cf4c5dcab 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -323,6 +323,9 @@ PACK(struct VarioData { * Telemetry Sensor structure */ +#define TELEMETRY_ENDPOINT_NONE 0xFF +#define TELEMETRY_ENDPOINT_SPORT 0x07 + PACK(struct TelemetrySensor { union { uint16_t id; // data identifier, for FrSky we can reuse existing ones. Source unit is derived from type. @@ -383,18 +386,17 @@ PACK(struct TelemetrySensor { int32_t getPrecDivisor() const; bool isSameInstance(TelemetryProtocol protocol, uint8_t instance) { + if (this->instance == instance) + return true; + if (protocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) { - if (((this->instance ^ instance) & 0x9F) == 0) { + if (((this->instance ^ instance) & 0x9F) == 0 && (this->instance >> 5) != TELEMETRY_ENDPOINT_SPORT && (instance >> 5) != TELEMETRY_ENDPOINT_SPORT) { this->instance = instance; // update the instance in case we had telemetry switching return true; } - else { - return false; - } - } - else { - return this->instance == instance; } + + return false; } ); }); @@ -422,16 +424,13 @@ PACK(struct TrainerModuleData { #define MM_RF_CUSTOM_SELECTED 0xff PACK(struct ModuleData { uint8_t type:4; + // TODO some refactoring is needed, rfProtocol is only used by DSM2 and MULTI, it could be merged with subType int8_t rfProtocol:4; uint8_t channelsStart; int8_t channelsCount; // 0=8 channels - union { - struct { - uint8_t failsafeMode:4; // only 3 bits used - uint8_t subType:3; - uint8_t invertedSerial:1; // telemetry serial inverted from standard - }; - }; + uint8_t failsafeMode:4; // only 3 bits used + uint8_t subType:3; + uint8_t invertedSerial:1; // telemetry serial inverted from standard union { uint8_t raw[PXX2_MAX_RECEIVERS_PER_MODULE * PXX2_LEN_RX_NAME + 1]; @@ -452,10 +451,9 @@ PACK(struct ModuleData { NOBACKUP(struct { uint8_t power:2; // 0=10 mW, 1=100 mW, 2=500 mW, 3=1W uint8_t spare1:2; - uint8_t receiver_telem_off:1; // false = receiver telem enabled - uint8_t receiver_channel_9_16:1; // false = pwm out 1-8, true 9-16 - uint8_t external_antenna:1; // false = internal antenna, true = external antenna - uint8_t fast:1; // TODO: to be used later by external module (fast means serial @ high speed) + uint8_t receiverTelemetryOff:1; // false = receiver telem enabled + uint8_t receiverHigherChannels:1; // false = pwm out 1-8, true 9-16 + int8_t antennaMode:2; uint8_t spare2; } pxx); NOBACKUP(struct { @@ -668,7 +666,7 @@ PACK(struct TrainerData { #define SPLASH_MODE uint8_t splashMode:1; uint8_t splashSpare:2 #endif -#if defined(PCBXLITES) || defined(PCBHORUS) +#if defined(PCBXLITES) #define GYRO_FIELDS \ int8_t gyroMax; \ int8_t gyroOffset; @@ -685,13 +683,13 @@ PACK(struct TrainerData { NOBACKUP(char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]); \ NOBACKUP(char anaNames[NUM_STICKS + STORAGE_NUM_POTS + STORAGE_NUM_SLIDERS][LEN_ANA_NAME]); \ NOBACKUP(char currModelFilename[LEN_MODEL_FILENAME+1]); \ - NOBACKUP(uint8_t spare4:1); \ + NOBACKUP(uint8_t spare5:1); \ NOBACKUP(uint8_t blOffBright:7); \ NOBACKUP(char bluetoothName[LEN_BLUETOOTH_NAME]); #elif defined(PCBTARANIS) || defined(PCBNV14) #if defined(STORAGE_BLUETOOTH) #define BLUETOOTH_FIELDS \ - uint8_t spare4; \ + uint8_t spare5; \ char bluetoothName[LEN_BLUETOOTH_NAME]; #else #define BLUETOOTH_FIELDS @@ -709,7 +707,7 @@ PACK(struct TrainerData { #elif defined(PCBSKY9X) #define EXTRA_GENERAL_FIELDS \ int8_t txCurrentCalibration; \ - int8_t spare4; \ + int8_t spare5; \ uint8_t mAhWarn; \ uint16_t mAhUsed; \ int8_t temperatureCalib; \ @@ -735,7 +733,7 @@ PACK(struct TrainerData { #if defined(BUZZER) #define BUZZER_FIELD int8_t buzzerMode:2 // -2=quiet, -1=only alarms, 0=no keys, 1=all (only used on AVR radios without audio hardware) #else - #define BUZZER_FIELD int8_t spare3:2 + #define BUZZER_FIELD int8_t spare4:2 #endif PACK(struct RadioData { @@ -747,7 +745,9 @@ PACK(struct RadioData { N_HORUS_FIELD(uint8_t contrast); NOBACKUP(uint8_t vBatWarn); NOBACKUP(int8_t txVoltageCalibration); - NOBACKUP(int8_t backlightMode); + uint8_t backlightMode:3; + int8_t antennaMode:2; + int8_t spare1:3; NOBACKUP(TrainerData trainer); NOBACKUP(uint8_t view); // index of view in main screen NOBACKUP(BUZZER_FIELD); /* 2bits */ @@ -768,7 +768,7 @@ PACK(struct RadioData { NOBACKUP(uint8_t templateSetup); // RETA order for receiver channels NOBACKUP(int8_t PPM_Multiplier); NOBACKUP(int8_t hapticLength); - N_HORUS_FIELD(N_TARANIS_FIELD(uint8_t spare1)); + N_HORUS_FIELD(N_TARANIS_FIELD(uint8_t spare2)); N_HORUS_FIELD(N_TARANIS_FIELD(uint8_t stickReverse)); NOBACKUP(int8_t beepLength:3); NOBACKUP(int8_t hapticStrength:3); @@ -791,7 +791,7 @@ PACK(struct RadioData { NOBACKUP(uint8_t disableRssiPoweroffAlarm:1); NOBACKUP(uint8_t USBMode:2); NOBACKUP(uint8_t jackMode:2); - NOBACKUP(uint8_t spare2:1); + NOBACKUP(uint8_t spare3:1); NOBACKUP(char ttsLanguage[2]); NOBACKUP(int8_t beepVolume:4); NOBACKUP(int8_t wavVolume:4); @@ -945,7 +945,7 @@ static inline void check_struct() CHKSIZE(RadioData, 735); CHKSIZE(ModelData, 5301); #elif defined(PCBHORUS) - CHKSIZE(RadioData, 883); + CHKSIZE(RadioData, 881); CHKSIZE(ModelData, 9736); #endif diff --git a/radio/src/fonts.h b/radio/src/fonts.h index 86c38ec5b..466615691 100644 --- a/radio/src/fonts.h +++ b/radio/src/fonts.h @@ -41,7 +41,7 @@ void loadFonts(); extern const unsigned char font_5x7[]; extern const unsigned char font_10x14[]; -#if defined(BOLD_FONT) && !defined(BOOT) +#if defined(BOLD_FONT) && !defined(BOOT) #define BOLD_SPECIFIC_FONT extern const unsigned char font_5x7_B[]; #endif diff --git a/radio/src/gui/128x64/bmp.cpp b/radio/src/gui/128x64/bmp.cpp index 3a78b82b7..81f352e00 100644 --- a/radio/src/gui/128x64/bmp.cpp +++ b/radio/src/gui/128x64/bmp.cpp @@ -129,10 +129,11 @@ uint8_t * lcdLoadBitmap(uint8_t * bmp, const char * filename, uint8_t width, uin memset(dest, 0, BITMAP_BUFFER_SIZE(w, h) - 2); - uint8_t rowSize = (w + 7) / 8; + uint8_t rowSize; switch (depth) { case 1: + rowSize = ((w + 31) / 32) * 4; for (int8_t i=h-1; i>=0; i--) { result = f_read(&bmpFile, buf, rowSize, &read); if (result != FR_OK || read != rowSize) { diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index be69f27f7..6a720068a 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -183,8 +183,7 @@ void title(const char * s); title(name) typedef int choice_t; - -choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event); +choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable = nullptr); uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const char * label, LcdFlags attr, event_t event); swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event); @@ -231,15 +230,11 @@ void drawStatusLine(); #define drawStatusLine() #endif -#define TEXT_FILENAME_MAXLEN 40 -extern char s_text_file[TEXT_FILENAME_MAXLEN]; void menuTextView(event_t event); void pushMenuTextView(const char *filename); void pushModelNotes(); void readModelNotes(); -#define LABEL(...) (uint8_t)-1 - #define CURSOR_MOVED_LEFT(event) (IS_ROTARY_LEFT(event) || EVT_KEY_MASK(event) == KEY_LEFT) #define CURSOR_MOVED_RIGHT(event) (IS_ROTARY_RIGHT(event) || EVT_KEY_MASK(event) == KEY_RIGHT) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index d40843195..7fd5039b0 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -922,15 +922,34 @@ void lcdDraw1bitBitmap(coord_t x, coord_t y, const uint8_t * img, uint8_t idx, L const uint8_t * q = img; uint8_t w = *q++; uint8_t hb = ((*q++) + 7) / 8; + uint8_t yShift = y % 8; + bool inv = (att & INVERS) ? true : (att & BLINK ? BLINK_ON_PHASE : false); + q += idx*w*hb; + for (uint8_t yb = 0; yb < hb; yb++) { + uint8_t *p = &displayBuf[(y / 8 + yb) * LCD_W + x]; + for (coord_t i=0; i> yShift)) | (b >> (8 - yShift)); + } + } } + p++; } } } diff --git a/radio/src/gui/128x64/menu_model.cpp b/radio/src/gui/128x64/menu_model.cpp index 0f64fab14..4a450d143 100644 --- a/radio/src/gui/128x64/menu_model.cpp +++ b/radio/src/gui/128x64/menu_model.cpp @@ -23,7 +23,7 @@ uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay) { lcdDrawTextAlignedLeft(y, str); - lcdDrawNumber(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); + lcdDrawNumber(MIXES_2ND_COLUMN, y, delay, attr|PREC1|LEFT); if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); return delay; } diff --git a/radio/src/gui/128x64/menu_radio.cpp b/radio/src/gui/128x64/menu_radio.cpp index 42cad8424..9f5e3ee8a 100644 --- a/radio/src/gui/128x64/menu_radio.cpp +++ b/radio/src/gui/128x64/menu_radio.cpp @@ -22,7 +22,7 @@ void menuRadioSpecialFunctions(event_t event) { -#if defined(PCBTARANIS) +#if defined(NAVIGATION_X7) const CustomFunctionData * cfn = &g_eeGeneral.customFn[menuVerticalPosition]; if (!CFN_SWITCH(cfn) && menuHorizontalPosition < 0 && event==EVT_KEY_BREAK(KEY_ENTER)) { menuHorizontalPosition = 0; @@ -33,7 +33,7 @@ void menuRadioSpecialFunctions(event_t event) menuSpecialFunctions(event, g_eeGeneral.customFn, &globalFunctionsContext); -#if defined(PCBX7) +#if defined(NAVIGATION_X7) if (!CFN_SWITCH(cfn) && menuHorizontalPosition == 0 && s_editMode <= 0) { menuHorizontalPosition = -1; } diff --git a/radio/src/gui/128x64/model_select.cpp b/radio/src/gui/128x64/model_select.cpp index a53a2756d..d0184e5ea 100644 --- a/radio/src/gui/128x64/model_select.cpp +++ b/radio/src/gui/128x64/model_select.cpp @@ -22,6 +22,15 @@ #define MODELSEL_W LCD_W +void onDeleteModelConfirm(const char * result) +{ + if (result == STR_OK) { + storageCheck(true); + eeDeleteModel(menuVerticalPosition); // delete file + s_copyMode = 0; + } +} + void onModelSelectMenu(const char * result) { int8_t sub = menuVerticalPosition; @@ -45,13 +54,14 @@ void onModelSelectMenu(const char * result) POPUP_WARNING(eeBackupModel(sub)); } else if (result == STR_RESTORE_MODEL || result == STR_UPDATE_LIST) { - if (!sdListFiles(MODELS_PATH, MODELS_EXT, MENU_LINE_LENGTH-1, NULL)) { + if (sdListFiles(MODELS_PATH, MODELS_EXT, MENU_LINE_LENGTH-1, nullptr)) + POPUP_MENU_START(onModelSelectMenu); + else POPUP_WARNING(STR_NO_MODELS_ON_SD); - } } #endif else if (result == STR_DELETE_MODEL) { - POPUP_CONFIRMATION(STR_DELETEMODEL, nullptr); + POPUP_CONFIRMATION(STR_DELETEMODEL, onDeleteModelConfirm); SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR); } #if defined(SDCARD) @@ -68,14 +78,6 @@ void onModelSelectMenu(const char * result) void menuModelSelect(event_t event) { - if (warningResult) { - warningResult = 0; - storageCheck(true); - eeDeleteModel(menuVerticalPosition); // delete file - s_copyMode = 0; - event = EVT_ENTRY_UP; - } - event_t _event_ = event; if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT) || IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event)) { _event_ = 0; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 17002dc1e..4cc85a678 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -90,7 +90,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS, ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_BIND, ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM, -#if defined(EXTERNAL_ANTENNA) +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA, #endif ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE, @@ -224,8 +224,25 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define TRAINER_BLUETOOTH_S_ROW (bluetooth.distantAddr[0] == '\0' ? HIDDEN_ROW : LABEL()) #define IF_BT_TRAINER_ON(x) (g_eeGeneral.bluetoothMode == BLUETOOTH_TRAINER ? (uint8_t)(x) : HIDDEN_ROW) +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) +#define EXTERNAL_ANTENNA_ROW ((isModuleXJT(INTERNAL_MODULE) && g_eeGeneral.antennaMode == ANTENNA_MODE_PER_MODEL) ? (uint8_t)0 : HIDDEN_ROW), +void onModelAntennaSwitchConfirm(const char * result) +{ + if (result == STR_OK) { + // Switch to external antenna confirmation + g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode = ANTENNA_MODE_EXTERNAL; + globalData.externalAntennaEnabled = true; + storageDirty(EE_MODEL); + } + else { + reusableBuffer.moduleSetup.antennaMode = g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode; + } +} +#else +#define EXTERNAL_ANTENNA_ROW +#endif + #if defined(PCBX7) || defined(PCBX9LITE) - #define ANTENNA_ROW #if defined(BLUETOOTH) #define TRAINER_BLUETOOTH_ROW (g_model.trainerData.mode == TRAINER_MODE_MASTER_BLUETOOTH ? TRAINER_BLUETOOTH_M_ROW : (g_model.trainerData.mode == TRAINER_MODE_SLAVE_BLUETOOTH ? TRAINER_BLUETOOTH_S_ROW : HIDDEN_ROW)), #else @@ -234,12 +251,10 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define TRAINER_PPM_PARAMS_ROW (g_model.trainerData.mode == TRAINER_MODE_SLAVE ? (uint8_t)2 : HIDDEN_ROW) #define TRAINER_ROWS LABEL(Trainer), 0, TRAINER_BLUETOOTH_ROW TRAINER_CHANNELS_ROW, TRAINER_PPM_PARAMS_ROW #elif defined(PCBXLITES) - #define ANTENNA_ROW IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(0)), #define TRAINER_BLUETOOTH_ROW (g_model.trainerData.mode == TRAINER_MODE_MASTER_BLUETOOTH ? TRAINER_BLUETOOTH_M_ROW : (g_model.trainerData.mode == TRAINER_MODE_SLAVE_BLUETOOTH ? TRAINER_BLUETOOTH_S_ROW : HIDDEN_ROW)) #define TRAINER_PPM_PARAMS_ROW (g_model.trainerData.mode == TRAINER_MODE_SLAVE ? (uint8_t)2 : HIDDEN_ROW) #define TRAINER_ROWS LABEL(Trainer), 0, IF_BT_TRAINER_ON(TRAINER_BLUETOOTH_ROW), TRAINER_CHANNELS_ROW, TRAINER_PPM_PARAMS_ROW #elif defined(PCBXLITE) - #define ANTENNA_ROW IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(0)), #define TRAINER_BLUETOOTH_ROW (g_model.trainerData.mode == TRAINER_MODE_MASTER_BLUETOOTH ? TRAINER_BLUETOOTH_M_ROW : (g_model.trainerData.mode == TRAINER_MODE_SLAVE_BLUETOOTH ? TRAINER_BLUETOOTH_S_ROW : HIDDEN_ROW)) #define TRAINER_ROWS IF_BT_TRAINER_ON(LABEL(Trainer)), IF_BT_TRAINER_ON(0), IF_BT_TRAINER_ON(TRAINER_BLUETOOTH_ROW), IF_BT_TRAINER_ON(TRAINER_CHANNELS_ROW), HIDDEN_ROW /* xlite has only BT trainer, so never PPM */ #else @@ -274,7 +289,7 @@ void onBluetoothConnectMenu(const char * result) INTERNAL_MODULE_CHANNELS_ROWS, \ IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(isModuleRxNumAvailable(INTERNAL_MODULE) ? (uint8_t)2 : (uint8_t)1)), \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* RxNum */ \ - ANTENNA_ROW \ + EXTERNAL_ANTENNA_ROW \ IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), /* Failsafe */ \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 1), /* Range check and Register buttons */ \ IF_PXX2_MODULE(INTERNAL_MODULE, 0), /* Module options */ \ @@ -285,16 +300,6 @@ void onBluetoothConnectMenu(const char * result) #define INTERNAL_MODULE_ROWS #endif -#if defined(EXTERNAL_ANTENNA) -void onAntennaSwitchConfirm(const char * result) -{ - if (result == STR_OK) { - // Switch to external antenna confirmation - g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna = XJT_EXTERNAL_ANTENNA; - } -} -#endif - void menuModelSetup(event_t event) { int8_t old_editMode = s_editMode; @@ -372,6 +377,9 @@ void menuModelSetup(event_t event) if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { memclear(&reusableBuffer.moduleSetup, sizeof(reusableBuffer.moduleSetup)); reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) + reusableBuffer.moduleSetup.antennaMode = g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode; +#endif } #if (defined(DSM2) || defined(PXX)) @@ -910,16 +918,16 @@ void menuModelSetup(event_t event) if (isModuleR9MNonAccess(EXTERNAL_MODULE)) { if (g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU) { POPUP_WARNING(STR_MODULE_PROTOCOL_FLEX_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #if POPUP_LEVEL >= 3 else if (g_model.moduleData[EXTERNAL_MODULE].subType == MODULE_SUBTYPE_R9M_EU) { - POPUP_WARNING(STR_R9M_PROTO_EU_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + POPUP_WARNING(STR_MODULE_PROTOCOL_EU_WARN_LINE1); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } else { - POPUP_WARNING(STR_R9M_PROTO_FCC_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + POPUP_WARNING(STR_MODULE_PROTOCOL_FCC_WARN_LINE1); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #endif } @@ -1379,20 +1387,23 @@ void menuModelSetup(event_t event) } break; -#if defined(EXTERNAL_ANTENNA) +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) case ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA: - { - uint8_t newAntennaSel = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_ANTENNASELECTION, STR_VANTENNATYPES, g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna, 0, 1, attr, event); - if (newAntennaSel != g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna && newAntennaSel == XJT_EXTERNAL_ANTENNA) { - POPUP_CONFIRMATION(STR_ANTENNACONFIRM1, onAntennaSwitchConfirm); - const char * w = STR_ANTENNACONFIRM2; - SET_WARNING_INFO(w, strlen(w), 0); - } - else { - g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna = newAntennaSel; + reusableBuffer.moduleSetup.antennaMode = editChoice(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_ANTENNA, STR_ANTENNA_MODES, + reusableBuffer.moduleSetup.antennaMode == ANTENNA_MODE_PER_MODEL ? ANTENNA_MODE_INTERNAL : reusableBuffer.moduleSetup.antennaMode, + ANTENNA_MODE_INTERNAL, ANTENNA_MODE_EXTERNAL, attr, event, + [](int value) { return value != ANTENNA_MODE_PER_MODEL; }); + if (event && !s_editMode && reusableBuffer.moduleSetup.antennaMode != g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode) { + if (reusableBuffer.moduleSetup.antennaMode == ANTENNA_MODE_EXTERNAL && !isExternalAntennaEnabled()) { + POPUP_CONFIRMATION(STR_ANTENNACONFIRM1, onModelAntennaSwitchConfirm); + SET_WARNING_INFO(STR_ANTENNACONFIRM2, sizeof(TR_ANTENNACONFIRM2), 0); + } + else { + g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode = reusableBuffer.moduleSetup.antennaMode; + checkExternalAntenna(); + } } break; - } #endif case ITEM_MODEL_SETUP_EXTERNAL_MODULE_OPTIONS: diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index 51313dd8d..b4f4646a3 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -70,7 +70,6 @@ void onCustomFunctionsFileSelectionMenu(const char * result) #endif // SDCARD #if defined(PCBTARANIS) - void onAdjustGvarSourceLongEnterPress(const char * result) { CustomFunctionData * cfn = &g_model.customFn[menuVerticalPosition]; @@ -148,9 +147,8 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF #if defined(PCBTARANIS) #if defined(PCBXLITE) - if (menuHorizontalPosition==0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { - killEvents(KEY_ENTER); - if (IS_SHIFT_PRESSED()) { // ENT LONG on xlite brings up switch type menu, so this menu is activated with SHIT + ENT LONG + // ENT LONG on xlite brings up switch type menu, so this menu is activated with SHIT + ENT LONG + if (menuHorizontalPosition==0 && event==EVT_KEY_LONG(KEY_ENTER) && IS_SHIFT_PRESSED() && !READ_ONLY()) { #else if (menuHorizontalPosition<0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { #endif @@ -172,9 +170,6 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF } POPUP_MENU_START(onCustomFunctionsMenu); } -#if defined(PCBXLITE) - } -#endif #endif // PCBTARANIS for (uint8_t i=0; ifrskyInstance.rxIndex >> 2, sensor->frskyInstance.rxIndex & 0x03, attr); } + else { + lcdDrawText(TELEM_COL2, y, STR_DEFAULT, attr); + } if (attr) { g_model.rssiSource = checkIncDec(event, g_model.rssiSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL | NO_INCDEC_MARKS, isRssiSensorAvailable); } diff --git a/radio/src/gui/128x64/model_telemetry_sensor.cpp b/radio/src/gui/128x64/model_telemetry_sensor.cpp index c14ad3652..f5870f230 100644 --- a/radio/src/gui/128x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/128x64/model_telemetry_sensor.cpp @@ -51,7 +51,7 @@ void menuModelSensor(event_t event) 0, // Name 0, // Type sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, // ID / Formula - sensor->type == TELEM_TYPE_CALCULATED ? HIDDEN_ROW : LABEL(Receiver), // Receiver name + sensor->type == TELEM_TYPE_CALCULATED ? HIDDEN_ROW : READONLY_ROW, // Receiver name ((sensor->type == TELEM_TYPE_CALCULATED && (sensor->formula == TELEM_FORMULA_DIST)) || sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW), // Unit (sensor->isPrecConfigurable() && sensor->unit != UNIT_FAHRENHEIT ? (uint8_t)0 : HIDDEN_ROW), // Precision (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0), // Param1 @@ -84,7 +84,6 @@ void menuModelSensor(event_t event) LcdFlags attr = (sub==k ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0); switch (k) { - case SENSOR_FIELD_NAME: editSingleName(SENSOR_2ND_COLUMN, y, STR_NAME, sensor->label, TELEM_LABEL_LEN, event, attr); break; @@ -106,7 +105,7 @@ void menuModelSensor(event_t event) lcdDrawTextAlignedLeft(y, STR_ID); lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0)); lcdDrawHexChar(SENSOR_3RD_COLUMN, y, sensor->instance & 0x1f, LEFT|(menuHorizontalPosition==1 ? attr : 0)); - if (attr) { + if (attr && s_editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR_ZERO(event, sensor->id, 0xffff); @@ -143,8 +142,19 @@ void menuModelSensor(event_t event) break; case SENSOR_FILED_RECEIVER_NAME: - lcdDrawTextAlignedLeft(y, STR_RECEIVER); - drawReceiverName(SENSOR_2ND_COLUMN, y, sensor->frskyInstance.rxIndex >> 2, sensor->frskyInstance.rxIndex & 0x03, 0); + lcdDrawTextAlignedLeft(y, STR_SOURCE); + if (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT && sensor->frskyInstance.rxIndex != TELEMETRY_ENDPOINT_SPORT) { + drawReceiverName(SENSOR_2ND_COLUMN, y, sensor->frskyInstance.rxIndex >> 2, sensor->frskyInstance.rxIndex & 0x03, 0); + } +#if defined(HARDWARE_INTERNAL_MODULE) + else if (isModuleUsingSport(INTERNAL_MODULE, g_model.moduleData[INTERNAL_MODULE].type)) { + // far from perfect + lcdDrawText(SENSOR_2ND_COLUMN, y, STR_INTERNAL_MODULE); + } +#endif + else { + lcdDrawText(SENSOR_2ND_COLUMN, y, STR_EXTERNAL_MODULE); + } break; case SENSOR_FIELD_UNIT: diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 9f5e3346e..c083922be 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -511,14 +511,16 @@ void menuRadioSetup(event_t event) #if defined(PWR_BUTTON_PRESS) case ITEM_RADIO_SETUP_PWR_ON_SPEED: - lcdDrawTextAlignedLeft(y, STR_PWR_ON_SPEED); - drawSlider(RADIO_SETUP_2ND_COLUMN, y, LCD_W - 2 - RADIO_SETUP_2ND_COLUMN, g_eeGeneral.pwrOnSpeed +1, 3, attr); + lcdDrawTextAlignedLeft(y, STR_PWR_ON_DELAY); + lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 2 - g_eeGeneral.pwrOnSpeed, attr|LEFT); + lcdDrawChar(lcdLastRightPos, y, 's'); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOnSpeed, -1, 2); break; case ITEM_RADIO_SETUP_PWR_OFF_SPEED: - lcdDrawTextAlignedLeft(y, STR_PWR_OFF_SPEED); - drawSlider(RADIO_SETUP_2ND_COLUMN, y, LCD_W - 2 - RADIO_SETUP_2ND_COLUMN, g_eeGeneral.pwrOffSpeed +1, 3, attr); + lcdDrawTextAlignedLeft(y, STR_PWR_OFF_DELAY); + lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 2 - g_eeGeneral.pwrOffSpeed, attr|LEFT); + lcdDrawChar(lcdLastRightPos, y, 's'); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOffSpeed, -1, 2); break; #endif diff --git a/radio/src/gui/128x64/view_channels.cpp b/radio/src/gui/128x64/view_channels.cpp index a17bfa757..f13b871ce 100644 --- a/radio/src/gui/128x64/view_channels.cpp +++ b/radio/src/gui/128x64/view_channels.cpp @@ -22,33 +22,35 @@ void menuChannelsView(event_t event) { - static bool longNames = false; bool newLongNames = false; - static bool secondPage = false; - static bool mixersView = false; uint8_t ch; - switch(event) - { + switch (event) { + case EVT_ENTRY: + memclear(&reusableBuffer.viewChannels, sizeof(reusableBuffer.viewChannels)); + break; + case EVT_KEY_BREAK(KEY_EXIT): popMenu(); break; + case EVT_KEY_FIRST(KEY_RIGHT): case EVT_KEY_FIRST(KEY_LEFT): - secondPage = !secondPage; + reusableBuffer.viewChannels.secondPage = !reusableBuffer.viewChannels.secondPage; break; + case EVT_KEY_FIRST(KEY_ENTER): - mixersView = !mixersView; + reusableBuffer.viewChannels.mixersView = !reusableBuffer.viewChannels.mixersView; break; } - if (secondPage) + if (reusableBuffer.viewChannels.secondPage) ch = 16; else ch = 0; - if (mixersView) { + if (reusableBuffer.viewChannels.mixersView) { lcdDrawTextAlignedCenter(0, TR_MIXERS_MONITOR); } else { @@ -67,13 +69,13 @@ void menuChannelsView(event_t event) // Channels for (uint8_t line=0; line<8; line++) { uint8_t y = 9+line*7; - int32_t val = (mixersView) ? ex_chans[ch] : channelOutputs[ch]; + int32_t val = (reusableBuffer.viewChannels.mixersView) ? ex_chans[ch] : channelOutputs[ch]; uint8_t ofs = (col ? 0 : 1); // Channel name if present, number if not uint8_t lenLabel = ZLEN(g_model.limitData[ch].name); if (lenLabel > 4) { - newLongNames = longNames = true; + newLongNames = reusableBuffer.viewChannels.longNames = true; } if (lenLabel > 0) @@ -83,13 +85,13 @@ void menuChannelsView(event_t event) // Value #if defined(PPM_UNIT_US) - uint8_t wbar = (longNames ? 54 : 64); + uint8_t wbar = (reusableBuffer.viewChannels.longNames ? 54 : 64); lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, PPM_CH_CENTER(ch)+val/2, TINSIZE|RIGHT); #elif defined(PPM_UNIT_PERCENT_PREC1) - uint8_t wbar = (longNames ? 48 : 58); + uint8_t wbar = (reusableBuffer.viewChannels.longNames ? 48 : 58); lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, calcRESXto1000(val), PREC1|TINSIZE|RIGHT); #else - uint8_t wbar = (longNames ? 54 : 64); + uint8_t wbar = (reusableBuffer.viewChannels.longNames ? 54 : 64); lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, calcRESXto1000(val)/10, TINSIZE|RIGHT); #endif @@ -105,5 +107,5 @@ void menuChannelsView(event_t event) } } - longNames = newLongNames; + reusableBuffer.viewChannels.longNames = newLongNames; } diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index 5251dfae4..34c1989d3 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -50,16 +50,24 @@ #define RSSSI_X (30) #define RSSSI_Y (31) #define RSSI_MAX 105 - #define TRIM_LEN 23 -void drawRSSIGauge() +void drawExternalAntennaAndRSSI() { - uint8_t bar = (RSSI_MAX - g_model.rssiAlarms.getWarningRssi()) / 4; +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) + if (isModuleXJT(INTERNAL_MODULE) && isExternalAntennaEnabled()) { + lcdDrawText(VBATT_X-1, VBATT_Y+8, "E", TINSIZE); + } +#endif - for(uint8_t i=1; i<5; i++) { - if((TELEMETRY_RSSI() - g_model.rssiAlarms.getWarningRssi()) > bar*(i-1)) { - lcdDrawFilledRect(RSSSI_X + i*4, RSSSI_Y - 2*i, 3, 2*i, SOLID, 0); + if (TELEMETRY_RSSI() > 0) { + auto warningRSSI = g_model.rssiAlarms.getWarningRssi(); + int8_t value = TELEMETRY_RSSI() - warningRSSI; + uint8_t step = (RSSI_MAX - warningRSSI) / 4; + for (uint8_t i = 1; i < 5; i++) { + if (value > step * (i - 1)) { + lcdDrawFilledRect(RSSSI_X + i * 4, RSSSI_Y - 2 * i + 1, 3, 2 * i - 1, SOLID, 0); + } } } } @@ -271,6 +279,7 @@ void onMainViewMenu(const char *result) POPUP_MENU_ADD_ITEM(STR_RESET_TIMER2); POPUP_MENU_ADD_ITEM(STR_RESET_TIMER3); POPUP_MENU_ADD_ITEM(STR_RESET_TELEMETRY); + POPUP_MENU_START(onMainViewMenu); } else if (result == STR_RESET_TELEMETRY) { telemetryReset(); @@ -405,10 +414,8 @@ void menuMainView(event_t event) // Trims sliders displayTrims(mode); - // RSSI gauge - if (TELEMETRY_RSSI() > 0) { - drawRSSIGauge(); - } + // RSSI gauge / external antenna + drawExternalAntennaAndRSSI(); } if (view_base < VIEW_INPUTS) { diff --git a/radio/src/gui/128x64/view_statistics.cpp b/radio/src/gui/128x64/view_statistics.cpp index 4e132a1eb..2296e93b0 100644 --- a/radio/src/gui/128x64/view_statistics.cpp +++ b/radio/src/gui/128x64/view_statistics.cpp @@ -111,7 +111,6 @@ void menuStatisticsDebug(event_t event) switch (event) { case EVT_ENTRY: case EVT_ENTRY_UP: - enableVBatBridge(); break; case EVT_KEY_LONG(KEY_ENTER): @@ -160,7 +159,7 @@ void menuStatisticsDebug(event_t event) if (IS_RESET_REASON_WATCHDOG()) { lcdDrawText(LCD_W-8*FW, 0, "WATCHDOG"); } - else if (unexpectedShutdown) { + else if (globalData.unexpectedShutdown) { lcdDrawText(LCD_W-13*FW, 0, "UNEXP.SHTDOWN"); } #endif diff --git a/radio/src/gui/128x64/widgets.cpp b/radio/src/gui/128x64/widgets.cpp index e304f0032..ef7de1a10 100644 --- a/radio/src/gui/128x64/widgets.cpp +++ b/radio/src/gui/128x64/widgets.cpp @@ -70,11 +70,11 @@ void title(const char * s) lcdDrawText(0, 0, s, INVERS); } -choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event) +choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable) { drawFieldLabel(x, y, label); if (values) lcdDrawTextAtIndex(x, y, values, value-min, attr); - if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL); + if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL, isValueAvailable); return value; } diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index 14d9c6978..7013ede4b 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -209,7 +209,7 @@ void title(const char * s); typedef int choice_t; -choice_t editChoice(coord_t x, coord_t y, const char *label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event); +choice_t editChoice(coord_t x, coord_t y, const char *label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable = nullptr); uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const char *label, LcdFlags attr, event_t event); swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event); @@ -264,8 +264,6 @@ extern char statusLineMsg[STATUS_LINE_LENGTH]; void showStatusLine(); void drawStatusLine(); -#define TEXT_FILENAME_MAXLEN 40 -extern char s_text_file[TEXT_FILENAME_MAXLEN]; void menuTextView(event_t event); void pushMenuTextView(const char *filename); void pushModelNotes(); @@ -273,8 +271,6 @@ void readModelNotes(); void menuChannelsView(event_t event); -#define LABEL(...) (uint8_t)-1 - #if defined(ROTARY_ENCODER_NAVIGATION) #define CURSOR_MOVED_LEFT(event) (event==EVT_ROTARY_LEFT) #define CURSOR_MOVED_RIGHT(event) (event==EVT_ROTARY_RIGHT) diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index 11e58a68c..402189fb5 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -44,7 +44,7 @@ const MenuHandlerFunc menuTabModel[] = { uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay) { lcdDrawTextAlignedLeft(y, str); - lcdDrawNumber(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); + lcdDrawNumber(MIXES_2ND_COLUMN, y, delay, attr|PREC1|LEFT); if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); return delay; } diff --git a/radio/src/gui/212x64/model_failsafe.cpp b/radio/src/gui/212x64/model_failsafe.cpp index 3fdc2ee28..939e7927a 100644 --- a/radio/src/gui/212x64/model_failsafe.cpp +++ b/radio/src/gui/212x64/model_failsafe.cpp @@ -24,46 +24,45 @@ extern uint8_t g_moduleIdx; void menuModelFailsafe(event_t event) { - static uint8_t maxNameLen = 4; - static int8_t lastModel = g_eeGeneral.currModel; const coord_t barH = (LCD_H - FH) / 8 - 1; const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2; const uint8_t channelStart = g_model.moduleData[g_moduleIdx].channelsStart; uint8_t cols = 1; uint8_t colW = LCD_W; - if (lastModel != g_eeGeneral.currModel) { - lastModel = g_eeGeneral.currModel; - maxNameLen = 4; - } + switch(event) { + case EVT_ENTRY: + reusableBuffer.modelFailsafe.maxNameLen = 4; + break; - if (event == EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - event = 0; + case EVT_KEY_LONG(KEY_ENTER): + killEvents(event); + event = 0; - if (menuVerticalPosition < sentModuleChannels(g_moduleIdx)) { - if (s_editMode) { - g_model.failsafeChannels[menuVerticalPosition] = channelOutputs[menuVerticalPosition+channelStart]; - s_editMode = 0; + if (menuVerticalPosition < sentModuleChannels(g_moduleIdx)) { + if (s_editMode) { + g_model.failsafeChannels[menuVerticalPosition] = channelOutputs[menuVerticalPosition+channelStart]; + s_editMode = 0; + } + else { + int16_t * failsafe = &g_model.failsafeChannels[menuVerticalPosition]; + if (*failsafe < FAILSAFE_CHANNEL_HOLD) + *failsafe = FAILSAFE_CHANNEL_HOLD; + else if (*failsafe == FAILSAFE_CHANNEL_HOLD) + *failsafe = FAILSAFE_CHANNEL_NOPULSE; + else + *failsafe = 0; + } } else { - int16_t * failsafe = &g_model.failsafeChannels[menuVerticalPosition]; - if (*failsafe < FAILSAFE_CHANNEL_HOLD) - *failsafe = FAILSAFE_CHANNEL_HOLD; - else if (*failsafe == FAILSAFE_CHANNEL_HOLD) - *failsafe = FAILSAFE_CHANNEL_NOPULSE; - else - *failsafe = 0; + // "Outputs => Failsafe" menu item + setCustomFailsafe(g_moduleIdx); } - } - else { - // "Outputs => Failsafe" menu item - setCustomFailsafe(g_moduleIdx); - } - storageDirty(EE_MODEL); - AUDIO_WARNING1(); - SEND_FAILSAFE_NOW(g_moduleIdx); + storageDirty(EE_MODEL); + AUDIO_WARNING1(); + SEND_FAILSAFE_NOW(g_moduleIdx); + break; } SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx) + 1); @@ -95,7 +94,7 @@ void menuModelFailsafe(event_t event) const int32_t channelValue = channelOutputs[ch+channelStart]; int32_t failsafeValue = g_model.failsafeChannels[8*col+line]; uint8_t lenLabel = ZLEN(g_model.limitData[ch+channelStart].name); - uint8_t barW = colW - FW * maxNameLen - FWNUM * 3; // default bar width + uint8_t barW = colW - FW * reusableBuffer.modelFailsafe.maxNameLen - FWNUM * 3; // default bar width #if defined(PPM_UNIT_PERCENT_PREC1) barW -= FWNUM + 1; @@ -104,8 +103,8 @@ void menuModelFailsafe(event_t event) // Channel name if present, number if not if (lenLabel > 0) { - if (lenLabel > maxNameLen) - maxNameLen = lenLabel; + if (lenLabel > reusableBuffer.modelFailsafe.maxNameLen) + reusableBuffer.modelFailsafe.maxNameLen = lenLabel; lcdDrawSizedText(x - colW, y, g_model.limitData[ch+channelStart].name, sizeof(g_model.limitData[ch+channelStart].name), ZCHAR | SMLSIZE); } else { diff --git a/radio/src/gui/212x64/model_flightmodes.cpp b/radio/src/gui/212x64/model_flightmodes.cpp index 2b7eb05c9..efa287ee1 100644 --- a/radio/src/gui/212x64/model_flightmodes.cpp +++ b/radio/src/gui/212x64/model_flightmodes.cpp @@ -126,12 +126,12 @@ void menuModelFlightModesAll(event_t event) } case ITEM_FLIGHT_MODES_FADE_IN: - lcdDrawNumber(32*FW-2, y, (10/DELAY_STEP)*p->fadeIn, attr|PREC1|RIGHT); + lcdDrawNumber(32*FW-2, y, p->fadeIn, attr|PREC1|RIGHT); if (active) p->fadeIn = checkIncDec(event, p->fadeIn, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); break; case ITEM_FLIGHT_MODES_FADE_OUT: - lcdDrawNumber(35*FW, y, (10/DELAY_STEP)*p->fadeOut, attr|PREC1|RIGHT); + lcdDrawNumber(35*FW, y, p->fadeOut, attr|PREC1|RIGHT); if (active) p->fadeOut = checkIncDec(event, p->fadeOut, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); break; diff --git a/radio/src/gui/212x64/model_select.cpp b/radio/src/gui/212x64/model_select.cpp index f9d76db6d..8b396e1b4 100644 --- a/radio/src/gui/212x64/model_select.cpp +++ b/radio/src/gui/212x64/model_select.cpp @@ -45,9 +45,10 @@ void onModelSelectMenu(const char * result) POPUP_WARNING(eeBackupModel(sub)); } else if (result == STR_RESTORE_MODEL || result == STR_UPDATE_LIST) { - if (!sdListFiles(MODELS_PATH, MODELS_EXT, MENU_LINE_LENGTH-1, NULL)) { + if (sdListFiles(MODELS_PATH, MODELS_EXT, MENU_LINE_LENGTH-1, nullptr)) + POPUP_MENU_START(onModelSelectMenu); + else POPUP_WARNING(STR_NO_MODELS_ON_SD); - } } else if (result == STR_DELETE_MODEL) { char * nametmp = reusableBuffer.modelsel.mainname; diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index fb151c875..9c65731bf 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -252,7 +252,7 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() return 1; #if defined(MULTIMODULE) else if (isModuleMultimodule(EXTERNAL_MODULE)) { - return 2 + MULTIMODULE_RFPROTO_COLUMNS(EXTERNAL_MODULE); + return 1 + MULTIMODULE_RFPROTO_COLUMNS(EXTERNAL_MODULE); } #endif else @@ -384,7 +384,8 @@ void menuModelSetup(event_t event) MENU_CHECK(menuTabModel, MENU_MODEL_SETUP, ITEM_MODEL_SETUP_LINES_COUNT); title(STR_MENUSETUP); - if (event == EVT_ENTRY) { + if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { + memclear(&reusableBuffer.moduleSetup, sizeof(reusableBuffer.moduleSetup)); reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; } @@ -397,10 +398,10 @@ void menuModelSetup(event_t event) int sub = menuVerticalPosition; - for (int i=0; i0) ? BLINK|INVERS : INVERS); LcdFlags attr = (sub == k ? blink : 0); - switch(k) { + switch (k) { case ITEM_MODEL_SETUP_NAME: editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr); memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name)); @@ -756,7 +757,7 @@ void menuModelSetup(event_t event) #if defined(INTERNAL_MODULE_PXX1) lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_INTERNAL_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleISRM(INTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); if (attr) { @@ -807,7 +808,7 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, INDENT TR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_EXTERNAL_MODULE_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleDSM2(EXTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(EXTERNAL_MODULE)) @@ -844,27 +845,28 @@ void menuModelSetup(event_t event) } case 1: - if (isModuleDSM2(EXTERNAL_MODULE)) + if (isModuleDSM2(EXTERNAL_MODULE)) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); + } #if defined(MULTIMODULE) - else if (isModuleMultimodule(EXTERNAL_MODULE)) { - int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MODULE_SUBTYPE_MULTI_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); - CHECK_INCDEC_MODELVAR(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MODULE_SUBTYPE_MULTI_LAST); - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MODULE_SUBTYPE_MULTI_CUSTOM); - if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) - g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); - g_model.moduleData[EXTERNAL_MODULE].subType = 0; - // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; - } - else { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; - } - g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; + else if (isModuleMultimodule(EXTERNAL_MODULE)) { + int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MODULE_SUBTYPE_MULTI_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); + CHECK_INCDEC_MODELVAR(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MODULE_SUBTYPE_MULTI_LAST); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MODULE_SUBTYPE_MULTI_CUSTOM); + if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); + g_model.moduleData[EXTERNAL_MODULE].subType = 0; + // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; } + else { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; + } + g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; } + } #endif else if (isModuleR9MNonAccess(EXTERNAL_MODULE)) { g_model.moduleData[EXTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, @@ -872,7 +874,7 @@ void menuModelSetup(event_t event) isR9MModeAvailable); } else { - g_model.moduleData[EXTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, + g_model.moduleData[EXTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); } @@ -907,16 +909,16 @@ void menuModelSetup(event_t event) if (isModuleR9MNonAccess(EXTERNAL_MODULE)) { if (g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU) { POPUP_WARNING(STR_MODULE_PROTOCOL_FLEX_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #if POPUP_LEVEL >= 3 else if (g_model.moduleData[EXTERNAL_MODULE].subType == MODULE_SUBTYPE_R9M_EU) { - POPUP_WARNING(STR_R9M_PROTO_EU_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + POPUP_WARNING(STR_MODULE_PROTOCOL_EU_WARN_LINE1); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } else { - POPUP_WARNING(STR_R9M_PROTO_FCC_WARN_LINE1); - SET_WARNING_INFO(STR_R9M_PROTO_WARN_LINE2, sizeof(TR_R9M_PROTO_WARN_LINE2) - 1, 0); + POPUP_WARNING(STR_MODULE_PROTOCOL_FCC_WARN_LINE1); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #endif } diff --git a/radio/src/gui/212x64/model_telemetry.cpp b/radio/src/gui/212x64/model_telemetry.cpp index dd82a492d..ab170895f 100644 --- a/radio/src/gui/212x64/model_telemetry.cpp +++ b/radio/src/gui/212x64/model_telemetry.cpp @@ -238,12 +238,15 @@ void menuModelTelemetry(event_t event) case ITEM_TELEMETRY_RSSI_SOURCE: { lcdDrawTextAlignedLeft(y, INDENT TR_SOURCE); - drawSource(TELEM_COL2, y, g_model.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.rssiSource - 1) : 0, attr); if (g_model.rssiSource) { + drawSource(TELEM_COL2, y, MIXSRC_FIRST_TELEM + 3 * (g_model.rssiSource - 1), attr); TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource - 1]; lcdDrawText(lcdNextPos, y, " ", attr); drawReceiverName(lcdNextPos, y, sensor->frskyInstance.rxIndex >> 2, sensor->frskyInstance.rxIndex & 0x03, attr); } + else { + lcdDrawText(TELEM_COL2, y, STR_DEFAULT, attr); + } if (attr) { g_model.rssiSource = checkIncDec(event, g_model.rssiSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL | NO_INCDEC_MARKS, isRssiSensorAvailable); } diff --git a/radio/src/gui/212x64/model_telemetry_sensor.cpp b/radio/src/gui/212x64/model_telemetry_sensor.cpp index 2daa516cb..4321f87c3 100644 --- a/radio/src/gui/212x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/212x64/model_telemetry_sensor.cpp @@ -25,6 +25,7 @@ enum SensorFields { SENSOR_FIELD_TYPE, SENSOR_FIELD_ID, SENSOR_FIELD_FORMULA=SENSOR_FIELD_ID, + SENSOR_FILED_RECEIVER_NAME, SENSOR_FIELD_UNIT, SENSOR_FIELD_PRECISION, SENSOR_FIELD_PARAM1, @@ -61,7 +62,23 @@ void menuModelSensor(event_t event) drawSensorCustomValue(25*FW, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx)); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); - SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, { 0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_ONLYPOS_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 }); + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, { + 0, //Name + 0, // Type + sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, // ID / Formula + sensor->type == TELEM_TYPE_CALCULATED ? HIDDEN_ROW : READONLY_ROW, // Receiver name + SENSOR_UNIT_ROWS, + SENSOR_PREC_ROWS, + SENSOR_PARAM1_ROWS, + SENSOR_PARAM2_ROWS, + SENSOR_PARAM3_ROWS, + SENSOR_PARAM4_ROWS, + SENSOR_AUTOOFFSET_ROWS, + SENSOR_ONLYPOS_ROWS, + SENSOR_FILTER_ROWS, + SENSOR_PERSISTENT_ROWS, + 0 // Logs + }); for (uint8_t i=0; ifrskyInstance.rxIndex != TELEMETRY_ENDPOINT_SPORT) { + drawReceiverName(SENSOR_2ND_COLUMN, y, sensor->frskyInstance.rxIndex >> 2, sensor->frskyInstance.rxIndex & 0x03, 0); + } + else if (isModuleUsingSport(INTERNAL_MODULE, g_model.moduleData[INTERNAL_MODULE].type)) { + // far from perfect + lcdDrawText(SENSOR_2ND_COLUMN, y, STR_INTERNAL_MODULE); + } + else { + lcdDrawText(SENSOR_2ND_COLUMN, y, STR_EXTERNAL_MODULE); + } + break; + case SENSOR_FIELD_UNIT: lcdDrawTextAlignedLeft(y, STR_UNIT); lcdDrawTextAtIndex(SENSOR_2ND_COLUMN, y, STR_VTELEMUNIT, sensor->unit, attr); diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index 929cfe944..77ae4768f 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -472,14 +472,16 @@ void menuRadioSetup(event_t event) #if defined(PWR_BUTTON_PRESS) case ITEM_RADIO_SETUP_PWR_ON_SPEED: - lcdDrawTextAlignedLeft(y, STR_PWR_ON_SPEED); - drawSlider(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.pwrOnSpeed +1, 3, attr); + lcdDrawTextAlignedLeft(y, STR_PWR_ON_DELAY); + lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 2 - g_eeGeneral.pwrOnSpeed, attr|LEFT); + lcdDrawChar(lcdLastRightPos, y, 's'); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOnSpeed, -1, 2); break; case ITEM_RADIO_SETUP_PWR_OFF_SPEED: - lcdDrawTextAlignedLeft(y, STR_PWR_OFF_SPEED); - drawSlider(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.pwrOffSpeed +1, 3, attr); + lcdDrawTextAlignedLeft(y, STR_PWR_OFF_DELAY); + lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 2 - g_eeGeneral.pwrOffSpeed, attr|LEFT); + lcdDrawChar(lcdLastRightPos, y, 's'); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOffSpeed, -1, 2); break; #endif @@ -528,7 +530,7 @@ void menuRadioSetup(event_t event) #if defined(FAI_CHOICE) case ITEM_RADIO_SETUP_FAI: - editCheckBox(g_eeGeneral.fai, RADIO_SETUP_2ND_COLUMN, y, "FAI Mode"), attr, event; + editCheckBox(g_eeGeneral.fai, RADIO_SETUP_2ND_COLUMN, y, "FAI Mode", attr, event); if (attr && checkIncDec_Ret) { if (g_eeGeneral.fai) POPUP_WARNING("FAI\001mode blocked!"); diff --git a/radio/src/gui/212x64/view_channels.cpp b/radio/src/gui/212x64/view_channels.cpp index c1eff98f7..4b34f7f4f 100644 --- a/radio/src/gui/212x64/view_channels.cpp +++ b/radio/src/gui/212x64/view_channels.cpp @@ -22,44 +22,46 @@ void menuChannelsView(event_t event) { - static bool longNames = false; - static bool secondPage = false; - static bool mixersView = false; uint8_t ch = 0; - uint8_t wbar = (longNames ? 54 : 64); + uint8_t wbar = (reusableBuffer.viewChannels.longNames ? 54 : 64); int16_t limits = 512 * 2; #if defined(PPM_UNIT_PERCENT_PREC1) wbar -= 6; #endif - switch(event) - { + switch(event) { + case EVT_ENTRY: + memclear(&reusableBuffer.viewChannels, sizeof(reusableBuffer.viewChannels)); + break; + case EVT_KEY_BREAK(KEY_EXIT): popMenu(); break; + case EVT_KEY_FIRST(KEY_RIGHT): case EVT_KEY_FIRST(KEY_LEFT): #if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_LEFT: case EVT_ROTARY_RIGHT: #endif - secondPage = !secondPage; + reusableBuffer.viewChannels.secondPage = !reusableBuffer.viewChannels.secondPage; break; + case EVT_KEY_FIRST(KEY_ENTER): - mixersView = !mixersView; + reusableBuffer.viewChannels.mixersView = !reusableBuffer.viewChannels.mixersView; break; } - if (secondPage) + if (reusableBuffer.viewChannels.secondPage) ch = 16; - if (mixersView) + if (reusableBuffer.viewChannels.mixersView) limits *= 2; // this could be handled nicer, but slower, by checking actual range for this mixer else if (g_model.extendedLimits) limits *= LIMIT_EXT_PERCENT / 100; - if (mixersView) + if (reusableBuffer.viewChannels.mixersView) lcdDrawTextAlignedCenter(0, TR_MIXERS_MONITOR); else lcdDrawTextAlignedCenter(0, TR_CHANNELS_MONITOR); @@ -76,13 +78,13 @@ void menuChannelsView(event_t event) // Channels for (uint8_t line=0; line < 8; line++) { const uint8_t y = 9 + line * 7; - const int32_t val = mixersView ? ex_chans[ch] : channelOutputs[ch]; + const int32_t val = reusableBuffer.viewChannels.mixersView ? ex_chans[ch] : channelOutputs[ch]; const uint8_t lenLabel = ZLEN(g_model.limitData[ch].name); // Channel name if present, number if not if (lenLabel > 0) { if (lenLabel > 4) - longNames = true; + reusableBuffer.viewChannels.longNames = true; lcdDrawSizedText(x+1-ofs, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR | SMLSIZE); } else { diff --git a/radio/src/gui/212x64/view_main.cpp b/radio/src/gui/212x64/view_main.cpp index 364d7fd3d..0de1bf2cd 100644 --- a/radio/src/gui/212x64/view_main.cpp +++ b/radio/src/gui/212x64/view_main.cpp @@ -342,7 +342,7 @@ void menuMainViewChannelsMonitor(event_t event) return menuChannelsView(event); } -void onMainViewMenu(const char *result) +void onMainViewMenu(const char * result) { if (result == STR_RESET_TIMER1) { timerReset(0); @@ -364,6 +364,7 @@ void onMainViewMenu(const char *result) POPUP_MENU_ADD_ITEM(STR_RESET_TIMER2); POPUP_MENU_ADD_ITEM(STR_RESET_TIMER3); POPUP_MENU_ADD_ITEM(STR_RESET_TELEMETRY); + POPUP_MENU_START(onMainViewMenu); } else if (result == STR_RESET_TELEMETRY) { telemetryReset(); @@ -409,16 +410,6 @@ void displaySwitch(coord_t x, coord_t y, int width, unsigned int index) } } -bool isMenuAvailable(int index) -{ - if (index == 4) { - return modelHasNotes(); - } - else { - return true; - } -} - int getSwitchCount() { int count = 0; @@ -435,7 +426,6 @@ void menuMainView(event_t event) static bool secondPage = false; switch(event) { - case EVT_ENTRY: killEvents(KEY_EXIT); killEvents(KEY_UP); diff --git a/radio/src/gui/212x64/view_statistics.cpp b/radio/src/gui/212x64/view_statistics.cpp index ecc20b793..264d5b73b 100644 --- a/radio/src/gui/212x64/view_statistics.cpp +++ b/radio/src/gui/212x64/view_statistics.cpp @@ -115,12 +115,7 @@ void menuStatisticsDebug(event_t event) } #endif - switch(event) { - case EVT_ENTRY: - case EVT_ENTRY_UP: - enableVBatBridge(); - break; - + switch (event) { case EVT_KEY_LONG(KEY_ENTER): g_eeGeneral.globalTimer = 0; sessionTimer = 0; diff --git a/radio/src/gui/212x64/widgets.cpp b/radio/src/gui/212x64/widgets.cpp index fcb0c352d..1d18b9e39 100644 --- a/radio/src/gui/212x64/widgets.cpp +++ b/radio/src/gui/212x64/widgets.cpp @@ -81,11 +81,11 @@ void title(const char * s) lcdDrawText(0, 0, s, INVERS); } -choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event) +choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable) { drawFieldLabel(x, y, label); if (values) lcdDrawTextAtIndex(x, y, values, value-min, attr); - if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL); + if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL, isValueAvailable); return value; } diff --git a/radio/src/gui/colorlcd/bitmaps.cpp b/radio/src/gui/colorlcd/bitmaps.cpp index f15311c55..1c1c5ef54 100644 --- a/radio/src/gui/colorlcd/bitmaps.cpp +++ b/radio/src/gui/colorlcd/bitmaps.cpp @@ -64,6 +64,10 @@ const uint8_t LBM_TOPMENU_TXBATT[] = { #include "mask_txbat.lbm" }; +const uint8_t LBM_TOPMENU_ANTENNA[] = { +#include "mask_antenna.lbm" +}; + const uint8_t LBM_HTRIM_FRAME[] = { #include "mask_htrim_frame.lbm" }; diff --git a/radio/src/gui/colorlcd/bitmaps.h b/radio/src/gui/colorlcd/bitmaps.h index 8b5fce9f8..00013aa18 100644 --- a/radio/src/gui/colorlcd/bitmaps.h +++ b/radio/src/gui/colorlcd/bitmaps.h @@ -26,6 +26,7 @@ extern const uint8_t LBM_DOT[]; // Main view icons extern const uint8_t LBM_TOPMENU_USB[]; +extern const uint8_t LBM_TOPMENU_ANTENNA[]; extern const uint8_t LBM_TOPMENU_VOLUME_0[]; extern const uint8_t LBM_TOPMENU_VOLUME_1[]; extern const uint8_t LBM_TOPMENU_VOLUME_2[]; diff --git a/radio/src/gui/colorlcd/menus.h b/radio/src/gui/colorlcd/menus.h index f9d05b32a..e6fd60d75 100644 --- a/radio/src/gui/colorlcd/menus.h +++ b/radio/src/gui/colorlcd/menus.h @@ -342,9 +342,6 @@ extern uint8_t popupMenuOffsetType; extern uint8_t popupMenuSelectedItem; const char * runPopupMenu(event_t event); extern void (*popupMenuHandler)(const char * result); - -#define TEXT_FILENAME_MAXLEN 40 -extern char s_text_file[TEXT_FILENAME_MAXLEN]; void pushMenuTextView(const char * filename); void pushModelNotes(); void readModelNotes(); diff --git a/radio/src/gui/colorlcd/model_flightmodes.cpp b/radio/src/gui/colorlcd/model_flightmodes.cpp index b8ac7ca14..b542e682e 100644 --- a/radio/src/gui/colorlcd/model_flightmodes.cpp +++ b/radio/src/gui/colorlcd/model_flightmodes.cpp @@ -133,15 +133,13 @@ void ModelFlightModesPage::build(FormWindow * window) // Flight mode fade in / out new StaticText(group, grid.getLabelSlot(true), "Fade in/out"); auto edit = new NumberEdit(group, grid.getFieldSlot(2, 0), 0, DELAY_MAX, - GET_DEFAULT(g_model.flightModeData[i].fadeIn * (10 / DELAY_STEP)), - SET_VALUE(g_model.flightModeData[i].fadeIn, newValue / (10 / DELAY_STEP)), + GET_DEFAULT(g_model.flightModeData[i].fadeIn), + SET_VALUE(g_model.flightModeData[i].fadeIn, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); edit = new NumberEdit(group, grid.getFieldSlot(2, 1), 0, DELAY_MAX, - GET_DEFAULT(g_model.flightModeData[i].fadeOut * (10 / DELAY_STEP)), - SET_VALUE(g_model.flightModeData[i].fadeOut, newValue / (10 / DELAY_STEP)), + GET_DEFAULT(g_model.flightModeData[i].fadeOut), + SET_VALUE(g_model.flightModeData[i].fadeOut, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); grid.nextLine(); group->setLastField(FormField::getCurrentField()); diff --git a/radio/src/gui/colorlcd/model_gvars.cpp b/radio/src/gui/colorlcd/model_gvars.cpp index 1bbd978fd..456dfac8c 100644 --- a/radio/src/gui/colorlcd/model_gvars.cpp +++ b/radio/src/gui/colorlcd/model_gvars.cpp @@ -158,14 +158,15 @@ bool menuModelGVars(event_t event) gvar_t v = fm->gvars[i]; LcdFlags attr = RIGHT | ((sub == i && menuHorizontalPosition == j) ? (s_editMode > 0 ? BLINK | INVERS : INVERS) : 0); - if (j == curfm) - attr |= BOLD; coord_t x = GVARS_FM_COLUMN(j); coord_t yval = y; if (v <= GVAR_MAX && (g_model.gvars[i].prec > 0 || abs(v) >= 1000 || ( abs(v) >= 100 && g_model.gvars[i].unit > 0))) { attr |= SMLSIZE; yval += 3; } + else if (j == curfm) { + attr |= BOLD; + } if (v <= GVAR_MAX && g_model.gvars[i].unit > 0) { x -= 9; lcdDrawText(GVARS_FM_COLUMN(j) - 9, y+5, "%", TINSIZE); diff --git a/radio/src/gui/colorlcd/model_mixes.cpp b/radio/src/gui/colorlcd/model_mixes.cpp index 149c9afb8..9c22c9e0a 100644 --- a/radio/src/gui/colorlcd/model_mixes.cpp +++ b/radio/src/gui/colorlcd/model_mixes.cpp @@ -190,7 +190,6 @@ class MixEditWindow : public Page { GET_DEFAULT(mix->delayUp), SET_VALUE(mix->delayUp, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); edit->setSuffix("s"); grid.nextLine(); @@ -200,7 +199,6 @@ class MixEditWindow : public Page { GET_DEFAULT(mix->delayDown), SET_VALUE(mix->delayDown, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); edit->setSuffix("s"); grid.nextLine(); @@ -210,7 +208,6 @@ class MixEditWindow : public Page { GET_DEFAULT(mix->speedUp), SET_VALUE(mix->speedUp, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); edit->setSuffix("s"); grid.nextLine(); @@ -220,7 +217,6 @@ class MixEditWindow : public Page { GET_DEFAULT(mix->speedDown), SET_VALUE(mix->speedDown, newValue), PREC1); - edit->setStep(10 / DELAY_STEP); edit->setSuffix("s"); grid.nextLine(); diff --git a/radio/src/gui/colorlcd/model_select.cpp b/radio/src/gui/colorlcd/model_select.cpp index 138308d10..f71ed4889 100644 --- a/radio/src/gui/colorlcd/model_select.cpp +++ b/radio/src/gui/colorlcd/model_select.cpp @@ -219,6 +219,27 @@ bool menuModelWizard(event_t event) } #endif +void onDeleteModelConfirm(const char * result) +{ + if (result == STR_OK) { + if (deleteMode == MODE_DELETE_CATEGORY) { + modelslist.removeCategory(currentCategory); + modelslist.save(); + setCurrentCategory(currentCategoryIndex > 0 ? currentCategoryIndex-1 : currentCategoryIndex); + } + else if (deleteMode == MODE_DELETE_MODEL){ + int modelIndex = MODEL_INDEX(); + modelslist.removeModel(currentCategory, currentModel); + s_copyMode = 0; + putEvent(EVT_REFRESH); + if (modelIndex > 0) { + modelIndex--; + } + setCurrentModel(modelIndex); + } + } +} + void onModelSelectMenu(const char * result) { if (result == STR_SELECT_MODEL) { @@ -233,7 +254,7 @@ void onModelSelectMenu(const char * result) chainMenu(menuMainView); } else if (result == STR_DELETE_MODEL) { - POPUP_CONFIRMATION(STR_DELETEMODEL); + POPUP_CONFIRMATION(STR_DELETEMODEL, onDeleteModelConfirm); SET_WARNING_INFO(currentModel->modelName, LEN_MODEL_NAME, 0); deleteMode = MODE_DELETE_MODEL; } @@ -279,7 +300,7 @@ void onModelSelectMenu(const char * result) SET_WARNING_INFO(STR_CAT_NOT_EMPTY, sizeof(TR_CAT_NOT_EMPTY), 0); } else { - POPUP_CONFIRMATION(STR_DELETEMODEL); + POPUP_CONFIRMATION(STR_DELETEMODEL, onDeleteModelConfirm); SET_WARNING_INFO(currentCategory->name, LEN_MODEL_FILENAME, 0); deleteMode = MODE_DELETE_CATEGORY; } @@ -322,26 +343,6 @@ void initModelsList() bool menuModelSelect(event_t event) { - if (warningResult) { - warningResult = 0; - if (deleteMode == MODE_DELETE_CATEGORY) { - TRACE("DELETE CATEGORY"); - modelslist.removeCategory(currentCategory); - modelslist.save(); - setCurrentCategory(currentCategoryIndex > 0 ? currentCategoryIndex-1 : currentCategoryIndex); - } - else if (deleteMode == MODE_DELETE_MODEL){ - int modelIndex = MODEL_INDEX(); - modelslist.removeModel(currentCategory, currentModel); - s_copyMode = 0; - event = EVT_REFRESH; - if (modelIndex > 0) { - modelIndex--; - } - setCurrentModel(modelIndex); - } - } - const std::list& cats = modelslist.getCategories(); switch(event) { case 0: diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 8b95c265c..0166cee76 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -831,20 +831,20 @@ void onBindMenu(const char * result) uint8_t moduleIdx = 0; // TODO (menuVerticalPosition >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE); if (result == STR_BINDING_1_8_TELEM_ON) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false; } else if (result == STR_BINDING_1_8_TELEM_OFF) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false; } else if (result == STR_BINDING_9_16_TELEM_ON) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true; } else if (result == STR_BINDING_9_16_TELEM_OFF) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true; } else { return; diff --git a/radio/src/gui/colorlcd/radio_tools.cpp b/radio/src/gui/colorlcd/radio_tools.cpp index 900b215e7..6afa65ccd 100644 --- a/radio/src/gui/colorlcd/radio_tools.cpp +++ b/radio/src/gui/colorlcd/radio_tools.cpp @@ -118,7 +118,7 @@ void RadioToolsPage::checkEvents() void RadioToolsPage::rebuild(FormWindow * window) { FormGridLayout grid; - grid.spacer(8); + grid.spacer(PAGE_PADDING); grid.setLabelWidth(100); window->clear(); diff --git a/radio/src/gui/colorlcd/radio_trainer.cpp b/radio/src/gui/colorlcd/radio_trainer.cpp index 1f740fc81..20258fb6d 100644 --- a/radio/src/gui/colorlcd/radio_trainer.cpp +++ b/radio/src/gui/colorlcd/radio_trainer.cpp @@ -36,8 +36,8 @@ void RadioTrainerPage::build(FormWindow * window) #define TRAINER_LABEL_WIDTH 100 #endif FormGridLayout grid; + grid.spacer(PAGE_PADDING); grid.setLabelWidth(TRAINER_LABEL_WIDTH); - grid.nextLine(); for (uint8_t i=0; i= rssiBarsValue[i] ? MENU_TITLE_COLOR : MENU_TITLE_DISABLE_COLOR); } +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) + if (isModuleXJT(INTERNAL_MODULE) && isExternalAntennaEnabled()) { + lcdDrawBitmapPattern(LCD_W-94, 4, LBM_TOPMENU_ANTENNA, MENU_TITLE_COLOR); + } +#endif + /* Audio volume */ lcdDrawBitmapPattern(LCD_W-130, 4, LBM_TOPMENU_VOLUME_SCALE, MENU_TITLE_DISABLE_COLOR); if (requiredSpeakerVolume == 0 || g_eeGeneral.beepMode == e_mode_quiet) diff --git a/radio/src/gui/colorlcd/view_statistics.cpp b/radio/src/gui/colorlcd/view_statistics.cpp index 294f8bf7c..a0cb92392 100644 --- a/radio/src/gui/colorlcd/view_statistics.cpp +++ b/radio/src/gui/colorlcd/view_statistics.cpp @@ -98,7 +98,6 @@ bool menuStatsDebug(event_t event) switch(event) { case EVT_ENTRY: case EVT_ENTRY_UP: - enableVBatBridge(); break; case EVT_KEY_FIRST(KEY_ENTER): diff --git a/radio/src/gui/colorlcd/view_text.cpp b/radio/src/gui/colorlcd/view_text.cpp index 10eb8f08f..3038887bf 100644 --- a/radio/src/gui/colorlcd/view_text.cpp +++ b/radio/src/gui/colorlcd/view_text.cpp @@ -20,91 +20,17 @@ #include "opentx.h" -#define TEXT_FILE_MAXSIZE 2048 - -char s_text_file[TEXT_FILENAME_MAXLEN]; -char s_text_screen[NUM_BODY_LINES][LCD_COLS+1]; - -void readTextFile(int & lines_count) -{ - FIL file; - int result; - char c; - unsigned int sz; - int line_length = 0; - int escape = 0; - char escape_chars[2]; - int current_line = 0; - - memset(s_text_screen, 0, sizeof(s_text_screen)); - - result = f_open(&file, s_text_file, FA_OPEN_EXISTING | FA_READ); - if (result == FR_OK) { - for (int i=0; i=menuVerticalOffset && current_line-menuVerticalOffset0 && escape<4) { - escape_chars[escape-1] = c; - if (escape == 2 && !strncmp(escape_chars, "up", 2)) { - c = '\300'; - escape = 0; - } - else if (escape == 2 && !strncmp(escape_chars, "dn", 2)) { - c = '\301'; - escape = 0; - } - else if (escape == 3) { - int val = atoi(escape_chars); - if (val >= 200 && val < 225) { - c = '\200' + val-200; - } - escape = 0; - } - else { - escape++; - continue; - } - } - else if (c=='~') { - c = 'z'+1; - } - else if (c=='\t') { - c = 0x1D; //tab - } - escape = 0; - s_text_screen[current_line-menuVerticalOffset][line_length++] = c; - } - } - if (c != '\n') { - current_line += 1; - } - f_close(&file); - } - - if (lines_count == 0) { - lines_count = current_line; - } -} - bool menuTextView(event_t event) { static int lines_count; - drawMenuTemplate(STR_TEXT_VIEWER, ICON_OPENTX); + drawMenuTemplate(STR_TEXT_VIEWER, ICON_OPENTX, nullptr, OPTION_MENU_NO_SCROLLBAR); switch (event) { case EVT_ENTRY: menuVerticalOffset = 0; lines_count = 0; - readTextFile(lines_count); + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, lines_count); break; case EVT_ROTARY_LEFT: @@ -112,24 +38,25 @@ bool menuTextView(event_t event) break; else menuVerticalOffset--; - readTextFile(lines_count); + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, lines_count); break; case EVT_ROTARY_RIGHT: - if (menuVerticalOffset+NUM_BODY_LINES >= lines_count) + if (menuVerticalOffset + NUM_BODY_LINES >= lines_count) break; else ++menuVerticalOffset; - readTextFile(lines_count); + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, lines_count); break; case EVT_KEY_FIRST(KEY_EXIT): + menuVerticalOffset = 0; popMenu(); break; } for (int i=0; i +#include #include "zone.h" #define MAX_WIDGET_OPTIONS 5 @@ -58,7 +59,7 @@ class Widget virtual const char * getErrorMessage() const { - return NULL; + return nullptr; } inline ZoneOptionValue * getOptionValue(unsigned int index) const @@ -83,7 +84,7 @@ void registerWidget(const WidgetFactory * factory); class WidgetFactory { public: - WidgetFactory(const char * name, const ZoneOption * options=NULL): + WidgetFactory(const char * name, const ZoneOption * options=nullptr): name(name), options(options) { diff --git a/radio/src/gui/common/colorlcd/draw_functions.h b/radio/src/gui/common/colorlcd/draw_functions.h index a35699de0..8f8ab6b3b 100644 --- a/radio/src/gui/common/colorlcd/draw_functions.h +++ b/radio/src/gui/common/colorlcd/draw_functions.h @@ -25,7 +25,7 @@ void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFlags flags, const char * prefix, const char * suffix); void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att); -int editChoice(coord_t x, coord_t y, const char * values, int value, int min, int max, LcdFlags attr, event_t event); +int editChoice(coord_t x, coord_t y, const char * values, int value, int min, int max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable=nullptr); uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, LcdFlags attr, event_t event); swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event); void drawFatalErrorScreen(const char * message); diff --git a/radio/src/gui/common/stdlcd/model_notes.cpp b/radio/src/gui/common/stdlcd/model_notes.cpp index 00de5a5d1..2510fed91 100644 --- a/radio/src/gui/common/stdlcd/model_notes.cpp +++ b/radio/src/gui/common/stdlcd/model_notes.cpp @@ -23,8 +23,8 @@ void menuModelNotes(event_t event) { if (event == EVT_ENTRY) { - strcpy(s_text_file, MODELS_PATH "/"); - char *buf = strcat_modelname(&s_text_file[sizeof(MODELS_PATH)], g_eeGeneral.currModel); + strcpy(reusableBuffer.viewText.filename, MODELS_PATH "/"); + char *buf = strcat_modelname(&reusableBuffer.viewText.filename[sizeof(MODELS_PATH)], g_eeGeneral.currModel); strcpy(buf, TEXT_EXT); } diff --git a/radio/src/gui/common/stdlcd/model_setup_pxx1.cpp b/radio/src/gui/common/stdlcd/model_setup_pxx1.cpp index aaa1a9b1c..84cc284fd 100644 --- a/radio/src/gui/common/stdlcd/model_setup_pxx1.cpp +++ b/radio/src/gui/common/stdlcd/model_setup_pxx1.cpp @@ -24,26 +24,26 @@ void onBindMenu(const char * result) uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition - HEADER_LINE); if (result == STR_BINDING_1_8_TELEM_ON) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false; if (isModuleR9MLiteNonPro(moduleIdx) && isModuleR9M_LBT(moduleIdx)) { g_model.moduleData[moduleIdx].pxx.power = R9M_LITE_LBT_POWER_25_8CH; } } else if (result == STR_BINDING_1_8_TELEM_OFF) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = false; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false; if (isModuleR9MLiteNonPro(moduleIdx) && isModuleR9M_LBT(moduleIdx)) { g_model.moduleData[moduleIdx].pxx.power = R9M_LITE_LBT_POWER_100_16CH_NOTELEM; } } else if (result == STR_BINDING_9_16_TELEM_ON) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true; } else if (result == STR_BINDING_9_16_TELEM_OFF) { - g_model.moduleData[moduleIdx].pxx.receiver_telem_off = true; - g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16 = true; + g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true; + g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true; } else { return; @@ -66,13 +66,13 @@ void startBindMenu(uint8_t moduleIdx) POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF); } - if (isBindCh9To16Allowed(moduleIdx) && g_model.moduleData[moduleIdx].pxx.receiver_channel_9_16) { + if (isBindCh9To16Allowed(moduleIdx) && g_model.moduleData[moduleIdx].pxx.receiverHigherChannels) { selection += 1; if (isTelemAllowedOnBind(moduleIdx)) selection += 1; } - if (isTelemAllowedOnBind(moduleIdx) && g_model.moduleData[moduleIdx].pxx.receiver_telem_off) + if (isTelemAllowedOnBind(moduleIdx) && g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff) selection += 1; POPUP_MENU_SELECT_ITEM(selection); diff --git a/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp b/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp index 77c63ebb9..2d97f44dc 100644 --- a/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp +++ b/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp @@ -298,13 +298,15 @@ void modelSetupModulePxx2ReceiverLine(uint8_t moduleIdx, uint8_t receiverIdx, co if (moduleState[moduleIdx].mode == MODULE_MODE_BIND) { if (reusableBuffer.moduleSetup.bindInformation.step == BIND_INIT) { if (reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount > 0) { - popupMenuItemsCount = min(reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); - for (auto rx = 0; rx < popupMenuItemsCount; rx++) { - popupMenuItems[rx] = reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[rx]; + if (reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount != popupMenuItemsCount) { + CLEAR_POPUP(); + popupMenuItemsCount = reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount; + for (auto rx = 0; rx < popupMenuItemsCount; rx++) { + popupMenuItems[rx] = reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[rx]; + } + popupMenuTitle = STR_PXX2_SELECT_RX; + POPUP_MENU_START(onPXX2BindMenu); } - popupMenuTitle = STR_PXX2_SELECT_RX; - CLEAR_POPUP(); - POPUP_MENU_START(onPXX2BindMenu); } else { POPUP_WAIT(STR_WAITING_FOR_RX); diff --git a/radio/src/gui/common/stdlcd/popups.h b/radio/src/gui/common/stdlcd/popups.h index b65cfb07e..d094588dc 100644 --- a/radio/src/gui/common/stdlcd/popups.h +++ b/radio/src/gui/common/stdlcd/popups.h @@ -81,6 +81,9 @@ enum inline void CLEAR_POPUP() { warningText = nullptr; + warningInfoText = nullptr; + popupMenuHandler = nullptr; + popupMenuItemsCount = 0; } inline void POPUP_WAIT(const char * s) @@ -109,11 +112,14 @@ enum inline void POPUP_CONFIRMATION(const char * s, PopupMenuHandler handler) { - warningText = s; - warningInfoText = nullptr; - warningType = WARNING_TYPE_CONFIRM; - popupFunc = runPopupWarning; - popupMenuHandler = handler; + if (s != warningText) { + killAllEvents(); + warningText = s; + warningInfoText = nullptr; + warningType = WARNING_TYPE_CONFIRM; + popupFunc = runPopupWarning; + popupMenuHandler = handler; + } } inline void POPUP_INPUT(const char * s, PopupFunc func) @@ -146,8 +152,9 @@ enum inline void POPUP_MENU_ADD_ITEM(const char * s) { popupMenuOffsetType = MENU_OFFSET_INTERNAL; - if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) + if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) { popupMenuItems[popupMenuItemsCount++] = s; + } } #if defined(SDCARD) @@ -163,8 +170,11 @@ inline void POPUP_MENU_SELECT_ITEM(uint8_t index) inline void POPUP_MENU_START(PopupMenuHandler handler) { - popupMenuHandler = handler; - AUDIO_KEY_PRESS(); + if (handler != popupMenuHandler) { + killAllEvents(); + AUDIO_KEY_PRESS(); + popupMenuHandler = handler; + } } #endif // _STDLCD_POPUPS_H_ diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 326affd5a..eb73fbd7a 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include "opentx.h" +#include #if defined(PCBSKY9X) #define HW_SETTINGS_COLUMN (2+(15*FW)) @@ -169,6 +169,10 @@ enum { ITEM_RADIO_HARDWARE_BLUETOOTH_NAME, #endif +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) + ITEM_RADIO_HARDWARE_EXTERNAL_ANTENNA, +#endif + #if defined(AUX_SERIAL) ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE, #endif @@ -221,6 +225,23 @@ enum { #define BLUETOOTH_ROWS uint8_t(IS_BLUETOOTH_CHIP_PRESENT() ? 0 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY ? -1 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #endif +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) +#define EXTERNAL_ANTENNA_ROW 0, +void onHardwareAntennaSwitchConfirm(const char * result) +{ + if (result == STR_OK) { + // Switch to external antenna confirmation + g_eeGeneral.antennaMode = reusableBuffer.radioHardware.antennaMode; + storageDirty(EE_GENERAL); + } + else { + reusableBuffer.radioHardware.antennaMode = g_eeGeneral.antennaMode; + } +} +#else +#define EXTERNAL_ANTENNA_ROW +#endif + #if defined(PCBX9LITE) #define SWITCH_TYPE_MAX(sw) (sw == MIXSRC_SD-MIXSRC_FIRST_SWITCH ? SWITCH_2POS : SWITCH_3POS) #elif defined(PCBXLITES) @@ -298,6 +319,8 @@ void menuRadioHardware(event_t event) BLUETOOTH_ROWS + EXTERNAL_ANTENNA_ROW + AUX_SERIAL_ROWS 0 /* ADC filter */, @@ -324,6 +347,9 @@ void menuRadioHardware(event_t event) } else if (event == EVT_ENTRY) { enableVBatBridge(); +#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) + reusableBuffer.radioHardware.antennaMode = g_eeGeneral.antennaMode; +#endif } for (uint8_t i=0; i reusableBuffer.sdManager.offset) { + if (menuVerticalOffset == reusableBuffer.sdManager.offset + 1) { memmove(reusableBuffer.sdManager.lines[0], reusableBuffer.sdManager.lines[1], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0])); memset(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1], 0xff, SD_SCREEN_FILE_LENGTH); NODE_TYPE(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1]) = 1; } - else { + else if (menuVerticalOffset == reusableBuffer.sdManager.offset - 1) { memmove(reusableBuffer.sdManager.lines[1], reusableBuffer.sdManager.lines[0], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0])); memset(reusableBuffer.sdManager.lines[0], 0, sizeof(reusableBuffer.sdManager.lines[0])); } + else { + reusableBuffer.sdManager.offset = menuVerticalOffset; + memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines)); + } reusableBuffer.sdManager.count = 0; diff --git a/radio/src/gui/common/stdlcd/radio_tools.cpp b/radio/src/gui/common/stdlcd/radio_tools.cpp index 982bc75db..9eb478507 100644 --- a/radio/src/gui/common/stdlcd/radio_tools.cpp +++ b/radio/src/gui/common/stdlcd/radio_tools.cpp @@ -85,16 +85,16 @@ void menuRadioTools(event_t event) uint8_t index = 0; #if defined(PXX2) - if (isPXX2ModuleOptionAvailable(reusableBuffer.hardwareAndSettings.modules[INTERNAL_MODULE].information.modelID, MODULE_OPTION_SPECTRUM_ANALYSER)) + if (isPXX2ModuleOptionAvailable(reusableBuffer.radioTools.modules[INTERNAL_MODULE].information.modelID, MODULE_OPTION_SPECTRUM_ANALYSER)) addRadioModuleTool(index++, STR_SPECTRUM_ANALYSER_INT, menuRadioSpectrumAnalyser, INTERNAL_MODULE); - if (isPXX2ModuleOptionAvailable(reusableBuffer.hardwareAndSettings.modules[INTERNAL_MODULE].information.modelID, MODULE_OPTION_POWER_METER)) + if (isPXX2ModuleOptionAvailable(reusableBuffer.radioTools.modules[INTERNAL_MODULE].information.modelID, MODULE_OPTION_POWER_METER)) addRadioModuleTool(index++, STR_POWER_METER_INT, menuRadioPowerMeter, INTERNAL_MODULE); - if (isPXX2ModuleOptionAvailable(reusableBuffer.hardwareAndSettings.modules[EXTERNAL_MODULE].information.modelID, MODULE_OPTION_SPECTRUM_ANALYSER)) + if (isPXX2ModuleOptionAvailable(reusableBuffer.radioTools.modules[EXTERNAL_MODULE].information.modelID, MODULE_OPTION_SPECTRUM_ANALYSER)) addRadioModuleTool(index++, STR_SPECTRUM_ANALYSER_EXT, menuRadioSpectrumAnalyser, EXTERNAL_MODULE); - if (isPXX2ModuleOptionAvailable(reusableBuffer.hardwareAndSettings.modules[EXTERNAL_MODULE].information.modelID, MODULE_OPTION_POWER_METER)) + if (isPXX2ModuleOptionAvailable(reusableBuffer.radioTools.modules[EXTERNAL_MODULE].information.modelID, MODULE_OPTION_POWER_METER)) addRadioModuleTool(index++, STR_POWER_METER_EXT, menuRadioPowerMeter, EXTERNAL_MODULE); #endif @@ -102,11 +102,6 @@ void menuRadioTools(event_t event) FILINFO fno; DIR dir; -#if defined(CROSSFIRE) - if(isFileAvailable(SCRIPTS_TOOLS_PATH "/CROSSFIRE/crossfire.lua")) - addRadioScriptTool(index++, SCRIPTS_TOOLS_PATH "/CROSSFIRE/crossfire.lua"); -#endif - FRESULT res = f_opendir(&dir, SCRIPTS_TOOLS_PATH); if (res == FR_OK) { for (;;) { @@ -121,6 +116,7 @@ void menuRadioTools(event_t event) if (isRadioScriptTool(fno.fname)) addRadioScriptTool(index++, path); } + f_closedir(&dir); } #endif @@ -129,4 +125,4 @@ void menuRadioTools(event_t event) } reusableBuffer.radioTools.linesCount = index; -} \ No newline at end of file +} diff --git a/radio/src/gui/common/stdlcd/view_text.cpp b/radio/src/gui/common/stdlcd/view_text.cpp index f513d25a3..0a298b282 100644 --- a/radio/src/gui/common/stdlcd/view_text.cpp +++ b/radio/src/gui/common/stdlcd/view_text.cpp @@ -20,80 +20,6 @@ #include "opentx.h" -#define TEXT_FILE_MAXSIZE 2048 - -char s_text_file[TEXT_FILENAME_MAXLEN]; -char s_text_screen[LCD_LINES-1][LCD_COLS+1]; - -void readTextFile(int & lines_count) -{ - FIL file; - int result; - char c; - unsigned int sz; - int line_length = 0; - int escape = 0; - char escape_chars[4] = {0}; - int current_line = 0; - - memset(s_text_screen, 0, sizeof(s_text_screen)); - - result = f_open(&file, s_text_file, FA_OPEN_EXISTING | FA_READ); - if (result == FR_OK) { - for (int i=0; i=menuVerticalOffset && current_line-menuVerticalOffset0 && escape<4) { - escape_chars[escape-1] = c; - if (escape == 2 && !strncmp(escape_chars, "up", 2)) { - c = '\300'; - escape = 0; - } - else if (escape == 2 && !strncmp(escape_chars, "dn", 2)) { - c = '\301'; - escape = 0; - } - else if (escape == 3) { - int val = atoi(escape_chars); - if (val >= 200 && val < 225) { - c = '\200' + val-200; - } - escape = 0; - } - else { - escape++; - continue; - } - } - else if (c=='~') { - c = 'z'+1; - } - else if (c=='\t') { - c = 0x1D; //tab - } - escape = 0; - s_text_screen[current_line-menuVerticalOffset][line_length++] = c; - } - } - if (c != '\n') { - current_line += 1; - } - f_close(&file); - } - - if (lines_count == 0) { - lines_count = current_line; - } -} - #if defined(ROTARY_ENCODER_NAVIGATION) #define EVT_KEY_NEXT_LINE EVT_ROTARY_RIGHT #define EVT_KEY_PREVIOUS_LINE EVT_ROTARY_LEFT @@ -106,8 +32,8 @@ void readModelNotes() { LED_ERROR_BEGIN(); - strcpy(s_text_file, MODELS_PATH "/"); - char *buf = strcat_modelname(&s_text_file[sizeof(MODELS_PATH)], g_eeGeneral.currModel); + strcpy(reusableBuffer.viewText.filename, MODELS_PATH "/"); + char *buf = strcat_modelname(&reusableBuffer.viewText.filename[sizeof(MODELS_PATH)], g_eeGeneral.currModel); strcpy(buf, TEXT_EXT); waitKeysReleased(); @@ -126,13 +52,11 @@ void readModelNotes() void menuTextView(event_t event) { - static int lines_count; - switch (event) { case EVT_ENTRY: menuVerticalOffset = 0; - lines_count = 0; - readTextFile(lines_count); + reusableBuffer.viewText.linesCount = 0; + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, reusableBuffer.viewText.linesCount); break; case EVT_KEY_PREVIOUS_LINE: @@ -140,15 +64,15 @@ void menuTextView(event_t event) break; else menuVerticalOffset--; - readTextFile(lines_count); + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, reusableBuffer.viewText.linesCount); break; case EVT_KEY_NEXT_LINE: - if (menuVerticalOffset+LCD_LINES-1 >= lines_count) + if (menuVerticalOffset+LCD_LINES-1 >= reusableBuffer.viewText.linesCount) break; else ++menuVerticalOffset; - readTextFile(lines_count); + sdReadTextFile(reusableBuffer.viewText.filename, reusableBuffer.viewText.lines, reusableBuffer.viewText.linesCount); break; case EVT_KEY_BREAK(KEY_EXIT): @@ -157,10 +81,10 @@ void menuTextView(event_t event) } for (int i=0; i LCD_LINES-1) { - drawVerticalScrollbar(LCD_W-1, FH, LCD_H-FH, menuVerticalOffset, lines_count, LCD_LINES-1); + if (reusableBuffer.viewText.linesCount > LCD_LINES-1) { + drawVerticalScrollbar(LCD_W-1, FH, LCD_H-FH, menuVerticalOffset, reusableBuffer.viewText.linesCount, LCD_LINES-1); } } void pushMenuTextView(const char *filename) { if (strlen(filename) < TEXT_FILENAME_MAXLEN) { - strcpy(s_text_file, filename); + strcpy(reusableBuffer.viewText.filename, filename); pushMenu(menuTextView); } } diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 317ac6f99..709de9fdf 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -539,7 +539,7 @@ bool isPxx2IsrmChannelsCountAllowed(int channels) bool isModuleUsingSport(uint8_t moduleBay, uint8_t moduleType) { - switch(moduleType) { + switch (moduleType) { case MODULE_TYPE_NONE: case MODULE_TYPE_SBUS: case MODULE_TYPE_PPM: @@ -717,7 +717,7 @@ bool isTrainerModeAvailable(int mode) return false; #endif -#if !defined(PCBSKY9X) && !defined(TRAINER_BATTERY_COMPARTMENT) +#if defined(PCBTARANIS) && !defined(TRAINER_BATTERY_COMPARTMENT) if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT) return false; #endif @@ -787,6 +787,7 @@ const char STR_SUBTYPE_FRSKY[] = "\007""D16\0 ""D8\0 ""D16 8ch""V8\0 const char STR_SUBTYPE_HISKY[] = "\005""Std\0 ""HK310"; const char STR_SUBTYPE_V2X2[] = "\006""Std\0 ""JXD506"; const char STR_SUBTYPE_DSM[] = "\006""2 22ms""2 11ms""X 22ms""X 11ms"; +const char STR_SUBTYPE_DEVO[] = "\004""8ch\0""10ch""12ch""6ch\0""7ch\0"; const char STR_SUBTYPE_YD717[] = "\007""Std\0 ""SkyWlkr""Syma X4""XINXUN\0""NIHUI\0 "; const char STR_SUBTYPE_KN[] = "\006""WLtoys""FeiLun"; const char STR_SUBTYPE_SYMAX[] = "\003""Std""X5C"; @@ -807,10 +808,13 @@ const char STR_SUBTYPE_H83D[] = "\007""Std\0 ""H20H\0 ""H20Mini""H30Min const char STR_SUBTYPE_CORONA[] = "\005""V1\0 ""V2\0 ""FD V3"; const char STR_SUBTYPE_HITEC[] = "\007""Optima\0""Opt Hub""Minima\0"; const char STR_SUBTYPE_BUGS_MINI[] = "\006""Std\0 ""Bugs3H"; +const char STR_SUBTYPE_TRAXXAS[] = "\004""6519"; const char STR_SUBTYPE_E01X[] = "\005""E012\0""E015\0""E016H"; const char STR_SUBTYPE_GD00X[] = "\005""GD_V1""GD_V2"; const char STR_SUBTYPE_REDPINE[] = "\004""Fast""Slow"; -const char STR_SUBTYPE_POTENSIC[] = "\003""A20""---"; +const char STR_SUBTYPE_POTENSIC[] = "\003""A20"; +const char STR_SUBTYPE_ZSX[] = "\007""280JJRC"; +const char STR_SUBTYPE_FLYZONE[] = "\005""FZ410"; const mm_protocol_definition multi_protocols[] = { @@ -820,6 +824,7 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, {MODULE_SUBTYPE_MULTI_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, {MODULE_SUBTYPE_MULTI_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, + {MODULE_SUBTYPE_MULTI_DEVO, 4, false, STR_SUBTYPE_DEVO, STR_MULTI_FIXEDID}, {MODULE_SUBTYPE_MULTI_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, {MODULE_SUBTYPE_MULTI_KN, 1, false, STR_SUBTYPE_KN, nullptr}, {MODULE_SUBTYPE_MULTI_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, @@ -842,12 +847,15 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr}, + {MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr}, {MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, {MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_REDPINE, 1, false, STR_SUBTYPE_REDPINE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_POTENSIC, 1, false, STR_SUBTYPE_POTENSIC, nullptr}, + {MODULE_SUBTYPE_MULTI_POTENSIC, 0, false, STR_SUBTYPE_POTENSIC, nullptr}, + {MODULE_SUBTYPE_MULTI_ZSX, 0, false, STR_SUBTYPE_ZSX, nullptr}, + {MODULE_SUBTYPE_MULTI_FLYZONE, 0, false, STR_SUBTYPE_FLYZONE, nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, NO_SUBTYPE, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 65b464342..1ed1cb1ad 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -28,6 +28,7 @@ #define READONLY_ROW ((uint8_t)-1) #define TITLE_ROW READONLY_ROW +#define LABEL(...) READONLY_ROW #define HIDDEN_ROW ((uint8_t)-2) #if defined(ROTARY_ENCODER_NAVIGATION) @@ -75,6 +76,7 @@ bool isSwitchAvailableInMixes(int swtch); bool isSwitchAvailableInTimers(int swtch); bool isR9MModeAvailable(int mode); bool isPxx2IsrmChannelsCountAllowed(int channels); +bool isModuleUsingSport(uint8_t moduleBay, uint8_t moduleType); bool isExternalModuleAvailable(int moduleType); bool isInternalModuleAvailable(int moduleType); bool isRfProtocolAvailable(int protocol); @@ -156,7 +158,11 @@ inline bool MULTIMODULE_HAS_SUBTYPE(uint8_t moduleIdx) } inline uint8_t MULTIMODULE_RFPROTO_COLUMNS(uint8_t moduleIdx) { +#if LCD_W < 212 return (g_model.moduleData[moduleIdx].multi.customProto ? (uint8_t) 1 : MULTIMODULE_HAS_SUBTYPE(g_model.moduleData[moduleIdx].getMultiProtocol(true)) ? (uint8_t) 0 : HIDDEN_ROW); +#else + return (g_model.moduleData[moduleIdx].multi.customProto ? (uint8_t) 2 : MULTIMODULE_HAS_SUBTYPE(g_model.moduleData[moduleIdx].getMultiProtocol(true)) ? (uint8_t) 1 : 0); +#endif } #define MULTIMODULE_SUBTYPE_ROWS(x) isModuleMultimodule(x) ? MULTIMODULE_RFPROTO_COLUMNS(x) : HIDDEN_ROW, #define MULTIMODULE_HASOPTIONS(x) (getMultiProtocolDefinition(x)->optionsstr != nullptr) diff --git a/radio/src/io/frsky_firmware_update.cpp b/radio/src/io/frsky_firmware_update.cpp index 34a96eb59..026571b57 100644 --- a/radio/src/io/frsky_firmware_update.cpp +++ b/radio/src/io/frsky_firmware_update.cpp @@ -96,12 +96,12 @@ void FrskyDeviceFirmwareUpdate::processFrame(const uint8_t * frame) } } +#if defined(PCBHORUS) bool FrskyDeviceFirmwareUpdate::readBuffer(uint8_t * buffer, uint8_t count, uint32_t timeout) { watchdogSuspend(timeout); switch(module) { -#if defined(INTMODULE_USART) case INTERNAL_MODULE: { uint32_t elapsed = 0; @@ -118,7 +118,6 @@ bool FrskyDeviceFirmwareUpdate::readBuffer(uint8_t * buffer, uint8_t count, uint } break; } -#endif default: break; @@ -126,6 +125,7 @@ bool FrskyDeviceFirmwareUpdate::readBuffer(uint8_t * buffer, uint8_t count, uint return true; } +#endif const uint8_t * FrskyDeviceFirmwareUpdate::readFullDuplexFrame(ModuleFifo & fifo, uint32_t timeout) { @@ -177,7 +177,7 @@ const uint8_t * FrskyDeviceFirmwareUpdate::readFrame(uint32_t timeout) RTOS_WAIT_MS(1); switch(module) { -#if defined(INTMODULE_USART) +#if defined(INTMODULE_USART) && !(defined(PCBXLITE) && !defined(PCBXLITES)) case INTERNAL_MODULE: return readFullDuplexFrame(intmoduleFifo, timeout); #endif @@ -236,7 +236,7 @@ void FrskyDeviceFirmwareUpdate::sendFrame() } switch(module) { -#if defined(INTMODULE_USART) +#if defined(INTMODULE_USART) && !(defined(PCBXLITE) && !defined(PCBXLITES)) case INTERNAL_MODULE: return intmoduleSendBuffer(outputTelemetryBuffer.data, ptr - outputTelemetryBuffer.data); #endif @@ -288,6 +288,11 @@ const char * FrskyDeviceFirmwareUpdate::sendReqVersion() return "Version request failed"; } +// X12S / X10 IXJT = use TX + RX @ 38400 bauds with BOOTCMD pin inverted +// X10 / X10 ISRM = use TX + RX @ 57600 bauds (no BOOTCMD) +// X9D / X9D+ / X9E / XLite IXJT = use S.PORT @ 57600 bauds +// XLite PRO / X9Lite / X9D+ 2019 ISRM = use TX + RX @ 57600 bauds + const char * FrskyDeviceFirmwareUpdate::doFlashFirmware(const char * filename, ProgressHandler progressHandler) { FIL file; @@ -305,7 +310,8 @@ const char * FrskyDeviceFirmwareUpdate::doFlashFirmware(const char * filename, P f_close(&file); return "Format error"; } - } else { + } + else { #if defined(PCBHORUS) information.productId = FIRMWARE_ID_XJT; #endif @@ -314,6 +320,7 @@ const char * FrskyDeviceFirmwareUpdate::doFlashFirmware(const char * filename, P #if defined(PCBHORUS) if (module == INTERNAL_MODULE && information.productId == FIRMWARE_ID_XJT) { INTERNAL_MODULE_ON(); + RTOS_WAIT_MS(1); intmoduleSerialStart(38400, true); GPIO_SetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN); result = uploadFileToHorusXJT(filename, &file, progressHandler); @@ -324,7 +331,10 @@ const char * FrskyDeviceFirmwareUpdate::doFlashFirmware(const char * filename, P #endif switch (module) { -#if defined(INTMODULE_USART) +#if defined(INTMODULE_USART) && !(defined(PCBXLITE) && !defined(PCBXLITES)) + // on XLite we don't use TX + RX but the S.PORT line + // this ifdef can be removed if we use .frsk instead of .frk + // theorically it should be possible to use an ISRM module in an XLite case INTERNAL_MODULE: intmoduleSerialStart(57600, true); break; diff --git a/radio/src/keys.cpp b/radio/src/keys.cpp index 0fc7999dc..7514f3549 100644 --- a/radio/src/keys.cpp +++ b/radio/src/keys.cpp @@ -39,7 +39,7 @@ event_t s_evt; -struct t_inactivity inactivity = {0}; +struct InactivityData inactivity = {0}; Key keys[NUM_KEYS]; event_t getEvent(bool trim) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 3d18c89e7..75f1a36d8 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -120,7 +120,7 @@ Return the time since the radio was started in multiple of 10ms @retval number Number of 10ms ticks since the radio was started Example: run time: 12.54 seconds, return value: 1254 -The timer internally uses a 32-bit counter which is enough for 30 years so +The timer internally uses a 32-bit counter which is enough for 497 days so overflows will not happen. @status current Introduced in 2.0.0 @@ -203,11 +203,17 @@ static int luaGetRtcTime(lua_State * L) static void luaPushLatLon(lua_State* L, TelemetrySensor & telemetrySensor, TelemetryItem & telemetryItem) /* result is lua table containing members ["lat"] and ["lon"] as lua_Number (doubles) in decimal degrees */ { - lua_createtable(L, 0, 4); + lua_createtable(L, 0, 5); lua_pushtablenumber(L, "lat", telemetryItem.gps.latitude * 0.000001); // floating point multiplication is faster than division lua_pushtablenumber(L, "pilot-lat", telemetryItem.pilotLatitude * 0.000001); lua_pushtablenumber(L, "lon", telemetryItem.gps.longitude * 0.000001); lua_pushtablenumber(L, "pilot-lon", telemetryItem.pilotLongitude * 0.000001); + + int8_t delay = telemetryItem.getDelaySinceLastValue(); + if (delay >= 0) + lua_pushtableinteger(L, "delay", delay); + else + lua_pushtablenil(L, "delay"); } static void luaPushTelemetryDateTime(lua_State* L, TelemetrySensor & telemetrySensor, TelemetryItem & telemetryItem) @@ -1351,6 +1357,24 @@ static int luaGetRSSI(lua_State * L) return 3; } +/*luadoc +@function chdir(directory) + + Change the working directory + +@param directory (string) New working directory + +@status current Introduced in 2.3.0 + +*/ + +static int luaChdir(lua_State * L) +{ + const char * directory = luaL_optstring(L, 1, nullptr); + f_chdir(directory); + return 0; +} + /*luadoc @function loadScript(file [, mode], [,env]) @@ -1548,6 +1572,7 @@ const luaL_Reg opentxLib[] = { { "defaultChannel", luaDefaultChannel }, { "getRSSI", luaGetRSSI }, { "killEvents", luaKillEvents }, + { "chdir", luaChdir }, { "loadScript", luaLoadScript }, { "getUsage", luaGetUsage }, { "resetGlobalTimer", luaResetGlobalTimer }, diff --git a/radio/src/lua/api_lcd.cpp b/radio/src/lua/api_lcd.cpp index cdc210f04..039aa5547 100644 --- a/radio/src/lua/api_lcd.cpp +++ b/radio/src/lua/api_lcd.cpp @@ -541,7 +541,7 @@ Draw a bitmap at (x,y) @param name (string) full path to the bitmap on SD card (i.e. “/IMAGES/test.bmp”) -@notice Only available on Taranis X9 series. Maximum image size if 106 x 64 pixels (width x height). +@notice Maximum image size is [display width / 2] x [display height] pixels. @status current Introduced in 2.0.0 */ diff --git a/radio/src/lua/api_model.cpp b/radio/src/lua/api_model.cpp index 31ad730d1..990d477d4 100644 --- a/radio/src/lua/api_model.cpp +++ b/radio/src/lua/api_model.cpp @@ -86,7 +86,7 @@ static int luaModelSetInfo(lua_State *L) Get RF module parameters -`rfProtocol` values: +`subType` values: * -1 OFF * 0 D16 * 1 D8 @@ -97,7 +97,7 @@ Get RF module parameters @retval nil requested module does not exist @retval table module parameters: - * `rfProtocol` (number) protocol index + * `subType` (number) protocol index * `modelId` (number) receiver number * `firstChannel` (number) start channel (0 is CH1) * `channelsCount` (number) number of channels sent to module @@ -110,7 +110,7 @@ static int luaModelGetModule(lua_State *L) if (idx < NUM_MODULES) { ModuleData & module = g_model.moduleData[idx]; lua_newtable(L); - lua_pushtableinteger(L, "rfProtocol", module.rfProtocol); + lua_pushtableinteger(L, "subType", module.subType); lua_pushtableinteger(L, "modelId", g_model.header.modelId[idx]); lua_pushtableinteger(L, "firstChannel", module.channelsStart); lua_pushtableinteger(L, "channelsCount", module.channelsCount + 8); @@ -145,8 +145,8 @@ static int luaModelSetModule(lua_State *L) for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { luaL_checktype(L, -2, LUA_TSTRING); // key is string const char * key = luaL_checkstring(L, -2); - if (!strcmp(key, "rfProtocol")) { - module.rfProtocol = luaL_checkinteger(L, -1); + if (!strcmp(key, "subType")) { + module.subType = luaL_checkinteger(L, -1); } else if (!strcmp(key, "modelId")) { g_model.header.modelId[idx] = luaL_checkinteger(L, -1); diff --git a/radio/src/lua/interface.cpp b/radio/src/lua/interface.cpp index 4661b4c05..f1bdbe0f6 100644 --- a/radio/src/lua/interface.cpp +++ b/radio/src/lua/interface.cpp @@ -636,18 +636,22 @@ bool luaLoadMixScript(uint8_t index) bool luaLoadFunctionScript(uint8_t index, uint8_t ref) { - if ((ref >= SCRIPT_GFUNC_FIRST) && g_model.noGlobalFunctions) - return false; + CustomFunctionData * fn; - CustomFunctionData & fn = (ref < SCRIPT_GFUNC_FIRST ? g_model.customFn[index] : g_eeGeneral.customFn[index]); + if (ref < SCRIPT_GFUNC_FIRST) + fn = &g_model.customFn[index]; + else if (!g_model.noGlobalFunctions) + fn = &g_eeGeneral.customFn[index]; + else + return true; - if (fn.func == FUNC_PLAY_SCRIPT && ZEXIST(fn.play.name)) { + if (fn->func == FUNC_PLAY_SCRIPT && ZEXIST(fn->play.name)) { if (luaScriptsCount < MAX_SCRIPTS) { ScriptInternalData & sid = scriptInternalData[luaScriptsCount++]; sid.reference = ref + index; sid.state = SCRIPT_NOFILE; char filename[sizeof(SCRIPTS_FUNCS_PATH) + LEN_FUNCTION_NAME + sizeof(SCRIPT_EXT)] = SCRIPTS_FUNCS_PATH "/"; - strncpy(filename + sizeof(SCRIPTS_FUNCS_PATH), fn.play.name, LEN_FUNCTION_NAME); + strncpy(filename + sizeof(SCRIPTS_FUNCS_PATH), fn->play.name, LEN_FUNCTION_NAME); filename[sizeof(SCRIPTS_FUNCS_PATH) + LEN_FUNCTION_NAME] = '\0'; strcat(filename + sizeof(SCRIPTS_FUNCS_PATH), SCRIPT_EXT); if (luaLoad(lsScripts, filename, sid) == SCRIPT_PANIC) { @@ -1127,10 +1131,11 @@ bool readToolName(char * toolName, const char * filename) return "Error opening file"; } - if (f_read(&file, &buffer, sizeof(buffer), &count) != FR_OK) { - f_close(&file); + FRESULT res = f_read(&file, &buffer, sizeof(buffer), &count); + f_close(&file); + + if (res != FR_OK) return false; - } const char * tns = "TNS|"; auto * start = std::search(buffer, buffer + sizeof(buffer), tns, tns + 4); diff --git a/radio/src/main.cpp b/radio/src/main.cpp index d06c42834..827dece1d 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -301,7 +301,7 @@ void guiMain(event_t evt) #else if (!refreshNeeded) { DEBUG_TIMER_START(debugTimerMenus); - while (1) { + while (true) { // normal GUI from menus const char * warn = warningText; uint8_t menu = popupMenuItemsCount; @@ -324,7 +324,10 @@ void guiMain(event_t evt) const char * result = runPopupMenu(evt); if (result) { TRACE("popupMenuHandler(%s)", result); - popupMenuHandler(result); + auto handler = popupMenuHandler; + if (result != STR_UPDATE_LIST) + CLEAR_POPUP(); + handler(result); if (menuEvent == 0) { evt = EVT_REFRESH; continue; @@ -400,7 +403,6 @@ void handleGui(event_t event) { } } menuHandlers[menuLevel](event); - // todo drawStatusLine(); here??? } else #endif @@ -464,7 +466,10 @@ void guiMain(event_t evt) const char * result = runPopupMenu(evt); if (result) { TRACE("popupMenuHandler(%s)", result); - popupMenuHandler(result); + auto handler = popupMenuHandler; + if (result != STR_UPDATE_LIST) + CLEAR_POPUP(); + handler(result); } } @@ -503,24 +508,23 @@ void perMain() #endif #if defined(RAMBACKUP) - if (unexpectedShutdown) { + if (globalData.unexpectedShutdown) { drawFatalErrorScreen(STR_EMERGENCY_MODE); return; } #endif #if defined(STM32) - static bool sdcard_present_before = SD_CARD_PRESENT(); - bool sdcard_present_now = SD_CARD_PRESENT(); - if (sdcard_present_now && !sdcard_present_before) { + bool sdcardPresent = SD_CARD_PRESENT(); + if (sdcardPresent && !globalData.sdcardPresent) { sdMount(); } - sdcard_present_before = sdcard_present_now; + globalData.sdcardPresent = sdcardPresent; #endif #if !defined(EEPROM) // In case the SD card is removed during the session - if (!SD_CARD_PRESENT() && !unexpectedShutdown) { + if (!SD_CARD_PRESENT() && !globalData.unexpectedShutdown) { drawFatalErrorScreen(STR_NO_SDCARD); return; } diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 59d1ee890..467578a2d 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -547,8 +547,8 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) { evalInputs(mode); - if (tick10ms) evalLogicalSwitches(mode==e_perout_mode_normal); - + if (tick10ms) + evalLogicalSwitches(mode==e_perout_mode_normal); #if defined(HELI) int heliEleValue = getValue(g_model.swashR.elevatorSource); @@ -614,7 +614,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) } #endif - memclear(chans, sizeof(chans)); // All outputs to 0 + memclear(chans, sizeof(chans)); // all outputs to 0 //========== MIXER LOOP =============== uint8_t lv_mixWarning = 0; @@ -624,27 +624,27 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) bitfield_channels_t dirtyChannels = (bitfield_channels_t)-1; // all dirty when mixer starts do { - bitfield_channels_t passDirtyChannels = 0; for (uint8_t i=0; isrcRaw == 0) break; + if (md->srcRaw == 0) + break; mixsrc_t stickIndex = md->srcRaw - MIXSRC_Rud; - if (!(dirtyChannels & ((bitfield_channels_t)1 << md->destCh))) continue; + if (!(dirtyChannels & ((bitfield_channels_t)1 << md->destCh))) + continue; // if this is the first calculation for the destination channel, initialize it with 0 (otherwise would be random) - if (i == 0 || md->destCh != (md-1)->destCh) { + if (i == 0 || md->destCh != (md-1)->destCh) chans[md->destCh] = 0; - } //========== FLIGHT MODE && SWITCH ===== bool mixCondition = (md->flightModes != 0 || md->swtch); @@ -669,44 +669,43 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) //========== VALUE =============== getvalue_t v = 0; if (mode > e_perout_mode_inactive_flight_mode) { - if (!mixEnabled) { - continue; - } - else { + if (mixEnabled) v = getValue(md->srcRaw); - } + else + continue; } else { mixsrc_t srcRaw = MIXSRC_Rud + stickIndex; v = getValue(srcRaw); srcRaw -= MIXSRC_CH1; - if (srcRaw<=MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) { + if (srcRaw <= MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) { if (dirtyChannels & ((bitfield_channels_t)1 << srcRaw) & (passDirtyChannels|~(((bitfield_channels_t) 1 << md->destCh)-1))) passDirtyChannels |= (bitfield_channels_t) 1 << md->destCh; if (srcRaw < md->destCh || pass > 0) v = chans[srcRaw] >> 8; } if (!mixCondition) { - mixEnabled = v >> DELAY_POS_SHIFT; + mixEnabled = v; } } - bool apply_offset_and_curve = true; + bool applyOffsetAndCurve = true; //========== DELAYS =============== delayval_t _swOn = swOn[i].now; delayval_t _swPrev = swOn[i].prev; bool swTog = (mixEnabled > _swOn+DELAY_POS_MARGIN || mixEnabled < _swOn-DELAY_POS_MARGIN); - if (mode==e_perout_mode_normal && swTog) { - if (!swOn[i].delay) _swPrev = _swOn; - swOn[i].delay = (mixEnabled > _swOn ? md->delayUp : md->delayDown) * (100/DELAY_STEP); + if (mode == e_perout_mode_normal && swTog) { + if (!swOn[i].delay) + _swPrev = _swOn; + swOn[i].delay = (mixEnabled > _swOn ? md->delayUp : md->delayDown) * 10; swOn[i].now = mixEnabled; swOn[i].prev = _swPrev; } - if (mode==e_perout_mode_normal && swOn[i].delay > 0) { + if (mode == e_perout_mode_normal && swOn[i].delay > 0) { swOn[i].delay = max(0, (int16_t)swOn[i].delay - tick10ms); if (!mixCondition) - v = _swPrev << DELAY_POS_SHIFT; + v = _swPrev; else if (mixEnabled) continue; } @@ -718,7 +717,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if ((md->speedDown || md->speedUp) && md->mltpx!=MLTPX_REP) { if (mixCondition) { v = (md->mltpx == MLTPX_ADD ? 0 : RESX); - apply_offset_and_curve = false; + applyOffsetAndCurve = false; } } else if (mixCondition) { @@ -734,7 +733,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) #endif } - if (apply_offset_and_curve) { + if (applyOffsetAndCurve) { //========== TRIMS ================ if (!(mode & e_perout_mode_notrims)) { @@ -757,7 +756,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) int16_t diff = v - (tact>>DEL_MULT_SHIFT); if (diff) { // open.20.fsguruh: speed is defined in % movement per second; In menu we specify the full movement (-100% to 100%) = 200% in total - // the unit of the stored value is the value from md->speedUp or md->speedDown divide SLOW_STEP seconds; e.g. value 4 means 4/SLOW_STEP = 2 seconds for CPU64 + // the unit of the stored value is the value from md->speedUp or md->speedDown * 0.1s; e.g. value 4 means 0.4 seconds // because we get a tick each 10msec, we need 100 ticks for one second // the value in md->speedXXX gives the time it should take to do a full movement from -100 to 100 therefore 200%. This equals 2048 in recalculated internal range if (tick10ms || !s_mixer_first_run_done) { @@ -769,14 +768,14 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (diff > 0) { if (s_mixer_first_run_done && md->speedUp > 0) { // if a speed upwards is defined recalculate the new value according configured speed; the higher the speed the smaller the add value is - int32_t newValue = tact+rate/((int16_t)(100/SLOW_STEP)*md->speedUp); + int32_t newValue = tact+rate/((int16_t)10*md->speedUp); if (newValuespeedDown > 0) { // see explanation in speedUp - int32_t newValue = tact-rate/((int16_t)(100/SLOW_STEP)*md->speedDown); + int32_t newValue = tact-rate/((int16_t)10*md->speedDown); if (newValue>currentValue) currentValue = newValue; // Endposition; prevent toggling around the destination } } @@ -788,7 +787,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) } //========== CURVES =============== - if (apply_offset_and_curve && md->curve.type != CURVE_REF_DIFF && md->curve.value) { + if (applyOffsetAndCurve && md->curve.type != CURVE_REF_DIFF && md->curve.value) { v = applyCurve(v, md->curve); } @@ -797,7 +796,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) dv = div_and_round(dv, 10); //========== OFFSET / AFTER =============== - if (apply_offset_and_curve) { + if (applyOffsetAndCurve) { int32_t offset = GET_GVAR_PREC1(MD_OFFSET(md), GV_RANGELARGE_NEG, GV_RANGELARGE, mixerCurrentFlightMode); if (offset) dv += div_and_round(calc100toRESX_16Bits(offset), 10) << 8; } @@ -912,7 +911,7 @@ void evalMixes(uint8_t tick10ms) ACTIVE_PHASES_TYPE transitionMask = ((ACTIVE_PHASES_TYPE)1 << lastFlightMode) + ((ACTIVE_PHASES_TYPE)1 << fm); if (fadeTime) { flightModesFade |= transitionMask; - delta = (MAX_ACT / (100/SLOW_STEP)) / fadeTime; + delta = (MAX_ACT / 10) / fadeTime; } else { flightModesFade &= ~transitionMask; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index af040458b..e5a387171 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -147,10 +147,8 @@ enum CurveRefType { #define GV1_LARGE 1024 #define GV_RANGE_WEIGHT 500 #define GV_RANGE_OFFSET 500 -#define DELAY_STEP 10 -#define SLOW_STEP 10 -#define DELAY_MAX (25*DELAY_STEP) /* 25 seconds */ -#define SLOW_MAX (25*SLOW_STEP) /* 25 seconds */ +#define DELAY_MAX 250 /* 25 seconds */ +#define SLOW_MAX 250 /* 25 seconds */ #define MD_WEIGHT(md) (md->weight) #define MD_WEIGHT_TO_UNION(md, var) var.word = md->weight diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 102ee16df..0ef5a3a1f 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -34,13 +34,9 @@ ModelData g_model; Clipboard clipboard; #endif -uint8_t unexpectedShutdown = 0; - -uint16_t vbattRTC; - -/* ARM: mixer duration in 0.5us */ -uint16_t maxMixerDuration; +GlobalData globalData; +uint16_t maxMixerDuration; // step = 0.01ms uint8_t heartbeat; #if defined(OVERRIDE_CHANNEL_FUNCTION) @@ -206,9 +202,7 @@ void per10ms() } #endif - if (!IS_DSM2_SERIAL_PROTOCOL(s_current_protocol[0])) { - telemetryInterrupt10ms(); - } + telemetryInterrupt10ms(); // These moved here from evalFlightModeMixes() to improve beep trigger reliability. #if defined(PWM_BACKLIGHT) @@ -505,14 +499,9 @@ void modelDefault(uint8_t id) } #endif -#if defined(HARDWARE_INTERNAL_MODULE) +#if defined(FRSKY_RELEASE) g_model.moduleData[INTERNAL_MODULE].type = IS_PXX2_INTERNAL_ENABLED() ? MODULE_TYPE_ISRM_PXX2 : MODULE_TYPE_XJT_PXX1; g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); -#elif defined(PCBSKY9X) - g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_PPM; -#elif defined(RADIO_T12) - g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_NONE; - g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_MULTIMODULE; #endif #if defined(PCBXLITE) @@ -683,11 +672,6 @@ getvalue_t convert16bitsTelemValue(source_t channel, ls_telemetry_value_t value) return value; } -ls_telemetry_value_t minTelemValue(source_t channel) -{ - return 0; -} - ls_telemetry_value_t maxTelemValue(source_t channel) { return 30000; @@ -942,6 +926,10 @@ void checkAll() } } +#if defined(EXTERNAL_ANTENNA) && defined(INTERNAL_MODULE_PXX1) + checkExternalAntenna(); +#endif + START_SILENCE_PERIOD(); } #endif // GUI @@ -1866,8 +1854,7 @@ void opentxInit() #endif #if defined(EEPROM) - storageClearRadioSetting(); - storageReadRadioSettings(false); + bool radioSettingsValid = storageReadRadioSettings(false); #endif BACKLIGHT_ENABLE(); // we start the backlight during the startup animation @@ -1891,12 +1878,14 @@ void opentxInit() // * radios without CPU controlled power can only use Reset status register (if available) if (UNEXPECTED_SHUTDOWN()) { TRACE("Unexpected Shutdown detected"); - unexpectedShutdown = 1; + globalData.unexpectedShutdown = 1; } #if defined(SDCARD) + globalData.sdcardPresent = SD_CARD_PRESENT(); + // SDCARD related stuff, only done if not unexpectedShutdown - if (!unexpectedShutdown) { + if (!globalData.unexpectedShutdown) { sdInit(); #if defined(AUTOUPDATE) @@ -1926,12 +1915,13 @@ void opentxInit() #endif #if defined(EEPROM) - storageReadRadioSettings(true); + if (!radioSettingsValid) + storageReadRadioSettings(); storageReadCurrentModel(); #endif #if defined(COLORLCD) - if (!unexpectedShutdown) { + if (!globalData.unexpectedShutdown) { // g_model.topbarData is still zero here (because it was not yet read from SDCARD), // but we only remember the pointer to in in constructor. // The storageReadAll() needs topbar object, so it must be created here @@ -1947,7 +1937,7 @@ void opentxInit() // handling of storage for radios that have no EEPROM #if !defined(EEPROM) #if defined(RAMBACKUP) - if (unexpectedShutdown) { + if (globalData.unexpectedShutdown) { // SDCARD not available, try to restore last model from RAM TRACE("rambackupRestore"); rambackupRestore(); @@ -1964,10 +1954,6 @@ void opentxInit() auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol()); #endif -#if defined(PCBTARANIS) - BACKLIGHT_ENABLE(); -#endif - #if MENUS_LOCK == 1 getMovedSwitch(); if (TRIMS_PRESSED() && g_eeGeneral.switchUnlockStates==switches_states) { @@ -2002,7 +1988,7 @@ void opentxInit() backlightOn(); } - if (!unexpectedShutdown) { + if (!globalData.unexpectedShutdown) { opentxStart(); } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 5f01f8efc..8673c7bb4 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -420,13 +420,13 @@ void watchdogSuspend(uint32_t timeout); #define MAX_ALERT_TIME 60 -struct t_inactivity +struct InactivityData { uint16_t counter; uint8_t sum; }; -extern struct t_inactivity inactivity; +extern InactivityData inactivity; #define LEN_STD_CHARS 40 @@ -583,9 +583,14 @@ extern uint8_t trimsDisplayMask; void flightReset(uint8_t check=true); -extern uint8_t unexpectedShutdown; +PACK(struct GlobalData { + uint8_t unexpectedShutdown:1; + uint8_t sdcardPresent:1; + uint8_t externalAntennaEnabled: 1; + uint8_t spare:5; +}); -extern uint16_t vbattRTC; +extern GlobalData globalData; extern uint16_t maxMixerDuration; @@ -875,16 +880,15 @@ void copySticksToOffset(uint8_t ch); void moveTrimsToOffsets(); typedef uint16_t ACTIVE_PHASES_TYPE; -#define DELAY_POS_SHIFT 0 #define DELAY_POS_MARGIN 3 typedef int16_t delayval_t; -PACK(typedef struct { - uint16_t delay; +PACK(struct SwOn { + uint16_t delay:14; // max = 2550 + uint8_t activeMix:1; + uint8_t activeExpo:1; int16_t now; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw int16_t prev; - uint8_t activeMix; - uint8_t activeExpo; -}) SwOn; +}); extern SwOn swOn[MAX_MIXERS]; extern int32_t act[MAX_MIXERS]; @@ -1089,15 +1093,17 @@ constexpr uint8_t OPENTX_START_NO_CHECKS = 0x04; // Re-useable byte array to save having multiple buffers #if LCD_W <= 212 -#define SD_SCREEN_FILE_LENGTH 32 +constexpr uint8_t SD_SCREEN_FILE_LENGTH = 32; #else -#define SD_SCREEN_FILE_LENGTH 64 +constexpr uint8_t SD_SCREEN_FILE_LENGTH = 64; #endif #if defined(BLUETOOTH) #include "bluetooth.h" #endif +constexpr uint8_t TEXT_FILENAME_MAXLEN = 40; + union ReusableBuffer { struct { @@ -1115,6 +1121,7 @@ union ReusableBuffer struct { char msg[64]; uint8_t r9mPower; + int8_t antennaMode; BindInformation bindInformation; struct { union { @@ -1181,7 +1188,7 @@ union ReusableBuffer uint32_t updateTime; ModuleSettings moduleSettings; ReceiverSettings receiverSettings; // when dealing with receiver settings, we also need module settings - } hardwareAndSettings; + } hardwareAndSettings; // moduleOptions, receiverOptions, radioVersion struct { ModuleInformation modules[NUM_MODULES]; @@ -1189,6 +1196,10 @@ union ReusableBuffer char msg[64]; } radioTools; + struct { + int8_t antennaMode; + } radioHardware; + struct { uint8_t stickMode; } generalSettings; @@ -1221,13 +1232,29 @@ union ReusableBuffer int8_t preset; } curveEdit; + struct { + char filename[TEXT_FILENAME_MAXLEN]; + char lines[NUM_BODY_LINES][LCD_COLS + 1]; + int linesCount; + } viewText; + + struct { + bool longNames; + bool secondPage; + bool mixersView; + } viewChannels; + + struct { + uint8_t maxNameLen; + } modelFailsafe; + #if defined(STM32) // Data for the USB mass storage driver. If USB mass storage runs no menu is not allowed to be displayed uint8_t MSC_BOT_Data[MSC_MEDIA_PACKET]; #endif }; -extern union ReusableBuffer reusableBuffer; +extern ReusableBuffer reusableBuffer; uint8_t zlen(const char *str, uint8_t size); bool zexist(const char *str, uint8_t size); @@ -1246,13 +1273,15 @@ char * strcat_zchar(char *dest, const char *name, uint8_t size, const char *defa // Stick tolerance varies between transmitters, Higher is better #define STICK_TOLERANCE 64 - ls_telemetry_value_t minTelemValue(source_t channel); - ls_telemetry_value_t maxTelemValue(source_t channel); +ls_telemetry_value_t maxTelemValue(source_t channel); getvalue_t convert16bitsTelemValue(source_t channel, ls_telemetry_value_t value); getvalue_t convertLswTelemValue(LogicalSwitchData * cs); -#define convertTelemValue(channel, value) convert16bitsTelemValue(channel, value) +inline getvalue_t convertTelemValue(source_t channel, ls_telemetry_value_t value) +{ + return convert16bitsTelemValue(channel, value); +} inline int div_and_round(int num, int den) { @@ -1292,8 +1321,6 @@ extern uint8_t s_frsky_view; constexpr uint32_t EARTH_RADIUS = 6371009; -void getGpsPilotPosition(); -void getGpsDistance(); void varioWakeup(); #if defined(AUDIO) && defined(BUZZER) @@ -1378,26 +1405,17 @@ enum JackMode { #include "gyro.h" #endif -inline bool isSimu() -{ -#if defined(SIMU) - return true; -#else - return false; -#endif -} - #if defined(DEBUG_LATENCY) extern uint8_t latencyToggleSwitch; #endif inline bool isAsteriskDisplayed() { -#if defined(LOG_TELEMETRY) || defined(WATCHDOG_DISABLED) || defined(DEBUG_LATENCY) +#if defined(LOG_TELEMETRY) || !defined(WATCHDOG) || defined(DEBUG_LATENCY) return true; #endif - return unexpectedShutdown; + return globalData.unexpectedShutdown; } #include "module.h" diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index 627724438..b640f0611 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -1,3 +1,26 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef _MODULES_CONSTANTS_H_ +#define _MODULES_CONSTANTS_H_ + enum ModuleType { MODULE_TYPE_NONE = 0, MODULE_TYPE_PPM, @@ -165,3 +188,14 @@ enum FailsafeModes { FAILSAFE_RECEIVER, FAILSAFE_LAST = FAILSAFE_RECEIVER }; + +enum AntennaModes { + ANTENNA_MODE_INTERNAL = -2, + ANTENNA_MODE_ASK = -1, + ANTENNA_MODE_PER_MODEL = 0, + ANTENNA_MODE_EXTERNAL = 1, + ANTENNA_MODE_FIRST = ANTENNA_MODE_INTERNAL, + ANTENNA_MODE_LAST = ANTENNA_MODE_EXTERNAL +}; + +#endif // _MODULES_CONSTANTS_H_ diff --git a/radio/src/pulses/modules_helpers.cpp b/radio/src/pulses/modules_helpers.cpp new file mode 100644 index 000000000..6de2c72db --- /dev/null +++ b/radio/src/pulses/modules_helpers.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "opentx.h" + +#if defined(EXTERNAL_ANTENNA) +bool isExternalAntennaEnabled() +{ + switch (g_eeGeneral.antennaMode) { + case ANTENNA_MODE_INTERNAL: + return false; + case ANTENNA_MODE_EXTERNAL: + return true; + case ANTENNA_MODE_PER_MODEL: + switch (g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode) { + case ANTENNA_MODE_EXTERNAL: + case ANTENNA_MODE_ASK: + return globalData.externalAntennaEnabled; + default: + return false; + } + default: + return globalData.externalAntennaEnabled; + } +} +#endif diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 7c64dedd0..8f0748a37 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -529,4 +529,6 @@ inline void setModuleType(uint8_t moduleIdx, uint8_t moduleType) setDefaultPpmFrameLength(moduleIdx); } +extern bool isExternalAntennaEnabled(); + #endif // _MODULES_HELPERS_H_ diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index d44830201..6ad42799b 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -46,12 +46,6 @@ #define IS_DSM2_PROTOCOL(protocol) (0) #endif -#if defined(DSM2_SERIAL) - #define IS_DSM2_SERIAL_PROTOCOL(protocol) (IS_DSM2_PROTOCOL(protocol)) -#else - #define IS_DSM2_SERIAL_PROTOCOL(protocol) (0) -#endif - #if defined(MULTIMODULE) #define IS_MULTIMODULE_PROTOCOL(protocol) (protocol==PROTOCOL_CHANNELS_MULTIMODULE) #if !defined(DSM2) @@ -146,7 +140,7 @@ class BindInformation { class OtaUpdateInformation: public BindInformation { public: - char filename[_MAX_LFN+1]; + char filename[32+1]; uint32_t address; }; diff --git a/radio/src/pulses/pxx1.cpp b/radio/src/pulses/pxx1.cpp index 96c4cc558..abc250040 100644 --- a/radio/src/pulses/pxx1.cpp +++ b/radio/src/pulses/pxx1.cpp @@ -52,27 +52,27 @@ template void Pxx1Pulses::addExtraFlags(uint8_t module) { // Ext. flag (holds antenna selection on Horus internal module, 0x00 otherwise) - uint8_t extra_flags = 0; + uint8_t extraFlags = 0; -#if defined(PCBHORUS) || defined(PCBXLITE) - if (module == INTERNAL_MODULE) { - extra_flags |= (g_model.moduleData[module].pxx.external_antenna << 0); +#if defined(EXTERNAL_ANTENNA) + if (module == INTERNAL_MODULE && isExternalAntennaEnabled()) { + extraFlags |= (1 << 0); } #endif - extra_flags |= (g_model.moduleData[module].pxx.receiver_telem_off << 1); - extra_flags |= (g_model.moduleData[module].pxx.receiver_channel_9_16 << 2); + extraFlags |= (g_model.moduleData[module].pxx.receiverTelemetryOff << 1); + extraFlags |= (g_model.moduleData[module].pxx.receiverHigherChannels << 2); if (isModuleR9MNonAccess(module)) { - extra_flags |= (min(g_model.moduleData[module].pxx.power, isModuleR9M_FCC_VARIANT(module) ? (uint8_t)R9M_FCC_POWER_MAX : (uint8_t)R9M_LBT_POWER_MAX) << 3); + extraFlags |= (min(g_model.moduleData[module].pxx.power, isModuleR9M_FCC_VARIANT(module) ? (uint8_t)R9M_FCC_POWER_MAX : (uint8_t)R9M_LBT_POWER_MAX) << 3); if (isModuleR9M_EUPLUS(module)) - extra_flags |= (1 << 6); + extraFlags |= (1 << 6); } // Disable S.PORT if internal module is active if (module == EXTERNAL_MODULE && isSportLineUsedByInternalModule()) { - extra_flags |= (1 << 5); + extraFlags |= (1 << 5); } - PxxTransport::addByte(extra_flags); + PxxTransport::addByte(extraFlags); } template diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index ef8666bb7..f118f0328 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -243,7 +243,7 @@ void Pxx2Pulses::setupAccstBindFrame(uint8_t module) for (uint8_t i=0; i=menuVerticalOffset && current_line-menuVerticalOffset 0 && escape < sizeof(escape_chars)) { + escape_chars[escape - 1] = c; + if (escape == 2 && !strncmp(escape_chars, "up", 2)) { + c = '\300'; + } + else if (escape == 2 && !strncmp(escape_chars, "dn", 2)) { + c = '\301'; + } + else if (escape == 3) { + int val = atoi(escape_chars); + if (val >= 200 && val < 225) { + c = '\200' + val-200; + } + } + else { + escape++; + continue; + } + } + else if (c=='~') { + c = 'z'+1; + } + else if (c=='\t') { + c = 0x1D; //tab + } + escape = 0; + lines[current_line-menuVerticalOffset][line_length++] = c; + } + } + if (c != '\n') { + current_line += 1; + } + f_close(&file); + } + + if (lines_count == 0) { + lines_count = current_line; + } +} + // returns true if current working dir is at the root level bool isCwdAtRoot() { diff --git a/radio/src/sdcard.h b/radio/src/sdcard.h index 40f716edc..843a28c17 100644 --- a/radio/src/sdcard.h +++ b/radio/src/sdcard.h @@ -158,6 +158,8 @@ const char * sdCopyFile(const char * srcFilename, const char * srcDir, const cha #define LIST_SD_FILE_EXT 2 bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen, const char * selection, uint8_t flags=0); +void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + 1], int & lines_count); + bool isCwdAtRoot(); FRESULT sdReadDir(DIR * dir, FILINFO * fno, bool & firstTime); diff --git a/radio/src/storage/conversions/conversions_216_218.cpp b/radio/src/storage/conversions/conversions_216_218.cpp index b54e61b25..7f2689104 100644 --- a/radio/src/storage/conversions/conversions_216_218.cpp +++ b/radio/src/storage/conversions/conversions_216_218.cpp @@ -524,14 +524,14 @@ PACK(typedef struct { ScriptData_v216 scriptsData[MAX_SCRIPTS]; \ char inputNames[MAX_INPUTS][LEN_INPUT_NAME]; \ uint8_t nPotsToWarn; \ - int8_t potPosition[NUM_POTS+NUM_SLIDERS]; \ + int8_t potsWarnPosition[NUM_POTS+NUM_SLIDERS]; \ uint8_t spare[2]; #elif defined(PCBSKY9X) #define MODELDATA_EXTRA_216 \ uint8_t externalModule; \ ModuleData_v216 moduleData[NUM_MODULES+1]; \ uint8_t nPotsToWarn; \ - int8_t potPosition[NUM_POTS+NUM_SLIDERS]; \ + int8_t potsWarnPosition[NUM_POTS+NUM_SLIDERS]; \ uint8_t rxBattAlarms[2]; #endif @@ -1070,7 +1070,7 @@ void convertModelData_216_to_217(ModelData &model) #endif newModel.potsWarnMode = oldModel.nPotsToWarn >> 6; newModel.potsWarnEnabled = oldModel.nPotsToWarn & 0x1f; - memcpy(newModel.potsWarnPosition, oldModel.potPosition, sizeof(newModel.potsWarnPosition)); + memcpy(newModel.potsWarnPosition, oldModel.potsWarnPosition, sizeof(newModel.potsWarnPosition)); } void convertModelData_217_to_218(ModelData &model) diff --git a/radio/src/storage/conversions/conversions_218_219.cpp b/radio/src/storage/conversions/conversions_218_219.cpp index 6760b927b..0f2c6de9c 100644 --- a/radio/src/storage/conversions/conversions_218_219.cpp +++ b/radio/src/storage/conversions/conversions_218_219.cpp @@ -59,7 +59,7 @@ int convertSource_218_to_219(int source) #endif #if defined(PCBX10) - if ((source == MIXSRC_EXT1) || (source == MIXSRC_EXT2)) + if (source == MIXSRC_EXT1 || source == MIXSRC_EXT2) source += 2; #endif @@ -70,8 +70,8 @@ int convertSwitch_218_to_219(int swtch) { // on X7: 2 additional switches // on X9D / X9D+: 1 additional switch - // on xlite : 2 more storage switches - + // on XLite: 2 additional storage switches + // on X10: 2 additional pots => 12 multipos switches #if defined(PCBX7) || defined(PCBHORUS) || defined(PCBX9D) || defined(PCBX9DP) || defined(PCBXLITE) if (swtch < 0) return -convertSwitch_218_to_219(-swtch); @@ -95,6 +95,9 @@ int convertSwitch_218_to_219(int swtch) #if defined(PCBHORUS) if (swtch >= SWSRC_SI0) swtch += 2 * 3; +#endif + +#if defined(PCBX10) if (swtch >= SWSRC_FIRST_MULTIPOS_SWITCH + 3 * XPOTS_MULTIPOS_COUNT) swtch += 2 * XPOTS_MULTIPOS_COUNT; #endif @@ -120,6 +123,10 @@ void convertModelData_218_to_219(ModelData &model) // 4 bytes more for the ModelHeader::bitmap memclear(&newModel.header.bitmap[10], 4); memcpy(newModel.timers, oldModel.timers, offsetof(ModelData_v218, mixData) - offsetof(ModelData_v218, timers)); + + // trainer battery compartment removed + if (newModel.trainerData.mode >= TRAINER_MODE_MASTER_BLUETOOTH) + newModel.trainerData.mode -= 1; #endif memclear(newModel.mixData, sizeof(ModelData_v219) - offsetof(ModelData_v219, mixData)); @@ -128,6 +135,14 @@ void convertModelData_218_to_219(ModelData &model) zchar2str(name, oldModel.header.name, LEN_MODEL_NAME); TRACE("Model %s conversion from v218 to v219", name); + for (uint8_t i=0; i= TMRMODE_COUNT) + timer.mode = TMRMODE_COUNT + convertSwitch_218_to_219(oldModel.timers[i].mode - TMRMODE_COUNT + 1) - 1; + else if (timer.mode < 0) + timer.mode = convertSwitch_218_to_219(oldModel.timers[i].mode); + } + for (uint8_t i=0; i #include -bool eeLoadGeneral(bool allowConversion); +bool eeLoadGeneral(bool allowFixes); void eeDeleteModel( uint8_t id ); bool eeCopyModel(uint8_t dst, uint8_t src); void eeSwapModels(uint8_t id1, uint8_t id2); diff --git a/radio/src/storage/eeprom_rlc.cpp b/radio/src/storage/eeprom_rlc.cpp index 6c458f088..33f561e6c 100644 --- a/radio/src/storage/eeprom_rlc.cpp +++ b/radio/src/storage/eeprom_rlc.cpp @@ -757,7 +757,7 @@ uint16_t eeLoadModelData(uint8_t index) return theFile.readRlc((uint8_t*)&g_model, sizeof(g_model)); } -bool eeLoadGeneral(bool allowConversion) +bool eeLoadGeneral(bool allowFixes) { theFile.openRlc(FILE_GENERAL); if (theFile.readRlc((uint8_t*)&g_eeGeneral, 3) == 3 && g_eeGeneral.version == EEPROM_VER) { @@ -794,16 +794,14 @@ bool eeLoadGeneral(bool allowConversion) return false; } #endif + #if defined(EEPROM_CONVERSIONS) if (g_eeGeneral.version != EEPROM_VER) { - if (!allowConversion) { - storageClearRadioSetting(); - return true; // prevent eeprom from being wiped - } TRACE("EEPROM version %d instead of %d", g_eeGeneral.version, EEPROM_VER); - if (!eeConvert()) { + if (!allowFixes) + return false; // prevent eeprom from being wiped + if (!eeConvert()) return false; - } } return true; #else diff --git a/radio/src/storage/eeprom_rlc.h b/radio/src/storage/eeprom_rlc.h index d9ad5d588..3c60c0a32 100644 --- a/radio/src/storage/eeprom_rlc.h +++ b/radio/src/storage/eeprom_rlc.h @@ -176,11 +176,10 @@ const char * eeRestoreModel(uint8_t i_fileDst, char *model_name); // For conversions void loadRadioSettings(); -void loadModel(int index, bool alarms=true); bool eepromOpen(); void eeLoadModelName(uint8_t id, char * name); -bool eeLoadGeneral(bool allowConversion); +bool eeLoadGeneral(bool allowFixes); // For EEPROM backup/restore inline bool isEepromStart(const void * buffer) diff --git a/radio/src/storage/sdcard_raw.cpp b/radio/src/storage/sdcard_raw.cpp index 3e5fd71b1..9a1b40095 100644 --- a/radio/src/storage/sdcard_raw.cpp +++ b/radio/src/storage/sdcard_raw.cpp @@ -173,6 +173,8 @@ const char * loadRadioSettings(const char * path) } #endif + postRadioSettingsLoad(); + return nullptr; } diff --git a/radio/src/storage/storage.h b/radio/src/storage/storage.h index 4e54f0a94..4238790c5 100644 --- a/radio/src/storage/storage.h +++ b/radio/src/storage/storage.h @@ -49,9 +49,10 @@ void storageReadAll(); void storageDirty(uint8_t msk); void storageCheck(bool immediately); void storageFlushCurrentModel(); - +void postRadioSettingsLoad(); void preModelLoad(); void postModelLoad(bool alarms); +void checkExternalAntenna(); #if defined(EEPROM_RLC) #include "eeprom_common.h" diff --git a/radio/src/storage/storage_common.cpp b/radio/src/storage/storage_common.cpp index d7a4bcb02..86f5995c6 100644 --- a/radio/src/storage/storage_common.cpp +++ b/radio/src/storage/storage_common.cpp @@ -53,20 +53,92 @@ void preModelLoad() pauseMixerCalculations(); } -#if defined(PCBFRSKY) -static void fixUpModel() + +void postRadioSettingsLoad() { - // Ensure that when rfProtocol is MODULE_SUBTYPE_PXX1_OFF the type of the module is MODULE_TYPE_NONE - if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_XJT_PXX1 && g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_OFF) - g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_NONE; +#if defined(PXX2) + if (is_memclear(g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID)) { + setDefaultOwnerId(); + } +#endif +} + +#if defined(EXTERNAL_ANTENNA) && defined(INTERNAL_MODULE_PXX1) +void onAntennaSelection(const char * result) +{ + if (result == STR_USE_INTERNAL_ANTENNA) { + globalData.externalAntennaEnabled = false; + } + else if (result == STR_USE_EXTERNAL_ANTENNA) { + globalData.externalAntennaEnabled = true; + } + else { + checkExternalAntenna(); + } +} + +void onAntennaSwitchConfirm(const char * result) +{ + if (result == STR_OK) { + // Switch to external antenna confirmation + globalData.externalAntennaEnabled = true; + } +} + +void checkExternalAntenna() +{ + if (isModuleXJT(INTERNAL_MODULE)) { + if (g_eeGeneral.antennaMode == ANTENNA_MODE_EXTERNAL) { + globalData.externalAntennaEnabled = true; + } + else if (g_eeGeneral.antennaMode == ANTENNA_MODE_PER_MODEL && g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode == ANTENNA_MODE_EXTERNAL) { + if (!globalData.externalAntennaEnabled) { +#if defined(COLORLCD) +#warning "Antenna confirmation dialog needed" +#else + POPUP_CONFIRMATION(STR_ANTENNACONFIRM1, onAntennaSwitchConfirm); + SET_WARNING_INFO(STR_ANTENNACONFIRM2, sizeof(TR_ANTENNACONFIRM2), 0); +#endif + } + } + else if (g_eeGeneral.antennaMode == ANTENNA_MODE_ASK || (g_eeGeneral.antennaMode == ANTENNA_MODE_PER_MODEL && g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode == ANTENNA_MODE_ASK)) { + globalData.externalAntennaEnabled = false; +#if defined(COLORLCD) +#warning "Antenna confirmation dialog needed" +#else + POPUP_MENU_ADD_ITEM(STR_USE_INTERNAL_ANTENNA); + POPUP_MENU_ADD_ITEM(STR_USE_EXTERNAL_ANTENNA); + POPUP_MENU_START(onAntennaSelection); +#endif + } + else { + globalData.externalAntennaEnabled = false; + } + } + else { + globalData.externalAntennaEnabled = false; + } } #endif void postModelLoad(bool alarms) { -#if defined(PCBFRSKY) - fixUpModel(); +#if defined(PXX2) + if (is_memclear(g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID)) { + memcpy(g_model.modelRegistrationID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID); + } #endif + +#if defined(HARDWARE_INTERNAL_MODULE) + if (!isInternalModuleAvailable(g_model.moduleData[INTERNAL_MODULE].type)) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + } +#endif + + if (!isExternalModuleAvailable(g_model.moduleData[EXTERNAL_MODULE].type)) { + memclear(&g_model.moduleData[EXTERNAL_MODULE], sizeof(ModuleData)); + } + AUDIO_FLUSH(); flightReset(false); @@ -78,7 +150,10 @@ void postModelLoad(bool alarms) TelemetrySensor & sensor = g_model.telemetrySensors[i]; if (sensor.type == TELEM_TYPE_CALCULATED && sensor.persistent) { telemetryItems[i].value = sensor.persistentValue; - telemetryItems[i].lastReceived = TELEMETRY_VALUE_OLD; // #3595: make value visible even before the first new value is received) + telemetryItems[i].timeout = 0; // make value visible even before the first new value is received) + } + else { + telemetryItems[i].timeout = TELEMETRY_SENSOR_TIMEOUT_UNAVAILABLE; } } @@ -105,6 +180,7 @@ void postModelLoad(bool alarms) LOAD_MODEL_BITMAP(); LUA_LOAD_MODEL_SCRIPTS(); + SEND_FAILSAFE_1S(); } diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 3b25d82d0..0d22ec1e1 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -328,7 +328,7 @@ char * getSwitchPositionName(char * dest, swsrc_t idx) } #else #define IDX_TRIMS_IN_STR_VSWITCHES (1) -#define IDX_ON_IN_STR_VSWITCHES (IDX_TRIMS_IN_STR_VSWITCHES+SWSRC_LAST_TRIM-SWSRC_FIRST_TRIM+1) +#define IDX_ON_IN_STR_VSWITCHES (IDX_TRIMS_IN_STR_VSWITCHES + SWSRC_LAST_TRIM - SWSRC_FIRST_TRIM + 1) if (idx <= SWSRC_LAST_SWITCH) { div_t swinfo = switchInfo(idx); s = getSwitchName(s, idx); diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 2e691f848..38064f03b 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -40,22 +40,21 @@ enum LogicalSwitchContextState { SWITCH_ENABLE }; -PACK(typedef struct { +PACK(struct LogicalSwitchContext { uint8_t state:1; uint8_t timerState:2; uint8_t spare:5; uint8_t timer; int16_t lastValue; -}) LogicalSwitchContext; +}); -PACK(typedef struct { +PACK(struct LogicalSwitchesFlightModeContext { LogicalSwitchContext lsw[MAX_LOGICAL_SWITCHES]; -}) LogicalSwitchesFlightModeContext; +}); LogicalSwitchesFlightModeContext lswFm[MAX_FLIGHT_MODES]; #define LS_LAST_VALUE(fm, idx) lswFm[fm].lsw[idx].lastValue - #if defined(PCBFRSKY) || defined(PCBFLYSKY) #if defined(PCBX9E) tmr10ms_t switchesMidposStart[16]; diff --git a/radio/src/targets/common/arm/CMakeLists.txt b/radio/src/targets/common/arm/CMakeLists.txt index d0f514f4f..fdaa7f75f 100644 --- a/radio/src/targets/common/arm/CMakeLists.txt +++ b/radio/src/targets/common/arm/CMakeLists.txt @@ -220,6 +220,7 @@ set(PULSES_SRC ${PULSES_SRC} pulses.cpp ppm.cpp + modules_helpers.cpp ) if(DSM2) diff --git a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp index f9598bb27..c93b6f644 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -206,4 +206,4 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) } } #endif -} +} \ No newline at end of file diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index 90010c956..e5adcd545 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -209,9 +209,8 @@ int main() RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph | RCC_APB2Periph_SYSCFG, ENABLE); - keysInit(); pwrInit(); - pwrOff(); + keysInit(); #if defined(PCBHORUS) // wait a bit for the inputs to stabilize... @@ -234,7 +233,7 @@ int main() delaysInit(); // needed for lcdInit() -#if defined(DEBUG) +#if defined(DEBUG) && defined(AUX_SERIAL) auxSerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined) #endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 8dabd14ce..00d1ff616 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -71,7 +71,6 @@ elseif (PCB STREQUAL X12S) x12s_adc_driver.cpp gps_driver.cpp ) - set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp) set(BITMAPS_TARGET x12s_bitmaps) set(FONTS_TARGET x12s_fonts) set(LCD_DRIVER lcd_driver.cpp) diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 85530ece2..40900a099 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -128,10 +128,6 @@ void boardInit() pwrOn(); delaysInit(); -#if defined(DEBUG) - auxSerialInit(0, 0); // default serial mode (None if DEBUG not defined) -#endif - __enable_irq(); TRACE("\nHorus board started :)"); diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index ff4618b87..13717068a 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -317,12 +317,12 @@ void watchdogInit(unsigned int duration); #define wdt_enable(x) #define wdt_reset() #else - #if defined(WATCHDOG_DISABLED) - #define wdt_enable(x) - #define wdt_reset() - #else + #if defined(WATCHDOG) #define wdt_enable(x) watchdogInit(x) #define wdt_reset() IWDG->KR = 0xAAAA + #else + #define wdt_enable(x) + #define wdt_reset() #endif #define WAS_RESET_BY_WATCHDOG() (RCC->CSR & (RCC_CSR_WDGRSTF | RCC_CSR_WWDGRSTF)) #define WAS_RESET_BY_SOFTWARE() (RCC->CSR & RCC_CSR_SFTRSTF) @@ -510,8 +510,8 @@ void backlightEnable(uint8_t dutyCycle = 0); #else #define BACKLIGHT_LEVEL_MIN 46 #endif -#define BACKLIGHT_ENABLE() backlightEnable(unexpectedShutdown ? BACKLIGHT_LEVEL_MAX : BACKLIGHT_LEVEL_MAX-g_eeGeneral.backlightBright) -#define BACKLIGHT_DISABLE() backlightEnable(unexpectedShutdown ? BACKLIGHT_LEVEL_MAX : ((g_eeGeneral.blOffBright == BACKLIGHT_LEVEL_MIN) && (g_eeGeneral.backlightMode != e_backlight_mode_off)) ? 0 : g_eeGeneral.blOffBright) +#define BACKLIGHT_ENABLE() backlightEnable(globalData.unexpectedShutdown ? BACKLIGHT_LEVEL_MAX : BACKLIGHT_LEVEL_MAX - g_eeGeneral.backlightBright) +#define BACKLIGHT_DISABLE() backlightEnable(globalData.unexpectedShutdown ? BACKLIGHT_LEVEL_MAX : ((g_eeGeneral.blOffBright == BACKLIGHT_LEVEL_MIN) && (g_eeGeneral.backlightMode != e_backlight_mode_off)) ? 0 : g_eeGeneral.blOffBright) #define isBacklightEnabled() true #if !defined(SIMU) @@ -586,17 +586,6 @@ void gpsSendByte(uint8_t byte); #define PILOTPOS_MIN_HDOP 500 #endif -// Second serial port driver -#if defined(PCBX12S) -#define AUX_SERIAL -#define DEBUG_BAUDRATE 115200 -extern uint8_t auxSerialMode; -void auxSerialInit(unsigned int mode, unsigned int protocol); -void auxSerialPutc(char c); -#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol) -void auxSerialSbusInit(); -void auxSerialStop(); -#endif #define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE) // BT driver diff --git a/radio/src/targets/horus/extmodule_driver.cpp b/radio/src/targets/horus/extmodule_driver.cpp index f453fa022..5c628edf1 100644 --- a/radio/src/targets/horus/extmodule_driver.cpp +++ b/radio/src/targets/horus/extmodule_driver.cpp @@ -116,7 +116,7 @@ void extmodulePxx1PulsesStart() #if defined(PCBX10) || PCBREV >= 13 EXTMODULE_TIMER->CCR3 = 18; - EXTMODULE_TIMER->CCER = TIM_CCER_CC3E | TIM_CCER_CC3NE; + EXTMODULE_TIMER->CCER = TIM_CCER_CC3E | TIM_CCER_CC3NE | TIM_CCER_CC3P | TIM_CCER_CC3NP; EXTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_0; // Force O/P high EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs EXTMODULE_TIMER->EGR = 1; // Restart @@ -161,14 +161,14 @@ void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool i EXTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS (2Mhz) #if defined(PCBX10) || PCBREV >= 13 - EXTMODULE_TIMER->CCER = TIM_CCER_CC3E | TIM_CCER_CC3P; - EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs EXTMODULE_TIMER->CCR3 = 0; + EXTMODULE_TIMER->CCER = TIM_CCER_CC3E | TIM_CCER_CC3P; EXTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_0; // Force O/P high + EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs EXTMODULE_TIMER->EGR = 1; // Restart EXTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_0; #else - EXTMODULE_TIMER->CCER = TIM_CCER_CC1E | TIM_CCER_CC1P; + EXTMODULE_TIMER->CCER = TIM_CCER_CC1E | (inverted ? 0 : TIM_CCER_CC1P); EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs EXTMODULE_TIMER->CCR1 = 0; EXTMODULE_TIMER->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0; // Force O/P high @@ -176,8 +176,8 @@ void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool i EXTMODULE_TIMER->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0; #endif - EXTMODULE_TIMER->ARR = 45000; - EXTMODULE_TIMER->CCR2 = 40000; // The first frame will be sent in 20ms + EXTMODULE_TIMER->ARR = period_half_us; + EXTMODULE_TIMER->CCR2 = period_half_us - 4000; EXTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag EXTMODULE_TIMER->DIER |= TIM_DIER_UDE | TIM_DIER_CC2IE; EXTMODULE_TIMER->CR1 |= TIM_CR1_CEN; @@ -330,7 +330,7 @@ void extmoduleSendNextFrame() case PROTOCOL_CHANNELS_MULTIMODULE: EXTMODULE_TIMER->CCR2 = *(extmodulePulsesData.dsm2.ptr - 1) - 4000; // 2mS in advance EXTMODULE_TIMER_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA - EXTMODULE_TIMER_DMA_STREAM->CR |= EXTMODULE_TIMER_DMA_CHANNEL | DMA_SxCR_DIR_0 | EXTMODULE_TIMER_DMA_SIZE | DMA_SxCR_MSIZE_1 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1; + EXTMODULE_TIMER_DMA_STREAM->CR |= EXTMODULE_TIMER_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | EXTMODULE_TIMER_DMA_SIZE | DMA_SxCR_PL_0 | DMA_SxCR_PL_1; EXTMODULE_TIMER_DMA_STREAM->PAR = CONVERT_PTR_UINT(&EXTMODULE_TIMER->ARR); EXTMODULE_TIMER_DMA_STREAM->M0AR = CONVERT_PTR_UINT(extmodulePulsesData.dsm2.pulses); EXTMODULE_TIMER_DMA_STREAM->NDTR = extmodulePulsesData.dsm2.ptr - extmodulePulsesData.dsm2.pulses; diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index a811610dc..10e169665 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -566,6 +566,7 @@ // Internal Module #define HARDWARE_INTERNAL_MODULE +#define EXTERNAL_ANTENNA #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2) #define INTMODULE_PWR_GPIO GPIOA #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PA.08 diff --git a/radio/src/targets/horus/pwr_driver.cpp b/radio/src/targets/horus/pwr_driver.cpp index 0a4ad4846..2bb89ddbb 100644 --- a/radio/src/targets/horus/pwr_driver.cpp +++ b/radio/src/targets/horus/pwr_driver.cpp @@ -18,7 +18,6 @@ * GNU General Public License for more details. */ -#include "pwr.h" #include "board.h" void pwrInit() @@ -67,12 +66,12 @@ void pwrInit() // TRAINER DETECT PIN GPIO_InitStructure.GPIO_Pin = TRAINER_DETECT_GPIO_PIN; GPIO_Init(TRAINER_DETECT_GPIO, &GPIO_InitStructure); - - pwrOn(); } void pwrOn() { + // we keep the init of the PIN to have pwrOn as quick as possible + GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = PWR_ON_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index 8c7b08528..3c528e743 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -602,7 +602,7 @@ class OpenTxSimulatorFactory: public SimulatorFactory virtual Board::Type type() { #if defined(PCBX12S) - return Board::BOARD_X12S; + return Board::BOARD_HORUS_X12S; #elif defined(PCBX10) return Board::BOARD_X10; #elif defined(PCBX7) @@ -612,7 +612,7 @@ class OpenTxSimulatorFactory: public SimulatorFactory #elif defined(PCBTARANIS) return Board::BOARD_TARANIS_X9D; #else - return Board::BOARD_STOCK; + return Board::BOARD_9X_M64; #endif } }; diff --git a/radio/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h index 7ba1f781b..c6625e760 100644 --- a/radio/src/targets/sky9x/board.h +++ b/radio/src/targets/sky9x/board.h @@ -258,7 +258,7 @@ extern "C" { #endif // WDT driver -#if defined(WATCHDOG_DISABLED) || defined(SIMU) +#if !defined(WATCHDOG) || defined(SIMU) #define wdt_enable(x) #define wdt_reset() #define IS_RESET_REASON_WATCHDOG() false diff --git a/radio/src/targets/sky9x/lcd_driver.cpp b/radio/src/targets/sky9x/lcd_driver.cpp index 31e1d12d1..d8453ebe1 100644 --- a/radio/src/targets/sky9x/lcd_driver.cpp +++ b/radio/src/targets/sky9x/lcd_driver.cpp @@ -115,7 +115,7 @@ void lcdInit() #if defined(REVX) // 200mS delay (only if not wdt reset) - if ( ( ( ResetReason & RSTC_SR_RSTTYP ) != (2 << 8) ) && !unexpectedShutdown ) { + if ( ( ( ResetReason & RSTC_SR_RSTTYP ) != (2 << 8) ) && !globalData.unexpectedShutdown ) { for (uint32_t j = 0; j < 100; j += 1 ) { TC0->TC_CHANNEL[0].TC_CCR = 5; // Enable clock and trigger it (may only need trigger) while ( TC0->TC_CHANNEL[0].TC_CV < 36000 ) { diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index ce5e207a8..c3539e08b 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -147,7 +147,7 @@ elseif(PCB STREQUAL XLITE) set(HAPTIC YES) set(LUA_EXPORT lua_export_xlite) set(FLAVOUR xlite) - add_definitions(-DPCBXLITE -DSOFTWARE_VOLUME -DEXTERNAL_ANTENNA -DSTICKS_PWM) + add_definitions(-DPCBXLITE -DSOFTWARE_VOLUME -DSTICKS_PWM) add_definitions(-DEEPROM_VARIANT=0x2000) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) set(PXX2 ON) @@ -167,7 +167,7 @@ elseif(PCB STREQUAL XLITES) set(HAPTIC YES) set(LUA_EXPORT lua_export_xlites) set(FLAVOUR xlites) - add_definitions(-DPCBXLITES -DPCBXLITE -DSOFTWARE_VOLUME -DEXTERNAL_ANTENNA -DSTICKS_PWM -DHARDWARE_POWER_MANAGEMENT_UNIT) + add_definitions(-DPCBXLITES -DPCBXLITE -DSOFTWARE_VOLUME -DSTICKS_PWM -DHARDWARE_POWER_MANAGEMENT_UNIT) add_definitions(-DEEPROM_VARIANT=0x1000) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) set(GUI_DIR 128x64) diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 773f2ff9e..a604672bc 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -405,7 +405,7 @@ enum EnumSwitchesPositions #define STORAGE_NUM_SWITCHES NUM_SWITCHES #define DEFAULT_SWITCH_CONFIG (SWITCH_TOGGLE << 14) + (SWITCH_3POS << 12) + (SWITCH_2POS << 10) + (SWITCH_3POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0) #define DEFAULT_POTS_CONFIG (POT_WITH_DETENT << 0) + (POT_WITH_DETENT << 2); - #define DEFAULT_SLIDERS_CONFIG (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 1) + (SLIDER_WITH_DETENT << 0) + #define DEFAULT_SLIDERS_CONFIG (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 1) + (SLIDER_WITH_DETENT << 0) #elif defined(PCBX9DP) && PCBREV >= 2019 #define NUM_SWITCHES 9 #define STORAGE_NUM_SWITCHES NUM_SWITCHES @@ -431,7 +431,7 @@ uint32_t readTrims(); // WDT driver #define WDTO_500MS 500 -#if defined(WATCHDOG_DISABLED) || defined(SIMU) +#if !defined(WATCHDOG) || defined(SIMU) #define wdt_enable(x) #define wdt_reset() #else diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index ea0d08f95..99acd429b 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -907,6 +907,9 @@ #if !defined(RADIO_T12) #define HARDWARE_INTERNAL_MODULE #endif +#if defined(PCBXLITE) +#define EXTERNAL_ANTENNA +#endif #if defined(PCBXLITES) || defined(PCBX9LITE) || (defined(PCBX9DP) && PCBREV >= 2019) #define INTERNAL_MODULE_PXX2 #else diff --git a/radio/src/targets/taranis/pwr_driver.cpp b/radio/src/targets/taranis/pwr_driver.cpp index 757a6ef06..997937d9f 100644 --- a/radio/src/targets/taranis/pwr_driver.cpp +++ b/radio/src/targets/taranis/pwr_driver.cpp @@ -75,6 +75,16 @@ void pwrInit() void pwrOn() { + // we keep the init of the PIN to have pwrOn as quick as possible + + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = PWR_ON_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(PWR_ON_GPIO, &GPIO_InitStructure); + GPIO_SetBits(PWR_ON_GPIO, PWR_ON_GPIO_PIN); } diff --git a/radio/src/targets/taranis/startup_stm32f40_41xxx.s b/radio/src/targets/taranis/startup_stm32f40_41xxx.s index 25fd9cf8c..95336855c 100644 --- a/radio/src/targets/taranis/startup_stm32f40_41xxx.s +++ b/radio/src/targets/taranis/startup_stm32f40_41xxx.s @@ -71,7 +71,9 @@ defined in linker script */ .type Reset_Handler, %function Reset_Handler: -/* Copy the data segment initializers from flash to SRAM */ + bl pwrResetHandler /*jump to WDT reset handler where soft power control pin is turned on as soon as possible */ + +/* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit @@ -111,8 +113,10 @@ LoopPaintMainStack: /* Call the clock system intitialization function.*/ bl SystemInit + /* Call C++ constructors for static objects */ - bl __libc_init_array + bl __libc_init_array + /* Call the application's entry point.*/ bl main bx lr diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index 0e95f2a59..06a006899 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -329,15 +329,12 @@ void stop_trainer_module_sbus() } #endif -uint32_t ccount = 0; - #if defined(SBUS) int sbusGetByte(uint8_t * byte) { switch (currentTrainerMode) { #if defined(TRAINER_MODULE_SBUS_USART) case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE: - ccount++; return trainerSbusFifo.pop(*byte); #endif #if defined(AUX_SERIAL_USART) diff --git a/radio/src/tasks.cpp b/radio/src/tasks.cpp index 17446d3a2..00e7d7b56 100644 --- a/radio/src/tasks.cpp +++ b/radio/src/tasks.cpp @@ -136,7 +136,7 @@ TASK_FUNCTION(mixerTask) uint32_t now = RTOS_GET_MS(); bool run = false; - if ((now - lastRunTime) >= 10) { + if (now - lastRunTime >= 10) { // run at least every 10ms run = true; } @@ -194,7 +194,8 @@ TASK_FUNCTION(mixerTask) } t0 = getTmr2MHz() - t0; - if (t0 > maxMixerDuration) maxMixerDuration = t0; + if (t0 > maxMixerDuration) + maxMixerDuration = t0; sendSynchronousPulses(); } @@ -231,7 +232,7 @@ TASK_FUNCTION(menusTask) opentxInit(); #if defined(PWR_BUTTON_PRESS) - while (1) { + while (true) { uint32_t pwr_check = pwrCheck(); if (pwr_check == e_power_off) { break; diff --git a/radio/src/tasks.h b/radio/src/tasks.h index 26b913f72..921958363 100644 --- a/radio/src/tasks.h +++ b/radio/src/tasks.h @@ -18,15 +18,15 @@ * GNU General Public License for more details. */ -#ifndef _TASKS_ARM_H_ -#define _TASKS_ARM_H_ +#ifndef _TASKS_H_ +#define _TASKS_H_ #include "rtos.h" // stack sizes should be in multiples of 8 for better alignment #define MENUS_STACK_SIZE 2000 -#define MIXER_STACK_SIZE 512 -#define AUDIO_STACK_SIZE 512 +#define MIXER_STACK_SIZE 400 +#define AUDIO_STACK_SIZE 400 #define CLI_STACK_SIZE 1000 // only consumed with CLI build option #define MIXER_TASK_PRIO 5 @@ -55,4 +55,4 @@ inline void resetForcePowerOffRequest() timeForcePowerOffPressed = 0; } -#endif // _TASKS_ARM_H_ +#endif // _TASKS_H_ diff --git a/radio/src/telemetry/crossfire.cpp b/radio/src/telemetry/crossfire.cpp index 4e2efd5e8..b233583a4 100644 --- a/radio/src/telemetry/crossfire.cpp +++ b/radio/src/telemetry/crossfire.cpp @@ -68,6 +68,9 @@ const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId) void processCrossfireTelemetryValue(uint8_t index, int32_t value) { + if(!TELEMETRY_STREAMING()) + return; + const CrossfireSensor & sensor = crossfireSensors[index]; setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, sensor.precision); } @@ -134,8 +137,14 @@ void processCrossfireTelemetryFrame() } processCrossfireTelemetryValue(i, value); if (i == RX_QUALITY_INDEX) { - telemetryData.rssi.set(value); - telemetryStreaming = TELEMETRY_TIMEOUT10ms; + if (value) { + telemetryData.rssi.set(value); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + } + else { + telemetryData.rssi.reset(); + telemetryStreaming = 0; + } } } } @@ -212,6 +221,11 @@ void processCrossfireTelemetryData(uint8_t data) if (telemetryRxBufferCount > 4) { uint8_t length = telemetryRxBuffer[1]; if (length + 2 == telemetryRxBufferCount) { +#if defined(BLUETOOTH) + if (g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY && bluetooth.state == BLUETOOTH_STATE_CONNECTED) { + bluetooth.write(telemetryRxBuffer, telemetryRxBufferCount); + } +#endif processCrossfireTelemetryFrame(); telemetryRxBufferCount = 0; } diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 3b7634ab4..f526478f6 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -209,7 +209,9 @@ class TelemetryData { TelemetryExpiringDecorator swrExternal; TelemetryFilterDecorator rssi; uint16_t xjtVersion; - bool varioHighPrecision; + uint8_t varioHighPrecision:1; + uint8_t telemetryValid:3; + uint8_t spare:4; void setSwr(uint8_t module, uint8_t value) { @@ -227,11 +229,6 @@ class TelemetryData { extern TelemetryData telemetryData; -inline bool TELEMETRY_STREAMING() -{ - return telemetryData.rssi.value() > 0; -} - inline uint8_t TELEMETRY_RSSI() { return telemetryData.rssi.value(); diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index 6cb3d1cf7..200728aad 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -216,7 +216,9 @@ void processResetFrame(uint8_t module, uint8_t * frame) void processTelemetryFrame(uint8_t module, uint8_t * frame) { uint8_t origin = (module << 2) + (frame[3] & 0x03); - sportProcessTelemetryPacketWithoutCrc(origin, &frame[4]); + if (origin != TELEMETRY_ENDPOINT_SPORT) { + sportProcessTelemetryPacketWithoutCrc(origin, &frame[4]); + } } void processSpectrumAnalyserFrame(uint8_t module, uint8_t * frame) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index abe52f61c..73c3ec324 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -85,14 +85,12 @@ const FrSkySportSensor sportSensors[] = { const FrSkySportSensor * getFrSkySportSensor(uint16_t id, uint8_t subId=0) { - const FrSkySportSensor * result = NULL; for (const FrSkySportSensor * sensor = sportSensors; sensor->firstId; sensor++) { if (id >= sensor->firstId && id <= sensor->lastId && subId == sensor->subId) { - result = sensor; - break; + return sensor; } } - return result; + return nullptr; } bool checkSportPacket(const uint8_t * packet) @@ -164,10 +162,27 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe #endif if (primId == DATA_FRAME) { + uint8_t originMask; + if (origin == TELEMETRY_ENDPOINT_SPORT) { + originMask = 0x04; + } + else { + uint8_t moduleIndex = (origin >> 2); + originMask = 0x01 << moduleIndex; + } uint8_t instance = physicalId + (origin << 5); if (dataId == RSSI_ID) { - telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected data = SPORT_DATA_U8(packet); + if (data > 0) { + telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected + telemetryData.telemetryValid |= originMask; + } + else { + telemetryData.telemetryValid &= ~originMask; + // one module may send RSSI(0) while the other is still streaming + // in this case we don't want to update telemetryData.rssi + return; + } if (g_model.rssiSource) { TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource - 1]; if (sensor->isSameInstance(PROTOCOL_TELEMETRY_FRSKY_SPORT, instance)) { @@ -194,7 +209,8 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe } } - if (TELEMETRY_STREAMING()/* because when Rx is OFF it happens that some old A1/A2 values are sent from the XJT module*/) { + // here we discard the frame if it comes from an origin which has RSSI = 0 (RxBt and RSSI are sent in a loop by the module in some situations) + if (TELEMETRY_STREAMING() && (telemetryData.telemetryValid & originMask)/* because when Rx is OFF it happens that some old A1/A2 values are sent from the XJT module*/) { if ((dataId >> 8) == 0) { // The old FrSky IDs processHubPacket(dataId, HUB_DATA_U16(packet)); @@ -203,6 +219,7 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe if (dataId == ADC1_ID || dataId == ADC2_ID || dataId == BATT_ID || dataId == RAS_ID) { data = SPORT_DATA_U8(packet); } + if (dataId >= GPS_LONG_LATI_FIRST_ID && dataId <= GPS_LONG_LATI_LAST_ID) { int32_t value = (data & 0x3fffffff); if (data & (1 << 30)) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index a1411ae65..02573a8bc 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -21,14 +21,9 @@ #include "opentx.h" uint8_t telemetryStreaming = 0; -uint8_t R9ModuleStreaming = 0; uint8_t telemetryRxBuffer[TELEMETRY_RX_PACKET_SIZE]; // Receive buffer. 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) uint8_t telemetryRxBufferCount = 0; -#if defined(WS_HOW_HIGH) -uint8_t wshhStreaming = 0; -#endif - uint8_t telemetryState = TELEMETRY_INIT; TelemetryData telemetryData; @@ -153,20 +148,21 @@ void telemetryWakeup() SCHEDULE_NEXT_ALARMS_CHECK(1/*second*/); - bool sensor_lost = false; + bool sensorLost = false; for (int i=0; i TELEMETRY_VALUE_OLD_THRESHOLD) { + if (item.timeout == 0) { TelemetrySensor * sensor = & g_model.telemetrySensors[i]; if (sensor->unit != UNIT_DATETIME) { item.setOld(); - sensor_lost = true; + sensorLost = true; } } } } - if (sensor_lost && TELEMETRY_STREAMING() && !g_model.rssiAlarms.disabled) { + + if (sensorLost && TELEMETRY_STREAMING() && !g_model.rssiAlarms.disabled) { audioEvent(AU_SENSOR_LOST); } @@ -210,43 +206,40 @@ void telemetryWakeup() void telemetryInterrupt10ms() { - - if (TELEMETRY_STREAMING()) { + if (telemetryStreaming > 0) { + bool tick160ms = (telemetryStreaming & 0x0F) == 0; for (int i=0; i 0) { + telemetryItems[i].timeout--; + } } - } - -#if defined(WS_HOW_HIGH) - if (wshhStreaming > 0) { - wshhStreaming--; - } -#endif - if (R9ModuleStreaming > 0) { - R9ModuleStreaming--; - } - if (telemetryStreaming > 0) { telemetryStreaming--; } else { #if !defined(SIMU) telemetryData.rssi.reset(); #endif + for (auto & telemetryItem: telemetryItems) { + if (telemetryItem.isAvailable()) { + telemetryItem.setOld(); + } + } } } void telemetryReset() { - memclear(&telemetryData, sizeof(telemetryData)); + telemetryData.clear(); - for (int index=0; index0 (true) == data is streaming in. 0 = no data detected for some time -extern uint8_t R9ModuleStreaming; // >0 (true) == R9 module is connected and sending data 0 = no data detected for some time -#if defined(WS_HOW_HIGH) -extern uint8_t wshhStreaming; -#endif +inline bool TELEMETRY_STREAMING() +{ + return telemetryStreaming > 0; +} enum TelemetryStates { TELEMETRY_INIT, @@ -43,7 +43,7 @@ enum TelemetryStates { }; extern uint8_t telemetryState; -#define TELEMETRY_TIMEOUT10ms 100 // 1 second +constexpr uint8_t TELEMETRY_TIMEOUT10ms = 100; // 1 second #define TELEMETRY_SERIAL_DEFAULT 0 #define TELEMETRY_SERIAL_8E2 1 @@ -144,9 +144,6 @@ void logTelemetryWriteByte(uint8_t data); #define LOG_TELEMETRY_WRITE_BYTE(data) #endif -#define TELEMETRY_ENDPOINT_NONE 0xFF -#define TELEMETRY_ENDPOINT_SPORT 0x07 - class OutputTelemetryBuffer { public: OutputTelemetryBuffer() diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index e627b89cd..8475eac54 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -120,7 +120,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 } } else if (unit == UNIT_DATETIME) { - uint32_t data = uint32_t(newVal); + auto data = uint32_t(newVal); if (data & 0x000000ff) { datetime.year = (uint16_t) ((data & 0xff000000) >> 24) + 2000; // SPORT GPS year is only two digits datetime.month = (uint8_t) ((data & 0x00ff0000) >> 16); @@ -150,7 +150,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 distFromEarthAxis = getDistFromEarthAxis(newVal); } gps.latitude = newVal; - lastReceived = now(); + setFresh(); return; } else if (unit == UNIT_GPS_LONGITUDE) { @@ -163,7 +163,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 pilotLongitude = newVal; } gps.longitude = newVal; - lastReceived = now(); + setFresh(); return; } else if (unit == UNIT_DATETIME_YEAR) { @@ -171,13 +171,13 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 return; } else if (unit == UNIT_DATETIME_DAY_MONTH) { - uint32_t data = uint32_t(newVal); + auto data = uint32_t(newVal); datetime.month = data >> 8; datetime.day = data & 0xFF; return; } else if (unit == UNIT_DATETIME_HOUR_MIN) { - uint32_t data = uint32_t(newVal); + auto data = uint32_t(newVal); datetime.hour = (data & 0xFF); datetime.min = data >> 8; return; @@ -193,7 +193,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 } else if (unit == UNIT_TEXT) { *((uint32_t*)&text[prec]) = newVal; - lastReceived = now(); + setFresh(); return; } else { @@ -252,7 +252,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 } value = newVal; - lastReceived = now(); + setFresh(); } void TelemetryItem::per10ms(const TelemetrySensor & sensor) @@ -266,7 +266,7 @@ void TelemetryItem::per10ms(const TelemetrySensor & sensor) return; } else if (currentItem.isOld()) { - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); return; } int32_t current = convertTelemetryValue(currentItem.value, currentSensor.unit, currentSensor.prec, UNIT_AMPS, 1); @@ -275,7 +275,7 @@ void TelemetryItem::per10ms(const TelemetrySensor & sensor) currentItem.consumption.prescale -= 3600; setValue(sensor, value+1, sensor.unit, sensor.prec); } - lastReceived = now(); + setFresh(); } break; @@ -291,7 +291,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) if (sensor.cell.source) { TelemetryItem & cellsItem = telemetryItems[sensor.cell.source-1]; if (cellsItem.isOld()) { - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); } else { unsigned int index = sensor.cell.index; @@ -340,7 +340,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) return; } else if (gpsItem.isOld()) { - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); return; } if (sensor.dist.alt) { @@ -349,7 +349,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) return; } else if (altItem->isOld()) { - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); return; } } @@ -413,7 +413,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) return; } else if (telemetryItem.isOld()) { - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); return; } } @@ -439,7 +439,7 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) if (sensor.formula == TELEM_FORMULA_AVERAGE) { if (count == 0) { if (available) - lastReceived = TELEMETRY_VALUE_OLD; + setOld(); return; } else { @@ -491,18 +491,18 @@ int lastUsedTelemetryIndex() int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) { - bool available = false; + bool sensorFound = false; for (int index=0; index> 4) & (TELEMETRY_VALUE_TIMER_CYCLE - 1); - } - TelemetryItem() { clear(); @@ -92,7 +85,7 @@ class TelemetryItem void clear() { memset(reinterpret_cast(this), 0, sizeof(TelemetryItem)); - lastReceived = TELEMETRY_VALUE_UNAVAILABLE; + timeout = TELEMETRY_SENSOR_TIMEOUT_UNAVAILABLE; } void eval(const TelemetrySensor & sensor); @@ -102,36 +95,38 @@ class TelemetryItem inline bool isAvailable() { - return (lastReceived != TELEMETRY_VALUE_UNAVAILABLE); + return (timeout != TELEMETRY_SENSOR_TIMEOUT_UNAVAILABLE); } inline bool isOld() { - return (lastReceived == TELEMETRY_VALUE_OLD); + return (timeout == TELEMETRY_SENSOR_TIMEOUT_OLD); } inline bool hasReceiveTime() { - return (lastReceived < TELEMETRY_VALUE_TIMER_CYCLE); + return timeout >= 0; } - inline uint8_t getDelaySinceLastValue() + inline int8_t getDelaySinceLastValue() { - // assumes lastReceived is not a special value (OLD / UNAVAILABLE) - return (now() - lastReceived) & (TELEMETRY_VALUE_TIMER_CYCLE - 1); + return hasReceiveTime() ? TELEMETRY_SENSOR_TIMEOUT_START - timeout : TELEMETRY_SENSOR_TIMEOUT_OLD; } inline bool isFresh() { - return (hasReceiveTime() && getDelaySinceLastValue() <= 1); + return TELEMETRY_SENSOR_TIMEOUT_START - timeout <= 1; // 2 * 160ms + } + + inline void setFresh() + { + timeout = TELEMETRY_SENSOR_TIMEOUT_START; } inline void setOld() { - lastReceived = TELEMETRY_VALUE_OLD; + timeout = TELEMETRY_SENSOR_TIMEOUT_OLD; } - - void gpsReceived(); // TODO seems not used }; extern TelemetryItem telemetryItems[MAX_TELEMETRY_SENSORS]; diff --git a/radio/src/tests/CMakeLists.txt b/radio/src/tests/CMakeLists.txt index 73e1b34b0..316f7a16c 100644 --- a/radio/src/tests/CMakeLists.txt +++ b/radio/src/tests/CMakeLists.txt @@ -1,28 +1,34 @@ -set(GTEST_ROOT /usr CACHE STRING "Base path to Google Test headers and source.") -find_path(GTEST_INCDIR gtest/gtest.h HINTS "${GTEST_ROOT}/include" DOC "Path to Google Test header files folder ('gtest/gtest.h').") -find_path(GTEST_SRCDIR src/gtest-all.cc HINTS "${GTEST_ROOT}" "${GTEST_ROOT}/src/gtest" DOC "Path of Google Test 'src' folder.") if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) add_library(gtests-radio-lib STATIC EXCLUDE_FROM_ALL ${GTEST_SRCDIR}/src/gtest-all.cc ) target_include_directories(gtests-radio-lib PUBLIC ${GTEST_INCDIR} ${GTEST_INCDIR}/gtest ${GTEST_SRCDIR}) - add_definitions(-DSIMU) - add_definitions(-DGTESTS) + add_definitions(-DSIMU -DGTESTS) remove_definitions(-DCLI) set(TESTS_PATH ${RADIO_SRC_DIRECTORY}/tests) + set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR}) configure_file(${RADIO_SRC_DIRECTORY}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS}") + use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1 if(PCB STREQUAL X12S OR PCB STREQUAL X10) - add_custom_command( - MAIN_DEPENDENCY ${TESTS_PATH}/model_22_x10.otx - OUTPUT ${TESTS_PATH}/model_22_x10/RADIO/radio.bin ${TESTS_PATH}/model_22_x10/RADIO/models.txt ${TESTS_PATH}/model_22_x10/MODELS/model1.bin - COMMAND mkdir -p model_22_x10 && cd model_22_x10 && unzip -o -DD ../model_22_x10.otx - WORKING_DIRECTORY ${TESTS_PATH} - ) - add_custom_target(x10-model-test-files - DEPENDS ${TESTS_PATH}/model_22_x10/RADIO/radio.bin ${TESTS_PATH}/model_22_x10/RADIO/models.txt ${TESTS_PATH}/model_22_x10/MODELS/model1.bin - ) + + set(EXTRACT_MODEL_FILES model_22_x12s model_22_x10) + + foreach(model_file ${EXTRACT_MODEL_FILES}) + add_custom_command( + DEPENDS ${TESTS_PATH}/${model_file}.otx + OUTPUT ${TESTS_BUILD_PATH}/${model_file}/RADIO/radio.bin + COMMAND mkdir -p ${model_file} && cd ${model_file} && unzip -o -q -DD ${TESTS_PATH}/${model_file}.otx >/dev/null + WORKING_DIRECTORY ${TESTS_BUILD_PATH} + ) + add_custom_target(${model_file}_files + DEPENDS ${TESTS_BUILD_PATH}/${model_file}/RADIO/radio.bin + ) + set(HORUS_MODEL_FILES ${HORUS_MODEL_FILES} ${model_file}_files) + endforeach() endif() if(WIN32) @@ -45,15 +51,11 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) # struct packing breaks on MinGW w/out -mno-ms-bitfields: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991 & http://stackoverflow.com/questions/24015852/struct-packing-and-alignment-with-mingw set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-ms-bitfields") endif() - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS}") - - use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1 add_executable(gtests-radio EXCLUDE_FROM_ALL ${TEST_SRC_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/location.h ${RADIO_SRC} ../targets/simu/simpgmspace.cpp ../targets/simu/simueeprom.cpp ../targets/simu/simufatfs.cpp) add_dependencies(gtests-radio ${FIRMWARE_DEPENDENCIES} gtests-radio-lib) if(PCB STREQUAL X12S OR PCB STREQUAL X10) - add_dependencies(gtests-radio x10-model-test-files) + add_dependencies(gtests-radio ${HORUS_MODEL_FILES}) endif() target_link_libraries(gtests-radio gtests-radio-lib pthread Qt5::Core Qt5::Widgets) message(STATUS "Added optional gtests target") diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index be5c3d96e..897d5cb59 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -45,19 +45,23 @@ TEST(Conversions, ConversionX9DPFrom22) EXPECT_EQ(8, g_eeGeneral.speakerVolume); EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); - + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); - + EXPECT_ZSTREQ("Test", g_model.header.name); EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); EXPECT_EQ(80, g_model.mixData[0].weight); - EXPECT_EQ(-100, g_model.limitData[0].max); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 EXPECT_EQ(80, g_model.expoData[0].weight); + EXPECT_EQ(CURVE_REF_CUSTOM, g_model.expoData[0].curve.type); + EXPECT_EQ(1, g_model.expoData[0].curve.value); + EXPECT_EQ(CURVE_REF_EXPO, g_model.expoData[1].curve.type); + EXPECT_EQ(20, g_model.expoData[1].curve.value); EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); @@ -69,6 +73,100 @@ TEST(Conversions, ConversionX9DPFrom22) EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.logicalSw[0].v1); } + +TEST(Conversions, ConversionX9DPFrom23) +{ + loadEEPROMFile(TESTS_PATH "/eeprom_23_x9d+.bin"); + + eepromOpen(); + eeLoadGeneralSettingsData(); + eeLoadModel(0); + + EXPECT_EQ(-30, g_eeGeneral.vBatMin); + EXPECT_EQ(8, g_eeGeneral.speakerVolume); + EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); + EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); + + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); + EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); + EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); + + EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); + EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); + + EXPECT_ZSTREQ("Test", g_model.header.name); + EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); + EXPECT_EQ(80, g_model.mixData[0].weight); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 + EXPECT_EQ(80, g_model.expoData[0].weight); + EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); + EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); + EXPECT_ZSTREQ("Test", g_model.flightModeData[0].name); + +#if defined(INTERNAL_MODULE_PXX2) + EXPECT_EQ(MODULE_TYPE_ISRM_PXX2, g_model.moduleData[INTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, g_model.moduleData[INTERNAL_MODULE].subType); +#else + EXPECT_EQ(MODULE_TYPE_NONE, g_model.moduleData[INTERNAL_MODULE].type); +#endif + + EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); + + EXPECT_ZSTREQ("Rud", g_model.inputNames[0]); + EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); + EXPECT_EQ(10, g_model.telemetrySensors[0].id); + EXPECT_EQ(10, g_model.telemetrySensors[0].frskyInstance.physID); + EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.logicalSw[0].v1); +} +#endif + +#if defined(PCBXLITE) && !defined(PCBXLITES) +TEST(Conversions, ConversionXLiteFrom22) +{ + loadEEPROMFile(TESTS_PATH "/eeprom_22_xlite.bin"); + + eepromOpen(); + eeLoadGeneralSettingsData(); + convertRadioData_218_to_219(g_eeGeneral); + eeConvertModel(0, 218); + eeLoadModel(0); + + EXPECT_EQ(-30, g_eeGeneral.vBatMin); + EXPECT_EQ(8, g_eeGeneral.speakerVolume); + EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); + EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); + + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); + EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); + EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); + + EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); + EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); + + EXPECT_ZSTREQ("Test", g_model.header.name); + EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); + EXPECT_EQ(80, g_model.mixData[0].weight); + EXPECT_EQ(80, g_model.expoData[0].weight); + EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[4].srcRaw); + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[4].swtch); + EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); + EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); + + EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); + EXPECT_EQ(10, g_model.telemetrySensors[0].id); + EXPECT_EQ(8, g_model.telemetrySensors[0].frskyInstance.physID); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 + + EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); + EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); + EXPECT_EQ(0, g_model.logicalSw[0].v2); + + EXPECT_EQ(TELEMETRY_SCREEN_TYPE_VALUES, g_model.screensType & 0x03); + EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.screens[0].lines[0].sources[0]); + EXPECT_EQ(MIXSRC_TIMER3, g_model.screens[0].lines[0].sources[1]); +} #endif #if defined(PCBX7) @@ -107,7 +205,7 @@ TEST(Conversions, ConversionX7From22) EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); EXPECT_EQ(10, g_model.telemetrySensors[0].id); EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); - EXPECT_EQ(-100, g_model.limitData[0].max); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); EXPECT_ZSTREQ("FMtest", g_model.flightModeData[1].name); @@ -127,7 +225,7 @@ TEST(Conversions, ConversionX7From22) #if defined(PCBX10) TEST(Conversions, ConversionX10From22) { - simuFatfsSetPaths(TESTS_PATH "/model_22_x10/", TESTS_PATH "/model_22_x10/"); + simuFatfsSetPaths(TESTS_BUILD_PATH "/model_22_x10/", TESTS_BUILD_PATH "/model_22_x10/"); loadRadioSettings("/RADIO/radio.bin"); loadModel("model1.bin"); @@ -172,7 +270,7 @@ TEST(Conversions, ConversionX10From22) EXPECT_EQ(MIXSRC_LS, g_model.mixData[3].srcRaw); // LS EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[5].srcRaw); EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[5].swtch); - EXPECT_EQ(-100, g_model.limitData[0].max); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 EXPECT_EQ(80, g_model.expoData[0].weight); EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); @@ -200,3 +298,70 @@ TEST(Conversions, ConversionX10From22) } #endif +#if defined(PCBX12S) +TEST(Conversions, ConversionX12SFrom22) +{ + simuFatfsSetPaths(TESTS_BUILD_PATH "/model_22_x12s/", TESTS_BUILD_PATH "/model_22_x12s/"); + + loadRadioSettings("/RADIO/radio.bin"); + loadModel("model1.bin"); + + EXPECT_EQ(219, g_eeGeneral.version); + EXPECT_EQ(-30, g_eeGeneral.vBatMin); + EXPECT_EQ(8, g_eeGeneral.speakerVolume); + EXPECT_STRNEQ("en", g_eeGeneral.ttsLanguage); + EXPECT_STRNEQ("model1.bin", g_eeGeneral.currModelFilename); + + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); + EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); + EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); + + EXPECT_EQ(SWSRC_ON, g_eeGeneral.customFn[1].swtch); + EXPECT_EQ(FUNC_VOLUME, g_eeGeneral.customFn[1].func); + EXPECT_EQ(MIXSRC_RS, g_eeGeneral.customFn[1].all.val); + + EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); + EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); + + EXPECT_ZSTREQ("BT", g_eeGeneral.bluetoothName); + EXPECT_STREQ("Default", g_eeGeneral.themeName); + + EXPECT_EQ(WHITE, g_eeGeneral.themeData.options[0].unsignedValue); + EXPECT_EQ(RED, g_eeGeneral.themeData.options[1].unsignedValue); + + EXPECT_ZSTREQ("Test", g_model.header.name); + EXPECT_EQ(0, g_model.noGlobalFunctions); + EXPECT_EQ(0, g_model.beepANACenter); + EXPECT_EQ(80, g_model.mixData[0].weight); + EXPECT_EQ(MIXSRC_MAX, g_model.mixData[2].srcRaw); // MAX + EXPECT_EQ(MIXSRC_LS, g_model.mixData[3].srcRaw); // LS + EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[5].srcRaw); + EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[5].swtch); + EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 + EXPECT_EQ(80, g_model.expoData[0].weight); + EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); + EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); + EXPECT_EQ(0, g_model.logicalSw[0].v2); + EXPECT_EQ(MIXSRC_FIRST_TELEM+19*3, g_model.logicalSw[1].v1); // TELE:20 + EXPECT_EQ(20, g_model.logicalSw[1].v2); + EXPECT_EQ(SWSRC_FIRST_LOGICAL_SWITCH, g_model.logicalSw[1].andsw); + EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); + EXPECT_ZSTREQ("Test", g_model.flightModeData[0].name); + EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); + EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); + EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); + EXPECT_ZSTREQ("Rud", g_model.inputNames[0]); + EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); + EXPECT_EQ(10, g_model.telemetrySensors[0].id); + EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); + EXPECT_EQ((NUM_POTS + NUM_SLIDERS + 3), g_model.thrTraceSrc); // CH3 + + EXPECT_STREQ("Layout2P1", g_model.screenData[0].layoutName); + EXPECT_STREQ("ModelBmp", g_model.screenData[0].layoutData.zones[0].widgetName); + EXPECT_STREQ("Value", g_model.topbarData.zones[0].widgetName); + EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.topbarData.zones[0].widgetData.options[0].unsignedValue); + EXPECT_EQ(MIXSRC_RS, g_model.screenData[0].layoutData.zones[2].widgetData.options[0].unsignedValue); +} +#endif + diff --git a/radio/src/tests/eeprom_22_x9d+.bin b/radio/src/tests/eeprom_22_x9d+.bin index 8145e55dc..8bc63bd4a 100644 Binary files a/radio/src/tests/eeprom_22_x9d+.bin and b/radio/src/tests/eeprom_22_x9d+.bin differ diff --git a/radio/src/tests/eeprom_22_xlite.bin b/radio/src/tests/eeprom_22_xlite.bin new file mode 100644 index 000000000..54affdd23 Binary files /dev/null and b/radio/src/tests/eeprom_22_xlite.bin differ diff --git a/radio/src/tests/eeprom_23_x9d+.bin b/radio/src/tests/eeprom_23_x9d+.bin new file mode 100644 index 000000000..902b22010 Binary files /dev/null and b/radio/src/tests/eeprom_23_x9d+.bin differ diff --git a/radio/src/tests/frsky.cpp b/radio/src/tests/frsky.cpp index e33668265..27fdedf8e 100644 --- a/radio/src/tests/frsky.cpp +++ b/radio/src/tests/frsky.cpp @@ -56,7 +56,8 @@ TEST(FrSky, Vfas_0x39_HiPrecision) MODEL_RESET(); TELEMETRY_RESET(); EXPECT_EQ(telemetryItems[0].value, 0); - + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; // normal precision, resolution 0.1V @@ -77,7 +78,8 @@ TEST(FrSky, HubAltNegative) MODEL_RESET(); TELEMETRY_RESET(); EXPECT_EQ(telemetryItems[0].value, 0); - + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; // altimeter auto offset @@ -122,6 +124,8 @@ TEST(FrSky, Gps) { MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; EXPECT_EQ(telemetryItems[0].value, 0); @@ -181,6 +185,8 @@ TEST(FrSkySPORT, FrSkyDCells) { MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; uint8_t pkt1[] = { 0x7E, 0x98, 0x10, 0x06, 0x00, 0x07, 0xD0, 0x00, 0x00, 0x12 }; @@ -209,6 +215,8 @@ TEST(FrSkySPORT, frskySetCellVoltage) MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; // test that simulates 3 cell battery @@ -300,6 +308,8 @@ TEST(FrSkySPORT, StrangeCellsBug) { MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; uint8_t pkt[] = { 0x7E, 0x48, 0x10, 0x00, 0x03, 0x30, 0x15, 0x50, 0x81, 0xD5 }; @@ -316,6 +326,8 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors) MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; //sensor 1: 3 cell battery @@ -387,6 +399,8 @@ TEST(FrSkySPORT, frskyVfas) MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; // tests for Vfas @@ -426,10 +440,13 @@ TEST(FrSkySPORT, frskyCurrent) MODEL_RESET(); TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; allowNewSensors = true; // tests for Curr - generateSportFasCurrentPacket(packet, 0); sportProcessTelemetryPacket(packet); + generateSportFasCurrentPacket(packet, 0); + sportProcessTelemetryPacket(packet); g_model.telemetrySensors[0].custom.offset = -5; /* unit: 1/10 amps */ generateSportFasCurrentPacket(packet, 0); sportProcessTelemetryPacket(packet); EXPECT_EQ(telemetryItems[0].value, 0); @@ -459,6 +476,8 @@ TEST(FrSkySPORT, frskyCurrent) // test with positive offset TELEMETRY_RESET(); + telemetryStreaming = TELEMETRY_TIMEOUT10ms; + telemetryData.telemetryValid = 0x07; g_model.telemetrySensors[0].custom.offset = +5; /* unit: 1/10 amps */ generateSportFasCurrentPacket(packet, 0); sportProcessTelemetryPacket(packet); diff --git a/radio/src/tests/location.h.in b/radio/src/tests/location.h.in index 359e110b1..e2eeac460 100644 --- a/radio/src/tests/location.h.in +++ b/radio/src/tests/location.h.in @@ -1 +1,2 @@ -#define TESTS_PATH "@TESTS_PATH@" +#define TESTS_PATH "@TESTS_PATH@" +#define TESTS_BUILD_PATH "@TESTS_BUILD_PATH@" diff --git a/radio/src/tests/mixer.cpp b/radio/src/tests/mixer.cpp index 2fa661ab1..eaf4a675b 100644 --- a/radio/src/tests/mixer.cpp +++ b/radio/src/tests/mixer.cpp @@ -441,8 +441,8 @@ TEST_F(MixerTest, SlowOnPhase) g_model.mixData[0].srcRaw = MIXSRC_MAX; g_model.mixData[0].weight = 100; g_model.mixData[0].flightModes = 0x2 + 0x4 + 0x8 + 0x10 /*only enabled in phase 0*/; - g_model.mixData[0].speedUp = SLOW_STEP*5; - g_model.mixData[0].speedDown = SLOW_STEP*5; + g_model.mixData[0].speedUp = 50; + g_model.mixData[0].speedDown = 50; s_mixer_first_run_done = true; mixerCurrentFlightMode = 0; @@ -468,8 +468,8 @@ TEST_F(MixerTest, SlowOnSwitchSource) int switchIndex = 0; #endif g_model.mixData[0].weight = 100; - g_model.mixData[0].speedUp = SLOW_STEP*5; - g_model.mixData[0].speedDown = SLOW_STEP*5; + g_model.mixData[0].speedUp = 50; + g_model.mixData[0].speedDown = 50; s_mixer_first_run_done = true; @@ -487,8 +487,8 @@ TEST_F(MixerTest, SlowDisabledOnStartup) g_model.mixData[0].mltpx = MLTPX_ADD; g_model.mixData[0].srcRaw = MIXSRC_MAX; g_model.mixData[0].weight = 100; - g_model.mixData[0].speedUp = SLOW_STEP*5; - g_model.mixData[0].speedDown = SLOW_STEP*5; + g_model.mixData[0].speedUp = 50; + g_model.mixData[0].speedDown = 50; evalFlightModeMixes(e_perout_mode_normal, 0); EXPECT_EQ(chans[0], CHANNEL_MAX); @@ -507,8 +507,8 @@ TEST_F(MixerTest, DelayOnSwitch) g_model.mixData[0].swtch = SWSRC_THR; int switch_index = 1; #endif - g_model.mixData[0].delayUp = DELAY_STEP*5; - g_model.mixData[0].delayDown = DELAY_STEP*5; + g_model.mixData[0].delayUp = 50; + g_model.mixData[0].delayDown = 50; evalFlightModeMixes(e_perout_mode_normal, 0); EXPECT_EQ(chans[0], 0); @@ -537,8 +537,8 @@ TEST_F(MixerTest, SlowOnMultiply) g_model.mixData[1].srcRaw = MIXSRC_MAX; g_model.mixData[1].weight = 100; g_model.mixData[1].swtch = TR(SWSRC_THR, SWSRC_SA0); - g_model.mixData[1].speedUp = SLOW_STEP*5; - g_model.mixData[1].speedDown = SLOW_STEP*5; + g_model.mixData[1].speedUp = 50; + g_model.mixData[1].speedDown = 50; s_mixer_first_run_done = true; @@ -653,8 +653,8 @@ TEST(Trainer, UnpluggedTest) g_model.mixData[0].mltpx = MLTPX_ADD; g_model.mixData[0].srcRaw = MIXSRC_FIRST_TRAINER; g_model.mixData[0].weight = 100; - g_model.mixData[0].delayUp = DELAY_STEP*5; - g_model.mixData[0].delayDown = DELAY_STEP*5; + g_model.mixData[0].delayUp = 50; + g_model.mixData[0].delayDown = 50; ppmInputValidityTimer = 0; ppmInput[0] = 1024; CHECK_DELAY(0, 5000); diff --git a/radio/src/tests/model_22_x10.otx b/radio/src/tests/model_22_x10.otx index e81996c2b..c796f181e 100644 Binary files a/radio/src/tests/model_22_x10.otx and b/radio/src/tests/model_22_x10.otx differ diff --git a/radio/src/tests/model_22_x12s.otx b/radio/src/tests/model_22_x12s.otx new file mode 100644 index 000000000..ac4033662 Binary files /dev/null and b/radio/src/tests/model_22_x12s.otx differ diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 0f1358597..8de4cb725 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -30,7 +30,6 @@ ISTR(TRNCHN); ISTR(VTRIMINC); ISTR(VDISPLAYTRIMS); ISTR(RETA123); -ISTR(VPROTOS); ISTR(VBLMODE); ISTR(VCURVEFUNC); ISTR(VMLTPX); @@ -76,11 +75,11 @@ ISTR(VSENSORTYPES); ISTR(VFORMULAS); ISTR(VPREC); ISTR(VCELLINDEX); -ISTR(VANTENNATYPES); ISTR(AUX_SERIAL_MODES); ISTR(SWTYPES); ISTR(POTTYPES); ISTR(SLIDERTYPES); +ISTR(ANTENNA_MODES); #if defined(PCBSKY9X) && defined(REVX) ISTR(VOUTPUT_TYPE); @@ -128,6 +127,7 @@ const char STR_SWITCH[] = TR_SWITCH; const char STR_TRIMS[] = TR_TRIMS; const char STR_FADEIN[] = TR_FADEIN; const char STR_FADEOUT[] = TR_FADEOUT; +const char STR_DEFAULT[] = TR_DEFAULT; const char STR_CHECKTRIMS[] = TR_CHECKTRIMS; const char STR_MODE[] = TR_MODE; const char STR_NOFREEEXPO[] = TR_NOFREEEXPO; @@ -142,6 +142,7 @@ const char STR_CURVE[] = TR_CURVE; const char STR_FLMODE[] = TR_FLMODE; const char STR_MIXWARNING[] = TR_MIXWARNING; const char STR_OFF[] = TR_OFF; +const char STR_ANTENNA[] = TR_ANTENNA; const char STR_NO_INFORMATION[] = TR_NO_INFORMATION; const char STR_MULTPX[] = TR_MULTPX; const char STR_DELAYDOWN[] = TR_DELAYDOWN; @@ -226,8 +227,8 @@ const char STR_MENULOGICALSWITCH[] = TR_MENULOGICALSWITCH; const char STR_MENULOGICALSWITCHES[] = TR_MENULOGICALSWITCHES; const char STR_MENUCUSTOMFUNC[] = TR_MENUCUSTOMFUNC; const char STR_SPLASHSCREEN[] = TR_SPLASHSCREEN; -const char STR_PWR_ON_SPEED[] = TR_PWR_ON_SPEED; -const char STR_PWR_OFF_SPEED[] = TR_PWR_OFF_SPEED; +const char STR_PWR_ON_DELAY[] = TR_PWR_ON_DELAY; +const char STR_PWR_OFF_DELAY[] = TR_PWR_OFF_DELAY; const char STR_THROTTLEWARNING[] = TR_THROTTLEWARNING; const char STR_SWITCHWARNING[] = TR_SWITCHWARNING; const char STR_POTWARNINGSTATE[] = TR_POTWARNINGSTATE; @@ -459,13 +460,14 @@ const char STR_BINDING_1_8_TELEM_OFF[] = TR_BINDING_CH1_8_TELEM_OFF; const char STR_BINDING_9_16_TELEM_ON[] = TR_BINDING_CH9_16_TELEM_ON; const char STR_BINDING_9_16_TELEM_OFF[] = TR_BINDING_CH9_16_TELEM_OFF; const char STR_CHANNELRANGE[] = TR_CHANNELRANGE; -const char STR_ANTENNASELECTION[] = TR_ANTENNASELECTION; const char STR_ANTENNACONFIRM1[] = TR_ANTENNACONFIRM1; const char STR_ANTENNACONFIRM2[] = TR_ANTENNACONFIRM2; +const char STR_USE_INTERNAL_ANTENNA[] = TR_USE_INTERNAL_ANTENNA; +const char STR_USE_EXTERNAL_ANTENNA[] = TR_USE_EXTERNAL_ANTENNA; const char STR_MODULE_PROTOCOL_FLEX_WARN_LINE1[] = TR_MODULE_PROTOCOL_FLEX_WARN_LINE1; -const char STR_R9M_PROTO_FCC_WARN_LINE1[] = TR_R9M_PROTO_FCC_WARN_LINE1; -const char STR_R9M_PROTO_EU_WARN_LINE1[] = TR_R9M_PROTO_EU_WARN_LINE1; -const char STR_R9M_PROTO_WARN_LINE2[] = TR_R9M_PROTO_WARN_LINE2; +const char STR_MODULE_PROTOCOL_FCC_WARN_LINE1[] = TR_MODULE_PROTOCOL_FCC_WARN_LINE1; +const char STR_MODULE_PROTOCOL_EU_WARN_LINE1[] = TR_MODULE_PROTOCOL_EU_WARN_LINE1; +const char STR_MODULE_PROTOCOL_WARN_LINE2[] = TR_MODULE_PROTOCOL_WARN_LINE2; const char STR_SET[] = TR_SET; const char STR_PREFLIGHT[] = TR_PREFLIGHT; const char STR_CHECKLIST[] = TR_CHECKLIST; @@ -667,6 +669,7 @@ const char STR_MULTI_RFTUNE[] = TR_MULTI_RFTUNE; const char STR_MULTI_TELEMETRY[] = TR_MULTI_TELEMETRY; const char STR_MULTI_VIDFREQ[] = TR_MULTI_VIDFREQ; const char STR_MULTI_OPTION[] = TR_MULTI_OPTION; +const char STR_MULTI_FIXEDID[] = TR_MULTI_FIXEDID; const char STR_MULTI_AUTOBIND[] = TR_MULTI_AUTOBIND; const char STR_MULTI_DSM_AUTODTECT[] = TR_MULTI_DSM_AUTODTECT; const char STR_MULTI_LOWPOWER[] = TR_MULTI_LOWPOWER; diff --git a/radio/src/translations.h b/radio/src/translations.h index f7f02b285..a6d803f9c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -106,7 +106,6 @@ extern const char STR_SLIDERTYPES[]; extern const char STR_VTRIMINC[]; extern const char STR_VDISPLAYTRIMS[]; extern const char STR_RETA123[]; -extern const char STR_VPROTOS[]; #if defined(PCBSKY9X) && defined(REVX) extern const char STR_VOUTPUT_TYPE[]; @@ -175,7 +174,6 @@ extern const char STR_VSENSORTYPES[]; extern const char STR_VFORMULAS[]; extern const char STR_VPREC[]; extern const char STR_VCELLINDEX[]; -extern const char STR_VANTENNATYPES[]; #if defined(BLUETOOTH) extern const char STR_BLUETOOTH[]; @@ -227,6 +225,7 @@ extern const char STR_SWITCH[]; extern const char STR_TRIMS[]; extern const char STR_FADEIN[]; extern const char STR_FADEOUT[]; +extern const char STR_DEFAULT[]; extern const char STR_CHECKTRIMS[]; extern const char STR_SWASHTYPE[]; extern const char STR_COLLECTIVE[]; @@ -255,6 +254,7 @@ extern const char STR_CURVE[]; extern const char STR_FLMODE[]; extern const char STR_MIXWARNING[]; extern const char STR_OFF[]; +extern const char STR_ANTENNA[]; extern const char STR_NO_INFORMATION[]; extern const char STR_MULTPX[]; extern const char STR_DELAYDOWN[]; @@ -303,8 +303,8 @@ extern const char STR_BLOFFBRIGHTNESS[]; extern const char STR_SPLASHSCREEN[]; #if defined(PWR_BUTTON_PRESS) -extern const char STR_PWR_ON_SPEED[]; -extern const char STR_PWR_OFF_SPEED[]; +extern const char STR_PWR_ON_DELAY[]; +extern const char STR_PWR_OFF_DELAY[]; #endif extern const char STR_THROTTLEWARNING[]; extern const char STR_SWITCHWARNING[]; @@ -393,6 +393,7 @@ extern const char STR_GF[]; #if defined(MULTIMODULE) extern const char STR_MULTI_CUSTOM[]; +extern const char STR_MULTI_FIXEDID[]; extern const char STR_MULTI_OPTION[]; extern const char STR_MULTI_VIDFREQ[]; extern const char STR_MULTI_RFTUNE[]; @@ -743,10 +744,13 @@ extern const char STR_RXFREQUENCY[]; extern const char STR_ANTENNASELECTION[]; extern const char STR_ANTENNACONFIRM1[]; extern const char STR_ANTENNACONFIRM2[]; +extern const char STR_ANTENNA_MODES[]; +extern const char STR_USE_INTERNAL_ANTENNA[]; +extern const char STR_USE_EXTERNAL_ANTENNA[]; extern const char STR_MODULE_PROTOCOL_FLEX_WARN_LINE1[]; -extern const char STR_R9M_PROTO_FCC_WARN_LINE1[]; -extern const char STR_R9M_PROTO_EU_WARN_LINE1[]; -extern const char STR_R9M_PROTO_WARN_LINE2[]; +extern const char STR_MODULE_PROTOCOL_FCC_WARN_LINE1[]; +extern const char STR_MODULE_PROTOCOL_EU_WARN_LINE1[]; +extern const char STR_MODULE_PROTOCOL_WARN_LINE2[]; extern const char STR_SET[]; extern const char STR_PREFLIGHT[]; extern const char STR_CHECKLIST[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 0c82dbf8f..be8e767e3 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -128,24 +128,6 @@ #define TR_RETA123 "SVPK123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -392,14 +374,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Nízký\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Nejvíce""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\007" -#define TR_VANTENNATYPES "Interní""Externí" -#else -#define LEN_VANTENNATYPES "\007" -#define TR_VANTENNATYPES "Interní""Ext+Int" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -501,6 +475,7 @@ #define TR_FLMODE "Režim" #define TR_MIXWARNING "Varování" #define TR_OFF "VYP" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("Není info.", "Žádná informace") #define TR_MULTPX TR("Mat.operace", "Operace") #define TR_DELAYDOWN TR3("Zpoždění Vyp", "Zdržet(x)", "Zpoždění Vyp") @@ -550,8 +525,8 @@ #define TR_BLOFFBRIGHTNESS TR3(INDENT"Jas Vyp.", INDENT"Jas Vyp.", INDENT"Jas vypnutého LCD") #define TR_BLCOLOR INDENT "Barva" #define TR_SPLASHSCREEN TR("úvodní logo", "Zobrazit úvodní logo") -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR("* Plyn", INDENT "Kontrola plynu") #define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy spínačů") #define TR_POTWARNINGSTATE TR("* Pot&Slid.", INDENT "Kontrola Pot&Slid.") @@ -659,6 +634,7 @@ #define TR_MULTI_TELEMETRY "Telemetrie" #define TR_MULTI_VIDFREQ TR(INDENT "Freq. videa", INDENT "Frekvence videa") #define TR_RFPOWER INDENT "Výkon RF" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR(INDENT "Možnosti", INDENT "Hodnota") #define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind při zapnutí") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetekce", INDENT "Formát autodetekce") @@ -945,13 +921,21 @@ #define TR_UNIT "Jednotky" #define TR_TELEMETRY_NEWSENSOR INDENT "Přidat senzor ručně" #define TR_CHANNELRANGE TR(INDENT "Kanály", INDENT "Rozsah kanálů") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Volba antény") #define TR_ANTENNACONFIRM1 "Opravdu přepnout?" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Zkont. anténu", "Ujisti se že je anténa připojena!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Vyžaduje FLEX" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Vyžaduje FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Vyžaduje EU" -#define TR_R9M_PROTO_WARN_LINE2 "firmware." +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Vyžaduje FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Vyžaduje EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "firmware." #define TR_LOWALARM INDENT "Nízký Alarm" #define TR_CRITICALALARM INDENT "Kritický Alarm" #define TR_RSSIALARM_WARN TR("RSSI","RSSI TELEMETRIE") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 28e8c5072..5dae3c278 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -20,7 +20,7 @@ */ // DE translations author: Helmut Renz -// German checked 01.07.2016 r122 opentx V2.2.0 für X12S,X9E, X9D+,X9D,Th9,9XR,9XR-Pro +// German checked 28.08.2019 r158 opentx V2.3.0 für X12S,X10,X9E,X9D+,X9D,QX7 X9Lite,XLite /* * !!!!! DO NOT EDIT de.h - EDIT de.h.txt INSTEAD !!!!!!! * @@ -43,280 +43,245 @@ // NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "AUS""EIN" +#define LEN_OFFON "\003" +#define TR_OFFON "AUS""EIN" -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" +#define LEN_MMMINV "\003" +#define TR_MMMINV "---""INV" -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Stumm""Alarm""NoKey""Alle\0" +#define LEN_VBEEPMODE "\005" +#define TR_VBEEPMODE "Stumm""Alarm""NoKey""Alle\0" -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "AUSDGaDGb" +#define LEN_VRENAVIG "\003" +#define TR_VRENAVIG "AUSDGaDGb" -#define LEN_VBLMODE "\005" -#define TR_VBLMODE "AUS\0 ""Taste""Stks\0""Beide""EIN\0 " // Anpassung +#define LEN_VBLMODE "\005" +#define TR_VBLMODE "AUS\0 ""Taste""Stks\0""Beide""EIN\0 " // Anpassung -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "AUS"" +="" :=" +#define LEN_TRNMODE "\003" +#define TR_TRNMODE "AUS"" +="" :=" -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" +#define LEN_TRNCHN "\003" +#define TR_TRNCHN "CH1CH2CH3CH4" -#define LEN_AUX_SERIAL_MODES "\015" +#define LEN_AUX_SERIAL_MODES "\015" #if defined(CLI) || defined(DEBUG) -#define TR_AUX_SERIAL_MODES "Debug\0 ""Telem Mirror\0""Telemetry In\0""SBUS Eingang\0""LUA\0 " +#define TR_AUX_SERIAL_MODES "Debug\0 ""Telem Mirror\0""Telemetry In\0""SBUS Eingang\0""LUA\0 " #else -#define TR_AUX_SERIAL_MODES "AUS\0 ""Telem Mirror\0""Telemetry In\0""SBUS Eingang\0""LUA\0 " +#define TR_AUX_SERIAL_MODES "AUS\0 ""Telem Mirror\0""Telemetry In\0""SBUS Eingang\0""LUA\0 " #endif -#define LEN_SWTYPES "\006" -#define TR_SWTYPES "Kein\0 ""Taster""2POS\0 ""3POS\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "Kein\0 ""Taster""2POS\0 ""3POS\0" -#define LEN_POTTYPES TR("\013","\017") -#define TR_POTTYPES TR("None\0 ""Pot w. det\0""Multipos\0 ""Pot\0 ", "Kein\0 ""Poti mit Raste ""Stufen-Schalter""Poti ohne Raste\0") +#define LEN_POTTYPES TR("\013","\017") +#define TR_POTTYPES TR("None\0 ""Pot w. det\0""Multipos\0 ""Pot\0 ", "Kein\0 ""Poti mit Raste ""Stufen-Schalter""Poti ohne Raste\0") -#define LEN_SLIDERTYPES "\006" -#define TR_SLIDERTYPES "Keine\0""Slider" +#define LEN_SLIDERTYPES "\006" +#define TR_SLIDERTYPES "Keine\0""Slider" -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" +#define LEN_VLCD "\006" +#define TR_VLCD "NormalOptrex" -#define LEN_VPERSISTENT "\014" -#define TR_VPERSISTENT "AUS\0 ""Flugzeit\0 ""Manuell Ruck" +#define LEN_VPERSISTENT "\014" +#define TR_VPERSISTENT "AUS\0 ""Flugzeit\0 ""Manuell Ruck" -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") +#define LEN_COUNTRYCODES TR("\002", "\007") +#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") -#define LEN_USBMODES TR("\006", "\010") -#define TR_USBMODES TR("Fragen""Joyst\0""SDCard""Serial", "Fragen\0 ""Joystick""Speicher""Seriell\0") +#define LEN_USBMODES TR("\006", "\010") +#define TR_USBMODES TR("Fragen""Joyst\0""SDCard""Serial", "Fragen\0 ""Joystick""Speicher""Seriell\0") #define LEN_JACKMODES "\007" #define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer" -#define LEN_TELEMETRY_PROTOCOLS "\017" -#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (Kabel)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" +#define LEN_TELEMETRY_PROTOCOLS "\017" +#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (Kabel)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" -#define TR_MULTI_CUSTOM "Custom" +#define TR_MULTI_CUSTOM "Custom" -#define LEN_VTRIMINC TR("\007", "\014") // ursprüglich "\006", "\013" -#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ", "Exponentiell""Extrafein ""Fein ""Mittel ""Grob ") +#define LEN_VTRIMINC TR("\007", "\014") // ursprüglich "\006", "\013" +#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ", "Exponentiell""Extrafein ""Fein ""Mittel ""Grob ") -#define LEN_VDISPLAYTRIMS "\006" -#define TR_VDISPLAYTRIMS "Nein\0 ""Kurz\0 ""Ja\0" //Trimmwerte Keine, kurze Anzeigen, Ja +#define LEN_VDISPLAYTRIMS "\006" +#define TR_VDISPLAYTRIMS "Nein\0 ""Kurz\0 ""Ja\0" //Trimmwerte Keine, kurze Anzeigen, Ja -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "Kein\0 ""Pieps\0""Stimme""Haptik" +#define LEN_VBEEPCOUNTDOWN "\006" +#define TR_VBEEPCOUNTDOWN "Kein\0 ""Pieps\0""Stimme""Haptik" #define LEN_COUNTDOWNVALUES "\003" #define TR_COUNTDOWNVALUES "5s\0""10s""20s""30s" -#define LEN_VVARIOCENTER "\006" -#define TR_VVARIOCENTER "Ton\0 ""Ruhe " +#define LEN_VVARIOCENTER "\006" +#define TR_VVARIOCENTER "Ton\0 ""Ruhe " -#define LEN_CURVE_TYPES "\010" -#define TR_CURVE_TYPES " Nur Y "" X und Y" //"Standard""Custom\0" +#define LEN_CURVE_TYPES "\010" +#define TR_CURVE_TYPES " Nur Y "" X und Y" //"Standard""Custom\0" -#define LEN_RETA123 "\001" +#define LEN_RETA123 "\001" #if defined(PCBHORUS) - #define TR_RETA123 "SHGQ12345LR" + #define TR_RETA123 "SHGQ12345LR" #elif defined(PCBX9E) - #define TR_RETA123 "SHGQ1234LRLR" + #define TR_RETA123 "SHGQ1234LRLR" #elif defined(PCBTARANIS) || defined(REVX) - #define TR_RETA123 "SHGQ123LR" + #define TR_RETA123 "SHGQ123LR" #elif defined(PCBSKY9X) - #define TR_RETA123 "SHGQ123a" + #define TR_RETA123 "SHGQ123a" #else - #define TR_RETA123 "SHGQ123" + #define TR_RETA123 "SHGQ123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) - #define LEN_VOUTPUT_TYPE "\011" - #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" + #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|" +#define LEN_VCURVEFUNC "\003" +#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" -#define LEN_VMLTPX "\010" -#define TR_VMLTPX "Addiere ""Multipl.""Ersetze " +#define LEN_VMLTPX "\010" +#define TR_VMLTPX "Addiere ""Multipl.""Ersetze " -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" +#define LEN_VMLTPX2 "\002" +#define TR_VMLTPX2 "+=""*="":=" -#define LEN_VMIXTRIMS "\003" +#define LEN_VMIXTRIMS "\003" #if defined(PCBHORUS) - #define TR_VMIXTRIMS "AUS""EIN""Sei""Höh""Gas""Que""T5\0""T6\0" + #define TR_VMIXTRIMS "AUS""EIN""Sei""Höh""Gas""Que""T5\0""T6\0" #else - #define TR_VMIXTRIMS "AUS""EIN""Sei""Höh""Gas""Que" + #define TR_VMIXTRIMS "AUS""EIN""Sei""Höh""Gas""Que" #endif #if LCD_W >= 212 - #define TR_CSWTIMER "Takt\0" // TIM = Takt = Taktgenerator - #define TR_CSWSTICKY "SRFF\0" // Sticky = RS-Flip-Flop - #define TR_CSWRANGE "Range" // Range = Bereichsabfrage von bis - #define TR_CSWSTAY "Puls\0" // Edge = einstellbarer Impuls + #define TR_CSWTIMER "Takt\0" // TIM = Takt = Taktgenerator + #define TR_CSWSTICKY "SRFF\0" // Sticky = RS-Flip-Flop + #define TR_CSWRANGE "Range" // Range = Bereichsabfrage von bis + #define TR_CSWSTAY "Puls\0" // Edge = einstellbarer Impuls #else - #define TR_CSWTIMER "Takt\0" // TIM = Takt = Taktgenerator - #define TR_CSWSTICKY "SRFF\0" // Sticky = RS-Flip-Flop - #define TR_CSWRANGE "Rnge\0" // Range= Bereichsabfrage von bis - #define TR_CSWSTAY "Puls\0" // Edge = einstellbarer Impuls + #define TR_CSWTIMER "Takt\0" // TIM = Takt = Taktgenerator + #define TR_CSWSTICKY "SRFF\0" // Sticky = RS-Flip-Flop + #define TR_CSWRANGE "Rnge\0" // Range= Bereichsabfrage von bis + #define TR_CSWSTAY "Puls\0" // Edge = einstellbarer Impuls #endif -#define TR_CSWEQUAL "a=x\0 " +#define TR_CSWEQUAL "a=x\0 " -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""ax""|a|b\0 ""ax\0 ""ax""|a|b\0 ""a= 212 - #define TR_SF_SAFETY "Override\0 " //"Override\0 " + #define TR_SF_SAFETY "Override\0 " //"Override\0 " #elif defined(OVERRIDE_CHANNEL_FUNCTION) - #define TR_SF_SAFETY "Overr.\0 " //"Overr.\0 " + #define TR_SF_SAFETY "Overr.\0 " //"Overr.\0 " #else - #define TR_SF_SAFETY "---\0 " + #define TR_SF_SAFETY "---\0 " #endif -#define TR_SF_SCREENSHOT "Screenshot" -#define TR_SF_RESERVE "[Reserve]\0" +#define TR_SF_SCREENSHOT "Screenshot" +#define TR_SF_RESERVE "[Reserve]\0" -#define TR_VFSWFUNC TR_SF_SAFETY "Lehrer \0 ""Inst. Trim""Rücksetz.\0""Setze \0 " TR_ADJUST_GVAR "Lautstr.\0 " "SetFailsfe" "RangeCheck" "ModuleBind" TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_SF_RESERVE TR_SF_PLAY_SCRIPT TR_SF_RESERVE TR_SF_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_SF_SCREENSHOT TR_SF_TEST +#define TR_VFSWFUNC TR_SF_SAFETY "Lehrer \0 ""Inst. Trim""Rücksetz.\0""Setze \0 " TR_ADJUST_GVAR "Lautstr.\0 " "SetFailsfe" "RangeCheck" "ModuleBind" TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_SF_RESERVE TR_SF_PLAY_SCRIPT TR_SF_RESERVE TR_SF_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_SF_SCREENSHOT TR_SF_TEST -#define LEN_VFSWRESET TR("\004", "\011") +#define LEN_VFSWRESET TR("\004", "\011") -#define TR_FSW_RESET_TELEM TR("Telm", "Telemetrie") +#define TR_FSW_RESET_TELEM TR("Telm", "Telemetrie") #if LCD_W >= 212 - #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " + #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #else - #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" + #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #endif -#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM) +#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM) -#define LEN_FUNCSOUNDS TR("\004", "\006") -#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Piep1\0""Piep2\0""Piep3\0""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") +#define LEN_FUNCSOUNDS TR("\004", "\006") +#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Piep1\0""Piep2\0""Piep3\0""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") -#define LEN_VTELEMCHNS "\004" +#define LEN_VTELEMCHNS "\004" - #define TR_TELEM_RESERVE TR("[--]", "[---]") - #define TR_TELEM_TIME TR("Zeit", "Zeit\0") - #define TR_RAS TR("SWR\0", "SWR\0 ") - #define TR_RX_BATT TR("[NA]", "[NA]\0") - #define TR_A3_A4 TR("A3\0 ""A4\0 ", "A3\0 ""A4\0 ") - #define TR_A3_A4_MIN TR("A3-\0""A4-\0", "A3-\0 ""A4-\0 ") +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" -#define TR_ASPD_MAX TR("ASp+", "ASpd+") + #define LEN_VUNITSSYSTEM TR("\006", "\012") + #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial\0 ") + #define LEN_VTELEMUNIT "\003" + #define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""mW\0""dB\0""rpm""g\0 ""@\0 ""rad""ml\0""fOz" -#if LCD_W >= 212 - #define TR_TELEM_RSSI_RX "RSSI\0" -#else - #define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ") -#endif +#define STR_V (STR_VTELEMUNIT+1) +#define STR_A (STR_VTELEMUNIT+4) - #define TR_TELEM_TIMERS TR("Tmr1""Tmr2""Tmr3", "Tmr1\0""Tmr2\0""Tmr3\0") +#define LEN_VTELEMSCREENTYPE "\007" +#define TR_VTELEMSCREENTYPE " None "" Werte "" Balken"" Script" -#define LENGTH_UNIT_IMP "ft\0" -#define SPEED_UNIT_IMP "mph" -#define LENGTH_UNIT_METR "m\0 " -#define SPEED_UNIT_METR "kmh" +#define LEN_GPSFORMAT "\004" +#define TR_GPSFORMAT "GMS\0""NMEA" //Koordinatenanzeige - #define LEN_VUNITSSYSTEM TR("\006", "\012") - #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial\0 ") - #define LEN_VTELEMUNIT "\003" - #define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""mW\0""dB\0""rpm""g\0 ""@\0 ""rad""ml\0""fOz" - -#define STR_V (STR_VTELEMUNIT+1) -#define STR_A (STR_VTELEMUNIT+4) - -#define LEN_VTELEMSCREENTYPE "\007" -#define TR_VTELEMSCREENTYPE " None "" Werte "" Balken"" Script" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "GMS\0""NMEA" //Koordinatenanzeige - -#define LEN2_VTEMPLATES 15 // max String Länge für Menü (original=13) -#define LEN_VTEMPLATES "\017" // max String Länge 15+cr+lf +#define LEN2_VTEMPLATES 15 // max String Länge für Menü (original=13) +#define LEN_VTEMPLATES "\017" // max String Länge 15+cr+lf #define TR_TEMPLATE_CLEAR_MIXES "Misch. Lösch.\0 " #define TR_TEMPLATE_SIMPLE_4CH "Einfach. 4-CH\0 " #define TR_TEMPLATE_STICKY_TCUT "Fixe Gassperre\0" @@ -326,67 +291,70 @@ #define TR_TEMPLATE_HELI "Hubschrauber\0 " #define TR_TEMPLATE_SERVO_TEST "Servo Tester\0 " -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" +#define LEN_VSWASHTYPE "\004" +#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" #if defined(PCBHORUS) - #define LEN_VKEYS "\006" - #define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left" + #define LEN_VKEYS "\006" + #define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left" +#elif defined(PCBXLITE) + #define LEN_VKEYS "\005" + #define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0" #elif defined(RADIO_T12) - #define LEN_VKEYS "\005" - #define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0" + #define LEN_VKEYS "\005" + #define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0" #elif defined(PCBTARANIS) - #define LEN_VKEYS "\005" - #define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus" + #define LEN_VKEYS "\005" + #define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus" #else - #define LEN_VKEYS "\005" - #define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0" + #define LEN_VKEYS "\005" + #define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0" #endif -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" +#define LEN_VSWITCHES "\003" +#define LEN_VSRCRAW "\004" -#define TR_STICKS_VSRCRAW "\307Sei""\307Höh""\307Gas""\307Que" +#define TR_STICKS_VSRCRAW "\307Sei""\307Höh""\307Gas""\307Que" #if defined(PCBHORUS) - #define TR_TRIMS_VSRCRAW "\313Sei""\313Höh""\313Gas""\313Que""\313T5\0""\313T6\0" + #define TR_TRIMS_VSRCRAW "\313Sei""\313Höh""\313Gas""\313Que""\313T5\0""\313T6\0" #else - #define TR_TRIMS_VSRCRAW TR("TrmS""TrmH""TrmG""TrmQ", "\313Sei""\313Höh""\313Gas""\313que") + #define TR_TRIMS_VSRCRAW TR("TrmS""TrmH""TrmG""TrmQ", "\313Sei""\313Höh""\313Gas""\313que") #endif #if defined(PCBHORUS) - #define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar""\3135d""\3135u""\3136d""\3136u" + #define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar""\3135d""\3135u""\3136d""\3136u" #else - #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") + #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") #endif #if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS "DGa\0" - #define TR_ROTENC_SWITCHES "DGa" + #define TR_ROTARY_ENCODERS "DGa\0" + #define TR_ROTENC_SWITCHES "DGa" #else #define TR_ROTARY_ENCODERS #define TR_ROTENC_SWITCHES #endif -#define TR_ON_ONE_SWITCHES "ON\0""One" +#define TR_ON_ONE_SWITCHES "ON\0""One" #if defined(GYRO) - #define TR_GYR_VSRCRAW "GyrX""GyrY" + #define TR_GYR_VSRCRAW "GyrX""GyrY" #else #define TR_GYR_VSRCRAW #endif #if defined(HELI) -#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" +#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" #else -#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" +#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" #endif -#define TR_RESERVE_VSRCRAW "[--]" -#define TR_EXTRA_VSRCRAW "Batt""Time""GPS\0" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3" +#define TR_RESERVE_VSRCRAW "[--]" +#define TR_EXTRA_VSRCRAW "Batt""Time""GPS\0" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3" -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "AUS""EIN""GSs""GS%""GSt" +#define LEN_VTMRMODES "\003" +#define TR_VTMRMODES "AUS""EIN""GSs""GS%""GSt" #define LEN_VTRAINERMODES "\022" #define TR_VTRAINER_MASTER_JACK "Lehrer/Buchse\0 " @@ -396,39 +364,36 @@ #define TR_VTRAINER_MASTER_BATTERY "Lehrer/Serial\0 " #define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ") -#define LEN_VFAILSAFE "\015" // "\013" original -#define TR_VFAILSAFE "Kein Failsafe""Halte Pos.\0 ""Kanäle\0 ""Kein Signal\0 ""Empfänger\0 " +#define LEN_VFAILSAFE "\015" // "\013" original +#define TR_VFAILSAFE "Kein Failsafe""Halte Pos.\0 ""Kanäle\0 ""Kein Signal\0 ""Empfänger\0 " -#define LEN_VSENSORTYPES "\012" -#define TR_VSENSORTYPES "Sensor\0 ""Berechnung" +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Sensor\0 ""Berechnung" -#define LEN_VFORMULAS "\014" // "\10" ursprünglich -#define TR_VFORMULAS "Addieren\0 ""Mittelwert\0 ""Min\0 ""Max\0 ""Multiplizier""Gesamt\0 ""Zelle\0 ""Verbrauch\0 ""Distanz\0 " +#define LEN_VFORMULAS "\014" // "\10" ursprünglich +#define TR_VFORMULAS "Addieren\0 ""Mittelwert\0 ""Min\0 ""Max\0 ""Multiplizier""Gesamt\0 ""Zelle\0 ""Verbrauch\0 ""Distanz\0 " -#define LEN_VPREC "\004" // "\005" Prec0 Prec1 Prec2 ursprünglich -#define TR_VPREC "0.--""0.0 ""0.00" +#define LEN_VPREC "\004" // "\005" Prec0 Prec1 Prec2 ursprünglich +#define TR_VPREC "0.--""0.0 ""0.00" -#define LEN_VCELLINDEX "\012" // "\007" ursprünglich -#define TR_VCELLINDEX "Niedrigst\0""1. Zelle\0 ""2. Zelle\0 ""3. Zelle\0 ""4. Zelle\0 ""5. Zelle\0 ""6. Zelle\0 ""Höchster\0 ""Differenz\0" +#define LEN_VCELLINDEX "\012" // "\007" ursprünglich +#define TR_VCELLINDEX "Niedrigst\0""1. Zelle\0 ""2. Zelle\0 ""3. Zelle\0 ""4. Zelle\0 ""5. Zelle\0 ""6. Zelle\0 ""Höchster\0 ""Differenz\0" -#define LEN_VANTENNATYPES "\014" -#define TR_VANTENNATYPES "Int. Antenne""Ext. + Int.\0" // Antennenauswahl - -#define LEN_GYROS "\004" -#define TR_GYROS "GyrX""GyrY" +#define LEN_GYROS "\004" +#define TR_GYROS "GyrX""GyrY" // ZERO TERMINATED STRINGS #if defined(COLORLCD) - #define INDENT "\007" - #define LEN_INDENT 1 - #define INDENT_WIDTH 12 - #define BREAKSPACE "\036" + #define INDENT " " + #define LEN_INDENT 3 + #define INDENT_WIDTH 12 + #define BREAKSPACE "\036" #else - #define INDENT "\001" - #define LEN_INDENT 1 - #define INDENT_WIDTH (FW/2) - #define BREAKSPACE " " + #define INDENT "\001" + #define LEN_INDENT 1 + #define INDENT_WIDTH (FW/2) + #define BREAKSPACE " " #endif #if defined(PCBFRSKY) @@ -452,238 +417,240 @@ #define TR_POPUPS_ENTER_EXIT TR_ENTER "\010" TR_EXIT #endif -#define TR_FREE "frei" -#define TR_DELETEMODEL "Modell löschen?" -#define TR_COPYINGMODEL "Kopiere Modell" -#define TR_MOVINGMODEL "Schiebe Modell" -#define TR_LOADINGMODEL "Lade Modell..." -#define STR_NAME "Name" -#define TR_MODELNAME "Modellname" -#define TR_PHASENAME "Phase-Name" -#define TR_MIXNAME "Mix-Name" -#define TR_INPUTNAME "Input" - #define TR_EXPONAME "Info" +#define TR_FREE "frei" +#define TR_DELETEMODEL "Modell löschen?" +#define TR_COPYINGMODEL "Kopiere Modell" +#define TR_MOVINGMODEL "Schiebe Modell" +#define TR_LOADINGMODEL "Lade Modell..." +#define STR_NAME "Name" +#define TR_MODELNAME "Modellname" +#define TR_PHASENAME "Phase-Name" +#define TR_MIXNAME "Mix-Name" +#define TR_INPUTNAME TR("Input", "Input name") +#define TR_EXPONAME TR("Name", "Line name") #define TR_BITMAP "Modellfoto" #define TR_TIMER TR("Timer", "Timer ") // für Timer1 Timer2 Timer3 #define TR_START "Start" -#define TR_ELIMITS TR("Erw. Limit", "Erw. Wege auf 150%") -#define TR_ETRIMS TR("Erw. Trims", "Erw. Trim auf 100%") -#define TR_TRIMINC TR("Trim Schr.", "Trimmschritte") -#define TR_DISPLAY_TRIMS TR("Trim anzeig", "Trimwerte anzeigen") -#define TR_TTRACE TR("Gasquelle", INDENT "Gas-Timerquelle") -#define TR_TTRIM TR("Gastrim", INDENT "Gas-Leerlauftrim") -#define TR_BEEPCTR TR("Mitt.Piep", "Mittelstell. -Pieps") -#define TR_USE_GLOBAL_FUNCS TR("Glob. Funkt.", "Globale Funkt verw.") +#define TR_ELIMITS TR("Erw. Limit", "Erw. Wege auf 150%") +#define TR_ETRIMS TR("Erw. Trims", "Erw. Trim auf 100%") +#define TR_TRIMINC TR("Trimschritt", "Trimmschritte") +#define TR_DISPLAY_TRIMS TR("Trimanzeige", "Trimwerte anzeigen") +#define TR_TTRACE TR("Gasquelle", INDENT "Gas-Timerquelle") +#define TR_TTRIM TR("Gastrim", INDENT "Gas-Leerlauftrim") +#define TR_BEEPCTR TR("MittePieps", "Mittelstell. -Pieps") +#define TR_USE_GLOBAL_FUNCS TR("Glob. Funkt.", "Globale Funkt verw.") #if defined(PCBSKY9X) && defined(REVX) - #define TR_OUTPUT_TYPE INDENT "Output" + #define TR_OUTPUT_TYPE INDENT "Output" #endif -#define TR_PROTO TR(INDENT "Protok.", INDENT "Protokoll") - #define TR_PPMFRAME INDENT "PPM frame" -#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate") +#define TR_PROTO TR(INDENT "Protok.", INDENT "Protokoll") + #define TR_PPMFRAME INDENT "PPM-Frame" +#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate") #define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ") -#define TR_MS "ms" +#define TR_MS "ms" #define TR_FREQUENCY INDENT "Frequency" -#define TR_SWITCH TR("Schalt.", "Schalter") -#define TR_TRIMS "Trims" -#define TR_FADEIN "Langs. Ein" -#define TR_FADEOUT "Langs. Aus" -#define TR_DEFAULT "(Normal)" -#define TR_CHECKTRIMS CENTER"\006Check\012Trims" -#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) -#define TR_SWASHTYPE TR("Typ Taumelsch", "Typ Taumelscheibe") -#define TR_COLLECTIVE TR("Kollekt. Pitch", "Kollekt. Pitch Quelle") -#define TR_AILERON "Roll Quelle" -#define TR_ELEVATOR "Nick Quelle" -#define TR_SWASHRING TR("Ring Begrenz", "Ring Begrenzung") -#define TR_ELEDIRECTION TR("Nick Richtung", "Nick Servo Richtung") -#define TR_AILDIRECTION TR("Roll Richtung", "Roll Servo Richtung") -#define TR_COLDIRECTION TR("Pitch Richtung", "Pitch Servo Richtung") -#define TR_MODE "Modus" -#define TR_SUBTYPE INDENT "Subtype" -#define TR_NOFREEEXPO "Expos voll!" -#define TR_NOFREEMIXER "Mischer voll!" -#define TR_SOURCE "Quelle" -#define TR_WEIGHT "Gewicht" -#define TR_EXPO TR("Expo", "Exponential") -#define TR_SIDE "Seite" -#define TR_DIFFERENTIAL "Diff" -#define TR_OFFSET "Offset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define DREX_CHBOX_OFFSET 30 -#define TR_CURVE "Kurve" -#define TR_FLMODE TR("Phase", "Phasen") -#define TR_MIXWARNING "Warnung" -#define TR_OFF "AUS" +#define TR_SWITCH TR("Schalt.", "Schalter") +#define TR_TRIMS "Trims" +#define TR_FADEIN "Langs. Ein" +#define TR_FADEOUT "Langs. Aus" +#define TR_DEFAULT "(Normal)" +#define TR_CHECKTRIMS CENTER"\006Check\012Trims" +#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) +#define TR_SWASHTYPE TR("Typ Taumelsch", "Typ Taumelscheibe") +#define TR_COLLECTIVE TR("Kollekt. Pitch", "Kollekt. Pitch Quelle") +#define TR_AILERON "Roll Quelle" +#define TR_ELEVATOR "Nick Quelle" +#define TR_SWASHRING TR("Ring Begrenz", "Ring Begrenzung") +#define TR_ELEDIRECTION TR("Nick Richtung", "Nick Servo Richtung") +#define TR_AILDIRECTION TR("Roll Richtung", "Roll Servo Richtung") +#define TR_COLDIRECTION TR("Pitch Richtung", "Pitch Servo Richtung") +#define TR_MODE "Modus" +#define TR_SUBTYPE INDENT "Subtype" +#define TR_NOFREEEXPO "Expos voll!" +#define TR_NOFREEMIXER "Mischer voll!" +#define TR_SOURCE "Quelle" +#define TR_WEIGHT "Gewicht" +#define TR_EXPO TR("Expo", "Exponential") +#define TR_SIDE "Seite" +#define TR_DIFFERENTIAL "Diff" +#define TR_OFFSET "Offset" +#define TR_TRIM "Trim" +#define TR_DREX "DRex" +#define DREX_CHBOX_OFFSET 30 +#define TR_CURVE "Kurve" +#define TR_FLMODE TR("Phase", "Phasen") +#define TR_MIXWARNING "Warnung" +#define TR_OFF "AUS" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") -#define TR_MULTPX "Wirkung" -#define TR_DELAYDOWN "Verz. Dn" -#define TR_DELAYUP "Verz. Up" -#define TR_SLOWDOWN "Langs.Dn" -#define TR_SLOWUP "Langs.Up" -#define TR_MIXER "MISCHER" -#define TR_CV "KV" -#define TR_GV TR("G", "GV") -#define TR_ACHANNEL TR("A\004gemessen", "A\004Kanal gemessen =>") //9XR-Pro -#define TR_RANGE TR(INDENT "Bereich", INDENT "Variobereich m/s") // 9XR-Pro -#define TR_CENTER TR(INDENT "Mitte m/s", INDENT "Variomitte m/s") -#define TR_BAR "Balken" -#define TR_ALARM TR(INDENT "Alarme ", INDENT "Aufleuchten bei Alarm") //9XR-Pro -#define TR_USRDATA "Daten berechnen aus" -#define TR_BLADES TR(INDENT "Prop", INDENT "Prop-Blätter") //9XR-Pro -#define TR_SCREEN "Telm-Anzeige " -#define TR_SOUND_LABEL "Töne" -#define TR_LENGTH INDENT "Dauer" -#define TR_BEEP_LENGTH INDENT "Beep-Länge" -#define TR_SPKRPITCH INDENT "Beep-Freq. +/-" -#define TR_HAPTIC_LABEL "Haptik" -#define TR_HAPTICSTRENGTH INDENT "Stärke" +#define TR_MULTPX "Wirkung" +#define TR_DELAYDOWN "Verz. Dn" +#define TR_DELAYUP "Verz. Up" +#define TR_SLOWDOWN "Langs.Dn" +#define TR_SLOWUP "Langs.Up" +#define TR_MIXER "MISCHER" +#define TR_CV "KV" +#define TR_GV TR("G", "GV") +#define TR_ACHANNEL TR("A\004gemessen", "A\004Kanal gemessen =>") //9XR-Pro +#define TR_RANGE TR(INDENT "Bereich", INDENT "Variobereich m/s") // 9XR-Pro +#define TR_CENTER TR(INDENT "Mitte", INDENT "Variomitte m/s") +#define TR_BAR "Balken" +#define TR_ALARM TR(INDENT "Alarme ", INDENT "Aufleuchten bei Alarm") //9XR-Pro +#define TR_USRDATA "Daten berechnen aus" +#define TR_BLADES TR(INDENT "Prop", INDENT "Prop-Blätter") //9XR-Pro +#define TR_SCREEN "TelmBild " +#define TR_SOUND_LABEL "Töne" +#define TR_LENGTH INDENT "Dauer" +#define TR_BEEP_LENGTH INDENT "Beep-Länge" +#define TR_SPKRPITCH INDENT "Beep-Freq +/-" +#define TR_HAPTIC_LABEL "Haptik" +#define TR_HAPTICSTRENGTH INDENT "Stärke" #define TR_GYRO_LABEL "Gyro" #define TR_GYRO_OFFSET "Offset" #define TR_GYRO_MAX "Max" -#define TR_CONTRAST "LCD-Kontrast" -#define TR_ALARMS_LABEL "Alarme" -#define TR_BATTERY_RANGE TR("Akku Bereich", "Akku Spgannungsbereich") // Symbol Akku Ladezustand -#define TR_BATTERYWARNING TR(INDENT "Akkuspg kleiner", "Akkuspannungswarnung") -#define TR_INACTIVITYALARM TR(INDENT "Inaktivität", INDENT "Inaktivität nach") //9XR-Pro -#define TR_MEMORYWARNING INDENT "Speicher voll" -#define TR_ALARMWARNING TR(INDENT "Alle Töne aus?", INDENT "Alle Töne ganz aus?") -#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi-Chk bei aus", INDENT "Prüfe RSSI bei Ausschalten") +#define TR_CONTRAST "LCD-Kontrast" +#define TR_ALARMS_LABEL "Alarme" +#define TR_BATTERY_RANGE TR("Akku Bereich", "Akku Spannungsbereich") // Symbol Akku Ladezustand +#define TR_BATTERYWARNING TR(INDENT "Akku Warnung", "Akkuspannungswarnung") +#define TR_INACTIVITYALARM TR(INDENT "Inaktivität", INDENT "Inaktivität nach") //9XR-Pro +#define TR_MEMORYWARNING INDENT "Speicher voll" +#define TR_ALARMWARNING TR(INDENT "Alle Töne aus?", INDENT "Alle Töne ganz aus?") +#define TR_RSSISHUTDOWNALARM TR(INDENT "RSSI-Chk aus?", INDENT "Prüfe RSSI bei Ausschalten") #define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling") -#define TR_MODEL_STILL_POWERED "Model still powered" +#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" -#define TR_RENAVIG "Drehgeb. Navig." -#define TR_THROTTLE_LABEL "Gas-Kontrolle" -#define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis -#define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm") -#define TR_BEEPCOUNTDOWN INDENT "Countdown" -#define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent") -#define TR_BACKLIGHT_LABEL "LCD-Beleuchtung" -#define TR_BLDELAY INDENT "Dauer" +#define TR_RENAVIG TR ("Rol", "Drehgeb. Navig.") +#define TR_THROTTLE_LABEL "Gas-Kontrolle" +#define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis +#define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm") +#define TR_BEEPCOUNTDOWN INDENT "Countdown" +#define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent") +#define TR_BACKLIGHT_LABEL "LCD-Beleuchtung" +#define TR_BLDELAY INDENT "Dauer" #define TR_BL_MODE_DUR INDENT "Mode-Duration" -#define TR_BLONBRIGHTNESS INDENT "An-Helligkeit" -#define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit" -#define TR_BLCOLOR INDENT "Farbe" -#define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Anzeigedauer") -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" -#define TR_THROTTLEWARNING TR("Gasalarm", INDENT "Gas Alarm") -#define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm") -#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") -#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions") -#define TR_POTWARNING TR("Pot Warn.", INDENT "Poti-Warnung") -#define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std") -#define TR_ADJUST_RTC TR("Uhrzeit setzen", INDENT "Uhrzeit per GPS setzen") -#define TR_GPS "GPS" -#define TR_RXCHANNELORD TR("Kanalanordnung", "Kanalvoreinstellung") -#define TR_STICKS "Knüppel" -#define TR_POTS "Potis" -#define TR_SWITCHES "Schalter" -#define TR_SWITCHES_DELAY TR("Sw. Mitte Delay", "Schaltermitte Verzögerung") //Schalter Mitten verzögern Anpassung -#define TR_SLAVE TR("Schüler PPM1-16", "Schüler PPM1-16 als Ausgang") -#define TR_MODESRC " Modus\003% Quelle" -#define TR_MULTIPLIER "Multiplik." -#define TR_CAL "Kal." +#define TR_BLONBRIGHTNESS INDENT "An-Helligkeit" +#define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit" +#define TR_BLCOLOR INDENT "Farbe" +#define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Anzeigedauer") +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" +#define TR_THROTTLEWARNING TR("Gasalarm", INDENT "Gas Alarm") +#define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm") +#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") +#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions") +#define TR_POTWARNING TR("Potiwarnung", INDENT "Poti-Warnung") +#define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std") +#define TR_ADJUST_RTC TR("GPSzeit setzen", INDENT "Uhrzeit per GPS setzen") +#define TR_GPS "GPS" +#define TR_RXCHANNELORD TR("Kanal CH1-4", "Kanalvoreinstellung") +#define TR_STICKS "Knüppel" +#define TR_POTS "Potis" +#define TR_SWITCHES "Schalter" +#define TR_SWITCHES_DELAY TR("Sw. Mitte Delay", "Schaltermitte Verzögerung") //Schalter Mitten verzögern Anpassung +#define TR_SLAVE TR("Schüler PPM1-16", "Schüler PPM1-16 als Ausgang") +#define TR_MODESRC " Modus\003% Quelle" +#define TR_MULTIPLIER "Multiplik." +#define TR_CAL "Kal." #define TR_CALIBRATION "Calibration" -#define TR_VTRIM "Trim - +" -#define TR_BG "BG:" +#define TR_VTRIM "Trim - +" +#define TR_BG "BG:" #define TR_CALIB_DONE "Calibration completed" #if defined(PCBHORUS) - #define TR_MENUTOSTART "Drücke [Enter] zum Start" - #define TR_SETMIDPOINT "Knüppel/Potis/Sliders auf Mitte [Enter]" - #define TR_MOVESTICKSPOTS "Knüppel/Potis/Sliders bewegen [Enter]" + #define TR_MENUTOSTART "Drücke [Enter] zum Start" + #define TR_SETMIDPOINT "Knüppel/Potis/Sliders auf Mitte [Enter]" + #define TR_MOVESTICKSPOTS "Knüppel/Potis/Sliders bewegen [Enter]" #elif defined(COLORLCD) - #define TR_MENUTOSTART TR_ENTER " Zum Start" - #define TR_SETMIDPOINT "STICKS/SLIDERS/POTIS auf Mitte" - #define TR_MOVESTICKSPOTS "STICKS/SLIDERS/POTIS" bewegen - #define TR_MENUWHENDONE TR_ENTER " wenn fertig" + #define TR_MENUTOSTART TR_ENTER " Zum Start" + #define TR_SETMIDPOINT "STICKS/SLIDERS/POTIS auf Mitte" + #define TR_MOVESTICKSPOTS "STICKS/SLIDERS/POTIS" bewegen + #define TR_MENUWHENDONE TR_ENTER " wenn fertig" #else - #define TR_MENUTOSTART CENTER "\010" TR_ENTER " Zum START" - #define TR_SETMIDPOINT TR(CENTER "\004Mitte Knüppel/Sliders", CENTER "\004Mitte Knüppel/Potis") - #define TR_MOVESTICKSPOTS CENTER "\004Bewege Knüppel/POTIS" - #define TR_MENUWHENDONE CENTER "\006" TR_ENTER " wenn fertig" + #define TR_MENUTOSTART CENTER "\010" TR_ENTER " Zum START" + #define TR_SETMIDPOINT TR(CENTER "\004Mitte Knüppel/Sliders", CENTER "\004Mitte Knüppel/Potis") + #define TR_MOVESTICKSPOTS CENTER "\004Bewege Knüppel/POTIS" + #define TR_MENUWHENDONE CENTER "\006" TR_ENTER " wenn fertig" #endif -#define TR_RXBATT "Rx Akku:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER"Keine Daten" -#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAS\037\146GS%" -#define TR_US "us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" -#define TR_TMIXMAXMS "Tmix max" -#define TR_FREE_STACK "Freier Stack" -#define TR_MENUTORESET TR_ENTER " für Reset" -#define TR_PPM_TRAINER "TR" -#define TR_CH "CH" -#define TR_MODEL "MODELL" -#define TR_FM "FP" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM voll" -#define TR_ALERT "WARNUNG" -#define TR_PRESSANYKEYTOSKIP TR("Taste drücken",CENTER"Taste drücken") -#define TR_THROTTLENOTIDLE "Gas nicht Null!" -#define TR_ALARMSDISABLED "Alarme ausgeschaltet" -#define TR_PRESSANYKEY TR("Taste drücken",CENTER"Taste drücken") -#define TR_BADEEPROMDATA "EEPROM ungültig" -#define TR_BAD_RADIO_DATA "Bad Radio Data" -#define TR_EEPROMFORMATTING "EEPROM Initialisieren" -#define TR_STORAGE_FORMAT "Speicher Vorbereiten" // -#define TR_EEPROMOVERFLOW "EEPROM Überlauf" -#define TR_MENURADIOSETUP TR("SENDER-EINSTELLEN", "SENDER-GRUNDEINSTELLUNGEN") -#define TR_MENUDATEANDTIME "DATUM UND ZEIT" -#define TR_MENUTRAINER TR("LEHRER/SCHÜLER", "LEHRER/SCHÜLER") -#define TR_MENUSPECIALFUNCS "GLOBALE FUNKTIONEN" -#define TR_MENUVERSION "VERSION" -#define TR_MENU_RADIO_SWITCHES TR("Schalt.", "Schalter-Test") -#define TR_MENU_RADIO_ANALOGS "Analog-Test" -#define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG-Analog") +#define TR_RXBATT "Rx Akku:" +#define TR_TXnRX "Tx:\0Rx:" +#define OFS_RX 4 +#define TR_ACCEL "Acc:" +#define TR_NODATA CENTER"Keine Daten" +#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAS\037\146GS%" +#define TR_US "us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" +#define TR_TMIXMAXMS "Tmix max" +#define TR_FREE_STACK "Freier Stack" +#define TR_MENUTORESET TR_ENTER " für Reset" +#define TR_PPM_TRAINER "TR" +#define TR_CH "CH" +#define TR_MODEL "MODELL" +#define TR_FM "FP" +#define TR_MIX "MIX" +#define TR_EEPROMLOWMEM "EEPROM voll" +#define TR_ALERT "WARNUNG" +#define TR_PRESSANYKEYTOSKIP TR("Taste drücken",CENTER"Taste drücken") +#define TR_THROTTLENOTIDLE "Gas nicht Null!" +#define TR_ALARMSDISABLED "Alarme ausgeschaltet" +#define TR_PRESSANYKEY TR("Taste drücken",CENTER"Taste drücken") +#define TR_BADEEPROMDATA "EEPROM ungültig" +#define TR_BAD_RADIO_DATA "Bad Radio Data" +#define TR_EEPROMFORMATTING "EEPROM Initialisieren" +#define TR_STORAGE_FORMAT "Speicher Vorbereiten" // +#define TR_EEPROMOVERFLOW "EEPROM Überlauf" +#define TR_MENURADIOSETUP TR("SENDER-EINSTELLEN", "SENDER-GRUNDEINSTELLUNGEN") +#define TR_MENUDATEANDTIME "DATUM UND ZEIT" +#define TR_MENUTRAINER TR("LEHRER/SCHÜLER", "LEHRER/SCHÜLER") +#define TR_MENUSPECIALFUNCS "GLOBALE FUNKTIONEN" +#define TR_MENUVERSION "VERSION" +#define TR_MENU_RADIO_SWITCHES TR("Schalter-Test", "Schalter-Test") +#define TR_MENU_RADIO_ANALOGS "Geber-Test" +#define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG-Analog") #if defined(COLORLCD) - #define TR_TRIMS2OFFSETS "Trims => Subtrims" + #define TR_TRIMS2OFFSETS "Trims => Subtrims" #else - #define TR_TRIMS2OFFSETS "\006Trims => Subtrims" + #define TR_TRIMS2OFFSETS "\006Trims => Subtrims" #endif -#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe" -#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe" -#define TR_MENUMODELSEL TR("MODELLE", "MODELL WÄHLEN") -#define TR_MENUSETUP TR("MODELL-EINSTELLUNG", "MODELL-EINSTELLUNGEN") -#define TR_MENUFLIGHTMODE "FLUGPHASE" -#define TR_MENUFLIGHTMODES "FLUGPHASEN" -#define TR_MENUHELISETUP TR("HELI TS-Mischer", "HELI TS-Mischer CYC1-3") +#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe" +#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe" +#define TR_MENUMODELSEL TR("MODELLE", "MODELL WÄHLEN") +#define TR_MENUSETUP TR("MODELL-EINSTELLUNG", "MODELL-EINSTELLUNGEN") +#define TR_MENUFLIGHTMODE "FLUGPHASE" +#define TR_MENUFLIGHTMODES "FLUGPHASEN" +#define TR_MENUHELISETUP TR("HELI TS-Mischer", "HELI TS-Mischer CYC1-3") - #define TR_MENUINPUTS "INPUTS" - #define TR_MENULIMITS "SERVOS" //"AUSGABEN" oder "Servos" -#define TR_MENUCURVES "KURVEN" -#define TR_MENUCURVE "KURVE" -#define TR_MENULOGICALSWITCH "LOGIKSCHALTER" -#define TR_MENULOGICALSWITCHES "LOGIKSCHALTER" -#define TR_MENUCUSTOMFUNC TR("SPEZ.-FUNKTIONEN", "SPEZIAL-FUNKTIONEN") -#define TR_MENUCUSTOMSCRIPTS "LUA-SCRIPTE" -#define TR_MENUTELEMETRY "TELEMETRIE" -#define TR_MENUTEMPLATES "VORLAGEN" -#define TR_MENUSTAT "STAT" -#define TR_MENUDEBUG "DEBUG" -#define TR_MONITOR_CHANNELS1 "KANAL+MISCHER MONITOR 1-8" -#define TR_MONITOR_CHANNELS2 "KANAL+MISCHER MONITOR 9-16" -#define TR_MONITOR_CHANNELS3 "KANAL+MISCHER MONITOR 17-24" -#define TR_MONITOR_CHANNELS4 "KANAL+MISCHER MONITOR 25-32" -#define TR_MONITOR_SWITCHES "LOGIK SCHALTER MONITOR" -#define TR_MONITOR_OUTPUT_DESC "Kanäle" -#define TR_MONITOR_MIXER_DESC "Mischer" -#define TR_RECEIVER_NUM TR("Empf Nr.", "Empfänger Nummer") -#define TR_RECEIVER "Receiver" -#define TR_MULTI_RFTUNE TR(INDENT "RF Freq.", INDENT "RF Freq. Feintuning") + #define TR_MENUINPUTS "INPUTS" //"Inputs=Geber" + #define TR_MENULIMITS "SERVOS" //"AUSGABEN" oder "Servos" +#define TR_MENUCURVES "KURVEN" +#define TR_MENUCURVE "KURVE" +#define TR_MENULOGICALSWITCH "LOGIKSCHALTER" +#define TR_MENULOGICALSWITCHES "LOGIKSCHALTER" +#define TR_MENUCUSTOMFUNC TR("SPEZ.-FUNKTIONEN", "SPEZIAL-FUNKTIONEN") +#define TR_MENUCUSTOMSCRIPTS "LUA-SCRIPTE" +#define TR_MENUTELEMETRY "TELEMETRIE" +#define TR_MENUTEMPLATES "VORLAGEN" +#define TR_MENUSTAT "STAT" +#define TR_MENUDEBUG "DEBUG" +#define TR_MONITOR_CHANNELS1 "KANAL+MISCHER MONITOR 1-8" +#define TR_MONITOR_CHANNELS2 "KANAL+MISCHER MONITOR 9-16" +#define TR_MONITOR_CHANNELS3 "KANAL+MISCHER MONITOR 17-24" +#define TR_MONITOR_CHANNELS4 "KANAL+MISCHER MONITOR 25-32" +#define TR_MONITOR_SWITCHES "LOGIK SCHALTER MONITOR" +#define TR_MONITOR_OUTPUT_DESC "Kanäle" +#define TR_MONITOR_MIXER_DESC "Mischer" + #define TR_RECEIVER_NUM TR("Empf Nr.", "Empfänger Nummer") + #define TR_RECEIVER "Empfänger" +#define TR_MULTI_RFTUNE TR(INDENT "RF Freq.", INDENT "RF Freq. Feintuning") #define TR_MULTI_TELEMETRY "Telemetry" -#define TR_MULTI_VIDFREQ TR(INDENT "Vid. Freq.", INDENT "Video Frequenz") -#define TR_RFPOWER "RF Power" -#define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Optionswert") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") -#define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") -#define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") +#define TR_MULTI_VIDFREQ TR(INDENT "Vid. Freq.", INDENT "Video Frequenz") +#define TR_RFPOWER INDENT "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") +#define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Optionswert") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") +#define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") +#define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") #define TR_MODULE_TELEM_ON TR("ON", "Enabled") -#define TR_DISABLE_INTERNAL TR("Disable int. RF", "Disable internal RF") +#define TR_DISABLE_INTERNAL TR("Disable int. RF", "Disable internal RF") #define TR_MODULE_NO_SERIAL_MODE TR("!serial mode", "Not in serial mode") #define TR_MODULE_NO_INPUT TR("No input", "No serial input") #define TR_MODULE_NO_TELEMETRY TR3( "No telmetry", "No MULTI_TELEMETRY", "No telemetry (enable MULTI_TELEMETRY)") @@ -692,46 +659,46 @@ #define TR_REBIND "Rebinding required" #define TR_REG_OK "Registration ok" #define TR_BIND_OK "Bind successful" -#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON" -#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF" -#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON" -#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF" +#define TR_BINDING_CH1_8_TELEM_ON "Ch1-8 Telem ON" +#define TR_BINDING_CH1_8_TELEM_OFF "Ch1-8 Telem OFF" +#define TR_BINDING_CH9_16_TELEM_ON "Ch9-16 Telem ON" +#define TR_BINDING_CH9_16_TELEM_OFF "Ch9-16 Telem OFF" #define TR_PROTOCOL_INVALID TR("Prot. invalid", "Protocol invalid") #define TR_MODULE_STATUS TR(INDENT "Status", INDENT "Module Status") #define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Module Sync") -#define TR_MULTI_SERVOFREQ TR("Servo rate", "Servo update rate") -#define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT "Grenzen" -#define TR_MINRSSI "Min. RSSI" -#define TR_LATITUDE "Breite:" -#define TR_LONGITUDE "Länge:" -#define TR_GPSCOORD TR("GPS-Koord.", "GPS-Koordinaten-Format") -#define TR_VARIO "Variometer" -#define TR_PITCH_AT_ZERO INDENT "Niedrigster Ton" -#define TR_PITCH_AT_MAX INDENT "Höchster Ton" -#define TR_REPEAT_AT_ZERO INDENT "Wiederholrate" -#define TR_POWEROFF "\027Power OFF..." -#define TR_SHUTDOWN "Herunterfahren" -#define TR_SAVEMODEL "Modelleinstellungen speichern" -#define TR_BATT_CALIB TR("AkkuSpg kalib.", "Akku Kalibrierung") -#define TR_CURRENT_CALIB "Strom abgl." -#define TR_VOLTAGE TR(INDENT "Spg", INDENT "Spannungsquelle") //9XR-Pro -#define TR_CURRENT TR(INDENT "Strom", INDENT "Stromquelle") -#define TR_SELECT_MODEL "Modell auswählen" -#define TR_CREATE_CATEGORY "Modelltyp erzeugen" -#define TR_RENAME_CATEGORY "Modelltyp umbenennen" -#define TR_DELETE_CATEGORY "Modelltyp löschen" -#define TR_CREATE_MODEL "Neues Modell" -#define TR_DUPLICATE_MODEL "Kopiere Modell" -#define TR_COPY_MODEL "Kopiere Modell" -#define TR_MOVE_MODEL "Verschiebe Modell" -#define TR_BACKUP_MODEL "Modell auf SD-Karte" //9XR-Pro -#define TR_DELETE_MODEL "Modell löschen" // TODO merged into DELETEMODEL? -#define TR_RESTORE_MODEL TR("Modell wiederher.", "Modell wiederherstellen") -#define TR_DELETE_ERROR "Fehler beim Löschen" -#define TR_CAT_NOT_EMPTY "Kategorie nicht leer" -#define TR_SDCARD_ERROR "SD-Kartenfehler" -#define TR_NO_SDCARD "Keine SD-Karte" +#define TR_MULTI_SERVOFREQ TR(INDENT "Servo rate", INDENT "Servo update rate") +#define TR_SYNCMENU "Sync [MENU]" +#define TR_LIMIT INDENT "Grenzen" +#define TR_MINRSSI "Min. RSSI" +#define TR_LATITUDE "Breite:" +#define TR_LONGITUDE "Länge:" +#define TR_GPSCOORD TR("GPS-Koord.", "GPS-Koordinaten-Format") +#define TR_VARIO "Variometer" +#define TR_PITCH_AT_ZERO INDENT "Töne sinken" +#define TR_PITCH_AT_MAX INDENT "Töne steigen" +#define TR_REPEAT_AT_ZERO INDENT "Wiederholrate" +#define TR_POWEROFF "\027Power OFF..." +#define TR_SHUTDOWN "Herunterfahren" +#define TR_SAVEMODEL "Modelleinstellungen speichern" +#define TR_BATT_CALIB TR("AkkuSpgwert", "Akku Kalibrierung") +#define TR_CURRENT_CALIB "Strom abgl." +#define TR_VOLTAGE TR(INDENT "Spg", INDENT "Spannungsquelle") //9XR-Pro +#define TR_CURRENT TR(INDENT "Strom", INDENT "Stromquelle") +#define TR_SELECT_MODEL "Modell auswählen" +#define TR_CREATE_CATEGORY "Modelltyp erzeugen" +#define TR_RENAME_CATEGORY "Modelltyp umbenennen" +#define TR_DELETE_CATEGORY "Modelltyp löschen" +#define TR_CREATE_MODEL "Neues Modell" +#define TR_DUPLICATE_MODEL "Kopiere Modell" +#define TR_COPY_MODEL "Kopiere Modell" +#define TR_MOVE_MODEL "Verschiebe Modell" +#define TR_BACKUP_MODEL "Modell auf SD-Karte" //9XR-Pro +#define TR_DELETE_MODEL "Modell löschen" // TODO merged into DELETEMODEL? +#define TR_RESTORE_MODEL TR("Modell wiederher.", "Modell wiederherstellen") +#define TR_DELETE_ERROR "Fehler beim Löschen" +#define TR_CAT_NOT_EMPTY "Kategorie nicht leer" +#define TR_SDCARD_ERROR "SD-Kartenfehler" +#define TR_NO_SDCARD "Keine SD-Karte" #define TR_WAITING_FOR_RX "Waiting for RX..." #define TR_WAITING_FOR_TX "Waiting for TX..." #define TR_NO_TOOLS "No tools available" @@ -741,16 +708,16 @@ #define TR_CONNECTED "Connected" #define TR_FLEX_915 "Flex 915MHz" #define TR_FLEX_868 "Flex 868MHz" -#define TR_16CH_WITHOUT_TELEMETRY TR("16CH without telem.", "16CH without telemetry") -#define TR_16CH_WITH_TELEMETRY TR("16CH with telem.", "16CH with telemetry") -#define TR_8CH_WITH_TELEMETRY TR("8CH with telem.", "8CH with telemetry") -#define TR_EXT_ANTENNA "Ext. antenna" +#define TR_16CH_WITHOUT_TELEMETRY TR("16CH ohne Telem.", "16CH ohne Telemetry") +#define TR_16CH_WITH_TELEMETRY TR("16CH mit Telem.", "16CH mit Telemetry") +#define TR_8CH_WITH_TELEMETRY TR("8CH mit Telem.", "8CH mit Telemetry") +#define TR_EXT_ANTENNA "Ext. Antenne" #define TR_PIN "Pin" #define TR_UPDATE_RX_OPTIONS "Update RX options?" #define TR_UPDATE_TX_OPTIONS "Update TX options?" -#define TR_MODULES_RX_VERSION "Modules / RX version" -#define TR_MENU_MODULES_RX_VERSION "MODULES / RX VERSION" -#define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONS" +#define TR_MODULES_RX_VERSION "Module / RX version" +#define TR_MENU_MODULES_RX_VERSION "MODULE / RX VERSION" +#define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONEN" #define TR_GYRO "Gyro" #define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" #define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" @@ -763,256 +730,264 @@ #define TR_POWER_METER_INT "Power Meter (INT)" #define TR_SPECTRUM_ANALYSER_EXT "Spectrum (EXT)" #define TR_SPECTRUM_ANALYSER_INT "Spectrum (INT)" -#define TR_SDCARD_FULL "SD-Karte voll" -#define TR_INCOMPATIBLE "Nicht kompatibel" -#define TR_WARNING "WARNUNG" -#define TR_EEPROMWARN "EEPROM" -#define TR_STORAGE_WARNING "SPEICHER" -#define TR_EEPROM_CONVERTING "EEPROM Konvertierung" -#define TR_THROTTLEWARN "GAS" -#define TR_ALARMSWARN "ALARM" -#define TR_SWITCHWARN "SCHALTER" -#define TR_FAILSAFEWARN "FAILSAFE" -#define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD") -#define TR_NIGHTLY_NOTSAFE "Nicht für Flug geeignet" -#define TR_WRONG_SDCARDVERSION TR("Erw. Version: ","Erwartete Version: ") -#define TR_WARN_RTC_BATTERY_LOW "RTC Battery low" -#define TR_BATTERY "BATTERY" -#define TR_WRONG_PCBREV "Falsches PCB erkannt" -#define TR_EMERGENCY_MODE "NOTFALL MODUS" -#define TR_PCBREV_ERROR "PCB Problem" -#define TR_NO_FAILSAFE TR("Failsafe not set", "Failsafe nicht programmiert") -#define TR_KEYSTUCK "Taste klemmt" //Key stuck=Taste klemmt -#define TR_INVERT_THR TR("Gas umkehren?", "Vollgas hinten?") // Th9x 9XR -#define TR_SPEAKER_VOLUME INDENT "Lautstärke" -#define TR_LCD "Bildschirm" -#define TR_BRIGHTNESS INDENT "Helligkeit" -#define TR_CPU_TEMP "CPU-Temp.\016>" -#define TR_CPU_CURRENT "Strom\022>" -#define TR_CPU_MAH "Verbrauch" -#define TR_COPROC "CoProz." -#define TR_COPROC_TEMP "MB Temp. \016>" -#define TR_CAPAWARNING INDENT "Kapaz. niedrig" // wg 9XR-Pro -#define TR_TEMPWARNING INDENT "Temp. größer" //wg 9XR-Pro -#define TR_FUNC "Funktion" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Dauer" -#define TR_DELAY "Verzög." -#define TR_SD_CARD "SD-Karte" -#define TR_SDHC_CARD "SDHC-Karte" -#define TR_NO_SOUNDS_ON_SD "Keine Töne" BREAKSPACE "auf SD" -#define TR_NO_MODELS_ON_SD "Kein Modelle" BREAKSPACE "auf SD" -#define TR_NO_BITMAPS_ON_SD "Keine Bitmaps" BREAKSPACE "auf SD" -#define TR_NO_SCRIPTS_ON_SD "Keine Skripte" BREAKSPACE "auf SD" -#define TR_SCRIPT_SYNTAX_ERROR "Skript Syntaxfehler" -#define TR_SCRIPT_PANIC "Skript Panik" -#define TR_SCRIPT_KILLED "Skript beendet" -#define TR_SCRIPT_ERROR "Unbekannter Fehler" -#define TR_PLAY_FILE "Abspielen" -#define TR_DELETE_FILE "Löschen" -#define TR_COPY_FILE "Kopieren" -#define TR_RENAME_FILE "Umbenennen" -#define TR_ASSIGN_BITMAP "Bitmap zuordnen" -#define TR_ASSIGN_SPLASH "Als Startbild" -#define TR_EXECUTE_FILE "Execute" -#define TR_REMOVED " gelöscht" -#define TR_SD_INFO "Information" -#define TR_SD_FORMAT "Formatieren" -#define TR_NA "N/V" //NV=Nicht Verfügbar Kurz-Meldung -#define TR_HARDWARE TR("Hardware einst. ", "Namen und Hardware einst.") -#define TR_FORMATTING "Formatierung..." -#define TR_TEMP_CALIB "Temp. abgl." -#define TR_TIME "Uhrzeit" -#define TR_MAXBAUDRATE "Max Baud" +#define TR_SDCARD_FULL "SD-Karte voll" +#define TR_INCOMPATIBLE "Nicht kompatibel" +#define TR_WARNING "WARNUNG" +#define TR_EEPROMWARN "EEPROM" +#define TR_STORAGE_WARNING "SPEICHER" +#define TR_EEPROM_CONVERTING "EEPROM Konvertierung" +#define TR_THROTTLEWARN "GAS" +#define TR_ALARMSWARN "ALARM" +#define TR_SWITCHWARN "SCHALTER" +#define TR_FAILSAFEWARN "FAILSAFE" +#define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD") +#define TR_NIGHTLY_NOTSAFE "Nicht für Flug geeignet" +#define TR_WRONG_SDCARDVERSION TR("Erw. Version: ","Erwartete Version: ") +#define TR_WARN_RTC_BATTERY_LOW "RTC Battery low" +#define TR_BATTERY "BATTERY" +#define TR_WRONG_PCBREV "Falsche PCB erkannt" +#define TR_EMERGENCY_MODE "NOTFALL MODUS" +#define TR_PCBREV_ERROR "PCB Problem" +#define TR_NO_FAILSAFE TR("Failsafe not set", "Failsafe nicht programmiert") +#define TR_KEYSTUCK "Taste klemmt" //Key stuck=Taste klemmt +#define TR_INVERT_THR TR("Gas umkehren?", "Vollgas hinten?") // Th9x 9XR +#define TR_SPEAKER_VOLUME INDENT "Lautstärke" +#define TR_LCD "Bildschirm" +#define TR_BRIGHTNESS INDENT "Helligkeit" +#define TR_CPU_TEMP "CPU-Temp.\016>" +#define TR_CPU_CURRENT "Strom\022>" +#define TR_CPU_MAH "Verbrauch" +#define TR_COPROC "CoProz." +#define TR_COPROC_TEMP "MB Temp. \016>" +#define TR_CAPAWARNING INDENT "Kapaz. niedrig" // wg 9XR-Pro +#define TR_TEMPWARNING INDENT "Temp. größer" //wg 9XR-Pro +#define TR_FUNC "Funktion" +#define TR_V1 "V1" +#define TR_V2 "V2" +#define TR_DURATION "Dauer" +#define TR_DELAY "Verzög." +#define TR_SD_CARD "SD-Karte" +#define TR_SDHC_CARD "SDHC-Karte" +#define TR_NO_SOUNDS_ON_SD "Keine Töne" BREAKSPACE "auf SD" +#define TR_NO_MODELS_ON_SD "Kein Modelle" BREAKSPACE "auf SD" +#define TR_NO_BITMAPS_ON_SD "Keine Bitmaps" BREAKSPACE "auf SD" +#define TR_NO_SCRIPTS_ON_SD "Keine Skripte" BREAKSPACE "auf SD" +#define TR_SCRIPT_SYNTAX_ERROR "Skript Syntaxfehler" +#define TR_SCRIPT_PANIC "Skript Panik" +#define TR_SCRIPT_KILLED "Skript beendet" +#define TR_SCRIPT_ERROR "Unbekannter Fehler" +#define TR_PLAY_FILE "Abspielen" +#define TR_DELETE_FILE "Löschen" +#define TR_COPY_FILE "Kopieren" +#define TR_RENAME_FILE "Umbenennen" +#define TR_ASSIGN_BITMAP "Bitmap zuordnen" +#define TR_ASSIGN_SPLASH "Als Startbild" +#define TR_EXECUTE_FILE "Execute" +#define TR_REMOVED " gelöscht" +#define TR_SD_INFO "Information" +#define TR_SD_FORMAT "Formatieren" +#define TR_NA "N/V" //NV=Nicht Verfügbar Kurz-Meldung +#define TR_HARDWARE TR("Hardware einst. ", "Namen und Hardware einst.") +#define TR_FORMATTING "Formatierung..." +#define TR_TEMP_CALIB "Temp. abgl." +#define TR_TIME "Uhrzeit:" +#define TR_MAXBAUDRATE "Max Baud" -#define TR_BLUETOOTH "Bluetooth" -#define TR_BLUETOOTH_DISC "Discover" -#define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" -#define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" -#define LEN_BLUETOOTH_MODES "\011" +#define TR_BLUETOOTH "Bluetooth" +#define TR_BLUETOOTH_DISC "Discover" +#define TR_BLUETOOTH_INIT "Init" +#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_PIN_CODE TR(INDENT "PIN code", "PIN code") +#define TR_BAUDRATE "BT Baudrate" +#define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) -#define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " +#define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " #else -#define TR_BLUETOOTH_MODES "---\0 ""Telemetry""Trainer\0" +#define TR_BLUETOOTH_MODES "---\0 ""Telemetry""Trainer\0" #endif -#define TR_SD_INFO_TITLE "SD-INFO" -#define TR_SD_TYPE "Typ:" -#define TR_SD_SPEED "Geschw:" -#define TR_SD_SECTORS "Sectoren:" -#define TR_SD_SIZE "Größe:" -#define TR_TYPE INDENT "Typ" -#define TR_GLOBAL_VARS "Globale Variablen" -#define TR_GVARS "GLOBALE V." -#define TR_GLOBAL_VAR "Globale Variable" -#define TR_MENUGLOBALVARS "GLOBALE VARIABLEN" -#define TR_OWN "Eigen" -#define TR_DATE "Datum" -#define TR_MONTHS { "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" } -#define TR_ROTARY_ENCODER "Drehgeber" -#define TR_CHANNELS_MONITOR "Kanal-Monitor==>" -#define TR_MIXERS_MONITOR "==>Mischer Monitor" -#define TR_PATH_TOO_LONG "Pfad zu Lang" -#define TR_VIEW_TEXT "View Text" -#define TR_FLASH_BOOTLOADER TR("Flash bootloader","Flash bootloader selbst") // -#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. Gerät","Flash externes Gerät") +#define TR_SD_INFO_TITLE "SD-INFO" +#define TR_SD_TYPE "Typ:" +#define TR_SD_SPEED "Geschw:" +#define TR_SD_SECTORS "Sectoren:" +#define TR_SD_SIZE "Größe:" +#define TR_TYPE INDENT "Typ" +#define TR_GLOBAL_VARS "Globale Variablen" +#define TR_GVARS "GLOBALE V." +#define TR_GLOBAL_VAR "Globale Variable" +#define TR_MENUGLOBALVARS "GLOBALE VARIABLEN" +#define TR_OWN "Eigen" +#define TR_DATE "Datum:" +#define TR_MONTHS { "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" } +#define TR_ROTARY_ENCODER "Drehgeber" +#define TR_CHANNELS_MONITOR "Kanal-Monitor==>" +#define TR_MIXERS_MONITOR "==>Mischer Monitor" +#define TR_PATH_TOO_LONG "Pfad zu Lang" +#define TR_VIEW_TEXT "View Text" +#define TR_FLASH_BOOTLOADER TR("Flash bootloader","Flash bootloader selbst") // +#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. Gerät","Flash externes Gerät") #define TR_FLASH_RECEIVER_OTA "Flash receiver OTA" #define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module") -#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit" +#define TR_FLASH_POWER_MANAGEMENT_UNIT TR("Flash pwr mngt unit", "Flash power management unit") #define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ") -#define TR_FLASH_INTERNAL_MODULE TR("Flash int. XJT","Flash internes XJT-Modul") -#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. mod","Flash extern module") -#define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") +#define TR_FLASH_INTERNAL_MODULE TR("Flash int. XJT","Flash internes XJT-Modul") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. mod","Flash extern module") +#define TR_FIRMWARE_UPDATE_ERROR TR("FW update Error","Firmware update error") #define TR_FIRMWARE_UPDATE_SUCCESS "Flash successful" -#define TR_WRITING "Writing..." -#define TR_CONFIRM_FORMAT "Formatieren bestätigen?" -#define TR_INTERNALRF "Internes HF-Modul" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" -#define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" +#define TR_WRITING "Writing..." +#define TR_CONFIRM_FORMAT "Formatieren bestätigen?" +#define TR_INTERNALRF "Internes HF-Modul" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") +#define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade nötig" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" #define TR_NO_MODULE_INFORMATION "No module information" -#define TR_EXTERNALRF "Externes HF-Modul" -#define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe Mode") -#define TR_FAILSAFESET "Failsafe setzen" -#define TR_REG_ID "Reg. ID" +#define TR_EXTERNALRF "Externes HF-Modul" +#define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe Mode") +#define TR_FAILSAFESET "Failsafe setzen" +#define TR_REG_ID TR("Reg. ID", "Registration ID") #define TR_OWNER_ID "Owner ID" #define TR_PINMAPSET "PINMAP" -#define TR_HOLD "Hold" +#define TR_HOLD "Hold" #define TR_HOLD_UPPERCASE "HOLD" -#define TR_NONE "None" +#define TR_NONE "None" #define TR_NONE_UPPERCASE "NONE" -#define TR_MENUSENSOR "SENSOR" +#define TR_MENUSENSOR "SENSOR" #define TR_POWERMETER_PEAK "Peak" #define TR_POWERMETER_POWER "Power" #define TR_POWERMETER_ATTN "Attn" #define TR_POWERMETER_FREQ "Freq." #define TR_MENUTOOLS "TOOLS" -#define TR_TURN_OFF_RECEIVER "Turn off receiver" +#define TR_TURN_OFF_RECEIVER "Empf. ausschalten" #define TR_STOPPING "Stopping..." #define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER" #define TR_MENU_POWER_METER "POWER METER" -#define TR_SENSOR "SENSOR" -#define TR_COUNTRYCODE "Landescode" -#define TR_USBMODE "USB Modus" +#define TR_SENSOR "SENSOR" +#define TR_COUNTRYCODE "Landescode" +#define TR_USBMODE "USB Modus" #define TR_JACKMODE "Jack Mode" -#define TR_VOICELANG "Sprach-Ansagen" -#define TR_UNITSSYSTEM "Einheiten" -#define TR_EDIT "Zeile Editieren" -#define TR_INSERT_BEFORE "Neue Zeile davor" -#define TR_INSERT_AFTER "Neue Zeile danach" -#define TR_COPY "Zeile kopieren" -#define TR_MOVE "Zeile verschieben" -#define TR_PASTE "Zeile einfügen" +#define TR_VOICELANG "Sprachansagen" +#define TR_UNITSSYSTEM "Einheiten" +#define TR_EDIT "Zeile Editieren" +#define TR_INSERT_BEFORE "Neue Zeile davor" +#define TR_INSERT_AFTER "Neue Zeile danach" +#define TR_COPY "Zeile kopieren" +#define TR_MOVE "Zeile verschieben" +#define TR_PASTE "Zeile einfügen" #define TR_PASTE_AFTER "Paste After" #define TR_PASTE_BEFORE "Paste Before" -#define TR_DELETE "Zeile löschen" -#define TR_INSERT "Neue Zeile" -#define TR_RESET_FLIGHT "Reset Flugdaten" -#define TR_RESET_TIMER1 "Reset Timer1" -#define TR_RESET_TIMER2 "Reset Timer2" -#define TR_RESET_TIMER3 "Reset Timer3" -#define TR_RESET_TELEMETRY "Reset Telemetrie" -#define TR_STATISTICS "Statistik Timer Gas" -#define TR_ABOUT_US "Die Programmierer" -#define TR_USB_JOYSTICK "USB Joystick (HID)" -#define TR_USB_MASS_STORAGE "USB Speicher (SD)" -#define TR_USB_SERIAL "USB Seriell (Debug)" -#define TR_SETUP_SCREENS "Setup Hautbildschirme" -#define TR_MONITOR_SCREENS "Monitore Mischer Kanal Logik" -#define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern -#define TR_SF "SF" //Spezial Funktionen -#define TR_GF "GF" // Globale Funktionen -#define TR_SPEAKER INDENT "Lautspr" -#define TR_BUZZER INDENT "Summer" -#define TR_BYTES "Bytes" -#define TR_MODULE_BIND BUTTON(TR("Bnd","Bind")) //9XR-Pro +#define TR_DELETE "Zeile löschen" +#define TR_INSERT "Neue Zeile" +#define TR_RESET_FLIGHT "Reset Flugdaten" +#define TR_RESET_TIMER1 "Reset Timer1" +#define TR_RESET_TIMER2 "Reset Timer2" +#define TR_RESET_TIMER3 "Reset Timer3" +#define TR_RESET_TELEMETRY "Reset Telemetrie" +#define TR_STATISTICS "Statistik Timer Gas" +#define TR_ABOUT_US "Die Programmierer" +#define TR_USB_JOYSTICK "USB Joystick (HID)" +#define TR_USB_MASS_STORAGE "USB Speicher (SD)" +#define TR_USB_SERIAL "USB Seriell (Debug)" +#define TR_SETUP_SCREENS "Setup Hautbildschirme" +#define TR_MONITOR_SCREENS "Monitore Mischer Kanal Logik" +#define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern +#define TR_SF "SF" //Spezial Funktionen +#define TR_GF "GF" // Globale Funktionen +#define TR_SPEAKER INDENT "Lautspr" +#define TR_BUZZER INDENT "Summer" +#define TR_BYTES "Bytes" +#define TR_MODULE_BIND BUTTON(TR("Bnd","Bind")) //9XR-Pro #define TR_POWERMETER_ATTN_NEEDED "Attenuator needed" #define TR_PXX2_SELECT_RX "Select RX..." #define TR_PXX2_DEFAULT "" #define TR_BT_SELECT_DEVICE "Select device..." -#define TR_DISCOVER "Discover" +#define TR_DISCOVER "Discover" #define TR_BUTTON_INIT BUTTON("Init") #define TR_WAITING "Waiting..." #define TR_RECEIVER_DELETE "Delete receiver?" #define TR_RECEIVER_RESET "Reset receiver?" #define TR_SHARE "Share" #define TR_BIND "Bind" -#define TR_REGISTER TR("Reg", "Register") -#define TR_MODULE_RANGE BUTTON(TR("Rng", "Range")) //9XR-Pro +#define TR_REGISTER TR("Reg", "Register") +#define TR_MODULE_RANGE BUTTON(TR("Rng", "Range")) //9XR-Pro #define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS") #define TR_DEL_BUTTON BUTTON(TR("Del", "Delete")) -#define TR_RESET_BTN BUTTON("Reset") -#define TR_DEBUG "Debug" -#define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_RESET_BTN BUTTON("Reset") +#define TR_DEBUG "Testen" +#define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) -#define TR_CALIBRATION "Calibration" -#define TR_SET BUTTON("Set") -#define TR_TRAINER "DSC Buchse PPM In/Out" -#define TR_ANTENNAPROBLEM CENTER "TX-Antennenproblem!" -#define TR_MODELIDUSED TR("ID schon benutzt", "Modell-ID schon benutzt") -#define TR_MODULE "Modul-Typ" +#define TR_CALIBRATION "Kalibrieren" +#define TR_SET BUTTON("Set") +#define TR_TRAINER "DSC Buchse PPM In/Out" +#define TR_ANTENNAPROBLEM CENTER "TX-Antennenproblem!" +#if defined(COLORLCD) + #define TR_MODELIDUSED "ID used in:" +#else + #define TR_MODELIDUSED TR("ID used in:","Receiver ID used in:") +#endif +#define TR_MODULE "Modul-Typ" #define TR_RX_NAME "Rx Name" -#define TR_TELEMETRY_TYPE TR("Typ", "Telemetrietyp") -#define TR_TELEMETRY_SENSORS "Sensoren" -#define TR_VALUE "Wert" -#define TR_REPEAT "Repeat" -#define TR_ENABLE "Enable" -#define TR_TOPLCDTIMER "Top LCD Timer" -#define TR_UNIT "Einheit" -#define TR_TELEMETRY_NEWSENSOR INDENT "Sensor hinzufügen ..." -#define TR_CHANNELRANGE TR(INDENT "Kanäle", INDENT "Ausgangs Kanäle") //wg 9XR-Pro -#define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenne auswählen") +#define TR_TELEMETRY_TYPE TR("Typ", "Telemetrietyp") +#define TR_TELEMETRY_SENSORS "Sensoren" +#define TR_VALUE "Wert" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Einheit" +#define TR_TELEMETRY_NEWSENSOR INDENT "Sensor hinzufügen ..." +#define TR_CHANNELRANGE TR(INDENT "Kanäle", INDENT "Ausgangs Kanäle") //wg 9XR-Pro #define TR_ANTENNACONFIRM1 "Ant. umschalten" -#define TR_ANTENNACONFIRM2 TR("Check antenna", "Ist eine externe Antenne installiert?") -#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" -#define TR_LOWALARM INDENT "Warnungsschwelle" -#define TR_CRITICALALARM INDENT "Kritischer Alarm" -#define TR_RSSIALARM_WARN "Telemetry" -#define TR_NO_RSSIALARM "Audiowarnungen ausgeschaltet" -#define TR_DISABLE_ALARM INDENT "Audiowarnungen ausschalten" -#define TR_ENABLE_POPUP "Freigabe Popup-Fenster" -#define TR_DISABLE_POPUP "Sperren Popup-Fenster" -#define TR_POPUP "Popup" -#define TR_MIN "Min" -#define TR_MAX "Max" -#define TR_CURVE_PRESET "Gerade 0 11 22 33 45" -#define TR_PRESET "Preset" -#define TR_MIRROR "Spiegeln" -#define TR_CLEAR "Löschen" -#define TR_RESET TR("Servowert reset","Servowerte rücksetzen") -#define TR_RESET_SUBMENU TR("Reset Werte ==>", "Reset=>Timer Flug Telem") -#define TR_COUNT "Punkte" -#define TR_PT "Pt" -#define TR_PTS "Pts" -#define TR_SMOOTH "Runden" -#define TR_COPY_STICKS_TO_OFS TR("Copy Stk ->Subtrim", "Kopie Stick to Servo-Mitte") -#define TR_COPY_TRIMS_TO_OFS TR("Copy Trim->Subtrim", "Kopie Trimm to Servo-Mitte") // "Trim to Subtrim" -#define TR_INCDEC "Inc/Decrement" -#define TR_GLOBALVAR "Global Var" -#define TR_MIXSOURCE "Mixer Quelle" -#define TR_CONSTANT "Konstant" -#define TR_PERSISTENT_MAH TR(INDENT "Spr. mAh", INDENT "Speichern mAh") //9XR-Pro -#define TR_PREFLIGHT "Vorflug-Checkliste" -#define TR_CHECKLIST TR(INDENT "Checkliste", INDENT "Checkliste anzeigen") //9XR-Pro -#define TR_FAS_OFFSET TR(INDENT "FAS-Ofs", INDENT "FAS-Offset") -#define TR_AUX_SERIAL_MODE "Serieller Port" -#define TR_SCRIPT "Lua-Skript" -#define TR_INPUTS "Eingaben" -#define TR_OUTPUTS "Ausgaben" -#define STR_EEBACKUP TR("EEPROM->SD", "Backup EEPROM->SD-Karte") -#define STR_FACTORYRESET TR("Werksreset", "Auf Werkseinstellungen") -#define TR_CONFIRMRESET TR("Alles löschen? ","ALLE Modelle+Einst. löschen?") -#define TR_TOO_MANY_LUA_SCRIPTS "Zu viele Lua-Skripte!" - +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") +#define TR_ANTENNACONFIRM2 TR("Check antenna", "Ist eine externe Antenne installiert?") +#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" +#define TR_LOWALARM INDENT "1.Warnschwelle" +#define TR_CRITICALALARM INDENT "Kritischer Alarm" +#define TR_RSSIALARM_WARN "RSSI" +#define TR_NO_RSSIALARM TR(INDENT "RSSI Alarms AUS", "RSSI Alarme ausschalten") +#define TR_DISABLE_ALARM TR(INDENT "Alarme AUS", INDENT "Telemetrie Alarme AUS") +#define TR_ENABLE_POPUP "Freigabe Popup-Fenster" +#define TR_DISABLE_POPUP "Sperren Popup-Fenster" +#define TR_POPUP "Popup" +#define TR_MIN "Min" +#define TR_MAX "Max" +#define TR_CURVE_PRESET "Gerade 0 11 22 33 45" +#define TR_PRESET "Preset" +#define TR_MIRROR "Spiegeln" +#define TR_CLEAR "Löschen" +#define TR_RESET TR("Servowert reset","Servowerte rücksetzen") +#define TR_RESET_SUBMENU TR("Reset Werte ==>", "Reset=>Timer Flug Telem") +#define TR_COUNT "Punkte" +#define TR_PT "Pt" +#define TR_PTS "Pts" +#define TR_SMOOTH "Runden" +#define TR_COPY_STICKS_TO_OFS TR("Copy Stk ->Subtrim", "Kopie Stick to Servo-Mitte") +#define TR_COPY_TRIMS_TO_OFS TR("Copy Trim->Subtrim", "Kopie Trimm to Servo-Mitte") // "Trim to Subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Quelle" +#define TR_CONSTANT "Konstant" +#define TR_PERSISTENT_MAH TR(INDENT "Spr. mAh", INDENT "Speichern mAh") //9XR-Pro +#define TR_PREFLIGHT "Vorflug-Checkliste" +#define TR_CHECKLIST TR(INDENT "Checkliste", INDENT "Checkliste anzeigen") //9XR-Pro +#define TR_FAS_OFFSET TR(INDENT "FAS-Ofs", INDENT "FAS-Offset") +#define TR_AUX_SERIAL_MODE "Serieller Port" +#define TR_SCRIPT "Lua-Skript" +#define TR_INPUTS "Eingaben" +#define TR_OUTPUTS "Ausgaben" +#define STR_EEBACKUP TR("EEPROM->SD", "Backup EEPROM->SD-Karte") +#define STR_FACTORYRESET TR("Werksreset", "Auf Werkseinstellungen") +#define TR_CONFIRMRESET TR("Alles löschen? ","ALLE Modelle+Einst. löschen?") +#define TR_TOO_MANY_LUA_SCRIPTS "Zu viele Skripte!" // Horus and Taranis specific column headers #define TR_PHASES_HEADERS_NAME "Name " @@ -1042,83 +1017,83 @@ #define TR_LSW_HEADERS_DURATION "Min Dauer" #define TR_LSW_HEADERS_DELAY "Verzögerung" -#define TR_GVAR_HEADERS_NAME "Name" -#define TR_GVAR_HEADERS_FM0 "Wert im FM0" -#define TR_GVAR_HEADERS_FM1 "Wert im FM1" -#define TR_GVAR_HEADERS_FM2 "Wert im FM2" -#define TR_GVAR_HEADERS_FM3 "Wert im FM3" -#define TR_GVAR_HEADERS_FM4 "Wert im FM4" -#define TR_GVAR_HEADERS_FM5 "Wert im FM5" -#define TR_GVAR_HEADERS_FM6 "Wert im FM6" -#define TR_GVAR_HEADERS_FM7 "Wert im FM7" -#define TR_GVAR_HEADERS_FM8 "Wert im FM8" +#define TR_GVAR_HEADERS_NAME "Name" +#define TR_GVAR_HEADERS_FM0 "Wert im FM0" +#define TR_GVAR_HEADERS_FM1 "Wert im FM1" +#define TR_GVAR_HEADERS_FM2 "Wert im FM2" +#define TR_GVAR_HEADERS_FM3 "Wert im FM3" +#define TR_GVAR_HEADERS_FM4 "Wert im FM4" +#define TR_GVAR_HEADERS_FM5 "Wert im FM5" +#define TR_GVAR_HEADERS_FM6 "Wert im FM6" +#define TR_GVAR_HEADERS_FM7 "Wert im FM7" +#define TR_GVAR_HEADERS_FM8 "Wert im FM8" // Horus footer descriptions -#define TR_LSW_DESCRIPTIONS { "Vergleich oder Funktion", "Erste Variable", "Zweite Variable/Konstante", "Zweite Variable/Konstante", "Weitere UND Bedingung für Freigabe des Log Schalters", "ON-Zeit des Log Schalters wenn Bedingung ok", "Mindestdauer der Bedingung damit Log Schalter ON geht" } +#define TR_LSW_DESCRIPTIONS { "Vergleich oder Funktion", "Erste Variable", "Zweite Variable/Konstante", "Zweite Variable/Konstante", "Weitere UND Bedingung für Freigabe des Log Schalters", "ON-Zeit des Log Schalters wenn Bedingung ok", "Mindestdauer der Bedingung damit Log Schalter ON geht" } //Taranis About screen -#define TR_ABOUTUS "Über OpenTx" +#define TR_ABOUTUS "Über OpenTx" -#define TR_ABOUT_OPENTX_1 "OpenTX ist Open Source," -#define TR_ABOUT_OPENTX_2 "nicht kommerziell, ohne" -#define TR_ABOUT_OPENTX_3 "Funktionsgarantie, frei" -#define TR_ABOUT_OPENTX_4 "verfügbar. Unterstützung" -#define TR_ABOUT_OPENTX_5 "durch Spenden willkommen" +#define TR_ABOUT_OPENTX_1 "OpenTX ist Open Source," +#define TR_ABOUT_OPENTX_2 "nicht kommerziell, ohne" +#define TR_ABOUT_OPENTX_3 "Funktionsgarantie, frei" +#define TR_ABOUT_OPENTX_4 "verfügbar. Unterstützung" +#define TR_ABOUT_OPENTX_5 "durch Spenden willkommen" -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "OpenTX Hauptauthor" -#define TR_ABOUT_BERTRAND_3 "Companion-Mitentwickler" +#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" +#define TR_ABOUT_BERTRAND_2 "OpenTX Hauptauthor" +#define TR_ABOUT_BERTRAND_3 "Companion-Mitentwickler" -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Code- und Treiber-Guru" -#define TR_ABOUT_MIKE_3 "Wohl einer der Besten." -#define TR_ABOUT_MIKE_4 "Sehr inspirierend." +#define TR_ABOUT_MIKE_1 "Mike Blandford" +#define TR_ABOUT_MIKE_2 "Code- und Treiber-Guru" +#define TR_ABOUT_MIKE_3 "Wohl einer der Besten." +#define TR_ABOUT_MIKE_4 "Sehr inspirierend." -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Companion-Hauptentwickler" -#define TR_ABOUT_ROMOLO_3 "" +#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" +#define TR_ABOUT_ROMOLO_2 "Companion-Hauptentwickler" +#define TR_ABOUT_ROMOLO_3 "" -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Funktionalität und Tests," -#define TR_ABOUT_ANDRE_3 "Debugging, Dokumentation" +#define TR_ABOUT_ANDRE_1 "Andre Bernet" +#define TR_ABOUT_ANDRE_2 "Funktionalität und Tests," +#define TR_ABOUT_ANDRE_3 "Debugging, Dokumentation" -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "Openrcforums Webmaster" +#define TR_ABOUT_ROB_1 "Rob Thomson" +#define TR_ABOUT_ROB_2 "Openrcforums Webmaster" -#define TR_ABOUT_KJELL_1 "Kjell Kernen" -#define TR_ABOUT_KJELL_2 "www.open-tx.org Hauptautor" -#define TR_ABOUT_KJELL_3 "Author von OpenTX Recorder" -#define TR_ABOUT_KJELL_4 "Companion contributor" +#define TR_ABOUT_KJELL_1 "Kjell Kernen" +#define TR_ABOUT_KJELL_2 "www.open-tx.org Hauptautor" +#define TR_ABOUT_KJELL_3 "Author von OpenTX Recorder" +#define TR_ABOUT_KJELL_4 "Companion contributor" -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Grafikdesigner" +#define TR_ABOUT_MARTIN_1 "Martin Hotar" +#define TR_ABOUT_MARTIN_2 "Grafikdesigner" #if defined(PCBFRSKY) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" - #define TR_ABOUT_HARDWARE_3 "Firmware contributor" + #define TR_ABOUT_HARDWARE_1 "FrSky" + #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" + #define TR_ABOUT_HARDWARE_3 "Firmware contributor" #else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" - #define TR_ABOUT_HARDWARE_3 "" + #define TR_ABOUT_HARDWARE_1 "Brent Nelson" + #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" + #define TR_ABOUT_HARDWARE_3 "" #endif -#define TR_ABOUT_PARENTS_1 "Vorgänger-Projekte" -#define TR_ABOUT_PARENTS_2 "Ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" +#define TR_ABOUT_PARENTS_1 "Vorgänger-Projekte" +#define TR_ABOUT_PARENTS_2 "Ersky9x (Mike Blandford)" +#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" +#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" -#define TR_CHR_SHORT 's' // Taste short -#define TR_CHR_LONG 'l' // Taste long -#define TR_CHR_TOGGLE 't' // Taste als togglefunktion = Ein Aus Ein -#define TR_CHR_HOUR 'h' // Stunden -#define TR_CHR_INPUT 'I' // Values between A-I will work +#define TR_CHR_SHORT 's' // Taste short +#define TR_CHR_LONG 'l' // Taste long +#define TR_CHR_TOGGLE 't' // Taste als togglefunktion = Ein Aus Ein +#define TR_CHR_HOUR 'h' // Stunden +#define TR_CHR_INPUT 'I' // Values between A-I will work -#define TR_BEEP_VOLUME "Beep-Lautst." -#define TR_WAV_VOLUME "Wave-Lautst." -#define TR_BG_VOLUME TR("Hintergr-Lautst.", "Hintergrund-Lautstärke") +#define TR_BEEP_VOLUME "Beep-Lautst." +#define TR_WAV_VOLUME "Wav-Lautst." +#define TR_BG_VOLUME TR("Bgr-Lautst.", "Hintergrund-Lautstärke") -#define TR_TOP_BAR "Infozeile" +#define TR_TOP_BAR "Infozeile" #define TR_FLASH_ERASE "Flash erase..." #define TR_FLASH_WRITE "Flash write..." #define TR_OTA_UPDATE "OTA update..." @@ -1127,154 +1102,154 @@ #define TR_UNSUPPORTED_RX "Unsupported RX" #define TR_OTA_UPDATE_ERROR "OTA update error" #define TR_DEVICE_RESET "Device reset..." -#define TR_ALTITUDE INDENT "Höhenanzeige" -#define TR_SCALE "Skalieren" -#define TR_VIEW_CHANNELS "Zeige Kanäle" -#define TR_VIEW_NOTES "Zeige Notizen" -#define TR_MODEL_SELECT "Modell auswählen" -#define TR_MODS_FORBIDDEN "Anpassung verboten!" -#define TR_UNLOCKED "Entsperrt" -#define TR_ID "ID" -#define TR_PRECISION "Präzision" -#define TR_RATIO "Umrechnung" //Faktor, Mulitplikator, Teiler 0,1 bis 10,0 -#define TR_FORMULA "Formel" -#define TR_CELLINDEX "Zellenindex" -#define TR_LOGS "Log Daten" -#define TR_OPTIONS "Optionen" -#define TR_FIRMWARE_OPTIONS "Firmware options" +#define TR_ALTITUDE INDENT "Höhenanzeige" +#define TR_SCALE "Skalieren" +#define TR_VIEW_CHANNELS "Zeige Kanäle" +#define TR_VIEW_NOTES "Zeige Notizen" +#define TR_MODEL_SELECT "Modell auswählen" +#define TR_MODS_FORBIDDEN "Anpassung verboten!" +#define TR_UNLOCKED "Entsperrt" +#define TR_ID "ID" +#define TR_PRECISION "Präzision" +#define TR_RATIO "Umrechnung" //Faktor, Mulitplikator, Teiler 0,1 bis 10,0 +#define TR_FORMULA "Formel" +#define TR_CELLINDEX "Zellenindex" +#define TR_LOGS "Log Daten" +#define TR_OPTIONS "Optionen" +#define TR_FIRMWARE_OPTIONS "Firmwareoptionen" -#define TR_ALTSENSOR "Höhen Sensor" -#define TR_CELLSENSOR "Zellen Sensor" -#define TR_GPSSENSOR "GPS Sensor" -#define TR_CURRENTSENSOR "Sensor" -#define TR_AUTOOFFSET "Auto Offset" -#define TR_ONLYPOSITIVE "Nur Positiv" -#define TR_FILTER "Filter aktiv" -#define TR_TELEMETRYFULL "Telemetriezeilen voll!" -#define TR_SERVOS_OK "Servos OK" -#define TR_SERVOS_KO "Servos KO" -#define TR_INVERTED_SERIAL INDENT "Invert." -#define TR_IGNORE_INSTANCE TR(INDENT "Ignr. Inst.", INDENT "Ignor. Instanzen") -#define TR_DISCOVER_SENSORS "Start Sensorsuche" -#define TR_STOP_DISCOVER_SENSORS "Stop Sensorsuche" -#define TR_DELETE_ALL_SENSORS "Lösche alle Sensoren" -#define TR_CONFIRMDELETE "Wirklich alle " LCDW_128_480_LINEBREAK "löschen ?" -#define TR_SELECT_WIDGET "Widget auswählen" // grafisches Element -#define TR_REMOVE_WIDGET "Widget löschen" -#define TR_WIDGET_SETTINGS "Widget einstellen" -#define TR_REMOVE_SCREEN "Screen löschen" -#define TR_SETUP_WIDGETS "Setup widgets" -#define TR_USER_INTERFACE "User interface" -#define TR_THEME "Theme" -#define TR_SETUP "Setup" -#define TR_MAINVIEWX "Ansicht X" -#define TR_LAYOUT "Layout" -#define TR_ADDMAINVIEW "Ansicht hinzufügen" -#define TR_BACKGROUND_COLOR "Hintergrundfarbe" -#define TR_MAIN_COLOR "Hauptfarbe" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_ALTSENSOR "Höhen Sensor" +#define TR_CELLSENSOR "Zellen Sensor" +#define TR_GPSSENSOR "GPS Sensor" +#define TR_CURRENTSENSOR "Sensor" +#define TR_AUTOOFFSET "Auto Offset" +#define TR_ONLYPOSITIVE "Nur Positiv" +#define TR_FILTER "Filter aktiv" +#define TR_TELEMETRYFULL TR("Telem voll!", "Telemetriezeilen voll!") +#define TR_SERVOS_OK "Servos OK" +#define TR_SERVOS_KO "Servos KO" +#define TR_INVERTED_SERIAL INDENT "Invert." +#define TR_IGNORE_INSTANCE TR(INDENT "No Inst.", INDENT "Ignor. Instanzen") +#define TR_DISCOVER_SENSORS "Start Sensorsuche" +#define TR_STOP_DISCOVER_SENSORS "Stop Sensorsuche" +#define TR_DELETE_ALL_SENSORS "Lösche alle Sensoren" +#define TR_CONFIRMDELETE "Wirklich alle " LCDW_128_480_LINEBREAK "löschen ?" +#define TR_SELECT_WIDGET "Widget auswählen" // grafisches Element +#define TR_REMOVE_WIDGET "Widget löschen" +#define TR_WIDGET_SETTINGS "Widget einstellen" +#define TR_REMOVE_SCREEN "Screen löschen" +#define TR_SETUP_WIDGETS "Setup widgets" +#define TR_USER_INTERFACE "User interface" +#define TR_THEME "Theme" +#define TR_SETUP "Setup" +#define TR_MAINVIEWX "Ansicht X" +#define TR_LAYOUT "Layout" +#define TR_ADDMAINVIEW "Ansicht hinzufügen" +#define TR_BACKGROUND_COLOR "Hintergrundfarbe" +#define TR_MAIN_COLOR "Hauptfarbe" +#define TR_TEXT_VIEWER "Text Viewer" // ----------------------------- Symbole für Auswahlliste---------- -#define TR_MENU_INPUTS "\314Inputs" -#define TR_MENU_LUA "\322Lua Skripte" -#define TR_MENU_STICKS "\307Knüppel" -#define TR_MENU_POTS "\310Potis" -#define TR_MENU_MAX "\315MAX" -#define TR_MENU_HELI "\316Heli-TS CYC1-3" -#define TR_MENU_TRIMS "\313Trimmung" -#define TR_MENU_SWITCHES "\312Schalter" -#define TR_MENU_LOGICAL_SWITCHES "\312Log. Schalter" -#define TR_MENU_TRAINER "\317Trainer" -#define TR_MENU_CHANNELS "\320Kanäle" -#define TR_MENU_GVARS "\311Glob. Vars" -#define TR_MENU_TELEMETRY "\321Telemetrie" -#define TR_MENU_DISPLAY "DISPLAY" -#define TR_MENU_OTHER "Weitere" -#define TR_MENU_INVERT "Invertieren" -#define TR_JITTER_FILTER "ADC Filter" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua Skripte" +#define TR_MENU_STICKS "\307Knüppel" +#define TR_MENU_POTS "\310Potis" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Heli-TS CYC1-3" +#define TR_MENU_TRIMS "\313Trimmung" +#define TR_MENU_SWITCHES "\312Schalter" +#define TR_MENU_LOGICAL_SWITCHES "\312Log. Schalter" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Kanäle" +#define TR_MENU_GVARS "\311Glob. Vars" +#define TR_MENU_TELEMETRY "\321Telemetrie" +#define TR_MENU_DISPLAY "DISPLAY" +#define TR_MENU_OTHER "Weitere" +#define TR_MENU_INVERT "Invertieren" +#define TR_JITTER_FILTER "ADC Filter" // ---------------------------------------------------------------- -#define ZSTR_RSSI "RSSI" +#define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" -#define ZSTR_RAS "SWR" -#define ZSTR_A1 "A1" -#define ZSTR_A2 "A2" -#define ZSTR_A3 "A3" -#define ZSTR_A4 "A4" -#define ZSTR_BATT "RxBt" -#define ZSTR_ALT "Alt" -#define ZSTR_TEMP1 "Tmp1" -#define ZSTR_TEMP2 "Tmp2" -#define ZSTR_RPM "RPM" -#define ZSTR_FUEL "Fuel" -#define ZSTR_VSPD "VSpd" -#define ZSTR_ACCX "AccX" -#define ZSTR_ACCY "AccY" -#define ZSTR_ACCZ "AccZ" -#define ZSTR_GYROX "GYRX" -#define ZSTR_GYROY "GYRY" -#define ZSTR_GYROZ "GYRZ" -#define ZSTR_CURR "Curr" -#define ZSTR_CAPACITY "Capa" -#define ZSTR_VFAS "VFAS" -#define ZSTR_ASPD "ASpd" -#define ZSTR_GSPD "GSpd" -#define ZSTR_HDG "Hdg" -#define ZSTR_SATELLITES "Sats" -#define ZSTR_CELLS "Cels" -#define ZSTR_GPSALT "GAlt" -#define ZSTR_GPSDATETIME "Date" -#define ZSTR_GPS "GPS" -#define ZSTR_BATT1_VOLTAGE "RB1V" -#define ZSTR_BATT2_VOLTAGE "RB2V" -#define ZSTR_BATT1_CURRENT "RB1A" -#define ZSTR_BATT2_CURRENT "RB2A" -#define ZSTR_BATT1_CONSUMPTION "RB1C" -#define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_BATT1_TEMP "RB1T" -#define ZSTR_BATT2_TEMP "RB2T" -#define ZSTR_RB_STATE "RBS" -#define ZSTR_CHANS_STATE "RBCS" -#define ZSTR_RX_RSSI1 "1RSS" -#define ZSTR_RX_RSSI2 "2RSS" -#define ZSTR_RX_QUALITY "RQly" -#define ZSTR_RX_SNR "RSNR" -#define ZSTR_RX_NOISE "RNse" -#define ZSTR_ANTENNA "ANT" -#define ZSTR_RF_MODE "RFMD" -#define ZSTR_TX_POWER "TPWR" -#define ZSTR_TX_RSSI "TRSS" -#define ZSTR_TX_QUALITY "TQly" -#define ZSTR_TX_SNR "TSNR" -#define ZSTR_TX_NOISE "TNse" -#define ZSTR_PITCH "Ptch" -#define ZSTR_ROLL "Roll" -#define ZSTR_YAW "Yaw" -#define ZSTR_FLIGHT_MODE "FM" -#define ZSTR_THROTTLE "Thr" -#define ZSTR_QOS_A "FdeA" -#define ZSTR_QOS_B "FdeB" -#define ZSTR_QOS_L "FdeL" -#define ZSTR_QOS_R "FdeR" -#define ZSTR_QOS_F "FLss" -#define ZSTR_QOS_H "Hold" -#define ZSTR_BIND "BIND" -#define ZSTR_LAP_NUMBER "Lap " -#define ZSTR_GATE_NUMBER "Gate" -#define ZSTR_LAP_TIME "LapT" -#define ZSTR_GATE_TIME "GteT" -#define ZSTR_ESC_VOLTAGE "EscV" -#define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" -#define ZSTR_ESC_CONSUMPTION "EscC" -#define ZSTR_ESC_TEMP "EscT" -#define ZSTR_SD1_CHANNEL "Chan" -#define ZSTR_GASSUIT_TEMP1 "GTp1" -#define ZSTR_GASSUIT_TEMP2 "GTp2" -#define ZSTR_GASSUIT_RPM "GRPM" -#define ZSTR_GASSUIT_FLOW "GFlo" -#define ZSTR_GASSUIT_CONS "GFue" -#define ZSTR_GASSUIT_RES_VOL "GRVl" -#define ZSTR_GASSUIT_RES_PERC "GRPc" -#define ZSTR_GASSUIT_MAX_FLOW "GMFl" -#define ZSTR_GASSUIT_AVG_FLOW "GAFl" -#define ZSTR_SBEC_VOLTAGE "BecV" -#define ZSTR_SBEC_CURRENT "BecA" +#define ZSTR_RAS "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP1 "Tmp1" +#define ZSTR_TEMP2 "Tmp2" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_GYROX "GYRX" +#define ZSTR_GYROY "GYRY" +#define ZSTR_GYROZ "GYRZ" +#define ZSTR_CURR "Curr" +#define ZSTR_CAPACITY "Capa" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_SATELLITES "Sats" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" +#define ZSTR_BATT1_VOLTAGE "RB1V" +#define ZSTR_BATT2_VOLTAGE "RB2V" +#define ZSTR_BATT1_CURRENT "RB1A" +#define ZSTR_BATT2_CURRENT "RB2A" +#define ZSTR_BATT1_CONSUMPTION "RB1C" +#define ZSTR_BATT2_CONSUMPTION "RB2C" +#define ZSTR_BATT1_TEMP "RB1T" +#define ZSTR_BATT2_TEMP "RB2T" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" +#define ZSTR_RX_RSSI1 "1RSS" +#define ZSTR_RX_RSSI2 "2RSS" +#define ZSTR_RX_QUALITY "RQly" +#define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" +#define ZSTR_ANTENNA "ANT" +#define ZSTR_RF_MODE "RFMD" +#define ZSTR_TX_POWER "TPWR" +#define ZSTR_TX_RSSI "TRSS" +#define ZSTR_TX_QUALITY "TQly" +#define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" +#define ZSTR_PITCH "Ptch" +#define ZSTR_ROLL "Roll" +#define ZSTR_YAW "Yaw" +#define ZSTR_FLIGHT_MODE "FM" +#define ZSTR_THROTTLE "Thr" +#define ZSTR_QOS_A "FdeA" +#define ZSTR_QOS_B "FdeB" +#define ZSTR_QOS_L "FdeL" +#define ZSTR_QOS_R "FdeR" +#define ZSTR_QOS_F "FLss" +#define ZSTR_QOS_H "Hold" +#define ZSTR_BIND "BIND" +#define ZSTR_LAP_NUMBER "Lap " +#define ZSTR_GATE_NUMBER "Gate" +#define ZSTR_LAP_TIME "LapT" +#define ZSTR_GATE_TIME "GteT" +#define ZSTR_ESC_VOLTAGE "EscV" +#define ZSTR_ESC_CURRENT "EscA" +#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_CONSUMPTION "EscC" +#define ZSTR_ESC_TEMP "EscT" +#define ZSTR_SD1_CHANNEL "Chan" +#define ZSTR_GASSUIT_TEMP1 "GTp1" +#define ZSTR_GASSUIT_TEMP2 "GTp2" +#define ZSTR_GASSUIT_RPM "GRPM" +#define ZSTR_GASSUIT_FLOW "GFlo" +#define ZSTR_GASSUIT_CONS "GFue" +#define ZSTR_GASSUIT_RES_VOL "GRVl" +#define ZSTR_GASSUIT_RES_PERC "GRPc" +#define ZSTR_GASSUIT_MAX_FLOW "GMFl" +#define ZSTR_GASSUIT_AVG_FLOW "GAFl" +#define ZSTR_SBEC_VOLTAGE "BecV" +#define ZSTR_SBEC_CURRENT "BecA" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index a824f620e..f3af747ff 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -132,24 +132,6 @@ #define TR_RETA123 "RETA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -398,14 +380,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -506,6 +480,7 @@ #define TR_FLMODE TR("Mode", "Modes") #define TR_MIXWARNING "Warning" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Multiplex" #define TR_DELAYDOWN "Delay dn" @@ -556,8 +531,8 @@ #define TR_BLOFFBRIGHTNESS INDENT "OFF brightness" #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Splash screen" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR(INDENT "T-Warning", INDENT "Throttle state") #define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "Switch positions") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -666,8 +641,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -829,6 +805,7 @@ #else #define TR_BLUETOOTH_MODES "---\0 ""Telemetry""Trainer\0" #endif + #define TR_SD_INFO_TITLE "SD INFO" #define TR_SD_TYPE "Type:" #define TR_SD_SPEED "Speed:" @@ -860,8 +837,8 @@ #define TR_WRITING "Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" #define TR_INTERNALRF "Internal RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -961,13 +938,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "Channel Range") #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires FLEX non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Low alarm" #define TR_CRITICALALARM INDENT "Critical alarm" #define TR_RSSIALARM_WARN "RSSI" @@ -1165,7 +1150,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f79fd22e7..2938d8ff8 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -132,24 +132,6 @@ #define TR_RETA123 "RETA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -413,14 +395,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -526,6 +500,7 @@ #define TR_FLMODE TR("Modo","Modos") #define TR_MIXWARNING "Aviso" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Multpx" #define TR_DELAYDOWN "Delay Dn" @@ -576,8 +551,8 @@ #define TR_BLOFFBRIGHTNESS INDENT"MENOS Brillo" #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Ptalla.inicio" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR("Aviso-A", INDENT "Aviso Acelerador") #define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso Intrptor") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -650,7 +625,6 @@ #endif #define TR_CHANNELS2FAILSAFE "Channels=>Failsafe" #define TR_CHANNEL2FAILSAFE "Channel=>Failsafe" -#endif #define TR_MENUMODELSEL TR("MODELSEL", "SELECCION MODELO") #define TR_MENUSETUP TR("CONF.", "CONF.MODELO") #define TR_MENUFLIGHTMODE "MODO VUELO" @@ -691,8 +665,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -885,8 +860,8 @@ #define TR_WRITING "Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" #define TR_INTERNALRF "Interna RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -982,13 +957,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Gama de canales" #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1187,7 +1170,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index bff8f2dc1..de8f9946f 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -132,24 +132,6 @@ #define TR_RETA123 "RETA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -413,14 +395,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -518,6 +492,7 @@ #define TR_FLMODE TR("Mode","Modes") #define TR_MIXWARNING "Warning" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Multpx" #define TR_DELAYDOWN "Delay Dn" @@ -568,8 +543,8 @@ #define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Splash screen" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR("T-Warning", INDENT "Throttle Warning") #define TR_SWITCHWARNING TR("S-Warning", INDENT "Switch Warning") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -684,8 +659,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -878,8 +854,8 @@ #define TR_WRITING "Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" #define TR_INTERNALRF "Internal RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -975,13 +951,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Channel Range" #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1174,7 +1158,7 @@ #define TR_SETUP_WIDGETS "Setup widgets" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 27c9f3a7f..6090c4e2b 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -132,24 +132,6 @@ #define TR_RETA123 "DPGA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -415,14 +397,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Mini.\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Maxi.\0 ""Diff.\0 " -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\007" -#define TR_VANTENNATYPES "Interne""Externe" -#else -#define LEN_VANTENNATYPES "\007" -#define TR_VANTENNATYPES "Interne""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -524,6 +498,7 @@ #define TR_FLMODE TR("Phase", "Phases") #define TR_MIXWARNING "Alerte" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Opération" #define TR_DELAYDOWN "Retard bas" @@ -575,8 +550,8 @@ #define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF" #define TR_BLCOLOR INDENT "Couleur" #define TR_SPLASHSCREEN "Logo d'accueil" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz") #define TR_SWITCHWARNING TR(INDENT "Alerte int", INDENT "Pos. interrupteurs") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -688,6 +663,7 @@ #define TR_MULTI_TELEMETRY "Télémétrie" #define TR_MULTI_VIDFREQ TR(INDENT "Fréq. vidéo", INDENT "Fréquence vidéo") #define TR_RFPOWER TR(INDENT "Puiss. RF", INDENT "Puissance RF") +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Option perso") #define TR_MULTI_AUTOBIND TR(INDENT "Bind auto", INDENT "Bind automatique") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodét.", INDENT "Autodétection") @@ -880,8 +856,8 @@ #define TR_WRITING TR("\14Ecriture...", "\032Ecriture...") #define TR_CONFIRM_FORMAT "Confirmer Formatage?" #define TR_INTERNALRF "HF interne" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -976,14 +952,21 @@ #define TR_UNIT "Unité" #define TR_TELEMETRY_NEWSENSOR TR(INDENT"Nouveau capteur...", INDENT "Ajout d'un nouveau capteur...") #define TR_CHANNELRANGE TR(INDENT "Canaux", INDENT "Plage de canaux") -#define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenne", INDENT "Choix antenne") #define TR_ANTENNACONFIRM1 "Vraiment changer?" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\021" +#define TR_ANTENNA_MODES "Interne\0 ""Ask\0 ""Par modèle\0 ""Interne + Externe" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Vérif antenne", "Installer l'antenne d'abord!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Nécessite firm." -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "R9M non certifié" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "R9M non certifié" #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRIE") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 633a4964d..bb6a7540b 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -135,24 +135,6 @@ #define TR_RETA123 "DEMA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -419,14 +401,6 @@ #define LEN_VCELLINDEX "\010" #define TR_VCELLINDEX "Minore\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Maggiore""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -528,6 +502,7 @@ #define TR_FLMODE "Fase" #define TR_MIXWARNING "Avviso" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "MultPx" #define TR_DELAYDOWN "Post.Giù " @@ -578,8 +553,8 @@ #define TR_BLOFFBRIGHTNESS TR(INDENT"Lumin. OFF",INDENT"Luminosità OFF") #define TR_BLCOLOR INDENT "Colore" #define TR_SPLASHSCREEN TR("Schermo avvio", "Schermata di avvio") -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR("All. Mot.", INDENT "Allarme Motore") #define TR_SWITCHWARNING TR("Avv. Int.", INDENT "Avviso Interr.") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -688,8 +663,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -882,8 +858,8 @@ #define TR_WRITING "\032Scrivendo..." #define TR_CONFIRM_FORMAT "Confermi Format?" #define TR_INTERNALRF "Modulo Interno" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -979,13 +955,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Aggiungi nuovo sensore..." #define TR_CHANNELRANGE INDENT "Numero Canali" #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1185,7 +1169,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Ingressi" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 474ef93f6..2e6f4d24d 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -133,24 +133,6 @@ #define TR_RETA123 "RETA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -398,14 +380,6 @@ TR_GYR_VSRCRAW #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Laagste""1e Cel\0""2e Cel\0""3e Cel\0""4e Cel\0""5e Cel\0""6e Cel\0""Hoogste""Delta\0 " -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -506,6 +480,7 @@ TR_GYR_VSRCRAW #define TR_FLMODE TR("Mode", "Modes") #define TR_MIXWARNING "Melding" #define TR_OFF "UIT" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Multpx" #define TR_DELAYDOWN "Vertr.Dn" @@ -558,8 +533,8 @@ TR_GYR_VSRCRAW #define TR_BLOFFBRIGHTNESS INDENT "Uit-Helderheid" #define TR_BLCOLOR INDENT "Kleur" #define TR_SPLASHSCREEN "Startscherm Aan" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR(INDENT "T-Warning", INDENT "Throttle Status") #define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "Switch Posities") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -673,8 +648,9 @@ TR_GYR_VSRCRAW #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -867,8 +843,8 @@ TR_GYR_VSRCRAW #define TR_WRITING "\032Schrijven..." #define TR_CONFIRM_FORMAT "Formatteren bevestigen?" #define TR_INTERNALRF "Interne RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -963,14 +939,21 @@ TR_GYR_VSRCRAW #define TR_UNIT "Eenheid" #define TR_TELEMETRY_NEWSENSOR INDENT "Sensor toevoegen ..." #define TR_CHANNELRANGE TR(INDENT "Kanalen", INDENT "Uitgangs Kanalen") //wg 9XR-Pro -#define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Antennes wisselen?" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Is er zeker een antenne geplaatst!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Waarschuwing" #define TR_CRITICALALARM INDENT "Kritiek Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1175,7 +1158,7 @@ TR_GYR_VSRCRAW #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 3e977571d..abf6a6969 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -133,24 +133,6 @@ #define TR_RETA123 "KWGL123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -416,14 +398,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Niskie\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Wysokie""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -525,6 +499,7 @@ #define TR_FLMODE "Tryb" #define TR_MIXWARNING "UWAGA" #define TR_OFF "Wył." +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Złącz." #define TR_DELAYDOWN "Opózn.(-)" @@ -575,8 +550,8 @@ #define TR_BLOFFBRIGHTNESS INDENT"Jasność wył." #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Logo ekranu" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR(INDENT"OstrzGaz", INDENT "OstrzeżenieGaz") #define TR_SWITCHWARNING TR(INDENT "OstrzPrzeł", INDENT "PozycjaPrzeł") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -685,8 +660,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -879,8 +855,8 @@ #define TR_WRITING "\032Zapis... " #define TR_CONFIRM_FORMAT "Zatwierdź Format?" #define TR_INTERNALRF "Wewn.Moduł RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -976,13 +952,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Dodaj nowy czujnik..." #define TR_CHANNELRANGE TR(INDENT "ZakrKn",INDENT "Zakres kanału") #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1182,7 +1166,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Wejści" #define TR_MENU_LUA "\322SkryptyLUA" @@ -1287,4 +1271,4 @@ #define ZSTR_GASSUIT_MAX_FLOW "GMFl" #define ZSTR_GASSUIT_AVG_FLOW "GAFl" #define ZSTR_SBEC_VOLTAGE "BecV" -#define ZSTR_SBEC_CURRENT "BecA" \ No newline at end of file +#define ZSTR_SBEC_CURRENT "BecA" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 669e3dc17..63350ac50 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -131,24 +131,6 @@ #define TR_RETA123 "LPMA123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -398,14 +380,6 @@ #define LEN_VCELLINDEX "\007" #define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -511,6 +485,7 @@ #define TR_FLMODE "Fase" #define TR_MIXWARNING "Aviso" #define TR_OFF "OFF" +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Aplicar" #define TR_DELAYDOWN "Atraso Dn" @@ -561,8 +536,8 @@ #define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness" #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Splash screen" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_THROTTLEWARNING TR("Avisa Acel", INDENT "Avisa Acel") #define TR_SWITCHWARNING TR("Avisa Chav", INDENT "Avisa Chav") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -676,8 +651,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -869,8 +845,8 @@ #define TR_WRITING "Writing..." #define TR_CONFIRM_FORMAT "Confirm Format?" #define TR_INTERNALRF "Internal RF" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -966,13 +942,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Channel Range" #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1171,7 +1155,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 80a7a430f..48fd62151 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -130,24 +130,6 @@ #define TR_RETA123 "RHGS123" #endif -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#else - #define TR_DSM2 -#endif - -#define TR_VPROTOS "PPM\0 " TR_PXX TR_DSM2 - #if defined(PCBSKY9X) && defined(REVX) #define LEN_VOUTPUT_TYPE "\011" #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" @@ -411,14 +393,6 @@ #define LEN_VCELLINDEX "\010" #define TR_VCELLINDEX "Lägsta\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Högsta\0 ""Skillnad" -#if defined(PCBX10) || defined(PCBXLITE) -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""External" -#else -#define LEN_VANTENNATYPES "\010" -#define TR_VANTENNATYPES "Internal""Ext+Int\0" -#endif - #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" @@ -524,6 +498,7 @@ #define TR_FLMODE TR("Läge","Flyglägen") #define TR_MIXWARNING "Varning" #define TR_OFF "Av " +#define TR_ANTENNA "Antenna" #define TR_NO_INFORMATION TR("No info", "No information") #define TR_MULTPX "Multpx" #define TR_DELAYDOWN "Dröj Ned" @@ -573,8 +548,8 @@ #define TR_BLONBRIGHTNESS INDENT "På Ljusstyrka" #define TR_BLOFFBRIGHTNESS INDENT "Av Ljusstyrka" #define TR_SPLASHSCREEN "Startbild" -#define TR_PWR_ON_SPEED "Pwr On speed" -#define TR_PWR_OFF_SPEED "Pwr Off speed" +#define TR_PWR_ON_DELAY "Pwr On delay" +#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_BLCOLOR INDENT "Color" #define TR_THROTTLEWARNING TR("Gasvarning", INDENT "Gasvarning") #define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning") @@ -685,8 +660,9 @@ #define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_RFPOWER "RF Power" +#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_OPTION TR("Option", "Option value") -#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on powerup") +#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetect format") #define TR_MULTI_LOWPOWER TR(INDENT "Low power", INDENT "Low power mode") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") @@ -879,8 +855,8 @@ #define TR_WRITING "\032Skriver..." #define TR_CONFIRM_FORMAT "Formatera Minnet?" #define TR_INTERNALRF "Intern Radio" -#define TR_INTERNAL_MODULE "Internal module" -#define TR_EXTERNAL_MODULE "External module" +#define TR_INTERNAL_MODULE TR("Int. module","Internal module") +#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_MORE_OPTIONS_AVAILABLE "More options available" @@ -976,13 +952,21 @@ #define TR_TELEMETRY_NEWSENSOR INDENT "Lägg till sensor..." #define TR_CHANNELRANGE INDENT "Kanalområde" #define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency") -#define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") -#define TR_ANTENNACONFIRM1 "Really switch?" +#define TR_ANTENNACONFIRM1 "EXT. ANTENNA" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\023" +#define TR_ANTENNA_MODES "Internal\0 ""Ask\0 ""Per model\0 ""Internal + External" +#else +#define LEN_ANTENNA_MODES "\011" +#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires non" -#define TR_R9M_PROTO_FCC_WARN_LINE1 "Requires FCC" -#define TR_R9M_PROTO_EU_WARN_LINE1 "Requires EU" -#define TR_R9M_PROTO_WARN_LINE2 "certified firmware" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware" #define TR_LOWALARM INDENT "Låg-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") @@ -1182,7 +1166,7 @@ #define TR_ADDMAINVIEW "Add main view" #define TR_BACKGROUND_COLOR "Background color" #define TR_MAIN_COLOR "Main color" -#define TR_TEXT_VIEWER "Text Viever" +#define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "\322Lua scripts" diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 34cf0d728..8b85a1df6 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -75,7 +75,7 @@ #endif #if defined(PCBHORUS) - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_BLUETOOTH #elif defined(PCBX9E) #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH #elif defined(PCBTARANIS) && defined(BLUETOOTH) @@ -95,7 +95,7 @@ #endif #define LEN_EXTERNAL_MODULE_PROTOCOLS "\014" -#define TR_EXTERNAL_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 " TR_MODULE_R9M_LITE "R9ML ACCESS\0""R9MLP\0 ""R9MLP ACCESS""SBUS\0 ""XJT Lite\0 ""FLYSKY " +#define TR_EXTERNAL_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULTI\0 ""R9M\0 ""R9M ACCESS\0 " TR_MODULE_R9M_LITE "R9ML ACCESS\0""R9MLP\0 ""R9MLP ACCESS""SBUS\0 ""XJT Lite\0 ""FLYSKY " #define LEN_FLYSKY_PROTOCOLS "\006" #define TR_FLYSKY_PROTOCOLS " PWM+i"" PWM+s"" PPM+i"" PPM+s" @@ -106,7 +106,7 @@ #define LEN_XJT_ACCST_RF_PROTOCOLS "\004" #define TR_XJT_ACCST_RF_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12" -#if defined(INTERNAL_MODULE_PXX1) +#if defined(INTERNAL_MODULE_PXX1) || defined(PCBHORUS) #define LEN_ISRM_RF_PROTOCOLS "\006" #define TR_ISRM_RF_PROTOCOLS "ACCESS""D16\0 ""LR12" #else @@ -136,8 +136,4 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\007" -#if defined(COLORLCD) -#define TR_MULTI_PROTOCOLS "Custom""FlySky\0""Hubsan\0""FrSky\0 ""Hisky\0 ""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0 ""KN\0 ""SymaX\0 ""SLT\0 ""CX10\0 ""CG023\0 ""Bayang\0""ESky\0 ""MT99XX\0""MJXq\0 ""Shenqi\0""FY326\0 ""SFHSS\0 ""J6 PRO\0""FQ777\0 ""Assan\0 ""Hontai\0""OpenLrs""FS 2A\0 ""Q2x2\0 ""Walk.\0 ""Q303\0 ""GW008\0 ""DM002\0 ""Cabell\0""Esy150\0""H8 3D\0 ""Corona\0""CFlie\0 ""Hitec\0 ""WFly\0 ""Bugs\0 ""BugMin\0""Traxas\0""NC1701\0""E01X\0 ""V911S\0 ""GD00X\0 ""V761\0 ""KF606\0 ""Redpin\0""Potens\0""ZSX\0 ""Flyzone" -#else -#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXq\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OpnLrs""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0""DM002\0""Cabell""Esy150""H8 3D\0""Corona""CFlie\0""Hitec\0""WFly\0 ""Bugs\0 ""BugMin""Traxas""NC1701""E01X\0 ""V911S\0""GD00X\0""V761\0 ""KF606\0""Redpin""Potens" -#endif +#define TR_MULTI_PROTOCOLS "FlySky\0""Hubsan\0""FrSky\0 ""Hisky\0 ""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0 ""KN\0 ""SymaX\0 ""SLT\0 ""CX10\0 ""CG023\0 ""Bayang\0""ESky\0 ""MT99XX\0""MJXq\0 ""Shenqi\0""FY326\0 ""SFHSS\0 ""J6 Pro\0""FQ777\0 ""Assan\0 ""Hontai\0""OpenLrs""FSky 2A""Q2x2\0 ""Walkera""Q303\0 ""GW008\0 ""DM002\0 ""Cabell\0""Esky150""H8 3D\0 ""Corona\0""CFlie\0 ""Hitec\0 ""WFly\0 ""Bugs\0 ""BugMini""Traxxas""NCC1701""E01X\0 ""V911S\0 ""GD00X\0 ""V761\0 ""KF606\0 ""Redpine""Potensi""ZSX\0 ""FlyZone" \ No newline at end of file diff --git a/radio/util/font2png.py b/radio/util/font2png.py index d9f1fdb3c..6ed21890c 100755 --- a/radio/util/font2png.py +++ b/radio/util/font2png.py @@ -15,12 +15,11 @@ chars_fi = u"""åäöÅÄÖ""" chars_it = u"""àù""" chars_pl = u"""ąćęłńóśżźĄĆĘŁŃÓŚŻŹ""" chars_pt = u"""ÁáÂâÃãÀàÇçÉéÊêÍíÓóÔôÕõÚú""" -chars_se = u"""åäöÅÄÖ""" COUNT_EXTRA_CHARS = 21 chars_extra = u"".join([chr(1+i) for i in range(COUNT_EXTRA_CHARS)]) -chars = chars_en + chars_extra + chars_fr + chars_de + chars_cz + chars_es + chars_fi + chars_it + chars_pl + chars_se +chars = chars_en + chars_extra + chars_fr + chars_de + chars_cz + chars_es + chars_fi + chars_it + chars_pl def createFontBitmap(filename, fontname, fontsize, fontoffset, foreground, background, coordsfile=True): diff --git a/tools/build-frsk.py b/tools/build-frsk.py new file mode 100755 index 000000000..1d80800fb --- /dev/null +++ b/tools/build-frsk.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +import argparse +import os +import struct + + +class CrcCCITT: + msb_table = ( + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, + 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, + 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, + 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, + 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, + 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, + 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, + 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, + 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, + 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, + 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, + 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, + 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, + 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, + 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, + 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, + 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, + 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, + 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, + 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, + 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, + 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0) + + @classmethod + def calc_crc(cls, msg): + crc = 0x00 + + for byte in msg: + crc = cls.msb_table[(crc >> 8 ^ byte) & 0xff] ^ ((crc << 8) & 0xFF00) + + return crc + + +class FrSkyFirmwareInformation: + fourcc = "FRSK" + header_version = 1 + + product_family_list = { + "INTERNAL_MODULE": 0, + "EXTERNAL_MODULE": 1, + "RECEIVER": 2, + "SENSOR": 3, + "BLUETOOTH_CHIP": 4, + "POWER_CONTROL_CHIP": 5 + } + + product_id_list = { + # None + "None": 0x00, + + # Modules + "XJT": 0x01, + "ISRM": 0x02, + # TODO missing modules + + # Receivers + "X8R": 0x01, + "RX8R": 0x02, + "RX8R-PRO": 0x03, + "RX6R": 0x04, + "RX4R": 0x05, + "G-RX8": 0x06, + 'G-RX6': 0x07, + "X6R": 0x08, + "X4R": 0x09, + "X4R-SB": 0x0A, + "XSR": 0x0B, + "XSR-M": 0x0C, + "RXSR": 0x0D, + "S6R": 0x0E, + "S8R": 0x0F, + "XM": 0x10, + "XM+": 0x11, + "XMR": 0x12, + "R9": 0x13, + "R9-SLIM": 0x14, + "R9-SLIM+": 0x15, + "R9MINI": 0x16, + "R9MM": 0x17, + "R9-STAB": 0x18 + } + + def __init__(self, data, args): + self.data = data + self.args = args + + @staticmethod + def parse_version(s): + try: + return [int(part) for part in s.split(".")] + except Exception: + raise argparse.ArgumentTypeError("%r is not a valid version" % s) + + def write(self, filename): + with open(filename, "wb") as f: + f.write(self.fourcc.encode()) + f.write(struct.pack('B', self.header_version)) + for i in range(3): + f.write(struct.pack('B', self.args.version[i])) + f.write(struct.pack('I', len(self.data))) + f.write(struct.pack('B', self.product_family_list[self.args.family])) + f.write(struct.pack('B', self.product_id_list[self.args.product])) + f.write(struct.pack('H', CrcCCITT.calc_crc(self.data))) + f.write(self.data) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('-f', '--family', help="Product family", choices=FrSkyFirmwareInformation.product_family_list.keys(), required=True) + parser.add_argument('-p', '--product', help="Product ID", choices=FrSkyFirmwareInformation.product_id_list.keys(), required=True) + parser.add_argument('-v', '--version', help="Firmware version", type=FrSkyFirmwareInformation.parse_version, required=True) + parser.add_argument("input", type=argparse.FileType("rb")) + + args = parser.parse_args() + + print("Product family:", args.family) + print("Product ID:", args.product) + print("Product version:", ".".join(str(part) for part in args.version)) + s = input("Do you confirm?") + if s.upper() == 'Y': + frsk = FrSkyFirmwareInformation(args.input.read(), args) + output = os.path.splitext(args.input.name)[0] + ".frsk" + frsk.write(output) + print("File %s created!" % output) + + +if __name__ == '__main__': + main() diff --git a/tools/build-frsky.py b/tools/build-frsky.py index 699049f2f..03beec3e3 100755 --- a/tools/build-frsky.py +++ b/tools/build-frsky.py @@ -8,7 +8,7 @@ import shutil import tempfile -options = { +boards = { "XLITE_FCC": { "PCB": "XLITE", "LUA": "NO_MODEL_SCRIPTS", @@ -71,22 +71,44 @@ options = { "MULTIMODULE": "NO", "CROSSFIRE": "NO", "DEFAULT_MODE": "2", + }, + "X7_FCC": { + "PCB": "X7", + "LUA": "NO_MODEL_SCRIPTS", + "GVARS": "YES", + "MULTIMODULE": "NO", + "CROSSFIRE": "NO", + "DEFAULT_MODE": "2", + }, + "X7_LBT": { + "PCB": "X7", + "MODULE_PROTOCOL_D8": "NO", + "LUA": "NO_MODEL_SCRIPTS", + "GVARS": "YES", + "MULTIMODULE": "NO", + "CROSSFIRE": "NO", + "DEFAULT_MODE": "2", } } +translations = [ + "EN", + "CZ" +] + def timestamp(): return datetime.datetime.now().strftime("%y%m%d") -def build(board, srcdir): - cmake_options = " ".join(["-D%s=%s" % (key, value) for key, value in options[board].items()]) +def build(board, translation, srcdir): + cmake_options = " ".join(["-D%s=%s" % (key, value) for key, value in boards[board].items()]) cwd = os.getcwd() if not os.path.exists("output"): os.mkdir("output") path = tempfile.mkdtemp() os.chdir(path) - command = "cmake %s -DFRSKY_RELEASE=YES %s" % (cmake_options, srcdir) + command = "cmake %s -DTRANSLATIONS=%s -DFRSKY_RELEASE=YES %s" % (cmake_options, translation, srcdir) print(command) os.system(command) os.system("make firmware -j6") @@ -94,7 +116,7 @@ def build(board, srcdir): index = 0 while 1: suffix = "" if index == 0 else "_%d" % index - filename = "output/firmware_%s_%s%s.bin" % (board.lower(), timestamp(), suffix) + filename = "output/firmware_%s_%s_%s%s.bin" % (board.lower(), translation.lower(), timestamp(), suffix) if not os.path.exists(filename): shutil.copy("%s/firmware.bin" % path, filename) break @@ -112,13 +134,14 @@ def dir_path(string): def main(): parser = argparse.ArgumentParser(description="Build FrSky firmware") parser.add_argument("-b", "--boards", action="append", help="Destination boards", required=True) + parser.add_argument("-t", "--translations", action="append", help="Translations", required=True) parser.add_argument("srcdir", type=dir_path) args = parser.parse_args() - boards = options.keys() if "ALL" in args.boards else args.boards - for board in boards: - build(board, args.srcdir) + for board in (boards.keys() if "ALL" in args.boards else args.boards): + for translation in (translations if "ALL" in args.translations else args.translations): + build(board, translation, args.srcdir) if __name__ == "__main__": diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh index 83b35fc70..73c7a2775 100755 --- a/tools/commit-tests.sh +++ b/tools/commit-tests.sh @@ -53,8 +53,6 @@ if (( $WERROR )); then COMMON_OPTIONS+=" -DWARNINGS_AS_ERRORS=YES -DMULTIMODULE= COMMON_OPTIONS+=${EXTRA_OPTIONS} -: ${TEST_OPTIONS:="--gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure"} - : ${FIRMARE_TARGET:="firmware-size"} mkdir build || true @@ -66,7 +64,7 @@ if [[ " SKY9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=SKY9X -DHELI=YES DLUA=YES -DTELEMETRY=FRSKY -DPPM_LIMITS_SYMETRICAL=YES -DVARIO=YES -DAUTOSWITCH=YES -DAUTOSOURCE=YES -DAUDIO=YES -DGPS=YES -DPPM_CENTER_ADJUSTABLE=YES -DFLIGHT_MODES=YES -DOVERRIDE_CHANNEL_FUNCTION=YES -DFRSKY_STICKS=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " AR9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then @@ -75,7 +73,7 @@ if [[ " AR9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=AR9X -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " 9XRPRO ARM9X ALL " =~ " ${FLAVOR} " ]] ; then @@ -84,7 +82,7 @@ if [[ " 9XRPRO ARM9X ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=9XRPRO -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then @@ -93,7 +91,7 @@ if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9LITE -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X7 ALL " =~ " ${FLAVOR} " ]] ; then @@ -102,7 +100,7 @@ if [[ " X7 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X7 -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then @@ -111,7 +109,7 @@ if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=XLITE -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then @@ -120,7 +118,7 @@ if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=XLITES -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X9D X9 ALL " =~ " ${FLAVOR} " ]] ; then @@ -129,7 +127,7 @@ if [[ " X9D X9 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9D -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X9D+ X9 ALL " =~ " ${FLAVOR} " ]] ; then @@ -138,7 +136,7 @@ if [[ " X9D+ X9 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X9D+2019 X9 ALL " =~ " ${FLAVOR} " ]] ; then @@ -147,7 +145,7 @@ if [[ " X9D+2019 X9 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X9E X9 ALL " =~ " ${FLAVOR} " ]] ; then @@ -156,7 +154,7 @@ if [[ " X9E X9 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DGVARS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X10 HORUS ALL " =~ " ${FLAVOR} " ]] ; then @@ -165,7 +163,7 @@ if [[ " X10 HORUS ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X10 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then @@ -174,7 +172,7 @@ if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X12S -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then @@ -183,7 +181,7 @@ if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} gtests && ./gtests-radio ${TEST_OPTIONS} && ./gtests-companion ${TEST_OPTIONS} + make -j${CORES} tests fi if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then diff --git a/tools/extract-map.py b/tools/extract-map.py new file mode 100755 index 000000000..95e87ebce --- /dev/null +++ b/tools/extract-map.py @@ -0,0 +1,48 @@ +#!/usr/bin/python3 + +import argparse + + +def line_index(lines, start): + for i, line in enumerate(lines): + if line.startswith(start): + return i + + +def extract_vars(lines): + result = [] + lines = lines[line_index(lines, ".data"):line_index(lines, ".memory")] + i = 0 + while i < len(lines): + line = lines[i] + i += 1 + if line.startswith("*"): + continue + if line.startswith(" .data.") or line.startswith(" .bss."): + fields = (line + lines[i]).split() + # print(fields) + i += 1 + var = fields[0].split(".")[-1] + offset = int(fields[1], 16) + size = int(fields[2], 16) + result.append((var, offset, size)) + return result + + +def main(): + parser = argparse.ArgumentParser(description="Extract firmware.map") + parser.add_argument("file", type=argparse.FileType("r")) + + args = parser.parse_args() + + f = args.file + lines = f.readlines() + + vars = extract_vars(lines) + vars.sort(key=lambda var: "%08d %s" % (var[2], var[0])) + for var, offset, size in vars: + print("%s\t %d" % (var, size)) + + +if __name__ == "__main__": + main() diff --git a/tools/nightly23/build-nightly.sh b/tools/nightly23/build-nightly.sh index e452eb1fe..e0d1e6dd5 100755 --- a/tools/nightly23/build-nightly.sh +++ b/tools/nightly23/build-nightly.sh @@ -2,7 +2,7 @@ set -e -branch=2.3 +branch=2.3.0 docker=nightly23 workdir=/home/opentx/nightly23 output=/var/www/html/2.3/nightlies diff --git a/tools/nightly23/build-sdcard.sh b/tools/nightly23/build-sdcard.sh index 14e5550f5..a294794d1 100755 --- a/tools/nightly23/build-sdcard.sh +++ b/tools/nightly23/build-sdcard.sh @@ -3,7 +3,6 @@ set -e set -x -branch=2.3 workdir=/home/opentx/nightly23 output=/var/www/html/2.3/nightlies diff --git a/tools/rc22/build-rc.sh b/tools/rc22/build-rc.sh deleted file mode 100755 index daffff3f2..000000000 --- a/tools/rc22/build-rc.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -set -e - -branch=2.2 -docker=rc22 -workdir=/home/opentx/rc22 -output=/var/www/html/2.2/rc -version=2.3.0 - -# Increment RC index -index=`cat index.txt` -index=`expr $index + 1` -suffix="RC$index" - -cd ${workdir} - -# Create on-demand build environment -cp code/radio/util/Dockerfile . -docker build -t new-${docker} --build-arg OPENTX_VERSION_SUFFIX=${suffix} . -set +e -docker rmi -f ${docker} -set -e -docker tag new-${docker} ${docker} -docker rmi -f new-${docker} - -# Call sdcard generation -code/tools/rc22/build-sdcard.sh - -# Build Linux companion -docker run -dit --name companion -v /home/opentx/${docker}:/opentx ${docker} -docker exec companion sh -c "mkdir -p build && cd build && cmake /opentx/code && cp radio/src/stamp.h /opentx/binaries/stamp-opentx.txt" -docker exec companion rm -rf build -if [ ! -f ${output}/companion/linux/companion22_${version}${suffix}_amd64.deb ]; then - docker exec companion /opentx/code/tools/build-companion-release.sh /opentx/code /opentx/binaries/ - docker exec companion sh -c "cp /build/radio/src/lua/*.txt /opentx/binaries" - cp -f binaries/*.deb ${output}/companion/linux/companion22_${version}${suffix}_amd64.deb - cp -f binaries/lua_fields_*.txt ${output}/firmware -fi -docker stop companion -docker rm companion - -# Request companion compilation on Windows -if [ ! -f ${output}/companion/windows/companion-windows-${version}${suffix}.exe ]; then - cd ${output}/companion/windows - wget -qO- http://winbox.open-tx.org/companion-builds/compile22.php?branch=$branch\&suffix=${suffix} - wget -O companion-windows-${version}${suffix}.exe http://winbox.open-tx.org/companion-builds/companion-windows-${version}${suffix}.exe - chmod -Rf g+w companion-windows-${version}${suffix}.exe -fi - -# Request companion compilation on Mac OS X -if [ ! -f ${output}/companion/macosx/opentx-companion-${version}${suffix}.dmg ]; then - cd ${output}/companion/macosx - wget -qO- http://opentx.blinkt.de:8080/~opentx/build-opentx.py?branch=${branch}\&suffix=${suffix} - wget -O opentx-companion-${version}${suffix}.dmg http://opentx.blinkt.de:8080/~opentx/builds/opentx-companion-${version}${suffix}.dmg - chmod -Rf g+w opentx-companion-${version}${suffix}.dmg -fi - -# Update stamps -cp -f $workdir/binaries/stamp-opentx.txt ${output}/firmware -echo "#define VERSION \"${version}${suffix}\"" > ${output}/companion/companion-windows.stamp -cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-macosx.stamp -cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-linux.stamp - - -# Clean binaries It will be hosting built on demand firmware -rm -rf $workdir/binaries/* -rm -rf $workdir/binaries/.lock - -# RC is considered as valid ony if we get to that point -echo $index > ${workdir}/index.txt diff --git a/tools/rc22/build-sdcard.sh b/tools/rc22/build-sdcard.sh deleted file mode 100755 index 8fec66805..000000000 --- a/tools/rc22/build-sdcard.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -set -e - -branch=2.2 -workdir=/home/opentx/rc22 -output=/var/www/html/2.2/rc - -# Handle opentx.sdcard.version -sdcard_version="2.2V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g') -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version - -if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version -then - exit -else - cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir} - cd ${workdir} - - # Copy git sdcard data - rm -Rf ${workdir}/sdcard - cp -r ${workdir}/code/radio/sdcard . - - # Get images for Horus - mkdir -p ${workdir}/sdcard/horus/IMAGES - cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/ - - # Request sound pack generation - ${workdir}/code/tools/rc22/tts.py en csv files - ${workdir}/code/tools/rc22/tts.py fr csv files - ${workdir}/code/tools/rc22/tts.py es csv files - ${workdir}/code/tools/rc22/tts.py it csv files - ${workdir}/code/tools/rc22/tts.py de csv files - ${workdir}/code/tools/rc22/tts.py cz csv files - ${workdir}/code/tools/rc22/tts.py pt csv files - ${workdir}/code/tools/rc22/tts.py ru csv psv files - - # Create sdcards.zips for supported platforms - mv /tmp/SOUNDS ${workdir}/sdcard/horus/ - mkdir ${workdir}/sdcard/taranis-x9/SOUNDS - mkdir ${workdir}/sdcard/taranis-x7/SOUNDS - cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/ - cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/ - cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/opentx-x12s/sdcard-horus-${sdcard_version}.zip * - cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/opentx-x9d/sdcard-taranis-x9-${sdcard_version}.zip * - cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/opentx-x7/sdcard-taranis-x7-${sdcard_version}.zip * - rm -Rf ${workdir}/sdcard -fi \ No newline at end of file diff --git a/tools/rc22/tts.py b/tools/rc22/tts.py deleted file mode 100755 index fc42cfeb6..000000000 --- a/tools/rc22/tts.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - - -# This script is a modified version to support Linux TTS fiel genration using PicoTTS - -# Sound pack maintainers (incomplete list) by language alphabetical order -# Czech : Martin Hotar -# French : Bertrand Songis & André Bernet -# English : Rob Thompson & Martin Hotar -# German : Romolo Manfredini (Some corrections by Peer) -# Italian : Romolo Manfredini -# Portuguese : Romolo Manfredini -# Spanish : Romolo Manfredini (With the help of Jose Moreno) - -# from __future__ import print_function - -import os -import sys -import subprocess -import zipfile -from gtts import gTTS -from tts_common import * -board = "taranis" - -reload(sys) -sys.setdefaultencoding('utf8') - -SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) -lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util')) -sys.path.append(lib_path) - -def generate(str, filename): - if 0: - output = "output.wav" - command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str) - os.system(command.encode('utf-8')) - command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename) - os.system(command.encode('utf-8')) - else: - output = u"output.mp3" - tts = gTTS(text=str, lang=voice[:2]) - tts.save(output) - command = "sox --norm %s -r 32000 %s tempo 1.2" % (output, filename) - os.system(command.encode('utf-8')) - command = "rm -f output.mp3" - os.system(command.encode('utf-8')) - -################################################################ - -if __name__ == "__main__": - if "en" in sys.argv: - from tts_en import systemSounds, sounds - - directory = "en" - voice = "en-US" - - elif "fr" in sys.argv: - from tts_fr import systemSounds, sounds - - directory = "fr" - voice = "fr-FR" - - elif "it" in sys.argv: - from tts_it import systemSounds, sounds - - directory = "it" - voice = "it-IT" - - elif "de" in sys.argv: - from tts_de import systemSounds, sounds - - directory = "de" - voice = "de-DE" - - elif "es" in sys.argv: - from tts_es import systemSounds, sounds - - directory = "es" - voice = "es-ES" - - elif "cz" in sys.argv: - from tts_cz import systemSounds, sounds - - directory = "cz" - voice = "cs-CZ" - - elif "ru" in sys.argv: - from tts_ru import systemSounds, sounds - - directory = "ru" - voice = "ru-RU" - - elif "pt" in sys.argv: - from tts_pt import systemSounds, sounds - - directory = "pt" - voice = "pt-PT" - - else: - print("which language?") - exit() - - if "csv" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - with open("%s-%s.csv" % (voice, board), "wb") as csvFile: - for s, f in systemSounds: - if s and f: - l = u"" - if board in ("sky9x", "taranis"): - l += u"SOUNDS/%s/SYSTEM;" % directory - l += f + u";" + s + u"\n" - csvFile.write(l.encode("utf-8")) - for s, f in sounds: - if s and f: - l = u"" - if board in ("sky9x", "taranis"): - l += u"SOUNDS/%s;" % directory - l += f + u";" + s + u"\n" - csvFile.write(l.encode("utf-8")) - - if "psv" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - with open("%s-%s.psv" % (voice, board), "wb") as csvFile: - for s, f in systemSounds: - if s and f: - l = u"SYSTEM|" + f.replace(".wav", "") + u"|" + s + u"\r\n" - csvFile.write(l.encode("windows-1251")) - for s, f in sounds: - if s and f: - l = u"|" + f.replace(".wav", "") + u"|" + s + u"\r\n" - csvFile.write(l.encode("windows-1251")) - - - if "files" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - for s, f in systemSounds: - if s and f: - generate(s, f) - os.chdir("..") - for s, f in sounds: - if s and f: - generate(s, f) diff --git a/tools/rc22/tts_common.py b/tools/rc22/tts_common.py deleted file mode 100644 index 25623b005..000000000 --- a/tools/rc22/tts_common.py +++ /dev/null @@ -1,14 +0,0 @@ -NO_ALTERNATE = 1024 -PROMPT_CUSTOM_BASE = 256 -PROMPT_SYSTEM_BASE = 0 -board = "taranis" - -import sys - -def filename(idx, alternate=0): - ext = ".wav" - if isinstance(idx, int): - result = "%04d%s" % (idx, ext) - elif board in ('sky9x', 'taranis'): - result = idx + ext - return result diff --git a/tools/release22/build-release.sh b/tools/release22/build-release.sh deleted file mode 100755 index 9fbc37e07..000000000 --- a/tools/release22/build-release.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -set -e - -branch=2.2 -docker=release22 -workdir=/home/opentx/release22 -output=/var/www/html/2.2/release -version=2.3.0 - -cd ${workdir} - -# Create on-demand build environment -cp code/radio/util/Dockerfile . -docker build -t new-${docker} . -docker rmi -f ${docker} || true -docker tag new-${docker} ${docker} -docker rmi -f new-${docker} - -# Call sdcard generation -code/tools/release22/build-sdcard.sh - -# Build Linux companion -docker run -dit --name companion -v /home/opentx/${docker}:/opentx ${docker} -docker exec companion sh -c "mkdir -p build && cd build && cmake /opentx/code && cp radio/src/stamp.h /opentx/binaries/stamp-opentx.txt" -docker exec companion rm -rf build -if [ ! -f ${output}/companion/linux/companion22_${version}_amd64.deb ]; then - docker exec companion /opentx/code/tools/build-companion-release.sh /opentx/code /opentx/binaries/ - docker exec companion sh -c "cp /build/radio/src/lua/*.txt /opentx/binaries" - cp -f binaries/*.deb ${output}/companion/linux/companion22_${version}_amd64.deb - cp -f binaries/lua_fields_*.txt ${output}/firmware -fi -docker stop companion -docker rm companion - -# Request companion compilation on Windows -if [ ! -f ${output}/companion/windows/companion-windows-${version}.exe ]; then - cd ${output}/companion/windows - wget -qO- http://winbox.open-tx.org/companion-builds/compile22.php?branch=${branch} - wget -O companion-windows-${version}.exe http://winbox.open-tx.org/companion-builds/companion-windows-${version}.exe - chmod -f g+w companion-windows-${version}.exe -fi - -# Request companion compilation on Mac OS X -if [ ! -f ${output}/companion/macosx/opentx-companion-${version}.dmg ]; then - cd ${output}/companion/macosx - wget -qO- http://opentx.blinkt.de:8080/~opentx/build-opentx.py?branch=${branch} - wget -O opentx-companion-${version}.dmg http://opentx.blinkt.de:8080/~opentx/builds/opentx-companion-${version}.dmg - chmod -f g+w opentx-companion-${version}.dmg -fi - -# Update stamps -cp -f $workdir/binaries/stamp-opentx.txt ${output}/firmware -echo "#define VERSION "'"2.3.0"' > ${output}/companion/companion-windows.stamp -cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-macosx.stamp -cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-linux.stamp - - -# Clean binaries It will be hosting built on demand firmware -rm -rf $workdir/binaries/* -rm -rf $workdir/binaries/.lock diff --git a/tools/release22/build-sdcard.sh b/tools/release22/build-sdcard.sh deleted file mode 100755 index 7dd386c26..000000000 --- a/tools/release22/build-sdcard.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -set -e - -branch=2.2 -workdir=/home/opentx/release22 -output=/var/www/html/2.2/release - -# Handle opentx.sdcard.version -sdcard_version="2.2V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g') -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version -echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version - -if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version -then - exit -else - cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir} - cd ${workdir} - - # Copy git sdcard data - rm -Rf ${workdir}/sdcard - cp -r ${workdir}/code/radio/sdcard . - - # Get images for Horus - mkdir -p ${workdir}/sdcard/horus/IMAGES - cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/ - - # Request sound pack generation - ${workdir}/code/tools/release22/tts.py en csv files - ${workdir}/code/tools/release22/tts.py fr csv files - ${workdir}/code/tools/release22/tts.py es csv files - ${workdir}/code/tools/release22/tts.py it csv files - ${workdir}/code/tools/release22/tts.py de csv files - ${workdir}/code/tools/release22/tts.py cz csv files - ${workdir}/code/tools/release22/tts.py pt csv files - ${workdir}/code/tools/release22/tts.py ru csv psv files - - # Create sdcards.zips for supported platforms - mv /tmp/SOUNDS ${workdir}/sdcard/horus/ - mkdir ${workdir}/sdcard/taranis-x9/SOUNDS - mkdir ${workdir}/sdcard/taranis-x7/SOUNDS - cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/ - cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/ - cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/opentx-x12s/sdcard-horus-${sdcard_version}.zip * - cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/opentx-x9d/sdcard-taranis-x9-${sdcard_version}.zip * - cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/opentx-x7/sdcard-taranis-x7-${sdcard_version}.zip * - rm -Rf ${workdir}/sdcard -fi \ No newline at end of file diff --git a/tools/release22/tts.py b/tools/release22/tts.py deleted file mode 100755 index fc42cfeb6..000000000 --- a/tools/release22/tts.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - - -# This script is a modified version to support Linux TTS fiel genration using PicoTTS - -# Sound pack maintainers (incomplete list) by language alphabetical order -# Czech : Martin Hotar -# French : Bertrand Songis & André Bernet -# English : Rob Thompson & Martin Hotar -# German : Romolo Manfredini (Some corrections by Peer) -# Italian : Romolo Manfredini -# Portuguese : Romolo Manfredini -# Spanish : Romolo Manfredini (With the help of Jose Moreno) - -# from __future__ import print_function - -import os -import sys -import subprocess -import zipfile -from gtts import gTTS -from tts_common import * -board = "taranis" - -reload(sys) -sys.setdefaultencoding('utf8') - -SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) -lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util')) -sys.path.append(lib_path) - -def generate(str, filename): - if 0: - output = "output.wav" - command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str) - os.system(command.encode('utf-8')) - command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename) - os.system(command.encode('utf-8')) - else: - output = u"output.mp3" - tts = gTTS(text=str, lang=voice[:2]) - tts.save(output) - command = "sox --norm %s -r 32000 %s tempo 1.2" % (output, filename) - os.system(command.encode('utf-8')) - command = "rm -f output.mp3" - os.system(command.encode('utf-8')) - -################################################################ - -if __name__ == "__main__": - if "en" in sys.argv: - from tts_en import systemSounds, sounds - - directory = "en" - voice = "en-US" - - elif "fr" in sys.argv: - from tts_fr import systemSounds, sounds - - directory = "fr" - voice = "fr-FR" - - elif "it" in sys.argv: - from tts_it import systemSounds, sounds - - directory = "it" - voice = "it-IT" - - elif "de" in sys.argv: - from tts_de import systemSounds, sounds - - directory = "de" - voice = "de-DE" - - elif "es" in sys.argv: - from tts_es import systemSounds, sounds - - directory = "es" - voice = "es-ES" - - elif "cz" in sys.argv: - from tts_cz import systemSounds, sounds - - directory = "cz" - voice = "cs-CZ" - - elif "ru" in sys.argv: - from tts_ru import systemSounds, sounds - - directory = "ru" - voice = "ru-RU" - - elif "pt" in sys.argv: - from tts_pt import systemSounds, sounds - - directory = "pt" - voice = "pt-PT" - - else: - print("which language?") - exit() - - if "csv" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - with open("%s-%s.csv" % (voice, board), "wb") as csvFile: - for s, f in systemSounds: - if s and f: - l = u"" - if board in ("sky9x", "taranis"): - l += u"SOUNDS/%s/SYSTEM;" % directory - l += f + u";" + s + u"\n" - csvFile.write(l.encode("utf-8")) - for s, f in sounds: - if s and f: - l = u"" - if board in ("sky9x", "taranis"): - l += u"SOUNDS/%s;" % directory - l += f + u";" + s + u"\n" - csvFile.write(l.encode("utf-8")) - - if "psv" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - with open("%s-%s.psv" % (voice, board), "wb") as csvFile: - for s, f in systemSounds: - if s and f: - l = u"SYSTEM|" + f.replace(".wav", "") + u"|" + s + u"\r\n" - csvFile.write(l.encode("windows-1251")) - for s, f in sounds: - if s and f: - l = u"|" + f.replace(".wav", "") + u"|" + s + u"\r\n" - csvFile.write(l.encode("windows-1251")) - - - if "files" in sys.argv: - path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" - if not os.path.exists(path): - os.makedirs(path) - os.chdir(path) - for s, f in systemSounds: - if s and f: - generate(s, f) - os.chdir("..") - for s, f in sounds: - if s and f: - generate(s, f) diff --git a/tools/release22/tts_common.py b/tools/release22/tts_common.py deleted file mode 100644 index 25623b005..000000000 --- a/tools/release22/tts_common.py +++ /dev/null @@ -1,14 +0,0 @@ -NO_ALTERNATE = 1024 -PROMPT_CUSTOM_BASE = 256 -PROMPT_SYSTEM_BASE = 0 -board = "taranis" - -import sys - -def filename(idx, alternate=0): - ext = ".wav" - if isinstance(idx, int): - result = "%04d%s" % (idx, ext) - elif board in ('sky9x', 'taranis'): - result = idx + ext - return result