From 556b030e09d7b660f4aeb1b20ba3cb26b5c026ca Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 21 Mar 2020 11:43:31 +0100 Subject: [PATCH 001/199] Fix TX16s page navigation --- radio/src/gui/navigation/navigation_horus.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/navigation/navigation_horus.cpp b/radio/src/gui/navigation/navigation_horus.cpp index b8729c8a3..d62d07810 100644 --- a/radio/src/gui/navigation/navigation_horus.cpp +++ b/radio/src/gui/navigation/navigation_horus.cpp @@ -316,9 +316,9 @@ bool check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t if (menuTab && !menuCalibrationState) { int cc = curr; switch (event) { -#if defined(PCBX12S) +#if defined(KEYS_GPIO_REG_PGUP) case EVT_KEY_FIRST(KEY_PGDN): -#elif defined(PCBX10) +#else case EVT_KEY_BREAK(KEY_PGDN): #endif if (s_editMode>0) @@ -328,8 +328,9 @@ bool check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t cc = 0; break; +#if defined(KEYS_GPIO_REG_PGUP) case EVT_KEY_FIRST(KEY_PGUP): -#if defined(PCBX10) +#else case EVT_KEY_LONG(KEY_PGDN): #endif if (s_editMode>0) From 6af59c76c7a3bd7c139e4190d6407f6c0256369d Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 31 Jan 2020 15:29:30 +0100 Subject: [PATCH 002/199] PCB2.3 pin changes --- radio/src/targets/horus/hal.h | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index ed5422834..c4040dd3b 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -182,10 +182,17 @@ #define TRIMS_GPIO_REG_LSU GPIOB->IDR #define TRIMS_GPIO_PIN_LSU GPIO_Pin_13 // PB.13 #elif defined(PCBX10) - #define TRIMS_GPIO_REG_LHL GPIOB->IDR - #define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PB.08 - #define TRIMS_GPIO_REG_LHR GPIOB->IDR - #define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PB.09 + #if defined(RADIO_TX16S) + #define TRIMS_GPIO_REG_LHL GPIOA->IDR + #define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PA.06 + #define TRIMS_GPIO_REG_LHR GPIOC->IDR + #define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PC.04 + #else + #define TRIMS_GPIO_REG_LHL GPIOB->IDR + #define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PB.08 + #define TRIMS_GPIO_REG_LHR GPIOB->IDR + #define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PB.09 + #endif #define TRIMS_GPIO_REG_LVD GPIOG->IDR #define TRIMS_GPIO_PIN_LVD GPIO_Pin_12 // PG.12 #define TRIMS_GPIO_REG_LVU GPIOJ->IDR @@ -226,14 +233,21 @@ #define KEYS_GPIOI_PINS (KEYS_GPIO_PIN_PGDN | KEYS_GPIO_PIN_LEFT | KEYS_GPIO_PIN_DOWN | SWITCHES_GPIO_PIN_A_L | GPIO_Pin_4) #define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RSD) #elif defined(PCBX10) - #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9) -#if defined(RADIO_TX16S) - #define KEYS_GPIOC_PINS (GPIO_Pin_13) -#endif + #if defined(RADIO_TX16S) + #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13) + #else + #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9) + #endif #define KEYS_GPIOD_PINS (GPIO_Pin_11 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_13) #define KEYS_GPIOE_PINS (GPIO_Pin_3) #define KEYS_GPIOG_PINS (SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | TRIMS_GPIO_PIN_LVD) +#if defined(RADIO_TX16S) + #define KEYS_GPIOA_PINS (GPIO_Pin_6) + #define KEYS_GPIOC_PINS (GPIO_Pin_4) + #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) +#else #define KEYS_GPIOH_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) +#endif #define KEYS_GPIOI_PINS (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_15) #define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | GPIO_Pin_8) #endif @@ -434,7 +448,7 @@ // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 -#define TELEMETRY_RCC_APB2Periph RCC_APB2Periph_TIM11 +#define TELEMETRY_RCC_APB2Periph RCC_APB2Periph_TIM10 #define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #define TELEMETRY_GPIO GPIOD From 57247a74eee15d2281bd1d8241b4657f56a32619 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 21 Mar 2020 12:01:52 +0100 Subject: [PATCH 003/199] Merge fix --- radio/src/targets/horus/hal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index c4040dd3b..5e3ac2d1d 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -448,7 +448,7 @@ // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 -#define TELEMETRY_RCC_APB2Periph RCC_APB2Periph_TIM10 +#define TELEMETRY_RCC_APB2Periph RCC_APB2Periph_TIM11 #define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #define TELEMETRY_GPIO GPIOD From 069a6d3d91cc839a3aa27066755f651871804f6d Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 22 Mar 2020 16:08:38 +0100 Subject: [PATCH 004/199] Placeholder for touch hardware --- radio/src/gui/480x272/topbar.cpp | 14 ++++++++------ radio/src/targets/horus/CMakeLists.txt | 8 +++++++- radio/src/targets/horus/ft5x06.cpp | 21 +++++++++++++++++++++ radio/src/targets/horus/ft5x06.h | 24 ++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 radio/src/targets/horus/ft5x06.cpp create mode 100644 radio/src/targets/horus/ft5x06.h diff --git a/radio/src/gui/480x272/topbar.cpp b/radio/src/gui/480x272/topbar.cpp index 487e70a9b..f631f7984 100644 --- a/radio/src/gui/480x272/topbar.cpp +++ b/radio/src/gui/480x272/topbar.cpp @@ -91,15 +91,17 @@ void drawTopBar() /* Tx battery */ uint8_t bars = GET_TXBATT_BARS(5); #if defined(USB_CHARGER) - if(usbChargerLed()) + if(usbChargerLed() && BLINK_ON_PHASE) lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR); - else + else { #endif - lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); - for (unsigned int i = 0; i < 5; i++) { - lcdDrawSolidFilledRect(LCD_W-122+4*i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR); + lcdDrawBitmapPattern(LCD_W - 130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); + for (unsigned int i = 0; i < 5; i++) { + lcdDrawSolidFilledRect(LCD_W - 122 + 4 * i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR); + } +#if defined(USB_CHARGER) } - +#endif topbar->refresh(); #if 0 diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 601d82dfb..95f6e8c61 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -61,10 +61,11 @@ if (PCB STREQUAL X10) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON) option(BLUETOOTH "Support for bluetooth module" OFF) + set(HARDWARE_TOUCH YES) + set(USB_CHARGER YES) if (NOT BLUETOOTH) set(AUX_SERIAL ON) endif() - set(USB_CHARGER YES) else() set(FLAVOUR x10) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON) @@ -207,6 +208,11 @@ set(TARGET_SRC ../common/arm/stm32/rotary_encoder_driver.cpp ) +if(HARDWARE_TOUCH) + set(TARGET_SRC ${TARGET_SRC} ft5x06.cpp) + add_definitions(-DHARDWARE_TOUCH) +endif() + if(USB_CHARGER) set(TARGET_SRC ${TARGET_SRC} usb_charger_driver.cpp) add_definitions(-DUSB_CHARGER) diff --git a/radio/src/targets/horus/ft5x06.cpp b/radio/src/targets/horus/ft5x06.cpp new file mode 100644 index 000000000..47765bbc7 --- /dev/null +++ b/radio/src/targets/horus/ft5x06.cpp @@ -0,0 +1,21 @@ +/* + * 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 "ft5x06.h" \ No newline at end of file diff --git a/radio/src/targets/horus/ft5x06.h b/radio/src/targets/horus/ft5x06.h new file mode 100644 index 000000000..a4d6b1f54 --- /dev/null +++ b/radio/src/targets/horus/ft5x06.h @@ -0,0 +1,24 @@ +/* + * 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 _FT5X06_H_ +#define _FT5X06_H_ + +#endif // _FT5X06_H_ From add57ab4f9931981cbfbd601cfaa06fd06ebff11 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 25 Mar 2020 14:04:41 +0100 Subject: [PATCH 005/199] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c966e7ed4..64e672a51 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## OpenTX 2.3 Branch [![Travis build Status](https://travis-ci.org/opentx/opentx.svg?branch=2.3)](https://travis-ci.org/opentx/opentx) -[![Join the Discord chat](https://img.shields.io/badge/discord-join_chat-yellow.svg)](https://discord.gg/pAmmCp2) +[![Join the Discord chat](https://img.shields.io/badge/discord-join_chat-yellow.svg)](https://discord.gg/CZCwVx2) [![Donate using Paypal](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DJ9MASSKVW8WN) The ongoing development on 2.3.x is done in this branch. From 4e5cd96af5533a39f80421cbc393083a12f4065c Mon Sep 17 00:00:00 2001 From: Kilrah Date: Wed, 25 Mar 2020 16:41:20 +0100 Subject: [PATCH 006/199] T12 had duplicate flexr9m options --- companion/src/firmwares/opentx/opentxinterface.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 7f71b5ebd..85d235679 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1331,7 +1331,6 @@ void registerOpenTxFirmwares() firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); - firmware->addOption("flexr9m", Firmware::tr("Enable non certified R9M firmwares")); firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module")); addOpenTxFontOptions(firmware); registerOpenTxFirmware(firmware); From 555438b7a70fe38152c0a2f8435280eb1ba3e8c0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 26 Mar 2020 16:16:56 +0100 Subject: [PATCH 007/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index f8d4f14e6..772bd36b9 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1707,3 +1707,4 @@ Fabrice Debonnet James Laver Kevin Bowens David Frech +Udo Kastenholz From 6232cebe002bf5c289352a9da4d96ab574d15955 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Thu, 26 Mar 2020 17:45:19 +0100 Subject: [PATCH 008/199] Fix "Remember simulator switch values" --- companion/src/simulation/simulatorwidget.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index 798c8664b..7a457c228 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -680,12 +680,14 @@ void SimulatorWidget::setupJoysticks() void SimulatorWidget::restoreRadioWidgetsState() { // All RadioWidgets - RadioWidget::RadioWidgetState state; - QList states = g.profile[radioProfileId].simulatorOptions().controlsState; - foreach (QByteArray ba, states) { - QDataStream stream(ba); - stream >> state; - emit widgetStateChange(state); + if (g.simuSW()) { + RadioWidget::RadioWidgetState state; + QList states = g.profile[radioProfileId].simulatorOptions().controlsState; + foreach (QByteArray ba, states) { + QDataStream stream(ba); + stream >> state; + emit widgetStateChange(state); + } } // Set throttle stick down and locked, side depends on mode @@ -700,8 +702,10 @@ void SimulatorWidget::saveRadioWidgetsState(QList & state) { if (m_radioWidgets.size()) { state.clear(); - foreach (RadioWidget * rw, m_radioWidgets) - state.append(rw->getStateData()); + if (g.simuSW()) { + foreach (RadioWidget * rw, m_radioWidgets) + state.append(rw->getStateData()); + } } } From f9ae9adc9ba048bfe3fdf6032a8d3b421fb14aa1 Mon Sep 17 00:00:00 2001 From: WismyYao Date: Fri, 27 Mar 2020 15:52:56 +0800 Subject: [PATCH 009/199] Wismy/frsky receivers table (#7462) Full the table about receivers --- radio/src/io/frsky_firmware_update.h | 50 ++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/radio/src/io/frsky_firmware_update.h b/radio/src/io/frsky_firmware_update.h index fc296daf8..4690e0215 100644 --- a/radio/src/io/frsky_firmware_update.h +++ b/radio/src/io/frsky_firmware_update.h @@ -44,30 +44,52 @@ enum FrskyFirmwareModuleProductId { enum FrskyFirmwareReceiverProductId { FIRMWARE_ID_RECEIVER_NONE, - FIRMWARE_ID_RECEIVER_ARCHER = 0xC0, // TODO use the right constant - FIRMWARE_ID_RECEIVER_R9MX = 0xF0, // TODO use the right constant - // TODO fill the table - + FIRMWARE_ID_RECEIVER_X8R = 0x01, + FIRMWARE_ID_RECEIVER_RX8R = 0x02, + FIRMWARE_ID_RECEIVER_RX8R_PRO = 0x03, + FIRMWARE_ID_RECEIVER_RX6R = 0x04, + FIRMWARE_ID_RECEIVER_RX4R = 0x05, + FIRMWARE_ID_RECEIVER_G_RX8 = 0x06, + FIRMWARE_ID_RECEIVER_G_RX6 = 0x07, + FIRMWARE_ID_RECEIVER_X6R = 0x08, + FIRMWARE_ID_RECEIVER_X4R = 0x09, + FIRMWARE_ID_RECEIVER_X4R_SB = 0x0A, + FIRMWARE_ID_RECEIVER_XSR = 0x0B, + FIRMWARE_ID_RECEIVER_XSR_M = 0x0C, + FIRMWARE_ID_RECEIVER_RXSR = 0x0D, + FIRMWARE_ID_RECEIVER_S6R = 0x0E, + FIRMWARE_ID_RECEIVER_S8R = 0x0F, + FIRMWARE_ID_RECEIVER_XM = 0x10, + FIRMWARE_ID_RECEIVER_XMP = 0x11, + FIRMWARE_ID_RECEIVER_XMR = 0x12, + FIRMWARE_ID_RECEIVER_R9 = 0x13, + FIRMWARE_ID_RECEIVER_R9_SLIM = 0x14, + FIRMWARE_ID_RECEIVER_R9_SLIMP = 0x15, + FIRMWARE_ID_RECEIVER_R9_MINI = 0x16, + FIRMWARE_ID_RECEIVER_R9_MM = 0x17, + FIRMWARE_ID_RECEIVER_R9_STAB = 0x18, // R9_STAB has OTA + FIRMWARE_ID_RECEIVER_R9_MINI_OTA = 0x19, // this one has OTA (different bootloader) + FIRMWARE_ID_RECEIVER_R9_MM_OTA = 0x1A, // this one has OTA (different bootloader) + FIRMWARE_ID_RECEIVER_R9_SLIMP_OTA = 0x1B, // this one has OTA (different bootloader) + FIRMWARE_ID_RECEIVER_ARCHER_X = 0x1C, // this one has OTA (internal module) + FIRMWARE_ID_RECEIVER_R9MX = 0x1D, // this one has OTA + FIRMWARE_ID_RECEIVER_R9SX = 0x1E, // this one has OTA }; inline bool isReceiverOTAEnabledFromModule(uint8_t moduleIdx, uint8_t productId) { switch (productId) { - case FIRMWARE_ID_RECEIVER_ARCHER: + case FIRMWARE_ID_RECEIVER_ARCHER_X: return isModuleISRM(moduleIdx); + case FIRMWARE_ID_RECEIVER_R9_STAB: + case FIRMWARE_ID_RECEIVER_R9_MINI_OTA: + case FIRMWARE_ID_RECEIVER_R9_MM_OTA: + case FIRMWARE_ID_RECEIVER_R9_SLIMP_OTA: case FIRMWARE_ID_RECEIVER_R9MX: + case FIRMWARE_ID_RECEIVER_R9SX: return isModuleR9M(moduleIdx); - // TODO add all those OTA receivers here - -/* - "R9-MINI-OTA", // this one has OTA (different bootloader) - "R9-MM-OTA", // this one has OTA (different bootloader) - "R9-SLIM+-OTA", // this one has OTA (different bootloader) - "R9SX", // this one has OTA - */ - default: return false; } From 04f2ec91b4c572116efd67bce6397509e94bb068 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 27 Mar 2020 09:40:57 +0100 Subject: [PATCH 010/199] Add Spektrum smart ESC and smart battery telemetry (#7460) Add Spektrum ESC telemetry --- radio/src/telemetry/spektrum.cpp | 117 ++++++++++++++++++++++++++++++- radio/src/translations/cz.h.txt | 35 ++++++++- radio/src/translations/de.h.txt | 53 +++++++++++++- radio/src/translations/en.h.txt | 35 ++++++++- radio/src/translations/es.h.txt | 35 ++++++++- radio/src/translations/fi.h.txt | 35 ++++++++- radio/src/translations/fr.h.txt | 35 ++++++++- radio/src/translations/it.h.txt | 35 ++++++++- radio/src/translations/nl.h.txt | 35 ++++++++- radio/src/translations/pl.h.txt | 35 ++++++++- radio/src/translations/pt.h.txt | 35 ++++++++- radio/src/translations/se.h.txt | 35 ++++++++- 12 files changed, 508 insertions(+), 12 deletions(-) diff --git a/radio/src/telemetry/spektrum.cpp b/radio/src/telemetry/spektrum.cpp index a71d5118b..60c9f2329 100644 --- a/radio/src/telemetry/spektrum.cpp +++ b/radio/src/telemetry/spektrum.cpp @@ -24,6 +24,7 @@ /* * Documentation of the Spektrum protocol is available under * https://www.spektrumrc.com/ProdInfo/Files/SPM_Telemetry_Developers_Specs.pdf + * https://github.com/SpektrumRC/SpektrumDocumentation/blob/master/Telemetry/spektrumTelemetrySensors.h * * Multi module adds two byte header of 0xAA [RSSI of telemetry packet] [16 byte message] */ @@ -49,7 +50,18 @@ #define I2C_TEXTGEN 0x0c #define I2C_GPS 0x17 #define I2C_GPS2 0x17 +#define I2C_ESC 0x20 #define I2C_CELLS 0x3a + +// SMART_BAT is using fake I2C adresses compared to official Spektrum address because of subtype used only for this I2C address +#define I2C_SMART_BAT_BASE_ADDRESS 0x42 +#define I2C_SMART_BAT_REALTIME 0x42 +#define I2C_SMART_BAT_CELLS_1_6 0x43 +#define I2C_SMART_BAT_CELLS_7_12 0x44 +#define I2C_SMART_BAT_CELLS_13_18 0x45 +#define I2C_SMART_BAT_ID 0x4A +#define I2C_SMART_BAT_LIMITS 0x4B + #define I2C_QOS 0x7f enum SpektrumDataType : uint8_t { @@ -62,6 +74,8 @@ enum SpektrumDataType : uint8_t { uint8bcd, uint16bcd, uint32bcd, + uint16le, + uint32le, custom }; @@ -151,7 +165,16 @@ const SpektrumSensor spektrumSensors[] = { {0x1b, 2, int16, ZSTR_PITCH, UNIT_DEGREE, 1}, {0x1b, 4, int16, ZSTR_YAW, UNIT_DEGREE, 1}, - // {0x20, esc}, does not exist in the wild? + // {0x20, esc}, Smart ESC telemetry + {I2C_ESC, 0, uint16, ZSTR_ESC_RPM, UNIT_RPMS, 0}, + {I2C_ESC, 2, uint16, ZSTR_ESC_VIN, UNIT_VOLTS, 2}, + {I2C_ESC, 4, uint16, ZSTR_ESC_TFET, UNIT_CELSIUS, 1}, + {I2C_ESC, 6, uint16, ZSTR_ESC_CUR, UNIT_MAH, 1}, + {I2C_ESC, 8, uint16, ZSTR_ESC_TBEC, UNIT_CELSIUS, 1}, + {I2C_ESC, 10, uint8, ZSTR_ESC_BCUR, UNIT_AMPS, 1}, + {I2C_ESC, 11, uint8, ZSTR_ESC_VBEC, UNIT_VOLTS, 2}, + {I2C_ESC, 12, uint8, ZSTR_ESC_THR, UNIT_PERCENT, 1}, + {I2C_ESC, 13, uint8, ZSTR_ESC_POUT, UNIT_PERCENT, 1}, // Dual Cell monitor (0x34) {0x34, 0, int16, ZSTR_BATT1_CURRENT, UNIT_AMPS, 1}, @@ -178,6 +201,53 @@ const SpektrumSensor spektrumSensors[] = { {0x40, 0, int16, ZSTR_ALT, UNIT_METERS, 1}, {0x40, 2, int16, ZSTR_VSPD, UNIT_METERS_PER_SECOND, 1}, + // Smartbat + //{I2C_SMART_BAT_REALTIME, 1, int8, ZSTR_SMART_BAT_BTMP, UNIT_CELSIUS, 0}, // disabled because sensor is a duplicate of cells sensors ones + {I2C_SMART_BAT_REALTIME, 2, uint32le, ZSTR_SMART_BAT_BCUR, UNIT_MAH, 0}, + {I2C_SMART_BAT_REALTIME, 6, uint16le, ZSTR_SMART_BAT_BCAP, UNIT_MAH, 0}, + {I2C_SMART_BAT_REALTIME, 8, uint16le, ZSTR_SMART_BAT_MIN_CEL, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_REALTIME, 10, uint16le, ZSTR_SMART_BAT_MAX_CEL, UNIT_VOLTS, 2}, + //{I2C_SMART_BAT_REALTIME, 12, uint16le, "RFU[2]", UNIT_RAW, 0}, // disabled to save sensors slots + + {I2C_SMART_BAT_CELLS_1_6, 1, int8, ZSTR_SMART_BAT_BTMP, UNIT_CELSIUS, 0}, + {I2C_SMART_BAT_CELLS_1_6, 2, uint16le, ZSTR_CL01, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_1_6, 4, uint16le, ZSTR_CL02, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_1_6, 6, uint16le, ZSTR_CL03, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_1_6, 8, uint16le, ZSTR_CL04, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_1_6, 10, uint16le, ZSTR_CL05, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_1_6, 12, uint16le, ZSTR_CL06, UNIT_VOLTS, 2}, + + {I2C_SMART_BAT_CELLS_7_12, 1, int8, ZSTR_SMART_BAT_BTMP, UNIT_CELSIUS, 0}, + {I2C_SMART_BAT_CELLS_7_12, 2, uint16le, ZSTR_CL07, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_7_12, 4, uint16le, ZSTR_CL08, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_7_12, 6, uint16le, ZSTR_CL09, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_7_12, 8, uint16le, ZSTR_CL10, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_7_12, 10, uint16le, ZSTR_CL11, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_7_12, 12, uint16le, ZSTR_CL12, UNIT_VOLTS, 2}, + + {I2C_SMART_BAT_CELLS_13_18, 1, int8, ZSTR_SMART_BAT_BTMP, UNIT_CELSIUS, 0}, + {I2C_SMART_BAT_CELLS_13_18, 2, uint16le, ZSTR_CL13, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_13_18, 4, uint16le, ZSTR_CL14, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_13_18, 6, uint16le, ZSTR_CL15, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_13_18, 8, uint16le, ZSTR_CL16, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_13_18, 10, uint16le, ZSTR_CL17, UNIT_VOLTS, 2}, + {I2C_SMART_BAT_CELLS_13_18, 12, uint16le, ZSTR_CL18, UNIT_VOLTS, 2}, + + //{I2C_SMART_BAT_ID, 1, uint8, "chemistery", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_ID, 2, uint8, "number of cells", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_ID, 3, uint8, "manufacturer code", UNIT_RAW, 0}, // disabled to save sensors slots + {I2C_SMART_BAT_ID, 4, uint16le, ZSTR_SMART_BAT_CYCLES, UNIT_RAW, 0}, + //{I2C_SMART_BAT_ID, 6, uint8, "uniqueID[8]", UNIT_RAW, 0}, // disabled to save sensors slots + + //{I2C_SMART_BAT_LIMITS, 1, uint8, "rfu", UNIT_RAW, 0}, // disabled to save sensors slots + {I2C_SMART_BAT_LIMITS, 2, uint16le, ZSTR_SMART_BAT_CAPACITY,UNIT_MAH, 0}, + //{I2C_SMART_BAT_LIMITS, 4, uint16le, "dischargeCurrentRating", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_LIMITS, 6, uint16le, "overDischarge_mV", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_LIMITS, 8, uint16le, "zeroCapacity_mV", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_LIMITS, 10, uint16le, "fullyCharged_mV", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_LIMITS, 12, uint8, "minWorkingTemp", UNIT_RAW, 0}, // disabled to save sensors slots + //{I2C_SMART_BAT_LIMITS, 13, uint8, "maxWorkingTemp", UNIT_RAW, 0}, // disabled to save sensors slots + // 0x50-0x56 custom 3rd party sensors //{0x50, 0, int16, ZSTR_} @@ -248,6 +318,10 @@ static int32_t spektrumGetValue(const uint8_t *packet, int startByte, SpektrumDa return bcdToInt8(*(uint8_t *)data); case uint32bcd: return bcdToInt32(*(uint32_t *)data); + case uint16le: + return (int16_t) ((uint16_t) (data[0] + (data[1] << 8))); + case uint32le: + return ((uint32_t) (data[0] + (data[1] << 8) + (data[2] << 16) + (data[3] << 24))); default: return -1; } @@ -274,6 +348,12 @@ void processSpektrumPacket(const uint8_t *packet) setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 0, 0, 0, packet[1], UNIT_RAW, 0); // highest bit indicates that TM1100 is in use, ignore it uint8_t i2cAddress = (packet[2] & 0x7f); + + //SmartBat Hack + if (i2cAddress == I2C_SMART_BAT_BASE_ADDRESS) { + i2cAddress = i2cAddress + (packet[4] >> 4); // use type to create virtual I2CAddresses + } + uint8_t instance = packet[3]; if (i2cAddress == I2C_TEXTGEN) { @@ -303,6 +383,41 @@ void processSpektrumPacket(const uint8_t *packet) if (!isSpektrumValidValue(value, sensor->dataType)) continue; + // mV to VOLT PREC2 for Smart Batteries + if ((i2cAddress >= I2C_SMART_BAT_REALTIME && i2cAddress <= I2C_SMART_BAT_LIMITS) && sensor->unit == UNIT_VOLTS) { + if (value == -1) { + continue; // discard unavailable sensors + } + else { + value = value / 10; + } + } + + // RPM, 10RPM (0-655340 RPM) + if (i2cAddress == I2C_ESC && sensor->unit == UNIT_RPMS) { + value = value / 10; + } + + // Current, 10mA (0-655.34A) + if (i2cAddress == I2C_ESC && sensor->startByte == 6) { + value = value / 10; + } + + // BEC Current, 100mA (0-25.4A) + if (i2cAddress == I2C_ESC && sensor->startByte == 10) { + value = value / 10; + } + + // Throttle 0.5% (0-127%) + if (i2cAddress == I2C_ESC && sensor->startByte == 12) { + value = value / 2; + } + + // Power 0.5% (0-127%) + if (i2cAddress == I2C_ESC && sensor->startByte == 13) { + value = value / 2; + } + if (i2cAddress == I2C_CELLS && sensor->unit == UNIT_VOLTS) { // Map to FrSky style cell values int cellIndex = (sensor->startByte / 2) << 16; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 0033d2c49..e46a70230 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1255,7 +1255,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1279,3 +1279,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 1e9d99231..7998f947d 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1261,7 +1261,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1285,3 +1285,54 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18"" \ No newline at end of file diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 230b69b9b..c5211468e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1259,7 +1259,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1283,3 +1283,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index fba624466..9a293f9fa 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1277,7 +1277,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1301,3 +1301,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index d917e82f5..b3665f787 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1268,7 +1268,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1291,3 +1291,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index fad12d2b9..c9bb7a649 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1283,7 +1283,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1307,3 +1307,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index cb2b3c736..11f4c411c 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1277,7 +1277,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1301,3 +1301,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index abda9557a..9ff3650ce 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1269,7 +1269,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1293,3 +1293,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 606a45895..e721da2ed 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1276,7 +1276,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1300,3 +1300,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 29533d2c5..87650f390 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1265,7 +1265,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1289,3 +1289,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index eaacd2905..6fba79f01 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1276,7 +1276,7 @@ #define ZSTR_GATE_TIME "GteT" #define ZSTR_ESC_VOLTAGE "EscV" #define ZSTR_ESC_CURRENT "EscA" -#define ZSTR_ESC_RPM "EscR" +#define ZSTR_ESC_RPM "Erpm" #define ZSTR_ESC_CONSUMPTION "EscC" #define ZSTR_ESC_TEMP "EscT" #define ZSTR_SD1_CHANNEL "Chan" @@ -1300,3 +1300,36 @@ #define ZSTR_RB3040_CHANNEL6 "CH6A" #define ZSTR_RB3040_CHANNEL7 "CH7A" #define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" \ No newline at end of file From a5f760e8237fa9f96165d4d941a069f96ecd6cff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Maggioni?= Date: Fri, 27 Mar 2020 10:29:20 +0100 Subject: [PATCH 011/199] Prevent center beep at boot (#7432) --- radio/src/mixer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index e4b701c9c..a8100da22 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -460,7 +460,7 @@ void evalInputs(uint8_t mode) if (mode == e_perout_mode_normal) { if (tmp==0 || (tmp==1 && (bpanaCenter & mask))) { anaCenter |= mask; - if ((g_model.beepANACenter & mask) && !(bpanaCenter & mask) && !menuCalibrationState) { + if ((g_model.beepANACenter & mask) && !(bpanaCenter & mask) && s_mixer_first_run_done && !menuCalibrationState) { if (!IS_POT(i) || IS_POT_SLIDER_AVAILABLE(i)) { AUDIO_POT_MIDDLE(i); } From f59e939463d9bf4b567980581e24ff583406e68d Mon Sep 17 00:00:00 2001 From: olliw42 <6089567+olliw42@users.noreply.github.com> Date: Fri, 27 Mar 2020 10:37:54 +0100 Subject: [PATCH 012/199] add lcd.backlightOn() (#7426) add lcd.backlightOn() --- radio/src/lua/api_lcd.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/radio/src/lua/api_lcd.cpp b/radio/src/lua/api_lcd.cpp index 3c2b32638..e413e72a0 100644 --- a/radio/src/lua/api_lcd.cpp +++ b/radio/src/lua/api_lcd.cpp @@ -62,6 +62,20 @@ static int luaLcdClear(lua_State *L) return 0; } +/*luadoc +@function lcd.backlightOn() + +Switches backlight on + +@status current Introduced in 2.3.6 +*/ +static int luaLcdBacklightOn(lua_State *L) +{ + if (!luaLcdAllowed) return 0; + backlightOn(); + return 0; +} + /*luadoc @function lcd.drawPoint(x, y) @@ -861,6 +875,7 @@ static int luaRGB(lua_State *L) const luaL_Reg lcdLib[] = { { "refresh", luaLcdRefresh }, { "clear", luaLcdClear }, + { "backlightOn", luaLcdBacklightOn }, { "drawPoint", luaLcdDrawPoint }, { "drawLine", luaLcdDrawLine }, { "drawRectangle", luaLcdDrawRectangle }, From 2873f7fd4d12b892245c292ba375f01cdc9e3e3a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Mar 2020 10:41:29 +0100 Subject: [PATCH 013/199] lcd.backlightOn renamed to lcd.resetBacklightTimeout --- radio/src/lua/api_lcd.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/lua/api_lcd.cpp b/radio/src/lua/api_lcd.cpp index e413e72a0..d166d14a5 100644 --- a/radio/src/lua/api_lcd.cpp +++ b/radio/src/lua/api_lcd.cpp @@ -63,13 +63,13 @@ static int luaLcdClear(lua_State *L) } /*luadoc -@function lcd.backlightOn() +@function lcd.resetBacklightTimeout() -Switches backlight on +Reset the backlight timeout @status current Introduced in 2.3.6 */ -static int luaLcdBacklightOn(lua_State *L) +static int luaLcdResetBacklightTimeout(lua_State * L) { if (!luaLcdAllowed) return 0; backlightOn(); @@ -875,7 +875,7 @@ static int luaRGB(lua_State *L) const luaL_Reg lcdLib[] = { { "refresh", luaLcdRefresh }, { "clear", luaLcdClear }, - { "backlightOn", luaLcdBacklightOn }, + { "resetBacklightTimeout", luaLcdResetBacklightTimeout }, { "drawPoint", luaLcdDrawPoint }, { "drawLine", luaLcdDrawLine }, { "drawRectangle", luaLcdDrawRectangle }, From fdf77fb476f8ac41eebdb052c38877afbcf71f90 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Mar 2020 10:43:06 +0100 Subject: [PATCH 014/199] C function backlightOn() renamed to resetBacklightTimeout() --- radio/src/gui/480x272/popups.cpp | 2 +- radio/src/gui/common/stdlcd/popups.cpp | 2 +- radio/src/lua/api_lcd.cpp | 2 +- radio/src/opentx.cpp | 10 +++++----- radio/src/opentx.h | 2 +- radio/src/switches.cpp | 2 +- .../targets/common/arm/stm32/rotary_encoder_driver.cpp | 2 +- radio/src/targets/horus/keys_driver.cpp | 2 +- radio/src/targets/simu/simpgmspace.cpp | 2 +- radio/src/targets/sky9x/keys_driver.cpp | 2 +- radio/src/targets/taranis/keys_driver.cpp | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/radio/src/gui/480x272/popups.cpp b/radio/src/gui/480x272/popups.cpp index 25a28779e..2d8caeca3 100644 --- a/radio/src/gui/480x272/popups.cpp +++ b/radio/src/gui/480x272/popups.cpp @@ -46,7 +46,7 @@ void showAlertBox(const char * title, const char * text, const char * action, ui lcdRefresh(); lcdSetContrast(); waitKeysReleased(); - backlightOn(); + resetBacklightTimeout(); checkBacklight(); } diff --git a/radio/src/gui/common/stdlcd/popups.cpp b/radio/src/gui/common/stdlcd/popups.cpp index 6c86dff68..5725d0ad0 100644 --- a/radio/src/gui/common/stdlcd/popups.cpp +++ b/radio/src/gui/common/stdlcd/popups.cpp @@ -227,7 +227,7 @@ void showAlertBox(const char * title, const char * text, const char * action , u lcdRefresh(); lcdSetContrast(); waitKeysReleased(); - backlightOn(); + resetBacklightTimeout(); checkBacklight(); } diff --git a/radio/src/lua/api_lcd.cpp b/radio/src/lua/api_lcd.cpp index d166d14a5..bb9172e32 100644 --- a/radio/src/lua/api_lcd.cpp +++ b/radio/src/lua/api_lcd.cpp @@ -72,7 +72,7 @@ Reset the backlight timeout static int luaLcdResetBacklightTimeout(lua_State * L) { if (!luaLcdAllowed) return 0; - backlightOn(); + resetBacklightTimeout(); return 0; } diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index e6a20db0b..ea70e0b7b 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -687,7 +687,7 @@ void checkBacklight() if (inputsMoved()) { inactivity.counter = 0; if (g_eeGeneral.backlightMode & e_backlight_mode_sticks) { - backlightOn(); + resetBacklightTimeout(); } } @@ -700,7 +700,7 @@ void checkBacklight() } } -void backlightOn() +void resetBacklightTimeout() { lightOffCounter = ((uint16_t)g_eeGeneral.lightAutoOff*250) << 1; } @@ -727,7 +727,7 @@ void doSplash() #endif if (SPLASH_NEEDED()) { - backlightOn(); + resetBacklightTimeout(); drawSplash(); #if defined(PCBSKY9X) @@ -1977,7 +1977,7 @@ void opentxInit() if (g_eeGeneral.backlightMode != e_backlight_mode_off) { // on Tx start turn the light on - backlightOn(); + resetBacklightTimeout(); } if (!globalData.unexpectedShutdown) { @@ -1995,7 +1995,7 @@ void opentxInit() lcdSetContrast(); #endif - backlightOn(); + resetBacklightTimeout(); startPulses(); diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 47ea4cdcd..cd9ac3a58 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -635,7 +635,7 @@ static inline void GET_ADC_IF_MIXER_NOT_RUNNING() #include "sbus.h" -void backlightOn(); +void resetBacklightTimeout(); void checkBacklight(); #define BITMASK(bit) (1<<(bit)) diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index c226e8f7b..d3497dda7 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -642,7 +642,7 @@ void checkSwitches() } LED_ERROR_BEGIN(); - backlightOn(); + resetBacklightTimeout(); // first - display warning #if defined(PCBTARANIS) || defined(PCBHORUS) diff --git a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp index 436cb0bd7..debe8793d 100644 --- a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp +++ b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp @@ -104,7 +104,7 @@ void rotaryEncoderCheck() #endif #if !defined(BOOT) if (g_eeGeneral.backlightMode & e_backlight_mode_keys) { - backlightOn(); + resetBacklightTimeout(); } inactivity.counter = 0; #endif diff --git a/radio/src/targets/horus/keys_driver.cpp b/radio/src/targets/horus/keys_driver.cpp index 888c4dabc..0b02a6a03 100644 --- a/radio/src/targets/horus/keys_driver.cpp +++ b/radio/src/targets/horus/keys_driver.cpp @@ -107,7 +107,7 @@ void readKeysAndTrims() if ((keys_input || trims_input) && (g_eeGeneral.backlightMode & e_backlight_mode_keys)) { // on keypress turn the light on - backlightOn(); + resetBacklightTimeout(); } } diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index ee4bcdb23..1aadf6e30 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -501,7 +501,7 @@ void readKeysAndTrims() } if (keysInput || trimsInput) { - backlightOn(); + resetBacklightTimeout(); } } diff --git a/radio/src/targets/sky9x/keys_driver.cpp b/radio/src/targets/sky9x/keys_driver.cpp index 9f7dac244..f37cb52b5 100644 --- a/radio/src/targets/sky9x/keys_driver.cpp +++ b/radio/src/targets/sky9x/keys_driver.cpp @@ -109,7 +109,7 @@ void readKeysAndTrims() if ((keys_input || trims_input) && (g_eeGeneral.backlightMode & e_backlight_mode_keys)) { // on keypress turn the light on - backlightOn(); + resetBacklightTimeout(); } } diff --git a/radio/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp index ab0a6202d..0699a1c50 100644 --- a/radio/src/targets/taranis/keys_driver.cpp +++ b/radio/src/targets/taranis/keys_driver.cpp @@ -130,7 +130,7 @@ void readKeysAndTrims() if ((keys_input || trims_input) && (g_eeGeneral.backlightMode & e_backlight_mode_keys)) { #endif // on keypress turn the light on - backlightOn(); + resetBacklightTimeout(); } } From 7caa79facd2447858f0e5d1ffb3070cf07934d23 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Fri, 27 Mar 2020 11:26:19 +0100 Subject: [PATCH 015/199] Removed unused file --- companion/src/imgpreferences.ui | 500 -------------------------------- 1 file changed, 500 deletions(-) delete mode 100644 companion/src/imgpreferences.ui diff --git a/companion/src/imgpreferences.ui b/companion/src/imgpreferences.ui deleted file mode 100644 index 1ba680d4d..000000000 --- a/companion/src/imgpreferences.ui +++ /dev/null @@ -1,500 +0,0 @@ - - - preferencesDialog - - - - 0 - 0 - 685 - 432 - - - - - 0 - 0 - - - - - 685 - 0 - - - - Preferences - - - - QLayout::SetMinimumSize - - - 2 - - - 4 - - - - - 8 - - - - - - - true - - - true - - - - - - - - 0 - 0 - - - - Simu BackLight - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Simulator capture folder - - - - - - - - 0 - 0 - - - - Joystick - - - - - - - Remember simulator switches - - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - Enable - - - - - - - - - Use clipboard only - - - - - - - Calibrate - - - - - - - - - - Blue - - - - - Green - - - - - Red - - - - - Orange - - - - - Yellow - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Open Folder - - - false - - - - - - - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - Personal splash library - - - - - - - - - true - - - true - - - - - - - Open Folder - - - - - - - - - - - - 0 - 0 - - - - - Include companion splashes - - - - - Only user defined splashes - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - 0 - 0 - - - - Splash library behaviour - - - - - - - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - Custom TX splash screen - - - - - - - - - true - - - true - - - - - - - - 0 - 0 - - - - Open Image - - - - - - - - - - - - - ... - - - - - - - ... - - - - - - - false - - - Invert Pixels - - - - - - - - - - 0 - 0 - - - - - 128 - 64 - - - - - 128 - 64 - - - - QFrame::Panel - - - QFrame::Raised - - - - - - true - - - - - - - - - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - backLightColor - joystickCB - joystickChkB - joystickcalButton - simuSW - snapshotPath - snapshotPathButton - snapshotClipboardCKB - libraryPath - libraryPathButton - splashincludeCB - SplashFileName - SplashSelect - SplashLibraryDialogButton - clearImageButton - InvertPixels - buttonBox - - - - - - - buttonBox - accepted() - preferencesDialog - accept() - - - 370 - 49 - - - 157 - 274 - - - - - buttonBox - rejected() - preferencesDialog - reject() - - - 390 - 55 - - - 286 - 274 - - - - - From 7f6d3f9e01d0040c7c1ba5613f7e0ba9d934ebf0 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Fri, 27 Mar 2020 11:27:36 +0100 Subject: [PATCH 016/199] Simulator positions are always reloaded, setting controls whether they are saved or not --- companion/src/apppreferencesdialog.ui | 303 ++++++++++--------- companion/src/simulation/simulatorwidget.cpp | 16 +- 2 files changed, 169 insertions(+), 150 deletions(-) diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index ca015d2dc..c96774dca 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -45,7 +45,7 @@ - 1 + 2 @@ -61,22 +61,40 @@ + + 0 + + + 0 + + + 0 + + + 0 + 5 4 - - 0 - - + + 0 + + + 0 + + + 0 + + 0 @@ -728,6 +746,19 @@ Mode 4: + + + + + 0 + 0 + + + + Startup Settings + + + @@ -764,8 +795,8 @@ Mode 4: - - + + 0 @@ -773,7 +804,7 @@ Mode 4: - Startup Settings + Automatic Backup Folder @@ -797,29 +828,6 @@ Mode 4: - - - - Show splash screen when Companion starts - - - true - - - - - - - - 0 - 0 - - - - Automatic Backup Folder - - - @@ -833,6 +841,43 @@ Mode 4: + + + + Show splash screen when Companion starts + + + true + + + + + + + + + true + + + false + + + + + + + + 0 + 0 + + + + Select Folder + + + + + @@ -864,32 +909,18 @@ Mode 4: - - - - - - true - - - false - - - - - - - - 0 - 0 - - - - Select Folder - - - - + + + + + 0 + 0 + + + + Debug Output Logging + + @@ -901,7 +932,7 @@ Mode 4: - + @@ -914,16 +945,23 @@ Mode 4: - - + + + + Qt::Horizontal + + + + + - + 0 0 - Debug Output Logging + Enable automatic backup before writing firmware @@ -961,26 +999,6 @@ Mode 4: - - - - - 0 - 0 - - - - Enable automatic backup before writing firmware - - - - - - - Qt::Horizontal - - - @@ -1008,6 +1026,27 @@ Mode 4: + + + + + + true + + + false + + + + + + + Select Folder + + + + + @@ -1032,47 +1071,13 @@ Mode 4: - - - - - - true - - - false - - - - - - - Select Folder - - - - - - + Qt::Horizontal - - - - - 0 - 0 - - - - User Splash Screens - - - @@ -1099,29 +1104,18 @@ Mode 4: - - - - - - <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) - - - - + + + + + 0 + 0 + + + + User Splash Screens + + @@ -1155,6 +1149,33 @@ Mode 4: + + + + + + <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) + + + + + + + + @@ -1357,7 +1378,7 @@ Mode 4: - Remember simulator switch values + Save switch/pot positions on simulator exit diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index 7a457c228..d20e34cc7 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -680,14 +680,12 @@ void SimulatorWidget::setupJoysticks() void SimulatorWidget::restoreRadioWidgetsState() { // All RadioWidgets - if (g.simuSW()) { - RadioWidget::RadioWidgetState state; - QList states = g.profile[radioProfileId].simulatorOptions().controlsState; - foreach (QByteArray ba, states) { - QDataStream stream(ba); - stream >> state; - emit widgetStateChange(state); - } + RadioWidget::RadioWidgetState state; + QList states = g.profile[radioProfileId].simulatorOptions().controlsState; + foreach (QByteArray ba, states) { + QDataStream stream(ba); + stream >> state; + emit widgetStateChange(state); } // Set throttle stick down and locked, side depends on mode @@ -701,8 +699,8 @@ void SimulatorWidget::restoreRadioWidgetsState() void SimulatorWidget::saveRadioWidgetsState(QList & state) { if (m_radioWidgets.size()) { - state.clear(); if (g.simuSW()) { + state.clear(); foreach (RadioWidget * rw, m_radioWidgets) state.append(rw->getStateData()); } From 1d3f04482f15cb40092106b59d45b5e77ce5b41d Mon Sep 17 00:00:00 2001 From: Kilrah Date: Fri, 27 Mar 2020 11:59:08 +0100 Subject: [PATCH 017/199] Allow clearing saved simulator control positions --- companion/src/apppreferencesdialog.cpp | 7 ++ companion/src/apppreferencesdialog.h | 1 + companion/src/apppreferencesdialog.ui | 166 ++++++++++++++----------- 3 files changed, 98 insertions(+), 76 deletions(-) diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 63c260176..e3817a9ba 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -352,6 +352,13 @@ void AppPreferencesDialog::on_ge_pathButton_clicked() } } +void AppPreferencesDialog::on_btnClearPos_clicked() +{ + SimulatorOptions opts = g.profile[g.sessionId()].simulatorOptions(); + opts.controlsState.clear(); + g.profile[g.sessionId()].simulatorOptions(opts); +} + #if defined(JOYSTICKS) void AppPreferencesDialog::on_joystickChkB_clicked() { if (ui->joystickChkB->isChecked()) { diff --git a/companion/src/apppreferencesdialog.h b/companion/src/apppreferencesdialog.h index 8c796cf7f..7e3f6f234 100644 --- a/companion/src/apppreferencesdialog.h +++ b/companion/src/apppreferencesdialog.h @@ -66,6 +66,7 @@ class AppPreferencesDialog : public QDialog void on_SplashSelect_clicked(); void on_clearImageButton_clicked(); void on_btn_appLogsDir_clicked(); + void on_btnClearPos_clicked(); #if defined(JOYSTICKS) void on_joystickChkB_clicked(); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index c96774dca..dff6bbc00 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -1201,7 +1201,38 @@ Mode 4: 6 - + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + 1 + + + 0.500000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + @@ -1214,14 +1245,20 @@ Mode 4: - - + + + + + 0 + 0 + + - Calibrate + Screenshot capture folder - + @@ -1256,31 +1293,22 @@ Mode 4: - - - - - 0 - 0 - - + + - Screenshot capture folder + Calibrate - - - - Qt::Vertical + + + + Select Folder - - - 20 - 5 - + + false - + @@ -1295,7 +1323,7 @@ Mode 4: - + @@ -1308,17 +1336,20 @@ Mode 4: - - - - Select Folder + + + + Qt::Vertical - - false + + + 20 + 5 + - + - + @@ -1331,7 +1362,20 @@ Mode 4: - + + + + + 0 + 0 + + + + Simulator Volume Gain + + + + @@ -1369,10 +1413,17 @@ Mode 4: - + + + + Simulator controls + + + + - + 0 0 @@ -1382,47 +1433,10 @@ Mode 4: - - - - - 0 - 0 - - + + - Simulator Volume Gain - - - - - - - - 0 - 0 - - - - - 50 - 16777215 - - - - 1 - - - 0.500000000000000 - - - 3.000000000000000 - - - 0.100000000000000 - - - 1.000000000000000 + Clear saved positions From cb31b10b36085b8053b05cad37b20588f6176adb Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Mar 2020 12:32:35 +0100 Subject: [PATCH 018/199] Fixes #7370 --- .../src/firmwares/opentx/opentxeeprom.cpp | 8 ++++--- companion/src/simulation/joystick.cpp | 23 ++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 3609713a5..cfeb5278a 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -693,11 +693,13 @@ class FlightModeField: public TransformedField { internalField.Append(new UnsignedField<8>(this, phase.fadeIn)); internalField.Append(new UnsignedField<8>(this, phase.fadeOut)); - for (int i=0; i(this, phase.rotaryEncoders[i])); + if (version < 219) { + for (int i = 0; i < rotencCount; i++) { + internalField.Append(new SignedField<16>(this, phase.rotaryEncoders[i])); + } } - for (int i=0; i(this, phase.gvars[i])); } } diff --git a/companion/src/simulation/joystick.cpp b/companion/src/simulation/joystick.cpp index 87f7476f0..070825a21 100644 --- a/companion/src/simulation/joystick.cpp +++ b/companion/src/simulation/joystick.cpp @@ -99,8 +99,9 @@ void Joystick::processEvents() axes[i] = moved; } } - else + else { axisRepeatTimers[i].restart(); + } } else { emit axisValueChanged(i, 0); @@ -108,17 +109,20 @@ void Joystick::processEvents() } for (i = 0; i < numButtons; i++) { Uint8 changed = SDL_JoystickGetButton(joystick, i); - if ( (changed != buttons[i]) ) { + if ((changed != buttons[i])) { emit buttonValueChanged(i, (bool) changed); buttons[i] = changed; buttonRepeatTimers[i].restart(); - } else if (autoRepeat && changed != 0) { + } + else if (autoRepeat && changed != 0) { if ( buttonRepeatTimers[i].elapsed() >= autoRepeatDelay ) { emit buttonValueChanged(i, (bool) changed); buttons[i] = changed; } - } else + } + else { buttonRepeatTimers[i].restart(); + } } for (i = 0; i < numHats; i++) { Uint8 changed = SDL_JoystickGetHat(joystick, i); @@ -126,19 +130,22 @@ void Joystick::processEvents() emit hatValueChanged(i, changed); hats[i] = changed; hatRepeatTimers[i].restart(); - } else if (autoRepeat && changed != 0) { - if ( hatRepeatTimers[i].elapsed() >= autoRepeatDelay ) { + } + else if (autoRepeat && changed != 0) { + if (hatRepeatTimers[i].elapsed() >= autoRepeatDelay) { emit hatValueChanged(i, changed); hats[i] = changed; } - } else + } + else { hatRepeatTimers[i].restart(); + } } for (i = 0; i < numTrackballs; i++) { int dx, dy; SDL_JoystickGetBall(joystick, i, &dx, &dy); - if ( dx != 0 || dy != 0 ) + if (dx != 0 || dy != 0) emit trackballValueChanged(i, dx, dy); } } From 8ce51e42397add4725b1b29f02c0f4930aa78fc4 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 27 Mar 2020 12:38:10 +0100 Subject: [PATCH 019/199] RAS fix (#7463) --- companion/src/firmwares/opentx/opentxinterface.cpp | 1 + radio/src/telemetry/frsky.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 85d235679..eb3750447 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1252,6 +1252,7 @@ void registerOpenTxFirmwares() /* FrSky Taranis X9D board */ firmware = new OpenTxFirmware("opentx-x9d", Firmware::tr("FrSky Taranis X9D"), BOARD_TARANIS_X9D); + firmware->addOption("noras", Firmware::tr("Disable RAS (SWR)")); firmware->addOption("haptic", Firmware::tr("Haptic module installed")); addOpenTxTaranisOptions(firmware); addPPMInternalModuleHack(firmware); diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 8218447e4..763da1b32 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -293,10 +293,10 @@ inline bool isRasValueValid() { return true; } -#elif defined(PCBX9DP) || defined(PCBX9E) +#elif defined(PCBTARANIS) inline bool isRasValueValid() { - return telemetryData.xjtVersion != 0x0000 && telemetryData.xjtVersion != 0x00FF; + return telemetryData.xjtVersion != 0x00FF; } #elif defined(PCBHORUS) inline bool isRasValueValid() From d367469f34e23028971669db06031310659bea1d Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 27 Mar 2020 21:46:23 +0100 Subject: [PATCH 020/199] Fix copy/paste issue --- radio/src/translations/de.h.txt | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 7998f947d..9da0cadc6 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1318,21 +1318,3 @@ #define ZSTR_CL16 "Cl16" #define ZSTR_CL17 "Cl17" #define ZSTR_CL18 "Cl18" -#define ZSTR_CL01 "Cel1" -#define ZSTR_CL02 "Cel2" -#define ZSTR_CL03 "Cel3" -#define ZSTR_CL04 "Cel4" -#define ZSTR_CL05 "Cel5" -#define ZSTR_CL06 "Cel6" -#define ZSTR_CL07 "Cel7" -#define ZSTR_CL08 "Cel8" -#define ZSTR_CL09 "Cel9" -#define ZSTR_CL10 "Cl10" -#define ZSTR_CL11 "Cl11" -#define ZSTR_CL12 "Cl12" -#define ZSTR_CL13 "Cl13" -#define ZSTR_CL14 "Cl14" -#define ZSTR_CL15 "Cl15" -#define ZSTR_CL16 "Cl16" -#define ZSTR_CL17 "Cl17" -#define ZSTR_CL18 "Cl18"" \ No newline at end of file From 771c6ea3bdd197d4943f6470cb9d57af30ba995b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 28 Mar 2020 09:34:42 +0100 Subject: [PATCH 021/199] Rollback OTA on Horus as it freezes the radio when entering the SD Manager --- radio/src/gui/480x272/radio_sdmanager.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/480x272/radio_sdmanager.cpp b/radio/src/gui/480x272/radio_sdmanager.cpp index b744eac17..2796325ac 100644 --- a/radio/src/gui/480x272/radio_sdmanager.cpp +++ b/radio/src/gui/480x272/radio_sdmanager.cpp @@ -281,19 +281,20 @@ void onUpdateReceiverSelection(const char * result) bool menuRadioSdManager(event_t _event) { - if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) { - moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; - CLEAR_POPUP(); - killEvents(KEY_EXIT); - _event = 0; - } +// TODO FREEZE SD MANAGER +// if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) { +// moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; +// CLEAR_POPUP(); +// killEvents(KEY_EXIT); +// _event = 0; +// } event_t event = (EVT_KEY_MASK(_event) == KEY_ENTER ? 0 : _event); SIMPLE_MENU(SD_IS_HC() ? STR_SDHC_CARD : STR_SD_CARD, RADIO_ICONS, menuTabGeneral, MENU_RADIO_SD_MANAGER, reusableBuffer.sdManager.count); int index = menuVerticalPosition - menuVerticalOffset; - switch(_event) { + switch (_event) { case EVT_ENTRY: f_chdir(ROOT_PATH); // no break; @@ -374,7 +375,7 @@ bool menuRadioSdManager(event_t _event) POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE); if (HAS_SPORT_UPDATE_CONNECTOR() && (information.productFamily == FIRMWARE_FAMILY_RECEIVER || information.productFamily == FIRMWARE_FAMILY_SENSOR)) POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); -#if defined(PXX2) +#if 0 // TODO FREEZE SD MANAGER defined(PXX2) if (information.productFamily == FIRMWARE_FAMILY_RECEIVER) { if (isReceiverOTAEnabledFromModule(INTERNAL_MODULE, information.productId)) POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA_BY_INTERNAL); @@ -555,7 +556,7 @@ bool menuRadioSdManager(event_t _event) } } -#if defined(PXX2) +#if 0 // FREEZE SD MANAGER defined(PXX2) if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND) { if (reusableBuffer.sdManager.otaUpdateInformation.step == BIND_INIT) { if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount > 0) { From 8b080683eba8a0ecb14ac760b2d255fde6432bf0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 28 Mar 2020 09:36:29 +0100 Subject: [PATCH 022/199] 2.3.7 preparation --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cccabf1f..2c9bb4321 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(OpenTX) set(VERSION_MAJOR "2") set(VERSION_MINOR "3") -set(VERSION_REVISION "6") +set(VERSION_REVISION "7") set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) From bb3dd95acc644ff4aa044ff9ad94d4ac52d9e9ba Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 28 Mar 2020 11:01:33 +0100 Subject: [PATCH 023/199] Bump to 2.3.8 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c9bb4321..b2762bf4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(OpenTX) set(VERSION_MAJOR "2") set(VERSION_MINOR "3") -set(VERSION_REVISION "7") +set(VERSION_REVISION "8") set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) From c11b565f0324b18bf3081ffdbf9feab50fdafb44 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 29 Mar 2020 21:02:29 +0200 Subject: [PATCH 024/199] Support for Multi FrSky 2.1.x (#7472) * FRSKY X2.1 support * String fixes * Cosmetics * Improve 128 multi GUI * Improve 128 internal multi GUI * Improve 1212 multi GUI * Fix * Adjust multi upgrade version warning * Cosmetics * Cosmetics * Cosmetics Co-authored-by: Kilrah --- companion/src/firmwares/moduledata.h | 9 +++- companion/src/firmwares/multiprotocols.cpp | 5 +- radio/src/gui/128x64/model_setup.cpp | 56 ++++++++++++---------- radio/src/gui/212x64/model_setup.cpp | 50 +++++++++++++------ radio/src/gui/gui_common.cpp | 2 + radio/src/gui/gui_common.h | 2 + radio/src/pulses/modules_constants.h | 9 +++- radio/src/telemetry/multi.cpp | 2 +- radio/src/telemetry/telemetry.h | 3 +- radio/src/translations/untranslated.h | 2 +- 10 files changed, 95 insertions(+), 45 deletions(-) diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index caeaad833..83744908a 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -119,7 +119,14 @@ enum MultiModuleRFProtocols { MODULE_SUBTYPE_MULTI_AFHDS2A_RX, MODULE_SUBTYPE_MULTI_HOTT, MODULE_SUBTYPE_MULTI_FX816, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FX816 + MODULE_SUBTYPE_MULTI_BAYANG_RX, + MODULE_SUBTYPE_MULTI_PELIKAN, + MODULE_SUBTYPE_MULTI_TIGER, + MODULE_SUBTYPE_MULTI_XK, + MODULE_SUBTYPE_MULTI_XN297DUMP, + MODULE_SUBTYPE_MULTI_FRSKYX2, + MODULE_SUBTYPE_MULTI_FRSKY_R9, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FRSKY_R9 }; enum TrainerProtocol { diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index 18b7035a9..0dcc299e9 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -40,6 +40,7 @@ static const QStringList STR_SUBTYPE_CUSTOM ({ static const QStringList STR_SUBTYPE_FLYSKY {"Standard", "V9x9", "V6x6", "V912", "CX20"}; static const QStringList STR_SUBTYPE_HUBSAN {"H107", "H301", "H501"}; static const QStringList STR_SUBTYPE_FRSKY {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch"}; +static const QStringList STR_SUBTYPE_FRSKYX2 {"D16", "D16 8ch", "D16 EU-LBT", "D16 EU-LBT 8ch"}; 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"}; @@ -125,6 +126,7 @@ const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, STR_SUBTYPE_ESKY150, nullptr}, {MODULE_SUBTYPE_MULTI_FX816, 0, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKYX2, 3, true, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, {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) @@ -167,7 +169,8 @@ 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", "Scanner", "FrSky RX", "FlySky AFHDS2A RX", "HoTT", "Fx816" + "KFPlan KF606", "Redpine", "Potensic", "ZXS", "FlyZone", "Scanner", "FrSky RX", "FlySky AFHDS2A RX", "HoTT", "Fx816", + "Bayang RX", "Pelikan", "Tiger", "WK", "XN297 Dump", "FrSky X 2.1", "FrSky R9" }); if (protocol == MM_RF_CUSTOM_SELECTED || custom) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 3a67ba80e..2f40a0d0e 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -85,6 +85,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE, #if defined(MULTIMODULE) + ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE, ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS, @@ -113,6 +114,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, #if defined(MULTIMODULE) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE, #endif #if defined(MULTIMODULE) @@ -208,7 +210,7 @@ inline uint8_t MODULE_TYPE_ROWS(int moduleIdx) return 1; #if defined(MULTIMODULE) else if (isModuleMultimodule(moduleIdx)) { - return 1; + return 0; } #endif else @@ -306,19 +308,20 @@ void onBluetoothConnectMenu(const char * result) #if defined(HARDWARE_INTERNAL_MODULE) #define INTERNAL_MODULE_ROWS \ LABEL(InternalModule), \ - MODULE_TYPE_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE*/ \ - MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE*/ \ + MODULE_TYPE_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE */ \ + MULTIMODULE_TYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL */ \ + MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS */ \ - MODULE_CHANNELS_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS*/ \ + MODULE_CHANNELS_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS */ \ IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(IF_INTERNAL_MODULE_ON(isModuleRxNumAvailable(INTERNAL_MODULE) ? (uint8_t)2 : (uint8_t)1))), /* *ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE */\ - IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM*/ \ + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM */ \ MODULE_OPTION_ROW(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_OPTIONS */ \ MULTIMODULE_MODULE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_AUTOBIND */ \ EXTERNAL_ANTENNA_ROW /* ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA */ \ MODULE_POWER_ROW(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_POWER */ \ IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE */ \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 1), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_REGISTER_RANGE */ \ - IF_PXX2_MODULE(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_OPTIONS*/ \ + IF_PXX2_MODULE(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_OPTIONS */ \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1 */ \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_2 */ \ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_3 */ @@ -362,7 +365,8 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), MODULE_TYPE_ROWS(EXTERNAL_MODULE), - MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) + MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) // PROTOCOL + MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) // SUBTYPE MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) MODULE_CHANNELS_ROWS(EXTERNAL_MODULE), IF_NOT_ACCESS_MODULE_RF(EXTERNAL_MODULE, MODULE_BIND_ROWS(EXTERNAL_MODULE)), // line reused for PPM: PPM settings @@ -904,12 +908,6 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[moduleIdx].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[moduleIdx].subType, (menuHorizontalPosition==1 ? attr : 0)); -#if defined(MULTIMODULE) - else if (isModuleMultimodule(moduleIdx)) { - int multi_rfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); - lcdDrawMultiProtocolString(lcdNextPos + 3, y, moduleIdx, multi_rfProto, menuHorizontalPosition == 1 ? attr : 0); - } -#endif if (attr && menuHorizontalPosition == 0 && moduleIdx == EXTERNAL_MODULE) { if (s_editMode > 0) { g_model.moduleData[moduleIdx].type = MODULE_TYPE_NONE; @@ -958,18 +956,6 @@ void menuModelSetup(event_t event) g_model.moduleData[moduleIdx].channelsCount = defaultModuleChannels_M8(moduleIdx); } } - -#if defined(MULTIMODULE) - else if (isModuleMultimodule(moduleIdx)) { - int multiRfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); - CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); - if (checkIncDec_Ret) { - g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); - g_model.moduleData[moduleIdx].subType = 0; - resetMultiProtocolsOptions(moduleIdx); - } - } -#endif else { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].subType, 0, MODULE_SUBTYPE_PXX1_LAST); } @@ -1004,6 +990,26 @@ void menuModelSetup(event_t event) break; #if defined(MULTIMODULE) +#if defined(HARDWARE_INTERNAL_MODULE) + case ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL: +#endif + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL: + { + lcdDrawTextAlignedLeft(y, TR_TYPE); + int multi_rfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); + lcdDrawMultiProtocolString(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, multi_rfProto, attr); + if (attr) { + int multiRfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); + CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + if (checkIncDec_Ret) { + g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); + g_model.moduleData[moduleIdx].subType = 0; + resetMultiProtocolsOptions(moduleIdx); + } + } + } + break; + #if defined(HARDWARE_INTERNAL_MODULE) case ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE: #endif diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 9b7cb8b4b..b03b13d17 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -98,6 +98,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, #if defined (MULTIMODULE) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS, #endif @@ -248,11 +249,6 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() { if (isModuleXJT(EXTERNAL_MODULE) || isModuleR9MNonAccess(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE)) return 1; -#if defined(MULTIMODULE) - else if (isModuleMultimodule(EXTERNAL_MODULE)) { - return 1 + MULTIMODULE_RFPROTO_COLUMNS(EXTERNAL_MODULE); - } -#endif else return 0; } @@ -362,6 +358,7 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), EXTERNAL_MODULE_TYPE_ROW(), + MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) MODULE_CHANNELS_ROWS(EXTERNAL_MODULE), IF_NOT_ACCESS_MODULE_RF(EXTERNAL_MODULE, MODULE_BIND_ROWS(EXTERNAL_MODULE)), @@ -813,15 +810,6 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(EXTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0)); -#if defined(MULTIMODULE) - else if (isModuleMultimodule(EXTERNAL_MODULE)) { - uint8_t multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(); - // Do not use MODEL_SETUP_3RD_COLUMN here since some the protocol string are so long that we cannot afford the 2 spaces (+6) here - lcdDrawMultiProtocolString(lcdNextPos + 3, y, EXTERNAL_MODULE, multi_rfProto, menuHorizontalPosition == 1 ? attr : 0); - if (MULTIMODULE_HAS_SUBTYPE(EXTERNAL_MODULE)) - lcdDrawMultiSubProtocolString(lcdNextPos + 3, y, EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0); - } -#endif if (attr && menuHorizontalPosition == 0) { if (s_editMode > 0) { g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_NONE; @@ -906,6 +894,40 @@ void menuModelSetup(event_t event) } break; +#if defined(MULTIMODULE) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL: + { + lcdDrawTextAlignedLeft(y, TR_TYPE); + uint8_t multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(); + lcdDrawMultiProtocolString(MODEL_SETUP_2ND_COLUMN, y, EXTERNAL_MODULE, multi_rfProto, menuHorizontalPosition == 0 ? attr : 0); + if (MULTIMODULE_HAS_SUBTYPE(EXTERNAL_MODULE)) + lcdDrawMultiSubProtocolString(MODEL_SETUP_3RD_COLUMN + 15, y, EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].subType, + menuHorizontalPosition == 1 ? attr : 0); + if (attr) { + switch (menuHorizontalPosition) { + case 0: { + int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(); + CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); + g_model.moduleData[EXTERNAL_MODULE].subType = 0; + resetMultiProtocolsOptions(EXTERNAL_MODULE); + } + } + break; + + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, getMaxMultiSubtype(EXTERNAL_MODULE)); + if (checkIncDec_Ret) { + resetMultiProtocolsOptions(EXTERNAL_MODULE); + } + break; + } + } + } + break; +#endif + case ITEM_MODEL_SETUP_TRAINER_LABEL: lcdDrawTextAlignedLeft(y, STR_TRAINER); break; diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index a849dfd7a..045357b64 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -832,6 +832,7 @@ uint8_t convertMultiProtocol(uint8_t moduleIdx, uint8_t type) const char STR_SUBTYPE_FLYSKY[] = "\004""Std\0""V9x9""V6x6""V912""CX20"; const char STR_SUBTYPE_HUBSAN[] = "\004""H107""H301""H501"; const char STR_SUBTYPE_FRSKY[] = "\007""D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"; +const char STR_SUBTYPE_FRSKYX2[] = "\007""D16\0 ""D16 8ch""LBT(EU)""LBT 8ch"; 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"; @@ -923,6 +924,7 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, false, STR_SUBTYPE_ESKY150, nullptr}, {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKYX2, 3, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, {MM_RF_CUSTOM_SELECTED, 7, true, 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 ccbf535eb..55233ea17 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -251,8 +251,10 @@ inline uint8_t MULTIMODULE_HASOPTIONS(uint8_t moduleIdx) } #define MULTIMODULE_MODULE_ROWS(moduleIdx) MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTI_DISABLE_CHAN_MAP_ROW(moduleIdx), // AUTOBIND, DISABLE TELEM, DISABLE CN.MAP +#define MULTIMODULE_TYPE_ROW(moduleIdx) isModuleMultimodule(moduleIdx) ? MULTIMODULE_RFPROTO_COLUMNS(moduleIdx) : HIDDEN_ROW, #define MULTIMODULE_STATUS_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? TITLE_ROW : HIDDEN_ROW, (isModuleMultimodule(moduleIdx) && getMultiSyncStatus(moduleIdx).isValid()) ? TITLE_ROW : HIDDEN_ROW, #define MULTIMODULE_MODE_ROWS(moduleIdx) (g_model.moduleData[moduleIdx].multi.customProto) ? (uint8_t) 3 : MULTIMODULE_HAS_SUBTYPE(moduleIdx) ? (uint8_t)2 : (uint8_t)1 +#define MULTIMODULE_TYPE_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, #define MULTIMODULE_SUBTYPE_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? MULTIMODULE_RFPROTO_COLUMNS(moduleIdx) : HIDDEN_ROW, #define MULTIMODULE_OPTIONS_ROW(moduleIdx) (isModuleMultimodule(moduleIdx) && MULTIMODULE_HASOPTIONS(moduleIdx)) ? (uint8_t) 0: HIDDEN_ROW #define MODULE_POWER_ROW(moduleIdx) (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) || isModuleR9MNonAccess(moduleIdx)) ? (isModuleR9MLiteNonPro(moduleIdx) ? (isModuleR9M_FCC_VARIANT(moduleIdx) ? READONLY_ROW : (uint8_t)0) : (uint8_t)0) : HIDDEN_ROW diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index ec0f8f819..efbcd1b3d 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -157,7 +157,14 @@ enum ModuleSubtypeMulti { MODULE_SUBTYPE_MULTI_AFHDS2A_RX, MODULE_SUBTYPE_MULTI_HOTT, MODULE_SUBTYPE_MULTI_FX816, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FX816 + MODULE_SUBTYPE_MULTI_BAYANG_RX, + MODULE_SUBTYPE_MULTI_PELIKAN, + MODULE_SUBTYPE_MULTI_TIGER, + MODULE_SUBTYPE_MULTI_XK, + MODULE_SUBTYPE_MULTI_XN297DUMP, + MODULE_SUBTYPE_MULTI_FRSKYX2, + MODULE_SUBTYPE_MULTI_FRSKY_R9, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FRSKY_R9 }; #define MODULE_SUBTYPE_MULTI_XN297DP 63-3 diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index adc3120cd..738237bfc 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -555,7 +555,7 @@ void MultiModuleStatus::getStatusString(char * statusText) const return; } - if (major <= 1 && minor <= 3 && revision <= 0 && patch <= 47 && SLOW_BLINK_ON_PHASE) { + if (major <= 1 && minor <= 3 && revision <= 0 && patch <= 78 && SLOW_BLINK_ON_PHASE) { strcpy(statusText, STR_MODULE_UPGRADE); } else { diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index d2768ae87..4252eb9a8 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -108,7 +108,8 @@ void frskyDSetDefault(int index, uint16_t id); extern uint8_t telemetryProtocol; #if defined (MULTIMODULE) - #define IS_D16_MULTI(module) ((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH)) + #define IS_D16_MULTI(module) (((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH)) \ + || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX2)) #define IS_HOTT_MULTI(module) (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT) #if defined(HARDWARE_INTERNAL_MODULE) #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT || (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (IS_D16_MULTI(INTERNAL_MODULE)||IS_D16_MULTI(EXTERNAL_MODULE)))) diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 15361a065..cbef5238b 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -125,4 +125,4 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\007" -#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 " +#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""WK\0 ""XN297DU""FrSkyX2""FrSkyR9" From dd8d9f7d1a2fcf9f77d878375f55c76a4560a857 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Mar 2020 09:08:42 +0200 Subject: [PATCH 025/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 772bd36b9..31cfd4122 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1708,3 +1708,4 @@ James Laver Kevin Bowens David Frech Udo Kastenholz +Julio Margarido From d9d5ee9b806e58a3a95da6b2e37b4ad45a5d953e Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 30 Mar 2020 21:45:41 +0200 Subject: [PATCH 026/199] Remove stray item --- companion/src/apppreferencesdialog.ui | 235 +++++++++++++------------- 1 file changed, 116 insertions(+), 119 deletions(-) diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index dff6bbc00..9ed6d0e4c 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -45,7 +45,7 @@ - 2 + 0 @@ -821,6 +821,16 @@ Mode 4: + + + + Show splash screen when Companion starts + + + true + + + @@ -841,16 +851,6 @@ Mode 4: - - - - Show splash screen when Companion starts - - - true - - - @@ -902,14 +902,14 @@ Mode 4: - - + + Qt::Horizontal - + @@ -922,36 +922,6 @@ Mode 4: - - - - <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) - - - - - - - - 0 - 0 - - - - Output Logs Folder - - - - - - - Qt::Horizontal - - - @@ -965,6 +935,63 @@ Mode 4: + + + + <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) + + + + + + + + 0 + 0 + + + + Output Logs Folder + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + Only show user splash images + + + + + Show user and companion splash images + + + + + + + + Qt::Horizontal + + + @@ -999,34 +1026,7 @@ Mode 4: - - - - - 0 - 0 - - - - - Only show user splash images - - - - - Show user and companion splash images - - - - - - - - Qt::Horizontal - - - - + @@ -1071,10 +1071,23 @@ Mode 4: - - - - Qt::Horizontal + + + + + 0 + 0 + + + + User Splash Screens + + + + + + + Release channel @@ -1104,25 +1117,36 @@ Mode 4: - - - - - 0 - 0 - - - - User Splash Screens + + + + Qt::Horizontal - - - - Release channel - - + + + + + + <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) + + + + @@ -1149,33 +1173,6 @@ Mode 4: - - - - - - <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) - - - - - - - - From c3137b94686921bbf4bc800d12a1d9f9753dcc69 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 31 Mar 2020 08:30:51 +0200 Subject: [PATCH 027/199] Fix spanish translations This fixes #7474 --- radio/src/translations/es.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 9a293f9fa..2440ce73c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -86,7 +86,7 @@ #define LEN_COUNTRYCODES TR("\002", "\007") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0") -#define LEN_USBMODES TR("\006", "\008") +#define LEN_USBMODES TR("\006", "\010") #define TR_USBMODES TR("Pregun""Joyst\0""SDCard""Serie\0", "Pregunta""Joystick""SDCard\0 ""Serie\0 ") #define LEN_JACKMODES "\007" @@ -106,7 +106,7 @@ #define LEN_VBEEPCOUNTDOWN "\006" #define TR_VBEEPCOUNTDOWN "SilencBeeps\0Voz\0 Haptic" -#define LEN_VVARIOCENTER "\008" +#define LEN_VVARIOCENTER "\010" #define TR_VVARIOCENTER "Tono\0 ""Silencio" #define LEN_CURVE_TYPES "\006" From a3261289819ce017a9733816dbef14231be8f1e5 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 31 Mar 2020 16:10:12 +0200 Subject: [PATCH 028/199] Cosmetics --- radio/src/gui/common/stdlcd/radio_hardware.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index e450e1624..881e418b5 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -640,6 +640,7 @@ void menuRadioHardware(event_t event) else lcdDrawText(lcdNextPos, y, "---"); break; + #if defined(SPORT_UPDATE_PWR_GPIO) case ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER: g_eeGeneral.sportUpdatePower = editChoice(HW_SETTINGS_COLUMN2, y, STR_SPORT_UPDATE_POWER_MODE, STR_SPORT_UPDATE_POWER_MODES, g_eeGeneral.sportUpdatePower, 0, 1, attr, event); From a65cd6dbda898a870f70f4d7ce1d20459f35bfe7 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 1 Apr 2020 08:14:01 +0200 Subject: [PATCH 029/199] Bsongis/ras fix (#7478) RAS assigned to the right module --- radio/src/gui/212x64/radio_diaganas.cpp | 8 --- radio/src/gui/480x272/radio_diaganas.cpp | 9 --- radio/src/gui/480x272/radio_hardware.cpp | 72 ++++++++++++------- .../src/gui/common/stdlcd/radio_hardware.cpp | 8 +-- radio/src/targets/horus/board.h | 4 ++ radio/src/targets/taranis/board.h | 8 ++- radio/src/telemetry/frsky_sport.cpp | 9 ++- 7 files changed, 67 insertions(+), 51 deletions(-) diff --git a/radio/src/gui/212x64/radio_diaganas.cpp b/radio/src/gui/212x64/radio_diaganas.cpp index bea4089a4..6e1f21ced 100644 --- a/radio/src/gui/212x64/radio_diaganas.cpp +++ b/radio/src/gui/212x64/radio_diaganas.cpp @@ -38,12 +38,4 @@ void menuRadioDiagAnalogs(event_t event) lcdDrawNumber(x+10*FW-1, y, (int16_t)calibratedAnalogs[CONVERT_MODE(i)]*25/256, RIGHT); #endif } - - // RAS - if ((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX1(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) { - lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+6*FH, "RAS"); - lcdDrawNumber(10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.swrInternal.value(), RIGHT); - lcdDrawText(LCD_W/2, MENU_HEADER_HEIGHT+6*FH, "XJTVER"); - lcdDrawNumber(LCD_W/2 + 10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.xjtVersion, RIGHT); - } } diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 2892457dc..88f82d748 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -23,7 +23,6 @@ constexpr coord_t LEFT_NAME_COLUMN = MENUS_MARGIN_LEFT; constexpr coord_t RIGHT_NAME_COLUMN = LCD_W / 2; constexpr coord_t ANA_OFFSET = 150; -constexpr coord_t RAS_TOP_POSITION = LCD_H - 45; bool menuRadioDiagAnalogs(event_t event) { @@ -49,14 +48,6 @@ bool menuRadioDiagAnalogs(event_t event) #endif } - // RAS - if ((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX1(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) { - lcdDrawText(MENUS_MARGIN_LEFT, RAS_TOP_POSITION, "RAS : "); - lcdDrawNumber(lcdNextPos, RAS_TOP_POSITION, telemetryData.swrInternal.value(), 0); - lcdDrawText(LCD_W / 2, RAS_TOP_POSITION, "XJTVER : "); - lcdDrawNumber(lcdNextPos, RAS_TOP_POSITION, telemetryData.xjtVersion, 0); - } - #if (NUM_PWMSTICKS > 0) && !defined(SIMU) lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 8 * FH, STICKS_PWM_ENABLED() ? "Sticks: PWM" : "Sticks: ANA"); #endif diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 41f93259b..23d6e85de 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -72,6 +72,8 @@ enum MenuRadioHardwareItems { #endif ITEM_RADIO_HARDWARE_JITTER_FILTER, + ITEM_RADIO_HARDWARE_RAS, + #if defined(SPORT_UPDATE_PWR_GPIO) ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER, #endif @@ -79,7 +81,8 @@ enum MenuRadioHardwareItems { ITEM_RADIO_HARDWARE_MAX }; -#define HW_SETTINGS_COLUMN 150 +#define HW_SETTINGS_COLUMN1 150 +#define HW_SETTINGS_COLUMN2 200 #if defined(AUX_SERIAL) #define AUX_SERIAL_ROW 0, @@ -157,6 +160,7 @@ bool menuRadioHardware(event_t event) AUX_SERIAL_ROW /* aux serial mode */ 0, /* ADC filter */ + READONLY_ROW /* RAS */, SPORT_POWER_ROWS 1, /* Debug */ }); @@ -197,7 +201,7 @@ bool menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: case ITEM_RADIO_HARDWARE_STICK4: - editStickHardwareSettings(HW_SETTINGS_COLUMN, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); + editStickHardwareSettings(HW_SETTINGS_COLUMN1, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); break; case ITEM_RADIO_HARDWARE_LS: @@ -211,11 +215,11 @@ bool menuRadioHardware(event_t event) uint8_t mask = (0x01 << idx); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+NUM_POTS+idx+1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); + editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN1, y, 0); uint8_t potType = (g_eeGeneral.slidersConfig & mask) >> idx; - potType = editChoice(HW_SETTINGS_COLUMN+50, y, STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); + potType = editChoice(HW_SETTINGS_COLUMN2, y, STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.slidersConfig &= ~mask; g_eeGeneral.slidersConfig |= (potType << idx); break; @@ -236,11 +240,11 @@ bool menuRadioHardware(event_t event) int index = k - ITEM_RADIO_HARDWARE_POT1; lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+index+1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+index]) || (attr && menuHorizontalPosition == 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+index], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); + editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+index], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN1, y, 0); uint32_t potType = bfGet(g_eeGeneral.potsConfig, 2*(index), 2); - potType = editChoice(HW_SETTINGS_COLUMN+50, y, STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); + potType = editChoice(HW_SETTINGS_COLUMN2, y, STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.potsConfig = bfSet(g_eeGeneral.potsConfig, potType, 2*index, 2); break; } @@ -264,10 +268,10 @@ bool menuRadioHardware(event_t event) int config = SWITCH_CONFIG(index); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH-MIXSRC_Rud+index+1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); + editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); - config = editChoice(HW_SETTINGS_COLUMN+50, y, STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); + lcdDrawMMM(HW_SETTINGS_COLUMN1, y, 0); + config = editChoice(HW_SETTINGS_COLUMN2, y, STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); if (attr && checkIncDec_Ret) { g_eeGeneral.switchConfig = bfSet(g_eeGeneral.switchConfig, config, 2*index, 2); } @@ -276,18 +280,18 @@ bool menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_BATTERY_CALIB: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BATT_CALIB); - lcdDrawNumber(HW_SETTINGS_COLUMN+50, y, getBatteryVoltage(), attr|PREC2, 0, NULL, "V"); + lcdDrawNumber(HW_SETTINGS_COLUMN2, y, getBatteryVoltage(), attr|PREC2, 0, NULL, "V"); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.txVoltageCalibration, -127, 127); break; case ITEM_RADIO_HARDWARE_RTC_BATTERY: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RTC_BATT); - lcdDrawNumber(HW_SETTINGS_COLUMN+50, y, getRTCBatteryVoltage(), attr|PREC2, 0, NULL, "V"); + lcdDrawNumber(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), attr|PREC2, 0, NULL, "V"); break; case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MAXBAUDRATE); - lcdDrawNumber(HW_SETTINGS_COLUMN+50, y, CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate], attr|LEFT); + lcdDrawNumber(HW_SETTINGS_COLUMN2, y, CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate], attr|LEFT); if (attr) { g_eeGeneral.telemetryBaudrate = DIM(CROSSFIRE_BAUDRATES) - 1 - checkIncDecModel(event, DIM(CROSSFIRE_BAUDRATES) - 1 - g_eeGeneral.telemetryBaudrate, 0, DIM(CROSSFIRE_BAUDRATES) - 1); if (checkIncDec_Ret && IS_EXTERNAL_MODULE_ON()) { @@ -307,40 +311,40 @@ bool menuRadioHardware(event_t event) { lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RTC_CHECK); uint8_t b = 1 - g_eeGeneral.disableRtcWarning; - g_eeGeneral.disableRtcWarning = 1 - editCheckBox(b, HW_SETTINGS_COLUMN + 50, y, attr, event); + g_eeGeneral.disableRtcWarning = 1 - editCheckBox(b, HW_SETTINGS_COLUMN2, y, attr, event); break; } #if defined(BLUETOOTH) case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BLUETOOTH); - g_eeGeneral.bluetoothMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TRAINER, attr, event); + g_eeGeneral.bluetoothMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TRAINER, attr, event); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE: lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_PIN_CODE); - lcdDrawText(HW_SETTINGS_COLUMN+50, y, "000000", 0); + lcdDrawText(HW_SETTINGS_COLUMN2, y, "000000", 0); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_LOCAL_ADDR: lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_LOCAL_ADDR); - lcdDrawText(HW_SETTINGS_COLUMN+50, y, bluetooth.localAddr[0] == '\0' ? "---" : bluetooth.localAddr); + lcdDrawText(HW_SETTINGS_COLUMN2, y, bluetooth.localAddr[0] == '\0' ? "---" : bluetooth.localAddr); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_DISTANT_ADDR: lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_DIST_ADDR); - lcdDrawText(HW_SETTINGS_COLUMN+50, y, bluetooth.distantAddr[0] == '\0' ? "---" : bluetooth.distantAddr); + lcdDrawText(HW_SETTINGS_COLUMN2, y, bluetooth.distantAddr[0] == '\0' ? "---" : bluetooth.distantAddr); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_NAME: lcdDrawText(INDENT_WIDTH, y, STR_NAME); - editName(HW_SETTINGS_COLUMN+50, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr); + editName(HW_SETTINGS_COLUMN2, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr); break; #endif #if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) case ITEM_RADIO_HARDWARE_EXTERNAL_ANTENNA: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_ANTENNA); - reusableBuffer.radioHardware.antennaMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_ANTENNA_MODES, reusableBuffer.radioHardware.antennaMode, ANTENNA_MODE_INTERNAL, ANTENNA_MODE_EXTERNAL, attr, event); + reusableBuffer.radioHardware.antennaMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_ANTENNA_MODES, reusableBuffer.radioHardware.antennaMode, ANTENNA_MODE_INTERNAL, ANTENNA_MODE_EXTERNAL, attr, event); if (!s_editMode && reusableBuffer.radioHardware.antennaMode != g_eeGeneral.antennaMode) { if (!isExternalAntennaEnabled() && (reusableBuffer.radioHardware.antennaMode == ANTENNA_MODE_EXTERNAL || (reusableBuffer.radioHardware.antennaMode == ANTENNA_MODE_PER_MODEL && g_model.moduleData[INTERNAL_MODULE].pxx.antennaMode == ANTENNA_MODE_EXTERNAL))) { POPUP_CONFIRMATION(STR_ANTENNACONFIRM1, onHardwareAntennaSwitchConfirm); @@ -360,7 +364,7 @@ bool menuRadioHardware(event_t event) #if defined(RADIO_TX16S) lcdDrawText(lcdNextPos, y, " (TTL)"); #endif - g_eeGeneral.auxSerialMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_AUX_SERIAL_MODES, g_eeGeneral.auxSerialMode, 0, UART_MODE_MAX, attr, event); + g_eeGeneral.auxSerialMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_AUX_SERIAL_MODES, g_eeGeneral.auxSerialMode, 0, UART_MODE_MAX, attr, event); if (attr && checkIncDec_Ret) { auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol()); } @@ -371,14 +375,32 @@ bool menuRadioHardware(event_t event) { lcdDrawText(MENUS_MARGIN_LEFT, y, STR_JITTER_FILTER); uint8_t b = 1 - g_eeGeneral.jitterFilter; - g_eeGeneral.jitterFilter = 1 - editCheckBox(b, HW_SETTINGS_COLUMN+50, y, attr, event); + g_eeGeneral.jitterFilter = 1 - editCheckBox(b, HW_SETTINGS_COLUMN2, y, attr, event); break; } + case ITEM_RADIO_HARDWARE_RAS: +#if defined(HARDWARE_INTERNAL_RAS) + lcdDrawText(MENUS_MARGIN_LEFT, y, "RAS"); + if (telemetryData.swrInternal.isFresh()) + lcdDrawNumber(HW_SETTINGS_COLUMN2, y, telemetryData.swrInternal.value()); + else + lcdDrawText(HW_SETTINGS_COLUMN2, y, "---"); + lcdDrawText(lcdNextPos, y, "/"); +#else + lcdDrawText(MENUS_MARGIN_LEFT, y, "Ext. RAS"); + lcdNextPos = HW_SETTINGS_COLUMN2; +#endif + if (telemetryData.swrExternal.isFresh()) + lcdDrawNumber(lcdNextPos, y, telemetryData.swrExternal.value()); + else + lcdDrawText(lcdNextPos, y, "---"); + break; + #if defined(SPORT_UPDATE_PWR_GPIO) case ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_SPORT_UPDATE_POWER_MODE); - g_eeGeneral.sportUpdatePower = editChoice(HW_SETTINGS_COLUMN + 50, y, STR_SPORT_UPDATE_POWER_MODES, g_eeGeneral.sportUpdatePower, 0, 1, attr, event); + g_eeGeneral.sportUpdatePower = editChoice(HW_SETTINGS_COLUMN2, y, STR_SPORT_UPDATE_POWER_MODES, g_eeGeneral.sportUpdatePower, 0, 1, attr, event); if (attr && checkIncDec_Ret) { SPORT_UPDATE_POWER_INIT(); } @@ -387,7 +409,7 @@ bool menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_DEBUG: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_DEBUG); - lcdDrawText(HW_SETTINGS_COLUMN + 50, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); + lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { if (menuHorizontalPosition == 0) diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 881e418b5..dde563d6a 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -624,16 +624,16 @@ void menuRadioHardware(event_t event) break; case ITEM_RADIO_HARDWARE_RAS: -#if defined(PCBX9LITE) && !defined(PCBX9LITES) - lcdDrawTextAlignedLeft(y, "Ext. RAS"); - lcdNextPos = HW_SETTINGS_COLUMN2; -#else +#if defined(HARDWARE_INTERNAL_RAS) lcdDrawTextAlignedLeft(y, "RAS"); if (telemetryData.swrInternal.isFresh()) lcdDrawNumber(HW_SETTINGS_COLUMN2, y, telemetryData.swrInternal.value()); else lcdDrawText(HW_SETTINGS_COLUMN2, y, "---"); lcdDrawText(lcdNextPos, y, "/"); +#else + lcdDrawTextAlignedLeft(y, "Ext. RAS"); + lcdNextPos = HW_SETTINGS_COLUMN2; #endif if (telemetryData.swrExternal.isFresh()) lcdDrawNumber(lcdNextPos, y, telemetryData.swrExternal.value()); diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index cdc8fb084..437346078 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -146,6 +146,10 @@ void SDRAM_Init(); // Pulses driver #define INTERNAL_MODULE_ON() GPIO_SetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) +#if defined(INTERNAL_MODULE_PXX1) || defined(INTERNAL_MODULE_PXX2) + #define HARDWARE_INTERNAL_RAS +#endif + #if defined(INTMODULE_USART) #define INTERNAL_MODULE_OFF() intmoduleStop() #else diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index e735c8d33..acba12d76 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -114,12 +114,16 @@ uint32_t isBootloaderStart(const uint8_t * buffer); #define INTERNAL_MODULE_OFF() GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) #endif +#if !defined(PCBX9LITE) || defined(PCBX9LITES) + #define HARDWARE_INTERNAL_RAS +#endif + #define EXTERNAL_MODULE_ON() EXTERNAL_MODULE_PWR_ON() #if defined(EXTMODULE_USART) -#define EXTERNAL_MODULE_OFF() extmoduleStop() + #define EXTERNAL_MODULE_OFF() extmoduleStop() #else -#define EXTERNAL_MODULE_OFF() EXTERNAL_MODULE_PWR_OFF() + #define EXTERNAL_MODULE_OFF() EXTERNAL_MODULE_PWR_OFF() #endif #if defined(RADIO_T12) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 78438caaf..ebb90586a 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -177,17 +177,20 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe if (primId == DATA_FRAME) { uint8_t originMask; + uint8_t moduleIndex; if (origin == TELEMETRY_ENDPOINT_SPORT) { #if defined(SIMU) && defined(INTERNAL_MODULE_PXX2) // When running simu on ACCESS radio, we set the origin as internal module + moduleIndex = 0; origin = 0; originMask = 0x01; #else + moduleIndex = isSportLineUsedByInternalModule() ? 0 : 1; originMask = 0x04; #endif } else { - uint8_t moduleIndex = (origin >> 2); + moduleIndex = (origin >> 2); originMask = 0x01 << moduleIndex; } uint8_t instance = physicalId + (origin << 5); @@ -226,12 +229,12 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe else if (dataId == XJT_VERSION_ID) { telemetryData.xjtVersion = HUB_DATA_U16(packet); if (!isRasValueValid()) { - telemetryData.setSwr(origin >> 2, 0); + telemetryData.setSwr(moduleIndex, 0); } } else if (dataId == RAS_ID) { if (isRasValueValid()) { - telemetryData.setSwr(origin >> 2, SPORT_DATA_U8(packet)); + telemetryData.setSwr(moduleIndex, SPORT_DATA_U8(packet)); } } From 3bff803238ad4178efb3a5b48d3a4c0a7095eba7 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 1 Apr 2020 08:14:32 +0200 Subject: [PATCH 030/199] OTA Update back on Horus (#7477) --- radio/src/gui/480x272/radio_sdmanager.cpp | 21 ++++++++++--------- .../src/gui/common/stdlcd/radio_sdmanager.cpp | 8 ++++--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/radio/src/gui/480x272/radio_sdmanager.cpp b/radio/src/gui/480x272/radio_sdmanager.cpp index 2796325ac..90b5e5f57 100644 --- a/radio/src/gui/480x272/radio_sdmanager.cpp +++ b/radio/src/gui/480x272/radio_sdmanager.cpp @@ -281,13 +281,14 @@ void onUpdateReceiverSelection(const char * result) bool menuRadioSdManager(event_t _event) { -// TODO FREEZE SD MANAGER -// if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) { -// moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; -// CLEAR_POPUP(); -// killEvents(KEY_EXIT); -// _event = 0; -// } +#if defined(PXX2) + if (EVT_KEY_MASK(_event) == KEY_EXIT && moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND) { + moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; + CLEAR_POPUP(); + killEvents(KEY_EXIT); + _event = 0; + } +#endif event_t event = (EVT_KEY_MASK(_event) == KEY_ENTER ? 0 : _event); SIMPLE_MENU(SD_IS_HC() ? STR_SDHC_CARD : STR_SD_CARD, RADIO_ICONS, menuTabGeneral, MENU_RADIO_SD_MANAGER, reusableBuffer.sdManager.count); @@ -300,7 +301,7 @@ bool menuRadioSdManager(event_t _event) // no break; case EVT_ENTRY_UP: - memset(&reusableBuffer.sdManager, 0, sizeof(reusableBuffer.sdManager)); + memclear(&reusableBuffer.sdManager, sizeof(reusableBuffer.sdManager)); menuVerticalPosition = 0; REFRESH_FILES(); break; @@ -375,7 +376,7 @@ bool menuRadioSdManager(event_t _event) POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE); if (HAS_SPORT_UPDATE_CONNECTOR() && (information.productFamily == FIRMWARE_FAMILY_RECEIVER || information.productFamily == FIRMWARE_FAMILY_SENSOR)) POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); -#if 0 // TODO FREEZE SD MANAGER defined(PXX2) +#if defined(PXX2) if (information.productFamily == FIRMWARE_FAMILY_RECEIVER) { if (isReceiverOTAEnabledFromModule(INTERNAL_MODULE, information.productId)) POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA_BY_INTERNAL); @@ -556,7 +557,7 @@ bool menuRadioSdManager(event_t _event) } } -#if 0 // FREEZE SD MANAGER defined(PXX2) +#if defined(PXX2) if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND) { if (reusableBuffer.sdManager.otaUpdateInformation.step == BIND_INIT) { if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount > 0) { diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 7b6f9ac86..d6def8115 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -286,12 +286,14 @@ void menuRadioSdManager(event_t _event) int lastPos = menuVerticalPosition; #endif - if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) { +#if defined(PXX2) + if (EVT_KEY_MASK(_event) == KEY_EXIT && moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND) { moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; CLEAR_POPUP(); killEvents(KEY_EXIT); _event = 0; } +#endif event_t event = (EVT_KEY_MASK(_event) == KEY_ENTER ? 0 : _event); SIMPLE_MENU(SD_IS_HC() ? STR_SDHC_CARD : STR_SD_CARD, menuTabGeneral, MENU_RADIO_SD_MANAGER, HEADER_LINE + reusableBuffer.sdManager.count); @@ -299,13 +301,13 @@ void menuRadioSdManager(event_t _event) switch (_event) { case EVT_ENTRY: f_chdir(ROOT_PATH); - REFRESH_FILES(); #if LCD_DEPTH > 1 lastPos = -1; #endif - break; + // no break case EVT_ENTRY_UP: + memclear(&reusableBuffer.sdManager, sizeof(reusableBuffer.sdManager)); REFRESH_FILES(); break; From 6be62ea1c01641e67132e3ddc6a91136c328b3f2 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Wed, 1 Apr 2020 14:39:51 +0200 Subject: [PATCH 031/199] Cosmetics --- radio/src/gui/128x64/lcd.cpp | 4 ++-- radio/src/gui/128x64/lcd.h | 4 ++-- radio/src/gui/common/colorlcd/draw_functions.cpp | 2 +- radio/src/gui/common/stdlcd/draw_functions.cpp | 2 +- radio/src/gui/common/stdlcd/draw_functions.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index 91baa3d19..c2c12fead 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -452,12 +452,12 @@ void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val) lcdDrawNumber(x, y, val); } -void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags flags) +void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags) { lcdDrawNumber(x, y, val, flags, 0); } -void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags flags, uint8_t len) +void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t len) { char str[16+1]; char *s = str+16; diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index f1fc72810..d066dc26d 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -117,8 +117,8 @@ void drawTimerWithMode(coord_t x, coord_t y, uint8_t index, LcdFlags att); void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0); void lcdDrawHexChar(coord_t x, coord_t y, uint8_t val, LcdFlags flags=0); -void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags mode, uint8_t len); -void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags mode=0); +void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode, uint8_t len); +void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode=0); void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val); void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att); diff --git a/radio/src/gui/common/colorlcd/draw_functions.cpp b/radio/src/gui/common/colorlcd/draw_functions.cpp index d78424855..1854c0057 100644 --- a/radio/src/gui/common/colorlcd/draw_functions.cpp +++ b/radio/src/gui/common/colorlcd/draw_functions.cpp @@ -31,7 +31,7 @@ void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFla lcdDrawText(x, y, s, flags); } -void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att) +void drawValueWithUnit(coord_t x, coord_t y, int32_t val, uint8_t unit, LcdFlags att) { // convertUnit(val, unit); if (!(att & NO_UNIT) && unit != UNIT_RAW) { diff --git a/radio/src/gui/common/stdlcd/draw_functions.cpp b/radio/src/gui/common/stdlcd/draw_functions.cpp index 665a76633..1bcf7286c 100644 --- a/radio/src/gui/common/stdlcd/draw_functions.cpp +++ b/radio/src/gui/common/stdlcd/draw_functions.cpp @@ -84,7 +84,7 @@ void drawTrimMode(coord_t x, coord_t y, uint8_t flightMode, uint8_t idx, LcdFlag } } -void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att) +void drawValueWithUnit(coord_t x, coord_t y, int32_t val, uint8_t unit, LcdFlags att) { // convertUnit(val, unit); lcdDrawNumber(x, y, val, att & (~NO_UNIT)); diff --git a/radio/src/gui/common/stdlcd/draw_functions.h b/radio/src/gui/common/stdlcd/draw_functions.h index acf4a949f..7755206e3 100644 --- a/radio/src/gui/common/stdlcd/draw_functions.h +++ b/radio/src/gui/common/stdlcd/draw_functions.h @@ -25,7 +25,7 @@ void lcdDrawMultiProtocolString(coord_t x, coord_t y, uint8_t moduleIdx, uint8_t protocol, LcdFlags flags = 0); void lcdDrawMultiSubProtocolString(coord_t x, coord_t y, uint8_t moduleIdx, uint8_t subType, LcdFlags flags = 0); void drawStringWithIndex(coord_t x, coord_t y, const char * str, uint8_t idx, LcdFlags att=0); -void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att=0); +void drawValueWithUnit(coord_t x, coord_t y, int32_t val, uint8_t unit, LcdFlags att=0); void drawPower(coord_t x, coord_t y, int8_t dBm, LcdFlags att = 0); void drawGVarName(coord_t x, coord_t y, int8_t index, LcdFlags flags=0); From 38831f5e135fffdc42462a2b71a7c920d6ddc40f Mon Sep 17 00:00:00 2001 From: Kilrah Date: Wed, 1 Apr 2020 16:27:43 +0200 Subject: [PATCH 032/199] Missing file --- radio/src/gui/common/colorlcd/draw_functions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/common/colorlcd/draw_functions.h b/radio/src/gui/common/colorlcd/draw_functions.h index 8f8ab6b3b..3d925b2af 100644 --- a/radio/src/gui/common/colorlcd/draw_functions.h +++ b/radio/src/gui/common/colorlcd/draw_functions.h @@ -24,7 +24,7 @@ #include "lcd.h" 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); +void drawValueWithUnit(coord_t x, coord_t y, int32_t 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, 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); From fe5206715908295be514945a2e44b3f937f3fe85 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 2 Apr 2020 17:44:09 +0200 Subject: [PATCH 033/199] Fix some spanish translations. This fixes #7487 --- radio/src/translations/es.h.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 2440ce73c..045855d01 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -815,11 +815,11 @@ #define TR_BLUETOOTH_LOCAL_ADDR "Dir. local" #define TR_BLUETOOTH_PIN_CODE "Codigo PIN" #define TR_BAUDRATE "Velocidad BT" -#define LEN_BLUETOOTH_MODES "\011" +#define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) -#define TR_BLUETOOTH_MODES "---\0 ""Activo\0 " +#define TR_BLUETOOTH_MODES "---\0 ""Activo\0 " #else -#define TR_BLUETOOTH_MODES "---\0 ""Telemetria""Entrenador" +#define TR_BLUETOOTH_MODES "---\0 ""Telemetria""Entrenador" #endif #define TR_SD_INFO_TITLE "SD INFO" #define TR_SD_TYPE "Tipo:" From 8266098574b3df5e5a19dbe7887781b2ff5c81f9 Mon Sep 17 00:00:00 2001 From: Martin <5703553+pre-martin@users.noreply.github.com> Date: Thu, 2 Apr 2020 20:25:07 +0200 Subject: [PATCH 034/199] Adds the version into the Windows registry (and "Add/Remove programs") (#7491) --- companion/targets/windows/companion.nsi.in | 1 + 1 file changed, 1 insertion(+) diff --git a/companion/targets/windows/companion.nsi.in b/companion/targets/windows/companion.nsi.in index 7ea693a1a..1a54e4b4d 100644 --- a/companion/targets/windows/companion.nsi.in +++ b/companion/targets/windows/companion.nsi.in @@ -117,6 +117,7 @@ Section "OpenTX Companion @VERSION_FAMILY@" SecDummy ;Registry information for add/remove programs WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" "DisplayName" "OpenTX Companion @VERSION_FAMILY@" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" "DisplayVersion" "@VERSION@" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" "DisplayIcon" "$\"$INSTDIR\companion.exe$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" "Publisher" "OpenTX" From ac229acdffdfdfd13ee7091eb83d5aab475f3097 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 3 Apr 2020 10:13:27 +0200 Subject: [PATCH 035/199] Start touch test screen --- radio/src/gui/480x272/radio_hardware.cpp | 11 ++++++++++- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 1 + radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 1 + radio/src/translations/nl.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 14 files changed, 23 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 23d6e85de..896b5e9fb 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -131,6 +131,12 @@ void onHardwareAntennaSwitchConfirm(const char * result) #define SPORT_POWER_ROWS #endif +#if defined(HARDWARE_TOUCH) + #define DEBUG_ROW 2 +#else + #define DEBUG_ROW 1 +#endif + bool menuRadioHardware(event_t event) { MENU(STR_HARDWARE, RADIO_ICONS, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { @@ -162,7 +168,7 @@ bool menuRadioHardware(event_t event) 0, /* ADC filter */ READONLY_ROW /* RAS */, SPORT_POWER_ROWS - 1, /* Debug */ + DEBUG_ROW, /* Debug */ }); if (menuEvent) { @@ -411,6 +417,9 @@ bool menuRadioHardware(event_t event) lcdDrawText(MENUS_MARGIN_LEFT, y, STR_DEBUG); lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); +#if defined(HARDWARE_TOUCH) + lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 2 ? attr : 0); +#endif if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { if (menuHorizontalPosition == 0) pushMenu(menuRadioDiagAnalogs); diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 293e5abf8..2c0a44632 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -315,6 +315,7 @@ const char STR_MONITOR_SCREENS[] = TR_MONITOR_SCREENS; const char STR_RESET_BTN[] = TR_RESET_BTN; const char STR_DEBUG[] = TR_DEBUG; const char STR_KEYS_BTN[] = TR_KEYS_BTN; +const char STR_TOUCH_BTN[] = TR_TOUCH_BTN; const char STR_ANALOGS_BTN[] = TR_ANALOGS_BTN; const char STR_CALIBRATION[] = TR_CALIBRATION; const char STR_NO_TOOLS[] = TR_NO_TOOLS; diff --git a/radio/src/translations.h b/radio/src/translations.h index 7a28a4299..9af85a277 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -493,6 +493,7 @@ extern const char STR_MONITOR_SCREENS[]; extern const char STR_RESET_BTN[]; extern const char STR_DEBUG[]; extern const char STR_KEYS_BTN[]; +extern const char STR_TOUCH_BTN[]; extern const char STR_ANALOGS_BTN[]; extern const char STR_CALIBRATION[]; extern const char STR_NO_TOOLS[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index e46a70230..cfe72860d 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -912,6 +912,7 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Přepínače")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogy")) #define TR_CALIBRATION "Kalibrace" #define TR_SET BUTTON("Nast") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 9da0cadc6..1153b404e 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -914,6 +914,7 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Testen" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Kalibrieren" #define TR_SET BUTTON("Set") diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index c5211468e..297df750e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -913,6 +913,7 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("Keys", "Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET BUTTON("Set") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 045855d01..9a101d5ba 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -933,6 +933,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibracion" #define TR_SET "[Ajuste]" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index b3665f787..c171fa406 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -931,6 +931,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index c9bb7a649..64e949b2b 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -933,6 +933,7 @@ #define TR_RESET_BTN BUTTON("RAZ") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("Btns","Inters")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET BUTTON("Déf") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 11f4c411c..eaecfd349 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -933,6 +933,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Interruttori")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analogico","Analogici")) #define TR_CALIBRATION TR("Calibraz.", "Calibrazione") #define TR_SET "[Set]" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 9ff3650ce..913bdf60d 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -919,6 +919,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index e721da2ed..6cd0d603f 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -932,6 +932,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 87650f390..cf32b3158 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -922,6 +922,7 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 6fba79f01..504546777 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -932,6 +932,7 @@ #define TR_RESET_BTN "[Nollställ]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) +#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_CALIBRATION "Calibration" #define TR_SET "[Spara]" From ca00b500766b7cb2551042502613b3fcb8efa1a9 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 3 Apr 2020 10:24:18 +0200 Subject: [PATCH 036/199] Enables TX16s --- companion/src/firmwares/opentx/opentxinterface.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index eb3750447..a8c38ff42 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1345,12 +1345,11 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); - // TX16S is unavailable until finalized - /* Radiomaster TX16S board + /* Radiomaster TX16S board */ firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); - registerOpenTxFirmware(firmware);*/ + registerOpenTxFirmware(firmware); /* 9XR-Pro */ firmware = new OpenTxFirmware("opentx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO); From 3ee435dc3c021899caa9375de30698468c99bbf2 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 3 Apr 2020 16:06:17 +0200 Subject: [PATCH 037/199] Basic touch test screen holders --- radio/src/gui/480x272/menus.h | 1 + radio/src/gui/480x272/radio_diagtouch.cpp | 36 +++++++++++++++++++++++ radio/src/gui/480x272/radio_hardware.cpp | 17 +++++++---- radio/src/targets/horus/CMakeLists.txt | 1 + radio/src/targets/horus/ft5x06.cpp | 7 ++++- radio/src/targets/horus/ft5x06.h | 2 ++ radio/src/translations.cpp | 3 ++ radio/src/translations.h | 3 ++ radio/src/translations/cz.h.txt | 3 ++ radio/src/translations/de.h.txt | 3 ++ radio/src/translations/en.h.txt | 3 ++ radio/src/translations/es.h.txt | 3 ++ radio/src/translations/fi.h.txt | 3 ++ radio/src/translations/fr.h.txt | 3 ++ radio/src/translations/it.h.txt | 3 ++ radio/src/translations/nl.h.txt | 3 ++ radio/src/translations/pl.h.txt | 3 ++ radio/src/translations/pt.h.txt | 3 ++ radio/src/translations/se.h.txt | 3 ++ 19 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 radio/src/gui/480x272/radio_diagtouch.cpp diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index 83c667f19..e74d2fa9c 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -185,6 +185,7 @@ bool menuModelModuleOptions(event_t event); bool menuModelReceiverOptions(event_t event); bool menuRadioDiagKeys(event_t event); bool menuRadioDiagAnalogs(event_t event); +bool menuRadioDiagTouch(event_t event); extern const MenuHandlerFunc menuTabModel[MENU_MODEL_PAGES_COUNT]; diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp new file mode 100644 index 000000000..4db15b4a9 --- /dev/null +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -0,0 +1,36 @@ +/* + * 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" +#include "ft5x06.h" + +bool menuRadioDiagTouch(event_t event) +{ + SIMPLE_SUBMENU(STR_MENU_RADIO_TOUCH, ICON_MODEL_SETUP, 1); + + if (touchInit()) { + lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_EXIT, CENTERED); + } + else { + lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_NOTFOUND, CENTERED); + } + + return true; +} diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 896b5e9fb..109a65459 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -418,13 +418,20 @@ bool menuRadioHardware(event_t event) lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); #if defined(HARDWARE_TOUCH) - lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 2 ? attr : 0); + lcdDrawText(lcdNextPos + 10, y, STR_TOUCH_BTN, menuHorizontalPosition == 2 ? attr : 0); #endif if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { - if (menuHorizontalPosition == 0) - pushMenu(menuRadioDiagAnalogs); - else - pushMenu(menuRadioDiagKeys); + switch (menuHorizontalPosition) { + case 0: + pushMenu(menuRadioDiagAnalogs); + break; + case 1: + pushMenu(menuRadioDiagKeys); + break; + case 2: + pushMenu(menuRadioDiagTouch); + break; + } } break; } diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 95f6e8c61..92dded852 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -210,6 +210,7 @@ set(TARGET_SRC if(HARDWARE_TOUCH) set(TARGET_SRC ${TARGET_SRC} ft5x06.cpp) + set(GUI_SRC ${GUI_SRC} radio_diagtouch.cpp) add_definitions(-DHARDWARE_TOUCH) endif() diff --git a/radio/src/targets/horus/ft5x06.cpp b/radio/src/targets/horus/ft5x06.cpp index 47765bbc7..29e752908 100644 --- a/radio/src/targets/horus/ft5x06.cpp +++ b/radio/src/targets/horus/ft5x06.cpp @@ -18,4 +18,9 @@ * GNU General Public License for more details. */ -#include "ft5x06.h" \ No newline at end of file +#include "ft5x06.h" + +bool touchInit(void) +{ + return true; +} \ No newline at end of file diff --git a/radio/src/targets/horus/ft5x06.h b/radio/src/targets/horus/ft5x06.h index a4d6b1f54..aeb63174f 100644 --- a/radio/src/targets/horus/ft5x06.h +++ b/radio/src/targets/horus/ft5x06.h @@ -21,4 +21,6 @@ #ifndef _FT5X06_H_ #define _FT5X06_H_ +bool touchInit(void); + #endif // _FT5X06_H_ diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 2c0a44632..61fcf7063 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -211,6 +211,7 @@ const char STR_MENUSPECIALFUNCS[] = TR_MENUSPECIALFUNCS; const char STR_MENUVERSION[] = TR_MENUVERSION; const char STR_MENU_RADIO_SWITCHES[] = TR_MENU_RADIO_SWITCHES; const char STR_MENU_RADIO_ANALOGS[] = TR_MENU_RADIO_ANALOGS; +const char STR_MENU_RADIO_TOUCH[] = TR_MENU_RADIO_TOUCH; const char STR_MENUCALIBRATION[] = TR_MENUCALIBRATION; const char STR_MENUMODELSEL[] = TR_MENUMODELSEL; const char STR_MENUSETUP[] = TR_MENUSETUP; @@ -317,6 +318,8 @@ const char STR_DEBUG[] = TR_DEBUG; const char STR_KEYS_BTN[] = TR_KEYS_BTN; const char STR_TOUCH_BTN[] = TR_TOUCH_BTN; const char STR_ANALOGS_BTN[] = TR_ANALOGS_BTN; +const char STR_TOUCH_NOTFOUND[] = TR_TOUCH_NOTFOUND; +const char STR_TOUCH_EXIT[] = TR_TOUCH_EXIT; const char STR_CALIBRATION[] = TR_CALIBRATION; const char STR_NO_TOOLS[] = TR_NO_TOOLS; const char STR_NORMAL[] = TR_NORMAL; diff --git a/radio/src/translations.h b/radio/src/translations.h index 9af85a277..56f7b21ff 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -355,6 +355,7 @@ extern const char STR_MENUSPECIALFUNCS[]; extern const char STR_MENUVERSION[]; extern const char STR_MENU_RADIO_SWITCHES[]; extern const char STR_MENU_RADIO_ANALOGS[]; +extern const char STR_MENU_RADIO_TOUCH[]; extern const char STR_MENUCALIBRATION[]; extern const char STR_MENUMODELSEL[]; extern const char STR_MENUSETUP[]; @@ -495,6 +496,8 @@ extern const char STR_DEBUG[]; extern const char STR_KEYS_BTN[]; extern const char STR_TOUCH_BTN[]; extern const char STR_ANALOGS_BTN[]; +extern const char STR_TOUCH_NOTFOUND[]; +extern const char STR_TOUCH_EXIT[]; extern const char STR_CALIBRATION[]; extern const char STR_NO_TOOLS[]; extern const char STR_NORMAL[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index cfe72860d..d26ee6345 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -587,6 +587,7 @@ #define TR_MENUVERSION "VERZE" #define TR_MENU_RADIO_SWITCHES "DIAG" #define TR_MENU_RADIO_ANALOGS "ANALOGY" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRACE" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trimy => Subtrimy" @@ -914,6 +915,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Přepínače")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogy")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Kalibrace" #define TR_SET BUTTON("Nast") #define TR_TRAINER "Trenér" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 1153b404e..883188a28 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -591,6 +591,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("Schalter-Test", "Schalter-Test") #define TR_MENU_RADIO_ANALOGS "Geber-Test" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG-Analog") #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -916,6 +917,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Kalibrieren" #define TR_SET BUTTON("Set") #define TR_TRAINER "DSC Buchse PPM In/Out" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 297df750e..ab9b0d1dc 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -590,6 +590,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("SWITCHES", "SWITCHES TEST") #define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "ANALOGS TEST") +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -915,6 +916,8 @@ #define TR_KEYS_BTN BUTTON(TR("Keys", "Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET BUTTON("Set") #define TR_TRAINER "Trainer" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 9a101d5ba..bd9a48697 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -601,6 +601,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("INTERUPTS", "TEST INTERUP.") #define TR_MENU_RADIO_ANALOGS TR("ANAS", "ENTRADAS ANALOG") +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRACION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Offsets" @@ -935,6 +936,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibracion" #define TR_SET "[Ajuste]" #define TR_TRAINER "Entrena." diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index c171fa406..257124ef3 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -599,6 +599,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("SWITCHES","SWITCH TEST") #define TR_MENU_RADIO_ANALOGS TR("ANAS","ANALOG INPUTS") +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -933,6 +934,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" #define TR_TRAINER "Trainer" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 64e949b2b..0c94196b6 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -610,6 +610,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("INTERS", "TEST INTERRUPTEURS") #define TR_MENU_RADIO_ANALOGS TR("ANAS", "ENTREES ANALOGIQUES") +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -935,6 +936,8 @@ #define TR_KEYS_BTN BUTTON(TR("Btns","Inters")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET BUTTON("Déf") #define TR_TRAINER "Ecolage" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index eaecfd349..c176e5f7e 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -609,6 +609,7 @@ #define TR_MENUVERSION "VERSIONE" #define TR_MENU_RADIO_SWITCHES "DIAG" #define TR_MENU_RADIO_ANALOGS "ANAS" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRAZIONE" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -935,6 +936,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Interruttori")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analogico","Analogici")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION TR("Calibraz.", "Calibrazione") #define TR_SET "[Set]" #define TR_TRAINER TR("Trainer", "Maestro/Allievo") diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 913bdf60d..33ac4e07e 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -594,6 +594,7 @@ #define TR_MENUVERSION "VERSIE" #define TR_MENU_RADIO_SWITCHES TR("Schak.", "Schakelaar-Test") #define TR_MENU_RADIO_ANALOGS "Analoog-Test" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION TR("CALIB. ANALOOG", "CALIBRERING Sticks+Pots") #if defined(COLORLCD) @@ -921,6 +922,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" #define TR_TRAINER "Trainer Poort" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 6cd0d603f..1b55ccef2 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -608,6 +608,7 @@ #define TR_MENUVERSION "WERSJA" #define TR_MENU_RADIO_SWITCHES TR("PRZEŁ","TEST PRZEŁ") #define TR_MENU_RADIO_ANALOGS TR("WE-ANA","WEJŚCIA ANALOG.") +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRACJA" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trymery => Subtrimy" @@ -934,6 +935,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" #define TR_TRAINER "Port Trenera" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index cf32b3158..74d70ef2d 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -590,6 +590,7 @@ #define TR_MENUVERSION "VERSAO" #define TR_MENU_RADIO_SWITCHES "DIAGNOST" #define TR_MENU_RADIO_ANALOGS "ANALOGICOS" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRAGEM" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -924,6 +925,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET "[Set]" #define TR_TRAINER "Trainer" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 504546777..0854167d2 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -607,6 +607,7 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("BRYTARE","TEST AV BRYTARE") #define TR_MENU_RADIO_ANALOGS "ANALOGA VÄRDEN" +#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRERING" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "[Spara Trimvärden]" @@ -934,6 +935,8 @@ #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) #define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_TOUCH_NOTFOUND "Touch hardware not found" +#define TR_TOUCH_EXIT "Touch screen to exit" #define TR_CALIBRATION "Calibration" #define TR_SET "[Spara]" #define TR_TRAINER "Trainer" From 69b8c4b711ae0974b47c2177a02a6fe4d750cfa6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 3 Apr 2020 16:13:03 +0200 Subject: [PATCH 038/199] don't spam init() --- radio/src/gui/480x272/radio_diagtouch.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp index 4db15b4a9..756eb29a4 100644 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -23,9 +23,15 @@ bool menuRadioDiagTouch(event_t event) { + static bool touchAvailable = false; + SIMPLE_SUBMENU(STR_MENU_RADIO_TOUCH, ICON_MODEL_SETUP, 1); - if (touchInit()) { + if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { + touchAvailable = touchInit(); + } + + if (touchAvailable) { lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_EXIT, CENTERED); } else { From 6c4918876e20931f1d3bf0f1ef47d37822d46d1d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 4 Apr 2020 11:28:10 +0200 Subject: [PATCH 039/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 31cfd4122..217bf93b4 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1709,3 +1709,4 @@ Kevin Bowens David Frech Udo Kastenholz Julio Margarido +Uwe Muendelein From 86e3b26e3b8f8babad4e6364d2ab4a83437546e2 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 5 Apr 2020 10:51:46 +0200 Subject: [PATCH 040/199] continued --- radio/src/gui/480x272/radio_diagtouch.cpp | 4 ++++ radio/src/targets/horus/ft5x06.cpp | 7 ++++++- radio/src/targets/horus/ft5x06.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp index 756eb29a4..7e1d41bba 100644 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -30,6 +30,10 @@ bool menuRadioDiagTouch(event_t event) if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { touchAvailable = touchInit(); } + else if (menuEvent) { + touchDeInit(); + return false; + } if (touchAvailable) { lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_EXIT, CENTERED); diff --git a/radio/src/targets/horus/ft5x06.cpp b/radio/src/targets/horus/ft5x06.cpp index 29e752908..9c0f6332a 100644 --- a/radio/src/targets/horus/ft5x06.cpp +++ b/radio/src/targets/horus/ft5x06.cpp @@ -20,7 +20,12 @@ #include "ft5x06.h" +void toucDehInit(void) +{ + +} + bool touchInit(void) { - return true; + return false; } \ No newline at end of file diff --git a/radio/src/targets/horus/ft5x06.h b/radio/src/targets/horus/ft5x06.h index aeb63174f..01485d7da 100644 --- a/radio/src/targets/horus/ft5x06.h +++ b/radio/src/targets/horus/ft5x06.h @@ -22,5 +22,6 @@ #define _FT5X06_H_ bool touchInit(void); +void touchDeInit(void); #endif // _FT5X06_H_ From 6eef77a6b31edd2f0b0d31518469139c0ea13fe0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 5 Apr 2020 22:19:53 +0200 Subject: [PATCH 041/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 217bf93b4..40825416c 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1710,3 +1710,4 @@ David Frech Udo Kastenholz Julio Margarido Uwe Muendelein +James Jewitt From ccbbd413de9a6ced301f93d59e9e7053947ad327 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 7 Apr 2020 09:53:47 +0200 Subject: [PATCH 042/199] TP test started (untested) --- radio/src/gui/480x272/radio_diagtouch.cpp | 11 +- radio/src/targets/horus/CMakeLists.txt | 2 +- radio/src/targets/horus/ft5x06.cpp | 31 ---- radio/src/targets/horus/ft5x06.h | 27 --- radio/src/targets/horus/hal.h | 42 ++--- radio/src/targets/horus/tp_gt911.cpp | 201 ++++++++++++++++++++++ radio/src/targets/horus/tp_gt911.h | 126 ++++++++++++++ 7 files changed, 355 insertions(+), 85 deletions(-) delete mode 100644 radio/src/targets/horus/ft5x06.cpp delete mode 100644 radio/src/targets/horus/ft5x06.h create mode 100644 radio/src/targets/horus/tp_gt911.cpp create mode 100644 radio/src/targets/horus/tp_gt911.h diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp index 7e1d41bba..15535d289 100644 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -19,7 +19,7 @@ */ #include "opentx.h" -#include "ft5x06.h" +#include "tp_gt911.h" bool menuRadioDiagTouch(event_t event) { @@ -28,10 +28,11 @@ bool menuRadioDiagTouch(event_t event) SIMPLE_SUBMENU(STR_MENU_RADIO_TOUCH, ICON_MODEL_SETUP, 1); if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { - touchAvailable = touchInit(); + touchAvailable = touchPanelInit(); + touchEventFlag = 0; } else if (menuEvent) { - touchDeInit(); + //touchDeInit(); return false; } @@ -42,5 +43,9 @@ bool menuRadioDiagTouch(event_t event) lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_NOTFOUND, CENTERED); } + if (touchEventFlag) { + touchPanelDeInit(); + popMenu(); + } return true; } diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 92dded852..a0cf09cd2 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -209,7 +209,7 @@ set(TARGET_SRC ) if(HARDWARE_TOUCH) - set(TARGET_SRC ${TARGET_SRC} ft5x06.cpp) + set(TARGET_SRC ${TARGET_SRC} tp_gt911.cpp) set(GUI_SRC ${GUI_SRC} radio_diagtouch.cpp) add_definitions(-DHARDWARE_TOUCH) endif() diff --git a/radio/src/targets/horus/ft5x06.cpp b/radio/src/targets/horus/ft5x06.cpp deleted file mode 100644 index 9c0f6332a..000000000 --- a/radio/src/targets/horus/ft5x06.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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 "ft5x06.h" - -void toucDehInit(void) -{ - -} - -bool touchInit(void) -{ - return false; -} \ No newline at end of file diff --git a/radio/src/targets/horus/ft5x06.h b/radio/src/targets/horus/ft5x06.h deleted file mode 100644 index 01485d7da..000000000 --- a/radio/src/targets/horus/ft5x06.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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 _FT5X06_H_ -#define _FT5X06_H_ - -bool touchInit(void); -void touchDeInit(void); - -#endif // _FT5X06_H_ diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 5e3ac2d1d..f24b3dda1 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -634,11 +634,26 @@ #define AUDIO_MUTE_DELAY 500 // ms #endif +// Touch +#if defined(HARDWARE_TOUCH) +#define TOUCH_INT_RCC_AHB1Periph RCC_AHB1Periph_GPIOH +#define TOUCH_INT_GPIO GPIOH +#define TOUCH_INT_GPIO_PIN GPIO_Pin_2 + +#define TOUCH_RST_RCC_AHB1Periph RCC_AHB1Periph_GPIOF +#define TOUCH_RST_GPIO GPIOF +#define TOUCH_RST_GPIO_PIN GPIO_Pin_10 + +#define TOUCH_INT_EXTI_LINE1 EXTI_Line2 +#define TOUCH_INT_EXTI_IRQn1 EXTI2_IRQn +#define TOUCH_INT_EXTI_IRQHandler1 EXTI2_IRQHandler +#define TOUCH_INT_EXTI_PortSource EXTI_PortSourceGPIOH +#define TOUCH_INT_EXTI_PinSource1 EXTI_PinSource2 + +#define TOUCH_INT_STAUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) +#endif + // I2C Bus -#if defined(RADIO_TX16S) -#define I2C_RCC_AHB1Periph 0 -#define I2C_RCC_APB1Periph 0 -#else #define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB #define I2C_RCC_APB1Periph RCC_APB1Periph_I2C1 #define I2C I2C1 @@ -649,7 +664,6 @@ #define I2C_SCL_GPIO_PinSource GPIO_PinSource8 #define I2C_SDA_GPIO_PinSource GPIO_PinSource9 #define I2C_SPEED 400000 -#endif // Haptic #define HAPTIC_PWM @@ -842,24 +856,6 @@ #define TIMER_2MHz_RCC_APB1Periph RCC_APB1Periph_TIM7 #define TIMER_2MHz_TIMER TIM7 -// Touch -#if defined(HARDWARE_TOUCH) -#define I2C_TOUCH_RCC_AHB1Periph RCC_AHB1Periph_GPIOB -#define I2C_TOUCH_RCC_APB1Periph RCC_APB1Periph_I2C1 -#define I2C_TOUCH I2C1 -#define I2C_TOUCH_GPIO GPIOB -#define I2C_TOUCH_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 -#define I2C_TOUCH_SDA_GPIO_PIN GPIO_Pin_7 // PB.07 - -#define I2C_TOUCH_RESET_GPIO GPIOF -#define I2C_TOUCH_RESET_GPIO_PIN GPIO_Pin_10 // PF.10 -#define I2C_TOUCH_INT_GPIO GPIOH -#define I2C_TOUCH_INT_GPIO_PIN GPIO_Pin_2 // PH.02 -#else -#define I2C_TOUCH_RCC_AHB1Periph 0 -#define I2C_TOUCH_RCC_APB1Periph 0 -#endif - // Bluetooth #define STORAGE_BLUETOOTH #if defined(BLUETOOTH) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp new file mode 100644 index 000000000..114329996 --- /dev/null +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -0,0 +1,201 @@ +/* + * 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 "tp_gt911.h" + +uint8_t touchGT911Flag = 0; +uint8_t TOUCH_SCAN_MODE = 0; +uint8_t touchEventFlag = 0; + +void GT911_INT_Change(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + + GPIO_InitStructure.GPIO_Pin = TOUCH_INT_GPIO_PIN; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; + GPIO_Init(TOUCH_INT_GPIO, &GPIO_InitStructure); +} + +uint8_t GT911_Send_Cfg(uint8_t mode) +{ + u8 buf[2]; + u8 i = 0; + buf[0] = 0; + buf[1] = mode; // + for (i = 0; i < sizeof(GT911_Cfg); i++) + buf[0] += GT911_Cfg[i];//check sum + + buf[0] = (~buf[0]) + 1; + GT911_WR_Reg(GT_CFGS_REG, (u8 *) GT911_Cfg, sizeof(GT911_Cfg));// + GT911_WR_Reg(GT_CHECK_REG, buf, 2);//write checksum + return 0; +} + +static void IIC_Config(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + //I2C_InitTypeDef I2C_InitStructure; + + /* GPIO Peripheral clock enable */ + RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); + //RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); + + //PB6: I2C1_SCL PB7: I2C1_SDA + GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN; + //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(I2C_GPIO, &GPIO_InitStructure); + + GPIO_SetBits(I2C_GPIO, I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN); +} + +static void TOUCH_AF_ExtiStop(void) +{ + SYSCFG_EXTILineConfig(TOUCH_INT_EXTI_PortSource, TOUCH_INT_EXTI_PinSource1); + + EXTI_InitTypeDef EXTI_InitStructure; + EXTI_StructInit(&EXTI_InitStructure); + EXTI_InitStructure.EXTI_Line = TOUCH_INT_EXTI_LINE1; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); + + + NVIC_InitTypeDef NVIC_InitStructure; + NVIC_InitStructure.NVIC_IRQChannel = TOUCH_INT_EXTI_IRQn1; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 9; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */; + NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; + NVIC_Init(&NVIC_InitStructure); +} + +static void TOUCH_AF_ExtiConfig(void) +{ + SYSCFG_EXTILineConfig(TOUCH_INT_EXTI_PortSource, TOUCH_INT_EXTI_PinSource1); + + EXTI_InitTypeDef EXTI_InitStructure; + EXTI_StructInit(&EXTI_InitStructure); + EXTI_InitStructure.EXTI_Line = TOUCH_INT_EXTI_LINE1; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + + + NVIC_InitTypeDef NVIC_InitStructure; + NVIC_InitStructure.NVIC_IRQChannel = TOUCH_INT_EXTI_IRQn1; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 9; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); +} + +static void TOUCH_AF_GPIOConfig(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = TOUCH_RST_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(TOUCH_RST_GPIO, &GPIO_InitStructure); + + GPIO_ResetBits(TOUCH_RST_GPIO, TOUCH_RST_GPIO_PIN); + + GPIO_InitStructure.GPIO_Pin = TOUCH_INT_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(TOUCH_INT_GPIO, &GPIO_InitStructure); + + GPIO_ResetBits(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN); +} + +void touchPanelDeInit(void) +{ + TOUCH_AF_ExtiStop(); +} + +bool touchPanelInit(void) +{ + uint8_t tmp[4] = {0}; + + TRACE("Touchpanel init start ..."); + + TOUCH_AF_GPIOConfig(); //SET RST=OUT INT=OUT INT=LOW + IIC_Config(); + + TPRST_LOW(); + TPINT_HIGH(); + delay_us(200); //DELAY 200US + + TPRST_HIGH(); + delay_ms(6); //DELAY 6MS + + TPINT_LOW(); + delay_ms(55); //DELAY 55MS + + GT911_INT_Change(); //Set INT INPUT INT=LOW + + delay_ms(50); //DELAY 55MS + + GT911_RD_Reg(GT_PID_REG, tmp, 4); + + if (strcmp((char *) tmp, "911") == 0)//ID==9147 + { + tmp[0] = 0X02; + GT911_WR_Reg(GT_CTRL_REG, tmp, 1);// + GT911_RD_Reg(GT_CFGS_REG, tmp, 1);// + + if (tmp[0] < 0X69)//ver + { + //printf("Default Ver:%x\r\n",temp[0]); + GT911_Send_Cfg(1); // + } + + delay_ms(10); + tmp[0] = 0X00; + GT911_WR_Reg(GT_CTRL_REG, tmp, 1);//end reset + touchGT911Flag = true; + + TOUCH_AF_ExtiConfig(); + + return true; + } + + return false; +} + +extern "C" void TOUCH_INT_EXTI_IRQHandler1(void) +{ + if (EXTI_GetITStatus(TOUCH_INT_EXTI_LINE1) != RESET) { + TRACE("TOUCH INTERUPT"); + touchEventFlag = 1; + EXTI_ClearITPendingBit(TOUCH_INT_EXTI_LINE1); + } +} diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h new file mode 100644 index 000000000..b8d22709a --- /dev/null +++ b/radio/src/targets/horus/tp_gt911.h @@ -0,0 +1,126 @@ +/* + * 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 _FT5X06_H_ +#define _FT5X06_H_ + +#include "opentx.h" + +#define HAS_TOUCH_PANEL() touchGT911Flag == true +#define TOUCH_INT_STATUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) + +bool touchPanelInit(); +void touchPanelDeInit(); + +extern uint8_t touchGT911Flag; +extern uint8_t TOUCH_SCAN_MODE; +extern uint8_t touchEventFlag; + +uint8_t GT911_WR_Reg(uint16_t reg, uint8_t * buf, uint8_t len); +void GT911_RD_Reg(uint16_t reg, uint8_t * buf, uint8_t len); + + +//GT911 param table +const uint8_t GT911_Cfg[]= // + { + 0x69, //ver 0x68 + 0xE0,0x01, //x 480 480X272 + 0x10,0x01, //y 272 + 0x05, //pass max count + 0x38, //bit4= xy change Int mode + 0x00, + 0x02, //press ct + 0x48, + 0x28,0x0D,0x50,0x32,0x03,0x05,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x18,0x1A,0x1E,0x14,0x8A,0x2A,0x0C, + 0x30,0x38,0x31,0x0D,0x00,0x00,0x02,0xB9,0x03,0x2D, + 0x00,0x00,0x00,0x00,0x00,0x03,0x64,0x32,0x00,0x00, + 0x00,0x1D,0x41,0x94,0xC5,0x02,0x07,0x00,0x00,0x04, + 0xA5,0x1F,0x00,0x94,0x25,0x00,0x88,0x2B,0x00,0x7D, + 0x33,0x00,0x74,0x3C,0x00,0x74,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x18,0x16,0x14,0x12,0x10,0x0E,0x0C,0x0A, + 0x08,0x06,0x04,0x02,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x24,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1C, + 0x18,0x16,0x13,0x12,0x10,0x0F,0x0A,0x08,0x06,0x04, + 0x02,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, + }; + +//I2C +#define GT_CMD_WR 0X28 //write +#define GT_CMD_RD 0X29 //read + +#define SLAVE_Write_Address 0X28 + +//GT9147 +#define GT_CTRL_REG 0X8040 +#define GT_CFGS_REG 0X8047 +#define GT_CHECK_REG 0X80FF +#define GT_PID_REG 0X8140 //ID + +#define GT_GSTID_REG 0X814E // +#define GT_TP1_REG 0X8150 // +#define GT_TP2_REG 0X8158 // +#define GT_TP3_REG 0X8160 // +#define GT_TP4_REG 0X8168 // +#define GT_TP5_REG 0X8170 // + +#define GT911_READ_XY_REG 0x814E +#define GT911_CLEARBUF_REG 0x814E +#define GT911_CONFIG_REG 0x8047 +#define GT911_COMMAND_REG 0x8040 +#define GT911_PRODUCT_ID_REG 0x8140 +#define GT911_VENDOR_ID_REG 0x814A +#define GT911_CONFIG_VERSION_REG 0x8047 +#define GT911_CONFIG_CHECKSUM_REG 0x80FF +#define GT911_FIRMWARE_VERSION_REG 0x8144 + + +typedef struct{ + uint16_t x; + uint16_t y; +}POINT; + +typedef struct{ + uint16_t cnt; + POINT points[5]; +}GT911_POINT_DATA; + +#define TPRST_LOW() do { TOUCH_RST_GPIO->BSRRH = TOUCH_RST_GPIO_PIN; } while(0) +#define TPRST_HIGH() do { TOUCH_RST_GPIO->BSRRL = TOUCH_RST_GPIO_PIN; } while(0) + +#define TPINT_LOW() do { TOUCH_INT_GPIO->BSRRH = TOUCH_INT_GPIO_PIN; } while(0) +#define TPINT_HIGH() do { TOUCH_INT_GPIO->BSRRL = TOUCH_INT_GPIO_PIN; } while(0) + + +#define IIC_SCL_L() do { I2C_GPIO->BSRRH = I2C_SCL_GPIO_PIN; } while(0) +#define IIC_SCL_H() do { I2C_GPIO->BSRRL = I2C_SCL_GPIO_PIN; } while(0) + +#define IIC_SDA_L() do { I2C_GPIO->BSRRH = I2C_SDA_GPIO_PIN; } while(0) +#define IIC_SDA_H() do { I2C_GPIO->BSRRL = I2C_SDA_GPIO_PIN; } while(0) + +#define READ_SDA GPIO_ReadInputDataBit(I2C_GPIO, I2C_SDA_GPIO_PIN) + +#endif // _FT5X06_H_ From dd4f9de2e9c048ad4bc3ae4c52e08f5b094441ff Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 7 Apr 2020 12:48:09 +0200 Subject: [PATCH 043/199] Please local travis (and more) --- radio/src/gui/480x272/radio_hardware.cpp | 2 + radio/src/targets/horus/CMakeLists.txt | 4 +- radio/src/targets/horus/board.cpp | 8 +- radio/src/targets/horus/hal.h | 27 ++-- radio/src/targets/horus/tp_gt911.cpp | 194 +++++++++++++++++++++-- radio/src/targets/horus/tp_gt911.h | 8 +- radio/src/targets/simu/simpgmspace.cpp | 1 + 7 files changed, 215 insertions(+), 29 deletions(-) diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 109a65459..edae5d7f5 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -428,9 +428,11 @@ bool menuRadioHardware(event_t event) case 1: pushMenu(menuRadioDiagKeys); break; +#if defined(HARDWARE_TOUCH) case 2: pushMenu(menuRadioDiagTouch); break; +#endif } } break; diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index a0cf09cd2..910b43f5f 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -209,7 +209,9 @@ set(TARGET_SRC ) if(HARDWARE_TOUCH) - set(TARGET_SRC ${TARGET_SRC} tp_gt911.cpp) + set(TARGET_SRC ${TARGET_SRC} + tp_gt911.cpp + ) set(GUI_SRC ${GUI_SRC} radio_diagtouch.cpp) add_definitions(-DHARDWARE_TOUCH) endif() diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 61a429a70..d88350ba5 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -103,9 +103,11 @@ void boardInit() HAPTIC_RCC_AHB1Periph | INTMODULE_RCC_AHB1Periph | EXTMODULE_RCC_AHB1Periph | - I2C_TOUCH_RCC_AHB1Periph | + I2C_RCC_AHB1Periph | GPS_RCC_AHB1Periph | - SPORT_UPDATE_RCC_AHB1Periph, + SPORT_UPDATE_RCC_AHB1Periph | + TOUCH_INT_RCC_AHB1Periph | + TOUCH_RST_RCC_AHB1Periph, ENABLE); RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph | @@ -119,7 +121,7 @@ void boardInit() AUDIO_RCC_APB1Periph | INTMODULE_RCC_APB1Periph | EXTMODULE_RCC_APB1Periph | - I2C_TOUCH_RCC_APB1Periph | + I2C_RCC_APB1Periph | GPS_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph, ENABLE); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index f24b3dda1..bbe1235b0 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -636,21 +636,24 @@ // Touch #if defined(HARDWARE_TOUCH) -#define TOUCH_INT_RCC_AHB1Periph RCC_AHB1Periph_GPIOH -#define TOUCH_INT_GPIO GPIOH -#define TOUCH_INT_GPIO_PIN GPIO_Pin_2 + #define TOUCH_INT_RCC_AHB1Periph RCC_AHB1Periph_GPIOH + #define TOUCH_INT_GPIO GPIOH + #define TOUCH_INT_GPIO_PIN GPIO_Pin_2 // PH.02 -#define TOUCH_RST_RCC_AHB1Periph RCC_AHB1Periph_GPIOF -#define TOUCH_RST_GPIO GPIOF -#define TOUCH_RST_GPIO_PIN GPIO_Pin_10 + #define TOUCH_RST_RCC_AHB1Periph RCC_AHB1Periph_GPIOF + #define TOUCH_RST_GPIO GPIOF + #define TOUCH_RST_GPIO_PIN GPIO_Pin_10 // PF.10 -#define TOUCH_INT_EXTI_LINE1 EXTI_Line2 -#define TOUCH_INT_EXTI_IRQn1 EXTI2_IRQn -#define TOUCH_INT_EXTI_IRQHandler1 EXTI2_IRQHandler -#define TOUCH_INT_EXTI_PortSource EXTI_PortSourceGPIOH -#define TOUCH_INT_EXTI_PinSource1 EXTI_PinSource2 + #define TOUCH_INT_EXTI_LINE1 EXTI_Line2 + #define TOUCH_INT_EXTI_IRQn1 EXTI2_IRQn + #define TOUCH_INT_EXTI_IRQHandler1 EXTI2_IRQHandler + #define TOUCH_INT_EXTI_PortSource EXTI_PortSourceGPIOH + #define TOUCH_INT_EXTI_PinSource1 EXTI_PinSource2 -#define TOUCH_INT_STAUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) + #define TOUCH_INT_STATUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) +#else + #define TOUCH_INT_RCC_AHB1Periph 0 + #define TOUCH_RST_RCC_AHB1Periph 0 #endif // I2C Bus diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 114329996..68b4630dc 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -38,20 +38,20 @@ void GT911_INT_Change(void) uint8_t GT911_Send_Cfg(uint8_t mode) { - u8 buf[2]; - u8 i = 0; + uint8_t buf[2]; + uint8_t i = 0; buf[0] = 0; buf[1] = mode; // for (i = 0; i < sizeof(GT911_Cfg); i++) buf[0] += GT911_Cfg[i];//check sum buf[0] = (~buf[0]) + 1; - GT911_WR_Reg(GT_CFGS_REG, (u8 *) GT911_Cfg, sizeof(GT911_Cfg));// + GT911_WR_Reg(GT_CFGS_REG, (uint8_t *) GT911_Cfg, sizeof(GT911_Cfg));// GT911_WR_Reg(GT_CHECK_REG, buf, 2);//write checksum return 0; } -static void IIC_Config(void) +static void I2C_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; //I2C_InitTypeDef I2C_InitStructure; @@ -136,6 +136,182 @@ static void TOUCH_AF_GPIOConfig(void) GPIO_ResetBits(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN); } +void SDA_IN(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + //RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOB, ENABLE); + //RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); + + GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(I2C_GPIO, &GPIO_InitStructure); +} + +void SDA_OUT(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + //RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOB, ENABLE); + //RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); + + GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(I2C_GPIO, &GPIO_InitStructure); +} + +void I2C_Start(void) +{ + SDA_OUT(); + I2C_SDA_H(); + I2C_SCL_H(); + delay_us(2); + I2C_SDA_L();//START:when CLK is high,DATA change form high to low + delay_us(2); + I2C_SCL_L();// + delay_us(2); +} + +void I2C_Stop(void) +{ + SDA_OUT(); + I2C_SCL_L(); + I2C_SDA_L();//STOP:when CLK is high DATA change form low to high + delay_us(2); + I2C_SCL_H(); + I2C_SDA_H();// + delay_us(2); +} + +uint8_t I2C_Wait_Ack(void) +{ + uint8_t ucErrTime = 0; + SDA_IN(); // + I2C_SDA_H(); + delay_us(2); + //I2C_SCL_L();delay_us(6); + I2C_SCL_H();//delay_us(6); + while (READ_SDA) { + ucErrTime++; + if (ucErrTime > 166) { + I2C_Stop(); + return 1; + } + delay_us(1); + } + I2C_SDA_L(); + I2C_SCL_L();// + return 0; +} + +void I2C_Ack(void) +{ + I2C_SCL_L(); + SDA_OUT(); + I2C_SDA_L(); + delay_us(2); + I2C_SCL_H(); + delay_us(2); + I2C_SCL_L(); +} + +void I2C_NAck(void) +{ + I2C_SCL_L(); + SDA_OUT(); + I2C_SDA_H(); + delay_us(2); + I2C_SCL_H(); + delay_us(2); + I2C_SCL_L(); +} + +void I2C_Send_Byte(uint8_t txd) +{ + uint8_t t; + + SDA_OUT(); + I2C_SCL_L();// + for (t = 0; t < 8; t++) { + if ((txd & 0x80) >> 7) + I2C_SDA_H(); + else + I2C_SDA_L(); + txd <<= 1; + delay_us(1); + I2C_SCL_H(); + delay_us(2); + I2C_SCL_L(); + delay_us(1); + } +} + +uint8_t I2C_Read_Byte(unsigned char ack) +{ + unsigned char i, receive = 0; + + SDA_IN(); + for (i = 0; i < 8; i++) { + I2C_SCL_L(); + delay_us(2); + I2C_SCL_H(); + receive <<= 1; + if (READ_SDA)receive++; + delay_us(1); + } + if (!ack) + I2C_NAck(); + else + I2C_Ack(); + return receive; +} + +uint8_t GT911_WR_Reg(uint16_t reg, uint8_t * buf, uint8_t len) +{ + { + uint8_t i; + uint8_t ret = 0; + + I2C_Start(); + I2C_Send_Byte(GT_CMD_WR); //send cmd + I2C_Wait_Ack(); + I2C_Send_Byte(reg >> 8); //send hi + I2C_Wait_Ack(); + I2C_Send_Byte(reg & 0XFF); //send low + I2C_Wait_Ack(); + for (i = 0; i < len; i++) { + I2C_Send_Byte(buf[i]); + ret = I2C_Wait_Ack(); + if (ret)break; + } + I2C_Stop(); + + return ret; + } +} + +void GT911_RD_Reg(u16 reg, uint8_t * buf, uint8_t len) +{ + uint8_t i; + + //I2C_GenerateSTART(I2C1, ENABLE); + I2C_Start(); + I2C_Send_Byte(GT_CMD_WR); //send addr + I2C_Wait_Ack(); + I2C_Send_Byte(reg >> 8); //send hi + I2C_Wait_Ack(); + I2C_Send_Byte(reg & 0XFF); //send low + I2C_Wait_Ack(); + I2C_Start(); + I2C_Send_Byte(GT_CMD_RD); //send rd + I2C_Wait_Ack(); + + for (i = 0; i < len; i++) { + buf[i] = I2C_Read_Byte(i == (len - 1) ? 0 : 1); //send data + } + I2C_Stop(); +} + void touchPanelDeInit(void) { TOUCH_AF_ExtiStop(); @@ -148,21 +324,21 @@ bool touchPanelInit(void) TRACE("Touchpanel init start ..."); TOUCH_AF_GPIOConfig(); //SET RST=OUT INT=OUT INT=LOW - IIC_Config(); + I2C_Config(); TPRST_LOW(); TPINT_HIGH(); - delay_us(200); //DELAY 200US + delay_us(200); TPRST_HIGH(); - delay_ms(6); //DELAY 6MS + delay_ms(6); TPINT_LOW(); - delay_ms(55); //DELAY 55MS + delay_ms(55); GT911_INT_Change(); //Set INT INPUT INT=LOW - delay_ms(50); //DELAY 55MS + delay_ms(50); GT911_RD_Reg(GT_PID_REG, tmp, 4); diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index b8d22709a..64dfac5d6 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -115,11 +115,11 @@ typedef struct{ #define TPINT_HIGH() do { TOUCH_INT_GPIO->BSRRL = TOUCH_INT_GPIO_PIN; } while(0) -#define IIC_SCL_L() do { I2C_GPIO->BSRRH = I2C_SCL_GPIO_PIN; } while(0) -#define IIC_SCL_H() do { I2C_GPIO->BSRRL = I2C_SCL_GPIO_PIN; } while(0) +#define I2C_SCL_L() do { I2C_GPIO->BSRRH = I2C_SCL_GPIO_PIN; } while(0) +#define I2C_SCL_H() do { I2C_GPIO->BSRRL = I2C_SCL_GPIO_PIN; } while(0) -#define IIC_SDA_L() do { I2C_GPIO->BSRRH = I2C_SDA_GPIO_PIN; } while(0) -#define IIC_SDA_H() do { I2C_GPIO->BSRRL = I2C_SDA_GPIO_PIN; } while(0) +#define I2C_SDA_L() do { I2C_GPIO->BSRRH = I2C_SDA_GPIO_PIN; } while(0) +#define I2C_SDA_H() do { I2C_GPIO->BSRRL = I2C_SDA_GPIO_PIN; } while(0) #define READ_SDA GPIO_ReadInputDataBit(I2C_GPIO, I2C_SDA_GPIO_PIN) diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 1aadf6e30..73a4948ca 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -580,6 +580,7 @@ int usbPlugged() { return false; } int getSelectedUsbMode() { return USB_JOYSTICK_MODE; } void setSelectedUsbMode(int mode) {} void delay_ms(uint32_t ms) { } +void delay_us(uint16_t us) { } // GPIO fake functions void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF) { } From 91ea30451e2bbe49d774a5ab608164451f239157 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 Apr 2020 15:10:25 +0200 Subject: [PATCH 044/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 40825416c..128250e63 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1711,3 +1711,4 @@ Udo Kastenholz Julio Margarido Uwe Muendelein James Jewitt +Daniel Ferreira From 4ffb1a34dc424f6c6bea5cd948b7769ec96b1391 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 9 Apr 2020 10:19:49 +0200 Subject: [PATCH 045/199] Fix T12 DMA conflict (#7505) --- .../arm/stm32/intmodule_serial_driver.cpp | 32 ++++++++++++++++++- radio/src/targets/taranis/hal.h | 5 --- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp index e2f01f586..56b71d97c 100755 --- a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp @@ -21,12 +21,18 @@ #include "opentx.h" ModuleFifo intmoduleFifo; +#if !defined(INTMODULE_DMA_STREAM) +uint8_t * intmoduleTxBufferData; +uint8_t intmoduleTxBufferRemaining; +#endif void intmoduleStop() { GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN); +#if defined(INTMODULE_DMA_STREAM) INTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA +#endif GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = INTMODULE_TX_GPIO_PIN | INTMODULE_RX_GPIO_PIN; @@ -57,7 +63,11 @@ void intmoduleSerialStart(uint32_t baudrate, uint8_t rxEnable, uint16_t parity, INTERNAL_MODULE_ON(); NVIC_InitTypeDef NVIC_InitStructure; +#if defined(INTMODULE_DMA_STREAM) NVIC_InitStructure.NVIC_IRQChannel = INTMODULE_DMA_STREAM_IRQ; +#else + NVIC_InitStructure.NVIC_IRQChannel = INTMODULE_USART_IRQn; +#endif NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; @@ -118,8 +128,22 @@ void intmoduleTimerStart(uint32_t periodMs) #define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE) extern "C" void INTMODULE_USART_IRQHandler(void) { - uint32_t status = INTMODULE_USART->SR; +#if !defined(INTMODULE_DMA_STREAM) + // Send + if (USART_GetITStatus(INTMODULE_USART, USART_IT_TXE) != RESET) { + if (intmoduleTxBufferRemaining) { + USART_SendData(INTMODULE_USART, intmoduleTxBufferData[0]); + intmoduleTxBufferData++; + intmoduleTxBufferRemaining--; + } + else { + USART_ITConfig(INTMODULE_USART, USART_IT_TXE, DISABLE); + } + } +#endif + // Receive + uint32_t status = INTMODULE_USART->SR; while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { uint8_t data = INTMODULE_USART->DR; if (status & USART_FLAG_ERRORS) { @@ -143,6 +167,7 @@ void intmoduleSendBuffer(const uint8_t * data, uint8_t size) if (size == 0) return; +#if defined(INTMODULE_DMA_STREAM) DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(INTMODULE_DMA_STREAM); DMA_InitStructure.DMA_Channel = INTMODULE_DMA_CHANNEL; @@ -163,6 +188,11 @@ void intmoduleSendBuffer(const uint8_t * data, uint8_t size) DMA_Init(INTMODULE_DMA_STREAM, &DMA_InitStructure); DMA_Cmd(INTMODULE_DMA_STREAM, ENABLE); USART_DMACmd(INTMODULE_USART, USART_DMAReq_Tx, ENABLE); +#else + intmoduleTxBufferData = (uint8_t *)data; + intmoduleTxBufferRemaining = size; + USART_ITConfig(INTMODULE_USART, USART_IT_TXE, ENABLE); +#endif } void intmoduleSendNextFrame() diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index b8d1c7177..b55226edf 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -1078,11 +1078,6 @@ #define INTMODULE_GPIO_AF GPIO_AF_USART3 #define INTMODULE_USART_IRQn USART3_IRQn #define INTMODULE_USART_IRQHandler USART3_IRQHandler - #define INTMODULE_DMA_STREAM DMA1_Stream3 - #define INTMODULE_DMA_STREAM_IRQ DMA1_Stream3_IRQn - #define INTMODULE_DMA_STREAM_IRQHandler DMA1_Stream3_IRQHandler - #define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF3 - #define INTMODULE_DMA_CHANNEL DMA_Channel_4 #define INTMODULE_RCC_APB1Periph RCC_APB1Periph_TIM2 #define INTMODULE_RCC_APB2Periph RCC_APB1Periph_USART3 #define INTMODULE_TIMER TIM2 From 352b33e12d806766575c6a730bcbb8b35d3c0dc9 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 9 Apr 2020 10:21:35 +0200 Subject: [PATCH 046/199] Add LUA units to Taranis too (#7489) --- radio/src/lua/api_general.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 214e2f4e1..ff7b96da4 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1875,8 +1875,6 @@ const luaR_value_entry opentxConstants[] = { { "PLAY_BACKGROUND", PLAY_BACKGROUND }, { "TIMEHOUR", TIMEHOUR }, -#if defined(PCBHORUS) - // Adding the unit consts for the set Telemetry function adds about 1k of flash usage {"UNIT_RAW", UNIT_RAW }, {"UNIT_VOLTS", UNIT_VOLTS }, {"UNIT_AMPS", UNIT_AMPS }, @@ -1910,6 +1908,6 @@ const luaR_value_entry opentxConstants[] = { {"UNIT_GPS", UNIT_GPS}, {"UNIT_BITFIELD", UNIT_BITFIELD}, {"UNIT_TEXT", UNIT_TEXT}, -#endif + { nullptr, 0 } /* sentinel */ }; From 63c5e7fa3da61ce2043a5a2f9cec7a60d877a223 Mon Sep 17 00:00:00 2001 From: RealTadango Date: Thu, 9 Apr 2020 10:22:29 +0200 Subject: [PATCH 047/199] Missing leading 0 for date format (#7485) --- radio/src/gui/480x272/lcd.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index f139eaa5c..6659e386b 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -339,9 +339,9 @@ void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) att &= ~FONTSIZE_MASK; lcdDrawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.month, att|LEFT, 2); + lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.month, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.year-2000, att|LEFT); + lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.year-2000, att|LEADING0|LEFT); y += FH; lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos, y, ':', att); @@ -352,9 +352,9 @@ void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) else { lcdDrawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEFT, 2); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.year-2000, att|LEFT); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.year-2000, att|LEADING0|LEFT); lcdDrawNumber(lcdNextPos+11, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); lcdDrawChar(lcdNextPos, y, ':', att); lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2); From 2e1237cc0e7bf487364d6dc1bf738ec95f4e1060 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 9 Apr 2020 10:27:50 +0200 Subject: [PATCH 048/199] Improve popupConfirmation (#7481) --- .../horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua | 2 +- radio/src/lua/api_general.cpp | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua index d592677db..3e4c2e4eb 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -489,7 +489,7 @@ end local function runPopupPage(event) local result if fieldPopup.status == 3 then - result = popupConfirmation(fieldPopup.info, event) + result = popupConfirmation("Confirmation", fieldPopup.info, event) else result = popupWarning(fieldPopup.info, event) end diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index ff7b96da4..b750c7f16 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1206,11 +1206,14 @@ static int luaPopupWarning(lua_State * L) } /*luadoc -@function popupConfirmation(title, event) +@function popupConfirmation(title, event) deprecated, please replace by +@function popupConfirmation(title, message, event) Raises a pop-up on screen that asks for confirmation -@param title (string) text to display +@param title (string) title to display + +@param message (string) text to display @param event (number) the event variable that is passed in from the Run function (key pressed) @@ -1219,13 +1222,24 @@ Run function (key pressed) @notice Use only from stand-alone and telemetry scripts. -@status current Introduced in 2.2.0 +@status current Introduced in 2.2.0, changed to (title, message, event) in 2.3.8 */ static int luaPopupConfirmation(lua_State * L) { - event_t event = luaL_checkinteger(L, 2); - warningText = luaL_checkstring(L, 1); warningType = WARNING_TYPE_CONFIRM; + event_t event; + + if (lua_isnone(L, 3)) { + // only two args: deprecated mode + warningText = luaL_checkstring(L, 1); + event = luaL_checkinteger(L, 2); + } + else { + warningText = luaL_checkstring(L, 1); + warningInfoText = luaL_checkstring(L, 2); + event = luaL_optinteger(L, 3, 0); + } + runPopupWarning(event); if (!warningText) { lua_pushstring(L, warningResult ? "OK" : "CANCEL"); From 41f64a9a2e1411ec9f675c79929bdc63f23d2fa5 Mon Sep 17 00:00:00 2001 From: Martin <5703553+pre-martin@users.noreply.github.com> Date: Thu, 9 Apr 2020 10:29:00 +0200 Subject: [PATCH 049/199] Adds a page to the windows installer to select the location of the start menu entries. (#7484) --- companion/targets/windows/companion.nsi.in | 83 +++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/companion/targets/windows/companion.nsi.in b/companion/targets/windows/companion.nsi.in index 1a54e4b4d..173edec97 100644 --- a/companion/targets/windows/companion.nsi.in +++ b/companion/targets/windows/companion.nsi.in @@ -6,6 +6,7 @@ ;Include Modern UI !include "MUI2.nsh" + !include "nsDialogs.nsh" !include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh" ;-------------------------------- @@ -32,6 +33,10 @@ ;Variables Var StartMenuFolder + Var StartMenuLocationDialog + Var StartMenuLocationRadioCurrent + Var StartMenuLocationRadioAll + Var StartMenuLocationValue ; "current_user" or "all_users" ;-------------------------------- ;Interface Settings @@ -68,9 +73,11 @@ !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX\Companion @VERSION_FAMILY@" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" - !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + ;Start Menu Folder for current user or all users? + Page custom StartMenuLocationCreator StartMenuLocationLeave + !insertmacro MUI_PAGE_INSTFILES # These indented statements modify settings for MUI_PAGE_FINISH @@ -127,10 +134,14 @@ Section "OpenTX Companion @VERSION_FAMILY@" SecDummy !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ;Create shortcuts + ${If} $StartMenuLocationValue == "all_users" + SetShellVarContext all + ${Endif} CreateDirectory "$SMPROGRAMS\$StartMenuFolder" CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk" "$INSTDIR\companion.exe" CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk" "$INSTDIR\simulator.exe" CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk" "$INSTDIR\Uninstall.exe" + SetShellVarContext current !insertmacro MUI_STARTMENU_WRITE_END @@ -142,6 +153,14 @@ SectionEnd ;Language strings LangString DESC_SecDummy ${LANG_ENGLISH} "Models and settings editor for OpenTX" LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de r�glages et mod�les pour OpenTX" + LangString SML_SubTitle ${LANG_ENGLISH} "Choose a location for the Start Menu shortcuts" + LangString SML_SubTitle ${LANG_FRENCH} "Choisissez un emplacement pour les raccourcis de l'application" + LangString SML_MainLabel ${LANG_ENGLISH} "Create start menu shortcuts for:" + LangString SML_MainLabel ${LANG_FRENCH} "Emplacement pour les raccourcis de l'application:" + LangString SML_RadioCurrent ${LANG_ENGLISH} "Current user only" + LangString SML_RadioCurrent ${LANG_FRENCH} "Utilisateur actuel" + LangString SML_RadioAll ${LANG_ENGLISH} "All users" + LangString SML_RadioAll ${LANG_FRENCH} "Tous les utilisateurs" ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN @@ -204,6 +223,13 @@ Section "un.OpenTX Companion @VERSION_FAMILY@" !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + ; Always remove start menu folder for both locations: current user and all users + SetShellVarContext all + Delete "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + SetShellVarContext current Delete "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk" Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk" Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk" @@ -219,3 +245,58 @@ SectionEnd Function LaunchLink ExecShell "" "$INSTDIR\companion.exe" FunctionEnd + + +; Custom page with radio buttons, if the start menu entries shall be created +; for the current user or for all users. +Function StartMenuLocationCreator + ; Set default value if not already set. Do this before we might "abort" this page. + ${If} $StartMenuLocationValue == "" + StrCpy $StartMenuLocationValue "current_user" + ${EndIf} + + ; If the folder starts with >, the user has chosen not to create a shortcut (see NSIS/StartMenu.nsh) + StrCpy $R0 $StartMenuFolder 1 + ${If} $R0 == ">" + Abort + ${EndIf} + + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(SML_SubTitle) + + nsDialogs::Create 1018 + Pop $StartMenuLocationDialog + + ${If} $StartMenuLocationDialog == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0u 0u 100% 12u $(SML_MainLabel) + Pop $R0 + + ${NSD_CreateRadioButton} 8u 20u 100% 12u $(SML_RadioCurrent) + Pop $StartMenuLocationRadioCurrent + ${NSD_AddStyle} $StartMenuLocationRadioCurrent ${WS_GROUP} + + ${NSD_CreateRadioButton} 8u 40u 100% 12u $(SML_RadioAll) + Pop $StartMenuLocationRadioAll + + ${If} $StartMenuLocationValue == "all_users" + ${NSD_SetState} $StartMenuLocationRadioAll ${BST_CHECKED} + ${Else} + ${NSD_SetState} $StartMenuLocationRadioCurrent ${BST_CHECKED} + ${EndIf} + + ${NSD_OnBack} StartMenuLocationLeave + + nsDialogs::Show +FunctionEnd + +; Converts the radio button state back into a value for "StartMenuLocationValue" +Function StartMenuLocationLeave + ${NSD_GetState} $StartMenuLocationRadioAll $R0 + ${If} $R0 == ${BST_CHECKED} + StrCpy $StartMenuLocationValue "all_users" + ${Else} + StrCpy $StartMenuLocationValue "current_user" + ${Endif} +FunctionEnd From 5cf4e9be4e68d62dbde8887331252903d9265d3e Mon Sep 17 00:00:00 2001 From: Neil Horne Date: Thu, 9 Apr 2020 18:32:57 +1000 Subject: [PATCH 050/199] Add basic context menu to telemetry sensors in companion model edit (#7500) --- companion/src/modeledit/telemetry.cpp | 133 +++++++++- companion/src/modeledit/telemetry.h | 19 +- companion/src/modeledit/telemetry_sensor.ui | 44 ++-- companion/src/shared/CMakeLists.txt | 1 + companion/src/shared/autoprecisioncombobox.h | 257 +++++++++++++++++++ companion/src/shared/genericpanel.h | 1 + 6 files changed, 423 insertions(+), 32 deletions(-) create mode 100644 companion/src/shared/autoprecisioncombobox.h diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 68be10638..83565c03e 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -592,13 +592,28 @@ void TelemetryCustomScreen::barTimeChanged() } } -TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware): +/******************************************************/ + +TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, int sensorIndex, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware): ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::TelemetrySensor), sensor(sensor), - lock(false) + lock(false), + sensorIndex(sensorIndex), + selectedIndex(0) { ui->setupUi(this); + ui->numLabel->setText(tr("TELE%1").arg(sensorIndex + 1)); + ui->numLabel->setProperty("index", sensorIndex); + ui->numLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + QFontMetrics *f = new QFontMetrics(QFont()); + QSize sz; + sz = f->size(Qt::TextSingleLine, "TELE00"); + ui->numLabel->setMinimumWidth(sz.width()); + ui->numLabel->setContextMenuPolicy(Qt::CustomContextMenu); + ui->numLabel->setToolTip(tr("Popup menu available")); + ui->numLabel->setMouseTracking(true); + connect(ui->numLabel, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_customContextMenuRequested(QPoint))); ui->id->setField(sensor.id, this); ui->instance->setField(sensor.instance, this); ui->ratio->setField(sensor.ratio, this); @@ -613,7 +628,7 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ui->ampsSensor->setField(sensor.amps, this); ui->cellsSensor->setField(sensor.source, this); ui->cellsIndex->addItem(tr("Lowest"), SensorData::TELEM_CELL_INDEX_LOWEST); - for (int i=1; i<=6; i++) + for (int i = 1; i <= 6; i++) ui->cellsIndex->addItem(tr("Cell %1").arg(i), i); ui->cellsIndex->addItem(tr("Highest"), SensorData::TELEM_CELL_INDEX_HIGHEST); ui->cellsIndex->addItem(tr("Delta"), SensorData::TELEM_CELL_INDEX_DELTA); @@ -622,6 +637,7 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ui->source2->setField(sensor.sources[1], this); ui->source3->setField(sensor.sources[2], this); ui->source4->setField(sensor.sources[3], this); + ui->prec->setField(sensor.prec, 0, 2, false, "", this); update(); } @@ -645,7 +661,21 @@ void TelemetrySensorPanel::update() ui->name->setText(sensor.label); ui->type->setCurrentIndex(sensor.type); ui->unit->setCurrentIndex(sensor.unit); - ui->prec->setValue(sensor.prec); + ui->id->updateValue(); + ui->instance->updateValue(); + ui->ratio->updateValue(); + ui->offset->updateValue(); + ui->autoOffset->updateValue(); + ui->filter->updateValue(); + ui->logs->updateValue(); + ui->persistent->updateValue(); + ui->onlyPositive->updateValue(); + ui->gpsSensor->updateValue(); + ui->altSensor->updateValue(); + ui->ampsSensor->updateValue(); + ui->cellsSensor->updateValue(); + ui->cellsIndex->updateValue(); + ui->prec->updateValue(); if (sensor.type == SensorData::TELEM_TYPE_CALCULATED) { sensor.updateUnit(); @@ -825,15 +855,85 @@ void TelemetrySensorPanel::on_unit_currentIndexChanged(int index) } } -void TelemetrySensorPanel::on_prec_valueChanged(double value) +void TelemetrySensorPanel::on_prec_valueChanged() { if (!lock) { - sensor.prec = value; + update(); + } +} + +void TelemetrySensorPanel::on_customContextMenuRequested(QPoint pos) +{ + QLabel *label = (QLabel *)sender(); + selectedIndex = label->property("index").toInt(); + QPoint globalPos = label->mapToGlobal(pos); + + QMenu contextMenu; + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(cmClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(cmClearAll())); + + contextMenu.exec(globalPos); +} + +bool TelemetrySensorPanel::hasClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_TELE_SENSOR)) { + if (data) + data->append(mimeData->data(MIMETYPE_TELE_SENSOR)); + return true; + } + return false; +} + +void TelemetrySensorPanel::cmCopy() +{ + QByteArray data; + data.append((char*)&sensor, sizeof(SensorData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData(MIMETYPE_TELE_SENSOR, data); + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); +} + +void TelemetrySensorPanel::cmCut() +{ + cmCopy(); + cmClear(); +} + +void TelemetrySensorPanel::cmPaste() +{ + QByteArray data; + if (hasClipboardData(&data)) { + memcpy(&sensor, data.constData(), sizeof(SensorData)); emit dataModified(); emit modified(); } } +void TelemetrySensorPanel::cmClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Telemetry Sensor. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + sensor.clear(); + emit dataModified(); + emit modified(); +} + +void TelemetrySensorPanel::cmClearAll() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Telemetry Sensors. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + emit clearAllSensors(); +} + /******************************************************/ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware): @@ -851,12 +951,13 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin ui->varioCenterSilent->setField(model.frsky.varioCenterSilent, this); ui->A1GB->hide(); ui->A2GB->hide(); - for (unsigned i=0; isensorsLayout->addWidget(panel); sensorPanels[i] = panel; connect(panel, SIGNAL(dataModified()), this, SLOT(update())); connect(panel, SIGNAL(modified()), this, SLOT(onModified())); + connect(panel, SIGNAL(clearAllSensors()), this, SLOT(on_clearAllSensors())); } } else { @@ -869,7 +970,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin ui->A2Layout->addWidget(analogs[1]); connect(analogs[1], SIGNAL(modified()), this, SLOT(onModified())); } - + if (IS_TARANIS_X9(firmware->getBoard())) { ui->voltsSource->setField(model.frsky.voltsSource, this); ui->altitudeSource->setField(model.frsky.altitudeSource, this); @@ -881,7 +982,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin RawSourceFilterItemModel * srcModel = (new RawSourceFilterItemModel(&generalSettings, &model, this)); connect(this, &TelemetryPanel::updated, srcModel, &RawSourceFilterItemModel::update); - for (int i=0; igetCapability(TelemetryCustomScreens); i++) { + for (int i = 0; i < firmware->getCapability(TelemetryCustomScreens); i++) { TelemetryCustomScreen * tab = new TelemetryCustomScreen(this, model, model.frsky.screens[i], generalSettings, firmware, srcModel); ui->customScreens->addTab(tab, tr("Telemetry screen %1").arg(i+1)); telemetryCustomScreens[i] = tab; @@ -963,7 +1064,7 @@ void TelemetryPanel::setup() ui->rssiSourceCB->setField(model->rssiSource, this); ui->rssiSourceCB->show(); populateTelemetrySourcesComboBox(ui->rssiSourceCB, model, false); - + ui->rssiAlarmWarningCB->hide(); ui->rssiAlarmCriticalCB->hide(); ui->rssiAlarmWarningLabel->setText(tr("Low Alarm")); @@ -1198,3 +1299,13 @@ void TelemetryPanel::on_mahCount_ChkB_toggled(bool checked) ui->mahCount_SB->setDisabled(!checked); emit modified(); } + +void TelemetryPanel::on_clearAllSensors() +{ + for (int i = 0; i < CPN_MAX_SENSORS; i++) { + model->sensorData[i].clear(); + } + + update(); + emit modified(); +} diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index b23214927..39f3a42ad 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -24,6 +24,8 @@ #include "modeledit.h" #include "eeprominterface.h" +constexpr char MIMETYPE_TELE_SENSOR[] = "application/x-companion-tele-sensor"; + class AutoComboBox; class RawSourceFilterItemModel; class TimerEdit; @@ -103,19 +105,27 @@ class TelemetrySensorPanel: public ModelPanel Q_OBJECT public: - TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware); + TelemetrySensorPanel(QWidget *parent, SensorData & sensor, int sensorIndex, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware); ~TelemetrySensorPanel(); void update(); signals: void dataModified(); + void clearAllSensors(); protected slots: void on_name_editingFinished(); void on_type_currentIndexChanged(int index); void on_formula_currentIndexChanged(int index); void on_unit_currentIndexChanged(int index); - void on_prec_valueChanged(double value); + void on_prec_valueChanged(); + void on_customContextMenuRequested(QPoint pos); + bool hasClipboardData(QByteArray * data = nullptr) const; + void cmCopy(); + void cmCut(); + void cmPaste(); + void cmClear(); + void cmClearAll(); protected: void updateSourcesComboBox(AutoComboBox * cb, bool negative); @@ -123,7 +133,9 @@ class TelemetrySensorPanel: public ModelPanel private: Ui::TelemetrySensor * ui; SensorData & sensor; - bool lock; + bool lock = false; + int sensorIndex = 0; + int selectedIndex = 0; }; class TelemetryPanel : public ModelPanel @@ -154,6 +166,7 @@ class TelemetryPanel : public ModelPanel void on_fasOffset_DSB_editingFinished(); void on_mahCount_SB_editingFinished(); void on_mahCount_ChkB_toggled(bool checked); + void on_clearAllSensors(); private: Ui::Telemetry *ui; diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index 7d08243e0..52660b4f0 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -13,13 +13,32 @@ Form - + 0 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + + TELE## + + + @@ -536,23 +555,7 @@ - - - true - - - - 0 - 0 - - - - 0 - - - 2.000000000000000 - - + @@ -711,6 +714,11 @@ QSpinBox
autohexspinbox.h
+ + AutoPrecisionComboBox + QComboBox +
autoprecisioncombobox.h
+
diff --git a/companion/src/shared/CMakeLists.txt b/companion/src/shared/CMakeLists.txt index 81df9dd67..2fbbafbf9 100644 --- a/companion/src/shared/CMakeLists.txt +++ b/companion/src/shared/CMakeLists.txt @@ -15,6 +15,7 @@ set(shared_HDRS autolineedit.h genericpanel.h hexspinbox.h + autoprecisioncombobox.h ) qt5_wrap_cpp(shared_SRCS ${shared_HDRS}) diff --git a/companion/src/shared/autoprecisioncombobox.h b/companion/src/shared/autoprecisioncombobox.h new file mode 100644 index 000000000..4e143f286 --- /dev/null +++ b/companion/src/shared/autoprecisioncombobox.h @@ -0,0 +1,257 @@ +/* + * 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 _AUTOPRECISIONCOMBOBOX_H_ +#define _AUTOPRECISIONCOMBOBOX_H_ + +#include "genericpanel.h" + +#include +#include + +class AutoPrecisionComboBox: public QComboBox +{ + Q_OBJECT + //! \property minDecimals Determines the first list item + Q_PROPERTY(unsigned int minDecimals READ minDecimals WRITE setMinDecimals) + //! \property maxDecimals Determines the last list item + Q_PROPERTY(unsigned int maxDecimals READ maxDecimals WRITE setMaxDecimals) + //! \property padding If true, add trailing underscore placeholders to each list item + Q_PROPERTY(bool padding READ padding WRITE setPadding) + //! \property suffix Optional text suffix to each list value + Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) + + public: + explicit AutoPrecisionComboBox(QWidget * parent = nullptr): + QComboBox(parent) + { + init(); + } + + explicit AutoPrecisionComboBox(unsigned int & field, unsigned int minDecimals = 0, unsigned int maxDecimals = 1, bool padding = false, QString suffix = "", QWidget * parent = nullptr, GenericPanel * panel = nullptr): + QComboBox(parent) + { + setField(field, minDecimals, maxDecimals, padding, suffix, panel); + init(); + } + + explicit AutoPrecisionComboBox(int & field, unsigned int minDecimals = 0, unsigned int maxDecimals = 1, bool padding = false, QString suffix = "", QWidget * parent = nullptr, GenericPanel * panel = nullptr): + QComboBox(parent) + { + setField(field, minDecimals, maxDecimals, padding, suffix, panel); + init(); + } + + inline int minDecimals() const { return m_minDecimals; } + inline int maxDecimals() const { return m_maxDecimals; } + inline bool padding() const { return m_padding; } + inline QString suffix() const { return m_suffix; } + + public slots: + void setField(int & field, unsigned int minDecimals = 0, unsigned int maxDecimals = 1, bool padding = false, QString suffix = "", GenericPanel * panel = nullptr) + { + m_field = reinterpret_cast(&field); + initField(minDecimals, maxDecimals, padding, suffix); + setPanel(panel); + } + + void setField(unsigned int & field, unsigned int minDecimals = 0, unsigned int maxDecimals = 1, bool padding = false, QString suffix = "", GenericPanel * panel = nullptr) + { + m_field = &field; + initField(minDecimals, maxDecimals, padding, suffix); + setPanel(panel); + } + + void setMinDecimals(unsigned int minDecimals) + { + m_minDecimals = rangecheckDecimals(minDecimals); + if (m_minDecimals > m_maxDecimals) + m_minDecimals = m_maxDecimals; + if (!m_lock) + updateList(); + } + + void setMaxDecimals(unsigned int maxDecimals) + { + m_maxDecimals = rangecheckDecimals(maxDecimals); + if (m_maxDecimals < m_minDecimals) + m_maxDecimals = m_minDecimals; + if (!m_lock) + updateList(); + } + + void setPadding(bool padding) + { + m_padding = padding; + if (!m_lock) + updateList(); + } + + void setSuffix(QString suffix) + { + m_suffix = suffix.trimmed(); + if (!m_lock) + updateList(); + } + + void setPanel(GenericPanel * panel) + { + m_panel = panel; + } + + void setValue(int value) + { + if (!m_field) + return; + const unsigned int val = (unsigned int)value; + if (*m_field != val) { + *m_field = rangecheckDecimals(val); + updateValue(); + emit valueChanged(); + } + } + + void setValue(unsigned int value) + { + if (!m_field) + return; + if (*m_field != value) { + *m_field = rangecheckDecimals(value); + updateValue(); + emit valueChanged(); + } + } + + void updateValue() + { + if (!m_field) + return; + if (!isValidDecimals(*m_field)) + return; + if (*m_field > m_maxDecimals) { + setMaxDecimals(*m_field); + } + const bool savedlock = setLocked(true); + setCurrentIndex(findData(*m_field)); + setLocked(savedlock); + } + + void setAutoIndexes() + { + for (int i = 0; i < count(); ++i) + setItemData(i, i); + updateValue(); + } + + signals: + void valueChanged(); + + protected slots: + void init() + { + connect(this, QOverload::of(&AutoPrecisionComboBox::currentIndexChanged), this, &AutoPrecisionComboBox::onCurrentIndexChanged); + } + + void initField(unsigned int minDecimals, unsigned int maxDecimals, bool padding, QString suffix) + { + const bool savedlock = setLocked(true); + setMinDecimals(minDecimals); + setMaxDecimals(maxDecimals); + setPadding(padding); + setSuffix(suffix); + setLocked(savedlock); + updateList(); + } + + void updateList() + { + const bool savedlock = setLocked(true); + unsigned int i; + int j; + clear(); + + for (i = APCB_DECIMALS_MIN, j = (int)m_maxDecimals; j >= 0; i++, j--) { + if (i >= m_minDecimals) { + QString str = QString("0.%1").arg(QString(i, '0')); + if (m_padding) + str.append(QString(j, '_')); + if (m_suffix != "") + str.append(QString(" %1").arg(m_suffix)); + addItem(str, i); + } + } + + setSizeAdjustPolicy(QComboBox::AdjustToContents); + setLocked(savedlock); + } + + void onCurrentIndexChanged(int index) + { + if (index < 0) + return; + if (m_field && !m_lock) { + *m_field = itemData(index).toUInt(); + if (m_panel) + emit m_panel->modified(); + emit valueChanged(); + } + } + + unsigned int rangecheckDecimals(unsigned int decimals) + { + unsigned int ret; + if (decimals < APCB_DECIMALS_MIN) + ret = APCB_DECIMALS_MIN; + else if (decimals > APCB_DECIMALS_MAX) + ret = APCB_DECIMALS_MAX; + else + ret = decimals; + return ret; + } + + bool isValidDecimals(unsigned int value) + { + if (value >= APCB_DECIMALS_MIN && value <= APCB_DECIMALS_MAX) + return true; + else + return false; + } + + bool setLocked(bool lock) + { + const bool ret = m_lock; + m_lock = lock; + return ret; + } + + protected: + constexpr static unsigned int APCB_DECIMALS_MIN = {0}; + constexpr static unsigned int APCB_DECIMALS_MAX = {6}; + + unsigned int * m_field = nullptr; + GenericPanel * m_panel = nullptr; + unsigned int m_minDecimals = 0; + unsigned int m_maxDecimals = 0; + bool m_padding = false; + QString m_suffix = ""; + bool m_lock = false; +}; + +#endif // _AUTOPRECISIONCOMBOBOX_H_ diff --git a/companion/src/shared/genericpanel.h b/companion/src/shared/genericpanel.h index 1ce8e906e..5351355b6 100644 --- a/companion/src/shared/genericpanel.h +++ b/companion/src/shared/genericpanel.h @@ -39,6 +39,7 @@ class GenericPanel : public QWidget friend class AutoHexSpinBox; friend class AutoLineEdit; friend class GVarGroup; + friend class AutoPrecisionComboBox; public: GenericPanel(QWidget *parent, ModelData * model, GeneralSettings & generalSettings, Firmware * firmware); From f40327a1ff5463fca63e83715bddac55abcb0687 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Apr 2020 19:46:08 +0200 Subject: [PATCH 051/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 128250e63..b84116363 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1712,3 +1712,4 @@ Julio Margarido Uwe Muendelein James Jewitt Daniel Ferreira +Michael Charlston From 57198209aa0d7335098e77157ee2c99fc50bd24e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Apr 2020 20:54:21 +0200 Subject: [PATCH 052/199] Fixes for OTA on Horus --- radio/src/gui/480x272/menus.h | 2 ++ radio/src/gui/480x272/radio_sdmanager.cpp | 3 ++- radio/src/gui/common/stdlcd/radio_sdmanager.cpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index 83c667f19..a63e64c8d 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -559,6 +559,8 @@ inline void CLEAR_POPUP() warningInfoText = nullptr; popupMenuHandler = nullptr; popupMenuItemsCount = 0; + // TODO ? popupFunc = nullptr; + pushEvent(EVT_REFRESH); } inline void POPUP_WAIT(const char * s) diff --git a/radio/src/gui/480x272/radio_sdmanager.cpp b/radio/src/gui/480x272/radio_sdmanager.cpp index 90b5e5f57..96fb7c18d 100644 --- a/radio/src/gui/480x272/radio_sdmanager.cpp +++ b/radio/src/gui/480x272/radio_sdmanager.cpp @@ -97,6 +97,7 @@ void onUpdateConfirmation(const char * result) OtaUpdateInformation * destination = moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].otaUpdateInformation; Pxx2OtaUpdate otaUpdate(reusableBuffer.sdManager.otaUpdateInformation.module, destination->candidateReceiversNames[destination->selectedReceiverIndex]); otaUpdate.flashFirmware(destination->filename); + putEvent(EVT_REFRESH); } else { moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL; @@ -563,7 +564,7 @@ bool menuRadioSdManager(event_t _event) if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount > 0) { if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount != popupMenuItemsCount) { CLEAR_POPUP(); - popupMenuItemsCount = min(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount,PXX2_MAX_RECEIVERS_PER_MODULE); + popupMenuItemsCount = min(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); for (auto rx = 0; rx < popupMenuItemsCount; rx++) { popupMenuItems[rx] = reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversNames[rx]; } diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index d6def8115..e719951b3 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -576,7 +576,7 @@ void menuRadioSdManager(event_t _event) if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount > 0) { if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount != popupMenuItemsCount) { CLEAR_POPUP(); - popupMenuItemsCount = min(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount,PXX2_MAX_RECEIVERS_PER_MODULE); + popupMenuItemsCount = min(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); for (auto rx = 0; rx < popupMenuItemsCount; rx++) { popupMenuItems[rx] = reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversNames[rx]; } From ebe33693b415bf47bb25ee9f42d708f578faa1d0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 11 Apr 2020 07:44:48 +0200 Subject: [PATCH 053/199] Compilation fix --- radio/src/gui/480x272/menus.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index a63e64c8d..f82baeb14 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -560,7 +560,7 @@ inline void CLEAR_POPUP() popupMenuHandler = nullptr; popupMenuItemsCount = 0; // TODO ? popupFunc = nullptr; - pushEvent(EVT_REFRESH); + putEvent(EVT_REFRESH); } inline void POPUP_WAIT(const char * s) From d90ac28cc19e859924dd934652a486b3adaeb0c6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 11 Apr 2020 13:18:57 +0200 Subject: [PATCH 054/199] Refactoring to have globals splitted from opentx.h for easier includes (#7511) --- radio/src/buzzer.h | 2 - radio/src/datastructs.h | 3 +- radio/src/globals.h | 97 +++++++++++++++++++ radio/src/gui/480x272/model_setup.cpp | 5 +- radio/src/gui/480x272/radio_power_meter.cpp | 5 +- .../gui/480x272/radio_spectrum_analyser.cpp | 5 +- radio/src/mixer.cpp | 12 +-- radio/src/opentx.h | 79 +-------------- radio/src/pulses/modules_helpers.h | 11 +++ radio/src/pulses/pulses.cpp | 4 +- 10 files changed, 119 insertions(+), 104 deletions(-) create mode 100644 radio/src/globals.h diff --git a/radio/src/buzzer.h b/radio/src/buzzer.h index aa13746f8..f0c545d5e 100644 --- a/radio/src/buzzer.h +++ b/radio/src/buzzer.h @@ -22,8 +22,6 @@ #define _BUZZER_H_ #if defined(BUZZER) -extern uint8_t g_beepCnt; -extern uint8_t beepAgain; extern uint8_t beepAgainOrig; extern uint8_t beepOn; extern bool warble; diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 7a2454034..413c5efcd 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -26,6 +26,7 @@ #include "dataconstants.h" #include "definitions.h" #include "bitfield.h" +#include "globals.h" #if defined(PCBTARANIS) #define N_TARANIS_FIELD(x) @@ -483,8 +484,6 @@ PACK(struct ModuleData { * Model structure */ -typedef uint16_t BeepANACenter; - #if LEN_BITMAP_NAME > 0 #define MODEL_HEADER_BITMAP_FIELD NOBACKUP(char bitmap[LEN_BITMAP_NAME]); #else diff --git a/radio/src/globals.h b/radio/src/globals.h new file mode 100644 index 000000000..cf67dbc4a --- /dev/null +++ b/radio/src/globals.h @@ -0,0 +1,97 @@ +/* + * 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 _GLOBALS_H_ +#define _GLOBALS_H_ + +#include "definitions.h" +#include "dataconstants.h" + +PACK(struct GlobalData { + uint8_t unexpectedShutdown:1; + uint8_t externalAntennaEnabled:1; + uint8_t authenticationCount:2; + uint8_t upgradeModulePopup:1; + uint8_t internalModuleVersionChecked:1; + uint8_t spare:2; +}); + +extern GlobalData globalData; + +extern uint16_t sessionTimer; +extern uint16_t s_timeCumThr; +extern uint16_t s_timeCum16ThrP; + +#if defined(OVERRIDE_CHANNEL_FUNCTION) +#define OVERRIDE_CHANNEL_UNDEFINED -4096 +extern safetych_t safetyCh[MAX_OUTPUT_CHANNELS]; +#endif + +extern uint8_t trimsCheckTimer; +extern uint8_t trimsDisplayTimer; +extern uint8_t trimsDisplayMask; +extern uint16_t maxMixerDuration; + +extern uint8_t requiredSpeakerVolume; + +enum MainRequest { + REQUEST_SCREENSHOT, + REQUEST_FLIGHT_RESET, +}; + +extern uint8_t mainRequestFlags; + +#define DELAY_POS_MARGIN 3 +typedef int16_t delayval_t; +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; +}); + +extern SwOn swOn[MAX_MIXERS]; +extern int32_t act[MAX_MIXERS]; + +// static variables used in evalFlightModeMixes - moved here so they don't interfere with the stack +// It's also easier to initialize them here. +extern int8_t virtualInputsTrims[MAX_INPUTS]; + +extern int16_t anas [MAX_INPUTS]; +extern int16_t trims[NUM_TRIMS]; +extern int32_t chans[MAX_OUTPUT_CHANNELS]; +extern int16_t ex_chans[MAX_OUTPUT_CHANNELS]; // Outputs (before LIMITS) of the last perMain +extern int16_t channelOutputs[MAX_OUTPUT_CHANNELS]; + +typedef uint16_t BeepANACenter; +extern BeepANACenter bpanaCenter; + +extern uint8_t s_mixer_first_run_done; + +extern int16_t calibratedAnalogs[NUM_CALIBRATED_ANALOGS]; + +extern uint8_t g_beepCnt; +extern uint8_t beepAgain; +extern uint16_t lightOffCounter; +extern uint8_t flashCounter; +extern uint8_t mixWarning; + +#endif diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index b8c01cbaa..3cd369ddb 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -1018,10 +1018,6 @@ bool menuModelSetup(event_t event) uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); if (checkIncDec_Ret) { setModuleType(INTERNAL_MODULE, moduleType); -#if defined(ACCESS_LIB) - // the module will reset on mode switch, we need to reset the authentication counter - globalData.authenticationCount = 0; -#endif } } else if (isModuleXJT(INTERNAL_MODULE)) { @@ -1034,6 +1030,7 @@ bool menuModelSetup(event_t event) } else if (isModulePXX2(INTERNAL_MODULE)) { g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL); + resetAccessAuthenticationCount(); } } break; diff --git a/radio/src/gui/480x272/radio_power_meter.cpp b/radio/src/gui/480x272/radio_power_meter.cpp index f49eeb93c..c1f6ac316 100644 --- a/radio/src/gui/480x272/radio_power_meter.cpp +++ b/radio/src/gui/480x272/radio_power_meter.cpp @@ -50,10 +50,7 @@ bool menuRadioPowerMeter(event_t event) lcdDrawCenteredText(LCD_H/2, STR_STOPPING); lcdRefresh(); moduleState[g_moduleIdx].readModuleInformation(&reusableBuffer.moduleSetup.pxx2.moduleInformation, PXX2_HW_INFO_TX_ID, PXX2_HW_INFO_TX_ID); -#if defined(ACCESS_LIB) - // the module will reset on mode switch, we need to reset the authentication counter - globalData.authenticationCount = 0; -#endif + resetAccessAuthenticationCount(); /* wait 1s to resume normal operation before leaving */ watchdogSuspend(500 /*5s*/); RTOS_WAIT_MS(1000); diff --git a/radio/src/gui/480x272/radio_spectrum_analyser.cpp b/radio/src/gui/480x272/radio_spectrum_analyser.cpp index 39ff66e02..95e40e9db 100644 --- a/radio/src/gui/480x272/radio_spectrum_analyser.cpp +++ b/radio/src/gui/480x272/radio_spectrum_analyser.cpp @@ -58,10 +58,7 @@ bool menuRadioSpectrumAnalyser(event_t event) lcdRefresh(); if (isModulePXX2(g_moduleIdx)) { moduleState[g_moduleIdx].readModuleInformation(&reusableBuffer.moduleSetup.pxx2.moduleInformation, PXX2_HW_INFO_TX_ID, PXX2_HW_INFO_TX_ID); -#if defined(ACCESS_LIB) - // the module will reset on mode switch, we need to reset the authentication counter - globalData.authenticationCount = 0; -#endif + resetAccessAuthenticationCount(); } else if (isModuleMultimodule(g_moduleIdx)) { if (reusableBuffer.spectrumAnalyser.moduleOFF) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index a8100da22..d361ac479 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -901,9 +901,7 @@ void evalMixes(uint8_t tick10ms) static uint16_t fp_act[MAX_FLIGHT_MODES] = {0}; static uint16_t delta = 0; - static ACTIVE_PHASES_TYPE flightModesFade = 0; - - LS_RECURSIVE_EVALUATION_RESET(); + static uint16_t flightModesFade = 0; uint8_t fm = getFlightMode(); @@ -915,7 +913,7 @@ void evalMixes(uint8_t tick10ms) } else { uint8_t fadeTime = max(g_model.flightModeData[lastFlightMode].fadeOut, g_model.flightModeData[fm].fadeIn); - ACTIVE_PHASES_TYPE transitionMask = ((ACTIVE_PHASES_TYPE)1 << lastFlightMode) + ((ACTIVE_PHASES_TYPE)1 << fm); + uint16_t transitionMask = (0x01u << lastFlightMode) + (0x01u << fm); if (fadeTime) { flightModesFade |= transitionMask; delta = (MAX_ACT / 10) / fadeTime; @@ -945,15 +943,13 @@ void evalMixes(uint8_t tick10ms) if (flightModesFade) { memclear(sum_chans512, sizeof(sum_chans512)); for (uint8_t p=0; p> 4) * fp_act[p]; weight += fp_act[p]; } - LS_RECURSIVE_EVALUATION_RESET(); } assert(weight); mixerCurrentFlightMode = fm; @@ -994,7 +990,7 @@ void evalMixes(uint8_t tick10ms) if (tick10ms && flightModesFade) { uint16_t tick_delta = delta * tick10ms; for (uint8_t p=0; p tick_delta) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index cd9ac3a58..7ca6a1db6 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -21,14 +21,12 @@ #ifndef _OPENTX_H_ #define _OPENTX_H_ -#include -#include -#include #include -#include #include "definitions.h" #include "opentx_types.h" #include "debounce.h" +#include "globals.h" +#include "opentx_helpers.h" #if defined(SIMU) #include "targets/simu/simpgmspace.h" @@ -502,7 +500,6 @@ void logicalSwitchesReset(); void evalLogicalSwitches(bool isCurrentFlightmode=true); void logicalSwitchesCopyState(uint8_t src, uint8_t dst); -#define LS_RECURSIVE_EVALUATION_RESET() #if defined(PCBTARANIS) || defined(PCBHORUS) void getSwitchesPosition(bool startup); @@ -547,34 +544,8 @@ bool setTrimValue(uint8_t phase, uint8_t idx, int trim); #include "gvars.h" -extern uint16_t sessionTimer; -extern uint16_t s_timeCumThr; -extern uint16_t s_timeCum16ThrP; - -#if defined(OVERRIDE_CHANNEL_FUNCTION) -#define OVERRIDE_CHANNEL_UNDEFINED -4096 -extern safetych_t safetyCh[MAX_OUTPUT_CHANNELS]; -#endif - -extern uint8_t trimsCheckTimer; -extern uint8_t trimsDisplayTimer; -extern uint8_t trimsDisplayMask; - void flightReset(uint8_t check=true); -PACK(struct GlobalData { - uint8_t unexpectedShutdown:1; - uint8_t externalAntennaEnabled:1; - uint8_t authenticationCount:2; - uint8_t upgradeModulePopup:1; - uint8_t internalModuleVersionChecked:1; - uint8_t spare:2; -}); - -extern GlobalData globalData; - -extern uint16_t maxMixerDuration; - #define DURATION_MS_PREC2(x) ((x)/20) #if defined(THRTRACE) @@ -723,14 +694,9 @@ extern const char vers_stamp[]; const char * getOtherVersion(char * buffer); #define g_blinkTmr10ms (*(uint8_t*)&g_tmr10ms) -extern uint8_t g_beepCnt; #include "trainer.h" -extern int32_t chans[MAX_OUTPUT_CHANNELS]; -extern int16_t ex_chans[MAX_OUTPUT_CHANNELS]; // Outputs (before LIMITS) of the last perMain -extern int16_t channelOutputs[MAX_OUTPUT_CHANNELS]; - int expo(int x, int k); inline void getMixSrcRange(const int source, int16_t & valMin, int16_t & valMax, LcdFlags * flags = 0) @@ -829,33 +795,15 @@ int16_t applyLimits(uint8_t channel, int32_t value); void evalInputs(uint8_t mode); uint16_t anaIn(uint8_t chan); -extern int16_t calibratedAnalogs[NUM_CALIBRATED_ANALOGS]; - #define FLASH_DURATION 20 /*200ms*/ -extern uint8_t beepAgain; -extern uint16_t lightOffCounter; -extern uint8_t flashCounter; -extern uint8_t mixWarning; - FlightModeData * flightModeAddress(uint8_t idx); ExpoData * expoAddress(uint8_t idx); MixData * mixAddress(uint8_t idx); LimitData * limitAddress(uint8_t idx); LogicalSwitchData * lswAddress(uint8_t idx); -// static variables used in evalFlightModeMixes - moved here so they don't interfere with the stack -// It's also easier to initialize them here. -extern int8_t virtualInputsTrims[MAX_INPUTS]; - -extern int16_t anas [MAX_INPUTS]; -extern int16_t trims[NUM_TRIMS]; -extern BeepANACenter bpanaCenter; - -extern uint8_t s_mixer_first_run_done; - void applyDefaultTemplate(); - void instantTrim(); void evalTrims(); void copyTrimsToOffset(uint8_t ch); @@ -863,20 +811,6 @@ void copySticksToOffset(uint8_t ch); void copyMinMaxToOutputs(uint8_t ch); void moveTrimsToOffsets(); -typedef uint16_t ACTIVE_PHASES_TYPE; -#define DELAY_POS_MARGIN 3 -typedef int16_t delayval_t; -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; -}); - -extern SwOn swOn[MAX_MIXERS]; -extern int32_t act[MAX_MIXERS]; - #if defined(BOLD_FONT) inline bool isExpoActive(uint8_t expo) { @@ -1050,15 +984,6 @@ void setMFP(); void clearMFP(); #endif -extern uint8_t requiredSpeakerVolume; - -enum MainRequest { - REQUEST_SCREENSHOT, - REQUEST_FLIGHT_RESET, -}; - -extern uint8_t mainRequestFlags; - void checkBattery(); void opentxClose(uint8_t shutdown=true); void opentxInit(); diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index a1e3cee65..5327938d2 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -26,6 +26,7 @@ #include "opentx_helpers.h" #include "telemetry/telemetry.h" #include "storage/storage.h" +#include "globals.h" #if defined(MULTIMODULE) #include "telemetry/multi.h" @@ -534,6 +535,14 @@ inline void setDefaultPpmFrameLength(uint8_t moduleIdx) g_model.moduleData[moduleIdx].ppm.frameLength = 4 * max(0, g_model.moduleData[moduleIdx].channelsCount); } +inline void resetAccessAuthenticationCount() +{ +#if defined(ACCESS_LIB) + // the module will reset on mode switch, we need to reset the authentication counter + globalData.authenticationCount = 0; +#endif +} + inline void setModuleType(uint8_t moduleIdx, uint8_t moduleType) { ModuleData & moduleData = g_model.moduleData[moduleIdx]; @@ -544,6 +553,8 @@ inline void setModuleType(uint8_t moduleIdx, uint8_t moduleType) moduleData.sbus.refreshRate = -31; else if (moduleData.type == MODULE_TYPE_PPM) setDefaultPpmFrameLength(moduleIdx); + else + resetAccessAuthenticationCount(); } extern bool isExternalAntennaEnabled(); diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 42f04fb26..afcbaa061 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -308,9 +308,7 @@ static void enablePulsesInternalModule(uint8_t protocol) #if defined(PXX2) case PROTOCOL_CHANNELS_PXX2_HIGHSPEED: intmoduleSerialStart(PXX2_HIGHSPEED_BAUDRATE, true, USART_Parity_No, USART_StopBits_1, USART_WordLength_8b); -#if defined(HARDWARE_INTERNAL_MODULE) && defined(INTERNAL_MODULE_PXX2) && defined(ACCESS_LIB) - globalData.authenticationCount = 0; -#endif + resetAccessAuthenticationCount(); break; #endif From 673fcb9287bd5beededb4a0b7d01178b568c16be Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 11 Apr 2020 17:25:46 +0200 Subject: [PATCH 055/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index b84116363..2f1fbc891 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1713,3 +1713,4 @@ Uwe Muendelein James Jewitt Daniel Ferreira Michael Charlston +Leopoldo Cicero From 5e2fc7f1aed9169031fb05b4594db6792c7c91fe Mon Sep 17 00:00:00 2001 From: pascallanger Date: Mon, 13 Apr 2020 11:39:59 +0200 Subject: [PATCH 056/199] Multi: Enable D8, D16v1 and D16v2.1 TX clone mode (#7516) * Clone mode * Switch table from octal to hex * Revert change to octal as requested by 3djc * Changing to Cloned to please 3djc ;-) * Minimum Multi version: 1.3.0.87 * Cosmetics * Cosmetics * Add cloned to X2 Co-authored-by: Pascal Langer Co-authored-by: 3djc --- jumpertx-t16-2.3.8.bin | Bin 0 -> 1051568 bytes radio/src/gui/gui_common.cpp | 10 +++++----- radio/src/pulses/modules_constants.h | 4 +++- radio/src/pulses/modules_helpers.h | 2 +- radio/src/pulses/multi.cpp | 16 ++++++++++++---- radio/src/telemetry/multi.cpp | 2 +- radio/src/telemetry/telemetry.h | 2 +- 7 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 jumpertx-t16-2.3.8.bin diff --git a/jumpertx-t16-2.3.8.bin b/jumpertx-t16-2.3.8.bin new file mode 100644 index 0000000000000000000000000000000000000000..25865937a4c010c9c4550dfd68130acc7c799dba GIT binary patch literal 1051568 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 RLhnLpm8m0HSY;=0 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�e|l~U$(5jW z#d;X+_#9EupMeY({(l^g-YjmefdqCFq`4taZeNf3<03)590$~MB!Bj3Z|A7r{L{zZaC#hM zoQhx`;&XV+ZQ?yg$3iZegxy$m?McxX4g0UoF$XRph9{GAb->_uWEvqmH9|@{HF#2d z6u1M~Ka854L^k>sHmWS)J71g2b-p%_Z5_f7DKt!^ICq;Z@i=!GwJE+K4z6Y95U#~M zIQh%uk9J&2W;WtOT!P1ZN~}7bgea!T;Ej`UpJ5E?o|N(=TapuUBj*eu9dD+6_%+B8 zM*K}B%MnPnK>KU}W~cVt|13KsK4NzRV{jVPR^{Pg;g`AwmBvia{u>^bh7>#wJG958 zoAJ4od0e_pKXz@ZIw812ng~f@G9sfB>Mm@fF#qPl77Ncf5eFAs6u*e0`(`uQgylQD z?4tN#JO%c#98xlci}0nFtzfA&H+oWYUqRBc1}v8OT!v$}RB}P#%VqNuW$TW8A`dI8r8~)OYa|P|ifk z6i^PtQ{*~d$&5grlkpT#9*I0tLHWIS3Mh|4%2l9zB%Xpg3rLxUQZL6-K-qwl>7e{f zJVmB_H8Ng=&xTwdP&OgYHK4pDo&w5QNVyi2YvU=PoQ;(0P-=ZV1(Zi4#SF^#$5Uj= z#mpGwxhI|i$~nkm0p(@!6j07ZN(m_698Uq|u}GPLQuE>|pqz)4nV@Wsr^uA8%sAvR z$5TLgJo3x}W!Mi>uYz(uQf#1{A5Q`02}rS{RCYWClnapJ0OibhicHzbOhlfvcnT;N zBF}74*2Pmmxd<7k9GH#Lco5e8I+}wznOK(P!tx&^cxu^`?*%N=5<2N1xohxWTtJO?*%7LLY;q9 zszA6kdDiFV;6ywCe(Jzw(I?T)ty!ut>cQX7U=G->HfV~BR>pk^IP?3lSKEfxM-mG@ zY+Z|;P=U(`CeLP6?$| zeWyo+{$e1L9UEMt7qGRy;{Am0_T1;)te z3fs!km2*B4hxe|8*J*n13j8~yHxD-xCcJdRMR7P#C%%g0m)~-Myz_QKy1ih-^P!Ub z<$J7sX5p`o ztCeSF;`?NCQ|`e)5}c&jVO`ne|Fb5k9i=cmq@>Z}KMJr#IS?|~yphs=xSNHhFaNxt+A@^XeJ z(Ia2g6nYuq>sFR~RDzZOsEHq)CvN&JfotZ%o$DU>=X?m=@t2@A3pRjdzzC>9KH?jm zbv|c*&NjjWxhXt6IKzbnF!wy7*t+(y84=La6-0jem4=caw{H{5><#|Cf{hF?Nn!7uJKCUIi20lD2 zh7^qY$&`ojZ9M;^&DG(nREDpKv9Qg}sd+4pxFK7z8*0*5r)pup&T}n%$|-*aa-`Kv zfhWk|nxykJb2jwhd^L;Ou0rp$*XNJq;fX@)ELxan?G)8`7vo!Hho8cfB(l>qP*n#Fe``HdB5lcgOnUImKKVqj$! z<9TcW4;vjuWAT%KkN>X)_S?>Z)fu>lF!)FVxB_kqQK4U zA*`h3;StuRcx+jUz&DH;lhusN% zf)|+BH1|Kn+^01mj@D`zhBK3o0O83PU@t*()T)yj&C{^wrS(vp27MaV!VavHCCIZB zA6iQn@b?JN`wQ0KElB$g`G6eP2;4*&jokq0RvcMT{}<1}!e);m)}r6Af9ne4m~urJO~Ob9E}akO6w_cax4-D463#{zyV75Lx0P}x zXku~ivoXrhEf~A_Ux~~j*eFZ|62s&IY6TAZI zCKP!&$iDuFWqOU{2W_W#3_kXbz;v3G@D!U#cz6OkHY31|oe+QzZP4Sbk8t{u5#auT z);QL2vtRGl0oPF{-({1zsa9ptXQD3B;29HY^g2f^@*@HgQv+;G*y5Tvp*}+RoLcxZ zrn{BXxVmJ_+s_bV%;QN84RucR0^0@_J#>nEs)a{6`sAWSv-4zXp@;0E$v0Aqd*aWK zDC^{&N`c=_O5Y6s6?e*(rVRPU$Q*ZJzbwbNFUE)FNe$-1ZFnZx)~)!aIl*Gi(Oh{I zbL2W!mdDOId-O{x47aYk%vqp^w$cQXZjJQZTAnCQ+lx@u?s zV}1VDBlW6qH+vvAF|aRJ7uc1n3E(*WhA}Eb&v?~&uu;vE;GaDd!U5c*1ZChEFQ139 z^1FIR<1SU6(+KM=#0Zrm>L8MgEtl?7@tSoG+&w6+3)Rf1{{*qv`s+(6Ce-!Zz-o?9Voo^co`yi5! z{Hc4ax6Brwue^aRgcX5_ad(QZN5^}WEi;*D!Fe&*jZ_0~Wwwm9l79vtuIVYrMp#U; z2{vircUUqr;d{17^}?cCddEsZ!by9pH7U9MEGwM8FdZDE89vR^`sOY8#L>Lm_mqce zJF$V{s3b%A;bBy40ecs_kG+Fy#{aYV#r#VCVg4_&9Wi4X>-bgtw)e81WTim=tbYvl zzUMO);8hny_FW)bWB6T}e#Jf5RAq1=dNp=;*1&E7zv<(5lC>+9fDHxDhyN5c0=EeE zYAZ-$zHY6f+9+|pPu1qu6&se|S?A-zBEL~e@NJY5@fqZEx7YAPFAzUK zJi`ghPulnTc?p`c`Pd6>IPdGBqa|B{?Xad*37L=p=UN@XpQON{gN_pDf$!;scXNTU zmTJ~7)$bI4>^kVBbgDTl^EhzJK02WYzckm%%DWrM|2xH>5G#%ekKBOVLXC{@n!aJP z?Vy*7OOJ5+Oa;D1%=9VzTn~7(7dF}qwd~dz(3$e`?&i82TluL77Y|?b{5rY!vU;iC zG{Q692OWSGl5K{$`u_go!=H7%?>`7D5GH(~W>p{32XJ_5RJqhsf9xe~&{V|&-Fg#m zTCo)9ScF&g;CW3h7Zj?r21Q5>3(5CugsLRNQbcv%#0V?g$Z^+s8cA@n7|9=dZUs)d z2R8CtI0Vx=ZD78ZsoSH8k0THL*vGM_&)(_l{y%C_UzSkim7rBuC2KiT0H8txTb;I`iLeS`(GhqUshs1U1i6a zjdoz~g?AzozP(1?E%<^wK3Gw8M?1?_te86IDo24AvZbLw@iF9K2h5e@Wc(^t^(?KL z)Hfr!|1cwY%*c^lOJtm|CGw1%Tr*-|Moy?P&M`VBf^sn^7h45mM);9Puc>II;k-}< z@xKn(o4x~HRn9f=2_)}{U&Z2{Lsh_Ep2nLNfh(Z?qO4)1k)p|8%={r3KR=jym4NO;} zv(2FhDRXWNZXKZdZFgV01mbr3+x0h@>fUOV>0ni@gW2}CCMMjCUBi}_YaJZih#TXt z;#-geTTK;@fZJ27!On%VeJk0#vBpnDUr%}Ul1J8t9+Y!FgPbcJ6_4oMRzhG?5FYMS zE9L!Eyj#v`JW6l&z$WRdU;4DRTPVefQ@tV-ACqYT8j;i>^~Rqt3lU4xs4-kXzax&# zR$5V1q5>GihKMnw$@x=o@jxq=bf1rp-oNx+x!lT}>e;q)RW~?P@*2izjGiNI?o;@g zgjS@V`@Q9(f~9hMrgz`pcpdy067})+@IZB;Qt=jXJqN1s8>F3a53v3|^-FD`YvuC8 zQGNpKofGwX_cZ8c;#B&}pYJ|UT>&e^GXY@U!G0ciI>rLy(2{SOV6(jy_1k*5Rf)04 zwF+qKP1503m8QN?(W21}gX}=3&vX(eAIHC19-a;^h1&Ah?ni;^b700UNhi$pGr39M zQ@sYG$A3k%mt7GZOy0jPv6SRmw+PWfRcKhFQ@(rrJ|{kvwnAol2KHXhV1CjZXPsIN z&28c}XCnP0*uoHI=zZ9uUj!c8X3X^$@Y^lWrCkl4HSlOGM)kf%-ZyqdE2@~C6wRo} z`WWz3`0#zwQmoh-KIIQ9{h{a*@uVQ7i9Qle6o9F}+ zr#45<_aWchMDL8BWViKEGwUBS6v2*#4^NjW@XnbjnYM}*z(p?LUtfarUtlwX22X`2 zLw>_h`3>g2vJA?O#p>t7BjmD*l!_JkjfwK^lF)co?C6zwx5;r_iy<#(UDOeewuw2e z!};}B=nLP#o%b8`3GEFFz_-PgVFHeBp zNqmz%MlJl+NJhS?fyqkUzdvI3?2pVSXLi;RRyDW5`Y62D_^oXHG9$PBviRo+o&DU7 zFL4$twlA>Gg{O`a*zoIOX1`kIE{WD&;P50KJ}VCD-2-lx&AHq@wE``Q>FIkIbq{B7`5!GR3 zo?R=;*v95EZJ!_xT}n8QNoPM|U7Uw|f_t9p=F<5OxpUkMel~wMzmNZl&r;+lY>LH- zwTf!R8O8I84-~vot(>l0rd+SgR(_!DP)f=i)pe?yRjXAms7|UbtIX=~sBzwxvoq5&StDGpMALb_cAh(qygauZQ@f3Ql0WlOO zGdZC`Xy*1uCP8yTlx@%$B0hnFDDwrt_AH!U(jng1`+Va_nb({@Gx=|o4mRn>Rwm)*mZXH?A(A5z??>~y2X_|<-wy!`uixkX680B5CuuJtev$Sb zv?BqOn4|W$ohi_qr=xvEg6voIAKOSR{25y3%oBfYe3iH_{oI);XJ2umls;W<<%Jns zUA*sDqYHKkpThT!P*G@=A8qAvKO6npUhESF>j8OW$3^-_cE9Y;_xs51cBIhAw%hwh zHg7br?&k+~HrDm=CWFpCf&MMj$4_wD?F+0|pl?q{fXc!UMjVY1atJtE>If^YMW7aJ z>{;hXb&m<{Y+T!iN-^l{8c>?}FO;T(((9l!5pgcQIEY^<0s;g3^DRV`0UrfyRE#@O zyqS=ag+M0Bi)bX@mrS632T_M5#-OvyK)v99QQrva18*kKjr+M-+S)< z*GQHy=;0fv{qS>Q!s>@62{Z3ezq;gp^+|HSYL%f`a^x+!U$yY|I%snd zZ@)7_K1hrP9%u#WTNLKdMblcXWph>kPU4fg;Ci_T=4l$7%QS_@fw%3$+cy6p zN*+p>TZBTAdjsh@CLTg8pUrp^#gBQ)b!ecR@Aq=JW|BmP-qM0d6?|Gu+|*Y}jmUhP z1>B|HebTjkpzIQqeXOsAR93~r>liP4C(1qs39dTju28kBcA(TOlv?w9O(`yjo>p8T zYRaLer6{*XmiJejTj_dmpj;lxtu4TrWM}J!!G8?aN?X1j)<6I9tR3RZa$JTj8!^_> zT6vuB1qY3jZR=o@#d->U?VF^v=sDlJcMecxVz^7cyU=yVK#GVMc73gq;|)?z_ScVk zvIjAhs9ij}3Exb3;kypkO#`J*_wI~5F1YMeKUc?ul|V#D;v^*d}AR9MdVW7WI7`_04&AqRTw+hUe)GzMYXLgef+i$=vpr ziu5R-DfdTRYLx%r-```9-=o@?=Rg@mjiR@tQLjK|=;F%op6l_RCzy^4Gy}&thRQQ= zRd2R)XXHs}!{ROJl3Vhh+R-ZO0RDSJ8rt#XzqMloR|xu9p#LQE5n<$Gy--{gH*^ng z;7&IKJng5j_j&+!Vy$?7A3R(w*4y-ZbuuqZvRCGOvgRl7xp(88R`Nfqof|al1c0uNcJY#!QBX0QPcPZ;g(U_Ubea_SMLPvD<`5R`=^4lw16gi;#1Kfo+$#+zsse~ekOMsJnh zw9WDHFI4lbj?MBLKj?vcmE9>V#<@eYf`z51MefZB8(5P1C*e1m$L5Fo=CRk5V>~6U z0SeJ#Ci6m-t9qb5`%s^i1x)>hu#ag0>h%dkw#5E|TC5aKwBp_m`R67)vlsp><0O&f z`jS|UQnkQ0@`V)~ZUb^jDt9x=)%KOE;hJP=z8g`3ywz0d4qznilJ3LYV8(#U-Pu2* z|1N7kf;Be-8T>xn!f3A50(*ZNu#LMg4+O+8xQ{s@?{qgguKUH|atze}YSg3x{SLep zL;UVZ+QIl8ZI@%Xn)OC&3sAEW-5L35XPue4 z0UF>FzH0|^s}TXfD@?Z|LeG}|+H);6@OtSGH_I*X)Qq(ukGxiD86Lh6bXIuLg5y24 zl9yS0ez1kWcx>>KeRf)xYf|30!geMm7=e=^;88*@wBb&?;Be z0R7=IeL{Wjp92zN`%+Gt`KyGD=k9bZAIPmhZd$+46#OC5aEstZls6xCiWgCq*6+h9 zBY(NswRE7|CG7s2kjJ?6MJe8m&AWyPrf}ct#rC$hqStHSBRgW z({PVC1^fMnq}A~EA?igk^>4ch5np-OixVdbV_uPRJT1V`F~cj*fN?+B1?^u3^>D5$ z*E!9rX{lkb)@~tvgw1+WA%nP_@5LyhrM9(DdzG~%xT8^^I}{|kgU${^1lRt#LSE|> zz2TI&GCI{WIFt%x`E6J^kZ{3SGBGf?bP47mE97`KAoWMY7=ewF=e#(hOS5-D=HN-% z91Sca4Tpgp)~E0KdAe3Zu>olesPFq@0V+qwbzFlVjmtn@cD`cYCMEeEt<{9p(4w%4 zO%1nOZZB3_6)z(?*>+}p;&Dj+5VeQNQq;X74Hj?P19u_!UhNu3JL2QEs-53HXdCTiA(iaYFK(G?ZPe1v z_eK}RINOwZRcNJidjuAf#4{y4hx;*u`;nr-4!Kslcx!K)I``YV<{*c@0QS~`hHQ7& zK$5r?G`4n?dxnM13$T{u?baoDXGSkr=WlP5--&&J{KvL(c&7^Xv^3_c<+oAyQU&51Q0w5G0Q9nS=0&5%?R2UPKa1wx9g!*_j&F3A z@S;IiNRr`pQPaDw(d@u)@?1}6`Zdg2nJc{pIK5TOWFYe>$Dy4nXCQ_#voYgJuXN_P zRfhL4W@*sQ+@)o*#+Kqv>{GNB@XD4FM%glhZ-DN1TjXwLYGknBYCe%PZ&*@`nFZc< zJG6HzAj#-vOgf{@`X11d$bM;Gw5^SugcZ@F0IJp1+HZqTkfk)U39)IQS=OJH6a^nk zOZ2Spv2;hlC*t2DX~IY1UWtXDzs{cI;YPpK6qmOJp(j`kKLwI|R3M(k4D1zTAN?fu z3A*ReoF~}`-Se#QwWaxg7J1fSJ&>$*0`krCK~8dHbA!UlAAVPSQ=(B3;6ph{p3`MO zbE*gctIRafR_N#u6MI#H)c{*P$0hL#NhK`8b3UFw!SlU%9*5@>c&@?oSUkUt=XyNn z;Q0;schWQe;wAA_q`zn|$vewo37unPvbpjXvkdmRQg->ZuQP@bE**HRcJYVq>Fz}% z^yv+q;q{uc25Y)CLoW5Wq%vGpK6p}^>zc-?ZdHyVV6ejW2>YN#Y=8Q<;g42ZldU9?ogrLph>7*F6!`C~5>jl0kHSrXFAsx!xcB*h$4oTR2WSkkryv4? z#+m9bis%cNt>(6S^j8~o?- z)?>gnPiS4hnf2RNkLvREmNdQ-Dc2ut)g_kC1S$T8$UNo% zXjc&Jf@;fur2gwVP?Nvj?Sl!kRecDfQ_4;>?H1n+nLW+~kA_ zI`}ZJ?^yntxlOU8Zsw}e#K2pSRBHo}ombRCn{T$BgDrWEwm+9*=_E*OE(;RI0vJ&p<6Lt@F`9+0&2-TjQ+VR^IJbRDRoN1_)EcOWqK5Qn5cc& zJ6nDtnoaQbvSU3KO5FMzH&69X^qc#0^8 z?r-oXcWsKO{JW!_z4g(~&i`srtIfj?N=nZ`NsU+>33=ZJ$5T}7^NeXBGpCCUV-2ue zF5jxqVoeB&09%wgNtqW8-V~}EsmKw5{;09mSw?)%7K|*_j#fo^l@e=m-V~*EheiMW zpVFsD+~2`zJRY{Nwdo8npcIZn(ya{ka4|8aFzIEicUmtm zV=vwUIl+y%|DVM^oCRJ_11wS+%Vc|kdvD_{wMq6pwMdasrTDs!I>W0F_06z7+S>X- zYd81wZyMbvu!WC_Vh=olaV}uTxDX4IVsNVH8-jp@)D@>|B+`kMa5uW3?Xo zg)ea@-30ynDDd!aX9-#fcinj)O3wySg+2EVf(D>cjT_x%_b2|h}|g)AoS zVS?+eh^BzqnUjr^;SN_v`YN5!Z8%^g?Ha$mL;PzrhvLG+bE_INJ2{x`xXH^3YJK4I**DZh)af1Rt2)HTqi?~Uo7wsM zd(3SU_0R<&Jr(IH;mSYMKe!`NH3MHPn#*TaFnZeevDbr7 zu5DnluXkQg=aX=~6T3CIBOfrIACi)8rN}q)rP1YQ#AvM8s(@DijQC@WgKr`EwUFmX z3Uf@->l1W5Jd35V4+ds9XWD?;BjnzKTOJ|(mtE%nbo%-28w!M;o9U43k?Lm`t6&3*X7fd%(&CXa|~ru7~#>3_zM5cPzTSunw3Uy zJ8wwrWX1UP9XG$Gp*39{moL(}dKf$jowaY_n|!`DqW>SjhZPj^9U3Ul1%e93@w0NrUJ1HGz?*8#+%cuLz`^Hn*|D2Fn9jarW6Ci^scT;!m;d(sg>qSTd5? zsi9n$L+7qr(u(8FA`S|MmY;f7+AI ziJPMvp&3?$U{C4QG{W!4lQcUf-X-U(ws1c%M*J=?S%Yn5QWkT;KeZ7EwB9`y-ko^- zhdYPgwQCkTNjdJH*rzg&rJ#?=Zk_f4TKBY`Y3hr51s7uo5Wz(pKXfTMFykx_wvVM#QUp+I~;$S-6WpqT8F25L0ci)_|tX2(fRlF z;b5^nq4xF8U)FCt{!HgD_hV&-W0N%5K$x#>u*~?*)$z*%Z$`ydbu?w^F8`H|lv|dE zIkl_gA6G8TGzQ+aus^(IO(O1#Vo%^kXN2EOz7zI=c!RU|T}$iPVW9&v)6XzQ6JhAU z5=Y}6?Xw0+> z&gjZHy3X!!8#{cwv%EP(v++UOgN`*W$kY1nh*g+zZ%0AozS;!BQ#O2Z4q`_+?IB> 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
I71p(h}H9j%_pxtH{H79sv6 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�=woc)c{ z@z8E)a_J52u3WgpppN^kffi9K6X1PDt}Rm%_yHUyTw27`FhwK)(>V9GYQ@1podS$0rLY4nG37-o>pg9lc4 zc7Ig9XYA!v7*_hn;?FSLtD{H-VR_v{K`iP^R0 zp20?7=U-@x_`*fSX2Yq{JPq##>6-ZIZj2Cp!3d^ql~_iiAf*+N4Ss^WSbC-fqZ{Kb zcTJ92Ph8TntVmLJ-|6D13Q{mp6GgFq(>1Hi0$QvRtYX4r6I*sOq!d<$zb}L&&&J9W z`HE=e@}~ugDRm*gVD_kaP2W@@4pY1v?ZZIWMnq*h61@4Bz=MoHGi$^f@DaFVCRj1P zVY)CvhmJ$&Ymh@dvhJC!Craln&n``>7d>!3V1GD_8#^LsmtvOuqbLN@KUOfiPI zneAi-h%5d@+w(5wn~zJMNL*1*edU}$CjWWkY*uF>tM8!t6kAAFG)1%!%@|S*;YBxw zPCLkkVf+Y=tuTwQ;OwBekU~hBigp4g zP=KS~OB9|WM&O$={93EC0vu(MDk9GjNML!m8}&YHtUMngw25%|Vu(>e z=c%zAUjY-ig-XDNk@GV`Y<~#khaZe(?gCRqoV#2z!5KogZ!QYt9z55(>yS>27^XXB z;I~VXLN#!2DTgDE8K7%qKj8Jt*-IyG6H=DEeGf4-DsMdJx0Gs2aI*(Ac3Wj-f6`AeXM{6I2rbrmMuX75OzUu95l&lGa(N|uDuL8a*HGeX1IdYFc2D6Usb+N+Kc z^9dui8lf01L|DOBtvD!`cU~bbRsi?OV*siln=(+7xcAdrC0o0=B8av5DD+3aZLqGx$ znG>?zTdU4RXk%lA+6EwVI=B4N0fvUCx82~tOl5^B`z1ptaHl}c7kYvvNePxySvnKr zVFu%dRNLb(SP*F!0M-WbMxbbk4kqMj<-+r_BRr9ulz8)rC864OX%*l8C`U= zP|!vp9%_95)Gl4N4#AQJpI6p`vA6`qbbL;wb1)S{)u+-kP^KtQjC|MB?h_#pbVSYb zoU&Hc5ls_97%r5DV2$g^D!BDO_Yf3DAn|Z0a|oHxfJouIj3TiN%(vGQmOWtl3>9H0 zBG8x)utYTB7tfJ@Fy=H%8l%I*S9GL_P`Mxqrxg|{QuV#aB2vod#E?`)WT7(EPCN7j z#i4%a=Tb41@Q693fR8v(J+Pmb$+HP|q@k8>92&FZtofoTu}`@}C$(91Gw>rUAG23a zF%O9~Bwb00<{?{}LoAK6l;+3BK;3L{(@Bf8_q@qZ_=~HEk4si5^SE-4 zHUm4e!#-@;+kwxh&dxDSHsejxI}X~w{wr}*Z4aEocYMIkrc5|Nz=#^ed9 z(rSGrwNs)7;w^8zlkm|(o0a^xYec3e8q7SMuV!&1dDYm;D8pc*Cblv~w{g2nUrC`y z)07O%9CIdJiA8+O2*cc7U1dI7V{2zG@dJ8`z6GCw(uMM92A^iN7S@QpY{D5Fd46YP zepa+-wOo4GwbPY|OSytnc9r-!%)MpjnD9W>m<%$>h=)|g%3_do=9NlRzU}oHSt&Q< zN8P+_H%{k3rm+h+TIEQ`Rt1TXc$&&dWDPbOqsSeZI2uGMb$E&&cm0=>vUq?!(GA|K#ooQ8W?QEMS!QDaJ4s87t zc$#pB)zx&8WWJ>mVI;8tV$F3mP||mpLfe$GcvX-!Fc73vH!4JMYae%;-DvKPZfQm* zkaS2x3k635<$H`;Lg)a49Ru_j5Kzrfi=HJ>Fb+-spHKu>qIhIZ-*aMmLykWD(R6zc z?TtuGrgC&IfAqTMf|Ag+2vBF#(`Pc9eOkLX>e5uJHglNH3(CqP+7E5Oc;U>_;f3Yt zL-7L@+Xs@wFM)+haa*mL2H3Sy;rt-L4x|liNDSD#EkLcXnulQZg1>y`&Vd0MfCi&X zCk~j zp#6y!EI%mmj_lncOqV@cP^m^NbIlXQVuTG7I}(Y3gbsLugNc?iq9guc<}6Qz3<2nj z`_nmj3&OJaH7??4LgVSox~3Hv*;$u})o0T%D4a_&>X?vGQ{2>sXu8{&TmJINs(wP= z<*j!Rz1bvrhOC5>%L*5gyZ~qiqiPhaEB}eQM}?#O z8jMl9t_Z^=vmH5_P}ocq0O4r8yS;w8c^&!O`Ppq99ppikes0KTm6%g= z{`{BCHk^KgKs)b>X!9D!%iL<6EJH19${kax$n&0*FCVk-e5`GG+t;;|P-595dypfR zncOroa)6ZhmW*w27=1d2xKU#shu=+au&Tw-y^{B~gNGn*i#n?WT$wYW*TKy6K!s`Ξ+A69`379P5X(NS#dnChExRAt+jvsdl>OS(!5 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�>Cm-v6KK?&%RW;d}Rf?|tukucb5HU0q#u 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 M#F@ufK>x7+34D(%c>n+a literal 0 HcmV?d00001 diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 045357b64..5efab1510 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -803,7 +803,7 @@ uint8_t convertMultiProtocol(uint8_t moduleIdx, uint8_t type) if (type == MODULE_SUBTYPE_MULTI_FRSKY) { int subtype = g_model.moduleData[moduleIdx].subType; - if (subtype == MM_RF_FRSKY_SUBTYPE_D8) { + if (subtype == MM_RF_FRSKY_SUBTYPE_D8 || subtype == MM_RF_FRSKY_SUBTYPE_D8_CLONED) { //D8 type = 3; } @@ -831,8 +831,8 @@ uint8_t convertMultiProtocol(uint8_t moduleIdx, uint8_t type) const char STR_SUBTYPE_FLYSKY[] = "\004""Std\0""V9x9""V6x6""V912""CX20"; const char STR_SUBTYPE_HUBSAN[] = "\004""H107""H301""H501"; -const char STR_SUBTYPE_FRSKY[] = "\007""D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"; -const char STR_SUBTYPE_FRSKYX2[] = "\007""D16\0 ""D16 8ch""LBT(EU)""LBT 8ch"; +const char STR_SUBTYPE_FRSKY[] = "\011""D16\0 ""D8\0 ""D16 8ch\0 ""V8\0 ""LBT(EU)\0 ""LBT 8ch\0 ""D8Cloned\0""D16Cloned"; +const char STR_SUBTYPE_FRSKYX2[] = "\011""D16\0 ""D16 8ch\0 ""LBT(EU)\0 ""LBT 8ch\0 ""D16Cloned"; 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"; @@ -883,7 +883,7 @@ const mm_protocol_definition multi_protocols[] = { // Protocol as defined in pulses\modules_constants.h, number of sub_protocols - 1, Failsafe supported, Disable channel mapping supported, Subtype string, Option type {MODULE_SUBTYPE_MULTI_FLYSKY, 4, false, true, STR_SUBTYPE_FLYSKY, nullptr}, {MODULE_SUBTYPE_MULTI_HUBSAN, 2, false, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, - {MODULE_SUBTYPE_MULTI_FRSKY, 5, false, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKY, 7, false, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HISKY, 1, false, true, STR_SUBTYPE_HISKY, nullptr}, {MODULE_SUBTYPE_MULTI_V2X2, 1, false, false, STR_SUBTYPE_V2X2, nullptr}, {MODULE_SUBTYPE_MULTI_DSM2, 3, false, true, STR_SUBTYPE_DSM, STR_MULTI_MAX_THROW}, @@ -924,7 +924,7 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, false, STR_SUBTYPE_ESKY150, nullptr}, {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_FRSKYX2, 3, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKYX2, 4, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, {MM_RF_CUSTOM_SELECTED, 7, true, true, NO_SUBTYPE, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index efbcd1b3d..d890e38ab 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -182,7 +182,9 @@ enum MMRFrskySubtypes { MM_RF_FRSKY_SUBTYPE_D16_8CH, MM_RF_FRSKY_SUBTYPE_V8, MM_RF_FRSKY_SUBTYPE_D16_LBT, - MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH + MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH, + MM_RF_FRSKY_SUBTYPE_D8_CLONED, + MM_RF_FRSKY_SUBTYPE_D16_CLONED }; enum ModuleSubtypeDSM2 { diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 5327938d2..244e58a79 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -58,7 +58,7 @@ inline uint8_t getMaxMultiSubtype(uint8_t moduleIdx) const mm_protocol_definition *pdef = getMultiProtocolDefinition(g_model.moduleData[moduleIdx].getMultiProtocol()); if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) { - return 5; + return 7; } if (g_model.moduleData[moduleIdx].getMultiProtocol() > MODULE_SUBTYPE_MULTI_LAST) { diff --git a/radio/src/pulses/multi.cpp b/radio/src/pulses/multi.cpp index 936da0948..3d0402da4 100644 --- a/radio/src/pulses/multi.cpp +++ b/radio/src/pulses/multi.cpp @@ -295,11 +295,18 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) //D8 type = 3; subtype = 0; - } else if (subtype == MM_RF_FRSKY_SUBTYPE_V8) { + } + else if (subtype == MM_RF_FRSKY_SUBTYPE_D8_CLONED) { + //D8 + type = 3; + subtype = 1; + } + else if (subtype == MM_RF_FRSKY_SUBTYPE_V8) { //V8 type = 25; subtype = 0; - } else { + } + else { type = 15; if (subtype == MM_RF_FRSKY_SUBTYPE_D16_8CH) // D16 8ch subtype = 1; @@ -307,8 +314,9 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) subtype = 0; // D16 else if (subtype == MM_RF_FRSKY_SUBTYPE_D16_LBT) subtype = 2; - else - subtype = 3; // MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH + else if (subtype == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH) + subtype = 3; + else subtype = 4; } } diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index 738237bfc..b86347547 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -555,7 +555,7 @@ void MultiModuleStatus::getStatusString(char * statusText) const return; } - if (major <= 1 && minor <= 3 && revision <= 0 && patch <= 78 && SLOW_BLINK_ON_PHASE) { + if (major <= 1 && minor <= 3 && revision <= 0 && patch < 87 && SLOW_BLINK_ON_PHASE) { strcpy(statusText, STR_MODULE_UPGRADE); } else { diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 4252eb9a8..c74057c78 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -108,7 +108,7 @@ void frskyDSetDefault(int index, uint16_t id); extern uint8_t telemetryProtocol; #if defined (MULTIMODULE) - #define IS_D16_MULTI(module) (((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH)) \ + #define IS_D16_MULTI(module) (((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_CLONED)) \ || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX2)) #define IS_HOTT_MULTI(module) (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT) #if defined(HARDWARE_INTERNAL_MODULE) From ccb159ddc9c65879987c30915746fdca4097f860 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 13 Apr 2020 20:55:54 +0200 Subject: [PATCH 057/199] Avoid duplicate enter handling (#7518) --- radio/src/gui/128x64/view_channels.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/radio/src/gui/128x64/view_channels.cpp b/radio/src/gui/128x64/view_channels.cpp index 2e3ed0a40..ccd8fc9b3 100644 --- a/radio/src/gui/128x64/view_channels.cpp +++ b/radio/src/gui/128x64/view_channels.cpp @@ -128,10 +128,6 @@ void menuChannelsView(event_t event) case EVT_KEY_PREVIOUS_PAGE: g_eeGeneral.view = (g_eeGeneral.view + (4 * ALTERNATE_VIEW) - ALTERNATE_VIEW) % (4 * ALTERNATE_VIEW); break; - - case EVT_KEY_FIRST(KEY_ENTER): - reusableBuffer.viewChannels.mixersView = !reusableBuffer.viewChannels.mixersView; - break; } menuChannelsViewCommon(event); From 2c342d84132b9e79e14f35bb47ec9275ee53ef7e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 13 Apr 2020 22:26:32 +0200 Subject: [PATCH 058/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 2f1fbc891..61fde21ee 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1714,3 +1714,4 @@ James Jewitt Daniel Ferreira Michael Charlston Leopoldo Cicero +Tom Van Driel From dbee58bb054d35f256d7b6c26c7a6760ceb302f0 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 14 Apr 2020 08:34:19 +0200 Subject: [PATCH 059/199] Cosmetics --- radio/src/pulses/multi.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/pulses/multi.cpp b/radio/src/pulses/multi.cpp index 3d0402da4..ca7a77480 100644 --- a/radio/src/pulses/multi.cpp +++ b/radio/src/pulses/multi.cpp @@ -316,7 +316,8 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) subtype = 2; else if (subtype == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH) subtype = 3; - else subtype = 4; + else + subtype = 4; } } From e5d31e9df3533d38faba2ff664a74a531b1e155a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 15 Apr 2020 09:57:00 +0200 Subject: [PATCH 060/199] Update CREDITS.txt --- CREDITS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CREDITS.txt b/CREDITS.txt index 61fde21ee..128dde40f 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1715,3 +1715,5 @@ Daniel Ferreira Michael Charlston Leopoldo Cicero Tom Van Driel +Karl Vetter +Johannes Janssen From 70ad47574054595f75f60ec1c1b1be66385fd565 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 17 Apr 2020 17:46:41 +0200 Subject: [PATCH 061/199] Fix #7512 --- radio/src/translations/es.h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 045855d01..a62532e1a 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1161,7 +1161,7 @@ #define TR_SETUP_WIDGETS "Config. widgets" #define TR_USER_INTERFACE "Interfaz" #define TR_THEME "Tema" -#define TR_SETUP "Configiracion" +#define TR_SETUP "Configuracion" #define TR_MAINVIEWX "Vista pral. X" #define TR_LAYOUT "Diseño" #define TR_ADDMAINVIEW "Añadir vista pral." From 8da4cb2506dea6302dfe89d7deb6cc861dc893d1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 18 Apr 2020 08:46:34 +0200 Subject: [PATCH 062/199] Fix #7490 --- radio/src/translations/it.h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 11f4c411c..522b22477 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -859,7 +859,7 @@ #define TR_INTERNAL_MODULE TR("Modulo int.", "Modulo interno") #define TR_EXTERNAL_MODULE TR("Modulo est.", "Modulo esterno") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX richiede aggiornamento" -#define TR_TELEMETRY_DISABLED "Telem. disabilitata" +#define TR_TELEMETRY_DISABLED TR("Telem. off", ""Telem. disabilitata") #define TR_MORE_OPTIONS_AVAILABLE "Altre opzioni assenti" #define TR_NO_MODULE_INFORMATION "Nessuna info del modulo" #define TR_EXTERNALRF "Modulo esterno" From f80ffce6b1ba0ed258d212d1b94d6b5777a60315 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 19 Apr 2020 13:09:44 +0200 Subject: [PATCH 063/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 128dde40f..7886cfb81 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1717,3 +1717,4 @@ Leopoldo Cicero Tom Van Driel Karl Vetter Johannes Janssen +François Blondé From e1a0641c2a077e43bc79f421f4b44695adc9ba10 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 20 Apr 2020 12:48:29 +0200 Subject: [PATCH 064/199] Fix typo --- radio/src/translations/it.h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 522b22477..ac873883b 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -859,7 +859,7 @@ #define TR_INTERNAL_MODULE TR("Modulo int.", "Modulo interno") #define TR_EXTERNAL_MODULE TR("Modulo est.", "Modulo esterno") #define TR_OPENTX_UPGRADE_REQUIRED "OpenTX richiede aggiornamento" -#define TR_TELEMETRY_DISABLED TR("Telem. off", ""Telem. disabilitata") +#define TR_TELEMETRY_DISABLED TR("Telem. off", "Telem. disabilitata") #define TR_MORE_OPTIONS_AVAILABLE "Altre opzioni assenti" #define TR_NO_MODULE_INFORMATION "Nessuna info del modulo" #define TR_EXTERNALRF "Modulo esterno" From 9a20a8780bc0896b7389498a889363ddffcdff90 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 20 Apr 2020 13:01:11 +0200 Subject: [PATCH 065/199] Init usb charger detect --- radio/src/gui/480x272/topbar.cpp | 2 +- radio/src/targets/horus/board.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/topbar.cpp b/radio/src/gui/480x272/topbar.cpp index f631f7984..f14d9a237 100644 --- a/radio/src/gui/480x272/topbar.cpp +++ b/radio/src/gui/480x272/topbar.cpp @@ -91,7 +91,7 @@ void drawTopBar() /* Tx battery */ uint8_t bars = GET_TXBATT_BARS(5); #if defined(USB_CHARGER) - if(usbChargerLed() && BLINK_ON_PHASE) + if (usbChargerLed() && BLINK_ON_PHASE) lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR); else { #endif diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index d88350ba5..2310c296b 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -191,6 +191,10 @@ void boardInit() ledInit(); +#if defined(USB_CHARGER) + usbChargerInit(); +#endif + #if HAS_SPORT_UPDATE_CONNECTOR() sportUpdateInit(); #endif From 368adfb422be6a4e804e91092bd31d98cabfde70 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 20 Apr 2020 13:04:01 +0200 Subject: [PATCH 066/199] Fix left horizontal trim --- radio/src/targets/horus/hal.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index bbe1235b0..9e4da20b8 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -184,9 +184,9 @@ #elif defined(PCBX10) #if defined(RADIO_TX16S) #define TRIMS_GPIO_REG_LHL GPIOA->IDR - #define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PA.06 + #define TRIMS_GPIO_PIN_LHL GPIO_Pin_6 // PA.06 #define TRIMS_GPIO_REG_LHR GPIOC->IDR - #define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PC.04 + #define TRIMS_GPIO_PIN_LHR GPIO_Pin_4 // PC.04 #else #define TRIMS_GPIO_REG_LHL GPIOB->IDR #define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PB.08 @@ -234,9 +234,9 @@ #define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RSD) #elif defined(PCBX10) #if defined(RADIO_TX16S) - #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13) + #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13) #else - #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9) + #define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9) #endif #define KEYS_GPIOD_PINS (GPIO_Pin_11 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_13) #define KEYS_GPIOE_PINS (GPIO_Pin_3) From 7b81f6f9717ab8457528afbdc3b2515ee1c47ff7 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 20 Apr 2020 13:29:30 +0200 Subject: [PATCH 067/199] More init fixes --- radio/src/targets/horus/hal.h | 4 ++-- radio/src/targets/horus/keys_driver.cpp | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) mode change 100644 => 100755 radio/src/targets/horus/keys_driver.cpp diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 9e4da20b8..b87f401fd 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -243,8 +243,8 @@ #define KEYS_GPIOG_PINS (SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | TRIMS_GPIO_PIN_LVD) #if defined(RADIO_TX16S) #define KEYS_GPIOA_PINS (GPIO_Pin_6) - #define KEYS_GPIOC_PINS (GPIO_Pin_4) - #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) + #define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_13) + #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) #else #define KEYS_GPIOH_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) #endif diff --git a/radio/src/targets/horus/keys_driver.cpp b/radio/src/targets/horus/keys_driver.cpp old mode 100644 new mode 100755 index 0b02a6a03..7433ee58f --- a/radio/src/targets/horus/keys_driver.cpp +++ b/radio/src/targets/horus/keys_driver.cpp @@ -204,16 +204,39 @@ void keysInit() GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; +#if defined(KEYS_GPIOA_PINS) + INIT_KEYS_PINS(GPIOA); +#endif + +#if defined(KEYS_GPIOB_PINS) INIT_KEYS_PINS(GPIOB); +#endif #if defined(KEYS_GPIOC_PINS) INIT_KEYS_PINS(GPIOC); #endif +#if defined(KEYS_GPIOD_PINS) INIT_KEYS_PINS(GPIOD); +#endif + +#if defined(KEYS_GPIOE_PINS) INIT_KEYS_PINS(GPIOE); +#endif + +#if defined(KEYS_GPIOG_PINS) INIT_KEYS_PINS(GPIOG); +#endif + +#if defined(KEYS_GPIOH_PINS) INIT_KEYS_PINS(GPIOH); +#endif + +#if defined(KEYS_GPIOI_PINS) INIT_KEYS_PINS(GPIOI); +#endif + +#if defined(KEYS_GPIOJ_PINS) INIT_KEYS_PINS(GPIOJ); +#endif } From 9dbb5226c0746ba5d744b196f3e000dbb21d28b7 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 20 Apr 2020 13:42:38 +0200 Subject: [PATCH 068/199] Fix stick directions --- radio/src/targets/common/arm/stm32/adc_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/common/arm/stm32/adc_driver.cpp b/radio/src/targets/common/arm/stm32/adc_driver.cpp index 3972ab86c..6360b9676 100644 --- a/radio/src/targets/common/arm/stm32/adc_driver.cpp +++ b/radio/src/targets/common/arm/stm32/adc_driver.cpp @@ -25,7 +25,7 @@ #elif defined(RADIO_T16) const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1}; #elif defined(RADIO_TX16S) - const int8_t adcDirection[NUM_ANALOGS] = {-1,1,-1,1, 1,1,1, -1,1, -1,1}; + const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1}; #elif defined(PCBX10) const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, -1,1,-1, 1,1, 1, -1}; #elif defined(PCBX9E) From 97a2da52641c435f216e6973885e6c5ad4988d15 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 20 Apr 2020 13:48:25 +0200 Subject: [PATCH 069/199] Improve charger detection --- radio/src/targets/horus/hal.h | 1 + radio/src/targets/horus/usb_charger_driver.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index b87f401fd..636e6c9e3 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -339,6 +339,7 @@ #define USB_CHARGER_RCC_AHB1Periph RCC_AHB1Periph_GPIOG #define USB_CHARGER_GPIO GPIOG #define USB_CHARGER_GPIO_PIN GPIO_Pin_11 // PG.11 +#define USB_USBDet_GPIO_PIN GPIO_Pin_13 // PG.13 #else #define USB_CHARGER_RCC_AHB1Periph 0 #endif diff --git a/radio/src/targets/horus/usb_charger_driver.cpp b/radio/src/targets/horus/usb_charger_driver.cpp index 3ba915318..400db6467 100644 --- a/radio/src/targets/horus/usb_charger_driver.cpp +++ b/radio/src/targets/horus/usb_charger_driver.cpp @@ -33,6 +33,6 @@ void usbChargerInit() bool usbChargerLed() { - return GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_CHARGER_GPIO_PIN) == Bit_RESET; + return GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_USBDet_GPIO_PIN) == 0 ? 0 : GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_CHARGER_GPIO_PIN) == Bit_RESET; } From c8f1ff74c1099d918872cfd771559eb83571d76a Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 20 Apr 2020 13:50:22 +0200 Subject: [PATCH 070/199] Improve charger detection --- radio/src/targets/horus/usb_charger_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/horus/usb_charger_driver.cpp b/radio/src/targets/horus/usb_charger_driver.cpp index 400db6467..be27276f0 100644 --- a/radio/src/targets/horus/usb_charger_driver.cpp +++ b/radio/src/targets/horus/usb_charger_driver.cpp @@ -23,7 +23,7 @@ void usbChargerInit() { GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = USB_CHARGER_RCC_AHB1Periph; + GPIO_InitStructure.GPIO_Pin = USB_CHARGER_GPIO_PIN | USB_USBDet_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; From 68584a7262e2a941f6eb04184fb786d21da1da60 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 20 Apr 2020 14:26:57 +0200 Subject: [PATCH 071/199] No extra switches on TX16S --- radio/src/targets/horus/hal.h | 7 +++++-- radio/src/targets/horus/keys_driver.cpp | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 636e6c9e3..14d2d27ed 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -131,7 +131,10 @@ #define SWITCHES_GPIO_REG_H GPIOG->IDR #define SWITCHES_GPIO_PIN_H GPIO_Pin_7 // PG.07 -#if defined(PCBX10) +#if defined(RADIO_TX16S) + #define STORAGE_SWITCH_I + #define STORAGE_SWITCH_J +#elif defined(PCBX10) // Gimbal switch left #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I @@ -244,7 +247,7 @@ #if defined(RADIO_TX16S) #define KEYS_GPIOA_PINS (GPIO_Pin_6) #define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_13) - #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) + #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12) #else #define KEYS_GPIOH_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) #endif diff --git a/radio/src/targets/horus/keys_driver.cpp b/radio/src/targets/horus/keys_driver.cpp index 7433ee58f..b19b406ae 100755 --- a/radio/src/targets/horus/keys_driver.cpp +++ b/radio/src/targets/horus/keys_driver.cpp @@ -184,8 +184,10 @@ uint32_t switchState(uint8_t index) ADD_2POS_CASE(F); ADD_3POS_CASE(G, 6); ADD_2POS_CASE(H); +#if !defined(RADIO_TX16S) ADD_2POS_CASE(I); ADD_2POS_CASE(J); +#endif #endif default: break; From c2ab1d96f3844650594ee056dcc5e8fe9c20065a Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 20 Apr 2020 14:35:13 +0200 Subject: [PATCH 072/199] Revert "No extra switches on TX16S" This reverts commit 68584a7262e2a941f6eb04184fb786d21da1da60. --- radio/src/targets/horus/hal.h | 7 ++----- radio/src/targets/horus/keys_driver.cpp | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 14d2d27ed..636e6c9e3 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -131,10 +131,7 @@ #define SWITCHES_GPIO_REG_H GPIOG->IDR #define SWITCHES_GPIO_PIN_H GPIO_Pin_7 // PG.07 -#if defined(RADIO_TX16S) - #define STORAGE_SWITCH_I - #define STORAGE_SWITCH_J -#elif defined(PCBX10) +#if defined(PCBX10) // Gimbal switch left #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I @@ -247,7 +244,7 @@ #if defined(RADIO_TX16S) #define KEYS_GPIOA_PINS (GPIO_Pin_6) #define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_13) - #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12) + #define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) #else #define KEYS_GPIOH_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15) #endif diff --git a/radio/src/targets/horus/keys_driver.cpp b/radio/src/targets/horus/keys_driver.cpp index b19b406ae..7433ee58f 100755 --- a/radio/src/targets/horus/keys_driver.cpp +++ b/radio/src/targets/horus/keys_driver.cpp @@ -184,10 +184,8 @@ uint32_t switchState(uint8_t index) ADD_2POS_CASE(F); ADD_3POS_CASE(G, 6); ADD_2POS_CASE(H); -#if !defined(RADIO_TX16S) ADD_2POS_CASE(I); ADD_2POS_CASE(J); -#endif #endif default: break; From bfec17e806742af4a9ac2bb58714e93a3931d31d Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Tue, 21 Apr 2020 11:11:56 +0100 Subject: [PATCH 073/199] Spanish translation (#7530) --- radio/src/translations/es.h.txt | 320 +++++++++++++++----------------- 1 file changed, 151 insertions(+), 169 deletions(-) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index a62532e1a..73bbf0b16 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -19,7 +19,7 @@ * */ -// ES translations author: Jose Moreno +// ES translations authors: Jose Moreno , Daniel GeA /* * !!!!! DO NOT EDIT es.h - EDIT es.h.txt INSTEAD !!!!!!! @@ -49,11 +49,11 @@ #define LEN_MMMINV "\003" #define TR_MMMINV "---""INV" -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo " +#define LEN_VBEEPMODE "\010" +#define TR_VBEEPMODE "Silencio""Alarma\0 ""No tecla""Todo\0 " -#define LEN_VBLMODE "\005" -#define TR_VBLMODE "OFF\0 ""Keys\0""Stks\0""Ambos""ON\0" +#define LEN_VBLMODE "\006" +#define TR_VBLMODE "OFF\0 ""Teclas""Sticks""Ambos\0""ON\0 " #define LEN_TRNMODE "\003" #define TR_TRNMODE "OFF""+=\0"":=" @@ -68,8 +68,8 @@ #define TR_AUX_SERIAL_MODES "OFF\0 ""Telem Mirror\0""Telemetria\0 ""Entrenador SBUS""LUA\0 " #endif -#define LEN_SWTYPES "\006" -#define TR_SWTYPES "Nada\0 ""Palanc""2POS\0 ""3POS\0" +#define LEN_SWTYPES "\007" +#define TR_SWTYPES "Nada\0 ""Palanca""2POS\0 ""3POS\0 " #define LEN_POTTYPES TR("\013", "\017") #define TR_POTTYPES TR("Nada\0 ""Pot con fij""Multipos\0 ""Pot\0 ", "Nada\0 ""Pot con fijador""Switch multipos""Pot\0 ") @@ -86,11 +86,11 @@ #define LEN_COUNTRYCODES TR("\002", "\007") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0") -#define LEN_USBMODES TR("\006", "\010") -#define TR_USBMODES TR("Pregun""Joyst\0""SDCard""Serie\0", "Pregunta""Joystick""SDCard\0 ""Serie\0 ") +#define LEN_USBMODES "\010" +#define TR_USBMODES "Pregunta""Joystick""SDCard\0 ""Serie\0 " -#define LEN_JACKMODES "\007" -#define TR_JACKMODES "Pregunt""Audio\0 ""Entrena" +#define LEN_JACKMODES "\010" +#define TR_JACKMODES "Pregunta""Audio\0 ""Entrena." #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetr." @@ -98,13 +98,13 @@ #define TR_MULTI_CUSTOM "Custom" #define LEN_VTRIMINC TR("\006", "\013") -#define TR_VTRIMINC TR("Expo ""ExFino""Fino ""Medio ""Grueso", "Exponencial""Extra Fino ""Fino ""Medio ""Grueso ") +#define TR_VTRIMINC TR("Expo\0 ""ExFino""Fino\0 ""Medio\0""Grueso", "Exponencial""Extra fino\0""Fino\0 ""Medio\0 ""Grueso\0 ") -#define LEN_VDISPLAYTRIMS "\006" -#define TR_VDISPLAYTRIMS "No\0 ""Cambiar""Si\0 " +#define LEN_VDISPLAYTRIMS "\007" +#define TR_VDISPLAYTRIMS "No\0 ""Cambiar""Si\0 " -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "SilencBeeps\0Voz\0 Haptic" +#define LEN_VBEEPCOUNTDOWN "\010" +#define TR_VBEEPCOUNTDOWN "Silencio""Beeps\0 ""Voz\0 ""Haptic\0 " #define LEN_VVARIOCENTER "\010" #define TR_VVARIOCENTER "Tono\0 ""Silencio" @@ -143,21 +143,21 @@ #define LEN_VMIXTRIMS "\003" #if defined(PCBHORUS) - #define TR_VMIXTRIMS "OFF""ON\0""Dir""Ele""Ace""Ale""T5\0""T6\0" + #define TR_VMIXTRIMS "OFF""ON\0""Rud""Ele""Thr""Ail""T5\0""T6\0" #else - #define TR_VMIXTRIMS "OFF""ON\0""Dir""Ele""Ace""Ale" + #define TR_VMIXTRIMS "OFF""ON\0""Rud""Ele""Thr""Ail" #endif -#if defined(PCBTARANIS) +#if LCD_W >= 212 #define TR_CSWTIMER "Timer" - #define TR_CSWSTICKY "Stcky" - #define TR_CSWRANGE "Range" - #define TR_CSWSTAY "Edge\0" + #define TR_CSWSTICKY "Pega\0" + #define TR_CSWRANGE "Rango" + #define TR_CSWSTAY "Borde" #else #define TR_CSWTIMER "Tim\0 " - #define TR_CSWSTICKY "Glue\0" - #define TR_CSWRANGE "Rnge\0" - #define TR_CSWSTAY "Edge\0" + #define TR_CSWSTICKY "Pega\0" + #define TR_CSWRANGE "Rngo\0" + #define TR_CSWSTAY "Bord\0" #endif #define TR_CSWEQUAL "a=x\0 " @@ -174,7 +174,7 @@ #endif #if defined(AUDIO) - #define TR_SOUND "Oir Sonido" + #define TR_SOUND "Oir sonido" #else #define TR_SOUND "Beep\0 " #endif @@ -234,57 +234,39 @@ #define TR_SF_SCREENSHOT "Captura" #define TR_SF_RESERVE "[reserv.]\0" -#define TR_VFSWFUNC TR_SF_SAFETY "Entrena.\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volumen\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 "Luz fondo\0" TR_SF_SCREENSHOT TR_SF_TEST - -#define LEN_VFSWRESET TR("\004", "\011") +#define TR_VFSWFUNC TR_SF_SAFETY "Entrenador""Inst. Trim""Reset\0 ""Ajuste \0 " TR_ADJUST_GVAR "Volumen\0 " "Failsafe\0 " "CheckRango" "Enl.Modulo" 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 "Luz Fondo\0" TR_SF_SCREENSHOT TR_SF_TEST +#define LEN_VFSWRESET TR("\004", "\012") #define TR_FSW_RESET_TELEM TR("Telm", "Telemetria") -#if defined(PCBTARANIS) +#if LCD_W >= 212 #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #else #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 "Todo" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Todo\0 " TR_FSW_RESET_TELEM) #define LEN_FUNCSOUNDS TR("\004", "\006") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Avs1""Avs2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Aviso1""Aviso2""Cheep ""Ratata""Tick ""Sirena""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define LEN_VTELEMCHNS "\004" - #define TR_TELEM_RESERVE TR("[--]", "[---]") - #define TR_TELEM_TIME TR("Time", "Time\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 TR_ASPD_MAX TR("ASp+", "ASpd+") - -#if defined(PCBTARANIS) - #define TR_TELEM_RSSI_RX "RSSI\0" -#else - #define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ") -#endif - - #define TR_TELEM_TIMERS TR("Tmr1""Tmr2""Tmr3", "Tmr1\0""Tmr2\0""Tmr3\0") - #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" #define LENGTH_UNIT_METR "m\0 " #define SPEED_UNIT_METR "kmh" - #define LEN_VUNITSSYSTEM "\007" - #define TR_VUNITSSYSTEM "Metrico""Imperial" - #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 LEN_VUNITSSYSTEM "\010" +#define TR_VUNITSSYSTEM "Metrico\0""Imperial" +#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 "\004" -#define TR_VTELEMSCREENTYPE "Nums""Bars" +#define LEN_VTELEMSCREENTYPE "\007" +#define TR_VTELEMSCREENTYPE "Nada\0 ""Numeros""Barras\0""Script\0" #define LEN_GPSFORMAT "\004" #define TR_GPSFORMAT "HMS NMEA" @@ -323,12 +305,12 @@ #define LEN_VSWITCHES "\003" #define LEN_VSRCRAW "\004" -#define TR_STICKS_VSRCRAW "\307Dir""\307Ele""\307Thr""\307Ale" +#define TR_STICKS_VSRCRAW "\307Rud""\307Ele""\307Thr""\307Ail" #if defined(PCBHORUS) - #define TR_TRIMS_VSRCRAW "\313Dir""\313Ele""\313Thr""\313Ale""\313T5\0""\313T6\0" + #define TR_TRIMS_VSRCRAW "\313Rud""\313Ele""\313Thr""\313Ail""\313T5\0""\313T6\0" #else - #define TR_TRIMS_VSRCRAW TR("TrmD" "TrmE" "TrmT" "TrmA", "\313Dir""\313Ele""\313Thr""\313Ale") + #define TR_TRIMS_VSRCRAW TR("TrmR" "TrmE" "TrmT" "TrmA", "\313Rud""\313Ele""\313Thr""\313Ail") #endif #if defined(PCBHORUS) @@ -375,14 +357,14 @@ #define TR_VTRAINER_MULTI "Master/Multi" #define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "No\0 ""Guardar\0 ""Adaptar\0 ""Sin pulso""Receptor\0" +#define TR_VFAILSAFE "No\0 ""Hold\0 ""Custom\0 ""No pulsos""Receptor\0" #define LEN_VSENSORTYPES "\012" #define TR_VSENSORTYPES "Custom\0 ""Calculado" -#define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Suma\0 ""Media\0 ""Min\0 ""Max\0 ""Multipl.""Total\0 ""Cell\0 ""Consumo\0""Distanc." +#define LEN_VFORMULAS "\011" +#define TR_VFORMULAS "Suma\0 ""Media\0 ""Min\0 ""Max\0 ""Multipl. ""Total\0 ""Cell\0 ""Consumo\0 ""Distancia" #define LEN_VPREC "\004" #define TR_VPREC "0.--""0.0 ""0.00" @@ -431,24 +413,24 @@ #define TR_FREE "libre" #define TR_DELETEMODEL "BORRAR MODELO" #define TR_COPYINGMODEL "Copiando modelo.." -#define TR_MOVINGMODEL "Mover modelo..." -#define TR_LOADINGMODEL "Cargar modelo..." +#define TR_MOVINGMODEL "Moviendo modelo..." +#define TR_LOADINGMODEL "Cargando modelo..." #define TR_NAME "Nombre" -#define TR_MODELNAME "Nom.Modelo" -#define TR_PHASENAME "Nom.Fase " -#define TR_MIXNAME "Nom.Mezcla" -#define TR_INPUTNAME TR("N.entr","Nombre entrada") -#define TR_EXPONAME TR("N.expo","Nombre expo") -#define TR_BITMAP "Imagen Modelo" -#define TR_TIMER TR("Reloj","Reloj ") -#define TR_ELIMITS TR("E.Limite","Ampliar Limites") -#define TR_ETRIMS TR("E.Trims","Ampliar Trims") -#define TR_TRIMINC "Paso Trim" -#define TR_DISPLAY_TRIMS "Ver Trims" -#define TR_TTRACE TR("Fuente-A", INDENT "Fuente Acelerad") -#define TR_TTRIM TR("Trim-A", INDENT "Trim Acelerad") -#define TR_BEEPCTR TR("Beep ctr","Beep centro") -#define TR_USE_GLOBAL_FUNCS "Funcs glob." +#define TR_MODELNAME TR("Nom. modelo", "Nombre modelo") +#define TR_PHASENAME "Nombre fase " +#define TR_MIXNAME TR("Nom. mezcla", "Nombre mezcla") +#define TR_INPUTNAME TR("Entrada", "Nom. entrada") +#define TR_EXPONAME TR("Nom.", "Nombre expo") +#define TR_BITMAP "Imagen modelo" +#define TR_TIMER TR("Timer", "Timer ") +#define TR_ELIMITS TR("E.Limite", "Ampliar limites") +#define TR_ETRIMS TR("E.Trims", "Ampliar trims") +#define TR_TRIMINC "Paso trim" +#define TR_DISPLAY_TRIMS "Ver trims" +#define TR_TTRACE TR("Fuente-A", INDENT "Fuente acelerador") +#define TR_TTRIM TR("Trim-A", INDENT "Trim acelerador") +#define TR_BEEPCTR TR("Beep ctr", "Beep centro") +#define TR_USE_GLOBAL_FUNCS TR("Funcs. glob.", "Usar func. globales") #if defined(PCBSKY9X) && defined(REVX) #define TR_OUTPUT_TYPE INDENT "Output" #endif @@ -458,7 +440,7 @@ #define STR_WARN_BATTVOLTAGE TR(INDENT "Salida es VBAT: ", INDENT "Aviso: señal salida es VBAT: ") #define TR_MS "ms" #define TR_FREQUENCY INDENT "Frequencia" -#define TR_SWITCH "Interr" +#define TR_SWITCH TR("Interr.", "Interruptor") #define TR_TRIMS "Trims" #define TR_FADEIN "Inicio" #define TR_FADEOUT "Final" @@ -466,28 +448,28 @@ #define TR_CHECKTRIMS CENTER "\006Check\012Trims" #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) #define TR_SWASHTYPE "Tipo ciclico" -#define TR_COLLECTIVE TR("Colectivo", "Fuente Colectivo") +#define TR_COLLECTIVE TR("Colectivo", "Fuente colectivo") #define TR_AILERON TR("Col. lateral", "Fuente col. lateral") #define TR_ELEVATOR TR("Col. long. ", "Fuente col. longitudinal") #define TR_SWASHRING "Ciclico" -#define TR_ELEDIRECTION TR("ELE Direccion","Largo cyc. direccion") -#define TR_AILDIRECTION TR("AIL Direccion","Lateral cyc. direccion") -#define TR_COLDIRECTION TR("PIT Direccion","Coll. pitch direccion") +#define TR_ELEDIRECTION TR("ELE Direccion", "Largo cyc. direccion") +#define TR_AILDIRECTION TR("AIL Direccion", "Lateral cyc. direccion") +#define TR_COLDIRECTION TR("PIT Direccion", "Coll. pitch direccion") #define TR_MODE "Modo" #define TR_SUBTYPE INDENT "Subtipo" #define TR_NOFREEEXPO "No expo libre!" #define TR_NOFREEMIXER "No mezcla lib!" #define TR_SOURCE "Fuente" #define TR_WEIGHT "Cantidad" -#define TR_EXPO TR("Expo","Exponencial") -#define TR_SIDE "Lado" +#define TR_EXPO TR("Expo", "Exponencial") +#define TR_SIDE "Zona" #define TR_DIFFERENTIAL "Diferenc" #define TR_OFFSET "Offset" #define TR_TRIM "Trim" #define TR_DREX "DRex" #define DREX_CHBOX_OFFSET 30 #define TR_CURVE "Curva" -#define TR_FLMODE TR("Modo","Modos") +#define TR_FLMODE TR("Modo", "Modos") #define TR_MIXWARNING "Aviso" #define TR_OFF "OFF" #define TR_ANTENNA "Antena" @@ -497,7 +479,7 @@ #define TR_DELAYUP "Atraso subir" #define TR_SLOWDOWN "Bajar lento " #define TR_SLOWUP "Subir lento" -#define TR_MIXES "MEZCLAS" +#define TR_MIXES "MIXES" #define TR_CV "CV" #define TR_GV TR("G", "GV") #define TR_ACHANNEL "A\004canal" @@ -512,48 +494,48 @@ #define TR_LENGTH INDENT"Longitud" #define TR_BEEP_LENGTH INDENT "Duracion Beep" #define TR_SPKRPITCH INDENT"Tono" -#define TR_HAPTIC_LABEL "Tactil" +#define TR_HAPTIC_LABEL "Haptic" #define TR_HAPTICSTRENGTH INDENT"Intensidad" #define TR_GYRO_LABEL "Gyro" #define TR_GYRO_OFFSET "Offset" #define TR_GYRO_MAX "Max" #define TR_CONTRAST "Contraste" #define TR_ALARMS_LABEL "Alarmas" -#define TR_BATTERY_RANGE TR("Rango bateria","Rango medidor Bater") -#define TR_BATTERYWARNING INDENT"Bateria Baja" +#define TR_BATTERY_RANGE TR("Rango bateria", "Rango medidor bateria") +#define TR_BATTERYWARNING INDENT"Bateria baja" #define TR_INACTIVITYALARM INDENT"Inactividad" -#define TR_MEMORYWARNING INDENT"Memoria Baja" -#define TR_ALARMWARNING INDENT"Sin Sonido" +#define TR_MEMORYWARNING INDENT"Memoria baja" +#define TR_ALARMWARNING INDENT"Sin sonido" #define TR_RSSISHUTDOWNALARM TR(INDENT "Apagado Rssi", INDENT "Check Rssi al apagar") #define TR_MODEL_STILL_POWERED "Modelo aun encendido" #define TR_MODEL_SHUTDOWN "Apagar ?" #define TR_PRESS_ENTER_TO_CONFIRM "Enter para confirmar" #define TR_THROTTLE_LABEL "Potencia" -#define TR_THROTTLEREVERSE TR("Invert_Acel", INDENT "Invertir Acel.") -#define TR_MINUTEBEEP TR("Minuto", "Cada Minuto") -#define TR_BEEPCOUNTDOWN INDENT"Cta. atras" -#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistente") -#define TR_BACKLIGHT_LABEL "Luz Fondo" +#define TR_THROTTLEREVERSE TR("Invert acel", INDENT "Invertir acel.") +#define TR_MINUTEBEEP TR("Minuto", "Cada minuto") +#define TR_BEEPCOUNTDOWN TR(INDENT"Cta. atras", INDENT"Cuenta atras") +#define TR_PERSISTENT TR(INDENT"Persisten.", INDENT"Persistente") +#define TR_BACKLIGHT_LABEL "Luz fondo" #define TR_BLDELAY INDENT"Duracion" -#define TR_BLONBRIGHTNESS INDENT"MAS Brillo" -#define TR_BLOFFBRIGHTNESS INDENT"MENOS Brillo" +#define TR_BLONBRIGHTNESS INDENT"MAS brillo" +#define TR_BLOFFBRIGHTNESS INDENT"MENOS brillo" #define TR_BLCOLOR INDENT "Color" -#define TR_SPLASHSCREEN "Pant. inicio" -#define TR_PWR_ON_DELAY "Atraso On" -#define TR_PWR_OFF_DELAY "Atraso Off" -#define TR_THROTTLEWARNING TR("Aviso-A", INDENT "Aviso Acelerador") -#define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso Intrptor") +#define TR_SPLASHSCREEN "Pantalla inicio" +#define TR_PWR_ON_DELAY TR("Atraso On", "Atraso encendido") +#define TR_PWR_OFF_DELAY TR("Atraso Off", "Atraso apagado") +#define TR_THROTTLEWARNING TR("Aviso-A", INDENT "Aviso acelerador") +#define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso interruptor") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") #define TR_SLIDERWARNING TR(INDENT "Pos. slid.", INDENT "Posiciones slider") #define TR_POTWARNING TR("Aviso pot", INDENT "Aviso pot") -#define TR_TIMEZONE TR("Zona Hora", "GPS Zona Hora") +#define TR_TIMEZONE TR("Zona horaria", INDENT "Zona horaria") #define TR_ADJUST_RTC TR("Ajustar RTC", INDENT "Ajustar RTC") #define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Rx Orden canal", "Orden habitual canales") #define TR_STICKS "Sticks" #define TR_POTS "Pots" #define TR_SWITCHES "Switches" -#define TR_SWITCHES_DELAY "Atraso switch." +#define TR_SWITCHES_DELAY TR("Atraso switch.", "Atraso switches") #define TR_SLAVE "Esclavo" #define TR_MODESRC "Modo\006% Fuente" #define TR_MULTIPLIER "Multiplicar" @@ -588,7 +570,7 @@ #define TR_PRESSANYKEYTOSKIP "Pulsar tecla para omitir" #define TR_THROTTLENOTIDLE "Aceler. Activado" #define TR_ALARMSDISABLED "Alarmas Desact." -#define TR_PRESSANYKEY TR("\010Pulsa una Tecla", "Pulsa una Tecla") +#define TR_PRESSANYKEY TR("\010Pulsa una tecla", "Pulsa una tecla") #define TR_BADEEPROMDATA "Error datos EEprom" #define TR_BAD_RADIO_DATA "Error datos radio" #define TR_EEPROMFORMATTING "Formateo EEPROM" @@ -599,8 +581,8 @@ #define TR_MENUTRAINER "ENTRENADOR" #define TR_MENUSPECIALFUNCS "FUNCIONES GLOBALES" #define TR_MENUVERSION "VERSION" -#define TR_MENU_RADIO_SWITCHES TR("INTERUPTS", "TEST INTERUP.") -#define TR_MENU_RADIO_ANALOGS TR("ANAS", "ENTRADAS ANALOG") +#define TR_MENU_RADIO_SWITCHES TR("INTERUPTS", "TEST INTERRUPTORES") +#define TR_MENU_RADIO_ANALOGS TR("ANALOGICOS", "TEST ANALOGICOS") #define TR_MENUCALIBRATION "CALIBRACION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Offsets" @@ -610,7 +592,7 @@ #define TR_CHANNELS2FAILSAFE "Canales=>Failsafe" #define TR_CHANNEL2FAILSAFE "Canal=>Failsafe" #define TR_MENUMODELSEL TR("MODELOS", "SELECCION MODELO") -#define TR_MENUSETUP "CONFIG. MODELO" +#define TR_MENUSETUP TR("CONFIG. MODELO", "CONFIGURACION MODELO") #define TR_MENUFLIGHTMODE "MODO DE VUELO" #define TR_MENUFLIGHTMODES "MODOS DE VUELO" #define TR_MENUHELISETUP "CONFIGURACION HELI" @@ -628,13 +610,13 @@ #define TR_MENUCURVES "CURVAS" #define TR_MENUCURVE "CURVA" -#define TR_MENULOGICALSWITCH "INTERRUP. LOGICO" -#define TR_MENULOGICALSWITCHES "INTERRUP. LOGICOS" -#define TR_MENUCUSTOMFUNC "FUNCIONES" +#define TR_MENULOGICALSWITCH "INTERRUP.LOGICO" +#define TR_MENULOGICALSWITCHES TR3("INTERRUP. LOGICOS", "INTERRUP. LOGICOS", "INTERRUPTORES LOGICOS") +#define TR_MENUCUSTOMFUNC TR("FUNCIONES", "FUNCIONES ESPECIALES") #define TR_MENUCUSTOMSCRIPTS "CUSTOM SCRIPTS" #define TR_MENUTELEMETRY "TELEMETRIA" #define TR_MENUTEMPLATES "PLANTILLAS" -#define TR_MENUSTAT "ESTADISTICAS" +#define TR_MENUSTAT TR("ESTAD.", "ESTADISTICAS") #define TR_MENUDEBUG "DEBUG" #define TR_MONITOR_CHANNELS1 "MONITOR CANALES 1/8" #define TR_MONITOR_CHANNELS2 "MONITOR CANALES 9/16" @@ -642,23 +624,23 @@ #define TR_MONITOR_CHANNELS3 "MONITOR CANALES 17/24" #define TR_MONITOR_CHANNELS4 "MONITOR CANALES 25/32" #define TR_MONITOR_OUTPUT_DESC "SALIDAS" -#define TR_MONITOR_MIXER_DESC "MEZCLAS" -#define TR_RECEIVER_NUM TR("RxNum", "Receptor No.") +#define TR_MONITOR_MIXER_DESC "Mixers" +#define TR_RECEIVER_NUM TR("Num Rx", "Receptor No.") #define TR_RECEIVER "Receptor" #define TR_MULTI_RFTUNE TR("Sint.freq.", "RF Freq. sint.fina") #define TR_MULTI_TELEMETRY "Telemetria" -#define TR_MULTI_VIDFREQ TR("Freq. Vid.", "Frecuancia Video") +#define TR_MULTI_VIDFREQ TR("Freq. Vid.", "Frecuencia Video") #define TR_RFPOWER "RF Power" #define TR_MULTI_FIXEDID TR("ID Fijo", "ID Fijo") #define TR_MULTI_OPTION TR("Opcion", "Valor opcion") #define TR_MULTI_AUTOBIND TR(INDENT "Emp Cnl",INDENT "Emparejar en canal") #define TR_DISABLE_CH_MAP TR("No ch map", "Desactivar mapa cnl") -#define TR_DISABLE_TELEM TR("No Telem", "Desactivar Telemetria") +#define TR_DISABLE_TELEM TR("No telem", "Desactivar telem.") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetectar formato") -#define TR_MULTI_LOWPOWER TR(INDENT "Baja potencia", INDENT "Modo de baja potencia") +#define TR_MULTI_LOWPOWER TR(INDENT "Baja poten.", INDENT "Modo de baja poten.") #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") #define TR_MODULE_TELEM_ON TR("ON", "Activado") -#define TR_DISABLE_INTERNAL TR("Desac.RF int", "Desactivar modulo interno RF") +#define TR_DISABLE_INTERNAL TR("Desac.RF int", "Desact. mod. int. RF") #define TR_MODULE_NO_SERIAL_MODE TR("No modo serie", "No en modo serie") #define TR_MODULE_NO_INPUT TR("Sin señal", "Sin señal") #define TR_MODULE_NO_TELEMETRY TR3( "No telemetria", "No MULTI_TELEMETRY", "No telemetria (activa MULTI_TELEMETRY)") @@ -674,7 +656,7 @@ #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. invalido", "Protocolo invalido") -#define TR_MODULE_STATUS TR(INDENT "EStado", INDENT "Estado modulo") +#define TR_MODULE_STATUS TR(INDENT "Estado", INDENT "Estado modulo") #define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Estado proto sync") #define TR_MULTI_SERVOFREQ TR("V ref serv", "Vel. refr. servo") #define TR_MULTI_MAX_THROW TR("Max. Throw", "Activar max. throw") @@ -684,18 +666,18 @@ #define TR_MINRSSI "Min Rssi" #define TR_LATITUDE "Latitud" #define TR_LONGITUDE "Longitud" -#define TR_GPSCOORD TR("Coords GPS", "GPS formato coordenadas") +#define TR_GPSCOORD TR("Coords GPS", INDENT "Formato coordenadas") #define TR_VARIO TR("Vario", "Variometro") #define TR_PITCH_AT_ZERO INDENT "Pitch en cero" #define TR_PITCH_AT_MAX INDENT "Pitch en max" -#define TR_REPEAT_AT_ZERO INDENT "Repet. en cero" +#define TR_REPEAT_AT_ZERO TR(INDENT "Repet. en cero", INDENT "Repetir en cero") #define TR_SHUTDOWN "APAGANDO" #define TR_SAVEMODEL "Grabando modelo" -#define TR_BATT_CALIB "Calib.bat." +#define TR_BATT_CALIB TR("Calib.bat.", "Calibracion bateria") #define TR_CURRENT_CALIB "Calib. actual" #define TR_VOLTAGE INDENT"Voltaje" #define TR_CURRENT INDENT"Actual" -#define TR_SELECT_MODEL "Selec Modelo" +#define TR_SELECT_MODEL TR("Selec. modelo", "Seleccionar modelo") #define TR_CREATE_CATEGORY "Crear categoria" #define TR_RENAME_CATEGORY "Renombrar categoria" #define TR_DELETE_CATEGORY "Borrar categoria" @@ -703,7 +685,7 @@ #define TR_DUPLICATE_MODEL "Duplicar modelo" #define TR_COPY_MODEL "Copiar modelo" #define TR_MOVE_MODEL "Mover modelo" -#define TR_BACKUP_MODEL "Copia sgdad mod." +#define TR_BACKUP_MODEL TR("Copia sgdad. mod.", "Copia seguridad modelo") #define TR_DELETE_MODEL "Borrar modelo" #define TR_RESTORE_MODEL "Restaurar modelo" #define TR_DELETE_ERROR "Error de borrado" @@ -735,8 +717,8 @@ #define TR_RF_PROTOCOL "Protocolo RF" #define TR_MODULE_OPTIONS "Opciones modulo" #define TR_POWER "Potencia" -#define TR_NO_TX_OPTIONS "Sin pciones TX" -#define TR_RTC_BATT "Bat. RTC" +#define TR_NO_TX_OPTIONS "Sin opciones TX" +#define TR_RTC_BATT TR("Bat. RTC", "Bateria RTC") #define TR_POWER_METER_EXT "Medidor potencia(EXT)" #define TR_POWER_METER_INT "Medidor potencia(INT)" #define TR_SPECTRUM_ANALYSER_EXT "Spectro (EXT)" @@ -750,22 +732,22 @@ #define TR_EEPROMWARN "EEPROM" #define TR_STORAGE_WARNING "ALMAC." #define TR_EEPROM_CONVERTING "Convirtiendo EEPROM" -#define TR_THROTTLEWARN "ACELERADOR" +#define TR_THROTTLEWARN TR("ACELERAD.", "ACELERADOR") #define TR_ALARMSWARN "ALARMAS" -#define TR_SWITCHWARN "INTERPTOR" +#define TR_SWITCHWARN TR("INTERRUP.", "INTERRUPTOR") #define TR_FAILSAFEWARN "FAILSAFE" #define TR_TEST_WARNING TR("TESTING", "TEST BUILD") #define TR_TEST_NOTSAFE "Usar solo para test" -#define TR_WRONG_SDCARDVERSION TR("Ver esperada: ","Version esperada: ") +#define TR_WRONG_SDCARDVERSION TR("Ver esperada: ", "Version esperada: ") #define TR_WARN_RTC_BATTERY_LOW "Bateria RTC baja" #define TR_WARN_MULTI_LOWPOWER "Modo baja potencia" -#define TR_BATTERY "BATERiA" +#define TR_BATTERY "BATERIA" #define TR_WRONG_PCBREV "Placa PCB erronea" #define TR_EMERGENCY_MODE "MODO EMERGENCIA" #define TR_PCBREV_ERROR "Error PCB" #define TR_NO_FAILSAFE "Failsafe no fijado" #define TR_KEYSTUCK "Tecla atascada" -#define TR_INVERT_THR TR("Invertir Acel?", "Invertir Acel.?") +#define TR_INVERT_THR TR("Invertir acel?", "Invertir acel.?") #define TR_SPEAKER_VOLUME INDENT "Volumen" #define TR_LCD "LCD" #define TR_BRIGHTNESS INDENT "Brillo" @@ -774,9 +756,9 @@ #define TR_CPU_MAH "Consumo" #define TR_COPROC "CoProc." #define TR_COPROC_TEMP "MB Temp. \016>" -#define TR_CAPAWARNING INDENT "Capacidad Baja" +#define TR_CAPAWARNING INDENT "Capacidad baja" #define TR_TEMPWARNING INDENT "Sobrecalent" -#define TR_FUNC "Func" +#define TR_FUNC "Funcion" #define TR_V1 "V1" #define TR_V2 "V2" #define TR_DURATION "Duracion" @@ -842,8 +824,8 @@ #define TR_FLASH_BOOTLOADER "Flash bootloader" #define TR_FLASH_EXTERNAL_DEVICE "Flash disp. externo" #define TR_FLASH_RECEIVER_OTA "Flash RX OTA" -#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA" -#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA" +#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX por ext. OTA" +#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX por int. OTA" #define TR_FLASH_BLUETOOTH_MODULE TR("Flash modulo BT", "Flash modulo bluetooth") #define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash unid. pwr mngt" #define TR_CURRENT_VERSION TR("Vers. actual", "Version actual: ") @@ -851,20 +833,20 @@ #define TR_FLASH_INTERNAL_MULTI TR("Flash Multi int", "Flash Multi interno") #define TR_FLASH_EXTERNAL_MODULE TR("Flash modulo ext", "Flash modulo externo") #define TR_FLASH_EXTERNAL_MULTI TR("Flash Multi ext", "Flash Multi externo") -#define TR_FIRMWARE_UPDATE_ERROR TR("Error act FW","Error actualiz. firmware") +#define TR_FIRMWARE_UPDATE_ERROR TR("Error act FW", "Error actualiz. firmware") #define TR_FIRMWARE_UPDATE_SUCCESS "Flash ok" #define TR_WRITING "Escribiendo..." #define TR_CONFIRM_FORMAT "Confirmar formato?" #define TR_INTERNALRF "RF interna" -#define TR_INTERNAL_MODULE TR("Modulo int","Modulo interno") -#define TR_EXTERNAL_MODULE TR("Modulo ext","Modulo externo") +#define TR_INTERNAL_MODULE TR("Modulo int", "Modulo interno") +#define TR_EXTERNAL_MODULE TR("Modulo ext", "Modulo externo") #define TR_OPENTX_UPGRADE_REQUIRED "Actualiz. OpenTX requerida" #define TR_TELEMETRY_DISABLED "Telem. inactiva" #define TR_MORE_OPTIONS_AVAILABLE "Mas opciones disp." #define TR_NO_MODULE_INFORMATION "Sin informacion modulo" #define TR_EXTERNALRF "RF externa" -#define TR_FAILSAFE INDENT"Modo sgdad." -#define TR_FAILSAFESET "AJUSTES SGDAD." +#define TR_FAILSAFE INDENT"Failsafe" +#define TR_FAILSAFESET "AJUSTES FAILSAFE" #define TR_REG_ID "Reg. ID" #define TR_OWNER_ID "Pers. ID" #define TR_PINMAPSET "PINMAP" @@ -908,7 +890,7 @@ #define TR_USB_SERIAL "Serie USB (Debug)" #define TR_SETUP_SCREENS "Pantallas config" #define TR_MONITOR_SCREENS "Monitores" -#define TR_AND_SWITCH "AND Inter." +#define TR_AND_SWITCH TR("Inter. AND", "Interruptor AND") #define TR_SF "CF" #define TR_GF "GF" #define TR_SPEAKER INDENT"Altavoz" @@ -932,13 +914,13 @@ #define TR_DEL_BUTTON BUTTON(TR("Del", "Borrar")) #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" -#define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) +#define TR_KEYS_BTN BUTTON(TR("SW", "Switches")) +#define TR_ANALOGS_BTN BUTTON(TR("Analog", "Analogs")) #define TR_CALIBRATION "Calibracion" #define TR_SET "[Ajuste]" -#define TR_TRAINER "Entrena." +#define TR_TRAINER "Entrenador" #define TR_CHANS "Chans" -#define TR_ANTENNAPROBLEM CENTER "¡Problema antena TX!" +#define TR_ANTENNAPROBLEM CENTER "Problema antena TX!" #define TR_MODELIDUSED TR("ID en uso", "ID modelo en uso") #define TR_MODULE "Modulo" #define TR_RX_NAME "Nombre Rx" @@ -947,15 +929,15 @@ #define TR_VALUE "Valor" #define TR_TOPLCDTIMER "Timer LCD superior" #define TR_UNIT "Unidad" -#define TR_TELEMETRY_NEWSENSOR INDENT "Añadir nuevo sensor..." +#define TR_TELEMETRY_NEWSENSOR INDENT "Añadir sensor..." #define TR_CHANNELRANGE INDENT "Canales" #define TR_ANTENNACONFIRM1 "ANTENA EXT." #if defined(PCBX12S) -#define LEN_ANTENNA_MODES "\023" -#define TR_ANTENNA_MODES "Interna\0 ""Preguntar\0 ""Por modelo\0 ""Interno + Externo\0 " +#define LEN_ANTENNA_MODES "\020" +#define TR_ANTENNA_MODES "Interna\0 ""Preguntar\0 ""Por modelo\0 ""Interno + Externo\0" #else -#define LEN_ANTENNA_MODES "\011" -#define TR_ANTENNA_MODES "Interna\0 ""Preguntar\0""Por model""Externa\0 " +#define LEN_ANTENNA_MODES "\012" +#define TR_ANTENNA_MODES "Interna\0 ""Preguntar\0""Por modelo""Externa\0 " #endif #define TR_USE_INTERNAL_ANTENNA TR("Usa antena int.", "Usa antena interna") #define TR_USE_EXTERNAL_ANTENNA TR("Use antena ext.", "Usa antena externa") @@ -967,7 +949,7 @@ #define TR_MODULE_PROTOCOL_WARN_LINE2 "firmware certificado" #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma critica" -#define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") +#define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRY RSSI") #define TR_NO_RSSIALARM TR(INDENT "Alarmas desact.", INDENT "Alarmas telemetria desact.") #define TR_DISABLE_ALARM TR(INDENT "Desact. alarmas", INDENT "Desact. alarmas telem.") #define TR_ENABLE_POPUP "Activa Popup" @@ -984,7 +966,7 @@ #define TR_COUNT "Puntos" #define TR_PT "pt" #define TR_PTS "pts" -#define TR_SMOOTH "Suaviz" +#define TR_SMOOTH TR3("Suaviz.", "Suaviz.", "Suavizado") #define TR_COPY_STICKS_TO_OFS TR("Copia stick->subtr", "Copia Sticks a Offset") #define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Copia min/max a sal", "Copia min/max/ctr a salidas") #define TR_COPY_TRIMS_TO_OFS TR("Copia trim->subtr", "Copia trims a subtrim") @@ -993,8 +975,8 @@ #define TR_MIXSOURCE "Entrada mixer" #define TR_CONSTANT "Constante" #define TR_PERSISTENT_MAH INDENT "Valor mAh" -#define TR_PREFLIGHT "Chequeos Prevuelo" -#define TR_CHECKLIST INDENT "Lista verif" +#define TR_PREFLIGHT "Chequeos prevuelo" +#define TR_CHECKLIST TR(INDENT "Lista verif", INDENT "Lista verificacion") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #define TR_AUX_SERIAL_MODE "Puerto serie" #define TR_SCRIPT "Script" @@ -1002,7 +984,7 @@ #define TR_OUTPUTS "Salidas" #define STR_EEBACKUP "Copia seg. EEPROM" #define STR_FACTORYRESET "Rest. fabrica" -#define TR_CONFIRMRESET "Borrar TODOS los modelos y configuracion?" +#define TR_CONFIRMRESET "Borrar TODOS los " LCDW_128_480_LINEBREAK "modelos y conf?" #define TR_TOO_MANY_LUA_SCRIPTS "Demasiados Lua scripts!" #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" @@ -1033,7 +1015,7 @@ #define TR_LSW_HEADERS_FUNCTION "Funcion" #define TR_LSW_HEADERS_V1 "V1" #define TR_LSW_HEADERS_V2 "V2" -#define TR_LSW_HEADERS_ANDSW "AND Interrup." +#define TR_LSW_HEADERS_ANDSW "Interrup. AND" #define TR_LSW_HEADERS_DURATION "Duracion" #define TR_LSW_HEADERS_DELAY "Retardo" @@ -1115,10 +1097,10 @@ #define TR_TOP_BAR "Panel superior" #define TR_FLASH_ERASE "Borrar flash..." -#define TR_FLASH_WRITE "Escrivir flash..." +#define TR_FLASH_WRITE "Escribir flash..." #define TR_OTA_UPDATE "Actualizacion OTA..." #define TR_MODULE_RESET "Reset modulo..." -#define TR_UNKNOWN_RX "RX deconocido" +#define TR_UNKNOWN_RX "RX desconocido" #define TR_UNSUPPORTED_RX "RX no soportado" #define TR_OTA_UPDATE_ERROR "Error actualizacion OTA" #define TR_DEVICE_RESET "Reset dispositivo..." @@ -1127,7 +1109,7 @@ #define TR_VIEW_CHANNELS "Ver Canales" #define TR_VIEW_NOTES "Ver Notas" #define TR_MODEL_SELECT "Seleccionar modelo" -#define TR_MODS_FORBIDDEN "Modificacions prohibidas!" +#define TR_MODS_FORBIDDEN "Modificaciones prohibidas" #define TR_UNLOCKED "Desbloqueado" #define TR_ID "ID" #define TR_PRECISION "Precision" @@ -1142,22 +1124,22 @@ #define TR_CELLSENSOR "Cell sensor" #define TR_GPSSENSOR "GPS sensor" #define TR_CURRENTSENSOR "Sensor" -#define TR_AUTOOFFSET "Auto Offset" +#define TR_AUTOOFFSET "Auto offset" #define TR_ONLYPOSITIVE "Positivo" #define TR_FILTER "Filtro" #define TR_TELEMETRYFULL TR("Telem. llena!", "Todas las entradas de telemetria llenas!") #define TR_SERVOS_OK "Servos OK" #define TR_SERVOS_KO "Servos KO" #define TR_INVERTED_SERIAL INDENT "Invertir" -#define TR_IGNORE_INSTANCE INDENT "Ignorar instancia" -#define TR_DISCOVER_SENSORS "Buscar nuevos sensores" +#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "Ignora instancias") +#define TR_DISCOVER_SENSORS "Buscar sensores" #define TR_STOP_DISCOVER_SENSORS "Parar busqueda" #define TR_DELETE_ALL_SENSORS "Borrar sensores" #define TR_CONFIRMDELETE "Seguro " LCDW_128_480_LINEBREAK "borrar todo ?" #define TR_SELECT_WIDGET "Seleccionar widget" #define TR_REMOVE_WIDGET "Borrar widget" #define TR_WIDGET_SETTINGS "Config. widget" -#define TR_REMOVE_SCREEN "Borar pantalla" +#define TR_REMOVE_SCREEN "Borrar pantalla" #define TR_SETUP_WIDGETS "Config. widgets" #define TR_USER_INTERFACE "Interfaz" #define TR_THEME "Tema" @@ -1169,25 +1151,25 @@ #define TR_MAIN_COLOR "Color principal" #define TR_TEXT_VIEWER "Visor de texto" -#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_INPUTS "\314Entradas" #define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" #define TR_MENU_MAX "\315MAX" #define TR_MENU_HELI "\316Ciclico" #define TR_MENU_TRIMS "\313Trims" -#define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_LOGICAL_SWITCHES "\312Logical Switches" +#define TR_MENU_SWITCHES "\312Interruptores" +#define TR_MENU_LOGICAL_SWITCHES TR("\312Interr. logicos", "\312Interruptores logicos") #define TR_MENU_TRAINER "\317Entrenador" #define TR_MENU_CHANNELS "\320Canales" #define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetria" -#define TR_MENU_DISPLAY "Monitor" +#define TR_MENU_DISPLAY "MONITOR" #define TR_MENU_OTHER "Otros" #define TR_MENU_INVERT "Invertir" #define TR_JITTER_FILTER "Filtro ADC" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltaje") -#define TR_AUTH_FAILURE "Fallo auth." +#define TR_AUTH_FAILURE "Fallo " LCDW_128_480_LINEBREAK "autentificacion" #define ZSTR_FLR "FLR" #define ZSTR_RSSI "RSSI" From ef8640a7733899d5d6519bd11f4417949c803782 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 21 Apr 2020 12:14:24 +0200 Subject: [PATCH 074/199] Allow alphanumerical in ownerID (#7523) --- companion/src/generaledit/generalsetup.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/generaledit/generalsetup.ui b/companion/src/generaledit/generalsetup.ui index d4e9bff01..98f9e76dd 100644 --- a/companion/src/generaledit/generalsetup.ui +++ b/companion/src/generaledit/generalsetup.ui @@ -1124,7 +1124,7 @@ p, li { white-space: pre-wrap; } - aaaaaaAA + nnnnnnNN 8 From e7f599237e19f2c6162b853a5d567c33218a0fb4 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 21 Apr 2020 12:22:29 +0200 Subject: [PATCH 075/199] Add mililiter per minute unit to Companion (#7529) --- companion/src/firmwares/sensordata.cpp | 2 ++ companion/src/firmwares/sensordata.h | 1 + companion/src/modeledit/telemetry_sensor.ui | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/companion/src/firmwares/sensordata.cpp b/companion/src/firmwares/sensordata.cpp index 8d677ed50..0a7e7eada 100644 --- a/companion/src/firmwares/sensordata.cpp +++ b/companion/src/firmwares/sensordata.cpp @@ -82,6 +82,8 @@ QString SensorData::unitString() const return tr("seconds"); case UNIT_CELLS: return tr("V"); + case UNIT_MILLILITERS_PER_MINUTE: + return tr("ml/minute"); default: return ""; } diff --git a/companion/src/firmwares/sensordata.h b/companion/src/firmwares/sensordata.h index a5cdb4957..65a8a4957 100644 --- a/companion/src/firmwares/sensordata.h +++ b/companion/src/firmwares/sensordata.h @@ -90,6 +90,7 @@ class SensorData { UNIT_RADIANS, UNIT_MILLILITERS, UNIT_FLOZ, + UNIT_MILLILITERS_PER_MINUTE, UNIT_HOURS, UNIT_MINUTES, UNIT_SECONDS, diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index 52660b4f0..12af2cf06 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -539,6 +539,11 @@ US fl.Oz. + + + ml/min + + From a1cd83598f5bef9ceb1b47479f3bad983cd41209 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 21 Apr 2020 14:44:21 +0200 Subject: [PATCH 076/199] Add output name on bottom status bar even when no mix line is active (#7537) --- radio/src/gui/480x272/model_mixes.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/gui/480x272/model_mixes.cpp b/radio/src/gui/480x272/model_mixes.cpp index 0f98dc9d9..da1b74f78 100644 --- a/radio/src/gui/480x272/model_mixes.cpp +++ b/radio/src/gui/480x272/model_mixes.cpp @@ -607,6 +607,8 @@ bool menuModelMixAll(event_t event) if (!s_copyMode) { attr = INVERS; } + if (g_model.limitData[ch-1].name[0] != '\0') + lcdDrawSizedText(MENUS_MARGIN_LEFT, MENU_FOOTER_TOP, g_model.limitData[ch-1].name, sizeof(g_model.limitData[ch-1].name), MENU_TITLE_COLOR | LEFT | ZCHAR); } if (cur-menuVerticalOffset >= 0 && cur-menuVerticalOffset < NUM_BODY_LINES) { putsChn(MENUS_MARGIN_LEFT, y, ch, attr); // show CHx From 07b096ff4417e794ad0f7029451158e71408372b Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Tue, 21 Apr 2020 13:49:18 +0100 Subject: [PATCH 077/199] Add missing translatables (#7532) Add missing translatables --- radio/src/gui/480x272/layouts/layout1x1.cpp | 4 ++-- radio/src/gui/480x272/layouts/layout2+1.cpp | 8 +++---- radio/src/gui/480x272/layouts/layout2x1.cpp | 2 +- radio/src/gui/480x272/layouts/layout2x2.cpp | 2 +- radio/src/gui/480x272/layouts/layout2x4.cpp | 16 +++++++------- radio/src/gui/480x272/model_curves.cpp | 2 +- radio/src/gui/480x272/model_failsafe.cpp | 2 +- radio/src/gui/480x272/model_select.cpp | 2 +- radio/src/gui/480x272/model_setup.cpp | 2 +- radio/src/gui/480x272/radio_hardware.cpp | 2 +- radio/src/gui/480x272/screens_setup.cpp | 4 ++-- radio/src/gui/480x272/widgets/gauge.cpp | 8 +++---- radio/src/gui/480x272/widgets/outputs.cpp | 6 ++--- radio/src/gui/480x272/widgets/text.cpp | 8 +++---- radio/src/gui/480x272/widgets/timer.cpp | 2 +- radio/src/gui/480x272/widgets/value.cpp | 6 ++--- .../src/gui/common/stdlcd/view_telemetry.cpp | 2 +- radio/src/translations.cpp | 20 +++++++++++++++++ radio/src/translations.h | 17 ++++++++++++++ radio/src/translations/cz.h.txt | 21 ++++++++++++++++++ radio/src/translations/de.h.txt | 22 +++++++++++++++++++ radio/src/translations/en.h.txt | 21 ++++++++++++++++++ radio/src/translations/es.h.txt | 22 ++++++++++++++++++- radio/src/translations/fi.h.txt | 22 ++++++++++++++++++- radio/src/translations/fr.h.txt | 21 ++++++++++++++++++ radio/src/translations/it.h.txt | 22 ++++++++++++++++++- radio/src/translations/nl.h.txt | 22 ++++++++++++++++++- radio/src/translations/pl.h.txt | 22 ++++++++++++++++++- radio/src/translations/pt.h.txt | 22 ++++++++++++++++++- radio/src/translations/se.h.txt | 22 ++++++++++++++++++- 30 files changed, 308 insertions(+), 46 deletions(-) diff --git a/radio/src/gui/480x272/layouts/layout1x1.cpp b/radio/src/gui/480x272/layouts/layout1x1.cpp index 0feeb1436..79bc53739 100644 --- a/radio/src/gui/480x272/layouts/layout1x1.cpp +++ b/radio/src/gui/480x272/layouts/layout1x1.cpp @@ -25,8 +25,8 @@ const uint8_t LBM_LAYOUT_1x1[] = { }; const ZoneOption OPTIONS_LAYOUT_1x1[] = { - { "Top bar", ZoneOption::Bool }, - { "Sliders+Trims", ZoneOption::Bool }, + { STR_TOP_BAR, ZoneOption::Bool }, + { STR_SLIDERS_TRIMS, ZoneOption::Bool }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/layouts/layout2+1.cpp b/radio/src/gui/480x272/layouts/layout2+1.cpp index 39abb1a9e..860cc94f9 100644 --- a/radio/src/gui/480x272/layouts/layout2+1.cpp +++ b/radio/src/gui/480x272/layouts/layout2+1.cpp @@ -25,10 +25,10 @@ const uint8_t LBM_LAYOUT_2P1[] = { }; const ZoneOption OPTIONS_LAYOUT_2P1[] = { - { "Top bar", ZoneOption::Bool }, - { "Flight mode", ZoneOption::Bool }, - { "Sliders", ZoneOption::Bool }, - { "Trims", ZoneOption::Bool }, + { STR_TOP_BAR, ZoneOption::Bool }, + { STR_FLIGHT_MODE, ZoneOption::Bool }, + { STR_SLIDERS, ZoneOption::Bool }, + { STR_TRIMS, ZoneOption::Bool }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/layouts/layout2x1.cpp b/radio/src/gui/480x272/layouts/layout2x1.cpp index a96fc7006..3c06d7079 100644 --- a/radio/src/gui/480x272/layouts/layout2x1.cpp +++ b/radio/src/gui/480x272/layouts/layout2x1.cpp @@ -25,7 +25,7 @@ const uint8_t LBM_LAYOUT_2x1[] = { }; const ZoneOption OPTIONS_LAYOUT_2x1[] = { - { "Top bar", ZoneOption::Bool }, + { STR_TOP_BAR, ZoneOption::Bool }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/layouts/layout2x2.cpp b/radio/src/gui/480x272/layouts/layout2x2.cpp index 0efa2df62..7d2f16f09 100644 --- a/radio/src/gui/480x272/layouts/layout2x2.cpp +++ b/radio/src/gui/480x272/layouts/layout2x2.cpp @@ -25,7 +25,7 @@ const uint8_t LBM_LAYOUT_2x2[] = { }; const ZoneOption OPTIONS_LAYOUT_2x2[] = { - { "Top bar", ZoneOption::Bool }, + { STR_TOP_BAR, ZoneOption::Bool }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/layouts/layout2x4.cpp b/radio/src/gui/480x272/layouts/layout2x4.cpp index b6e009acc..0850c7e67 100644 --- a/radio/src/gui/480x272/layouts/layout2x4.cpp +++ b/radio/src/gui/480x272/layouts/layout2x4.cpp @@ -25,14 +25,14 @@ const uint8_t LBM_LAYOUT_2x4[] = { }; const ZoneOption OPTIONS_LAYOUT_2x4[] = { - { "Top bar", ZoneOption::Bool }, - { "Flight mode", ZoneOption::Bool }, - { "Sliders", ZoneOption::Bool }, - { "Trims", ZoneOption::Bool }, - { "Panel1 background", ZoneOption::Bool }, - { " Color", ZoneOption::Color }, - { "Panel2 background", ZoneOption::Bool }, - { " Color", ZoneOption::Color }, + { STR_TOP_BAR, ZoneOption::Bool }, + { STR_FLIGHT_MODE, ZoneOption::Bool }, + { STR_SLIDERS, ZoneOption::Bool }, + { STR_TRIMS, ZoneOption::Bool }, + { STR_PANEL1_BACKGROUND, ZoneOption::Bool }, + { INDENT TR_COLOR, ZoneOption::Color }, + { STR_PANEL2_BACKGROUND, ZoneOption::Bool }, + { INDENT TR_COLOR, ZoneOption::Color }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/model_curves.cpp b/radio/src/gui/480x272/model_curves.cpp index 7d15edcaf..3abf03ddb 100644 --- a/radio/src/gui/480x272/model_curves.cpp +++ b/radio/src/gui/480x272/model_curves.cpp @@ -133,7 +133,7 @@ bool menuModelCurveOne(event_t event) // Curve type LcdFlags attr = (menuVerticalPosition==ITEM_CURVE_TYPE ? (s_editMode>0 ? INVERS|BLINK : INVERS) : 0); - lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP, "Type"); + lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP, STR_TYPE); lcdDrawTextAtIndex(MODEL_CURVE_ONE_2ND_COLUMN, MENU_CONTENT_TOP, STR_CURVE_TYPES, crv.type, attr); if (attr) { uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); diff --git a/radio/src/gui/480x272/model_failsafe.cpp b/radio/src/gui/480x272/model_failsafe.cpp index 269cfad75..706c36f4b 100644 --- a/radio/src/gui/480x272/model_failsafe.cpp +++ b/radio/src/gui/480x272/model_failsafe.cpp @@ -60,7 +60,7 @@ bool menuModelFailsafe(event_t event) } SIMPLE_SUBMENU_WITH_OPTIONS("FAILSAFE", ICON_STATS_ANALOGS, sentModuleChannels(g_moduleIdx)+1, OPTION_MENU_NO_SCROLLBAR); - drawStringWithIndex(50, 3+FH, "Module", g_moduleIdx+1, MENU_TITLE_COLOR); + drawStringWithIndex(50, 3+FH, STR_MODULE, g_moduleIdx+1, MENU_TITLE_COLOR); for (uint8_t col=0; col < cols; col++) { for (uint8_t line=0; line < 8; line++) { diff --git a/radio/src/gui/480x272/model_select.cpp b/radio/src/gui/480x272/model_select.cpp index 5f6615041..9cb0f3979 100644 --- a/radio/src/gui/480x272/model_select.cpp +++ b/radio/src/gui/480x272/model_select.cpp @@ -279,7 +279,7 @@ void onModelSelectMenu(const char * result) setCurrentModel(currentCategory->size() - 1); } else { - POPUP_WARNING("Invalid File"); + POPUP_WARNING(STR_INVALID_FILE); } } else if (result == STR_MOVE_MODEL) { diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index 3cd369ddb..b165d201f 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -788,7 +788,7 @@ bool menuModelSetup(event_t event) case ITEM_MODEL_SETUP_DISPLAY_TRIMS: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_DISPLAY_TRIMS); - g_model.displayTrims = editChoice(MODEL_SETUP_2ND_COLUMN, y, "\006No\0 ChangeYes", g_model.displayTrims, 0, 2, attr, event); + g_model.displayTrims = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_VDISPLAYTRIMS, g_model.displayTrims, 0, 2, attr, event); break; case ITEM_MODEL_SETUP_TRIM_INC: diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 23d6e85de..37f81bed3 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -187,7 +187,7 @@ bool menuRadioHardware(event_t event) LcdFlags attr = (sub == k ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); switch (k) { case ITEM_RADIO_HARDWARE_CALIBRATION: - lcdDrawText(MENUS_MARGIN_LEFT, y, "Calibration", attr); + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_CALIBRATION, attr); if (attr && s_editMode>0) { pushMenu(menuRadioCalibration); } diff --git a/radio/src/gui/480x272/screens_setup.cpp b/radio/src/gui/480x272/screens_setup.cpp index 749bd50c2..c1f251460 100644 --- a/radio/src/gui/480x272/screens_setup.cpp +++ b/radio/src/gui/480x272/screens_setup.cpp @@ -121,7 +121,7 @@ bool editZoneOption(coord_t y, const ZoneOption * option, ZoneOptionValue * valu } } else if (option->type == ZoneOption::TextSize) { - lcdDrawTextAtIndex(SCREENS_SETUP_2ND_COLUMN, y, "\010StandardTiny\0 Small\0 Mid\0 Double", value->unsignedValue, attr); + lcdDrawTextAtIndex(SCREENS_SETUP_2ND_COLUMN, y, STR_TEXT_SIZE, value->unsignedValue, attr); if (attr) { value->unsignedValue = checkIncDec(event, value->unsignedValue, 0, 4, i_flags); } @@ -558,7 +558,7 @@ bool menuScreenSetup(int index, event_t event) currentContainer = currentScreen; bool needsOffsetCheck = (menuVerticalPosition != 0 || menuHorizontalPosition < 0); - char title[] = "Main view X"; + char title[] = TR_MAIN_VIEW_X; title[sizeof(title)-2] = '1' + index; menuPageCount = updateMainviewsMenu(); diff --git a/radio/src/gui/480x272/widgets/gauge.cpp b/radio/src/gui/480x272/widgets/gauge.cpp index 5e8772540..099920abc 100644 --- a/radio/src/gui/480x272/widgets/gauge.cpp +++ b/radio/src/gui/480x272/widgets/gauge.cpp @@ -34,10 +34,10 @@ class GaugeWidget: public Widget }; const ZoneOption GaugeWidget::options[] = { - { "Source", ZoneOption::Source, OPTION_VALUE_UNSIGNED(1) }, - { "Min", ZoneOption::Integer, OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(RESX) }, - { "Max", ZoneOption::Integer, OPTION_VALUE_SIGNED(RESX), OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(RESX) }, - { "Color", ZoneOption::Color, OPTION_VALUE_UNSIGNED(RED) }, + { STR_SOURCE, ZoneOption::Source, OPTION_VALUE_UNSIGNED(1) }, + { STR_MIN, ZoneOption::Integer, OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(RESX) }, + { STR_MAX, ZoneOption::Integer, OPTION_VALUE_SIGNED(RESX), OPTION_VALUE_SIGNED(-RESX), OPTION_VALUE_SIGNED(RESX) }, + { STR_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(RED) }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/widgets/outputs.cpp b/radio/src/gui/480x272/widgets/outputs.cpp index 1365e4f72..0628b5faa 100644 --- a/radio/src/gui/480x272/widgets/outputs.cpp +++ b/radio/src/gui/480x272/widgets/outputs.cpp @@ -86,9 +86,9 @@ class OutputsWidget: public Widget }; const ZoneOption OutputsWidget::options[] = { - { "First channel", ZoneOption::Integer, OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(32) }, - { "Fill Background?", ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, - { "BG Color", ZoneOption::Color, OPTION_VALUE_UNSIGNED(LIGHTGREY) }, + { STR_FIRST_CHANNEL, ZoneOption::Integer, OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(1), OPTION_VALUE_UNSIGNED(32) }, + { STR_FILL_BACKGROUND, ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, + { STR_BG_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(LIGHTGREY) }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/widgets/text.cpp b/radio/src/gui/480x272/widgets/text.cpp index 30d593be6..ce18b7b26 100644 --- a/radio/src/gui/480x272/widgets/text.cpp +++ b/radio/src/gui/480x272/widgets/text.cpp @@ -36,10 +36,10 @@ class TextWidget: public Widget }; const ZoneOption TextWidget::options[] = { - { "Text", ZoneOption::String, OPTION_VALUE_STRING(TEXT_WIDGET_DEFAULT_LABEL) }, - { "Color", ZoneOption::Color, OPTION_VALUE_UNSIGNED(RED) }, - { "Size", ZoneOption::TextSize, OPTION_VALUE_UNSIGNED(0) }, - { "Shadow", ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, + { STR_TEXT, ZoneOption::String, OPTION_VALUE_STRING(TEXT_WIDGET_DEFAULT_LABEL) }, + { STR_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(RED) }, + { STR_SIZE, ZoneOption::TextSize, OPTION_VALUE_UNSIGNED(0) }, + { STR_SHADOW, ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/widgets/timer.cpp b/radio/src/gui/480x272/widgets/timer.cpp index 1293a8701..424db91e7 100644 --- a/radio/src/gui/480x272/widgets/timer.cpp +++ b/radio/src/gui/480x272/widgets/timer.cpp @@ -34,7 +34,7 @@ class TimerWidget: public Widget }; const ZoneOption TimerWidget::options[] = { - { "Timer source", ZoneOption::Timer, OPTION_VALUE_UNSIGNED(0) }, + { STR_TIMER_SOURCE, ZoneOption::Timer, OPTION_VALUE_UNSIGNED(0) }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/480x272/widgets/value.cpp b/radio/src/gui/480x272/widgets/value.cpp index 2a36ba7f3..96fc885db 100644 --- a/radio/src/gui/480x272/widgets/value.cpp +++ b/radio/src/gui/480x272/widgets/value.cpp @@ -34,9 +34,9 @@ class ValueWidget: public Widget }; const ZoneOption ValueWidget::options[] = { - { "Source", ZoneOption::Source, OPTION_VALUE_UNSIGNED(MIXSRC_Rud) }, - { "Color", ZoneOption::Color, OPTION_VALUE_UNSIGNED(WHITE) }, - { "Shadow", ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, + { STR_SOURCE, ZoneOption::Source, OPTION_VALUE_UNSIGNED(MIXSRC_Rud) }, + { STR_COLOR, ZoneOption::Color, OPTION_VALUE_UNSIGNED(WHITE) }, + { STR_SHADOW, ZoneOption::Bool, OPTION_VALUE_BOOL(false) }, { NULL, ZoneOption::Bool } }; diff --git a/radio/src/gui/common/stdlcd/view_telemetry.cpp b/radio/src/gui/common/stdlcd/view_telemetry.cpp index e2bf39503..61b506269 100644 --- a/radio/src/gui/common/stdlcd/view_telemetry.cpp +++ b/radio/src/gui/common/stdlcd/view_telemetry.cpp @@ -92,7 +92,7 @@ void menuViewTelemetry(event_t event) } drawTelemetryTopBar(); - lcdDrawText(LCD_W / 2, 3 * FH, "No Telemetry Screens", CENTERED); + lcdDrawText(LCD_W / 2, 3 * FH, STR_NO_TELEMETRY_SCREENS, CENTERED); displayRssiLine(); } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 293e5abf8..ad6ab9675 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -100,6 +100,10 @@ ISTR(MULTI_PROTOCOLS); ISTR(BLUETOOTH_MODES); #endif +#if defined(PCBHORUS) +ISTR(TEXT_SIZE); +#endif + const char STR_POPUPS_ENTER_EXIT[] = TR_POPUPS_ENTER_EXIT; const char STR_OK[] = TR_OK; const char STR_FREE[] = TR_FREE; @@ -587,10 +591,26 @@ const char STR_SPORT_UPDATE_POWER_MODE[] = TR_SPORT_UPDATE_POWER_MODE; #if defined(PCBHORUS) const char STR_ASSIGN_SPLASH[] = TR_ASSIGN_SPLASH; +const char STR_FIRST_CHANNEL[] = TR_FIRST_CHANNEL; +const char STR_FILL_BACKGROUND[] = TR_FILL_BACKGROUND; +const char STR_BG_COLOR[] = TR_BG_COLOR; +const char STR_SLIDERS_TRIMS[] = TR_SLIDERS_TRIMS; +const char STR_SLIDERS[] = TR_SLIDERS; +const char STR_FLIGHT_MODE[] = TR_FLIGHT_MODE; +const char STR_INVALID_FILE[] = TR_INVALID_FILE; +const char STR_TIMER_SOURCE[] = TR_TIMER_SOURCE; +const char STR_SIZE[] = TR_SIZE; +const char STR_SHADOW[] = TR_SHADOW; +const char STR_TEXT[] = TR_TEXT; +const char STR_COLOR[] = TR_COLOR; +const char STR_MAIN_VIEW_X[] = TR_MAIN_VIEW_X; +const char STR_PANEL1_BACKGROUND[] = TR_PANEL1_BACKGROUND; +const char STR_PANEL2_BACKGROUND[] = TR_PANEL2_BACKGROUND; #endif #if !defined(COLORLCD) const char STR_MENUWHENDONE[] = TR_MENUWHENDONE; +const char STR_NO_TELEMETRY_SCREENS[] = TR_NO_TELEMETRY_SCREENS; #endif #if defined(PCBSKY9X) && defined(REVX) diff --git a/radio/src/translations.h b/radio/src/translations.h index 7a28a4299..78c2d123f 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -188,6 +188,7 @@ extern const char STR_EXIT[]; #if !defined(PCBHORUS) extern const char STR_MENUWHENDONE[]; +extern const char STR_NO_TELEMETRY_SCREENS[]; #endif extern const char STR_FREE[]; @@ -592,6 +593,22 @@ extern const char STR_PLAY_FILE[]; extern const char STR_ASSIGN_BITMAP[]; #if defined(PCBHORUS) extern const char STR_ASSIGN_SPLASH[]; +extern const char STR_FIRST_CHANNEL[]; +extern const char STR_FILL_BACKGROUND[]; +extern const char STR_BG_COLOR[]; +extern const char STR_SLIDERS_TRIMS[]; +extern const char STR_SLIDERS[]; +extern const char STR_FLIGHT_MODE[]; +extern const char STR_INVALID_FILE[]; +extern const char STR_TIMER_SOURCE[]; +extern const char STR_TEXT_SIZE[]; +extern const char STR_SIZE[]; +extern const char STR_SHADOW[]; +extern const char STR_TEXT[]; +extern const char STR_COLOR[]; +extern const char STR_MAIN_VIEW_X[]; +extern const char STR_PANEL1_BACKGROUND[]; +extern const char STR_PANEL2_BACKGROUND[]; #endif extern const char STR_EXECUTE_FILE[]; extern const char STR_DELETE_FILE[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index e46a70230..ddf79cef8 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -375,6 +375,9 @@ #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" +#define LEN_TEXT_SIZE "\010" +#define TR_TEXT_SIZE "Standard""Tiny\0 ""Small\0 ""Mid\0 ""Double\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" @@ -985,6 +988,7 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " +#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Název" @@ -1028,6 +1032,23 @@ // Horus footer descriptions #define TR_LSW_DESCRIPTIONS { "Typ porovnávací funkce", "První proměnná", "Druhá proměnná nebo konstanta", "Druhá proměnná nebo konstanta", "Další stav povolující tenko spínač", "Minimální doba trvání sepnutého stavu", "Minimální doba platné podmínky pro aktivaci" } +// Horus layouts and widgets +#define TR_FIRST_CHANNEL "First channel" +#define TR_FILL_BACKGROUND "Fill background?" +#define TR_BG_COLOR "BG Color" +#define TR_SLIDERS_TRIMS "Sliders+Trims" +#define TR_SLIDERS "Sliders" +#define TR_FLIGHT_MODE "Flight mode" +#define TR_INVALID_FILE "Invalid File" +#define TR_TIMER_SOURCE "Timer source" +#define TR_SIZE "Size" +#define TR_SHADOW "Shadow" +#define TR_TEXT "Text" +#define TR_COLOR "Color" +#define TR_MAIN_VIEW_X "Main view X" +#define TR_PANEL1_BACKGROUND "Panel1 background" +#define TR_PANEL2_BACKGROUND "Panel2 background" + // Taranis About screen #define TR_ABOUTUS TR(" O nás ", "O nás") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 9da0cadc6..e8be3ab1c 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -378,6 +378,9 @@ #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" +#define LEN_TEXT_SIZE "\010" +#define TR_TEXT_SIZE "Standard""Tiny\0 ""Small\0 ""Mid\0 ""Double\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT " " @@ -991,6 +994,7 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " +#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" // Horus and Taranis specific column headers #define TR_PHASES_HEADERS_NAME "Name " @@ -1003,6 +1007,24 @@ #define TR_PHASES_HEADERS_CH6_TRIM "Trim 6" #define TR_PHASES_HEADERS_FAD_IN "Langs Ein" #define TR_PHASES_HEADERS_FAD_OUT "Langs Aus" + +// Horus layouts and widgets +#define TR_FIRST_CHANNEL "First channel" +#define TR_FILL_BACKGROUND "Fill background?" +#define TR_BG_COLOR "BG Color" +#define TR_SLIDERS_TRIMS "Sliders+Trims" +#define TR_SLIDERS "Sliders" +#define TR_FLIGHT_MODE "Flight mode" +#define TR_INVALID_FILE "Invalid File" +#define TR_TIMER_SOURCE "Timer source" +#define TR_SIZE "Size" +#define TR_SHADOW "Shadow" +#define TR_TEXT "Text" +#define TR_COLOR "Color" +#define TR_MAIN_VIEW_X "Main view X" +#define TR_PANEL1_BACKGROUND "Panel1 background" +#define TR_PANEL2_BACKGROUND "Panel2 background" + // Taranis Info Zeile Anzeigen #define TR_LIMITS_HEADERS_NAME "Name" #define TR_LIMITS_HEADERS_SUBTRIM "Subtrim" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index c5211468e..b0982cb19 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -378,6 +378,9 @@ #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" +#define LEN_TEXT_SIZE "\010" +#define TR_TEXT_SIZE "Standard""Tiny\0 ""Small\0 ""Mid\0 ""Double\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT " " @@ -990,6 +993,7 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " +#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Name" @@ -1033,6 +1037,23 @@ // Horus footer descriptions #define TR_LSW_DESCRIPTIONS { "Comparison type or function", "First variable", "Second variable or constant", "Second variable or constant", "Additional condition for line to be enabled", "Minimum ON duration of the logical switch", "Minimum TRUE duration for the switch to become ON" } +// Horus layouts and widgets +#define TR_FIRST_CHANNEL "First channel" +#define TR_FILL_BACKGROUND "Fill background?" +#define TR_BG_COLOR "BG Color" +#define TR_SLIDERS_TRIMS "Sliders+Trims" +#define TR_SLIDERS "Sliders" +#define TR_FLIGHT_MODE "Flight mode" +#define TR_INVALID_FILE "Invalid File" +#define TR_TIMER_SOURCE "Timer source" +#define TR_SIZE "Size" +#define TR_SHADOW "Shadow" +#define TR_TEXT "Text" +#define TR_COLOR "Color" +#define TR_MAIN_VIEW_X "Main view X" +#define TR_PANEL1_BACKGROUND "Panel1 background" +#define TR_PANEL2_BACKGROUND "Panel2 background" + // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 73bbf0b16..6a823ddcb 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -375,6 +375,9 @@ #define LEN_GYROS "\004" #define TR_GYROS "GyrX""GyrY" +#define LEN_TEXT_SIZE "\013" +#define TR_TEXT_SIZE "Normal\0 ""Muy pequeño""Pequeño\0 ""Medio\0 ""Doble\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT " " @@ -989,7 +992,7 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " - +#define TR_NO_TELEMETRY_SCREENS TR("No hay pant. telemetria", "No hay pantallas de telemetria") // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nombre" @@ -1033,6 +1036,23 @@ // Horus footer descriptions #define TR_LSW_DESCRIPTIONS { "Tipo de comparacion o funcion", "Primera variable", "Segunda variable o constante", "Segunda variable o constante", "Condicion adicional para activar linea", "Duracion minima de switch logico", "Duracion minima TRUE para activar switch logico" } +// Horus layouts and widgets +#define TR_FIRST_CHANNEL "Primer canal" +#define TR_FILL_BACKGROUND "Rellenar fondo" +#define TR_BG_COLOR "Color BG" +#define TR_SLIDERS_TRIMS "Sliders+Trims" +#define TR_SLIDERS "Sliders" +#define TR_FLIGHT_MODE "Modo de vuelo" +#define TR_INVALID_FILE "Fichero no valido" +#define TR_TIMER_SOURCE "Entrada timer" +#define TR_SIZE "Tamaño" +#define TR_SHADOW "Sombra" +#define TR_TEXT "Texto" +#define TR_COLOR "Color" +#define TR_MAIN_VIEW_X "Vista principal X" +#define TR_PANEL1_BACKGROUND "Fondo panel1" +#define TR_PANEL2_BACKGROUND "Fondo panel2" + // Taranis About screen #define TR_ABOUTUS "Nosotros" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index b3665f787..2c8041379 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -165,6 +165,9 @@ #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 ""ax\0 ""ax""|a|b\0 ""a Date: Tue, 21 Apr 2020 14:53:33 +0200 Subject: [PATCH 078/199] Streamline multi interface (#7524) --- radio/src/gui/128x64/model_setup.cpp | 27 +++++++++++++++++---- radio/src/gui/212x64/model_setup.cpp | 34 +++++++++++++++++++++++---- radio/src/gui/480x272/model_setup.cpp | 30 +++++++++++++++++++---- radio/src/gui/gui_common.cpp | 26 +++++++++++++++++++- radio/src/gui/gui_common.h | 11 ++++++--- radio/src/io/multi_firmware_update.h | 2 +- radio/src/pulses/modules_constants.h | 34 ++++++++++++++------------- radio/src/pulses/modules_helpers.h | 3 +++ radio/src/telemetry/multi.cpp | 2 +- radio/src/telemetry/telemetry.h | 1 + radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 1 + radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 1 + radio/src/translations/nl.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 23 files changed, 147 insertions(+), 36 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 2f40a0d0e..eb7fea4ab 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -313,7 +313,7 @@ void onBluetoothConnectMenu(const char * result) MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS */ \ MODULE_CHANNELS_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS */ \ - IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(IF_INTERNAL_MODULE_ON(isModuleRxNumAvailable(INTERNAL_MODULE) ? (uint8_t)2 : (uint8_t)1))), /* *ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE */\ + IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(IF_INTERNAL_MODULE_ON(MODULE_BIND_ROWS(INTERNAL_MODULE)))), /* *ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE */\ IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM */ \ MODULE_OPTION_ROW(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_OPTIONS */ \ MULTIMODULE_MODULE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_AUTOBIND */ \ @@ -1000,7 +1000,25 @@ void menuModelSetup(event_t event) lcdDrawMultiProtocolString(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, multi_rfProto, attr); if (attr) { int multiRfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); - CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + MultiModuleStatus &status = getMultiModuleStatus(moduleIdx); + if (status.isValid()) { + int8_t direction = checkIncDec(event, 0, -1, 1); + if (direction == -1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX_RX; + else + multiRfProto = convertMultiToOtx(status.protocolPrev); + } + if (direction == 1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX2; + else + multiRfProto = convertMultiToOtx(status.protocolNext); + } + } + else { + CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + } if (checkIncDec_Ret) { g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); g_model.moduleData[moduleIdx].subType = 0; @@ -1326,7 +1344,8 @@ void menuModelSetup(event_t event) } } lcdDrawText(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0); - lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); + if (!IS_RX_MULTI(moduleIdx)) + lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); uint8_t newFlag = 0; #if defined(MULTIMODULE) if (getMultiBindStatus(moduleIdx) == MULTI_BIND_FINISHED) { @@ -1586,7 +1605,7 @@ void menuModelSetup(event_t event) } #if defined(MULTIMODULE) else if (isModuleMultimodule(moduleIdx)) { - module.multi.lowPowerMode = editCheckBox(module.multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_LOWPOWER, attr, event); + module.multi.lowPowerMode = editCheckBox(module.multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, IS_RX_MULTI(moduleIdx) ? STR_MULTI_LNA_DISABLE : STR_MULTI_LOWPOWER, attr, event); } #endif diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index b03b13d17..0de6b7294 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -907,7 +907,25 @@ void menuModelSetup(event_t event) switch (menuHorizontalPosition) { case 0: { int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(); - CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + MultiModuleStatus &status = getMultiModuleStatus(EXTERNAL_MODULE); + if (status.isValid()) { + int8_t direction = checkIncDec(event, 0, -1, 1); + if (direction == -1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX_RX; + else + multiRfProto = convertMultiToOtx(status.protocolPrev); + } + if (direction == 1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX2; + else + multiRfProto = convertMultiToOtx(status.protocolNext); + } + } + else { + CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + } if (checkIncDec_Ret) { g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); g_model.moduleData[EXTERNAL_MODULE].subType = 0; @@ -1122,8 +1140,13 @@ void menuModelSetup(event_t event) lcdDrawText(INDENT_WIDTH, y, STR_RECEIVER_NUM); } if (isModuleBindRangeAvailable(moduleIdx)) { - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2); - bindButtonPos = lcdNextPos + FW; + if (!IS_RX_MULTI(moduleIdx)) { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz == 0 ? attr : 0) | LEADING0 | LEFT, 2); + bindButtonPos = lcdNextPos + FW; + } + else { + bindButtonPos = MODEL_SETUP_2ND_COLUMN; + } if (attr && l_posHorz==0) { if (s_editMode>0) { CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], getMaxRxNum(moduleIdx)); @@ -1141,7 +1164,8 @@ void menuModelSetup(event_t event) } } lcdDrawText(bindButtonPos, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0); - lcdDrawText(lcdNextPos + FW, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); + if (!IS_RX_MULTI(moduleIdx)) + lcdDrawText(lcdNextPos + FW, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); uint8_t newFlag = 0; #if defined(MULTIMODULE) if (getMultiBindStatus(moduleIdx) == MULTI_BIND_FINISHED) { @@ -1306,7 +1330,7 @@ void menuModelSetup(event_t event) } #if defined (MULTIMODULE) else if (isModuleMultimodule(moduleIdx)) { - g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_LOWPOWER, attr, event); + g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, IS_RX_MULTI(moduleIdx) ? STR_MULTI_LNA_DISABLE : STR_MULTI_LOWPOWER, attr, event); } #endif break; diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index b165d201f..83c23161b 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -1112,9 +1112,27 @@ bool menuModelSetup(event_t event) if (isModuleDSM2(moduleIdx)) CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); #if defined(MULTIMODULE) - else if (isModuleMultimodule(moduleIdx)) { + else if (isModuleMultimodule(moduleIdx)) { int multiRfProto = g_model.moduleData[moduleIdx].getMultiProtocol(); - CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + MultiModuleStatus &status = getMultiModuleStatus(moduleIdx); + if (status.isValid()) { + int8_t direction = checkIncDec(event, 0, -1, 1); + if (direction == -1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX_RX; + else + multiRfProto = convertMultiToOtx(status.protocolPrev); + } + if (direction == 1) { + if (multiRfProto == MODULE_SUBTYPE_MULTI_FRSKY) + multiRfProto = MODULE_SUBTYPE_MULTI_FRSKYX2; + else + multiRfProto = convertMultiToOtx(status.protocolNext); + } + } + else { + CHECK_INCDEC_MODELVAR_CHECK(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MULTI_MAX_PROTOCOLS, isMultiProtocolSelectable); + } if (checkIncDec_Ret) { g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); g_model.moduleData[moduleIdx].subType = 0; @@ -1336,7 +1354,8 @@ bool menuModelSetup(event_t event) { lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, STR_MODULE); drawButton(MODEL_SETUP_2ND_COLUMN, y, STR_REGISTER, (menuHorizontalPosition == 0 ? attr : 0)); - drawButton(MODEL_SETUP_2ND_COLUMN + MODEL_SETUP_SET_FAILSAFE_OFS, y, STR_MODULE_RANGE, (menuHorizontalPosition == 1 ? attr : 0)); + if (!IS_RX_MULTI(moduleIdx)) + drawButton(MODEL_SETUP_2ND_COLUMN + MODEL_SETUP_SET_FAILSAFE_OFS, y, STR_MODULE_RANGE, (menuHorizontalPosition == 1 ? attr : 0)); if (attr) { if (moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && s_editMode > 0) { if (menuHorizontalPosition == 0 && event == EVT_KEY_BREAK(KEY_ENTER)) { @@ -1520,7 +1539,8 @@ bool menuModelSetup(event_t event) } } drawButton(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, (moduleState[moduleIdx].mode == MODULE_MODE_BIND ? BUTTON_ON : BUTTON_OFF) | (l_posHorz==1 ? attr : 0)); - drawButton(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, (moduleState[moduleIdx].mode == MODULE_MODE_RANGECHECK ? BUTTON_ON : BUTTON_OFF) | (l_posHorz==2 ? attr : 0)); + if (!IS_RX_MULTI(moduleIdx)) + drawButton(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, (moduleState[moduleIdx].mode == MODULE_MODE_RANGECHECK ? BUTTON_ON : BUTTON_OFF) | (l_posHorz==2 ? attr : 0)); uint8_t newFlag = 0; #if defined(MULTIMODULE) if (getMultiBindStatus(moduleIdx) == MULTI_BIND_FINISHED) { @@ -1683,7 +1703,7 @@ bool menuModelSetup(event_t event) } #if defined(MULTIMODULE) else if (isModuleMultimodule(moduleIdx)) { - lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_LOWPOWER); + lcdDrawText(MENUS_MARGIN_LEFT, y, IS_RX_MULTI(moduleIdx) ? STR_MULTI_LNA_DISABLE : STR_MULTI_LOWPOWER); g_model.moduleData[moduleIdx].multi.lowPowerMode = editCheckBox(g_model.moduleData[moduleIdx].multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, attr, event); } #endif diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 5efab1510..07a093fdf 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -789,7 +789,7 @@ int getFirstAvailable(int min, int max, IsValueAvailable isValueAvailable) #if defined(MULTIMODULE) // This maps OpenTX multi type with Pascal's Multi type -uint8_t convertMultiProtocol(uint8_t moduleIdx, uint8_t type) +uint8_t multiConvertOtxToMulti(uint8_t moduleIdx, uint8_t type) { // 15 for Multimodule is FrskyX or D16 which we map as a subprotocol of 3 (FrSky) @@ -818,6 +818,27 @@ uint8_t convertMultiProtocol(uint8_t moduleIdx, uint8_t type) return type; } +// This maps multi type to OpenTX number, type ONLY (no subtype) +int convertMultiToOtx(int type) +{ + if (type == 3) //FrSkyD + return MODULE_SUBTYPE_MULTI_FRSKY; + + if (type == 15) //FrSkyX + return MODULE_SUBTYPE_MULTI_FRSKY; + + if (type == 25) //FrSkyV + return MODULE_SUBTYPE_MULTI_FRSKY; + + if (type > 25) + type = type - 1; + + if (type > 15) + type = type - 1; + + return type - 1; //Multi list starts at 1 +} + // Third row is number of subtypes -1 (max valid subtype) #define NO_SUBTYPE nullptr @@ -866,6 +887,7 @@ const char STR_SUBTYPE_ZSX[] = "\007""280JJRC"; const char STR_SUBTYPE_FLYZONE[] = "\005""FZ410"; const char STR_SUBTYPE_FX816[] = "\003""P38"; const char STR_SUBTYPE_ESKY150[] = "\003""4CH""7CH"; +const char STR_SUBTYPE_FRSKYL[] = "\010""LR12\0 ""LR12 6ch"; const char* mm_options_strings::options[] = { nullptr, @@ -925,6 +947,8 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_FRSKYX2, 4, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_PROPEL, 0, false, false, NO_SUBTYPE, nullptr}, + {MODULE_SUBTYPE_MULTI_FRSKYL, 1, false, false, STR_SUBTYPE_FRSKYL, STR_MULTI_RFTUNE}, {MM_RF_CUSTOM_SELECTED, 7, true, 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 55233ea17..5b8c61a97 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -122,6 +122,8 @@ void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value, void drawSourceCustomValue(coord_t x, coord_t y, source_t channel, int32_t val, LcdFlags flags=0); void drawSourceValue(coord_t x, coord_t y, source_t channel, LcdFlags flags=0); +int convertMultiToOtx(int type); + void drawCurve(coord_t offset=0); #if defined(COLORLCD) @@ -139,6 +141,9 @@ void runFatalErrorScreen(const char * message); inline uint8_t MODULE_BIND_ROWS(int moduleIdx) { + if (IS_RX_MULTI(moduleIdx)) + return 0; + if (isModuleXJTD8(moduleIdx) || isModuleSBUS(moduleIdx)) return 1; @@ -150,7 +155,7 @@ inline uint8_t MODULE_BIND_ROWS(int moduleIdx) inline uint8_t MODULE_CHANNELS_ROWS(int moduleIdx) { - if (!IS_MODULE_ENABLED(moduleIdx)) + if (!IS_MODULE_ENABLED(moduleIdx) || IS_RX_MULTI(moduleIdx)) return HIDDEN_ROW; if (isModuleDSM2(moduleIdx) || isModuleCrossfire(moduleIdx) || isModuleSBUS(moduleIdx) || (isModuleMultimodule(moduleIdx) && g_model.moduleData[moduleIdx].getMultiProtocol() != MODULE_SUBTYPE_MULTI_DSM2)) @@ -250,14 +255,14 @@ inline uint8_t MULTIMODULE_HASOPTIONS(uint8_t moduleIdx) return false; } -#define MULTIMODULE_MODULE_ROWS(moduleIdx) MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTI_DISABLE_CHAN_MAP_ROW(moduleIdx), // AUTOBIND, DISABLE TELEM, DISABLE CN.MAP +#define MULTIMODULE_MODULE_ROWS(moduleIdx) (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) && !IS_RX_MULTI(moduleIdx)) ? (uint8_t) 0 : HIDDEN_ROW, (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) && !IS_RX_MULTI(moduleIdx)) ? (uint8_t) 0 : HIDDEN_ROW, MULTI_DISABLE_CHAN_MAP_ROW(moduleIdx), // AUTOBIND, DISABLE TELEM, DISABLE CN.MAP #define MULTIMODULE_TYPE_ROW(moduleIdx) isModuleMultimodule(moduleIdx) ? MULTIMODULE_RFPROTO_COLUMNS(moduleIdx) : HIDDEN_ROW, #define MULTIMODULE_STATUS_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? TITLE_ROW : HIDDEN_ROW, (isModuleMultimodule(moduleIdx) && getMultiSyncStatus(moduleIdx).isValid()) ? TITLE_ROW : HIDDEN_ROW, #define MULTIMODULE_MODE_ROWS(moduleIdx) (g_model.moduleData[moduleIdx].multi.customProto) ? (uint8_t) 3 : MULTIMODULE_HAS_SUBTYPE(moduleIdx) ? (uint8_t)2 : (uint8_t)1 #define MULTIMODULE_TYPE_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, #define MULTIMODULE_SUBTYPE_ROWS(moduleIdx) isModuleMultimodule(moduleIdx) ? MULTIMODULE_RFPROTO_COLUMNS(moduleIdx) : HIDDEN_ROW, #define MULTIMODULE_OPTIONS_ROW(moduleIdx) (isModuleMultimodule(moduleIdx) && MULTIMODULE_HASOPTIONS(moduleIdx)) ? (uint8_t) 0: HIDDEN_ROW -#define MODULE_POWER_ROW(moduleIdx) (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) || isModuleR9MNonAccess(moduleIdx)) ? (isModuleR9MLiteNonPro(moduleIdx) ? (isModuleR9M_FCC_VARIANT(moduleIdx) ? READONLY_ROW : (uint8_t)0) : (uint8_t)0) : HIDDEN_ROW +#define MODULE_POWER_ROW(moduleIdx) (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) || isModuleR9MNonAccess(moduleIdx)) ? (isModuleR9MLiteNonPro(moduleIdx) ? (isModuleR9M_FCC_VARIANT(moduleIdx) ? READONLY_ROW : (uint8_t)0) : (uint8_t)0) : HIDDEN_ROW #else #define MULTIMODULE_STATUS_ROWS(moduleIdx) diff --git a/radio/src/io/multi_firmware_update.h b/radio/src/io/multi_firmware_update.h index a4ad7156f..a4cb255fb 100644 --- a/radio/src/io/multi_firmware_update.h +++ b/radio/src/io/multi_firmware_update.h @@ -71,7 +71,7 @@ class MultiFirmwareInformation { bool isMultiInternalFirmware() const { - return (boardType == FIRMWARE_MULTI_STM && telemetryInversion == false && optibootSupport == true && bootloaderCheck == true && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); + return (boardType == FIRMWARE_MULTI_STM && optibootSupport == true && bootloaderCheck == true && telemetryType == FIRMWARE_MULTI_TELEM_MULTI_TELEMETRY); } bool isMultiExternalFirmware() const diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index d890e38ab..a519d0269 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -102,68 +102,70 @@ enum ModuleSubtypeR9M { enum ModuleSubtypeMulti { MODULE_SUBTYPE_MULTI_FIRST = 0, MODULE_SUBTYPE_MULTI_FLYSKY = MODULE_SUBTYPE_MULTI_FIRST, - MODULE_SUBTYPE_MULTI_HUBSAN, - MODULE_SUBTYPE_MULTI_FRSKY, - MODULE_SUBTYPE_MULTI_HISKY, - MODULE_SUBTYPE_MULTI_V2X2, - MODULE_SUBTYPE_MULTI_DSM2, + MODULE_SUBTYPE_MULTI_HUBSAN, //1 + MODULE_SUBTYPE_MULTI_FRSKY, //2 + MODULE_SUBTYPE_MULTI_HISKY, //3 + MODULE_SUBTYPE_MULTI_V2X2, //4 + MODULE_SUBTYPE_MULTI_DSM2, //5 MODULE_SUBTYPE_MULTI_DEVO, MODULE_SUBTYPE_MULTI_YD717, MODULE_SUBTYPE_MULTI_KN, MODULE_SUBTYPE_MULTI_SYMAX, - MODULE_SUBTYPE_MULTI_SLT, + MODULE_SUBTYPE_MULTI_SLT, //10 MODULE_SUBTYPE_MULTI_CX10, MODULE_SUBTYPE_MULTI_CG023, MODULE_SUBTYPE_MULTI_BAYANG, MODULE_SUBTYPE_MULTI_ESky, - MODULE_SUBTYPE_MULTI_MT99XX, + MODULE_SUBTYPE_MULTI_MT99XX, //15 MODULE_SUBTYPE_MULTI_MJXQ, MODULE_SUBTYPE_MULTI_SHENQI, MODULE_SUBTYPE_MULTI_FY326, MODULE_SUBTYPE_MULTI_SFHSS, - MODULE_SUBTYPE_MULTI_J6PRO, + MODULE_SUBTYPE_MULTI_J6PRO, //20 MODULE_SUBTYPE_MULTI_FQ777, MODULE_SUBTYPE_MULTI_ASSAN, MODULE_SUBTYPE_MULTI_HONTAI, MODULE_SUBTYPE_MULTI_OLRS, - MODULE_SUBTYPE_MULTI_FS_AFHDS2A, + MODULE_SUBTYPE_MULTI_FS_AFHDS2A, //25 MODULE_SUBTYPE_MULTI_Q2X2, MODULE_SUBTYPE_MULTI_WK_2X01, MODULE_SUBTYPE_MULTI_Q303, MODULE_SUBTYPE_MULTI_GW008, - MODULE_SUBTYPE_MULTI_DM002, + MODULE_SUBTYPE_MULTI_DM002, //30 MODULE_SUBTYPE_MULTI_CABELL, MODULE_SUBTYPE_MULTI_ESKY150, MODULE_SUBTYPE_MULTI_H83D, MODULE_SUBTYPE_MULTI_CORONA, - MODULE_SUBTYPE_MULTI_CFLIE, + MODULE_SUBTYPE_MULTI_CFLIE, //35 MODULE_SUBTYPE_MULTI_HITEC, MODULE_SUBTYPE_MULTI_WFLY, MODULE_SUBTYPE_MULTI_BUGS, MODULE_SUBTYPE_MULTI_BUGS_MINI, - MODULE_SUBTYPE_MULTI_TRAXXAS, + MODULE_SUBTYPE_MULTI_TRAXXAS, //40 MODULE_SUBTYPE_MULTI_NCC1701, MODULE_SUBTYPE_MULTI_E01X, MODULE_SUBTYPE_MULTI_V911S, MODULE_SUBTYPE_MULTI_GD00X, - MODULE_SUBTYPE_MULTI_V761, + MODULE_SUBTYPE_MULTI_V761, //45 MODULE_SUBTYPE_MULTI_KF606, MODULE_SUBTYPE_MULTI_REDPINE, MODULE_SUBTYPE_MULTI_POTENSIC, MODULE_SUBTYPE_MULTI_ZSX, - MODULE_SUBTYPE_MULTI_FLYZONE, + MODULE_SUBTYPE_MULTI_FLYZONE, //50 MODULE_SUBTYPE_MULTI_SCANNER, MODULE_SUBTYPE_MULTI_FRSKYX_RX, MODULE_SUBTYPE_MULTI_AFHDS2A_RX, MODULE_SUBTYPE_MULTI_HOTT, - MODULE_SUBTYPE_MULTI_FX816, + MODULE_SUBTYPE_MULTI_FX816, //55 MODULE_SUBTYPE_MULTI_BAYANG_RX, MODULE_SUBTYPE_MULTI_PELIKAN, MODULE_SUBTYPE_MULTI_TIGER, MODULE_SUBTYPE_MULTI_XK, - MODULE_SUBTYPE_MULTI_XN297DUMP, + MODULE_SUBTYPE_MULTI_XN297DUMP, //60 MODULE_SUBTYPE_MULTI_FRSKYX2, MODULE_SUBTYPE_MULTI_FRSKY_R9, + MODULE_SUBTYPE_MULTI_PROPEL, + MODULE_SUBTYPE_MULTI_FRSKYL, MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FRSKY_R9 }; #define MODULE_SUBTYPE_MULTI_XN297DP 63-3 diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 244e58a79..c8e8411c4 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -384,6 +384,9 @@ inline bool isModuleRxNumAvailable(uint8_t moduleIdx) if (isModuleISRM(moduleIdx)) return true; + if (IS_RX_MULTI(moduleIdx)) + return false; + if (isModuleMultimodule(moduleIdx)) return true; diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index b86347547..3719d660b 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -555,7 +555,7 @@ void MultiModuleStatus::getStatusString(char * statusText) const return; } - if (major <= 1 && minor <= 3 && revision <= 0 && patch < 87 && SLOW_BLINK_ON_PHASE) { + if (major <= 1 && minor <= 3 && revision <= 0 && patch < 91 && SLOW_BLINK_ON_PHASE) { strcpy(statusText, STR_MODULE_UPGRADE); } else { diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index c74057c78..c7228a0ff 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -111,6 +111,7 @@ extern uint8_t telemetryProtocol; #define IS_D16_MULTI(module) (((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_CLONED)) \ || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX2)) #define IS_HOTT_MULTI(module) (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT) + #define IS_RX_MULTI(module) ((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_AFHDS2A_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_BAYANG_RX)) #if defined(HARDWARE_INTERNAL_MODULE) #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT || (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (IS_D16_MULTI(INTERNAL_MODULE)||IS_D16_MULTI(EXTERNAL_MODULE)))) #else diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index ad6ab9675..24f18e058 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -695,6 +695,7 @@ const char STR_DISABLE_CH_MAP[] = TR_DISABLE_CH_MAP; const char STR_DISABLE_TELEM[] = TR_DISABLE_TELEM; const char STR_MULTI_DSM_AUTODTECT[] = TR_MULTI_DSM_AUTODTECT; const char STR_MULTI_LOWPOWER[] = TR_MULTI_LOWPOWER; +const char STR_MULTI_LNA_DISABLE[] = TR_MULTI_LNA_DISABLE; const char STR_MODULE_NO_SERIAL_MODE[] = TR_MODULE_NO_SERIAL_MODE; const char STR_MODULE_NO_INPUT[] = TR_MODULE_NO_INPUT; const char STR_MODULE_WAITFORBIND[] = TR_MODULE_WAITFORBIND; diff --git a/radio/src/translations.h b/radio/src/translations.h index 78c2d123f..179972304 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -394,6 +394,7 @@ extern const char STR_DISABLE_CH_MAP[]; extern const char STR_DISABLE_TELEM[]; extern const char STR_MULTI_DSM_AUTODTECT[]; extern const char STR_MULTI_LOWPOWER[]; +extern const char STR_MULTI_LNA_DISABLE[]; extern const char STR_MODULE_NO_SERIAL_MODE[]; extern const char STR_MODULE_NO_INPUT[]; extern const char STR_MODULE_WAITFORBIND[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index ddf79cef8..3b4beb3dd 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -638,6 +638,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetekce", INDENT "Formát autodetekce") #define TR_MULTI_LOWPOWER TR(INDENT "Nízký výkon", INDENT "Režim nízkého výkonu") +#define TR_MULTI_LNA_DISABLE INDENT "LNA disable" #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") #define TR_MODULE_TELEM_ON TR("Zap", "Zapnuto") #define TR_DISABLE_INTERNAL TR("Vypnout int.", "Vypnout interní RF") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index e8be3ab1c..79974e4a1 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -640,6 +640,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index b0982cb19..55efa2cf3 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -639,6 +639,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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.", "Disable internal RF") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 6a823ddcb..7b10a3f93 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -641,6 +641,7 @@ #define TR_DISABLE_TELEM TR("No telem", "Desactivar telem.") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetectar formato") #define TR_MULTI_LOWPOWER TR(INDENT "Baja poten.", INDENT "Modo de baja poten.") +#define TR_MULTI_LNA_DISABLE INDENT "LNA disable" #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") #define TR_MODULE_TELEM_ON TR("ON", "Activado") #define TR_DISABLE_INTERNAL TR("Desac.RF int", "Desact. mod. int. RF") diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 2c8041379..933ad7103 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -657,6 +657,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index bad7562ec..4a8e95e9d 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -660,6 +660,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Désact Télémétrie") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodét.", INDENT "Autodétection") #define TR_MULTI_LOWPOWER TR(INDENT "Basse puis.", INDENT "Mode basse puiss.") +#define TR_MULTI_LNA_DISABLE INDENT "LNA disable" #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "Lien S.Port") #define TR_MODULE_TELEM_ON TR("ON", "Actif") #define TR_DISABLE_INTERNAL TR("Désact intRF", "Désact. RF interne") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 2035c5c80..e118fcd21 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -659,6 +659,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Telem. disabil.") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Trova autom.", INDENT "Autoril. il formato") #define TR_MULTI_LOWPOWER TR(INDENT "Bassa pot.", INDENT "Modo bassa potenza") +#define TR_MULTI_LNA_DISABLE INDENT "LNA disable" #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "Link S.Port") #define TR_MODULE_TELEM_ON TR("ON", "Abilitato") #define TR_DISABLE_INTERNAL TR("Disatt. RF int.", "Disattiva RF interna") diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 256bf0513..5425c6033 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -645,6 +645,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index f4c388f21..d82ffc70c 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -658,6 +658,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index a43757e1c..671370d01 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -649,6 +649,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 2c4e585b5..b2fbe7ec4 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -658,6 +658,7 @@ #define TR_DISABLE_TELEM TR("No Telem", "Disable Telemetry") #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_LNA_DISABLE INDENT "LNA disable" #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") From ce3f8374a1e316f159e9d9cc59b24583d5bf28b6 Mon Sep 17 00:00:00 2001 From: RealTadango Date: Tue, 21 Apr 2020 15:04:17 +0200 Subject: [PATCH 079/199] Using the right precision for unknown (custom) sensors (#7508) Co-authored-by: Herman Kruisman --- radio/src/telemetry/frsky_sport.cpp | 2 +- radio/src/telemetry/telemetry_sensors.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index ebb90586a..0e4f3920c 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -130,7 +130,7 @@ uint16_t rboxState; void sportProcessTelemetryPacket(uint16_t id, uint8_t subId, uint8_t instance, uint32_t data, TelemetryUnit unit=UNIT_RAW) { const FrSkySportSensor * sensor = getFrSkySportSensor(id, subId); - uint8_t precision = 0; + uint8_t precision = 255; if (sensor) { if (unit == UNIT_RAW) unit = sensor->unit; diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index dc9742b55..66b0e2255 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -82,6 +82,10 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 { int32_t newVal = val; + if(prec == 255) { + prec = sensor.prec; + } + if (unit == UNIT_CELLS) { uint32_t data = uint32_t(newVal); uint8_t cellsCount = (data >> 24); From 4ac35a2e23a06f841290b441ecbd3bb0c6cad95b Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 21 Apr 2020 15:14:20 +0200 Subject: [PATCH 080/199] Add one more line to text viewer (#7528) --- radio/src/gui/128x64/gui.h | 1 + radio/src/gui/212x64/gui.h | 1 + radio/src/gui/480x272/gui.h | 1 + radio/src/gui/480x272/view_text.cpp | 8 ++++---- radio/src/sdcard.cpp | 8 ++++---- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index d7e1538f5..b5ba20b5d 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -40,6 +40,7 @@ #define drawFieldLabel(x, y, str) lcdDrawTextAlignedLeft(y, str) #define NUM_BODY_LINES (LCD_LINES-1) +#define TEXT_VIEWER_LINES NUM_BODY_LINES #define MENU_HEADER_HEIGHT FH #define CURVE_SIDE_WIDTH (LCD_H/2) diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index c430a0646..20dc6b09b 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -32,6 +32,7 @@ #define DEFAULT_SCROLLBAR_X (LCD_W-1) #define NUM_BODY_LINES (LCD_LINES-1) +#define TEXT_VIEWER_LINES NUM_BODY_LINES #define MENU_HEADER_HEIGHT FH #define MODEL_BITMAP_WIDTH 64 diff --git a/radio/src/gui/480x272/gui.h b/radio/src/gui/480x272/gui.h index e17858f22..17618563e 100644 --- a/radio/src/gui/480x272/gui.h +++ b/radio/src/gui/480x272/gui.h @@ -47,6 +47,7 @@ #define FH 20 #define NUM_BODY_LINES (MENU_BODY_HEIGHT / FH) +#define TEXT_VIEWER_LINES ((MENU_FOOTER_TOP-MENU_HEADER_HEIGHT) / FH) #define INVERT_HORZ_MARGIN 2 #define INVERT_VERT_MARGIN 1 diff --git a/radio/src/gui/480x272/view_text.cpp b/radio/src/gui/480x272/view_text.cpp index 24a1779db..e09f62699 100644 --- a/radio/src/gui/480x272/view_text.cpp +++ b/radio/src/gui/480x272/view_text.cpp @@ -42,7 +42,7 @@ bool menuTextView(event_t event) break; case EVT_ROTARY_RIGHT: - if (menuVerticalOffset + NUM_BODY_LINES >= lines_count) + if (menuVerticalOffset + TEXT_VIEWER_LINES >= lines_count) break; else ++menuVerticalOffset; @@ -55,11 +55,11 @@ bool menuTextView(event_t event) break; } - for (int i=0; idrawTextMaxWidth(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + i * FH, reusableBuffer.viewText.lines[i], 0, LCD_W - 2 * MENUS_MARGIN_LEFT); + for (int i = 0; i < TEXT_VIEWER_LINES; i++) { + lcd->drawTextMaxWidth(MENUS_MARGIN_LEFT, MENU_HEADER_HEIGHT + i * FH, reusableBuffer.viewText.lines[i], 0, LCD_W - 2 * MENUS_MARGIN_LEFT); } - drawVerticalScrollbar(LCD_W-5, 50, 195, menuVerticalOffset, lines_count, NUM_BODY_LINES); + drawVerticalScrollbar(LCD_W-5, 50, 195, menuVerticalOffset, lines_count, TEXT_VIEWER_LINES); return true; } diff --git a/radio/src/sdcard.cpp b/radio/src/sdcard.cpp index be89633f3..42bf5491e 100644 --- a/radio/src/sdcard.cpp +++ b/radio/src/sdcard.cpp @@ -412,7 +412,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen constexpr uint32_t TEXT_FILE_MAXSIZE = 2048; -void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + 1], int & lines_count) +void sdReadTextFile(const char * filename, char lines[TEXT_VIEWER_LINES][LCD_COLS + 1], int & lines_count) { FIL file; int result; @@ -423,17 +423,17 @@ void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + char escape_chars[4] = {0}; int current_line = 0; - memclear(lines, NUM_BODY_LINES * (LCD_COLS + 1)); + memclear(lines, TEXT_VIEWER_LINES * (LCD_COLS + 1)); result = f_open(&file, filename, FA_OPEN_EXISTING | FA_READ); if (result == FR_OK) { - for (unsigned i = 0; i < TEXT_FILE_MAXSIZE && f_read(&file, &c, 1, &sz) == FR_OK && sz == 1 && (lines_count == 0 || current_line - menuVerticalOffset < NUM_BODY_LINES); i++) { + for (unsigned i = 0; i < TEXT_FILE_MAXSIZE && f_read(&file, &c, 1, &sz) == FR_OK && sz == 1 && (lines_count == 0 || current_line - menuVerticalOffset < TEXT_VIEWER_LINES); i++) { if (c == '\n') { ++current_line; line_length = 0; escape = 0; } - else if (c!='\r' && current_line>=menuVerticalOffset && current_line-menuVerticalOffset=menuVerticalOffset && current_line-menuVerticalOffset Date: Wed, 22 Apr 2020 16:01:15 +0200 Subject: [PATCH 081/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 7886cfb81..a016b2c53 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1718,3 +1718,4 @@ Tom Van Driel Karl Vetter Johannes Janssen François Blondé +Precision Aero From 8ae2f4f782c2f404fc078aaa0000e5b134f20950 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 22 Apr 2020 19:23:32 +0200 Subject: [PATCH 082/199] Multi channels naming tool (#7538) Mostly-authored-by: Pascal Langer --- .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 377 ++++++++++++++++++ .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 377 ++++++++++++++++++ .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 377 ++++++++++++++++++ radio/src/lua/api_model.cpp | 43 +- radio/src/pulses/multi.cpp | 90 +++-- radio/src/pulses/multi.h | 1 + 6 files changed, 1222 insertions(+), 43 deletions(-) create mode 100644 radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua create mode 100644 radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua create mode 100644 radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua new file mode 100644 index 000000000..73b667b81 --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -0,0 +1,377 @@ +local toolName = "TNS|Multi chan namer|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. # +---- # # +---- ######################################################################### + +local done = 0 +local Protocols = { + {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, + {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, + {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, + {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, + {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {53, 0, "Flyzone", "FZ-410", { }, 0 }, + {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, + {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, + {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, + {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, + {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, + {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, + {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, + {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, + {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, + {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {30, 1, "WK2x01", "WK2401", { }, 0 }, + {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, + {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, + {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, + {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, + {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, + {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, + {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, + {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, + {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, + {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, + {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, + {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, + {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, + {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, + {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, + {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, + {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, + {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, + {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, + {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, + {35, 0, "ESKY150", "4CH", { }, 0 }, + {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, + {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, + {32, 0, "GW008", "FY326", { "Flip" }, 1 }, + {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, + {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, + {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, + {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, + {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, + {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, + {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, + {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, + {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, + {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, + {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, + {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, + {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, + {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, + {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, + {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, + {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, + {46, 0, "V911s", "Std", { "Calib" }, 1 }, + {46, 1, "E119", "Std", { "Calib" }, 1 }, + {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + +-- Need first 4 channels changed... + {19, 0, "Shenqi", "Cycle", { }, 1 }, + {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, + {43, 0, "Traxxas", "6519", { }, 0 }, + {52, 0, "ZSX", "280", { "Light" }, 1 }, + {48, 0, "V761", "Std", { "Gyro" }, 1 }, + {49, 0, "KF606", "Std", { "Trim" }, 1 }, + {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, + {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, + {58, 0, "FX816", "P38", { },1 } +} + +local function drawScreenTitle(title) + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, 0, 0) + end +end + +function bitand(a, b) + local result = 0 + local bitval = 1 + while a > 0 and b > 0 do + if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits + result = result + bitval -- set the current bit + end + bitval = bitval * 2 -- shift left + a = math.floor(a/2) -- shift right + b = math.floor(b/2) + end + return result +end + +local function Multi_Draw_LCD() + local line = 0 + local module_conf = {} + local module_pos = "Internal" + + lcd.clear() + drawScreenTitle("Multi channels namer") + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + end + end + + local protocol = module_conf["protocol"] + local sub_protocol = module_conf["subProtocol"] + + --Display settings + local lcd_opt + if LCD_W == 480 then + x_pos = 10 + y_pos = 32 + y_inc = 20 + else + x_pos = 0 + y_pos = 9 + y_inc = 8 + lcd_opt = SMLSIZE + end + + --Exceptions on first 4 channels... + local stick_names = { "Rud", "Ele", "Thr", "Ail" } + if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX + stick_names[2] = "n-a" + stick_names[4] = "n-a" + elseif protocol == 43 then -- Traxxas + stick_names[2] = "Aux4" + stick_names[4] = "Aux3" + elseif protocol == 48 then -- V761 + stick_names[4] = "n-a" + elseif protocol == 47 or protocol == 49 or protocol == 58 then -- GD00x, KF606, FX816 + stick_names[1] = "n-a" + stick_names[2] = "n-a" + end + + --Determine fist 4 channels order + local channel_names={} + local ch_order=module_conf["channelsOrder"] + if (ch_order == -1) then + channel_names[1] = stick_names[defaultChannel(0)+1] + channel_names[2] = stick_names[defaultChannel(1)+1] + channel_names[3] = stick_names[defaultChannel(2)+1] + channel_names[4] = stick_names[defaultChannel(3)+1] + else + channel_names[bitand(ch_order,3)+1] = stick_names[4] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[2] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[3] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[1] + end + + --Specific channels for protocol + local protocol_name, sub_protocol_name, bind_ch + for i,v in ipairs(Protocols) do + if v[1] == protocol and v[2] == sub_protocol then + protocol_name = v[3] + sub_protocol_name = v[4] + for j,w in ipairs(v[5]) do + channel_names[4+j]=w; + end + bind_ch = v[6] + end + end + + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) + line = line + 1 + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) + line = line + 1 + end + if protocol_name == nil or sub_protocol_name == nil then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) + else if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) + line = line + 1 + end + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) + line = line + 1 + local output, nbr + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) + line = line + 1 + done = 1 + end +end + +-- Init +local function Multi_Init() +end + +-- Main +local function Multi_Run(event) + if event == nil then + error("Cannot be run as a model script!") + return 2 + else + if done == 0 then + Multi_Draw_LCD() + else + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 + end + end + return 0 + end +end + +return { init=Multi_Init, run=Multi_Run } diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua new file mode 100644 index 000000000..675b25e15 --- /dev/null +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -0,0 +1,377 @@ +local toolName = "TNS|Multi chan namer|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. # +---- # # +---- ######################################################################### + +local done = 0 +local Protocols = { + {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, + {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, + {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, + {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, + {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {53, 0, "Flyzone", "FZ-410", { }, 0 }, + {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, + {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, + {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, + {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, + {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, + {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, + {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, + {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, + {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, + {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {30, 1, "WK2x01", "WK2401", { }, 0 }, + {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, + {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, + {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, + {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, + {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, + {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, + {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, + {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, + {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, + {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, + {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, + {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, + {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, + {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, + {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, + {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, + {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, + {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, + {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, + {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, + {35, 0, "ESKY150", "4CH", { }, 0 }, + {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, + {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, + {32, 0, "GW008", "FY326", { "Flip" }, 1 }, + {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, + {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, + {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, + {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, + {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, + {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, + {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, + {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, + {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, + {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, + {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, + {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, + {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, + {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, + {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, + {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, + {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, + {46, 0, "V911s", "Std", { "Calib" }, 1 }, + {46, 1, "E119", "Std", { "Calib" }, 1 }, + {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + +-- Need first 4 channels changed... + {19, 0, "Shenqi", "Cycle", { }, 1 }, + {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, + {43, 0, "Traxxas", "6519", { }, 0 }, + {52, 0, "ZSX", "280", { "Light" }, 1 }, + {48, 0, "V761", "Std", { "Gyro" }, 1 }, + {49, 0, "KF606", "Std", { "Trim" }, 1 }, + {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, + {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, + {58, 0, "FX816", "P38", { },1 } +} + +local function drawScreenTitle(title) + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, 0, 0) + end +end + +function bitand(a, b) + local result = 0 + local bitval = 1 + while a > 0 and b > 0 do + if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits + result = result + bitval -- set the current bit + end + bitval = bitval * 2 -- shift left + a = math.floor(a/2) -- shift right + b = math.floor(b/2) + end + return result +end + +local function Multi_Draw_LCD() + local line = 0 + local module_conf = {} + local module_pos = "Internal" + + lcd.clear() + drawScreenTitle("Multi channels namer") + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + end + end + + local protocol = module_conf["protocol"] + local sub_protocol = module_conf["subProtocol"] + + --Display settings + local lcd_opt + if LCD_W == 480 then + x_pos = 10 + y_pos = 32 + y_inc = 20 + else + x_pos = 0 + y_pos = 9 + y_inc = 8 + lcd_opt = SMLSIZE + end + + --Exceptions on first 4 channels... + local stick_names = { "Rud", "Ele", "Thr", "Ail" } + if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX + stick_names[2] = "n-a" + stick_names[4] = "n-a" + elseif protocol == 43 then -- Traxxas + stick_names[2] = "Aux4" + stick_names[4] = "Aux3" + elseif protocol == 48 then -- V761 + stick_names[4] = "n-a" + elseif protocol == 47 or protocol == 49 or protocol == 58 then -- GD00x, KF606, FX816 + stick_names[1] = "n-a" + stick_names[2] = "n-a" + end + + --Determine fist 4 channels order + local channel_names={} + local ch_order=module_conf["channelsOrder"] + if (ch_order == -1) then + channel_names[1] = stick_names[defaultChannel(0)+1] + channel_names[2] = stick_names[defaultChannel(1)+1] + channel_names[3] = stick_names[defaultChannel(2)+1] + channel_names[4] = stick_names[defaultChannel(3)+1] + else + channel_names[bitand(ch_order,3)+1] = stick_names[4] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[2] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[3] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[1] + end + + --Specific channels for protocol + local protocol_name, sub_protocol_name, bind_ch + for i,v in ipairs(Protocols) do + if v[1] == protocol and v[2] == sub_protocol then + protocol_name = v[3] + sub_protocol_name = v[4] + for j,w in ipairs(v[5]) do + channel_names[4+j]=w; + end + bind_ch = v[6] + end + end + + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.",lcd_opt) + line = line + 1 + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...",lcd_opt) + line = line + 1 + end + if protocol_name == nil or sub_protocol_name == nil then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...",lcd_opt) + else if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name,lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1,lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2,lcd_opt) + line = line + 1 + end + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.",lcd_opt) + line = line + 1 + local output, nbr + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!",lcd_opt) + line = line + 1 + done = 1 + end +end + +-- Init +local function Multi_Init() +end + +-- Main +local function Multi_Run(event) + if event == nil then + error("Cannot be run as a model script!") + return 2 + else + if done == 0 then + Multi_Draw_LCD() + else + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 + end + end + return 0 + end +end + +return { init=Multi_Init, run=Multi_Run } diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua new file mode 100644 index 000000000..73b667b81 --- /dev/null +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -0,0 +1,377 @@ +local toolName = "TNS|Multi chan namer|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. # +---- # # +---- ######################################################################### + +local done = 0 +local Protocols = { + {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, + {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, + {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, + {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, + {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, + {53, 0, "Flyzone", "FZ-410", { }, 0 }, + {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, + {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, + {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, + {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, + {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, + {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, + {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, + {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, + {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, + {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {30, 1, "WK2x01", "WK2401", { }, 0 }, + {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, + {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, + {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, + {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, + {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, + {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, + {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, + {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, + {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, + {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, + {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, + {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, + {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, + {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, + {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, + {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, + {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, + {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, + {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, + {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, + {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, + {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, + {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, + {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, + {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, + {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, + {35, 0, "ESKY150", "4CH", { }, 0 }, + {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, + {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, + {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, + {32, 0, "GW008", "FY326", { "Flip" }, 1 }, + {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, + {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, + {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, + {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, + {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, + {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, + {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, + {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, + {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, + {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, + {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, + {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, + {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, + {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, + {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, + {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, + {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, + {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, + {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, + {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, + {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, + {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, + {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, + {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, + {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, + {46, 0, "V911s", "Std", { "Calib" }, 1 }, + {46, 1, "E119", "Std", { "Calib" }, 1 }, + {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, + {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, + {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, + {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + +-- Need first 4 channels changed... + {19, 0, "Shenqi", "Cycle", { }, 1 }, + {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, + {43, 0, "Traxxas", "6519", { }, 0 }, + {52, 0, "ZSX", "280", { "Light" }, 1 }, + {48, 0, "V761", "Std", { "Gyro" }, 1 }, + {49, 0, "KF606", "Std", { "Trim" }, 1 }, + {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, + {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, + {58, 0, "FX816", "P38", { },1 } +} + +local function drawScreenTitle(title) + if LCD_W == 480 then + lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR) + lcd.drawText(1, 5, title, MENU_TITLE_COLOR) + else + lcd.drawScreenTitle(title, 0, 0) + end +end + +function bitand(a, b) + local result = 0 + local bitval = 1 + while a > 0 and b > 0 do + if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits + result = result + bitval -- set the current bit + end + bitval = bitval * 2 -- shift left + a = math.floor(a/2) -- shift right + b = math.floor(b/2) + end + return result +end + +local function Multi_Draw_LCD() + local line = 0 + local module_conf = {} + local module_pos = "Internal" + + lcd.clear() + drawScreenTitle("Multi channels namer") + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + end + end + + local protocol = module_conf["protocol"] + local sub_protocol = module_conf["subProtocol"] + + --Display settings + local lcd_opt + if LCD_W == 480 then + x_pos = 10 + y_pos = 32 + y_inc = 20 + else + x_pos = 0 + y_pos = 9 + y_inc = 8 + lcd_opt = SMLSIZE + end + + --Exceptions on first 4 channels... + local stick_names = { "Rud", "Ele", "Thr", "Ail" } + if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX + stick_names[2] = "n-a" + stick_names[4] = "n-a" + elseif protocol == 43 then -- Traxxas + stick_names[2] = "Aux4" + stick_names[4] = "Aux3" + elseif protocol == 48 then -- V761 + stick_names[4] = "n-a" + elseif protocol == 47 or protocol == 49 or protocol == 58 then -- GD00x, KF606, FX816 + stick_names[1] = "n-a" + stick_names[2] = "n-a" + end + + --Determine fist 4 channels order + local channel_names={} + local ch_order=module_conf["channelsOrder"] + if (ch_order == -1) then + channel_names[1] = stick_names[defaultChannel(0)+1] + channel_names[2] = stick_names[defaultChannel(1)+1] + channel_names[3] = stick_names[defaultChannel(2)+1] + channel_names[4] = stick_names[defaultChannel(3)+1] + else + channel_names[bitand(ch_order,3)+1] = stick_names[4] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[2] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[3] + ch_order = math.floor(ch_order/4) + channel_names[bitand(ch_order,3)+1] = stick_names[1] + end + + --Specific channels for protocol + local protocol_name, sub_protocol_name, bind_ch + for i,v in ipairs(Protocols) do + if v[1] == protocol and v[2] == sub_protocol then + protocol_name = v[3] + sub_protocol_name = v[4] + for j,w in ipairs(v[5]) do + channel_names[4+j]=w; + end + bind_ch = v[6] + end + end + + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) + line = line + 1 + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) + line = line + 1 + end + if protocol_name == nil or sub_protocol_name == nil then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) + else if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) + line = line + 1 + end + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) + line = line + 1 + local output, nbr + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) + line = line + 1 + done = 1 + end +end + +-- Init +local function Multi_Init() +end + +-- Main +local function Multi_Run(event) + if event == nil then + error("Cannot be run as a model script!") + return 2 + else + if done == 0 then + Multi_Draw_LCD() + else + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 + end + end + return 0 + end +end + +return { init=Multi_Init, run=Multi_Run } diff --git a/radio/src/lua/api_model.cpp b/radio/src/lua/api_model.cpp index b183043c7..8eea9d5ec 100644 --- a/radio/src/lua/api_model.cpp +++ b/radio/src/lua/api_model.cpp @@ -86,7 +86,24 @@ static int luaModelSetInfo(lua_State *L) Get RF module parameters -`subType` values: +`Type` values: + * 0 NONE + * 1 PPM + * 2 XJT_PXX1 + * 3 ISRM_PXX2 + * 4 DSM2 + * 5 CROSSFIRE + * 6 MULTIMODULE + * 7 R9M_PXX1 + * 8 R9M_PXX2 + * 9 R9M_LITE_PXX1 + * 10 R9M_LITE_PXX2 + * 11 R9M_LITE_PRO_PXX1 + * 12 R9M_LITE_PRO_PXX2 + * 13 SBUS + * 14 XJT_LITE_PXX2 + +`subType` values for XJT_PXX1: * -1 OFF * 0 D16 * 1 D8 @@ -101,6 +118,11 @@ Get RF module parameters * `modelId` (number) receiver number * `firstChannel` (number) start channel (0 is CH1) * `channelsCount` (number) number of channels sent to module + * `Type` (number) module type + * if the module type is Multi additional information are available + * `protocol` (number) protocol number + * `subProtocol` (number) sub-protocol number + * `channelsOrder` (number) first 4 channels expected order @status current Introduced in TODO */ @@ -114,6 +136,25 @@ static int luaModelGetModule(lua_State *L) lua_pushtableinteger(L, "modelId", g_model.header.modelId[idx]); lua_pushtableinteger(L, "firstChannel", module.channelsStart); lua_pushtableinteger(L, "channelsCount", module.channelsCount + 8); + lua_pushtableinteger(L, "Type", module.type); +#if defined(MULTIMODULE) + if (module.type == MODULE_TYPE_MULTIMODULE) { + int protocol = g_model.moduleData[idx].getMultiProtocol() + 1; + int subprotocol = g_model.moduleData[idx].subType; + convertOtxProtocolToMulti(&protocol, &subprotocol); // Special treatment for the FrSky entry... + lua_pushtableinteger(L, "protocol", protocol); + lua_pushtableinteger(L, "subProtocol", subprotocol); + if (getMultiModuleStatus(idx).isValid()) { + if (getMultiModuleStatus(idx).ch_order == 0xFF) + lua_pushtableinteger(L, "channelsOrder", -1); + else + lua_pushtableinteger(L, "channelsOrder", getMultiModuleStatus(idx).ch_order); + } + else { + lua_pushtableinteger(L, "channelsOrder", -1); + } + } +#endif } else { lua_pushnil(L); diff --git a/radio/src/pulses/multi.cpp b/radio/src/pulses/multi.cpp index ca7a77480..9fe10113c 100644 --- a/radio/src/pulses/multi.cpp +++ b/radio/src/pulses/multi.cpp @@ -244,6 +244,50 @@ void sendChannels(uint8_t moduleIdx) } } +void convertOtxProtocolToMulti(int *protocol, int *subprotocol) +{ + // Special treatment for the FrSky entry... + if (*protocol == MODULE_SUBTYPE_MULTI_FRSKY +1) { + if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D8) { + //D8 + *protocol = 3; + *subprotocol = 0; + } + else if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D8_CLONED) { + //D8 + *protocol = 3; + *subprotocol = 1; + } + else if (*subprotocol == MM_RF_FRSKY_SUBTYPE_V8) { + //V8 + *protocol = 25; + *subprotocol = 0; + } + else { + *protocol = 15; + if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D16_8CH) + *subprotocol = 1; + else if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D16) + *subprotocol = 0; // D16 + else if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D16_LBT) + *subprotocol = 2; + else if (*subprotocol == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH) + *subprotocol = 3; + else + *subprotocol = 4; // D16_CLONED + } + } + else { + // 15 for Multimodule is FrskyX or D16 which we map as a protocol of 3 (FrSky) + // all protos > frskyx are therefore also off by one + if (*protocol >= 15) + *protocol = *protocol + 1; + // 25 is again a FrSky *protocol (FrskyV) so shift again + if (*protocol >= 25) + *protocol = *protocol + 1; + } +} + void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) {// byte 1+2, protocol information @@ -268,8 +312,7 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) protoByte |= MULTI_SEND_RANGECHECK; // rfProtocol - if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_DSM2) { - + if (type == MODULE_SUBTYPE_MULTI_DSM2 +1 ) { // Autobinding should always be done in DSMX 11ms if (g_model.moduleData[moduleIdx].multi.autoBindMode && moduleState[moduleIdx].mode == MODULE_MODE_BIND) subtype = MM_RF_DSM2_SUBTYPE_AUTO; @@ -279,48 +322,11 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe) optionValue = 0x80 | sentModuleChannels(moduleIdx); // Max throw else optionValue = sentModuleChannels(moduleIdx); -} - - // 15 for Multimodule is FrskyX or D16 which we map as a subprotocol of 3 (FrSky) - // all protos > frskyx are therefore also off by one - if (type >= 15) - type = type + 1; - - // 25 is again a FrSky protocol (FrskyV) so shift again - if (type >= 25) - type = type + 1; - - if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) { - if (subtype == MM_RF_FRSKY_SUBTYPE_D8) { - //D8 - type = 3; - subtype = 0; - } - else if (subtype == MM_RF_FRSKY_SUBTYPE_D8_CLONED) { - //D8 - type = 3; - subtype = 1; - } - else if (subtype == MM_RF_FRSKY_SUBTYPE_V8) { - //V8 - type = 25; - subtype = 0; - } - else { - type = 15; - if (subtype == MM_RF_FRSKY_SUBTYPE_D16_8CH) // D16 8ch - subtype = 1; - else if (subtype == MM_RF_FRSKY_SUBTYPE_D16) - subtype = 0; // D16 - else if (subtype == MM_RF_FRSKY_SUBTYPE_D16_LBT) - subtype = 2; - else if (subtype == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH) - subtype = 3; - else - subtype = 4; - } } + // Special treatment for the FrSky entry... + convertOtxProtocolToMulti(&type, &subtype); + // Set the highest bit of option byte in AFHDS2A protocol to instruct MULTI to passthrough telemetry bytes instead // of sending Frsky D telemetry if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) diff --git a/radio/src/pulses/multi.h b/radio/src/pulses/multi.h index a19e526eb..29e335d3a 100644 --- a/radio/src/pulses/multi.h +++ b/radio/src/pulses/multi.h @@ -24,6 +24,7 @@ #include "pulses_common.h" void multiPatchCustom(uint8_t moduleIdx); +void convertOtxProtocolToMulti(int *protocol, int *subprotocol); class UartMultiPulses: public DataBuffer { From 9bf6b1d0a2ccf312cc78229f92f9665016eff9b9 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Fri, 24 Apr 2020 12:01:02 +0200 Subject: [PATCH 083/199] No audio mute for TX16S --- radio/src/targets/horus/hal.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 636e6c9e3..f22509c89 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -635,6 +635,11 @@ #define AUDIO_MUTE_DELAY 500 // ms #endif +#if defined(RADIO_TX16S) +// Only slight noise with 868MHz > 1W, if complaints later remove and set AUDIO_UNMUTE_DELAY to 150 + #undef AUDIO_MUTE_GPIO_PIN +#endif + // Touch #if defined(HARDWARE_TOUCH) #define TOUCH_INT_RCC_AHB1Periph RCC_AHB1Periph_GPIOH From 262386d21c43d5a5afa41cc24855ceef263eba12 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Fri, 24 Apr 2020 14:37:06 +0200 Subject: [PATCH 084/199] Remove stray file --- jumpertx-t16-2.3.8.bin | Bin 1051568 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 jumpertx-t16-2.3.8.bin diff --git a/jumpertx-t16-2.3.8.bin b/jumpertx-t16-2.3.8.bin deleted file mode 100644 index 25865937a4c010c9c4550dfd68130acc7c799dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051568 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 RLhnLpm8m0HSY;=0 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�e|l~U$(5jW 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%0AozS;!BQ#O2Z4q`_+?IB> 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
I71p(h}H9j%_pxtH{H79sv6 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�=woc)c{ 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Ξ+A69`379P5X(NS#dnChExRAt+jvsdl>OS(!5 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�>Cm-v6KK?&%RW;d}Rf?|tukucb5HU0q#u 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 M#F@ufK>x7+34D(%c>n+a From ec545ce06e1a55833325ac469b97b66e9ad66271 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 24 Apr 2020 17:31:38 +0200 Subject: [PATCH 085/199] Some Multi renamer fixes --- .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 45 +++++++------- .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 61 +++++++++---------- .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 45 +++++++------- 3 files changed, 74 insertions(+), 77 deletions(-) diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 73b667b81..e089cf72e 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -331,25 +331,27 @@ local function Multi_Draw_LCD() lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) line = line + 1 local output, nbr - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i - end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 end lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) line = line + 1 - done = 1 end end @@ -363,15 +365,12 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - if done == 0 then - Multi_Draw_LCD() - else - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then - return 2 - end + Multi_Draw_LCD() + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 end - return 0 end + return 0 end return { init=Multi_Init, run=Multi_Run } diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 675b25e15..e089cf72e 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -286,16 +286,16 @@ local function Multi_Draw_LCD() end end - lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.",lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) line = line + 1 if (ch_order == -1) then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...",lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) line = line + 1 end if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...",lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) else if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name,lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) line = line + 1 else lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) @@ -321,35 +321,37 @@ local function Multi_Draw_LCD() end end if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1,lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) line = line + 1 if text2 ~= "" then - lcd.drawText(x_pos*9, y_pos+y_inc*line,text2,lcd_opt) + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) line = line + 1 end end - lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.",lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) line = line + 1 local output, nbr - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Done!",lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) line = line + 1 - done = 1 end end @@ -363,15 +365,12 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - if done == 0 then - Multi_Draw_LCD() - else - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then - return 2 - end + Multi_Draw_LCD() + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 end - return 0 end + return 0 end return { init=Multi_Init, run=Multi_Run } diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 73b667b81..e089cf72e 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -331,25 +331,27 @@ local function Multi_Draw_LCD() lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) line = line + 1 local output, nbr - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i - end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 end lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) line = line + 1 - done = 1 end end @@ -363,15 +365,12 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - if done == 0 then - Multi_Draw_LCD() - else - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then - return 2 - end + Multi_Draw_LCD() + if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + return 2 end - return 0 end + return 0 end return { init=Multi_Init, run=Multi_Run } From 463607e838b021bb870912fb2e7d48cc0a3b78bf Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 24 Apr 2020 17:32:46 +0200 Subject: [PATCH 086/199] Increment SD version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2762bf4b..f0011a7aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "8") 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 "0026") +set(SDCARD_REVISION "0027") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) From e6b33264128feed52c63cea2a964a8b06220864c Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 08:37:50 +0200 Subject: [PATCH 087/199] Add touch temporary debug --- radio/src/targets/horus/tp_gt911.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 68b4630dc..d3bc68524 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -340,18 +340,20 @@ bool touchPanelInit(void) delay_ms(50); + TRACE("Reading Touch registry"); GT911_RD_Reg(GT_PID_REG, tmp, 4); - if (strcmp((char *) tmp, "911") == 0)//ID==9147 + if (strcmp((char *) tmp, "911") == 0) //ID==9147 { + TRACE("GT911 chip detected"); tmp[0] = 0X02; - GT911_WR_Reg(GT_CTRL_REG, tmp, 1);// - GT911_RD_Reg(GT_CFGS_REG, tmp, 1);// + GT911_WR_Reg(GT_CTRL_REG, tmp, 1); + GT911_RD_Reg(GT_CFGS_REG, tmp, 1); if (tmp[0] < 0X69)//ver { - //printf("Default Ver:%x\r\n",temp[0]); - GT911_Send_Cfg(1); // + TRACE("Default Ver:%x\r\n",temp[0]); + GT911_Send_Cfg(1); } delay_ms(10); @@ -363,7 +365,7 @@ bool touchPanelInit(void) return true; } - + TRACE("GT911 chip NOT FOUND"); return false; } From ad74aa71eb196f2c2f0d8b7db8a0505402666157 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 25 Apr 2020 10:06:17 +0200 Subject: [PATCH 088/199] Create FUNDING.yml --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..fdb7dc9f4 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: ['PayPal.Me/opentx'] From fd8fbc4f31df91dd2cb367a9b2aecb2c44b952ca Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 10:36:09 +0200 Subject: [PATCH 089/199] test --- radio/src/gui/480x272/radio_diagtouch.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp index 15535d289..6e5d19778 100644 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -44,8 +44,13 @@ bool menuRadioDiagTouch(event_t event) } if (touchEventFlag) { - touchPanelDeInit(); - popMenu(); + uint8_t tmp,mode = 0; + GT911_RD_Reg(GT911_READ_XY_REG,&mode,1); //read status + tmp=mode&0x0f; + if((mode&0x80) && (tmp>0)) { + touchPanelDeInit(); + popMenu(); + } } return true; } From c9c0b109292ddfad84a63bcef7a3e254e5a09562 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 10:37:29 +0200 Subject: [PATCH 090/199] test --- radio/src/gui/480x272/radio_diagtouch.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp index 6e5d19778..3c9834265 100644 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ b/radio/src/gui/480x272/radio_diagtouch.cpp @@ -51,6 +51,7 @@ bool menuRadioDiagTouch(event_t event) touchPanelDeInit(); popMenu(); } + GT911_WR_Reg(GT911_CLEARBUF_REG, &tmp, 1); } return true; } From 716650f2cdd67e1d012f3197d823b809179e878c Mon Sep 17 00:00:00 2001 From: Kilrah Date: Sat, 25 Apr 2020 10:52:05 +0200 Subject: [PATCH 091/199] fix typo --- radio/src/targets/horus/tp_gt911.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index d3bc68524..87e6e0ce2 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -352,7 +352,7 @@ bool touchPanelInit(void) if (tmp[0] < 0X69)//ver { - TRACE("Default Ver:%x\r\n",temp[0]); + TRACE("Default Ver:%x\r\n",tmp[0]); GT911_Send_Cfg(1); } @@ -372,7 +372,7 @@ bool touchPanelInit(void) extern "C" void TOUCH_INT_EXTI_IRQHandler1(void) { if (EXTI_GetITStatus(TOUCH_INT_EXTI_LINE1) != RESET) { - TRACE("TOUCH INTERUPT"); + TRACE("TI"); touchEventFlag = 1; EXTI_ClearITPendingBit(TOUCH_INT_EXTI_LINE1); } From b61691df1d28436f0de5310babe640173f43d82c Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 13:39:28 +0200 Subject: [PATCH 092/199] Attempt rework touch control --- radio/src/gui/480x272/menus.h | 1 - radio/src/gui/480x272/radio_diaganas.cpp | 26 ++++++++- radio/src/gui/480x272/radio_diagtouch.cpp | 57 ------------------- radio/src/gui/480x272/radio_hardware.cpp | 16 +----- radio/src/targets/horus/CMakeLists.txt | 1 - radio/src/targets/horus/tp_gt911.cpp | 69 +++++++++++++++++++---- radio/src/targets/horus/tp_gt911.h | 31 +++++++--- radio/src/touch.h | 50 ++++++++++++++++ 8 files changed, 156 insertions(+), 95 deletions(-) delete mode 100644 radio/src/gui/480x272/radio_diagtouch.cpp create mode 100644 radio/src/touch.h diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index edae43fec..f82baeb14 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -185,7 +185,6 @@ bool menuModelModuleOptions(event_t event); bool menuModelReceiverOptions(event_t event); bool menuRadioDiagKeys(event_t event); bool menuRadioDiagAnalogs(event_t event); -bool menuRadioDiagTouch(event_t event); extern const MenuHandlerFunc menuTabModel[MENU_MODEL_PAGES_COUNT]; diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 88f82d748..905987fef 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -19,6 +19,9 @@ */ #include "opentx.h" +#if defined(RADIO_TX16S) +#include "tp_gt911.h" +#endif constexpr coord_t LEFT_NAME_COLUMN = MENUS_MARGIN_LEFT; constexpr coord_t RIGHT_NAME_COLUMN = LCD_W / 2; @@ -28,6 +31,12 @@ bool menuRadioDiagAnalogs(event_t event) { SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS, ICON_MODEL_SETUP, 0); +#if defined(HARDWARE_TOUCH) + if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { + touchPanelInit(); + } +#endif + for (uint8_t i = 0; i < NUM_ANALOGS; i++) { coord_t y = MENU_HEADER_HEIGHT + 1 + (i / 2) * FH; uint8_t x = i & 1 ? LCD_W / 2 + 10 : LEFT_NAME_COLUMN; @@ -48,9 +57,24 @@ bool menuRadioDiagAnalogs(event_t event) #endif } -#if (NUM_PWMSTICKS > 0) && !defined(SIMU) +#if (NUM_PWMSTICKS > 0) || defined(SIMU) lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 8 * FH, STICKS_PWM_ENABLED() ? "Sticks: PWM" : "Sticks: ANA"); #endif +#if defined(HARDWARE_TOUCH) + if (touchGT911Flag) { + lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, "Touch panel:"); + } + + if (touchPanelEvent) { + uint8_t tmp,mode = 0; + gt911ReadRegister(GT911_READ_XY_REG,&mode,1); //read status + lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); + lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, ", "); + lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); + gt911WriteRegister(GT911_CLEARBUF_REG, &tmp, 1); + } +#endif + return true; } diff --git a/radio/src/gui/480x272/radio_diagtouch.cpp b/radio/src/gui/480x272/radio_diagtouch.cpp deleted file mode 100644 index 3c9834265..000000000 --- a/radio/src/gui/480x272/radio_diagtouch.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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" -#include "tp_gt911.h" - -bool menuRadioDiagTouch(event_t event) -{ - static bool touchAvailable = false; - - SIMPLE_SUBMENU(STR_MENU_RADIO_TOUCH, ICON_MODEL_SETUP, 1); - - if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { - touchAvailable = touchPanelInit(); - touchEventFlag = 0; - } - else if (menuEvent) { - //touchDeInit(); - return false; - } - - if (touchAvailable) { - lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_EXIT, CENTERED); - } - else { - lcdDrawText(LCD_W / 2, LCD_H / 2, STR_TOUCH_NOTFOUND, CENTERED); - } - - if (touchEventFlag) { - uint8_t tmp,mode = 0; - GT911_RD_Reg(GT911_READ_XY_REG,&mode,1); //read status - tmp=mode&0x0f; - if((mode&0x80) && (tmp>0)) { - touchPanelDeInit(); - popMenu(); - } - GT911_WR_Reg(GT911_CLEARBUF_REG, &tmp, 1); - } - return true; -} diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index f9cefdc9a..e50dcae33 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -131,12 +131,6 @@ void onHardwareAntennaSwitchConfirm(const char * result) #define SPORT_POWER_ROWS #endif -#if defined(HARDWARE_TOUCH) - #define DEBUG_ROW 2 -#else - #define DEBUG_ROW 1 -#endif - bool menuRadioHardware(event_t event) { MENU(STR_HARDWARE, RADIO_ICONS, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { @@ -168,7 +162,7 @@ bool menuRadioHardware(event_t event) 0, /* ADC filter */ READONLY_ROW /* RAS */, SPORT_POWER_ROWS - DEBUG_ROW, /* Debug */ + 1, /* Debug */ }); if (menuEvent) { @@ -417,9 +411,6 @@ bool menuRadioHardware(event_t event) lcdDrawText(MENUS_MARGIN_LEFT, y, STR_DEBUG); lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); -#if defined(HARDWARE_TOUCH) - lcdDrawText(lcdNextPos + 10, y, STR_TOUCH_BTN, menuHorizontalPosition == 2 ? attr : 0); -#endif if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { switch (menuHorizontalPosition) { case 0: @@ -428,11 +419,6 @@ bool menuRadioHardware(event_t event) case 1: pushMenu(menuRadioDiagKeys); break; -#if defined(HARDWARE_TOUCH) - case 2: - pushMenu(menuRadioDiagTouch); - break; -#endif } } break; diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 910b43f5f..ba4052d48 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -212,7 +212,6 @@ if(HARDWARE_TOUCH) set(TARGET_SRC ${TARGET_SRC} tp_gt911.cpp ) - set(GUI_SRC ${GUI_SRC} radio_diagtouch.cpp) add_definitions(-DHARDWARE_TOUCH) endif() diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 87e6e0ce2..d0982788a 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -21,8 +21,9 @@ #include "tp_gt911.h" uint8_t touchGT911Flag = 0; -uint8_t TOUCH_SCAN_MODE = 0; -uint8_t touchEventFlag = 0; +uint8_t touchPanelEvent = 0; +struct TouchData touchData; +struct TouchState touchState; void GT911_INT_Change(void) { @@ -46,8 +47,8 @@ uint8_t GT911_Send_Cfg(uint8_t mode) buf[0] += GT911_Cfg[i];//check sum buf[0] = (~buf[0]) + 1; - GT911_WR_Reg(GT_CFGS_REG, (uint8_t *) GT911_Cfg, sizeof(GT911_Cfg));// - GT911_WR_Reg(GT_CHECK_REG, buf, 2);//write checksum + gt911WriteRegister(GT_CFGS_REG, (uint8_t *) GT911_Cfg, sizeof(GT911_Cfg));// + gt911WriteRegister(GT_CHECK_REG, buf, 2);//write checksum return 0; } @@ -266,7 +267,7 @@ uint8_t I2C_Read_Byte(unsigned char ack) return receive; } -uint8_t GT911_WR_Reg(uint16_t reg, uint8_t * buf, uint8_t len) +uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len) { { uint8_t i; @@ -290,7 +291,7 @@ uint8_t GT911_WR_Reg(uint16_t reg, uint8_t * buf, uint8_t len) } } -void GT911_RD_Reg(u16 reg, uint8_t * buf, uint8_t len) +void gt911ReadRegister(u16 reg, uint8_t * buf, uint8_t len) { uint8_t i; @@ -341,14 +342,14 @@ bool touchPanelInit(void) delay_ms(50); TRACE("Reading Touch registry"); - GT911_RD_Reg(GT_PID_REG, tmp, 4); + gt911ReadRegister(GT_PID_REG, tmp, 4); if (strcmp((char *) tmp, "911") == 0) //ID==9147 { TRACE("GT911 chip detected"); tmp[0] = 0X02; - GT911_WR_Reg(GT_CTRL_REG, tmp, 1); - GT911_RD_Reg(GT_CFGS_REG, tmp, 1); + gt911WriteRegister(GT_CTRL_REG, tmp, 1); + gt911ReadRegister(GT_CFGS_REG, tmp, 1); if (tmp[0] < 0X69)//ver { @@ -358,7 +359,7 @@ bool touchPanelInit(void) delay_ms(10); tmp[0] = 0X00; - GT911_WR_Reg(GT_CTRL_REG, tmp, 1);//end reset + gt911WriteRegister(GT_CTRL_REG, tmp, 1);//end reset touchGT911Flag = true; TOUCH_AF_ExtiConfig(); @@ -369,11 +370,57 @@ bool touchPanelInit(void) return false; } +void touchPanelRead() +{ + uint8_t state = 0; + gt911ReadRegister(GT911_READ_XY_REG, &state, 1); + + touchPanelEvent = false; + + if ((state & 0x80u) == 0x00) { + // not ready + return; + } + + uint8_t pointsCount = (state & 0x0Fu); + + if (pointsCount > 0 && pointsCount < GT911_MAX_TOUCH_POINTS) { + gt911ReadRegister(GT911_READ_XY_REG + 1, touchData.data, pointsCount * sizeof(TouchPoint)); + if (touchData.pointsCount == 0) { + touchState.event = TE_DOWN; + touchState.startX = touchState.x = touchData.points[0].x; + touchState.startY = touchState.y = touchData.points[0].y; + } + else { + touchState.deltaX = touchData.points[0].x - touchState.x; + touchState.deltaY = touchData.points[0].y - touchState.y; + if (touchState.event == TE_SLIDE || abs(touchState.deltaX) >= SLIDE_RANGE || abs(touchState.deltaY) >= SLIDE_RANGE) { + touchState.event = TE_SLIDE; + touchState.x = touchData.points[0].x; + touchState.y = touchData.points[0].y; + } + } + touchData.pointsCount = pointsCount; + } + else { + if (touchData.pointsCount > 0) { + touchData.pointsCount = 0; + if (touchState.event == TE_SLIDE) + touchState.event = TE_SLIDE_END; + else + touchState.event = TE_UP; + } + } + + uint8_t zero = 0; + gt911WriteRegister(GT911_READ_XY_REG, &zero, 1); +} + extern "C" void TOUCH_INT_EXTI_IRQHandler1(void) { if (EXTI_GetITStatus(TOUCH_INT_EXTI_LINE1) != RESET) { TRACE("TI"); - touchEventFlag = 1; + touchPanelEvent = 1; EXTI_ClearITPendingBit(TOUCH_INT_EXTI_LINE1); } } diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index 64dfac5d6..294de897e 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -22,6 +22,7 @@ #define _FT5X06_H_ #include "opentx.h" +#include "touch.h" #define HAS_TOUCH_PANEL() touchGT911Flag == true #define TOUCH_INT_STATUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) @@ -31,10 +32,10 @@ void touchPanelDeInit(); extern uint8_t touchGT911Flag; extern uint8_t TOUCH_SCAN_MODE; -extern uint8_t touchEventFlag; +extern uint8_t touchPanelEvent; -uint8_t GT911_WR_Reg(uint16_t reg, uint8_t * buf, uint8_t len); -void GT911_RD_Reg(uint16_t reg, uint8_t * buf, uint8_t len); +uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len); +void gt911ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len); //GT911 param table @@ -97,16 +98,28 @@ const uint8_t GT911_Cfg[]= // #define GT911_CONFIG_CHECKSUM_REG 0x80FF #define GT911_FIRMWARE_VERSION_REG 0x8144 +#define GT911_MAX_TOUCH_POINTS 5 -typedef struct{ +PACK(typedef struct +{ + uint8_t track; uint16_t x; uint16_t y; -}POINT; + uint16_t size; + uint8_t reserved; +}) TouchPoint; -typedef struct{ - uint16_t cnt; - POINT points[5]; -}GT911_POINT_DATA; +PACK(struct TouchData +{ + uint8_t pointsCount; + union + { + TouchPoint points[GT911_MAX_TOUCH_POINTS]; + uint8_t data[GT911_MAX_TOUCH_POINTS * sizeof(TouchPoint)]; + }; +}); + +extern struct TouchData touchData; #define TPRST_LOW() do { TOUCH_RST_GPIO->BSRRH = TOUCH_RST_GPIO_PIN; } while(0) #define TPRST_HIGH() do { TOUCH_RST_GPIO->BSRRL = TOUCH_RST_GPIO_PIN; } while(0) diff --git a/radio/src/touch.h b/radio/src/touch.h new file mode 100644 index 000000000..fbb70e3fe --- /dev/null +++ b/radio/src/touch.h @@ -0,0 +1,50 @@ +/* + * 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 _TOUCH_H_ +#define _TOUCH_H_ + +enum TouchEvent +{ + TE_NONE, + TE_DOWN, + TE_UP, + TE_SLIDE, + TE_SLIDE_END +}; + +struct TouchState +{ + unsigned char event; + short x; + short y; + short startX; + short startY; + short deltaX; + short deltaY; + short lastDeltaX; + short lastDeltaY; +}; + +constexpr uint8_t SLIDE_RANGE = 6; + +extern TouchState touchState; + +#endif // _TOUCH_H_ \ No newline at end of file From 541b5e8f3ccc8fe50ef35503da7f434430879564 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 13:43:51 +0200 Subject: [PATCH 093/199] Fixes --- radio/src/gui/480x272/radio_diaganas.cpp | 6 ++---- radio/src/targets/horus/tp_gt911.h | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 905987fef..a5bd127b6 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -62,17 +62,15 @@ bool menuRadioDiagAnalogs(event_t event) #endif #if defined(HARDWARE_TOUCH) - if (touchGT911Flag) { + if (!touchGT911Flag) { lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, "Touch panel:"); } if (touchPanelEvent) { - uint8_t tmp,mode = 0; - gt911ReadRegister(GT911_READ_XY_REG,&mode,1); //read status + touchPanelRead(); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, ", "); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); - gt911WriteRegister(GT911_CLEARBUF_REG, &tmp, 1); } #endif diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index 294de897e..fbccc4f24 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -36,7 +36,7 @@ extern uint8_t touchPanelEvent; uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len); void gt911ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len); - +void touchPanelRead(); //GT911 param table const uint8_t GT911_Cfg[]= // From 8ff59c092835ed1c3849f4bec381e9f53cc3ebaf Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 13:45:58 +0200 Subject: [PATCH 094/199] Fixes --- radio/src/gui/480x272/radio_diaganas.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index a5bd127b6..7cf566cdc 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -62,7 +62,7 @@ bool menuRadioDiagAnalogs(event_t event) #endif #if defined(HARDWARE_TOUCH) - if (!touchGT911Flag) { + if (touchGT911Flag) { lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, "Touch panel:"); } From 327f53efa41ca6b266babda41c2a56dceac2d7b7 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 13:46:47 +0200 Subject: [PATCH 095/199] Fixes --- radio/src/gui/480x272/radio_diaganas.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 7cf566cdc..c92cd3ebb 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -69,7 +69,7 @@ bool menuRadioDiagAnalogs(event_t event) if (touchPanelEvent) { touchPanelRead(); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); - lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, ", "); + lcdDrawText(lcdNextPos, MENU_CONTENT_TOP + 7 * FH, ", "); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); } #endif From 09bf8ecfa91e8521e4baef8fb9e0618a3bcdedc2 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 13:59:49 +0200 Subject: [PATCH 096/199] Stop panel on exit --- radio/src/gui/480x272/radio_diaganas.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index c92cd3ebb..b632bf00c 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -35,6 +35,10 @@ bool menuRadioDiagAnalogs(event_t event) if (event == EVT_ENTRY || event == EVT_ENTRY_UP) { touchPanelInit(); } + else if (menuEvent) { + touchPanelDeInit(); + return false; + } #endif for (uint8_t i = 0; i < NUM_ANALOGS; i++) { @@ -62,7 +66,7 @@ bool menuRadioDiagAnalogs(event_t event) #endif #if defined(HARDWARE_TOUCH) - if (touchGT911Flag) { + if (HAS_TOUCH_PANEL()) { lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, "Touch panel:"); } From 30021d6dc88f9ff93e59960124d20eb478107e65 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 14:34:13 +0200 Subject: [PATCH 097/199] default TX16S to Darkblue --- radio/src/opentx.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index ea70e0b7b..fd9c8eaef 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -322,7 +322,11 @@ void generalDefault() #endif #if defined(COLORLCD) +#if defined(RADIO_TX16S) + strcpy(g_eeGeneral.themeName, "Darkblue"); +#else strcpy(g_eeGeneral.themeName, theme->getName()); +#endif theme->init(); #endif From 0bf771d4bc56b5243bc2cde930d4dea652e975fc Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 14:59:51 +0200 Subject: [PATCH 098/199] Some init doc --- radio/src/targets/horus/tp_gt911.h | 42 ++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index fbccc4f24..ac57b6c0d 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -41,17 +41,37 @@ void touchPanelRead(); //GT911 param table const uint8_t GT911_Cfg[]= // { - 0x69, //ver 0x68 - 0xE0,0x01, //x 480 480X272 - 0x10,0x01, //y 272 - 0x05, //pass max count - 0x38, //bit4= xy change Int mode - 0x00, - 0x02, //press ct - 0x48, - 0x28,0x0D,0x50,0x32,0x03,0x05,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x18,0x1A,0x1E,0x14,0x8A,0x2A,0x0C, - 0x30,0x38,0x31,0x0D,0x00,0x00,0x02,0xB9,0x03,0x2D, + 0x69, // ver 0x68 + 0xE0,0x01, // 0x8049 X output map : x 480 + 0x10,0x01, // 0x8040 Y ouptut max : y 272 + 0x05, // 0x804C Touch number : GT911_MAX_TOUCH_POINTS + 0x38, // 0x804D Module switch 1 : bit4= xy change Int mode + 0x00, // 0x804E Module switch 2 + 0x02, // 0x804F Shake_Count + 0x48, // 0x8050 Filter + 0x28, // 0x8051 Larger touch + 0x0D, // 0x8052 Noise reduction + 0x50, // 0x8053 Screen touch level + 0x32, // 0x8054 Screen touch leave + 0x03, // 0x8055 Low power control + 0x05, // 0x8056 Refresh rate + 0x00, // 0x8057 X threshold + 0x00, // 0x8058 Y threshold + 0x00, // 0x8059 Reserved + 0x00, // 0x805A Reserved + 0x00, // 0x805B Space (top, bottom) + 0x00, // 0x805B Space (left, right) + 0x00, // 0x805D Mini filter + 0x18, // 0x805E Strech R0 + 0x1A, // 0x805F Strech R1 + 0x1E, // 0x8060 Strech R2 + 0x14, // 0x8061 Strech RM + 0x8A, // 0x8062 Drv groupA num + 0x2A, // 0x8063 Drv groupB num + 0x0C, // 0x8064 Sensor num + 0x30, // 0x8065 FreqA factor + 0x38, // 0x8065 FreqB factor + 0x31,0x0D,0x00,0x00,0x02,0xB9,0x03,0x2D, 0x00,0x00,0x00,0x00,0x00,0x03,0x64,0x32,0x00,0x00, 0x00,0x1D,0x41,0x94,0xC5,0x02,0x07,0x00,0x00,0x04, 0xA5,0x1F,0x00,0x94,0x25,0x00,0x88,0x2B,0x00,0x7D, From 9f6f683d44f5bced894fb110636635203cc6759f Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 15:25:41 +0200 Subject: [PATCH 099/199] Some init doc --- radio/src/targets/horus/tp_gt911.h | 33 ++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index ac57b6c0d..4ea113514 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -43,7 +43,7 @@ const uint8_t GT911_Cfg[]= // { 0x69, // ver 0x68 0xE0,0x01, // 0x8049 X output map : x 480 - 0x10,0x01, // 0x8040 Y ouptut max : y 272 + 0x10,0x01, // 0x804A Y ouptut max : y 272 0x05, // 0x804C Touch number : GT911_MAX_TOUCH_POINTS 0x38, // 0x804D Module switch 1 : bit4= xy change Int mode 0x00, // 0x804E Module switch 2 @@ -60,7 +60,7 @@ const uint8_t GT911_Cfg[]= // 0x00, // 0x8059 Reserved 0x00, // 0x805A Reserved 0x00, // 0x805B Space (top, bottom) - 0x00, // 0x805B Space (left, right) + 0x00, // 0x805C Space (left, right) 0x00, // 0x805D Mini filter 0x18, // 0x805E Strech R0 0x1A, // 0x805F Strech R1 @@ -70,10 +70,31 @@ const uint8_t GT911_Cfg[]= // 0x2A, // 0x8063 Drv groupB num 0x0C, // 0x8064 Sensor num 0x30, // 0x8065 FreqA factor - 0x38, // 0x8065 FreqB factor - 0x31,0x0D,0x00,0x00,0x02,0xB9,0x03,0x2D, - 0x00,0x00,0x00,0x00,0x00,0x03,0x64,0x32,0x00,0x00, - 0x00,0x1D,0x41,0x94,0xC5,0x02,0x07,0x00,0x00,0x04, + 0x38, // 0x8066 FreqB factor + 0x31,0x0D, // 0x8067 Panel bit freq + 0x00,0x00, // 0x8069 Reserved + 0x02, // 0x806B Panel tx gain + 0xB9, // 0x806C Panel rx gain + 0x03, // 0x806D Panel dump shift + 0x2D, // 0x806E Drv frame control + 0x00, // 0x806F Charging level up + 0x00, // 0x8070 Module switch 3 + 0x00, // 0x8071 Gesture distance + 0x00, // 0x8072 Gesture long press time + 0x00, // 0x8073 X/Y slope adjust + 0x03, // 0x8074 Gesture control + 0x64, // 0x8075 Gesture switch 1 + 0x32, // 0x8076 Gesture switch 2 + 0x00, // 0x8077 Gesture refresh rate + 0x00, // 0x8078 Gesture touch level + 0x00, // 0x8079 New green wake up level + 0x1D, // 0x807A Freq hopping start + 0x41, // 0x807B Freq hopping end + 0x94, // 0x807C Noise detect time + 0xC5, // 0x807D Hopping flag + 0x02, // 0x807E Hopping flag + 0x07, // 0x807F Noise threshold + 0x00,0x00,0x04, 0xA5,0x1F,0x00,0x94,0x25,0x00,0x88,0x2B,0x00,0x7D, 0x33,0x00,0x74,0x3C,0x00,0x74,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, From 650acb6c8b603f01f47ddf51517525a9ef0753ee Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 15:48:26 +0200 Subject: [PATCH 100/199] Fix --- radio/src/gui/gui_common.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 07a093fdf..6a349aa6d 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -747,6 +747,11 @@ bool isTrainerModeAvailable(int mode) return false; #endif +#if !defined(BLUETOOTH) + if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH) + return false; +#endif + #if defined(PCBXLITE) && !defined(PCBXLITES) if (mode == TRAINER_MODE_MASTER_TRAINER_JACK || mode == TRAINER_MODE_SLAVE) return false; From a1a266093d0b29b7cbf100c1ee416f42d8e93639 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 15:52:30 +0200 Subject: [PATCH 101/199] improve fix --- radio/src/gui/gui_common.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 6a349aa6d..498c63a89 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -739,19 +739,14 @@ bool isTrainerModeAvailable(int mode) return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER; #endif -#if defined(PCBX9E) +#if !defined(BLUETOOTH) || defined(PCBX9E) if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH) return false; -#elif defined(BLUETOOTH) +#else if (g_eeGeneral.bluetoothMode != BLUETOOTH_TRAINER && (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH)) return false; #endif -#if !defined(BLUETOOTH) - if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH) - return false; -#endif - #if defined(PCBXLITE) && !defined(PCBXLITES) if (mode == TRAINER_MODE_MASTER_TRAINER_JACK || mode == TRAINER_MODE_SLAVE) return false; From 85f90af0bd4f9e389ae61c1d60e3c5155a71cd98 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 25 Apr 2020 20:45:11 +0200 Subject: [PATCH 102/199] Some fixes to multi naming script --- radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 5 +++-- .../sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 5 +++-- .../sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index e089cf72e..2bd2e1a73 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -133,7 +133,7 @@ local Protocols = { {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, @@ -166,6 +166,7 @@ local Protocols = { {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, -- Need first 4 channels changed... {19, 0, "Shenqi", "Cycle", { }, 1 }, @@ -293,7 +294,7 @@ local function Multi_Draw_LCD() line = line + 1 end if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) else if LCD_W > 128 then lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) line = line + 1 diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index e089cf72e..2bd2e1a73 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -133,7 +133,7 @@ local Protocols = { {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, @@ -166,6 +166,7 @@ local Protocols = { {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, -- Need first 4 channels changed... {19, 0, "Shenqi", "Cycle", { }, 1 }, @@ -293,7 +294,7 @@ local function Multi_Draw_LCD() line = line + 1 end if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) else if LCD_W > 128 then lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) line = line + 1 diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index e089cf72e..2bd2e1a73 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -133,7 +133,7 @@ local Protocols = { {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {56, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, + {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, @@ -166,6 +166,7 @@ local Protocols = { {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, + {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, -- Need first 4 channels changed... {19, 0, "Shenqi", "Cycle", { }, 1 }, @@ -293,7 +294,7 @@ local function Multi_Draw_LCD() line = line + 1 end if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol/sub_protocol...", lcd_opt) + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) else if LCD_W > 128 then lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) line = line + 1 From e68bd31f4e3602305100735b3b61a8f42469a8d1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 09:02:05 +0200 Subject: [PATCH 103/199] Continued --- radio/src/targets/horus/tp_gt911.cpp | 5 ++-- radio/src/targets/horus/tp_gt911.h | 34 ++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index d0982788a..39fe352f5 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -351,9 +351,10 @@ bool touchPanelInit(void) gt911WriteRegister(GT_CTRL_REG, tmp, 1); gt911ReadRegister(GT_CFGS_REG, tmp, 1); + TRACE("Chip config Ver:%x\r\n",tmp[0]); if (tmp[0] < 0X69)//ver { - TRACE("Default Ver:%x\r\n",tmp[0]); + TRACE("Sending new config %d", GT911_CFG_NUMER); GT911_Send_Cfg(1); } @@ -384,7 +385,7 @@ void touchPanelRead() uint8_t pointsCount = (state & 0x0Fu); - if (pointsCount > 0 && pointsCount < GT911_MAX_TOUCH_POINTS) { + if (pointsCount > 0 && pointsCount < GT911_MAX_TP) { gt911ReadRegister(GT911_READ_XY_REG + 1, touchData.data, pointsCount * sizeof(TouchPoint)); if (touchData.pointsCount == 0) { touchState.event = TE_DOWN; diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index 4ea113514..721db6a24 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -38,13 +38,16 @@ uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len); void gt911ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len); void touchPanelRead(); +#define GT911_MAX_TP 5 +#define GT911_CFG_NUMER 0x69 + //GT911 param table const uint8_t GT911_Cfg[]= // { - 0x69, // ver 0x68 - 0xE0,0x01, // 0x8049 X output map : x 480 + GT911_CFG_NUMER, // 0x8047 Config version + 0xE0,0x01, // 0x8048 X output map : x 480 0x10,0x01, // 0x804A Y ouptut max : y 272 - 0x05, // 0x804C Touch number : GT911_MAX_TOUCH_POINTS + GT911_MAX_TP, // 0x804C Touch number : GT911_MAX_TP 0x38, // 0x804D Module switch 1 : bit4= xy change Int mode 0x00, // 0x804E Module switch 2 0x02, // 0x804F Shake_Count @@ -94,9 +97,22 @@ const uint8_t GT911_Cfg[]= // 0xC5, // 0x807D Hopping flag 0x02, // 0x807E Hopping flag 0x07, // 0x807F Noise threshold - 0x00,0x00,0x04, - 0xA5,0x1F,0x00,0x94,0x25,0x00,0x88,0x2B,0x00,0x7D, - 0x33,0x00,0x74,0x3C,0x00,0x74,0x00,0x00,0x00,0x00, + 0x00, // 0x8080 Nois min threshold old + 0x00, // 0x8081 Reserved + 0x04, // 0x8082 Hopping sensor group + 0xA5, // 0x8083 Hopping Seg1 normalize + 0x1F, // 0x8084 Hopping Seg1 factor + 0x00, // 0x8085 Main clock adjust + 0x94, // 0x8086 Hopping Seg2 normalize + 0x25, // 0x8087 Hopping Seg2 factor + 0x00, // 0x8088 Reserved + 0x88, // 0x8089 Hopping Seg3 normalize + 0x2B, // 0x808A Hopping Seg3 factor + 0x00, // 0x808B Reserved + 0x7D, // 0x808C Hopping Seg4 normalize + 0x33, // 0x808D Hopping Seg4 factor + 0x00, // 0x808E Reserved + 0x74,0x3C,0x00,0x74,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -139,8 +155,6 @@ const uint8_t GT911_Cfg[]= // #define GT911_CONFIG_CHECKSUM_REG 0x80FF #define GT911_FIRMWARE_VERSION_REG 0x8144 -#define GT911_MAX_TOUCH_POINTS 5 - PACK(typedef struct { uint8_t track; @@ -155,8 +169,8 @@ PACK(struct TouchData uint8_t pointsCount; union { - TouchPoint points[GT911_MAX_TOUCH_POINTS]; - uint8_t data[GT911_MAX_TOUCH_POINTS * sizeof(TouchPoint)]; + TouchPoint points[GT911_MAX_TP]; + uint8_t data[GT911_MAX_TP * sizeof(TouchPoint)]; }; }); From d0854f3489e67ca429e2ac2dbf127d470d129097 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 10:50:06 +0200 Subject: [PATCH 104/199] Continued --- radio/src/targets/horus/tp_gt911.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 39fe352f5..1235aebcd 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -352,7 +352,7 @@ bool touchPanelInit(void) gt911ReadRegister(GT_CFGS_REG, tmp, 1); TRACE("Chip config Ver:%x\r\n",tmp[0]); - if (tmp[0] < 0X69)//ver + if (tmp[0] < GT911_CFG_NUMER) //Config ver { TRACE("Sending new config %d", GT911_CFG_NUMER); GT911_Send_Cfg(1); From 13723ad9d786347a85c3cdbe9280b2079b0485c7 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 11:11:43 +0200 Subject: [PATCH 105/199] Fix wobble ... --- radio/src/targets/horus/bootloader/boot_menu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/horus/bootloader/boot_menu.cpp b/radio/src/targets/horus/bootloader/boot_menu.cpp index 9e6ceaf47..d64f2c7f8 100644 --- a/radio/src/targets/horus/bootloader/boot_menu.cpp +++ b/radio/src/targets/horus/bootloader/boot_menu.cpp @@ -64,7 +64,7 @@ static void bootloaderDrawFooter() void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) { // clear screen - lcdDrawSolidFilledRect(0, 0, LCD_W-1, LCD_H-1, TEXT_BGCOLOR); + lcdDrawSolidFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR); if (st == ST_START) { From 2695b8b785db359b9a2f3e8345628fc3593ba15e Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 16:29:35 +0200 Subject: [PATCH 106/199] Default to AETR --- radio/src/opentx.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index fd9c8eaef..5f89d258b 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -295,6 +295,8 @@ void generalDefault() #if defined(FRSKY_RELEASE) g_eeGeneral.templateSetup = 17; /* TAER */ +#elif defined(RADIO_TX16S) //TODO : is RADIO_FAMILLY_T16 better ? + g_eeGeneral.templateSetup = 21; /* AETR to match bundled multi */ #endif g_eeGeneral.backlightMode = e_backlight_mode_all; From 6c09828912a8b510823512893da1207519c8ff64 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 17:26:41 +0200 Subject: [PATCH 107/199] Finish touch config table --- radio/src/targets/horus/tp_gt911.h | 126 ++++++++++++++++++++++++++--- 1 file changed, 113 insertions(+), 13 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index 721db6a24..32fdd8388 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -42,7 +42,7 @@ void touchPanelRead(); #define GT911_CFG_NUMER 0x69 //GT911 param table -const uint8_t GT911_Cfg[]= // +const uint8_t GT911_Cfg[]= { GT911_CFG_NUMER, // 0x8047 Config version 0xE0,0x01, // 0x8048 X output map : x 480 @@ -112,18 +112,118 @@ const uint8_t GT911_Cfg[]= // 0x7D, // 0x808C Hopping Seg4 normalize 0x33, // 0x808D Hopping Seg4 factor 0x00, // 0x808E Reserved - 0x74,0x3C,0x00,0x74,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x18,0x16,0x14,0x12,0x10,0x0E,0x0C,0x0A, - 0x08,0x06,0x04,0x02,0xFF,0xFF,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x24,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1C, - 0x18,0x16,0x13,0x12,0x10,0x0F,0x0A,0x08,0x06,0x04, - 0x02,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00, + 0x74, // 0x808F Hopping Seg5 normalize + 0x3C, // 0x8090 Hopping Seg5 factor + 0x00, // 0x8091 Reserved + 0x74, // 0x8092 Hopping Seg6 normalize + 0x00, // 0x8093 Key1 + 0x00, // 0x8094 Key2 + 0x00, // 0x8095 Key3 + 0x00, // 0x8096 Key4 + 0x00, // 0x8097 Key area + 0x00, // 0x8098 Key touch level + 0x00, // 0x8099 Key leave level + 0x00, // 0x809A Key sens + 0x00, // 0x809B Key sens + 0x00, // 0x809C Key restrain + 0x00, // 0x809D Key restrain time + 0x00, // 0x809E Large gesture touch + 0x00, // 0x809F Reserved + 0x00, // 0x80A0 Reserved + 0x00, // 0x80A1 Hotknot noise map + 0x00, // 0x80A2 Link threshold + 0x00, // 0x80A3 Pxy threshold + 0x00, // 0x80A4 GHot dump shift + 0x00, // 0x80A5 GHot rx gain + 0x00, // 0x80A6 Freg gain + 0x00, // 0x80A7 Freg gain 1 + 0x00, // 0x80A8 Freg gain 2 + 0x00, // 0x80A9 Freg gain 3 + 0x00, // 0x80AA Reserved + 0x00, // 0x80AB Reserved + 0x00, // 0x80AC Reserved + 0x00, // 0x80AD Reserved + 0x00, // 0x80AE Reserved + 0x00, // 0x80AF Reserved + 0x00, // 0x80B0 Reserved + 0x00, // 0x80B1 Reserved + 0x00, // 0x80B2 Reserved + 0x00, // 0x80B3 Combine dis + 0x00, // 0x80B4 Split set + 0x00, // 0x80B5 Reserved + 0x00, // 0x80B6 Reserved + 0x18, // 0x80B7 Sensor CH0 + 0x16, // 0x80B8 Sensor CH1 + 0x14, // 0x80B9 Sensor CH2 + 0x12, // 0x80BA Sensor CH3 + 0x10, // 0x80BB Sensor CH4 + 0x0E, // 0x80BC Sensor CH5 + 0x0C, // 0x80BD Sensor CH6 + 0x0A, // 0x80BE Sensor CH7 + 0x08, // 0x80BF Sensor CH8 + 0x06, // 0x80C0 Sensor CH9 + 0x04, // 0x80C1 Sensor CH10 + 0x02, // 0x80C2 Sensor CH11 + 0xFF, // 0x80C3 Sensor CH12 + 0xFF, // 0x80C4 Sensor CH13 + 0x00, // 0x80C5 Reserved + 0x00, // 0x80C6 Reserved + 0x00, // 0x80C7 Reserved + 0x00, // 0x80C8 Reserved + 0x00, // 0x80C9 Reserved + 0x00, // 0x80CA Reserved + 0x00, // 0x80CB Reserved + 0x00, // 0x80CC Reserved + 0x00, // 0x80CD Reserved + 0x00, // 0x80CE Reserved + 0x00, // 0x80CF Reserved + 0x00, // 0x80D0 Reserved + 0x00, // 0x80D1 Reserved + 0x00, // 0x80D2 Reserved + 0x00, // 0x80D3 Reserved + 0x00, // 0x80D4 Reserved + 0x24, // 0x80D5 Driver CH0 + 0x22, // 0x80D6 Driver CH1 + 0x21, // 0x80D7 Driver CH2 + 0x20, // 0x80D8 Driver CH3 + 0x1F, // 0x80D9 Driver CH4 + 0x1E, // 0x80DA Driver CH5 + 0x1D, // 0x80DB Driver CH6 + 0x1C, // 0x80DC Driver CH7 + 0x18, // 0x80DD Driver CH8 + 0x16, // 0x80DE Driver CH9 + 0x13, // 0x80DF Driver CH10 + 0x12, // 0x80E0 Driver CH11 + 0x10, // 0x80E1 Driver CH12 + 0x0F, // 0x80E2 Driver CH13 + 0x0A, // 0x80E3 Driver CH14 + 0x08, // 0x80E4 Driver CH15 + 0x06, // 0x80E5 Driver CH16 + 0x04, // 0x80E6 Driver CH17 + 0x02, // 0x80E7 Driver CH18 + 0x00, // 0x80E8 Driver CH19 + 0xFF, // 0x80E9 Driver CH20 + 0xFF, // 0x80EA Driver CH21 + 0xFF, // 0x80EB Driver CH22 + 0xFF, // 0x80EC Driver CH23 + 0xFF, // 0x80ED Driver CH24 + 0xFF, // 0x80EE Driver CH25 + 0x00, // 0x80EF Reserved + 0x00, // 0x80F0 Reserved + 0x00, // 0x80F1 Reserved + 0x00, // 0x80F2 Reserved + 0x00, // 0x80F3 Reserved + 0x00, // 0x80F4 Reserved + 0x00, // 0x80F5 Reserved + 0x00, // 0x80F6 Reserved + 0x00, // 0x80F7 Reserved + 0x00, // 0x80F8 Reserved + 0x00, // 0x80F9 Reserved + 0x00, // 0x80FA Reserved + 0x00, // 0x80FB Reserved + 0x00, // 0x80FC Reserved + 0x00, // 0x80FD Reserved + 0x00, // 0x80FE Reserved }; //I2C From 2abafbede64c78a2a986b2e8e378db123b8b496c Mon Sep 17 00:00:00 2001 From: Kilrah Date: Sun, 26 Apr 2020 18:06:54 +0200 Subject: [PATCH 108/199] Fix battery voltage --- radio/src/targets/horus/board.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 2310c296b..15b14ac2f 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -241,8 +241,14 @@ void boardOff() pwrOff(); } +#if defined (RADIO_TX16S) + #define BATTERY_DIVIDER 1495 +#else + #define BATTERY_DIVIDER 1629 +#endif + uint16_t getBatteryVoltage() { int32_t instant_vbat = anaIn(TX_VOLTAGE); // using filtered ADC value on purpose - return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / 1629); + return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / BATTERY_DIVIDER); } From 8f8ef313bbe5eec82b973e9de4da30abb020d576 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Sun, 26 Apr 2020 18:23:48 +0200 Subject: [PATCH 109/199] VRef is 3.3V --- radio/src/targets/horus/hal.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index f22509c89..063daae68 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -320,7 +320,9 @@ #define ADC_DMA_Stream DMA2_Stream0 #define ADC_SET_DMA_FLAGS() ADC_DMA->LIFCR = (DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0) #define ADC_TRANSFER_COMPLETE() (ADC_DMA->LISR & DMA_LISR_TCIF0) - #if defined(RADIO_FAMILY_T16) + #if defined(RADIO_TX16S) + #define ADC_VREF_PREC2 330 + #elif defined(RADIO_T16) #define ADC_VREF_PREC2 300 #else #define ADC_VREF_PREC2 250 From 71e13064daaf8cf067b753e91b098e873738aaa6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 26 Apr 2020 19:18:35 +0200 Subject: [PATCH 110/199] fix inconsistent Darkblue theme color --- radio/src/gui/480x272/themes/darkblue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/themes/darkblue.cpp b/radio/src/gui/480x272/themes/darkblue.cpp index 0b8e21306..bf244169e 100644 --- a/radio/src/gui/480x272/themes/darkblue.cpp +++ b/radio/src/gui/480x272/themes/darkblue.cpp @@ -51,7 +51,7 @@ class DarkblueTheme: public Theme lcdColorTable[TRIM_BGCOLOR_INDEX] = RGB(32, 34, 42); lcdColorTable[TRIM_SHADOW_COLOR_INDEX] = RGB(100, 100, 100); lcdColorTable[MAINVIEW_PANES_COLOR_INDEX] = GREY; - lcdColorTable[MAINVIEW_GRAPHICS_COLOR_INDEX] = WHITE; + lcdColorTable[MAINVIEW_GRAPHICS_COLOR_INDEX] = BLUE; lcdColorTable[HEADER_BGCOLOR_INDEX] = BLACK; lcdColorTable[HEADER_ICON_BGCOLOR_INDEX] = BLACK; lcdColorTable[HEADER_CURRENT_BGCOLOR_INDEX] = RGB(10, 78, 121); From 251fc3b114e3206263e6df6d0409b7f30f3285d3 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 27 Apr 2020 07:56:39 +0200 Subject: [PATCH 111/199] Cleanup --- radio/src/targets/horus/tp_gt911.cpp | 14 -------------- radio/src/targets/horus/tp_gt911.h | 2 -- 2 files changed, 16 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 1235aebcd..ffad5cc48 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -55,15 +55,8 @@ uint8_t GT911_Send_Cfg(uint8_t mode) static void I2C_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; - //I2C_InitTypeDef I2C_InitStructure; - - /* GPIO Peripheral clock enable */ RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); - //RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); - - //PB6: I2C1_SCL PB7: I2C1_SDA GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN; - //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; @@ -140,9 +133,6 @@ static void TOUCH_AF_GPIOConfig(void) void SDA_IN(void) { GPIO_InitTypeDef GPIO_InitStructure; - //RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOB, ENABLE); - //RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); - GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; @@ -152,9 +142,6 @@ void SDA_IN(void) void SDA_OUT(void) { GPIO_InitTypeDef GPIO_InitStructure; - //RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOB, ENABLE); - //RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE); - GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; @@ -295,7 +282,6 @@ void gt911ReadRegister(u16 reg, uint8_t * buf, uint8_t len) { uint8_t i; - //I2C_GenerateSTART(I2C1, ENABLE); I2C_Start(); I2C_Send_Byte(GT_CMD_WR); //send addr I2C_Wait_Ack(); diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index 32fdd8388..aa35d468f 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -25,13 +25,11 @@ #include "touch.h" #define HAS_TOUCH_PANEL() touchGT911Flag == true -#define TOUCH_INT_STATUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN)) bool touchPanelInit(); void touchPanelDeInit(); extern uint8_t touchGT911Flag; -extern uint8_t TOUCH_SCAN_MODE; extern uint8_t touchPanelEvent; uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len); From 6948c2f420f78edf1dc9c87d07233ea0954d30d3 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 27 Apr 2020 10:42:21 +0200 Subject: [PATCH 112/199] Issue with layout 2x1 --- radio/src/gui/480x272/layouts/layout2x1.cpp | 2 +- radio/src/gui/480x272/screens_setup.cpp | 2 +- radio/src/gui/common/colorlcd/draw_functions.cpp | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/480x272/layouts/layout2x1.cpp b/radio/src/gui/480x272/layouts/layout2x1.cpp index 3c06d7079..81e196d63 100644 --- a/radio/src/gui/480x272/layouts/layout2x1.cpp +++ b/radio/src/gui/480x272/layouts/layout2x1.cpp @@ -45,7 +45,7 @@ class Layout2x1: public Layout virtual unsigned int getZonesCount() const { - return 4; + return 2; } virtual Zone getZone(unsigned int index) const diff --git a/radio/src/gui/480x272/screens_setup.cpp b/radio/src/gui/480x272/screens_setup.cpp index c1f251460..e73afed68 100644 --- a/radio/src/gui/480x272/screens_setup.cpp +++ b/radio/src/gui/480x272/screens_setup.cpp @@ -346,7 +346,7 @@ bool menuWidgetsSetup(event_t event) currentScreen->refresh(); - for (int i=currentContainer->getZonesCount()-1; i>=0; i--) { + for (int i = currentContainer->getZonesCount() - 1; i >= 0; i--) { Zone zone = currentContainer->getZone(i); LcdFlags color; int padding, thickness; diff --git a/radio/src/gui/common/colorlcd/draw_functions.cpp b/radio/src/gui/common/colorlcd/draw_functions.cpp index 1854c0057..c75ae824e 100644 --- a/radio/src/gui/common/colorlcd/draw_functions.cpp +++ b/radio/src/gui/common/colorlcd/draw_functions.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include #include "opentx.h" void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFlags flags, const char * prefix, const char * suffix) From a6d98b81fc7cd61ce2e9cca208edef1dde424ff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Charpentier?= Date: Mon, 27 Apr 2020 10:44:53 +0200 Subject: [PATCH 113/199] Updated Fr Translation (#7556) Updated French Translations --- companion/src/translations/companion_fr.ts | 748 ++++++++++----------- 1 file changed, 351 insertions(+), 397 deletions(-) diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts index 98fb5663a..c88f190f0 100644 --- a/companion/src/translations/companion_fr.ts +++ b/companion/src/translations/companion_fr.ts @@ -103,32 +103,32 @@ Profil de radio - + Default Channel Order Ordre des voies par défaut - + Build Options Options de compilation - + Menu Language Langue des menus - + Default Stick Mode Mode par défaut - + Select Image Sélectionner une image - + Mode selection: Mode 1: @@ -169,452 +169,462 @@ Manche Droit: Profondeur, Direction - + Mode 1 (RUD ELE THR AIL) Mode 1 (DIR PROF GAZ AIL) - + Mode 2 (RUD THR ELE AIL) Mode 2 (DIR GAZ PROF AIL) - + Mode 3 (AIL ELE THR RUD) Mode 3 (AIL PROF GAZ DIR) - + Mode 4 (AIL THR ELE RUD) Mode 4 (AIL GAZ PROF DIR) - + Splash Screen Ecran d'accueil - - + + The profile specific folder, if set, will override general Backup folder Dossier de sauvegarde spécifique au profil courant, si défini remplace le paramètre de l'application - + Backup folder Dossier de sauvegarde - + If set it will override the application general setting Si défini, remplace le paramètre de l'application pour ce profil - + if set, will override general backup enable Si défini, remplace le paramètre de l'application pour ce profil - + <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> - + 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 - - - - - - + + + + + + Select Folder Sélectionner dossier - + Select Executable Sélectionner exécutable - + Release channel Canal de version - + Releases (stable) Officiel (stable) - + Release candidates (testing) Candidate (test) - + Nightly builds (unstable) Nighlty (instable) - + Simulator Volume Gain Gain de volume du simulateur - + + Simulator controls + Commandes du simulateur + + + + Save switch/pot positions on simulator exit + Enregistrer les positions des inters/pots à la sortie du simulateur + + + + Clear saved positions + Effacer les positions enregistrées + + + Profile Name Nom du profil - + Clear Image Effacer l'image - + Append version number to FW file name Ajouter le numéro de version au nom du fichier téléchargé - + Offer to write FW to Tx after download Proposer de transférer le firmware à la radio après téléchargement - + Radio Type Type de radio - + Other Settings Autres paramètres - + General Settings Paramètres généraux - + SD Structure path Chemin de la structure de la carte SD - + Application Settings Paramètres de l'application - + Show splash screen when Companion starts Afficher l'écran d'accueil au lancement de Companion - + Automatic check for Companion updates Vérifier la présence de mises à jour de Companion automatiquement - - + + Enable automatic backup before writing firmware Sauvegarder les paramètres et modèles automatiquement lors des transferts - + Automatic check for OpenTX firmware updates Vérifier la présence de mises à jour de firmware automatiquement - + Splash Screen Library Bibliothèque d'écrans d'accueil - + Google Earth Executable Exécutable Google Earth - + Only show user splash images Ne montrer que les images de l'utilisateur - + Show user and companion splash images Montrer les images de Companion et de l'utilisateur - + User Splash Screens Ecrans d'accueil personnalisés - + Automatic Backup Folder Dossier de sauvegardes automatiques - + Simulator Settings Paramètres du simulateur - + Simulator BackLight Rétroéclairage du simulateur - + Enable Actif - + Action on New Model Action par défaut "Ajout Modèle" - + Use model wizard Assistant - + Open model editor Éditer modèle - + Just create the model Créer modèle - + <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><b><u>/!\</u> Uniquement pour les radios sans catégories <u>/!\</u></b></p><p>Cette option maintient le comportement des anciennes versions d’OpenTx où les emplacements des modèles vides sont conservés lorsqu'un modèle est supprimé ou déplacé.</p><p>Lorsque cette option est désélectionnée, les autres modèles peuvent être réarrangés pour combler l'écart laissé par le modèle supprimé.</p></body></html> - + most recently used files fichiers récemment utilisés - + Startup Settings Paramètres de démarrage - + Remember Mémoriser - + Output Logs Folder Dossier des logs sauvegardés - + Remove empty model slots when deleting models (only applies for radios w/out categories) Supprimer les emplacements vides lors de la suppression de modèles - + Debug Output Logging Log les messages de debug - + <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>Garder un log de tous les messages de débogage générés par les applications Companion/Simulateur. Un développeur OpenTX peut demander ce log afin d'aider à diagnostiquer un problème.</p></body></html> - + Application (Companion/Simulator) Application (Companion/Simulateur) - + <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>Conserver un log de tous les messages générés par le firmware radio lors de l'exécution du Simulateur. C'est la même information visible depuis le Simulateur dans la <span style=" font-style:italic;">Fenêtre de débogage</span>.</p></body></html> - + Radio Firmware (in Simulator) Firmware radio (Simulateur) - + Blue Bleu - + Green Vert - + Red Rouge - + Orange Orange - + Yellow Jaune - + Screenshot capture folder Dossier des captures d'écran - + Joystick - + Calibrate Calibrer - + Only capture to clipboard Capturer dans le presse-papiers uniquement - - - Remember simulator switch values - Mémoriser les positions des inters du simulateur - My Radio @@ -637,7 +647,7 @@ Manche Droit: Profondeur, Direction - + No joysticks found Aucun Joystick trouvé @@ -678,17 +688,17 @@ Manche Droit: Profondeur, Direction 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) @@ -2109,23 +2119,23 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import 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 @@ -2888,19 +2898,19 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont - + 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 @@ -2916,6 +2926,7 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont + Disable RAS (SWR) Désactiver le RAS (SWR). Utile uniquement pour les X9D+ avec un RAS/SWR non fonctionnel @@ -2940,86 +2951,81 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont - + 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 - + FrSky Taranis X9-Lite S - + FrSky Taranis X7 / X7S - + FrSky Taranis X7 / X7S Access - + 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 / X10S Express - + FrSky Horus X12S - + Use ONLY with first DEV pcb version Exclusivement pour les Horus DEV - - - Enable non certified R9M firmwares - Activer les firmwares R9M non certifiés - @@ -3028,17 +3034,11 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont - Support for bluetooth module Prise en charge du module Bluetooth - - Radiomaster TX16S - - - - + Turnigy 9XR-PRO @@ -3083,17 +3083,17 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont 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 @@ -3103,17 +3103,17 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont 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 - + Jumper T12 / T12 Pro @@ -3123,17 +3123,17 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont - + 9X with Sky9x board 9X avec carte Sky9x - + 9X with Gruvin9x board 9X avec carte Gruvin9x - + DIY MEGA2560 radio Radio DIY à base de MEGA2560 @@ -3608,6 +3608,16 @@ Vous utilisez actuellement: Switch Interrupteur + + + trim6 + + + + + trim5 + + FlightModeData @@ -3620,52 +3630,52 @@ Vous utilisez actuellement: FlightModePanel - + Rotary Encoder %1 Sélecteur Rotatif %1 - + Name Nom - + Value source Source valeur - + Value Valeur - + Unit - + Prec - + Min Min - + Max Max - + GVAR%1 VG%1 - + Popup enabled Indication activée @@ -3675,49 +3685,49 @@ Vous utilisez actuellement: Menu contextuel disponible - + Trim disabled Trim désactivé - + Own Trim Valeur indépendante - + Use Trim from Flight mode %1 Utiliser le trim de la phase de vol %1 - + Use Trim from Flight mode %1 + Own Trim as an offset Utiliser le trim de la phase de vol %1 + une valeur indépendante additionnée - + 0._ - + 0.0 - - + + &Clear &Effacer - - + + Clear Effacer - + Clear all current Flight Mode properties? Effacer tout les modes de vols ? @@ -3725,17 +3735,17 @@ Vous utilisez actuellement: FlightModesPanel - + Flight Mode %1 Phase de vol %1 - + (%1) - + (default) (par défaut) @@ -4408,11 +4418,6 @@ Mode 4: Owner Registration ID Enregistrement ID du propriétaire - - - aaaaaaAA - - R E T A @@ -4730,6 +4735,11 @@ Plage de valeurs: 5v...10v 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. + + + nnnnnnNN + + min @@ -8170,7 +8180,7 @@ Mixage actif par défaut si non-renseigné. Extended Limits - Débattements étendus + Limites étendues @@ -8977,12 +8987,12 @@ Mixage actif par défaut si non-renseigné. ModuleData - + Positive - + Negative Négative @@ -9605,7 +9615,7 @@ Mixage actif par défaut si non-renseigné. DÉFAUT - + Custom - proto %1) Personnaliser - proto %1) @@ -10859,7 +10869,12 @@ E secondes - + + ml/minute + + + + TELE @@ -11009,7 +11024,7 @@ E Extended Limits - Débattements étendus + Limites étendues @@ -11830,12 +11845,12 @@ La valeur par défaut est configurée dans le profil radio sélectionné.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) @@ -12538,104 +12553,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 - + --- @@ -12648,274 +12663,284 @@ Trop d'erreurs, abandon. Formulaire - + + TELE## + + + + Custom Prédéfini - + Calculated Calculé - + Id - + Instance - + Rx - + 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 - + + ml/min + + + + Precision Précision - + Ratio - + Blades Pales - + Offset Décalage - + Multiplier Multiplicateur - + Auto Offset Offset auto - + Filter Filtre - + Persistent Persistant - + Positive - + Logs @@ -12923,25 +12948,70 @@ Trop d'erreurs, abandon. TelemetrySensorPanel - + + TELE%1 + + + + + Popup menu available + Menu contextuel disponible + + + Lowest Min - + Cell %1 Elém. %1 - + Highest Max - + Delta + + + Copy + Copier + + + + Cut + Couper + + + + Paste + Coller + + + + Clear + Effacer + + + + Clear All + Effacer Tout + + + + Clear Telemetry Sensor. Are you sure? + Effacer le capteur de télémétrie. Êtes-vous sûr? + + + + Clear all Telemetry Sensors. Are you sure? + Effacez tous les capteurs de télémétrie. Êtes-vous sûr? + TelemetrySimulator @@ -14303,120 +14373,4 @@ Cliquer sur Annuler pour interrompre la calibration sans sauvegarder.Calibration incomplète, sauvegarder tout de même ? - - preferencesDialog - - - - ... - - - - - Enable - Actif - - - - Remember simulator switches - Mémoriser les positions des inters du simulateur - - - - Calibrate - Calibrer - - - - - Open Folder - Ouvrir le dossier - - - - Custom TX splash screen - Personnaliser l'écran d'accueil - - - - Simulator capture folder - Dossier des captures d'écran - - - - Use clipboard only - Utiliser le presse-papiers - - - - Simu BackLight - Rétroéclairage simu - - - - Blue - Blu - Bleu - - - - Green - Vert - - - - Red - Rouge - - - - Orange - - - - - Yellow - Jaune - - - - Personal splash library - Librairie d'écran d'accueil personnalisé - - - - Splash library behaviour - Utilisation de la librairie d'écran d'accueil - - - - Include companion splashes - Inclure les écrans d'accueil de Companion - - - - Only user defined splashes - Seulement les écrans d'accueil personnalisé - - - - Joystick - - - - - Open Image - Charger une image - - - - Invert Pixels - Inverser les couleurs - - - - Preferences - Préférences - - From 726f310a314ba043429462ef09e5d109c5732929 Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Mon, 27 Apr 2020 09:50:15 +0100 Subject: [PATCH 114/199] Add es and pt special characters (#7542) Add special es characters --- radio/src/fonts/480x272/font_dblsize.png | Bin 32208 -> 36974 bytes radio/src/fonts/480x272/font_dblsize.specs | 2 +- radio/src/fonts/480x272/font_midsize.png | Bin 23808 -> 26364 bytes radio/src/fonts/480x272/font_midsize.specs | 2 +- radio/src/fonts/480x272/font_smlsize.png | Bin 11361 -> 12765 bytes radio/src/fonts/480x272/font_smlsize.specs | 2 +- radio/src/fonts/480x272/font_stdsize.png | Bin 22093 -> 22533 bytes radio/src/fonts/480x272/font_stdsize.specs | 2 +- radio/src/fonts/480x272/font_stdsizebold.png | Bin 19886 -> 21736 bytes .../src/fonts/480x272/font_stdsizebold.specs | 2 +- radio/src/fonts/480x272/font_tinsize.png | Bin 8100 -> 8922 bytes radio/src/fonts/480x272/font_tinsize.specs | 2 +- radio/src/fonts/480x272/font_xxlsize.png | Bin 72981 -> 82621 bytes radio/src/fonts/480x272/font_xxlsize.specs | 2 +- radio/src/fonts/sqt5/font_es_04x06.png | Bin 155 -> 143 bytes radio/src/fonts/sqt5/font_es_05x07.png | Bin 155 -> 150 bytes radio/src/fonts/sqt5/font_es_08x10.png | Bin 161 -> 190 bytes radio/src/fonts/sqt5/font_es_10x14.png | Bin 174 -> 250 bytes radio/src/fonts/std/font_es_04x06.png | Bin 298 -> 199 bytes radio/src/fonts/std/font_es_05x07.png | Bin 301 -> 199 bytes radio/src/fonts/std/font_es_08x10.png | Bin 309 -> 311 bytes radio/src/fonts/std/font_es_10x14.png | Bin 331 -> 355 bytes radio/src/gui/480x272/lcd.cpp | 10 +- radio/src/tests/fonts_480x272.png | Bin 9677 -> 9643 bytes radio/src/tests/primitives_480x272.png | Bin 5804 -> 5713 bytes radio/src/tests/transparency_480x272.png | Bin 5754 -> 5773 bytes radio/src/translations/es.h.txt | 248 +++++++++--------- radio/util/font2png.py | 4 +- radio/util/translate.py | 12 +- 29 files changed, 149 insertions(+), 139 deletions(-) diff --git a/radio/src/fonts/480x272/font_dblsize.png b/radio/src/fonts/480x272/font_dblsize.png index 174c70f9b99710dbb795f45c084a3761fc705fdb..65f5a60fefc516349873fb46a1292e1dec345d76 100644 GIT binary patch literal 36974 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 literal 32208 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 TPAERrhQ)HnF4OB&58D3#W%5;{ literal 23808 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 diff --git a/radio/src/fonts/480x272/font_smlsize.specs b/radio/src/fonts/480x272/font_smlsize.specs index 8802a9945..55bac8f44 100644 --- a/radio/src/fonts/480x272/font_smlsize.specs +++ b/radio/src/fonts/480x272/font_smlsize.specs @@ -1 +1 @@ -0,4,8,13,22,30,41,51,54,60,66,73,81,85,90,94,100,108,116,124,132,141,149,157,165,173,181,185,189,197,205,213,220,226,236,245,254,264,272,280,290,300,305,313,323,331,343,353,363,372,382,391,400,409,418,427,440,449,458,467,472,479,483,489,496,501,509,517,525,533,541,547,555,563,567,571,579,583,595,603,611,619,627,633,641,646,654,661,672,680,687,695,705,709,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,725,733,741,746,754,764,772,782,790,799,807,816,824,832,840,846,854,861,869,874,882,890,898,906,914,924,931,939,948,957,966,975,984,994,999,1007,1017,1027,1036,1045,1055,1064,1074,1082,1090,1098,1106,1116,1126,1136,1144,1152,1160,1168,1176,1181,1189,1197,1205,1213,1221,1231,1240,1248,1256,1266,1276,1285,1294,1303,1311,1319,1327,1337,1347,1357 \ No newline at end of file +0,4,8,13,22,30,41,51,54,60,66,73,81,85,90,94,100,108,116,124,132,141,149,157,165,173,181,185,189,197,205,213,220,226,236,245,254,264,272,280,290,300,305,313,323,331,343,353,363,372,382,391,400,409,418,428,441,450,459,468,473,480,484,490,497,502,510,518,526,534,542,548,556,564,568,573,581,585,597,605,613,621,629,635,643,648,656,664,675,683,690,698,708,712,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,728,736,744,750,758,768,776,786,794,803,811,820,828,836,844,850,858,865,873,878,886,894,902,910,918,928,934,942,951,960,969,978,987,997,1002,1010,1020,1030,1039,1048,1058,1067,1077,1085,1095,1103,1111,1119,1124,1129,1139,1147,1156,1164,1172,1180,1188,1198,1208,1218,1226,1234,1242,1250,1258,1263,1271,1279,1287,1295,1303,1313,1322,1330,1338,1348,1358,1367,1376,1385,1395,1403,1413,1421,1431,1439,1449,1457,1466,1474,1482,1490,1498,1506,1511,1516,1526,1534,1544,1552,1562,1570,1579,1587 \ No newline at end of file diff --git a/radio/src/fonts/480x272/font_stdsize.png b/radio/src/fonts/480x272/font_stdsize.png index e173a61af7fa6d9e6fcfcc374a92129a3fe4aaf6..afd1e98b5230abd370ac2c4a23eb003abe54624c 100644 GIT binary patch literal 22533 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 K-z&=^e)tD~WSThu literal 22093 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 S=w6}+r>$DCR(>f^dFa2ltE2+} diff --git a/radio/src/fonts/480x272/font_stdsize.specs b/radio/src/fonts/480x272/font_stdsize.specs index 4b75e6d0d..3534008a7 100644 --- a/radio/src/fonts/480x272/font_stdsize.specs +++ b/radio/src/fonts/480x272/font_stdsize.specs @@ -1 +1 @@ -0,4,9,15,26,36,49,60,64,71,78,86,96,100,106,111,119,129,139,149,159,169,179,189,199,209,219,224,228,237,247,256,265,272,284,295,306,318,328,338,350,362,367,377,389,399,414,426,438,449,461,472,483,494,505,516,531,542,553,564,570,578,583,591,600,606,616,626,635,645,654,661,671,681,686,691,701,706,721,731,741,751,761,767,776,782,792,801,814,823,832,841,853,858,867,880,893,906,919,932,945,958,971,984,999,1014,1029,1044,1059,1074,1089,1104,1119,1134,1149,1164,1173,1182,1192,1198,1207,1219,1229,1241,1251,1262,1272,1283,1292,1301,1310,1317,1326,1335,1345,1351,1360,1370,1380,1390,1400,1412,1419,1429,1440,1451,1462,1473,1484,1496,1502,1512,1524,1536,1547,1558,1570,1581,1593,1603,1613,1623,1633,1645,1657,1669,1679,1689,1699,1708,1717,1723,1733,1743,1752,1761,1770,1782,1793,1803,1813,1825,1837,1848,1859,1870,1880,1890,1900,1912,1924,1936 \ No newline at end of file +0,4,9,15,26,36,49,60,64,71,78,86,96,100,106,111,119,129,139,149,159,169,179,189,199,209,219,224,228,237,247,256,265,272,284,295,306,318,328,338,350,362,367,377,389,399,414,426,438,449,461,472,483,494,505,516,531,542,553,564,570,578,583,591,600,606,616,626,635,645,654,661,671,681,686,692,702,707,722,732,742,752,762,769,778,784,794,803,816,825,834,843,855,860,869,882,895,908,921,934,947,960,973,986,1001,1016,1031,1046,1061,1076,1091,1106,1121,1136,1151,1166,1175,1184,1194,1201,1210,1222,1232,1244,1254,1265,1275,1286,1295,1304,1313,1320,1329,1338,1348,1354,1363,1373,1383,1393,1403,1415,1422,1432,1443,1454,1465,1476,1487,1499,1505,1515,1527,1539,1550,1561,1573,1584,1596,1606,1618,1628,1638,1647,1653,1659,1671,1681,1692,1702,1712,1722,1732,1744,1756,1768,1778,1788,1798,1807,1816,1822,1832,1842,1851,1860,1869,1881,1892,1902,1912,1924,1936,1947,1958,1969,1981,1991,2003,2013,2025,2035,2047,2057,2068,2077,2087,2096,2106,2115,2121,2127,2139,2149,2161,2171,2183,2193,2204,2214 \ No newline at end of file diff --git a/radio/src/fonts/480x272/font_stdsizebold.png b/radio/src/fonts/480x272/font_stdsizebold.png index 5dfd2a49b46cf8cf1a69f4843086039225f83407..6af34b96a9145abe64c4f8a6a8bdf97137a7a086 100644 GIT binary patch literal 21736 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 Vw8BCYSnIz#bbub+N{mX&1 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 diff --git a/radio/src/fonts/480x272/font_stdsizebold.specs b/radio/src/fonts/480x272/font_stdsizebold.specs index ac4ebc21b..d7c4b278a 100644 --- a/radio/src/fonts/480x272/font_stdsizebold.specs +++ b/radio/src/fonts/480x272/font_stdsizebold.specs @@ -1 +1 @@ -0,4,9,15,26,36,49,61,65,72,79,88,98,103,110,116,123,133,143,153,163,173,183,193,203,213,223,229,234,243,253,262,271,278,290,301,312,323,333,343,355,367,373,383,395,405,420,432,444,455,467,478,489,500,512,524,539,550,561,572,578,587,592,600,609,615,625,635,644,654,664,671,681,691,696,701,711,716,731,741,751,761,771,778,787,793,803,812,825,835,844,853,864,869,878,891,904,917,930,943,956,969,982,995,1010,1025,1040,1055,1070,1085,1100,1115,1130,1145,1160,1175,1185,1195,1205,1211,1220,1232,1242,1254,1264,1276,1286,1297,1307,1316,1325,1332,1341,1350,1360,1366,1376,1386,1396,1406,1416,1428,1436,1446,1457,1468,1479,1490,1501,1513,1519,1529,1541,1553,1565,1577,1588,1599,1611,1621,1631,1641,1651,1663,1675,1687,1697,1707,1717,1726,1736,1742,1752,1762,1771,1780,1789,1801,1812,1822,1832,1844,1856,1867,1878,1889,1899,1909,1919,1931,1943,1955 \ No newline at end of file +0,4,9,15,26,36,49,61,65,72,79,88,98,103,110,116,124,134,144,154,164,174,184,194,204,214,224,230,235,244,254,263,272,279,291,302,313,324,334,344,356,368,374,384,396,406,421,433,445,456,468,479,490,501,513,525,540,551,562,573,579,588,593,601,610,616,626,636,645,655,665,672,682,692,697,703,713,718,733,743,753,763,773,780,789,796,806,815,828,838,848,857,868,873,882,895,908,921,934,947,960,973,986,999,1014,1029,1044,1059,1074,1089,1104,1119,1134,1149,1164,1179,1189,1199,1209,1217,1226,1238,1248,1260,1270,1282,1292,1303,1313,1322,1331,1339,1348,1358,1368,1375,1385,1395,1405,1415,1425,1437,1445,1455,1466,1477,1488,1499,1510,1522,1529,1539,1551,1563,1575,1587,1598,1609,1621,1631,1643,1653,1663,1673,1680,1687,1699,1709,1721,1731,1741,1751,1761,1773,1785,1797,1807,1817,1827,1836,1846,1852,1862,1872,1881,1890,1899,1911,1922,1932,1942,1954,1966,1977,1988,1999,2011,2021,2033,2043,2055,2065,2077,2087,2098,2107,2117,2127,2137,2147,2154,2161,2173,2183,2195,2205,2217,2227,2239,2249 \ No newline at end of file diff --git a/radio/src/fonts/480x272/font_tinsize.png b/radio/src/fonts/480x272/font_tinsize.png index 66a09bd5448800f77d19782546f4ba802438fad0..8f2456ce2a5638c5318963201925d6c30163ceb1 100644 GIT binary patch literal 8922 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 literal 8100 zcmY*ecQ}>t+kdh`W`q(Qo6L|Tjuo<%kWt9qBXsOdD1?%cJ+sRuGkYf^E1RtBtaxv~ z_j<4QeV;$NT&HuM=lk5>`~IwNh? zO8&m&V@%@uM^}`__-Vt4B=%Ayk#hXok`O_LHX4q{8@HGh2#B?IzU3uNXjKu%BrrU@ zGm^+8|L|>Mkla`ENGAmu`3(C=hqKcs^}mkRYevv*xwezXQ}>eV_YXJ9Mt1)d{<-!S zP2`92!6CTJ{2+3ZdTzADNJmE}Ffg#Nu#kdH51GOavjNrBN7c@&Qqt1v>+2o9H8nLR#>PiV%P&%Iubthr zqSg^=f{I3oCKHH{i;hzNfEzCeYx%q z9Ua}#(GjnHU4XcQK*|Flo3U>*_H|ZN^{+xhLw$S@J3G6_f}!)5u*jY`&q#?PGK?yv zckkZyJ|6#NJ6X-bb%p%8xR)pki_A&rQJ+tFYaJdsS=@G_(*5tozk|65{kTr8#ezOo z`LGYej7Q|5_Y;NdQIqwkU)lqYVq6=B^0Y?swXu;`At85N)<#1p*!l}J@-&@YT-;n; z8K(>g^zhc7IR5_5f=Il4c_+B}p_2eWiNCMQq)>Yuhb$#sihoQGja;C<{ zsKZ?K>>odV#Kgpu+lCEv&3{@$rGra&wlR56TDqB<_n8`_an{_?%$Y`n|lGt*RS`2+o;iBz8sa9NL1u~yj}t8A)yx)78a&axOVND!D*b*;%rOU z`1pA0$#kRt&6_uygGuGM7hoNH^C^=4CnqNc11l>lT-@9yCMIuQzfKZ!$3s5ceZlH~ zUq%KOK?w-FINo39OM+(H-E~4F;8IW^q|D09l-zkzZmsR$a0{89vTeQYc>4b8!HBQ|>@Ef@Xka)+75PkDK4Dv848{V2y@ z*_oLvu&0(k*#CRdriTJAZ6TB)!UNDX3i9%M&^wB_YK9Jf{1iqAt6;9}f=?f4uiHC@_#5hn$iUzF2BLkd~E|1%tf5yW0>6YcXnl z4a5EB?c0aCy0nzGW2N#avIZ-_Aat@S*?k+E^)#8V6nj|k>Ttm&LP8P1jHTYkWGX5u zA3uJ?ku)|jsj93LymJTeO!U^Rx2RWXX^hm=)R!)W!4haNP`F?cI!i07o$c+=hzK@( z##^_x4z}jFxw(^)l9u|C}e(vzWy+1SP=Cv7Y&v>!dfie`PWyZrD;Cd|vc zy)c%q!Ozbo78Vvbl8Ig-e?CVsQMz1`X>Yh|_C70a6* z`Sj^iS65dUBDJbz2OJ*P{k5yF*8%8&I<&R5V+^1aFB}{g@Y6CfjA3Wz%>YiNRlcUD z`}deqQ&Qq9=B1=a$jcMlj6uCB(5<-1$*HBKMS(+3Mg~KtrlX@k_HF8`dvsJ3zF*F# zPv86dG4Pr;HU+u47Ah(vl4N^(d#$alIFhAhWrv4{bmCr#D17<|GXsOol_5@aa#3F1 z@#c)Q9}0HbFw^toV4$;eWvt8!N78z#*7fZ4UozUWv!lbo#YNWjOKEAqU0?gE37hfq z#?^)f33D1zdQweXNwSTNjgcaK*o~VvSC$9TaU_LBM8?L(F5@`B0QUE*`Jt+7YO<9R zG@m`IGwVx=j3j%Utf{GqBgxFn961t-N=;1#9PuA9>rFg7TuPpC*3lVj^uPG9cxA=X z-QE33Yt@S-9bMfyDjt%z|GA#yp&jSjfo;s~%F4^3AMV__bIDx@jXrIE%ak_P)(oqh zta%w0_tlPY7th;;=QKGjEv;y)RUg^-Xm3u-MPf78L_k6^RqyQ$eDwONKppz*?Ai6Z zj>hxtZ-I<(Ox-K>TRgAX+>l%)B{%M4>Xw@klGvc!d>!&<$U@mq^TGI_Bs)4$XiuDM zjLP>?i#4S;Wrgizn)wXvz`%f^t*x!0p)WI|EbIJ5=;f0Z7smW!Rxi7Tw7}#pYR>p- z6<+9BZf;^^b8pWXE=NZ!Wb@Di&)?x_*FszSC+LcX%xf$xnNUaQp6O`=Z*Om;VWR2< z5dQes7{7o(L4JNl#_1hLJpa_fLNE9k6B85k6uT&96Q#G}wX>+Kt{z=oErJ+~790LM z+H>EYCqNonS~81^H}}`aFHvzx{7m3CAtXzvu>18XCuetcgcMPG_;6-^o|%`o-h6;j zI9ce{EqN6c`a8DQ32#tRmO9MI!rD@$g8>z(km<$6#Xo=GMJ9)aGBYx8{1=v%RFg!t zpFN{LwYIXF+c{KFP=Gn~KHld>QgU)~3JZJTbtWcGfM?iGr>3U5yOo|?hxy>(;K1`| z;N~t!NkNdD{CvGi`&8Jl>})d&3l4ZrPlEkyAkTl;zN4dqgoLC?;bVOK%F@!sRkGQc znOpArYa1K3PuO3)*a1SJrJ-r4frhLoFE9W68OR~+{?N~#cLA$0A7f*e*4GQt(*-b_ z)1{??P%=s-S=m-t*7xt1BP3}+)jfOm3|QYEj~G_Zn0N3(`>R{omoEYdJyhhajg1T( z90W-J__(f`8lTlLmy;DBS@D@f)Wn1yz}(ZPlZMSf>!T%e!07Wi85tRPL^S<_gV;!W zZ!b*LPR_&hA45a`{{5Q?C&Q)L0dfS)0Ww}&Tl@a~J37zji&>x7=Cq`lnHdZ^yuF?? z5U#0%gM+H7s+ARIbcZ#3$id;e5cU2&+G#m5BBJl-7qfu?ug(|_E~>oBN?}pa>)gtc z^r9I1ty!7Mhq8w7Tu^+Kq6`d;&CUMJGm){o0Rs~gYs<@kTy|z=7b`Lhi2N^-0?gT3 zTL+ZQuda3(^TRL_RQv&D!)MleT}Gzmm)9||OquPZ2vyi^yD8C1K5?jeXei;md-pIE zxw#=drtl`8e_EH4M!tKO`RS90!|b=ee|}*jz{#n{p|4({c+bS$cH6&wn+N=xPh?|b zONfih&B>vmp;;R%Q`FXWJ=*)Xc@WZQD_%B|(kdcv5 zS68RmIsW@cSxJfV%9Zm~-syo}G3|-ZOi#x~mY0`{D=K26qZ97Ew1t8p64KJ?#l>Vi z@@a`TL@{J&D`VpygM)(u0~hw_$;d#FzEMp^=jP@*zkIp0xY%UV43(f4amuNyo9gc; z8y?S)kH*0|7n`ig@i>arF6%m#wahFmflkbR`T6+^U9meD(a(`-bb5ZeSgwjV6&ECy zK5jk$j4341+0^j_3Xfwu)?PP{+?RZ zZ}@b5Z4I<)Q{W|V6Bj<(ymWH17rssvw($G6yuqcD*$*sJew%nwt1&#!YM0m6tPKq8 z&rUtr$=g=GjZoTrC0MPqs8I>sJm%C{{*XkJcyaAly*L_;78k#^ap~k0N%NSy^Ck;CkC; z26#_|X9VN7jOvFcrWRd9h^`6Zzu6-POCYiVti;KI8pin3YIk~pcQA}^*-A%sN z2YfWIflC*c&ad&&Q9c?X#HX(A6b4dJLBX{9gQ2Bm=iF9jXD1Oc@eI?8#cm5*TbCCv zX!#6~P+)E`kS)*z=Qg3Kw^v16ydHRJx_}-*v9V=;`lNvN!q%>G%nS~0>wL!v#rtk{ zy1KFgKEl${a(-c9pu8+Ryf;s)sJpw{0K3ZR_jfQsR#sMk)%s7K;Get5TS7wcj3iN4 zeh+52XGuv3kj9T6l)e3hPiss~O@n0L!)LOxvO_~d<|tf5?a?DQfQ@|ZFVp2{Zs}hg)-iK!^|U70AHHT3YZ1Y0SHOduMw^-WL#{lV`P(@~*d zep^os#~V{$tqct> z2t-(2jP2LK!unsRDG>R#1pW|GiOp-g_=Ox}-Ap~-hxrO|2lo8UuwR)4c=}b`mN0Xt zEDApsH1x#TAoV5dlU_|XcW39vykx4=I>TxgqvOV`AcK^JR(eu-%41^-3105YnsJv)FqpeuqQx# zx)wn7fqYA6MRl*RYi_~M;47FEt$-}^)i>qGS+@=J4*p$HrW@>PZ*K^+;b&lA02>G` zp`@fuX=kDQ0V`OD;$iW=an zE?>rCqmd3Ga{aqOR|{Y#^^g&nhF$`anQtTTljstCfVE@<>IG&5LD0z&i){1fMuS2V z8%Hu_*2==--%j$`?%%)EVydfaYkJjA7E)48aRO$5avis^k%Qma$&gSbBqYqJg7J5X z*#WTaKS7Y?HDwnUp+vKr92{?@83lsedxA-C4FC8Mp#ARs`>ASYD-DgIPa1h%CtGrc zhcQu6Qm!yNQeM8zGxk+_Jh7{@vsf(9D-cXUW&>`Lii!##6wuMeZ((r}BlAHwO*#XL=f;eW0On z#Ut+9(9o6YNpOPAEkvH4o(B&=F+6|H7}hdY^@44}GF?qW1NR04sq%ESu(ef_BMmh* z8z-mY_;Qv~93wBUI7CC7oSdMdL32=&vMhq71O5Us-Pkx?9$=!8)z{a5_H3%7gP?A0 z3nZRQ7*$7CS9IHMP*9MXLo}=M_TC;b_*(mEM38TwvZ~6VYGP-pPdd-w%TKTeV5LG{ zy{fdIk%FGotB-yAc58e4Q-1z^MF#LtdOSd03C%Mpqu?Q-o!?C1-(+XUCn5p_+uhj# zznoUf0uV(_ORM|j2?(7W$kdig{T0o*FZhll1uvVJQf-PWMFMW~06Jj7O$_Axsd4_F z^c6eQ^x>+uJsU>d?t^DMM@3A!M+s-sv;Rz`VqY;@ytw@3Vt_9nCk_t`Cj|*An zdIM*K)yAfu(4vcTtN{hLt$F!JQ$wStqr=zGe!MUzN7#Pa2dMh-V@ko6rY0%SX@V0g zgIpG#beX=>QLxdarKRBK&Vh99Pg8#Q^DD8u`orJ96Oxir7jTTZrLWgn5Yte5dCRD` z?EV)mG=)`7 zN}d2-Ld%0tIA?14JmG^8tN)?bJh>!76(H+Z%zs z0vm+JY)V|`K0ZE%OhHgcXd5Fcc=8?KVPIhE@833k76xgu0Dph%*sgOORab{LsZo=c z=Rl#5kHf_!B_W{rczGc!7_avhUobK@URz%$r4xCquD-MO^9yhRz+BXyql1HQEiH}Q zTxMoV0D6FTAZUTX2*T8Kb&nyxhQEP-dpkM?hKGZ;0dL;J#=U>v`{5QgZqh9ySrCN4 z2_N6Sz0j9|C9*z!Sw~S~T1aB`e{9HDYv9ODBn3t(HPsMq zY=1^}E)qm{C^xUQmi3$cdsXf|_Gk`#2u2sXzCujLKAANw0;&HS%qU9QA{VledLI?8 zm3^DQP=&@rMO99o?&8R8p2jkHUD{HqvF%y;>DI`Y7-L)8)BSbb-Mcsw<*?I#*M1I8 zO`U=SgMwfqfJZQ|fu30uy!hvS#7`0QO7Ij}g1Gl7Dw56ez-<9^vf|DwkG;H3iw&D;i14l_0~7L!i0H`31oka8U$q30 zp05t^HOwH=KQ!cdyk8I>4^*=>?MsD?jV+WQ21hATQBhYoH5=L^uHVHHXUEa5cKQu1 z3daFFPpbng`yhYs>*EF2-fO9*-Od6N0g4;WD*VK^oZU!*Dd^~w_wOS1BDzCKn zjS`7JL=cEE49v}6)!n~u*b;h$z1Lx`b$#k9%)JhP(6?{*zkQg3*nDWn8OR$%Tzq_d zj0O+z=KMSkDK{MG1P29mc6Hf}7SDimYGO>}Gi>^7(v_w1Q3Q@cOuF8`?TdtH9IiAC z9;5+a00PUItT%8>;3kja;_4nA)|8euf)oq-S9+<)UIi?|OcSmkTfi4hLTC>_bNjf% zuHy3YI`EC}-w#9jI`IA_2oeY+fjI%l5d<lyhLH`drEN&hc_M_)iiJ7ot9%9xP+HuNf?Cfgl>e6!j?O@*6n3;*_L`uQ-mha#Z-**L^i=H6Ux||J$%U*e>Jrof7SMAccqk- zp_^cE--!{G9qzw+Ep~b=qkve4!Nzrq+1{x5%NIo@B}h{8ii(0k20R1b1;hv5Ga-T2 zgF!(MBe_WxaEDA!isv_+qZ!D{yjEh@l)T4>JRc>nT`9#=;yj_CRQ4R-7l0_fORH6a zEC5OlBJMw-b<9Yp3>g{OCY*8^z8s*oJH;k@`iQ_=1X>@$iK?n9Zx`89WO_zwTPx}N z;NT3kGr;M|1~KmTz7urh->%g^hk!j$JY1|sh#5K#+kUUFPnKCxA5nh4gXMMU!~Sre z_?gFIcbr{(H9o}Ocdz%tQ40ERqusyB1PJanH#hC5&-6oihy8E}eqHmGD0bVk+%=KX znV6V>z^+dBJv$B_9<_2lr%dVYing~qBcJP@yUL5Tm z+lG3PL%Zp)GL&RfMHaXi0LiAQ^gw(Ztj?FS^=yC;RA%`Yh=C3~{m$rV0@}~6MWQ6( sJ)mbJw{1J4qG;feF#GPR0>kk?TPMm_9^PY!c=qfW2R}dm_dR4a zK^F7x*d=Fs%MS_sauek3JsxejkMXwrulrQ$x{9|36DMmnH~-9@5Nl{@(fY!bbWS#M z{EcYymB#`NQhQnJL`X?|71-z~{$KyKIx$xFh(*$&)N5_2}0hIIu zgM)!?yZ-gls5k!1zb|*6uekktt~E(sNJ!}2yLb5gNtbaoF)^`}i^~7~JFWLo>W!%U z_dosrzOL4sOYd%dYmQA%PY;->t*y2HoOkfJTMpYL_J3~Za$rtQj-vn0nwpx3Yn~n+ ztS4?2nO6mE+z$L7cg+0%|GNb*6xnQUtc8=>_vFONd5T`!{MW@_j;O4x{P5w!are2q zd(Rsi55Dy*#AV9K{?BjS3O2AI|9^k>MH9b%e2I>Z-n-ZF%j-|Atvne%>npZ_RE+i0 z#A}F;&+aj`wY3dp5~}ZWbZ~I`TA`_BW@&TJR&J1n)3w`zVYA(8ZnXY5C z4+zueaxa|HIvSz&Tr>W8#NgjQzgd`>!<+U?*bz*Hc{1d0|H{eCC0-`Uxt@|Z>QR~-Q&S!*Q|$=}2{_d!PoB6;H1g%OJ`oxF6fYH~siLA1 zZqFX2?mpYA80+2en2W%eblhFo@-TzL;G3v|@l5>;z31|-Q{fR2dt~mkK0Q&qqSBC| zon(|}Dr496Vx%hgrAf(L-J`?Fgk1;3o!#AEn!WeFeEIUDLnrbsme)qpj{45j>dR65 ziRjpQ=%j)Jdr)-3RgXW;Y_1Qjo1*!+q)lEstWCA2A~COht>BaQk&%({C#Q{Wu&P|U zM+~<+-+s@3C8WrcAwpHYvI#{rP3&TkBt0<_Ct-i(%9W+Dkm1Ay7AdE@tl?^$K3jjK zLSI*S|9yj#_FVp!Yh3tk^Y0(Q=(CX>9eRfkAJ(zHM8BxML~bMn)Fbf7++~?O}tTT&^s(HX2qBD`)p0{t8 zmzDkf`Ppo1WBHM(Fgcg7kkDYhx&Qn3@3XV*{dewSI(jJ~DXBH1JamOS+cKS1c?Z zhlhU%)HPJ_v8SoRO?z*wrf80c#^&gzo=#r6{qsB7bWcY>C^_#ci$>D?*Y_sI#=cKK zAk{qh8$$O?psM{nfUZbk2s`!=Yjc;cgzpI=&wMVZd zP9juvqB4-W__{&^(t$VW#}g4tiuZ{pZvVm$aB2MLPaZ=c*vy|%RQ%Zc%94^hEG+Ew zqeF=a31`(dmM66<=PkB2|Mvf3lazLptMMN`%vZaxu-$@Mq-b2OYBG37iU}%(0J*7? zlar^XXO_Ea7;}o3q432w)p@oeDxaG!x3QqFsMP11S1BAUM7fw8AE)?{+)`*>wX==h z&DnW%V@*uniDHQIC_jIeaUplTFQPx+#(tzSFu>+&@a}^i-m&NMOewQ+3JaIfx1@{n z>c)P*efzepO{Xyn-?{k9fAk@03%hadS_8;?F zb#62HJ~3fvV8B`APa)YpXu}eV{M0q7?&ZOk|mbElb?_4?S=H@o|<|gGP`Ockwzc^_R$`Zm$Q69g(_nGW-bX3#Qa=UqxtIJ~e zgD)W@G&J`g&z`b%29SeK>pLXNQ@dT*8o6tY~1= z>+JmeaJgm!3p=|5d-g;S2x)4jIy!CdZo4bR0pr-s2fY}6v&cZ{=aW|CJ3~tsN-^|! znWpvd?f|F7g%Rb6rhJPUs>(rxA^&{K(-ZNh$}R5Y#e7Vb0u;L!9uPp<_=+*eJc{2? z=~K?Hjn&1f{{FZn%J|sWkB0eurxvtUJJK~2cNaN+iH;f*XHZd9)xWU+*yU{|++9mQ zzDPB)u>_ejF)?XBl^f}LbLi1meSLlQxa-V8GSbp=9t#RKQn8Wo@iX)Dv{{LPfv2pj ztnBQvIIe4HX*oL|V@K(}7LZGFM_par&(BXG%5aw&hwH(_hp#jB3=G7bhZWT5tsETQ zUi*47WiXAJit|2I+iaMfW=(2n)-E8PfG%-1w&CyH*^Sk~w1>Gl4*_!BZ7F=%LiQkn zis%0dH7(fX<=+EYj+5Pc{rYuZU*Gsj?uFuKruiOQn|C%7uWn1{W(YDz$KvEUd1qbR zder;x`r^Ed<@&E58pfewS6jmA(YK$9F6I~)uKs5IC%6xCh={azc1CXOLQFf|y0zY& zeU7h$3h`L};>A5*nKILp-Wwh+zNb&0u6uZ}sinoK{TbO>USwov;nminm$SY*$WhJe zCj?gdIXF1#OK5iOLf97<-JTyhas2pkml1RTUS8hbV*7pRBv<~yHAc>;q%15f1tD#1 zZ9oJRz5~4Rq5vJT+J@H9;S( zo<6QE?~Y=vTt82lCw22x&* z{RXlz$TQu)!Yv>oB_)6JJE5&b)T%e%+)lv8%4&RUjGlqP>e@B!(i(M-aBVH;FO!n z$NmLHm@_jo3GwH%jB@Sl?9?j`9XgaZ@$fltad@c2v11EMOB`k|_0p+Aj|&0qU2}5M zdaYE}+Bq<=F;I3Rr}xg!?@^(l)O{*QruspH5S0SA9~X>f`8|Kl#-^qo`E*|+y#t9~ zICGaDFhNR0g#Am+F^BQ`h=D#sm(>Mx^%>@%9|L9jf0h*OmJql;Tbu8GO)M`EW0ReM zfx#g6LR7)}0~V>4*4D|7!GK%nKDz642M#pWJk_344lcLc`BR%Ggsg6}e1H45aQSOqw8U^$w zDm@~L?^B#a>V|zsbxVuz(WBZ^>iI#!J0BFsNebAb9H>4cQCnmF*L?k7Drvy;>bg3O zsXd1ew`TGneq0B(<=+2K%&nxMuA!k=f|^coZrnxY;aFVs5q<^l#{$%6as;9bb#`Wl z{qu24J$?NK_H|5%vYvn|xNl^LV(BKpVr8XLWet#yVM0+p8l4iG%5o@K1~w zN>bfzZO-#U?;^Q1Eo$=i)R-SIQsQV z$u%BQc`1k9lD89)&mpF=0&Ca(7DrJ2y$Ml`53K$#n?@0DJay`)Jnbo-U1~-QSxiHuM;7U!KuQl zi-s8We0+T9gv23#Vixz^PdH}ZBiJ|} z`0!b%qNT`sz<-AHe@TFUS7MdEG)z8?pBl2B#KlQE_7j}jJ32aATOSo9^yHcp&a;vi z*>&IF{Q2R7LSywCJ!3NK{KkLED@EXg2cK#}_Z`3ao%GC+2sKHkfl}uYB_qLyEKu3S|PAy!^NH<&{rynL@8EYVM;Ut^EFdwLQz>nZUCq5wU%ogev zg`z0I&i?Vs7naATU(LV6ENLp8JUsl-Kjx?zx7qK-MVVVGyyk`C`*8CFSJ8p~MU0$#&$zm}E`R$}EO>Zqkw}y1EdjAa37mWUGDhIs9O}XD-Mi&ho$>s7 zd(SW3q@|^8bG!Z{R{Hw0(ZiSlLA-r_X;ydLlsob-xHx=Ff8eotx@8^s3JV1V1uri- z&*gl6Ok9+dln)L_STyl+0Tv^Ne=RNfrM-Inx&n{D#)dc4?dYYqFV@ZU^*cdbSY5fo z&Bc`{eVs(uk2^x`wL{)Y3WSvrEpE|S3Jo|F<9Bv-FJ|B0ReZgP!Ny5*)^2UuDd{NtX(a`KZC`)@~t5dAI0hpT&&*2F#~nmCi3Med2rvlgj-@Et@kc zLrg}$%X9}<_tphtj-%fK>&2jN)}3@wstVer=wi8N&z@)9 zA}Vc)?x~LIqoboBArN^KpMi*Tq?;N)e~ww=%@jD7Cw^^6j*l&y zxaY>I$jF<~1UYSOZF2J9na?lvpQa)O^@Sz`$$XFf@H0P;`gYQ1Ga)MKCdOzKngc8> z$^|91ok6Y2+sjU$^RJcmlO%m$2po}eLP-a|^3jnN7Mv@8qA!9sIdN-6jqc_DWE!_m z;{L@mBpKpgmMWKRvOL6HWjOr@3Hwa2@aBxsl8!6xlMn)MpnWN&H$(d{aq7g_5FgL- z(dY2tq=W=k7mL`lJ+B>2lq^h4z92Cc0L#JASlZibyf_6|i4N2df-?iE(NLS6n|m4^ zUHg8Ln0_9>R$$Ju4YQFySFEikfaLb?UmL5V1p{?ePfxG@@3XQSlXeDbXU;U--M)i2 z^)IkGIqe~w zdCIQ|e=EBfA(Q8KMoQ^ubrz(ex20D} z`)pxuqxuo^Fd{MW$Jkiv`r{{{gT2ErGJ}r%l&AZDSd?mIQ&U#!!v!cvE@h@R^DDlf zwc?*V2~Q%{5}eT53c8B4+ELr4XdzZ(JQJ7e*V&(liHgelY|5!JMZNV}d%QH2iAjBO za`J}b#jVvAwqpBpjlT;KGjgu!9?I_iwQ7O-JHn|lR?BYx&MPlJ9%TOQ+qVFZ6#}3BF`7s< z&XJLkggg_a|Hy}bw;lXX|7DoXN;r9^|LfPU&CSi=;l6&|TAA()uSQp<-L(sGCm|}j zw6ugPVN8FTYIEky84w@=k&%%pDJk*sU(m=43knoMLhs*a5;mQhp0>5JGN|xc0|dso zKGnWvJObL}9e}A>#oLGoT|_pM&;fF>|tOcT%9CkniEm6f9)_e@J4jCm+2kr=z* z2ICPhXm7fJ0Z;bkce=BG*4JI$9VtmpX5-`xxcs@VZ|(io=2%zWV=!pIynZ|K^77>F zeGWT#JbL5Vg$ox7@{(0U&T=m=FCRIs^X}G9=ZRp1~?xd z&(A-0k@Z&92#6ZmN^cM~|GRB%muKBTD%@06Rc(}?`QW=_d1)!YO(#Z8Q9~wc zOV=Q(s>N`EVqN3tB&+PZ_jmx%%=u}B3ZlBJi zma%SR(E9N_EiE80u5b}c|JC)iw%#9 z>wm7v0yYI)%yF>#adCRzohK$Iuk{yYf&w!#GUDdu##{?VeFK1G)%^)I5?a+eI9+cV zlMRHtkEDYSUh{#YP6XA0lmh$EUtq0q?b-XYO?dV1#O=8(3u zG&Hk)g_Ee~pL0#>-Y>K1u<3F-U`PiB09#B$Lz4s48y_E^o^E~lGTTHZC#Xf#9Wg1X zm!SR=Wp7?UuLsD6A_H;9KiPuM1<~I1)^iz=SXx%r*V`L*=tP`o9};5y_x$|ms09kl zwQGl2S-n7|KfO3{U~ty~4QJMj4Qq~iB8y^L=F+&;-`h(Zp`_jERDcDg?yRpoe!REF z2Z8}Xm8r=}^xU~~6KCo%qN4bdCN75lPpr8a^61gE?kvVc0&o?u?r=+Fet!OsFD2QU z-=?O3I2#jLC<46oO-<2zC%{o*^ycB>nm~1hOfb z=nM@FLG1{bX>V^wjDD*N2GqbDum(hdbdOQv1hhmVpo9Ru$ja|#Yh*K(ddi`g@#TD; z{J#aX>V=VE0xkzU^Ya%kCG+MUBAzWQEf0gWgpfl`9SW`%x=2u9 zps|Sw^^b#ih7`(5N|lMn-BDio4YRsZl*#w)+m~{pgZ@hMlUFVi>XoOowOav&@fa`B z#jJ$kN`K9Ke&pQV-!IF~?&~E;N93XEt`loE>TSRbNNZqB<_Y5?vY)^t2kl}xU3wnl zE0COrr{{IYcVS^)_pCoS%T2v&7vdR{%*&Va_^EAEdL?aWU5EThLMQ@;r`+0}oI0iL zGLrRX`sPdz*TBUJFPYFDPc|_z{cfLsa9Rg>{d-oLDuuWTIux{1yqwa~=RJR;4hNLC zw6x&Zt%~{onNI#o`?=hLB(v3WG=1-#sILu;MYC=f3YFI2aPZ2CYkjOCXbM7xF;#uo zeldlimLz#In|ac0OA2@%>_zTf3`|UU#)Ug8oQV2;r7VV3jqqz*n}3eFyMc_m0VIa= zs;jG;{PwM*IVw8Z4FU@O4M^7vM4dvDIKPREsc#!zkcoPL)2@XIYTKB)brBpXq37k^-JBd|+sg z;gQ^!?nr<5@L_nn?_-Q@rf)qWVp9O*WR4$?Y|24ks;g7U+;MRcO`pm@1?)d<2^Nj8 z`O>uPvFKl%5UuGIRP#l~Po+0@($*aILR^Yve9B)AW>toz0UQs2U~$}?qoO&}M_!X7PIO#`F9 z_gM7vm;IL+!xZdm~Cnq=mJ8l+On4j-FS{;(*_^_;O4ZTJ~Lxa7{dutP< z=ruzLrsK!UHRC1QU)?j1-a`zTwjDsgm+kDR*6VAltJ{u#2Qa`GMVL_I-0P-lj$=t@ zsMp{2I4||lS?X|Rpa1*!FPb66ba2ze5^kx;roHmhr(7_0c=RwO zed{#&aYjpPH!bZ;!|dqzc#~|STvUB_A|8f2V;V!o_wU~)Crf~g;CkALnsXa0TcIk0nAwSXh|5X~CSR zxVyk`(@g+m0jTB35Em8gfA1r|(a@Ii;>8P8aRTk(s$)#QH5nNgbSgZkhA(6jX1|os z8pJ(#@IZ31t*|!`Le@LIIF%?|?cdc!|I1yUK0Qe2=i5*jn=+sZtbxznE<4Kl~Mea^c$)*>$af{MrUkqYorarUl%K?-(& zr+uE`y>D*Xt9w4@){J|>%>qJdYxfQEnK6op4;M>JSxQ-~LddV5^qd>ExyL|HpDKu+ zE0a}%%ZTzNppPEoO=z96H>SSLL2y1no!W>fPz*YI_ADak!!w~psPH>=av?YMK5(_A zmFG`D+4pM}J0#;0Af!ySx-k?O9PCfiop+ICC`j1`o-FHF5I@%Ko`zPU#t0IHo73Id zF}=I(RngjBLD_L9!&sQDlR{$MjSD8#%kE+)a>Q-SHOF#p{rnC)#CZRnq8h{!*<$Q= zuid0{8>!kNNmElcjU)aM5$(9Xz+ZD)3cf0Xw=&tLs{hnd{rU9+0Qrc)^2_&|Z}8k? zL`KfvLqlJhKjwan`aqSWL|JL+U2lG5?=#*|(tZ31<3}>_P&L$)qx-F$&#F5)&H0g0 z^J?32kIl}?`D}VE*$#<&E{!*Uu0uo%80FYlSXh9q7#Z2KcP~*;X&g)T{02$~F0@^g zl)y{{B_&d#qWoqRUf|cjExm#a0t&@mzw{S>0yy7{jnuO!WcydvR;Kj<5F2bUJc5ER zUNnnBwWDivcXz*G z(PbE7Q&k@Y1qYWn^mSl%29pIl8xVd~RVo?*ptCWAH4KVg`XVMYhvb;MvViqtyk$gV zo8j%+j7@HZF|03Z7}o%N&8_{E71vmJMf2*_t7x%dmssK-Kdv--pkT9p;JxSa6&w{2 zmi_$sb72AMzNEM~fGI-i7G_r-%{U@^m?ZBbdglTIfc`Abda5l2Ajln_qzze=?7tfu zAlh$$mS*w^p}05#cn&8~qPVRdegIe{qY5uijK`S#YGnPl@7U?kUo;Jb8`jj?+-!&gXt@a8enb5uN8?dJTyd*vE#tr__#RHr(62ZrhE9%0dL>_(-PfCMtgHWI?Ap)w)FbHpuZUgxz3=-u%@as#@9xz2AiWN6w5xC|gDM3%d&tGI-O zp_>EPZCMOem~>BgE~&)p$Fmt;al6!qp`6;2A>4WwrilQn@zEoQI-Bq^#EPbKO)p<|`@* z1{zR^FHoN`QbUS-#+VDH9q6 zb{8FZF2totfz=uO>)qS844Mhxfm2gcV`9$XPhtd(pZ#4Wd{jOrA#oF$*rj)Gl9Ijx zg-JT}I{*3Q=vFQ){SeVZbo7ae768`VPsz6MaB_6~fuUx8Uf!xc98qjnWJJr6RYR5~ zqDKY^!8h&m${rb6S-<-nULRql+W88mhnJbQT!?8zb9m*smzQ$YC?hV0hJ~eB3LHI3 zyK*Xd?SPt9~E$&hASeHIW7$>h_!m(aR<~?)vEU9t3LEsJWisMSr zg2t86+5OIAwY$QHUL+ehGwAiOL|k>k&2d|d~_Cyk+_f}YHD%^Tr@Rvduq@#3-a@m zi>%Gf7XdeGxzJUsRC~a;jypfd`|$JZ;fG@o4G?All{g;-4b}Q}e^@X8w7NTXd2>`z zA@dEPXebFODJ%0G$@`bWFn;)6f4YQHAZdfw>VofEP8Xuw6au~kliF#u0ZbPUMnAZe zv2uoK1mllH-#0Zk2U(G4qSG1Hq>RO1zj|y8$HCE9UcRg#d=c_>@$~AE5zB$e*zpF293;zJ7$neo=qnd_>kVWljG#s`qJjteK zTUic6Z}(euef^r0E2QQp^_qhww4Jm|!f)mIlj)*k*%$ZIWPBLm-4N&^@!l@AyG>=` z^{MUU%XisGGiM=ZGLkT`L5`^{oe20~VvSZnm3bNW3WEIE1~m$8Ok0FgUqSk>lM6=1 zC&@_&&VPlzk)L?@IwZv|oIMR~o9URxN#5}KZQeVLDtqEme`^YDe7*(4MY!E-`_IDc z?255Z-qslY=qW6q6Av=n@vLSjRh9OBftqtlB@ANRN-{)^E{%Ow4n*tx>^BMTPX!EankbIgfmdtQ&vpjy2cRSYsR? zxVfSMRbq7Xjr)Aw8}dtkVqSyZLFaeLl>rop1ow6VrY@FHWcc^bFApcGW_e@*OKNLr z^%TU>)yK7D*`!s*!ibrnC*FQ3PzQDK7pAcG~CfdV0D{fYt(X5uRllm#6;x-rnAzRl3C;a9x*{7D=e&`PH*PG$QYCu6Ge`3$Sg8voPVeAZ za&&uj|LVH}Nt>+7HGCyLQ5p5#;JS-T+=<(gh2bzsrUj5QwsdtF)Soe>Qh3GqD$^NR zrmrD@^5Wuje{U^+0&@`G?-L!tp_EH_lt5PR;3T#a2sMB5?%f>^59u*Ybq5I>+$Rn& zUGCt${Qzbm_wG5nxID8QY-r%);P6`{Fq_bRgaxcJfU;jLQb6YRFQReLb~mR8O}2hU z3#Q_!fbC>oC)o@J)-VpzmFr~^uFuZ^6NEqJ+8g5XaS=0xVuPQ*|8%e43-Qycs-1kk zZ^VcCGTV^N1KN}b5+I^A6LoryikT8BrYVZ4ev zZV17kq`9WL^7E(l?6#x`b27`?uoOW#ZtkE2<`u8Xs;UvA>OzKMJbA+YYlCl2Y0>O` z*k#i>3v9!FGea2}5}WwwX>9Bnqdma*zPbD zeiRnQ`Bn5^GVEz1GzHbNykw97C|Mw>pKYA!klDufFVkNFhPyY@)6;16=>yrF7>#8$ zOfZaSwg^P2|DNsB*U?c}(*h9>%}q5mc*iJGC;6h`&F@_ejg4?=J{*HNWydEQP%PV? z8B&pm%9r2%?c``W@r-(L=JU};?R*G0a5`@OnU`-o!4G?b)uQ%?i$55~CnoqppD`SD z8hTqc>V!lt79rj4(#$NMqPw1=wxr@OIZ}Z}Mz3C2RFu}`x2LK_WbV22G~4D+-7Fi~ z!sac~=;0e~D{bY%2%p_&7OLbhU_^ zBkqRoQdr7RNqxK)R>vQ!68)Do?{1Sw zzJ|vgW_L!doY_Eq1?K~sr}z`ts@r0%?i`{c-HHO&C-kE8g*xm&7)JXfK51L)>*>w@ z_|a|DHZ)WL{}B>~-A5hcOvXDFuTASUR*DyuttC$muSoZEJ9J|SfPB{hm5d_TxNQ!E ztNN;Fj+kHOa>$jr^OcQ4Z)SDXL)PqulvD{|?zL;zmV}DyIAa2nMRE>=KXA?}kJ#EO zNPhGrr?L#=+)hI-DZ_EgaQm(oDRCdFs+5n=L%~m5cGBgDQlCyDfYud~Jt0X`1s1B> zg2A7gxU}(iQU|;gQb;5p?uIjB3Q34*zGzw0k;WB(j^|rwmM#dzhg}&TMB;pYc4t|3d3X&P=IUOhlls`B%Pd{XB zxU72{QXArPS}=<3@|7#EanZu!6i}q$fS?q~ji8zY7qnmQEM0$*8sIjX^||A+-KZ!a zmwC_ebgFVh!18>i)3O761;g1`(Nn2TcZp0zuoXwOHpF&NVi0V^?=WKEg-)c_*$7|l za5~7#gV;!jI-olzs@DOiBh++NiWJjPA+A8EE)N8jQ%4%57&+tyg{}E|qo0F=gC&k% zYG*eDbaT&Lp}E7@0$_P_ekf5U;yzk5>LhvCBgpenM7D4W#EX;`^!TayMUm#_;2cUqNpM=JJ;oMBlUSBtoC{#slA zYe#B5^=A#3w}~2Onf1PhuU;);ON}`}p=Dips;`j8|9zkzFlM-Ai1>A9=iaxTVqSuL zt0&1*Mq4niB&YT=fV7m#ro%sGjYBk9ao?h7}Ti^R5@VuIhJHP627A#XWYp zQMwljB~U|$mkMNae+I4yHHx~VmDxV}$Cva6BLUf0Q}m(77-_y#=1+L<{nt-C3c#jg zO40YSMxdCm@NR<^*x8J)8{X!v%A(3MdoPTFPOdk?nT*fVo#GLN^@pj)3pE zu+g8dZ0Tzco{8{#n&})}{NEsZS5M+rlK)xmYz(%N-8nGonk=#&suZ*{w`OIRyts|2 zd_qu|VC^2xWx$}3doD+gh}T_*UGIr|EL=W?Wj#VphS;5T*Yw=#YLy4--^A7%wRzv2mq;G);i@&xu@0i~Yl|yazRk>NR9s3|kAkh_)zmimsDmfHq^s{= zNYk5!(o^K_Kl%AdiSJ#KlkaOblIz+fw`WJk#`a|y3b>qxdtpMZoF9h=sWHV&0#tpM zfEKxt-{-iQ->a;OCdSSV z?Xz2{o<|+Uj4t}V9cMj8GdrDJTa;_sLvk;A+Ay6pMG2_B?*&sULeF4X3nG)*U<1u6 z?!YsHkpu~Qro^|{%VL`Z1$4rS0js6^8@m&lIaMez0nn>o@nREFx?L~e3L;YRjU3VY zqp*D1PDE1j;e!X=L(5%VT@v;^tE;OD4kDMl`D2=h1W1k_6?WR5wO7QU+$&Z1xY`W8 zm6;K(4&8S&h^1RCa2Zm0zd`smF~%0S@}cG)*uTGBBt?KfAx8LO#}&58A3t)Z4cbsT zn1dBn9~?-(!BRx$S`UocU&J@|yRD<+@x#;07<;D)R~#I2-iOGdtjpX)I;swiCWrZIYScwjc9Az)ZJ~E`f3{y zZrd}qzzM8oEkd)rvJ%kz{=QD&4GiY}=Y2PX3^2~pSLMUUZ8y#sNePXC<_av}s~NKS9oI&x$ko(k$4a4)`xg+&B*$NG-^$guQwJ1g z60LwzMFP_UWnzhw%g~D3*gL4|>#7j|RHGT7tWLigMJrU!2@VR{+c5+4&ciYMp4>WC z)SBvV2C1(QqgGpx4^0&;2G#eobGFIOK_<+8@j}gJ-kCMi`EeT~V+%&$2kR_PpFXXW zZ7!smL@Qy_-m&6@zQ*)edq;XtGtHX$$MQDBwA0UIUOBk1Q>n|!z+A!QUz zeE*)+F8LIAq%rV3Mq5k+?{Cg9S-XpiixXZA9NJnq)*0+i-Vfb%7C6`#GakW*HugyfTo=@VRLgV} z0lRaIRnWS;k?`FI3SPf{_~_A92iW$y%!_eAR2)8|g}gXQOb zv{y0*8NR&q7axpc+C54XO^nc@ljJ-rqZwK2(D(Uv!Ig1LhXHHe=>{qQ@c6O|ZyGP| zBdJ>?cD@L9bxcmR>$|-Y#`;I3hrlSF^2Hz)FgOjrEG}Elv*6e3de`q=Aq8&Rw{L%Y z%E>l}!&-E|=Y;^hx!BzR@f@smFpZMRx){DlwA?s*-LGx>r>^=`vmmvoFV}3sK}`>4 zzNuI$9-~^L8j6$5dj__fmIfyJz0^w4cYo@$dtuh~vUTh3mUB=C$ zkplNQ+(!6fGC+P_!a}mY=tFN z>F#a(p!I^`220Py6m4Vd;p8N2qx9s04OI!$b}i^SpSqk7f2@a}hGs-Rj2k z(x(`QD&J$W+xveCF9IIM2VMbS(Av|nH#l-=Xox8O858R+#lOmK@NZ3n;-J~;vpLD14TzlbLyq`Qq(7I=4X7<_r_KMREjn} z2*4bpldV^$&>r%0@z}lhTbuF5HE8&7b0kLysWY~K&(8kj0Y%s4G+1@eBUNI0bCx*< znS0l4M0e7Ohk%60xD!jU^DWT9#yO+%B3#HLb3rt~cWp(U@C>J;ZkmrFWU21_4r(DuY(cxi zO3J+o%0!)!x9;;qKYld#cX(9a$82Gl4z6m)X4rlyD6fCtj~3h5y&T4OE^i?F+)Fki zzzju?FL26Wp9rp(&uM4qD|f#@4Y65^1Noz!+e)*0R3|W%E(}YT&y^DJvk57eu3%Mt z!R(HhSRwFI=*XJosQyTT>`i`?Z{U=t-A7QJxDv9Qp;a*z9W?O89z0q_=?#S=Hk-V_ zHsTjOGSXmRZkf|OYtN_!VPlmiY?}%FIB4lqK4DsbdaQqkRcs9uC(%S3V$U=rYJmVb z5i=8+4+ZEbFm&Q~R>1x1Htd;L;mOMflWg3ZHdBn(CO&f4Ru~LkUb=WB zRq0d^qt4SE5B|=#i>kx6rWEUe9b0FCQRDkm7Z|W+Z|pLP=|rFV`Py@2_HI3UoI02c zD5c}0HKDML?1qe>O=&Bph1UTjGmfhhm-;-`Pe(z+s%q_XadkB~G4ymlUh07G3YNdr z_&)Q(((kW(XJHI7!BH@<$uJMAB7{l6ZpO_0tBR#3@ZWlNK240%U*IZTNh%ha6-aekf zcD&9bel$&mwnvpu_jsXT7isj}8*btw=4r`3{0Y`}hGE10dp;ig5NOiNxB8ty_U7c; zB;B4piuHS$nDE_%h=}W`Y}hJSzS1osX)qnNK!3&e!>F{9!JBQfZcTj`c$-GqG?=7%oG$$|DwDp^@>41=}D%cNUg%`$f0@bmaKL8`0VW2 z<-3LqYH73?I|M%3e`@{1opnL=^y$5g`yr~~?yv?4bJ7V20;`v9Htx7xPxyxifn$&D zQHEyxY2BVJID?Y;_o^6;crAZ>@Vxl%(gbx1UBLxosF3WtJ}D^J+VWZR`tG;#)G>t7 zOuJ?D`}YHkjEsj5`#|iZq~{Jl7mQUEY_icBT!E`mLE!_qUf%R=Yv?dywJF6a>9+Gwe&tSmZ8|M4y!NaR*E3U=V+g)$ee z&V5^3a4su#rtSnBl7hhvs%v{m(RAgKDJJ|qVO|%j8t(R|aL!+$ZTmg75$~1sd-z7UcGLrJ?8^@f|F-)xW7Dc&)g6GJw*J?^2@cL(Oivw9^xv<_} zoLPDFWnzvUuVs+Ea10#>QDgbJsJ#3SZ1VN5NkLs-9xxV;sdB$7CM{zN-XG2tEZ_z zx#E9*EL>B?n*kb(SB=loLoJc~q!0*Zv#YOfKVb%Dc-NTz2;yT+f_Ke{ULCy=7n-#`gvlZX2b#VWupoT63My`iBYSvl9i(NS^IV6fs2 z%Xk{R(EXIh(<(z0ra06B>3xSu67@$24OReFoFzNp;)fgDs;LpF!OP~Sp#xeJCHeT!YS7fQUkjD#_^6L&K~YtA}xQCUty_wb2ZDkm8ki;^Xe z9P!U-n3@1FygS9$A}g$v`r3UzAKETClyq*%0nOstX|q zaO>C41hARn^Y`bzbVd^s6WI)MUtT`G?G570`}fG)>q#$s8jB~Z8Y;$;V{M;LiuZk1*3A1q%Wec zSy(7ZyWK%33&!b(Eo+?4Jh@c7Dk5A1Rwic|~?MVPGb z1#ir=j@`H)88(#jNRK4Rn8}VrljDrj#6jp<78%uN`-S? zo2($_vg0b?n+qUCZ6kNQ!YXP-AyDVcKg`oi;#+e)z{7R>`T6L=0-fj@#pq#OLAu$K zL^{NIbw3B1zg96lZ5j{>z4vbo?> zM0j^0q{W z_T3wpnqUgSbH|I5An&NEsN@TO3>jO6L6>i)GVkFdl9MbZf2l*K12A+%SMpJL?B1ec z++uJZ+jfw2{%pZa6by5rN;aeq-Cp!+WI&6SO<>tEo#)~8!5>7*l8yR{C}(J7oi{5UG= z)PCI($Ooypz9b>yBd(XZJaRp6e^oJ@!2`&?f`mV5KCljU2c{O?{_nv1*RP8l6tHHu zp~>E9bzD6C5<9yl)}IaM9~(;VXBD~$zC(!}PG`iZE7Ldi$ZSwx%RDG_5A1MVLnx{54H&=nTMbxGw zV7~Nt*QK;{7*A?t%a1~28T^6~op)O+Im| z^iu40XGX1iF42&E2DpTPE>cDyc)VqXuWUH(;NXE!$^*dK02Sd$@H zk9^tdmE@m){pxD!m1B;SK2OJ=(x@HSQI!wF$wx=*})$_t$Zd2=$s;yfw)ln*)0bw$>o`V3!PG19}Gy05YcFr;EwsJ3bq3 z4CsjLBdXsTJQBjexOS2h3IzUnNn!kbIX zD@m0a@Uj>9u-b-xz%&>>riGOGytL{`f-FcK5UyG8NrW9t=d~sLq*shCgB5Q`H+-Qp z0%7TYarNHuSpWO~xIHdgc9gwBRU_@U`~Cj9oj=ZbpWa;8Ydjy1$9+A3(Kz!PG@>ps>A^wPjE+L-=!kCr zoxD7c549&e&mm$2EJ6EFF|wWA9v0X{D?t=%KxGq6Yu(;!viaW}54ediVGE zv+iTfBfhafkL0?o#R=uyIVWDAH5;04`f$~^PkdxNp~0VU$V~wB5Ld@y8nnx9Z#cWG zNYM}L>MGaIPtc$o5J7lKJ>A`uTen&2>8X$?1RSCLKDfQqt5;j^DBf8{qTOxfuP`J# z)I19~SaRM?WuGaLLkIip!LE&KY!gAS!E29ufU?SH~AjC&3Z|1qdUz$M7< zy>k@LCZv&vG{6p*V~`MUBX#c>RfXN@rn=pC&)HU z=+@!dLCQxQ#DZmIzW2Od+y|$Y7F&O}T;((^bro3M%Y_b&UH#tpGv&h&H`5s&dAgDNc9uOKVy zP#0JyOys*Fi z`sq_5I{}YNnNPEWlOl7x58zhbEi;gtoYQmB=%hQr+p+!gVCX2Dcp zDfnhM_JIAV`3W>4IDiY~JwnnOz7zN=gMM7tcWJ}6IwGtv3NLqSp}5IzGr2VO(BighsTYT^)Z~nH*en2cn)3ywX)QLmg#Ueirtg*f7gZ^ zX{)pD!W(>Ubt!osZ4^rP1~`zN&Lh4R_ZlrAv`eF6VKlbI{UISC)513xX%;v^B>*JA z-(ADd7eu6Y0GwmtQ=pQ9W1rWP^8hbO2B;mVq2D6qLP!XLI7}}qn8p!)NpV3<(nS9v zX4m&1;LzsHn`^b`DW(Lv_u|$T9ERpHg2yo#%7AGOgc9c-u512*0sK1A=3o?I|0vAH z(%B2BVv*M)FR&}KMqZE@mL^}?;@#~E1vp+V22ThSynxrsoel(rOd8^V%REAuRSn`H zyi-@x(rkwIJvvi8&?AAD2xJsn_aMBi6pnk1%7m@VM@nJ@y44Y&64?)trt!tB1lf6k zAjVT`&=+34dDF5;x?Khog_(s#bO9g?ErgCq4!5Xb{)I6Kk27zML=Fc)V88bJIvmg|AoDP+TRG{3Aaz*7QD z(G!I$Qvnd=^@|%4 zJ}N~;pjAY?*p>K{_Blr#Jcxt?P*@YeYh^??xpSuqVzK7tyx-rS#Tx-};@d43+};97 zZ__g=va16Nrl+UZ|Ke~Lm{Wx0*qg+2lWIAm!q2NVgs7;tRjbS2c0WA4H6kKIR^ z&c@|D=_ugH^;Ht+YEsU|JOla8_+{NsU0EOR9olWiCi*=9?kC8RIF+27odFQCE9GUk z5(AP;E#+JYd=CTaDWY)VfXjC|S)N4$PXa{$4Zmn&DZrmoPV3x9c*r1cJ!$Fa(UY4L zOxF31uGh6a)g-ri;e2%5`MBUQ@;kvN2X*({$CQWjG(Rg8qIEMdiTlH4m3Z3mniLLr z5Mf?-#UrGf9=8ay(LG)M4n;~n_}D$PqCnAV@CLy8B(OQwKFoG4G!*;&KV1~`>+21ZiK%V4_7ZRaSv&6VW!TIRqyddw86Y%(52BL;k3)1^ zc&AVsMB~91#CQm+dvki;I*p07RvLh0gbA+!UII+&a~M z1L+WW^~?7?%%5gyCP7Y7QCXQAcoeQBO2V9`F^sUw3AZo}G<+0pYo};lx)2pbo(Fq) zA5{025QMj)-ikTmAG9n~h&_!km$nTpZ-?n9`ELiFK+0`@NKsbh8c$?qzr9U4Ez^UL z8c!kZECDmrim8p(utPmt3fmq_cw}oYKnjT5V(AYxc-k99pjfyAhgTjQC?#ly06bGD z6?gB>p?&d@Iu2by^RY#oBB%sov$Je9Gozy^H*T<%>!>kSg&zvgykuzfkSFNuSzOi3 z)!9wRTdX<0apGcXF=2$BlyBbsGcuF8rK4R}hArOPO1^K6p zeNB_`#jo6~eAcV03Nb%xYW=jZFA+w^vFmBAcEy9qfUhC-??7MD=R!~#$n74uRFRaF zH1OkHRq$@GyKpo0el2nafL1SD9k+^ZDKRciyowcKC6q>=_ciFxn#+zXbMAi<%9cE^ zcNmN{^I!w7DL6tj(ulkG>CbD_ez=$%Zumq-*$ zM?^)Q0s8iKyajcU)d-B(fo7tu9Y_jmV>@nTMM=Ap#?@9*bwzpmqGdt2E=5qyi)nW7 zFZBU++T*LyG^(wuIHG~7>C7!3>FDf?s;4FF;S1L*yJ3A@HDn5{d-#xLmWxI|swRE= zO)g#4PML@cbjyd(0*lHJC__6_@?ALVn2)bXAle{;^@f$?13`pYFcy;g86W7DALR0j zvz-K$^eWUVU1h-Bb;SL~y)oas>_6I4-%EWYtoZ(y^QU9c>7!A}dGVRY<(wX)O7?j- zzO}3K^9+AkJoU3>)3_~m^<0$Yi_m%6JwE@%Fx^LqvyNt5hU(p&2(mX_R$|%Lm}l3h zr!A6C>QxyX9oy0Pq&RnQgvQ|cQUTL!T#j1%`ohY>N^LtwxBrnbZM!2xk|ePdR}a0Z zQ=m(9>x21RvTY2rn^o%KlLVnHW{XNWzdqnSVff0OuS_^qP3IsSj#!TdrNDL`v%3Bj zj8+U6507dRan-Ts2;FD9BeX?K?FosAax8i$M(M;napbnOJWhq6iX4R8$RX($0>SOxt- zdKgEbD=8YX_nw1b3OR6Vh)EK9Cr;~QR2Mj%Ypr#L!|~CsS!uzx*A4iQk!S31jKQ|e z;AvM<*-=1}F?!WGIQR$1Ms~v7Jrji2k<({@=!$M(V?{Yz&v0V#)vXH|z*48b=nZ|d$$e-79_ zU0PY0l9`PJA$#uB%B`l1K}%t*2j$!p4V57~8sC3e9xX)lRVtgfy~FVGvk!5_#>a!S zpt~ZPY>GGd#hFEb#OMzgr=46EJ{3N_w?CaFVEmv*TT-m(4RcXs2jGaKaG&}0mF*XG zk)KUd9cdC>tljk;st~t85|usuz}sGvkyRl3@UoDI?9((-K~ByH$ghI_t-jK2gt6t9 z8_Hj*_8JMt3mO{IX6n34J0`=s&+S%KRUOV!1`67yzKohZY%ieZ#pOi1k zlPh8bSm?JAzCQi*imED}%C?5KwkZs!em$t#k-L5zfI`EPw~gGJDmEWU)6lxz%bA+~m8bS+1f^)R(G%qD3cjqW$8oovsb*R$Y@b zc<4T5KF?6BP+ZDxzvu076}_nwRTfDlF*FxxB7FAo;Xe^A%G*?t@yk$?s;Q%6_*MSu zo9=?Vym6cY#e3lbH8lM}fF->CLS~S^>(^i$71h3ubZ@9Qs0R@txM4XLdl_7)nKhEj z5n9u91yT!4Nk#il1OzzO`iZqkX#(>osNe3|K-DoLn)4mwlxhGu{KgHDseYU|#0*;N z4G3TldPi@ICKTKN>Xs z@aJJ+VUYS;wczZFJSMX33=gBiK7W6Inm(H5yOY z;!ixzuw!rUQqNP{5D~T5z5wJ1!7Y#kunMV9;gI$T5L2h0->|31hQ4mu&wf7+YYwoyU-Q3U1)jv z@++7n(3eraIk~yH!9vuq7MKR8{7(aFN9Qp| zUk=I>ATgkqK=9e%ps-+T5xt zrZ}=Z+QdV z?%CRD^nU=}Hl|R~yD11b6Kot>q)jHxx`9lu?>EA(8HvMg1tWNE*q zL;z>nQ@&p$aI2P9Fmy~&@st;ZkOU)w`1x~|V?52ur%(SHX}%Eob%V~SgmcFzDF9ki z#@b2HSizWA(63Dkm;#X!X5E9B&kb4z2D)Jm0>Itj40i-j0Wp4)!t?5X>_E zO6t-W2(-y|MY@OsWHC)7Y7mJYHzbfph6w>s9gv)a$#O0xi&t0Dwp(gbh) zp-a=8{IcMm*P!NY&q`yN?)0|3xl3O%yJcODT%ptsQ2~h<>8rapS_R;vbSTtsxqpU} zuZN?Ce4UnZgkXr83~X3ot|)+N3RRLngYNJ zXnx^-H|ywil~e0NUsA=mQ7jwqkK6dgat-L(u5-8VO7?o0nVyo8d&U#M9v}pD3r?z{ zLl|AI%xileR5KDVP{d3HW=|%*p}-NgxkT7>~9x`IZ^n-x_{Zw50i~ zP;-tniO0ABRivAB+6ox@^jC}!e>7Dskdyig0BYoXKM;fAV6nQlP!dIZL>Vdeynaot zK|}^^-4+loZ8JUx53bv=;bpc1Ycu*ZxLlM`f^j;58Nwf&m_c}5ac0XYC`5VaB9aH^ z6Nj)SLfL?D&ZE9zXghG=z*3PF6GL8pe#9}HyZUJ{C1yU{RMqKpMN@b-H}9)c$Fqgl z8T@_Qd~-3TUl2*NO>MmfnK@Vy>mi!O_2?ivMq5oKkPA*qCP%EERA!A&OpKQOg{3IT zmtJzkxPcCt#`T%{nk=zH(?$h&Z@BkY#P?u!IpMZfrWQ3N?}tl)rAS7OJ(zABYwLP{ zTmj&E6N;~#c&0R>p>;V<0O*uNw$Z5hE604 zO9!Y27k~XKkTcQ1g>9o|#nl+rk9q~YI->n3blJ3*pcVQHw$SiBbiu>Pz8p(=@|~o<=@1g%eVI-+2EC=;D3$?yzrr+YpV}{d7+Pf zQ?i$U|0#0NC!P&FlAk2K!Xs!B7A73R=oqqsTa6j4!x_g3YZ?;~^k%?`Q4e49G!m5{ zM#u>nAyF4-o(u^|rSVdG-syUTX4lbxQ)jenIO(e78FJDp@7=xJlND)7PLwgQwc2%w ztZc$+p_H{f`x8D*sw3c@MG1xcjZ-0-#x?)%AyGz~|j%sATiT=n@Uek%l9y zrPIlc{wFTK!67Ooy45Kb9IV75d%5|-XX$cr>QB`pbxOK51C0x z9EDrXLRW){S@$6~N;rNW@_X|N3ZMo)3~&zwY+m|aMb7Yx7%vK6>@VNHty{5sPcAwK z1xE7Zx%CKK=~iqjWHmt8*u>6PAXQwggs83Vxnixrj*1LwFgOfbM7S@GqdOslIsB)l zBgdA&^U5Aa+>MU1GH1$GJ-v_jK~)TAy8>_cU!m z4zX2>1^m)t1sMgmZ?oZSD1D0P;cg6du{Udff=KZMB!Xi3>19;Dq@-lv?7$+r5K&_% zMYuh`v1J2@q9jnF$5L->V{Jx^xjovdiSvj|0`W5T=@a%)*dbaO=VNidin=&Gw6 zXJBCFwd*U@*C8(|;o@!~Rd|@%PC5F*LclnF47vT|+3Yl!m>6b*tdGPhLX&>P)04jL zH>8;zGn^kmYhZbX=))vC#DSs6Mps?X)r~T{A`jIFe<1$?FYU7%%B*m-hX*b)lTE&Z zA-(Nr`Ys2MWwtXin$$V?wGh!aehh6ds&Da(L6M($inJE?0cZEbT|Z&aq;IYGjxQkLNVYiyVBJzIasu1lbYXxg7^alU^#Kr+0NpxBCe{K?8$p4qzWn_k9TUK#u`>17s7pWgKis z8T^fo$HhB|_&1@jMfZ(vUTw=3P__tYI}QXJPIJe1kDXmy&Ve@ud|Z8OZ~!)gj*brO z7Xhw@DhZh%TonF@_Wi@DA_YSnP%3-WVS;rA#*dibuV072@S^hrw&n6$-fA8MC(cOr zjoUxGd4ot-$M3)JmosZ>PQz}2vQE$cVsA=DhP*ZPV~VALfv?|weON+42f~EZhei=! z3Jfrk7_nCg$yA@fN7tR2%}~8F521G@FMVp6EHeB2q0s2VbBxmw=5}02SN| z))o@qYcWh<1{`9K8Zoh(Dt*m(j0wQ-i`i|Pwu)0iT!Ml-4@W55LnX_NV8;y`zD`c= zg%AT55MvaA?$F=kS3e5W$G|NX^R}Tn^|ss9jRazNSd+sycoWV`?S3OwY3rd42)yJTs$% z%wmvwB|n29VKbWc#l{$uYUE6S>Wx!ZP5%Pj0CIt$B30GUfP}9Y0V0y@MUuE|06F3` zI&k9=GXVm1XlSUX=N<$p>!i(NFJ2TAuGzWM+qOH4MY2zIhrJ}M^5{xmla-HSjB_KzV^%36Br^=+2Cas0oiI0k9B zb&Y=x_ZD*9R_wD^!6P5tE3{SvF%;v(6;nwf#&Dn&QPjH%+UFM+>93H3nD9X(YoAiB z+&X(>j8N@LTcGU%P4*m54|4%a0JXD-#`m|Q-n~}D3Cu!BaAyZwf&_VFIZx#$-O{79 zNi@3zme5_uIu<71sbLJXVq;+ZCo3)*y%$2xf5_E$-;*ldZ~auax$)2wrl^-8PaMww zT|BGM8F0P*{5p%68Y{_%kuGioYzPIqoB5%%^u~U=w6~wW1Rk@(D>k)iXRDY8JHBrUl!+(#qWjl7H<&@DXYFa$Cc332;T;)-3oB9U6#8| ze}J{^dl+?+8yA?PP052%a}#{HmlGjl;7xsuLy%GsHMWEUK7%?I`9+EFK0KCO*8W>#Kjd%XrPjlqBH^<|3kZK&o4GCC&wDNjKuh)7Bp z#ecvqRO!pspJ;BR-XYK4^9*xQLRO=@scEd8JT~8;*)6^9+KDrQmlrMe8DwpHdF6L+ z__GncA@!d`qF#(n^~*Cs$H8i#wF{qZRV~L1wcz%?ZokgA zZ?Ap2{`2Rov#DJ-TF>uA0|;Dx`iKClV?sr-H$aq4I=B{H6_r+q2f9BY$AWec_o9(! zfDIrvygFL;!dZ{rm?JPXdD!=0wh-K_sG`DUR|*%k?q;oVr7LDwT9IFS9o9>Mz>?R< zc5As47YBa|pw!p8zHLK8+f`LlKHWWy{JCs@p4lN#f+I4Gt^)l)M{wCxO9oKg5U#j$ z@|@SMUC+T;uR#}TyAIqoCaulOi&j$V>I=vmnPXH%(D{l9Iu)o9_Gb!zoLdqKl6{3C`zPo8 zr9Z37$Unt}vtigfa&R0xDX|0WWx5Jb1q`we0;jq2)NAu4h5gqR+&>XXb&;LxOdbZz zu+=^u`F2h?qr^7F;TPqZG7K!RXN^+J)dR_)P6b3LFuog2(Uo@Mv5*NMdws`EA73ql zK1=Qb2W3RfWULXY36a+av(ye<@)?D?#Nen(n19ZtAkq3EzvE)fe5}n7LIA*=Lujqi zsz*(;G=uYpL?OS|23zdmg?rxVCZ)?tvKtA=-_84VjXZjh_43FaXQ?1l3Q@&y0y0e0 zh5pg@OvBOIy(!V{E&kEec2VwC^&?+?(u(=L`adNtHUT9~^UVJ#X=S9Y9Me;b4?LD! zHi-7}6hLv`B=|x>E$j-jf>dtCy|IA*l3}ztt^Yq{yObcq)Io+VY~Y zVECrWLZUD!Ciq6(MNI_FQh|^R6}{%_u6;rxG>#a z|Cc9e-y`8Cw>ok=KA-V?Hm4}vV4but>6Y&q7r0HM8U`CkeRW@Y|HGV7$;G>couovm zN0q&d`h+n?P4rAfiED+{w;1#p3Bk@dCGoRKIbLV(ugJ>SzY9*F zCfTeoyt!`i+1Tyct}XlPQFnN~9ubn5O}Oo)uLl4|cKJxmUVBC$>G%2Jg-Aio6YhYW zpoL70F2owwS6EpD#iYu6*L*6({(2(gaeR_kP8Oupwo?d=jqQ;@n0T_ka6WK@#jHL^ zUrs)UZrVPxiTIn93%2Zf)9cs#}a=%y3-CJK!V&s3f17ABbL;w~n8i zJGZDL(A3O~#`p(taje$BhD$ljYq<+|VFd;|g&*;A*QWmYh_JR|(D7-i&!O$ncl1^o zJ&H!GknWi@o$B1+CxMvT`S~_pQ46yGeh4aC*#iFUdzgCxtCnPN7LW=EKo-(3-H;VK z?vAN8a0VdF>BSGgZ$)!J>NVx3>1@{otU8jU4K_*TDdlLO=HP8VUYY5k>2_$T~g=-RAid zNDX20o#&g8&xCY?Qm%N9c^)ULp+7PuuDxuwrVqW-iwY(9uPEVup(tT%nARVRt76-6 zORRe?Q0di8V#;*Uqx0|GwG-=SWbcvfDwJ7uuye_x2R5LM4c_u+3aLh~-6`=K)wI-1 za^i(W?12k=&2MPZOci^5+8~i(NWE&q{|!?BX8@h-dJ2w4t24E%Td7SI@D%|s^JDj2 zu^n>?5j(i>LM}XW0f(B4on2l=5Kg`9r=S5vuh{sub#z3SO2V;O?fj7!@inlK5cTez zz6GaAZ->bGO_x>>-Y;S^MJr|;CM(^d%GZtyvH_SDFQ>iA`4fs zw2TZfi-#VDE?|GnF_9@H8rjseE1;T`W>Q`9<9h7;e>PO#7lHDJ`3?yR!Du- zzUMmkqzRM_+Cht+TBg3 zuYDMz#=(LgPv&|`PrTxwYqZ|<^w`I1Gmq)A{)pQLe*OJy`gi%qgCmuj zMrVxn7A#t`dZlfNE@M`(H&Q*+`olCwq0sO1_hNxYMu`ZWuy|Lu0w>X=*z>%WN}=pc zKQ~;N^1MdRANWJ}P2{o0tzGeXQZiw=4xCkj;@{_vOuVDe+&Lh?8KM4wW<~V=r-+$1 z=HJd2ke1RpM#Umt)R788;b8USAKEM-p9uyN2Gv_hZT6arnwjFCM3jpCxc>4)?h6t5 zzYgm?(GNE~+_2;QLamQ1#gzFC?IydKO4}I-y<_YTf^5weuX4G>x`UH2i-TlTH3L?UThO6ZJvgbD`NxH3q8Y0$TfSUW_2t z_bAdeYO*3GwJ2AE-$TX7-@kI;3v3iro>>U6(CDM)jXxn#LPt{>?h9ze#X%T*a@%tA zLwjy_9cQATdQ;|0A#>try|4G}c8Xr}haB>N;-f3cYcl`$WAbLBy4wLZq+*Jjs~f1GaxE^#c+N z{P$lpB4qRw3TH=(V2Pi>DaDoFza#CIuUSwG?;l3SFVY3OF&wl__ydx$N=F{F+ZNkAxtx$ z5$S_Uj3#48xnna0W86RsU-*~uD|;N5%HlXIadIVk;9UHfITM{a7DOv6D@D6LG&E3E z9^`Dki!S?h&22N-WISGsf-|`y=cx*NW1mBjLI?wdB1MbP!yit&b^BjgNr%O4iX?Ob5chH|r32ZQfMh6QRsOomfco16};H6P5NktnX8`gY-G>J+(Oj=7N zTVD6bZURlRr*>F19TQ6P!9ChJM9gn1U^GJoq>{3$?`ng71a%Yqn5bvUcdP)$=5(Cg z$ZOcr5$pCAEsNN0Zf;quV64bziGhxMs@zy7bXD`uJ~lc~ihz9z`{~BZsq`FTQ^4=M zDuvhby?RI>EU%~L{e-hwGURti6KWs|Pv6+== z?YfIw2&a8OWAl;xk56nfTbD&c#ov~e__?3qqOxl^9P}ii&~N_T+t0QR3ERc3M-(DQ zcvQamSx3h&6$pI!JhLQX&u72q&8AH;$17;=oc(e}*tchlK!OC_P77u`%{Z1l|CeuN z`bW!Ni_0u}U2aO4n**Ncx7sE4tAajsVc`paLx?eI*=NJIkJ=PL>YHrI zjE*N;yT4>FM^&^AqCSBIs9r_lk+*#hkbLre7$>HJSW?`cWyh%zwv35lC{bnKpjjk8 zP@amh(Z&!j3^|Cu7gIh8A_?nTKyL#T-s^kwVm{IkK{1B8d>(qF^THoT)?=^_fVUEX zH(}IAFM}1;S2ZqSK~BUO7;-J+G`T#EVwxzJerz>ssEjw3_6o>qx@A6?zFAUFVBLgJ zp8?)weQ7EyneZ|uJH+P~V*8JhOD$E0?9IiFFBy@n{Q!<@br`}}k&$9_miHxUsD5#z zn*)$J!Lv#Xyq3`oHRa`-m(%RzAu7?Scc9E8jrmVB?aPveDytD;y-?lpZnbWvtMBNR z@z3cyh-^loq|68)-H{zp3M9Ah+ot==)?@Sc%ME!f`nEzhSv_XtJnlC48x}fLh!5{lvCy^{E}<2BLhof2_ctZH^hfqigeiY`N+j8o@Cs&Y7_32p)OI?G9nhKt z6Gd*=G+GU&{By!r)0C}7=-O8s)3pMm$B&DJ{)_lpstbTQqpg&L;bUAQjUCu}*k))` ze0)|uy;x7lq9ihQW(PA6i&3_4KhLI9QYQV~q)Zl1Ch}5z`*1(AL;CF8vYVK%221f@ z!;;IOi`Tdz9hzrn6R{sL-?@`|=fPc)+)JqkfMx2(5HV=xd+hA6q0ch?DCnJ3DZ{k3 z>*?v?85UL>!{+ZMLa7jD?kaE!_7#H_LXP7COE-&H2nuB0xsIet7Z z^my-uL$$Ueb~cdd5i)Bm{tEF4=OHAx;~g9ra4zu3+iP#d+@KrN7A$+YyBLf3nLPn=GrzaTAu&m%Fketsd>L zU)a(a!2+dSmVV9f^-1H`DVy}I6)yb;c2~;_%i@pW#%bFa!nr%3vFk{F>l0i0)lNoO z%(xfQUPpbB6m^MK+r0T3hCJ94q%W8(>QKc7Y#iFmBA@x6{FPfABD|LA=BHq-)C%~t zw6gMAcPWuOIbq|oANIVn?EF$6p6Nwbm$Z(ZwsW*|+*e*I@c0?2_G`t=e^q;QOM(tL zPFHU@5ec!2_ZjIaBb?)DUlCEmFu;hm5PAh-4}<@B8yv)YI%mO(&WDJPO-^FFT;Q`O zNg_HXZ}VaJ2r|>+umF)wct#71bBeA0b=o&ZG6I1VHAmCT1jV zr3lX>mPL)vpkG!%XuV?_CMrldXx^dc*Z>gmV2qNuH?i|#-Z++gle_KZ?zT8*DNgEs z0@!?K{1O)h3!#jHpTB<1End@@fBTC-y;w zG5}y0D_q7uf7XVx8qFzSb#X<-GEC06S&%mnGI(V-1H?IEj}O~x(f$;CL-_a;=J()6 zjl|DiL1t>tyLajH{b*Zd^=$BKAq7xWQp)e#;x|mjo7CZ)jeYd5&KXf|8e(tIR6nF_ z`ZatC4peo0@C{Q8Y=IRKtDHNSWE2&B5%B@B0I~21ad&%S-8Eh181%Eqo{&9VMJ<(tt*rFJIr2q1mHLT*4 zB}ofBLqOXaCTqfUaJglFe-?-t(F{dou2l;rrcOK?1q?8g~j95?9y1q=$G z0jf2;ZF1$dpP!tb9pDXgC&joyr)N8x44*k3VD8i)=;V-l5ETz3J=}b^p`{LDZ%mLu zIHfdx?ackK(#Ae5A$9M&KtGXw&@C9Ax(Y@RKLgDl7K0FJ2IPRPbW30Ee)rn7V+WhS z=13aV|0yK)9u7Mm+Mi+esEcZ3Ck z>|2rS46(&hJ7~qf4$r>nICM|+3yVa|nta#x*n$V$Z^}8c7Dr{cQ8xv-xeWqZIBjCn zHum89>u72MI~s!`nUY93Dt4bL`=#QK;X^O?No@KL3UUzJUlPEk69QjNP4JJK9V>CK zWc(jwvN(IHWs1*>C>baYPc|M)7XmmUPrf20`m!T#(ph16fcb0p7*;;+O$-ZKQ5Hx7 zKyrlUjLS@Am;hA&92>vWWU;y+nVw1=Q9Zt zxs*$hQ+2VEKAmu@ent|AMZTS~s8!U1;?K8D2`48fXFKEg^_+0Fa&gJb$T)+2kZ>)c z9gpbug+}Hq;O2$+XD4)lcdWKz&oNA?EC-J>Lt&Vj%G2QtsyL$XtSodBX3&SgQEe*I zyN2b9-MgTbJdKtNlR!C=@gCFGLx~K9Gq^36DMb@wQi4)lxS&b zF;e`(%ZZn9e0&^dI?DRc!_!HsA@~iDQ_#t?&GUvLtt?GK#q_{^NN-@k6J3o!W36%Q z!&^kkS}6f`0pW&y3S4&pg%TSGIJa4GV(ggx_~Z%F{J|x|G=1mrsqYe(+o9M1`G!Fm zORBL;ed8t8_KA7CxCW=_5(U*_c&h`why`zfB?P$fSGvLcTG)1II51qp)eXSM7Q`$P z>FHJ$?ST`|$75EAQ4a%c;nlcz1I&35vHUY1+%0CqpB{QtU%#|K*Qkxa5~AQKD9}mC z!hesuE_!_`kS5y73j~&&-aAV8eHt?^B}ibN710u-rvM*hIGDyeoB=0gVqM0jJ<#2V zQU|tB?`Z4b0616txYQ44h-p{c7iX}ic^})J84{bQX2Jwj5iteja`rx~31qyO}C~W~IQ3sy{S|@@K$c5lH8P#}bH#NpQUIRn$Nc z&!e;0x0b6*E`@FtglbfL_K7-xAuj?XQcZ8a#!2FxO8-xrjcMv|#;z+sKh}vi7t3nQ zOG!$GwY1@QqexjLK&i58_in~PM4!l;3SE@IRET9y7Qr(_9i_FbbtN2_@u>lvsr;BQ zTkh}3g!$gSn_7{C93d!l1_6BF0m(S1xX(!gZyx8c)X*7vW2oC)dR_>cNmB6R2;8f*}Hw0h#f^c~JKl3u= zaCYVJd^uG|M`f-F@$eXVTW(2V@(^iDZAGAkevQ(;I=Z^Pii10vdt3|PfuuTQs$aTP z_nS-dprNUS(bm@T$8vgW|1tQQf(n-c_9O3tl_-uz?$>B71G_!`qM=mF59 zRoCQBv@U>&art5tCVG=f^!P}~eWEtl61CyXI=+L+=uRNcoWmLnoC%*AU9h((_S}Vd zE0(3;yUzJ7-wG>9R-Wy#cPqu0`Qn3TQMvw25BYJ0E6Vk3rB-F_Q%B04lQad|*rTw! z#?(X!dg?rG%c4b-{s=S6_8;IPT1=x{9I#6gU1x+f}p zlsZIauUi;ZeR#=C0s;cCmQ>8p3U+M!Y*Pg0-{HDDf)ZsnRRd(ye%HQ!2NZ{KV?p?L znBL&v#DrLVg12g*6w>hlo|28a!Shk89^w)beO^(FTc)nXv}x5Gd1HCqOkWu0+U|Uh z4A??w$HR=ogJGw+=MGv&%>Gs$l4bA&^tX{r3tZ7^b*SS(p#P`T5!s~hm4=N(BKF!` zkBqtt^1gIB_te3IV=$h3FW8MB)Dftm)c~;rJO4J@23?1HGN#et;rh@lJ~gwp<}xz< zg?r)iCyJ>bEgs{|tx{5+n3SMi#4;I2j4C))r*#D%xIj(4437)e$cwA0&O;oDT5V|} z1sNWgDKAly7Pj7*R=_3DTScx0@yX*sRF8}_^mrQ313($%y-?e0gWL>$0och$3SQ-p z6Dq`K9*}4D-NfShfK#WSB=qn|MFhmhLafBdKQE&Fc3@!pnFS_y{;D#kMyM3i^>$c< z*&XO%55Sp8Hm*MY@n$$}XV}9R?ja)%PEHZ5ILWa>OHugI2%$zH-?Zvbl^@BS_+Q0N z`nDm zvV*8I=WQFg2Np5U9T4-H5)zhGaSGWuE4%medL5wKGjzGMR3RvH0XE+#1zfs_JO~k0 z?_Ky;1}dP*a?y=~exuT(ULI$x&5VX=epCWD8nm)W!dfZUuRkB=dc`;zIj~)it~TOY z{%w5?S?KmR-Xy9or^R2udf}=DCca28QcX{|G)bhw@DdT_87cD#`q)baRd~9&7gT|d zp%Am_<0evTHw%otb;5i>UbAhg^|X~zQ@dRGn1pZ#l-xtz`?M=mE#NW_x5M_8f#PIe zZF0<6_2w;_eMciwP)m+D?LaAG*)Jj@B6rW~=9oQ7UbpOHpv~h8bNUn}C|_8n^r6#) z8O^48m*~~!7)^YSALr=6td46a%l7Ksbst1<@bTS;>;vInAijxSIW&)ABpz-gikKhv z_9F)mVtI8prUme=L14L1i=)3WKo!FN?kO=*Y%sh18WBnu1Cbh24pdP=p%h@)+=Vc= zx5UovD-jF7c+i$8IaSGOXq*CehpY`IcJ>%yXHRV3P1?|qqjsWu;`?6g;Hc!Xo;8CXK zEk!@YF`zP6Agq-vGuKoa5g7UngC?564|OL?M$4(r?`1|;i^hovPKKDU3ojRD6PDfQ zfgYIYO`D%X!+8WRGf>O;OPBUnxEsS3xcY}!Q!yS~yltr%asqTrAK{NOH}8b3RWw|h z9zU-CQ#s6h6Yw7rhOh5?nP9p3%L^hxUq1=W-_m6u(0ESp)nuB8wec%V0>riIuz7UmWZQv_ueD!Y%=Nx3!Y$&28m$!qi+kZZ z;^R?x+nRN;q+RSgJ_Y$=yU0ZxoI!p`^X(|t>r=NA8m@TQi^BXd^xno^`PT0smJA;Y z;n`*6Wp`9Pa`b5CjT;u}ES20|K!?W{ka8w-c%6s{+jKjEQ(MH?hoJhwuq5P(MJOx3 zKAuN=$Clv}?t19ZRt)wX?#sj!6klUadufca`8WKV(`zUHZiN1)ZBDPJwQHlPU9#Ku ze+=>R7Y14H549??Z*ZYb5Z$G#sC6mV z;V*~MKg4bMDBsdKw>GBN2YCA#zpL}tKk`~x(RsFbrJlx-_JR++6Sc{lc?rIj77?(-zh=?P1(UeEbi#cH>T| zDZgr;iL8eVa@brZ&rp0pv9-y1DRJO)hgtbSnS#) zCpZ1>UV%onnz}mH)>|Jbgt9xE8>t_|!HAC+)A?KN^5ZEz4oHmT5Plq-)4gpoO}vfK zKT4aBlC}$Mtk*M*!>=W=b?u6#Ke~C$Q)2h=q!TK}M`A7Hg;ZdcmZq#+P0mo-gxqrR z=7EXw4=PXO`)Jnv%B&BAf8@6$C2=Vz^}~EY$BR|y0SxTQk>3evkN*8zN8Yve^W-({ zWIo7i*>?8d(zStq%*4dwKScgI9dzb&SD3YL&VYE0qsx|PtFjw;dP2BT=4n?~lBjr# zYlQI7jmLf?G_#C<^@!*dn=gd!Qjb#;y)Ra|Ge50DC;ByQThz<2+GMC)S3KF`n}NF0V}cDgZwKK0Y^ zd_OX(#|_5_H1MJjluF5E*z`;7{tUJ|-GBoQ4uwB;cenMQCWKc?_~OW|_fNy|M3{~I z^@sd2*?3C8{0rSoPA45gTY=u4yqt=F*+%{ShG+$BqsM&xYJAWPi>{oS|SEh3{~w9hF~;7 z9X4&jY-JXJW;R+KDJN+d&m<Q;W zYclY5KMMJ+p|#iCoOLzn&LdKRo%~5ZKWvjJ##5e?Bc}gD#AEQq3${Rp_2;aRlFHKI zQfpZR(bf>Q2PJ-%g+#by3+_T2$GyBfy1-Bl$I5jZ4EM}I#$|8^XRdAj!rWY#ZVCF< zv`u^2Jv?E*)4Wteh`Sm-e%xpiq^}IY z!MDB`#h^U$gEa>$G*OWk7ezq0(Y`ZU@h)mAGQy%{fX_f-Q?-AK0&kGrHFmGLB}sAn z4mQn_e-w8cDDKwx8%=eS-ERIX4aRqxh_yCW?r6?43f5#t%9tk#Hn#013c@w&gx}n& z3-N?{=slqxa{IGqWL%GjS)apB^8_TBCr^j)%&0x*ti9HdYlL_z{eHU7StObLY5#8) zO0ba&1a2Sx3i}P6P4WQgk{dRuk=9jv`|kD0XFc#bq;dCOAiNGJ0q{EfPYFm?=Rfz@ z>&&vwv*1jQ2oJYk2a!G#05#*fb?ZzYrD92E(F`?t`_W!lA@4F5 zl!{8gq{hbZzV8Ev!4SQ-&`L~I)y6jYfIY4S(IKk1p}Cmg$@ocTKPko`BkH~t@{fhY z%JmTyH8l`Ns@(9R3l;AG6|?2+DRZ|I6<#wP3hOJF}?d^ zVC8g3Ss$B*JWcsp&aXgWXj(xSS;iO*q_=KGeqA}HFky|O*9LAF;G@V~^~3OjznZ(; zdC6|H>f(CsKv|1PgeovoCQ_!do~0|;p);_5!7Ch=@{BOhoV#Zi=P zK&&#)NU?eBfs-ZfVX6(W;Ldj6gG%UDDT?zq&##2BFNwLjy3WC#*0P7m!_!km^MD%| z*P~k5dFWF)<2%#-ROCXOsVUh6*Pf-tqt|xPKQI`MOJqoL?{s$;Z-c%}HTdl@H@C*W z7rhg90;1X`g?=H{!2~uDvLNha)kdM+Y7)ao`qGi|U?cG)-Zbo8ERoBc9UR9a|i`6plTjAw;FlL1kxWrL2rnR-!1I5*;fk<5(F{h%%Z+ z*;y$n(M~GKC=K`X^Zj1G`@XOHare0XxE|jI&gcDkyRX)aSC=L{5iW{p1;GAney^h>Z?YqV2 z{tBQ0%RqJfu`7y4b^Y)42N4Mg2qWWATL8&Oca~za-5>v3xX4oJP1S>cz(2{p%-g`$ z7%Gr+(BrYB^{4?)b~RT?PR}Bk{5nqgCQ_;9I zb4wy*S#e9T8(|qOK7xeU=jR>9xwa9)>1&rjqN`(fb^DwBz+69Ow?b2DjW!F92jvxf z8@x8FR$amfr(1(9x@Dc{-7po7)%&~EMIz{0JS_NW$o01OrOci-v1$LouR?w;JFTGB z9eC4dn$Cb)QtAlyzZ1J;m;6Ew4u^bVpBdz;9@ums;(R!##Nv*|xj(P2bLao3SZfP$ z?%IxGEm5M?c6Xc6i4TudqQ_lX5(V<#O_A&cOEa+v#q<9aBq6B$$#(Yag)y0x;mfZp z50fplIJiBpTSWs?~whDd4-aKS?~uDtvhAQ7~d_xJzg*hp+( zx&z5|g-11mcaYGiG!P0mxXE5EZF%+rgd{?3m6o=kDV|A0P6LRdeH&+mna5EvV8xPk z!Yo`u>HWYAr^>0NzW`uKa(1xk!t@q8O;D<6(3r!|Qk`xe&j@(wfR|G0;nezNV;L5R zcC&_i8iw)B@8e7_tY;QzjsI$S-~mWDe2r`2+6ZYTyjC|6enJcEjRTN|6s}=(fEtgJ z(U62dfF)~?&vmQv1GaV-J6wSg88N>A(>5X3MF7(&k>00<1>lWEkd@hT^UQrzF_40s%%pp zgbV}!a;87GxGtMy1;8oaw--KSyiK}7NulGI@sap(`IZMzn{COz0OSYw`7unEK-aV% zi?l*rKt3NaN@#jukH8x!#~oZYsHw5MP*zrcH7IyLa>-wc52*-)JR7H?(B(`@Z%U#uuD8eZ{K$F&knkG4(`#LDt51 zpnaq1d<)qs&N~I`4am_CHSiS816{nmQS!z>>SF3{nLAfeS*g@=v2li6TLfJN(OYK` z=^GgMJsGusf#&0Xa43hOB~{BZ8JzOSf-WM$><+PUFZi?A&qW}4v|<}jqyRG1O%Y}r z;k@UuEfLyCyfGz25cPy)IY74Z++}csY&6n?lnuwW;N$u%C9BJQ_HWd&{U9Klz5xXh z;=9L+h~Ve}g*XyGy$_ZTK^~+=%v*n;La91vA%plemPYi@F0n`f32=K><6+#Mau$gX z2n>;Og8n)2^l6tDI?1I-OZ2*YyiRj|bj?x511N{Kx+GagCy;0dNZjPM>ho zOl@uv2b_cVRoppK6AW{3CWLeHai4A zfuWBwDZ=3poLP^ZYZP&&1IQY9gC_`7yK>L9TgEvIPV#Ow(VDmM?7m(nrmE7(mBSZm)Wc&A=6olTa9%VNrAeejeWUHvy6yj0H+ z^dO3SiZ;b~*BFjCPYSz3sps$Mo+)TS$0F4txNFx#+)jOGAAx}>!#ljc|O(vQq&_Y`!t72U2aDV{5W5418P%kusy20)i&7Sc|n;fNA zYIt#N{|~o5&n{qSZf*TSnH1-OGzzBMEi2++vAq{PT|PZr@okV#s9ac@di_X+(&&O* z$OqAn!wbf;8zlcoaDUqTJ6^hr;}*oQFBcVA#ClY$n%|SoQv!n*tL4pQ88#a@4t#jq zY$#T_-23ihw_!(rL;{j+>t+rZOpEU1`D61poNO4Fe{G-S*kqfd zEFr04v>pmK!GMOWhCpyub^dcGsaPcb1_cm=?J>-nQs-uIRW|6S#H zn=es`5LtpgJND(d;jZc;K)t{-01*<(p=8PJ2o?5w@KXF@dXL|k(tiU=B%3^ZekUtm zVY0D}S6=hurk(6T1-o7Uy2#X|KekM7t;h9};@$6*}ZGjqfq}nZh(w<=0@w^pg2>_|- z=qI+Xu4m3CByg~a?F0|tv?cgot=8f;mR`gQfmfy;!=KVb={UL79*S;kXhQq{(NjrT z8A$>>KO1pmepksK(Au&E4M)z5EfOApRzq?MDas6Jb6i&Lo}O58CaflLZ@tQhA9BFQ9)Wgpk{j8eH>d1zL4k;O)*dxq(I<`BZ6A7zH2^7z$x}S1PuQs zV5R$LP{0X8+Z7J%8uEH#!A%20ND~y57!! zC8|C0(z$T0+GoB3dYs zAf%Adq4fG!ta|g<*d2VPjHdLobX?NR#dx7Ng%9F_p!lz}>F#eK?!8Fh+U{AYP(yxfog2?K6 z5o_>HDI(jaaCEw+3+6j1s|M8ASWnMCTeaIqAQUl_6-a0e#QxK!UcVR<`A@Jj>u;>Z z4_ToybAac!l^rlwr0GU}Y1Y^*<)Xv3=H27m5<7^``&2s%iKtE-W8JK=d-wL^QuPZ& z&%P{2+yTR~c5s3~UBDZN66jv44UfYy$|zQY))~$6PugtYgDH0V(Mh2k!3|PL-N?nH zTq6XOsmxVZ6_tf>_fg7*(FCNvPoeEoMC0Elw8~(4+Vtjd5HY|xtzNHpn%d8gwSL>n;A-q;u!?T!QN*1d5+CYd3iy7`?-D%COk7@8bujwA|d2 zm^N|Fsf}UokWqcqe@}m55q)`jqavkHZ)5nyzmfU^Lc%sTx$>E63f|$(MFUuPeTM$% zKvLdGhIu7jdG^->vHM2*bY=fY8~s>1dHVhJs~9%+#=kdr&tft4_u-4q@?iPBd;hoX zo+WxRtT{|z$tmf6i-8d>$3cm+ zzQX`~afiP1CpDHsoyD{XYVVUL2&P4oZsp^h;|gowvhP7 z#Ka)vsBaxz#?{S@c9Yt)i_&C-|2wkTKam+YKPEgr9-f$6j~jmsG)Hdr8_Lp8*C5!; zRI@>;bn#K>5W&a?M1dCN-?kPk|4cjcrcF2R{#`Wwc4RT{#DNPJE1#JA=K}R99E4$P z+El@duEbUn3?-SGaU9^H`c{7j%jfAS%Flnl;3)Pq5pvp1UeM2sjg6@|xJO*SzOjfo za`lh6aY^I@6bk0TbU|v|F&s_oS5n;YyI!291=+6DGkGyT&Dw_-z+BWwcwqM$zn7i^ zCO_&!UZpadD;UJAJ$MB*p0 zp3tk7R_3xbx0sTSI>Rd5q&S~EH{bAiZ-X#*LB!sQgr~yzt*1?t9Vybc5A`PMcs}~O zDQo1A=9Z4N-@_+%sdaQ~jJT@>_H=(8z4;aXV8#&OEl3e9=FCHVSZiD*#`xmfkJXq@ zSaY=YW@oRSq_uw~hJwE197?zk$&w7+9xsnF*xL!Htjws)4|U&4_*;+&;>PSJ{-m3O z_3d*b(tm+lpp%TT8dT>o|Ii9!Kd|@?i4GVo!;RQ@S94ef;V`OxzNxlm4Iu~{*zTR_ zXKs^$olVGLSn~(?d`j@`^vX(ALE&=fs1&ExxAU)9(e56Yc<0VvG#|9GfYTCX5j)QS zkRZuv14t`$48_t(`BPQi`tQkqN@*hM(Jabh>VqXye6r+{(gR1YD02`huA*F6V^5P6 zIu9&2-A=z|YasG2+^u-LXq^=OB){s1yZgkx*=I6dxVc0|KNYs`r><`+3;$GDRF!Lg zzPXDevZ%dfxtNj{Da3{+j&-!L%Bu2O^clrxCyEMaNeXvQu8;NVV?+y*22x)$r>v*V z-%xfWf8{$%zUVZo$x+m>Kk44xZ50+boV~VI<3Qs=t@ZR7d1yV(OPx^pKJM2m?ysbK z@X#9hu;sdIDz?Nfh_4M(9p7btmApBP$Kp17?3y*qdqe`V$#x#0OCsDZpGoh%s&ASm zUfG#QU0k2QZd*TWU0XLSOnO?%RGY*cr4)a4q?#99~`Y zLxmFTzPfIIrX!9Q-zxPJAX(r^K!t~*=vedO3N+|YCtlVG1kE!Lu7({fAwZ!qIa+UA z`TdjuqPbpB<(O+PaW5k>-Y_sShG49OX?&)pcLtmvSbwff@^GY`L_r*S4Ifb+D4^pe zG8|DzpLl@j8&W8U=;_(nVYmx0QtEBJfa3#~p0J_@3>~)4F%%B-Fg8wLM;NQMjxH}q zPVNQQNzelg^Uwy;tz!|6x-wmeOui@Gg1}~=Te`u|)ZFpIZ9LFz9x@8O8B*4YUG1$A zs?rgfn~gxpLHHq12#ZTf@(}cfi$Jl(xs31Mh0@O0hl{VRsF)CF0WX{#eMNR%-5ds< zA*o+iQ~*T{eJv!R(ZfYDD1Q_no9&8ZN&>1nKDRP28w?H)S*GXbzd%BB>!2vYhxw02 zC0?ybn|+&!(b?Q`$Fq4REVX#K>uj*Ot?j$_?@Lavt5F$PxeH_aD6=tK*V*%}xW14m zR_X~$ljWkf)lDu18X2D^))Lhkx>i3$7~s)aiTcEdeDd8I(Sj$O4psZ_BW;*gcI!Dw z{o7GIaEyS&u1K4h05FsVg@wR}hz)lh-w~v`8unJ8DfXGp`O~wr@Xi#OF8=+~l>KrJ zRfZ7;C(bCAH5H#>JH0 zeXAwg@DoxEK?yWKjn(pqd~W@@zLwv*M}LRWFC^9$sv0y6fuoX_(>>oi_(0n#1#-@a z)Y8o#$#us@|K>Wld{GrWt&faFw&HD}Gezh)p`F2Ufk9N4HTxCZf%!7tZrv#ztnA#l**hzuEmIIs?lXJ$qMAb|7%w zT=P`$E%YK7QqehkKdqWTe}ZA?VeiqnnwHC_bM#snD}~yny0f-jB`0{=y>7G-j>N;q zqgfr$j9es`p5bJbde1mC+&8-{)I0W#`9mWC-d_T@77}Bk*}{kGPO7N5lbfX1$ou5H z8oD!QLE5#ki*!oRPVxOz?TMm$q9}_y?Q26^N*0~jg)MF@D6${ks;wW*CZ0{9pI^@|mKmNCQs$tw~7=B7YtZ_4X!bRz|TLW8!kpVvj!=&{{k_@YJW+(L@RZ zJ^kkCUCK3EVjrRy{@k9Du_mThR?W{tZoJc|FTHc-uc}D%C}(fK>yb+$dy+&VXI;pA z6@HavUI#1Ja8!NG-fyD?5KP*$1s(DmcS-nk8|w1G-4U)luyrBR<7hR2VKZz01V(|E zI~>cyKK*~j(CqT{%?U-wxJ;j@faPucc#8U zS&@;JPS^N~(gAEKb&z3VW_DR8Ywnhs*UySYYppIcE=ER_&Bvuv+F!nWi45;YkB*>s zrtEXapnU_c9ljA%JD^>AcO2YcO{`JS`SAI3(wKm$0=8Cyp<-C;=-kFpvl6D;`#~^< zfWVJ=zz;AD;Z7$61W0%^5RyR*G=;JsY$iRM*d%_X1q&u(4&7i7UK}VJLq_2-LjdG7 zfS}PK=yDJqJL#V=-GGewrN0Z?4G4wH7Ko;Sb9-Car2O7(U{HTzVXdzvh(G&^9^u3` z5Uw!^_NWL?u{H}313FSjxKQUHdSLsw`!moC+yk{y{WVC~L_Vpcz)&KqNiIpk-_LJ_ z&hc6-b=g@OTk`-bCvjTw<&4eDw)wx(M@Wx;O{6wKzR4k}R{hXZ^Eqkj_bB>|A_B+U z9FNxty)yh33{xz1v9T}-gA`?2wG|%&EIhb**f@2Z8iSPZiJ`q8lGR9Z2qg)Rj z;LdWFbBB(3U_BsIJwt)g($el8GE~ctH7u_jfC$dVn_Q|c=L~H9YHi0h9AGF|}<8~l*@iRSzNDnX`971k^lwpfRd{wPU#zISY4HJcZ zWB^6kNMA~Z6+JqyPuWeZDI(UIr%)y*{*vh~QVc-3fzT(84w#=)U7iZGGk zzvLb5rKeP!K~`{d>JWd^s%0fOR@o*Z`=5UM@?wj*CC*6J8zy_-%gGvoD00i>EVd60 z1>2q3JgUc=wdsg6PQJVN1WGfZup!5w!@`vfd=%2H#6;sAPgi?*c)*=VFyB^buCA_l z(z3r4e0gz+#5G-pZrN;=>Nu#1RGN{!{mRD?aM%Fn4nz?M7<&zA)yLz7{)5Bs8?#utn^@{VdmuJYxjO`Q=EO33Uf^*&?uYj~Hx#`W&k zB#};tTatvdVis(Ci5jn@weP8t;?V5o=|qOu?%CHIho9N0N(A*u|5N2dm`9#_NyQ#$t7o_Sl_07 zx7K|hAKsl@FXSxdIMLLmHFW}OZK`mtF%S}A$mj^A5*0#=qMEGwzWPmcEuF4$k_wV9 zE^Yd^J+_UyY<+&=NHulX?BCuvj_JSegl5YL_xhMuD6?FTo;Mv^XH!AQir}?y^}Iv^ zJB>338L-yYtzlpw>B4!0;TDQ@sJLyE%yhB0BfIo1;DO?69)}K9+`W6(Dd-iZMEt_X zYv_I!Vm=*g2MSR_TZdh-C8h&Uo&X@8L&M{BOhu4XjW|6VEX>6w$KT);uJu$qJ7>iD zrrR=nKU@F1XpS*MNI6(L9vLDyDg-Yz3htF!{}pV6rSXdacnxG2_atrzDE;zQ{{d(h z#Njc85+EucR~19W`o1VuCnH7**_VI7F9By~2tNXU3CRs$f+AC5c{qOdvWM7yAajrM z8O0R81*Kt;sYm{4$i5w7_dNja6>Y7B2w(id&rx}(fkbORd@eouMe2P30_IM<;^H{~ zU5UHu#y4UcD`aZ;2lbjF(FwTk9mdI&NJ}HwDC2sfk(GZs<^1vxi1pg+4dMXrEwCYtO`GELI=W1$RUco0twHsaKq^vvD1etx0GF6$h~@;V zi1qbb@%zHgJ5q_fb1;dpBRq@=B1cD1Md7OK}p$1eIe9nb)HAY1n zF{2l23tHP)|Rf$f8M8s1hAN|Dr}25s@M zcu{?E?V_iU&kar|Oc<%9+{rWxX^trKANiiV?)ld@Z*y@9H7G4TVycInctu049~V^`N4Fp;$b_kdvI7MBlw%L(JhJ^~kiK-I$vD;B+Ik32jw31rGAdy5zPuQ`rWQAX48jv!r=-NZ63)8IL!ERK z^8txtK|!mxh1KWgI){b*#nj5PD8ELLkX#|9-VioIp}*7Rl{!&v9hvzgUT?R`#dBq#*Ysz0USJ%# z^JDM3`we-kJ(R*UZZscD^nbi?qq-XVN75#LmadvIlOlilKc$}2T1U~zUa7vOrmXpz z%GZ~!krg?8|Fr+hnOQ!zP$cXo9IX0>9rlp-bNK`Isuc*R{Uo|Z2$c>W8MZE=DV?j46s~xb{}TZ0 z1pnUKw{IDOM5z6dFZIoxos)Rnu!HBD${EhQJhfD8ib#26QAo@|O#c&2L4$hA7Ro4t z5z3p;E1%XDiYOnnne4?_^XuTkYmF$^)evu8a`*Pu#)2P@jab@6KoN>Zad$upUS#wY z+pl3%I|?Pyd^wTuo@+_0RHxJLg*_vJVUZ?faD`Qm9CQ1&PD@xwenrI;-Xq+z*KgdI zpPNfcPPYBDkiH8t<0jWOE^xWXe8*fGApC<{=meo}%YJihGoXET)r;6o7suU$^oZ+7 zqNp|8v15nzw}VHaA0R%}XiMBC-WstJ8&6g2stij3`E$B^5bE~y2UTvcVL!`YpA9GJ zoF~yD=8X(XZ7VNoh>JBUm^O_7RDeuDR^1B@H770S@%9c6034~u!GvC}J>3-WmaB3X z-n#ypQv-3y*6d(Cm$ltPECI}${E1uPQQ$O;C2fmbHsF8W9BWpBN7VAsW8tddTfW@X z%nbT7nY7D0tq$vga=mPhRa*kGKZuuoXto&(39xrzE5=0p1TdvqgyaF^q)L(3*I)$| z#}Efn8mNs)Z_soz{LK+^`P5qu5nL(r_4=FBhI^hO{Rfh%5gFk7D8q%hO5g0FthI7- za#lWwO?{0|ZRyv`rS#k76%~gt-Km^e=Hl*N3%6D~Cnh)yAMdML@wB(YK$kxG>XiV{ zDi{B9Xs$xc2T&!Xe0Wy~Yh!3aYwX#5fnQWq;ojd>?)O*Q?#y5VI> z3EBahY-t(z`SibQ;$_{(ajAPfYeZiHP42S8sVcayQL1f1Mz=5hZrQq<6YmA12p40= zpLniM!fCiA>DQ=ewk};-_5C?9S$uoFYw{azWh^cALxn_l4EW^@T6vmPB-cs}AEBG! zH_g`Cps6{J=ZAlvwbD&*#O3vsK*ec`XcaFu)*23% z%eyPL)2Z17Voxf|wQ9ZkUjY>H+dhx;L9{fNV(!>m9s9RZqFpwi4zCmVv0yA1zK!R8 zl4d+5c!z6|pGKR~?>UQG|GP|b$grxiT|0Asy*{@{u(H1RwPoix^1liF(9%_^4e6sL zQXK-eQgqpBZrW6`e*1BcBfsNq7h9ydXpPt4lU*Wp!`w*J*MWrX=x%d6uo&J_9f8*(j|1`fMNu@+Z{Oq`e=2iFqLxwL9 zh#+F2dH8Ip;FfT2%kR$R**rnO8u~p&>6w|kv($FjiV?}u%AKLOW+Eb(;%e*>B?cag zy%^z2<|-nC@=zlfNLOHC^iA~TkpYTOOu&*Xduu0N$qMNb70hRDuByU)RwaukxI6FT zeAT>)4@AV*n4+$k6V(Xl{)A}rQ3nmN(GAg-%GoH+WGOR)2wo-nF)Y-eH^_zIG;cy* zX09(2MFDKFV~t;#JQV*BV6Yk?gGjAXs2^CdcU>b!yvoYT9ZXa;NfPZJ#M|U(*bmC5 zLsXXE<=ZU?XzYf$7SK4>k2m4wJ>3=#O~7gclb(^0Q0NO8+;ektSUOJfxd}}p?Xfun z^jIK@2z*Z=Kg5w4jzbS?JYAM^;C9q=9~z-cLv|}p$xWD_usRx`N5ySr6lTV;Bn?Xb z>R32rFg7&c@8NU!g;1yZf7e4E>DHB3c7~CTej&S&BF4G9VbhUdGB=aRSzIM|?rhVS z)|Qoh17M}|9TD4zx*cgbaReD7vGjQo>9b}&^mQiad-2X;5_p044oD#wo%ECxtdo$# z3axiK6KLc0%xoW;_6-iY@hi1Hdv;=7EarrErr)6S(2-f)pcH!z6mSmmOpl_4M={eT|*(=z(gLvuneT zj7D?WXk|T9>cW$k8Wg6V{79^u%hqnWYVLq!3l76Mc!~WsYfDMFV5DYPpT4=;@|d&V zKff5J%1TN|?4TYri>0cFK*bpdv2DeBUVbKj4y!GD$P4S@`Ew~>?2oE&S?sH_Hz-vQ zjx=H8+;?I38W3L#-@gw&uN1p@P@6`k7zXKPJ)yOgZ74P`e;hltyDwo!0LJYR%#++! zkZ9s(hLzKi&Qp9D6#59z+fmsvE(PByxhM+a5uU$zG4b=$hYx+c>V`cKd#r+-9Gy1{IzS>EVBej7I@rH zBr2W|&IWOcEKa?l#8OytaeaTstbx3LpfY<(70=YP#N7!jjB!?|IqYg_tl z%hd{!lYP<^qDrbdZjquTvU4~%X*iGu;%Qr}n(HnXRMuUk>=!n(8G-2+qZF+S6qS|S zcL4oz^75S$5S`TNuaT0Gaf1uR$X5U)HafA*b3gE50pOyYFvQ0SndRC)fk5^MFW%cF z{1%?tpP%0W;-=3xJqCw4oS#Y)Ek`!(==yUZI>cTZs~sOECkLDl!k~PYyjJ01Hr_L5 z3kmv<4GQKqT9`r6vJ_j((;3nx66+JzZ&!R5;TM8)0a1%HinkzOWuf zm>K-Es1ll3{CjwL@c=BB@@-`qs4KMGmD>0i07MUg6@!RM#rf6`G%-GPrl#nD6|}UT zK7Nd~N{v{W5YcL1z;dQ(2kUGNR-e-rV-z9oh~Jv6jIEqqmE}qtaG-RObOeN3?9#6-oQCfgRs##_v<87mTZn7}!s} zK9p0mefbe+1|#{TH`=jvm_Z*sDtX+1p!y6!rJa|X4axd=r)aC(3{vqxWfHgIQBVyl z#FOa}igS9dbh4?P^+>|rQPmblSRTOq(lP*+RS&<^UQdoG$ z2}GESVQQ>-XUJsef_;%hTAk+8-8iBvCBiUwVqRCItk@#l`{TzCgc_LpfLEA@(xM@3 z>{jS%Hd6G7F|FAyL6RdCW;_-xi2)n+6%W z_m1KGsWR$iGb;a(HS>sPf*xh#{bnZv3;z1R_sP>Qk5!Tct|huO>8HxNyCT-@T$25M z%4=JnE8O0ED|@4-d()Mypk>rR$0~Ac2CXclT1KHaG&tzS#0r7b6q)u)9j`u$yvrn2 zIS+Nn%+N3t`p4(rz>^x^nE}ASP!4;6J@63X*oq5SiX>o~jwb1Nj9}A9B9j0k($3kL za4Z0ErR^RJh&@{Jpu%&gC^A%?u{OFZ1>A$&wzeUp$<#es5G% zF>ZbUezA%E0BtWc^2c7=aBXohGQm-*t|0kNjL^}AMDrq zd3J_DxwEtH)~1GA&nPkPbff0O!(}O@nVO-l8vGLC5eb>0rH^+fGlV2oIrbb)^xot! zWoE(3d#rx??UKIJ+OIi=>BQiC^o-Qa;4I-W}I*A<9Wk7V06L&zTXSaA0hA>H~!0L-Cjbhjp2`C zn2t9;lFQNnnx&wlN6QK|9b(Y2sHDVnAZU@HWDfiU!;Su^X znIY@PecO-Ewhs=b<*x)>h*^frO6A1JU8v)X3jnbGdKKevm_4)+(TeX|QSk%LEzdRV z*L#Mtpn2$NA0}VKoJvaOAwHw*vDsrKMa6ogT!(}}lV4ktEC6^EW-~0a-1t(Rd-4P% zO^PbKK^2z2F&W|^ZT_3${M9BZt(0pJrfV{%S znk|5>t_d%qVmV0@|O3{1`1lWu8iyYq^JVm=U*&Jp%vFol>XA>Yk6h5Gp| zu0EmUL7>Gnx6P>ZafdPAUUG)!=l*@>At?w&qf``h`JD9Sv4~x1gHUly5@q(&lSkd% zXNUX!acM()P59*As1QKmEfsqZjKGNvR>=_3bKG-7uWJuK0I`p5r~Na(s5A~eL``{Ua!<8TP^tf``w0mK*;@?`=k)Ilz*Ptey*#k4Odfqce$TL3E5S6 z?(tQmgCvH<>_qSj&RZ?GJc5%&AGg`U8h&^*3pjm*THe4Npsvaf$1l^3ep0u)Mq>(bhoRk(G^25u5RRaPMz? zluZHpyc4ucq$VVo#;CSTx4&Y7Hxkw->jwwVBie}?^=|X#&5&u+M@)z{k3-QQ9vC|I zvH}>2Dp5Q^(;g@w*TQswln}*(0t(hwoklP?;Et{3ml29W(^(%_s`PKuSv0+6Fn)?% zAj)$^_)Vh=YiUw$uC4(S&8&Dok>S*rOV7#q1MrN{4bM}~xjAdhE#tqbJE>UA+-<$=2O{@OroGKpu7d0YTb~)~8o8Go!;sq0LnHE;l zoe~epkE*vfFKCPACF^>1RErwFpqy~*7ixXN;eammq%T=FkmmLANj%kNoqFz5t{)pb zIPUUN-Qn*0tgy?R>uyqITw`0UL}gG3hv)y@gsQ|tzCg3JKY6#!;d-#Hh^hp|%l|Qz zBcCt&Ump5uhPHa)!NXiyM>^pIXCcgiv|pGSN% z5lu882nR7ptJ^-0l}7^MYsMy=H}c15O}jXvyzr==^QRbK74a}E)pY6@KonX7HYG5n zw~{azLypoAUCx~xaq%3elJW~1cfQER29)FUHn9rS&0AqVQ#C)LBy-8hqR#U|X|FVq z1N{wD6SUD%Ja|Y0^3@GRh#hPKM`g~(9o8qT&r{0_{|sSP6b;%|7h1$BJzRFEKDVGi z+Q8&2(1_xIH0*EYGZ#oZ&;VROCE&m=5a=J$-oJh=^Jn#UW3)U6(6IsbgEST2@U9&@ zHjJbwPJn8{>BZ;P037n%xkt#Ow8?9mIFDk1z7UQcVrxd5@-)CvY~b-ndryBDCjz`P za?O&i$WQ-f0$Zwdh^06)yRT=PWDZ8sz7R=8N@@ZhcV}k>M82PKKh_#j#7~)_JK~j{ zId>+l?}e3f>b8)$VbnJPs zk$E~NM22YiM>8@rMZh8W&)G|Jtw&6Wgaw|&1%6HLh?IOFP zDA4C;{mKE)F7?MHgcblA1?gfxFh&j)K}Sa5>WBpj`i#19K~y##R%p~lFO4<0wsz|f zj)c*Be1HUjdK~}zyW#ma+|&K%!Pi+ObPFZ`Mcf)XLrQmO3ijmqr0bv_W1(2sfnw1wJ?rsun3WAEK$1-Zi*`~f|QT;$y4Wnr^V{Jx#*yM zzy=70EyISR6kfU3hkqfoC1k9in$Ym#-n0&Jad1F_XP3L%c`tV8`5~lH@ZFz*vkb!$ z62*Khalio}WW9Nb@D2R(VJZPSXXTjyeit=g;ZNZBy~uzrWsazNAmhFt>JiGRSeN-X z@6=yIV`I0F0IX63obH>+8H3#`xLF~GF*a=kqUIHhNzi2Nq?8~MvMDZJFwKBF%@@fQ~bEQg+~ z8(@4D{rc$cV&8uiZ1m3Mk5szy`vvVf3p5V0uqNNQdS)VgeRC7DlSRHraKPWq)4Htw z*BSbW?BbM|zErn$=N-U8Nv}z`#$QWbyz+aLXq+AIZfl>6eIR(y#f8~uVECMpUd%X? zepR>Li<1GQ;^}8keXcs1H1!)DJ3|frr+MCYI9BZL>&^fUfCuRrZx@8p2+870Ee>nfUJc-x?~bnqDJ3s2 zU)w0`TKxkJ7v%rbt0{Y#6UJ6%128}tGMjIQBnoC}%FiXtL~n8rpczCd>k3z8S+-11 zPtW6poU9=@h2zJMcjlhY&E-`q#MvH-PSyGjxYNMY)WZ(*4zZGFD41UvgnNEx_l9pS z_nCd`EB7|tIHQg30?^#sWOc-pbv%qXZi7wGz5_T%!d&TLi?f{RvUa=RVJ-*$?jAS; z!8VX$yK9$^BVg1k2XRK?X@{2c@K6nh>_{NBjj|pJ6FIf}PW_mks6{oP&N`Z!ntGpD z!W+%9m*5~#&svOS8CwQ2gg5G7OS8e^;QjmgD7;2*NjV=->y}dfCD73s6?dEE`NO{=_aXu6{pgE#D^FIXc3{mnK%V zX7lEYn(=VWTOQHSa6GyZXd>4C1T%M*20>@h-p(QPY6hTj=jPRA+obKa>@PHH!(f6Q zi&94n1BzFgIU5M!0{ZOEk&*=5o`k#)FllWWpD4hspZY5yMJhIvw z>=0Q~w;jcuN7;JiDo#A~nwmGkb6wR3dc+Jpf$&^K-6r_<&)&d~Fo+?dG`)sxTKDkb zFTfk5d_0f~Y_55W*_F`wT2Aor@x83|7Hk!ab?L=bO?$0{t$FC4F)ER(4Jnktw4vBu zkhZ1<1`M5_c%269R|!YP#m!#d5+)Frl!) z8H|N(P@~r>K=N}0=qzrvod@^CUPkwXZGp9hXn-c6H)&o?ahVj3yX?m7emgQFBjY*0 zLCGtqT$;~TFvx(3wrpv_Y$8DVhQkD84XDi`K506`9_ylkA9zZwT<3>#u=7eYB0Fv9 zp8KJ{;%V{$a@N)sJNgL^H7hswclinc+anLJp%n&#l2RCsTfJ;3?v|~s}eRf_sMg)vmfS+#MxG`noN{Fd2vf??|nT=ZhSKa3P z{eRc(3e;^}K-eLB6O-;gC+g>)UpJ>R_iDL0UtNq;bd;LQzjG%>#b;8~yKli*>(Tc2 z{{wsYY}jh%@AG9*@v-N5kNzl5m3Ll)7pW748CP6GB+pJCW>T=e7n}3^4)2FDt-~Ve zUf&qYV#p2wQ*D-O+Q)3&S-+`8iRhlnIJPRL&&li46L$OCeIc$=ru&SH&e)zbSt+f^ z&bW9!l<_U?N}bTyzsQHq=zBB%W?s=dzw5*#vP&tYdrP6nrOQE%Tl)~NKsaU;`d@xk z@R`aF5-*1v)0#eHEgSW_Vou|0S%(T%^fwp^6_pyF!OP1PIcFcI#M;V6Q2=k|;9Om= z+Vuj+C^0*ezxAO-fc&7efEf)OI<+5s!qc>Nf`tfyjbp zp}-Wv<~?X-wNw)Ih%9;(LGY^3tPpw5We3|_H|TE`(ZNX9xw!&0zQiPJ2JI$ZRBW+# za(uj~tEX3YIUNjJL@IJ2yw4#VTI5x$r-Y}850k#-%l>|gvga4BV;_J);OCDY?fZix z3|6XpkrkD6bi@VRmdnJJ`${2})N0}_bh@l^kz+=~IC>ZqXlB^qIJ2XMJ{?%hXF`<>n%z+M(nCH?b|@I=Wjc@faDehM*nt{0!hZAGt= z!(|1U+9mfHW_GE4KA3fn)^D+`uwypd3ky_esP-FDd&zR4eqNG$!!oB?Ngcc})>12! zOyWX#b{`(D$PzffuaBBR{o9?8kO0N=fINDj^3t=0^R(xRL<|)f(c{rBqv=t!Zx) zPHTJla-VruJv4-@Mg_fVY0cYc=fe$7Cneq1-{tCBFy#%yEn_tTT&`6Kc|?+aLG~I+ z5`M#<(DE4#nxbl%IY3=jcJ@U50{9Np4?kZKG)fHZVLu`Us22)>U-G6wvoRH2rJPJdA zup+h5GGM88@dD&%Pyh$8L(Qys%pGw;0lTP!mT;S4+Ss%9LxnCOB{{KhxOgo}FSA_a z`6z6d)Gd>SCZCkDqUy$tJRrxB$(f>ho$3bJg{STrm z{BV|yUYJzhqi?_3 zbx)B<%WI*Mo!8D;`X8_tQN3`_HCeNgQ)rt*gL2%$eU7hee!8qqPdh$;ipV|l`T*@T zxGYTgau1zV?6oANrA|1e2)A|}szG1+51`BP_Q|d_FRj#b?b;vC;w408h0#cbDM#=I zo;_V#`+jsh-plnhsd8siTkWdPfh8O+{{RZJ|FT*t@5eg@yw-Gmy=liiY-axd_NM>X z!tQ%lgeqr)xsS+`5jdT0Gl8vM+={0=G9_kaA(}8%GL}`@cgJb%k9ph)m;{PW!9Llw zmnGGzy0$ibi>}R{$ksiP-GZ<^NN5Md^f=TAWElaJ7v+-^ z{jikR_XA(CrmJBjhdQxsQ6N8ok^s4Sg!K}7RhxzY50UxOjJv0n&=9e!(fy7d)d_re z7MGK9vALs!66HRxHs$5fa`&^z$-G<5(l16Bcx|+pAbnPly%&8CxKX6TFU*xnLS^uE z$s5%5-MdFsq7`6H#y^>>3Hc9KO{sXYfoxRio{b+vBCY*7Ke&|%!6bk}hrh_0bI$Q%J0Ul#O0U+oF6x z(85+66(ot{M=|XKmqW>MR36Xxjgq83!0}#KE4Q}41y>WSK zJti$kpRPO~KSCsRW8hwSpzhF!TKh~P8XaZNmAaHok+L0t7}qZ>gII(7O2I<&tbiW4 z7WU9>chxj52n z!&3fFViT^EloZ1niTW7p^K0Y9A@-mPZ^vE=UGK9Z%T~7b?;Ly0pWr2<;VSrMi?FzO zWfcK0^A+i>r8CJo8ChGWpGl)wZ$9>g#|V)@&>L<4UQyb3z=vf<4-gaj`Ao0wQga>v z4shP2hEk!EH;6_|Ct;8N;eMu%D)}fvk8;fq&kDh zgQZfwL$j1_vr)eV-EcD#Ro4-z8&KwTym%oV#G=2^VFxA92WW|fRlWeSF1=2$;w;sE zQvmP)qPT7AsdtMPtb0r+`H4?7F_F8)5|9oXe^`7>>^>lMmj3M*)x8Ubu1X;iq4@A2 z;G{sHXzLis$!2zT7tTbkv~C3w0c;tC3kW^hGIcdIUGvg6E*zYknB2KJIk6IcLi3O; zG@qR{>Rv+>?u#^Lsfes?t=q|8b6sX%D39%p+8Vsfnq9~xmZ4A68?KQ0#4dd>c8Jt@ zC+6bf4zbxk1NwP__sZqT~rkIJYVefkR+lEv#8ibuv7XF%E6kDIqR`8uyv6MhbhBGPzw=#qm zUTH|1QCxLm*PcC@$IZ~y)3jlzMPe20)&MZ7dgT2o)&c9UeFzvBQ-oKO5YUHHOTQ$y zI``qtm6B7IYpW0ae!zSH1dh$fvtfiV;Oh;_qbTu7$RafHGv-=`HT^)IC5EU+2&SsJ zatdda&U*z4)RoXqrY4-mIu~Mn@HdGz{J1E8=<0N|v_b$e5g*%|8z8vq@9=P2Pi=+T zfmci&f^W&1%nS`Q49K3Mhi!rMbsP9#DaCaUTU(2Yiz6)wo%YBjeIlxUu`Xj8-4t3~ zB2&&+dLvpF_Kzn8&2JY$ri46EjIZxLeLAu9HyqOTSk3Hh;bH?tpoY!`uDpi%6vUmX zT@_Qob=YU0fDb#|^_W7qR-xuXuQ+fSYjyF5zoPZ7>E~V_K$TvOxMP?C@HHian(@V? z_(}jCmp|x7>Pa#Nzyls0k!I5i3kXnSPs?L}{H zyY!daq67(B5(nGDV$oN!%zShLu7I(g`e=RFxlc&iL$=8>KsT|nh6ZzlZ{&Ew{=>lE z*Lh9nRn}=2ZlP8i$`%H{-FT)jvQz{&nN#ST7 z9c{z`qz}O)4q%7ovJKaq?eIBxrkQ?*;NU#2PmXD}cjqBC&W{*A z01At3M3L!5KMSAMhseyT zbA`e46PzeJ^c}K8=8y3yv)0Aq>VWA6PVxvL_7UFvZP=HgeV}{AXc68f*h;vA@)3h^ z_wEvAEpMwb3+=3X`lUiMdr!{1;VfM%@J9M{4Y75Ne!p-vtd2%K&KgI?o{x??xRmDN zUA1~Wf%gS{#+q#3+M72$SIkucL7NGmdUEY0x`0EzzTTBRy}i6VJk~xVji5TvPprt@ z3d%sf@Q@N_QIH_a#Xuo_W-t2(0|K1FXJ6~@-oOIYgNHrKN)5&TzFC|bZGJbBetu>v zaz_-?<I(^_8e1U@jj$6s(N|OD{V{czJ+y=&N_Gg&y|xAwT7EEo*@_V zN95q*D5v?y(MbXyppD<=Ye|&h{|6s%_?7dZNE$_?xupd(P#ro@)FDVXV>A5>fZ)4V zR$7;(+Nqq^$uBC>Kb$^*A6=iojXu1hatXg3Sfc6m1;?AxvtI2JB zn7g@0f5VqtWOSqU*E|pi{_T?{Ov_E-fb72MJq6J3LU#8RH0gkn#`pA}nYGCCeOG}+ zbhAvT(<ZE+^)KHD-5DU1~~NI;zc?*QL_&Bw2SX! zfUD6_QAGFJkw;0u+<>jSmt1lIw}Ayoz5N{GN0iHoBRWX@C}!!{OCDUyvs5+x)Gp(sN%kLUXKJkR<4&;Oi0&*y!Hm%YEkeXo11 zYhBm1CKrEvIeKgRQ7bEvw{~4+JpC&G)wAy7==Us`Srab9ukVKS3u8}DTePU6=to`* z479~RoiLp!QcMk#+~Tjim0g(ER78Y^w3Ktd9w$2WH5cH^!FS96kK>lQWdaf7s~nie zYh?@;5Gm##;>f><6!$i|yus-8)I9lSMrcp2@{O^@cc5w>+2n-m2_<{(L*%6Z6FFmh zWT;Lz542`4Igqtc*70o0VbZVsu&JP#p2 z2^uBFC|GA^XM<~Gq-aFfS~vjzYl>zNbbsqssX0f+raxsCpH=he*9vVhx5ey)pLT77 zx;R}d%b&=RBC=4QwMF6Da=Ag!b6X4d?B#C-!byOms5ChCX>Z?5m=7L*OU*F>kPqA_ zcZ?(oHyD#y7gNWTXqH%C1q(XBR1t7!=n${zmL*?AHhT2&tP@KjRPr%*cI)ZAL0p+n zF-VSVdnd>vr-Xkv6Bnt`*W#@9Q)%gRxppuO4=~K0+cvQQ8ackB%N@RH5p{)t4zP~xDfUk7HbN2Y_Xzfui=lQ&Gi7_wmT>dK=@k$H0BAgI5y(^ zRq9M0<#9$NynqtNFj!CWr(O3;9_GOvQ}D=pONoj&kW5CCk9q+MO{?e=dOTX90wWJB z6VPXzWMm;l-Mx@XLrKVW{URnb&(!Yrp8~>`ohO^Ptme|Cm%xPZ40IR!dU{TLelNZl zi>z39RxojANuJEmpQoTbcL&q&ON&b4Og@>IB7ME^y|<4~UOK_yPP&Qq z`Le4?QV?U*KmI8FJ4~M`FnW1Fnf~2<;cxFSB`SC!x`y{#q@(Gg#gl87P-Ls~e3|Z3 zu9BCVio)-%%}Y3yMvarqrJmrj(iaJVRw*w5rMm-OYn;0Fz6 znq*vHzU`-F{PHH+{~S$>Z~UC#<5k;g{k%8-a-6G$jq~S5QH53OQTP~GTpB>iuj8c+ zPW0$&?qu@QCr?nj?&goItegc0ZB#y`yOQ~5b43N8R?A;tXL%~)#6fObbC#pT5p|!r zEqq(F$MKBSi65@8yxcOn^)?z`rx(oD%&pK&-Nx%+>tL%wFK18$5C0aqGF6pgH$xm& zPI~z)9}{#P-o=`GR0K#UnLY=@9-j7DM+U+`&LH^R{*B&oL(96MNvhlFi>JO;NhxJp zzIRqiY)ni$D8I-=4-EDqkV1e8NYcAALk-=;Yt_}1HETc^YlaXM+X+rVTF((@70TW= zf@OsO)4tLciZjc%DU{zAlai>}P9`P^3=i0nUMVh?50ETGLtaZy?+~7cud`EfC$i~f zK9UCTc3iGo6{U%E6P%O$m&8!8k8`gs@4E!aBw|AD%9}TDzG-m{yN;d%(({fLI5>g4 zxbfUV8whD{i*wccrm-<+n41GzfWR|sO@Z)sc<8u#wnK^e`%B}Wp1Z8*egQ>kL&843 zOBn|(jGvcydV6A$e6CDZZ0i_UC{V|Rnb0jto&ZV0$f-6NKhS~y%C=C4^ETWT@2+3c@v*dTq};cGxTVCJ3ESS{YixCT=Jeh zdxV#62O$uxE8*15ke`7900vB5Ndo+NaohT)xj4(3E?%lek%E#I(?-cEDk`$F69@~r z=gXCm;{lw$QB&h$(}L`^?av*T(recU(H^v2l3N2+#|KeKVGiiS703MjF}+1CC7=3s zYU%_)*Px(AxXGZy1Qu7X*@keSw;&@T9#6q@wB#(#bWohp?RXx6xb|UT;Wj8Qy3ckF zk55is!i2(9jIBJN`P?H4eA}SFK&j2g&TfR!{yWrx9d{QXT+WZ5UM&&_r&g4w2r0Zv2 z-8_*FpCADSzrq~7TLA&BeLjlFIB@D78fa79pk<3m)A>c-A3CRo>J~vmfzK`9=23K| zk;-N5IDHqLUAUEfima)rNlYYscS?PgHe7(e8Z58J(WI{_K}?0OC(x(Hp^7bd7pRX( ztD%26Fq!>4l?K%|o)a(!wu}4{64S3=FSQ+I(o6f|3=J~qcJC|GT8D=lkig(T49|Ir zVa)Az;#4(!4%)n?_jn55KEM7ZlxZm`ToIoGpa=gC;PIptApi#8@#ce)9{)A*C%Cn$ z2k-Mdo3T*B>O@7`5HPp$Z6uz?OX%+iEe!PJ`;M8Jn(~W_LxQx?R7#o?RR{Ddue%*7 znC=z&H35WiqU)D9(1EIvG(3WNve?Q5HQ@B0-!;-YkR>582`z+B|aoYtssivp0gMaL6eG^$o!xsx%UbT7FV& z?EU-B7TITDkwwYhTgB$?vs-2LS%|4YM$|DOY_GcWmU=$H#ekvaelTu1OVY)Q`1~hO z5l!AF!B&S^Xs5Y0cA%wHtc0Ybj`nNsE|ip1J4k(`y)E^41Yrc11PCUZpcE2q^x_VH zPt0(r)=|~$SJMHb1vm{HtH&o-BZ>V5f(z9P>Mxx;cl|;2A~in6GYSa~{yg_;?M*U< z0ur~JTL#B=-Ql;}@vKVk?AL~H4*4N+GnGw$EX~ZSL0Lutx0J$i5I6{kh%B`x2siF< zhlKyK-j6UaVlWS+8*Co3PGFS{Ui_N+||hBIDz?w-?5PNTS25b~+-dRbXHhr1}jMSCt2rk8`esxiJ0?+jon z5b8uDh&6#72(=8aKqX!dk_a#sH=r*-IMR)qOYVaS zD(5CBQTb8OAml9L=1!5k1MNxqzB?i-g)T@VH33T@QPD^d;D)yWpB<*io*HZ6{HjTk zmmgA>esnoT9L+AcZ!j04P_F}K%tA%K3R>B?zFHZPIM|4?eu!z`3s((*&T>x@!9xx` zV^JnRYS%QEx z)-T(3bkhNm;JEv>p8M9^rn0Q%3YF2MTOo ztu_AmO_jyxZ|moOrx%7z->Sti28i{}_E^r+PGyf*EFx0U=Y;r4otB<1?C%z$|VFj&TUet3eQT>3z@DI12;~a*2 z^$u=vycc@yn(ClM;6Wvun_?&b>;m=6#a%=SP2}SnRt%1tj6VGJ@WP*z3%*g^NjiN` zp$vkGll1H}K?1#-~==hc92Or>#PBL+k-! z+8hd;8C1860Cd@EHwoh!BKeD0l|^o&InOdUq#_{_oudeKbs==OS+s2E4#ks~eRshSo89 zq1&*bkqDXOXjGm0brRk+w@#(#lTUsai<;hK1(zh`CKZ|E^B5^($DSz!Z$Ln32Bjy^ ztwvJ@^uT*_ov4z9vUp$JN3-|=;w1r;q7cGto;{$+jLPDk)4v%LgJ%jpqJKYW+k=e& z{tD-&fvzqu9E8wS;EstaCmeyDwviQt^>d${cILNKb_yeS$$DfX^TR;~fFL^8?d%TLmEBsy?_V{pT1cgQI%~)j zA5IQse55kx(G&3DSb;)zT`n4Aff!URm^zH8GYFUi*^->hdz`i?>cWL8ilzyT$mrFg zyFYdSW+;p`H|K9ezib`PaYFO}`XuU3WD^0H5rOFkaH^AT?$92a^4ULu7^N#~)f1*-X%|LcR1_EYV=@%dFjOTl)D6FVGyQY& zty>yV$EmM!_ri8UFy+BB2+JU`MX87YhJ60eSdN;iY9J!0_EL*R&UxN4ka@x!9_sFE z?dT{)?uCI57%$WeBoT&T8^GVe^KFXQzMKWeITPn07WQP%zXfw4ti~HiXV9J z;1ImFfa1b$9(L%S8E5SYm)u$>RQ6np7aUz&SYkQ~g=(1O>G(CFOOJtDWRClRRWf;_ z0uXR=8thboMv^Wxzy6MSs+c>tZc{WD*{?9Vxf*;`(+Eu;zL{b}uUqomIsv?AQ3$rV z?)&;+3{2=;Zm6a$s|>SkZh1?OzwvrrO#?F&77GT+sE+Ym;Y{$`8nYk1>X>27%3yUy z;88#Y*WG&Zk)=7{m(T?xk+epox{;l0)kf$Iqg2S+9&!@>c5j*rM4!6U^rU}%_&z%$NX+o+G8ZVhAA zodnRTqQJ84jy(&PupITjQe1XM*4t+hB);$tXKSj6h+&?|OQW#I>RMSL-5T5iQW$A0 z;3Xed3>+QlUALtGzOC=-fzw#8VA2B_0t&x>etSVmiXdHCuA&lSm(YZiU35b$2GSle zeFbWGNr@s|5^x6hfdDs544Ig~V9dL?GZZ!&kVbA4iId9xY?^jxH<#|}f$nZ^Jds}U zKY$mp)*>cbKYsj3GLhCFQV%D=@n;8?69PpAmKpqudlRqCYmt(rKm~<2YYo$q~P^V}RnR)}ODEZ$t>_XZe75A4}FY{d|=(M(wsN+>Q zfEOFvD(LZ&^?IfX=|QHXNTL~;$ntVqv%(!qfxu&&`EzVqY(A*qlXFroUtY^ug^|v^ zs7b)rjE;=V*%tH}97RCoNbctoWZmLd{d4+;d4#9jtrA-KLm&rAy4fF5<=lC2 ztbWr-s|>^XuZa0HzThw6NJmD+G6hIloVD zyFp9_x)$4sjii07Z5=FTWh+A6hKNJijX0Dg#l<<>1z!$uJyj`^fvR1gTscpsX0>tH zxmAVpFFEz*eos97({5d-{kBc|o%=|~SjS;1jW+th{#?<6%GQ?~RVpR?$%fQ9{g&EF zjoLo1Vzna&B`xpmjfJNo!s(h1eJnx=-r?1W4||hM#DL%rG@UL@+Noh zXz#OU6TOE?FtM4xVd=j#S-Hly3wLhSa|!EPO*B2~DN2hfoAUf^32w~PT1I(Im_2EskzR7+$8nQxXd z34DxLf!q-SJrSCv2Amo&EG^>=n)@80IggO*3m}Dp-_i_JlQ8_l065ZAFPC`~ zaquGXc-++mYZp+ubc3u99B8bsmx`CQAT2yVF7F+(nIEApQEV6(#FYla3Q7)-HTlAY z3)kbe6eoh3c`t6V{yWGU0FXORs~bC9EmsCC9aiR8b{39e1y>8FC^^_wTn*!fALbhW zP|B}NZ<+zmJ}jGQ*-uiiuu0U9&(h(hKTExnd43)f$e>%GPKa2fvgEn3vc1`)yK|(> zz{cNfLvqotoLYj4aBy4mmkVJ89jMN_}@Oib?Wgo}PO74`l7rR>sZiTjKNTL!ue6)U=_;C4!q}m-yKaq3K znVGz&&(B|5Oi`bnLCGl)sfbOw_v1UuO5TwWr($gqjguOcV)5;`*7G1C?bk7ZQen5^ zcTU|D>Y6-}JeMv72dy(VS_v}*FOkG;gvDZ%V}w+&y6D+e>t}-Y$mZIT(S7L4(_uF; zOzH-IuI*_h#+|fft=%vivf-5PhC=$4DisBVQ2OJ0lJ-uwTP<`wEHn&Me2a4f{wz%V z883sM;&|ex4c;^#T5WE1_54?rT~818|KqT=MWAqg3~^^tM7rND?&AG>#>PPF5|s&$ z?D2lHBrJ-yv>=Q%tMjXGXqe~<^RRBR#n4*$o3|i{d4F3MiK`pNDv(o<18R2_@czN@ zt%rat77x+hF(IWoA&AM)RpPM584a~+5(u<&;EvG^_(_aN^EQ4NgDoO1fBm!EbIkI2jj2BaD(N~TWWw8viuZXYYLGuj)A zY9Ep)4Ge}Be0FdWt@3-Px6@u6ssv!TUU&F7^7L}QOJD>P+(k34*QobRIB2n^wzlFr z4>3Zq@YmtW`41oVer@xy55caYNviSgLpVYsYVyd`j^2zNz3fyZCz;z4Zx z@d}GyMX1LK(-`L%#Qor;sH+SEi1o$U9mc`}gu76($pvJzvuGM5BT*f?OE|o^+AI&F z6831Z>lo$PRtsPXS%XyHK5bf>79n4iZZ zv>vWSzj~`2tz>pKg;hYvP#YjZ#`tT1Vvmb~H+EJmeEb;cLOXmo>(Zr4)fBXDZW#ba zrgO~B5c+le@^~#t25MT91Vy$Qo4uapB`UqGIU?M%Bqi^qf&IgHt3AJ)O!t;Z0vUldo%{miqGG-3iVPG z?vWEV@$@Yw`TvbZg$|>~uonJ{MiyVci=^nEeE$!DA3YD{w<}_9_2r~0QAcX~oQu`G z&7b0gk+!|Ie}AqJn4Z29K$rKf<_DxzDQ?Ku&kz37C3TqF zOLs0{qn0sBu3kOgNvxuXOXvotpf@os>s*y_(h>}WDD9aFu$Oa&8mE2uX1B?RpN1fcpptgg*LXn-uv_DP1T_szP z&>Nb10evij1nH_s#{2^a(@DHql!8Un?$2MRAg3YNZBst3v-=NJN~vHbhwBTS)>pG z1;z4y;%#Z1>XBO|%Do2p?o zWJi)vLO#W>wt{)S{XQj!WOH;Y$zYv^hRyNie?T2;G8(mtdJ0ptcC!LdJG|95rsjGP zPw>x=xgF0=^CjsYg9B3(P3>}bfv|$&+O=m|9M5F48=4tLEkZIjA1=2$Be$jEPb2zp zOHwO9r*_a;wVe-&&uYe#(RV?BvZz7Npk$+7uqd^N`9^m4_E!CQpQ5gH4rsEA)X#uWG~BoU=6ipc!?bBI;JV zj|z3^hn3@d3vM6`F_0GB<@qNqlI21qx0pGu)fXgW@;b&>s>w){<58}?TlO1+y98m# zj3e%E9BTMtIsA9#iuAye@C%d769+ zN3TS$i1E!0AdlHu=h%6aJr%oE0s%Hp{-ZfqOZ4kx@QU0Vv|UE}pYVA}`$($h2!en2{hP+=4cMJ1|obL?ViWqod&iO0!?<~ET zsr*P4G33E@zk>B9=*{`~%kcRujcDtJK!i={+s6PTX!B6QFl_vB-bsA}gP5F`>{~Ea zH48(X(<~EBidZJ?(s}mMTLo9GdQ85I{%zoPo`ZgPXN)b9aJlI``W464h*j0gOQi{0 zYcUp^+zwHA*h0YZK&*ptDm|DN5ysmefLnZPbwXA{+pe7yBZ) z0}%Y|MkJJAb(EN$pVo>{Byo%jRh=pAHIqRyGB}JvhzQm)G%OKQd@4oT>%_}7&N;@PZz=}g_LXI^Ag9vcY?OtGcv=0II88~%{ixlh1 z`hySnOiN)7i3($0@;L5uvabCDXtAa@y1KgNAw}~68P4tMGwiXq?rSNO@N*Nut~hS1 zu3s;>;CBu>38!J?&eHMgsr+bf(K3YFZ~BUyj6{i=KYdMFiTe>f%%b_WjhSZzGxgC& z=^tVA`7!bI@LYRYc0{z);U!U+4^E>gGZJB!hlUsdag?mhk`uDsVOmki>1j4Pe&Ya{ zD%f~n`V`m%YTM7Zg&%jNg`+FG&or&JD!EeYYaj!~Jh}Z%4*}JczGp82E&!zUbsvwuPgXud z5zXVUeF1p@M*-cMkBU%2b%-5~7B?=N;XI;t@}nD+U6D|RuyTtiDCJFzjV)jW(jIbg zaWT{ASFc`9PG(ecc|(-L@KWwaKL)#@N=c~tYA%`!Xy=&!@;iWOhg(tzy-8Gv?w};2 z?lUi&wv$s{j#)j6wRJy?P4@53Pot-gjgICy|0dG;@zbB*+tw}C`8J)^&4(GCW5yjVJ2 zoe1prTU(JV?s>k&)y?e|e4GpS@2>Q+gBu%xoZJAP5$=W*S}4W449S-Zo<@na;yHC0 z7UFTBa2xIMP0d24wroH@-r*;hcne?C7MuZQ#*vIy9o4*_)OLOht0ydoZGW zV>4_aIHC87%y6O6T3ucYpeH~w7v(~~XA~{&%ojXNW?XNkrBSB4ii$%U26DuTZ6{Oh zg9yIq+Ksv8VDrcmgrEz86R?oj=Ic zS_{ClETHya{_Y9~KvV${mCUvXktIX7kE6qE$FpiFy!c@7ft)JLB-ipG^NFKig=qgB zuOXJe1g`2IaE27^n}A2G9}-;C%3zFvS=v<@>uMZEiuX0~@-U( zt82%+wta&+nZaMsh0zbHfTn@rLEJlaRyuh3OC(6r{a7$+}f3DW4%WO3Y zB4JX}a)#pWe0iC-P*ZX@A%H%2!aVTxU#52wsKHU*2( z;GbWso;;H~E3Ff)dR|yB|FCw_r=9zfF_GPW3My& zI;bfZ1`2st`QQ97%4}3EAkaXIw0ReUrT(Us|jGhnr~!x)Z(j@Q^(qgn(9!$JbT4Uw~g( zV6{PYZmuInfGD@DgFo$Wh%}(BkJ{;$k7(M*M3?(=*B{aJPF0k~BIo`13ax)*X~D+Z z=KQx#Dxmb~~)6BxhzSTF)YZpXh>MxMoNbU6P@!q{PH)(D`Gj>^;2%Sr1k;dcG@R`r&j- z?2`}DHrTyrt>gd+6bdqhv_mE)UD!`R9+tIR#llh^vZiqte$aK;>IxuY0rR)K?8woh zdmfqF9$y5w(oM023N)wIN#X$-Yb621$S4I*1tp~y7_A9>9aR^COG5+F#&=YTE6Ur! zPax`9pK$`RmZ|E*EcoX*j&rbQt{7@C^CxPn8xgq#ScO26QS)UwU4obz=>Eg5F4v$% zv8D>H;z%^Mh<0Y>GFd8!f=Hc!FqK-96&2ebJUC;3I$6FLB*2(fXIh*B>Kom0F))Is zYnOaLI)gsmx}W6bETiw=OD$iX*Ri=6M+}}M6eM=`_BY*n7|_&#Lx9rBMLwE2zozCG zz8xtFT*2|j-`jftgXaXP;)DL}7(b!&LX`^~HFQJcKnnQy2KXfRdCE)gqjvC6i2a5u zU6K3;?nx6}hu(y%sjF9*7bi3{gg^|A2Y+m`Q`~DJ1Vl72!T9DjJ~RWnABdOQs~4U5 z$ilw^n#J9tr3_>c{7loGrI(_ZI%IZZ>Im?MKfiw*#hH<5t+!{-RU9NpIljYZ!Hnjf zLX_O_(?`eMS%cdRV+-cymL(U3-y1dF67*SlNFN7p>F$Uk7>4aK-}{y%a+df7!bbf? z;d`KFho$#im+OBoE0g^FD|}Gdnh7D^9d9jNiu?bwUsPb zWdm4Xy>ko4q*(!cMgX64EnD`+bma=OoXx#DhDJuj5M4|c{hBXm3uA96)KZTNsS=?* z(N{%TxwnTsntlia7cZXJ4h>6gFo^bjF>XxFVzt>9gElTplft@T=5I+x; z@W^VdLkzD0S7NCJVZiUUwuzF{fsLRE#@pA*DWGph25St)c;K!fTrhm)yNgySKRSoW zf`q>2$bf2~JS0Z(a0nI)Xo48Z z7i*QdryXX8%I*Sw+PlA@qGASUOs3w7aVsobgDM-s-#Bm+G)+gq%7jXQzr+v|!?Hf& zQs+IOGaDV{ndqIphEBq>O)C@0w)^*=g2)yx#MG*~7j0v#w$3+)g@1E_8x|I@5-QZ- z;9&TnbzRf7H8V2{4hb3UX+uo|oR(#ia3=BMAk9Ox2lpjvKzS!w;5b+=%F5?jhaO?s z2(P&i#+_PFR0J<`&V@Q@4n}vkD*Ev24(aVLL4Dtm&uxEGQ}{&=N6G%rR6_R17QE@jZ6TQQ%T3{M#UrsSp$#@%Jwj{KS^kOi$G85|Az2E|E0HYcH4uY((rzaqbV?sucOnF#K4l)O5M73K zsr*lRdOj>J{(u{CbEmq+UzpN7CFsBw3yo*P0|>Gl$vYPBTX7I5<#u5cGs$7aY5zY~ zQo<%q{^Py95U;kTJqzzx$MpQB4WIg_f!e>^spbS-euR425j*QhJCBs7Ho6pnlNgrp z4uKoC#dOe7Kzt;I{=l66#G_iyWy_X5Hx>mzfa_Xz{&hqs zT-cXM@Rcy3APvTJ)lb@Ckp`dz##+}ycX#Vl6eG>@J)}zY;nth zs2OmLNDf`lN1)Mwep$l)k-;EHSt!3}Kt>1k5n9BGo>f^OMWF2iIVfD<#(^pTdIzy` zJphmO>&w8%0=NpY*jDe6dnkPUY}{O3Cy{D`54VVaN6BW8>I8Tns<`25nh{PCpzS)T z8(0%;lmQLXceoXJFK-@=<6CZNt*c6D{;kV-AMk8SwjBP!G zSA%LAL!KVCw?iWa+A^~C$vTY?PZ{04j)WimD42-? zJn}(S3u9gU8Ces^vnzxcQv&`G96$gXgKCEpg?O^17F9?kYikMRB%$BR&d$q|ewAJd zX#(Vq_yvFkUvZk_@Yna!hTQ4IBCPXTHlsZZ+Ma3yRBfP%!!1VZY=kSDK zkuwZA0tjRQ0bh__&wDDfHOu1c#1!c*e}_%Nk+A6GaX6glh>)M*CNZhe%%AaUGT7wc*(PfdfD1OM>C8dJOM3-km2XAAN>Gs zAkxJegb65!zKJfDyyGex*RRK_qI#%b0Ck)yat!nd=Rdo4uEyg>7(s!8RT=^^rpsuO z%ZQ_g#|t1=APE7YSNilDbdf-;+8TrE%gJDUK;np}1JckT7Z-FH0rum1@svU^I-yg? zvj;5$RHgY9AIRNa0fCuY8OO2m`x93X@TI4$vpS` zzQRryTM5SdA8=jRxFEP;C7?+IHg74e0+rkuw~2$1_X&zxQ!Ge?PvI)r^4X0aOLh3> z(aRqn6D*gcD?e&9jW0jOt`S*@ZkC<&2qdFVT z6AHL~n8Ixh{%ZO;x1?kW4;Zcp?OreLb`Lqj-VLZB#*^g?`Cv8_G~a>25`*>|1b8!{3 zu*o^)aLdthH*kxQL|vZNITsr{4J~_$REx6@&MW#Ixqn?rW0EAOAdExzG0yk>#}BNa zY|$Vg%u2cjm#Ml4{QFa{o^3pA5lKX!3HNG#9$u|L!FU_CiQzvtIjV|DlSJY`8O1O{ z_8k?-lu_bjDLp#h&UV*sPTE2 z#Y(-onDR=zomJn0#rO!zy5vFKw2_BeRv{y1xdha7Sn?OPX!wq|;S{sCv6*)kAimwZ zk>l?*{Cg?*Tgf$q8)8u*5v^v2*abUo=FOW27c32ZfDEBqs`={-a0B!NV=iuxW?Q`h zv1u46AiDX_BLM0k%=SxMgz(G^sThJx$4c}J&0q++B89mu|rsJHPnKDk}?7!rYv!alN`4oiox+TPPM{5Sp3=a>QmxumHr_<13JZm)VFJ z2z~l6N?a}`rXb%0Y%<{c$0^u{J93&3pX#=$Cawel589L-9D6v|WR!%ij^Gl+cy#7T zyjPOIb$iy;WimU0AWAKhry&=xuXf@5M99cIo|U%7hh*JDfGc5#RX9r-LtIo8eEB_f z5eU(*TZtPOWgRTKgMf~t;O#$;0pH8Pg@YN#Hijqj`(inC!9Ja2W{jUVr^2yztHKm) zn~)uFc;dkwA#8F`Eg%tiFg^~!Og`1F<|slKVTZ%7 z$e3~1T)0bkFQL29Zkz{w-)n4E%>NF~Y|+GVJA`_Cs0o!lv}E&6 ze1G4ZK9fq3KwK*}7VZ)0l$Mpk{-!8mEy#^LvKEWiMb{i9TkmV2Zv^O#T|YAj^NG3$ zq{90^U_SKOof(Hj;mVJTi_joyALS9e?LT8^W`pU`ul$J>B7*`AUG1IQX6NS4zx;2- zoLl1lyqeJ1N%yFunIj=6cmM}z3sU)0mNcUln(trzKVq)qQU!~|=6^LvSUJUFP9ceV#fi@SOI+)ie5MEY=vVY(9 z1#Ic=UN~5r1ApnsifFP>#yRB&KoD64lnG&3pww&!`R1b)E`N6v>zBCy-#X8T?F9E> zJOPZp_?6qTL=O)5pt`JEja(DiRJ~Y4leYU`dnH(}u>xBUYX}#QX0%utXPE%$No+2Nk+6J0xX<=*oJy&hL!G zR$a0HhI_-<&-+MzXdN5@w6(*Bs5&~$h-!=fyj~$#D2u?%GN2nP7515;LI2$ea|?qZ zL!lgor&e!4XlN)PbFPh_*{~)QBFXK};`D!!!A zi$n?%3uLD-(eB1B#&o?6DC-ebkBWHIG`OMrID&3`l5q9TmeR zT4?=0;{6DuVfwRYk+UN;Uwi-BYE4bsS$)W8duL$0&&6qXu8HF^Vl{F;>sd$ejZdf{ z-4FVF?xg9DQbbwYq6+d$OdJJ$>n>JzhT1{8JSL(8^7XO*Z&z4$zkadA*cmbk^gq*o zKS$=hGQNqQr3%#<4hg^lZ7a7zcL+`=&I#RZJ7i^Pa3MkZ>iYm$5ZDWOyL6%+Aexr2 zLzra=QPxMqS)3HoXdv|31hY_03k%i$-6g_Om?r^n4!RS6s3QS164*dK{!7>89hZ+j z{r7EJ(9j-2x|g)g%*KY8%7QzfWTydzIVZmU)_Pu6%pb#yiyKiVum!NucJ zMuvt+)X?Yqbzpf&#|&mgJNQ+083I%jsx@)N&1mP8`gXSwD4&Jc|2OgoZ&bv z@tF|IZS=kK_i<3;;S_ E3*vLeXaE2J literal 72981 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 z%0D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 delta 143 zcmeBYoXx1%8Q|y6%O%Cdz`(%k>ERLtq(N+UMrI(%o#dx5QBgFNG0EHAg`tC0)&nTW zS>O>_43rZFVMc~ob0k3OOFVsD+3)g*iYci$M@~8i6q5FIaSY+Oo*Z%NK*7pJ$32aT i3mX+@GPdk9XJD{)VqL>2KKBVw8H1;*pUXO@geCxzP|eXFB9{BWj3~blWy?xux>nGZY6rY@<70y0~cPfrk$zWCw?j+ pA>oB*Qo@h_|Nq}F{{O$8fx#j}Rq2Gqe|Dhp44$rjF6*2UngAGKHyZ!| delta 143 zcmbQnIGa(iGr-TCmrII^fq{Y7)59eQNQ2lMjLbmtm&u>66BR{M8I!!-T^Kr8Wj%m` zoCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#E{C*;sL10O_R~NiX-^l&5RU7~JFXqraILZN lKZA24vvVP{$X|N~hPdAx(OarLHvyF~c)I$ztaD0e0sy%FBzph= diff --git a/radio/src/fonts/sqt5/font_es_08x10.png b/radio/src/fonts/sqt5/font_es_08x10.png index 6f520ee2ab108951a97a58530bf1f74c8113e309..c2c9b946504c4cbcf5955310244e8caefd232523 100644 GIT binary patch delta 179 zcmZ3;xQ|h>Gr-TCmrII^fq{Y7)59eQNGAX>4>T%Mp6HBnKtzSz^nF@)oK=_y05 z76Xx%hmHr0T_uXy&({z;^cvWv$e?)SQxW!lSs&ye38Hz{Ra{!XE7d#}uy z_H?pWTi$cw{!Fc(JuggCTz&{>N>m>@#2b@&VB%G&=NVEbZvAbX_E#?XE%ybnYYZz^ fbyTch^odnO)FnYQ#jgbD3{D15S3j3^P6>4AfkIXriKMHe-^vy9+}HtE>l5 zkh8!evY3H^TNs2H8D`Cq01C2~c>21s-{p`NF*cEYvqT*zr0D757{YNq+2Ygu#7BZ{ s|Ai%I{5Os;GQJUEbmPW?1^@puUTfysw7bZ3HBd2wr>mdKI;Vst0C?>v$p8QV diff --git a/radio/src/fonts/sqt5/font_es_10x14.png b/radio/src/fonts/sqt5/font_es_10x14.png index d66da44606b51bef5b2384ce86eda359b21c5623..bfaa3b87e887d5227bf8243d91ac42a2a612f54e 100644 GIT binary patch delta 239 zcmVqEu}NnkS&v{U6@+*cuV5nC%XMg+PRD6BmpN zOTMcj#>OfB{MQW55h*fMAB-UqgrgQxYZ?corZ6E)uZd8qSuHQBi9!XE6IWtZSEqPW z6%vff4k0X=L0A<6NWC091$zF_Ma$P1%-Pe{D p<=O3@(aP8HqTdDRow_owegNekb3)>%QNsWL002ovPDHLkV1i#WVRQfh delta 162 zcmeyxxQl5 zkh8!evY3H^TNs2H8D`Cq01C2~c>21s-{p`N716WpY~=?E>3O<1hHzX@wg~^LbFe4+IBs&|M^}Ks_@DxvDf00uV$8VTsQWMP4)BqU*7U}mzGxO z?~mtitf*!wsAyRqAfFa9-QwC^zRwc%XDt}*!$U=9t?YdUbQy!EtDnm{r-UW|rCUx} literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAkYJF!{_q@-Vo7)Ob!1@J*w6hZkrl{SNcITw zWnidMV_;}#VPN|>Eal|aXmTW)B%Aj2PWJ* zu;9pn2PY0pICJ2`UPcDJ43;_U<@NzUg{md45hW>!C8<`)MX5lF!N|bST-U%z*U%)y wz`)Ab)XLac+rZGuz`$X$`4bckx%nxXX_dG&7@q5o0BT_HboFyt=akR{0O$2hy8r+H diff --git a/radio/src/fonts/std/font_es_05x07.png b/radio/src/fonts/std/font_es_05x07.png index 50a64fe6c8aa968a013190168b98f0ab1f520d76..066e7cab5a156fe215592ff0ef28a1e771510872 100644 GIT binary patch literal 199 zcmV;&0671NP)eN*}x7GRX zFwd=`&|S>ou4lVBQhB{cd)^dSpY=XKETNxRw)vwls;2-&<2h28yH?h7WgQ5Sx#^nm~X002ovPDHLkV1lP` BRNw#r literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhkYISx7%UB>SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+uenM@oty!5+IMW zz$3Dlfq`2Xgc%uT&5-~KvX^-Jy0SlH;$u)&tQ1y!4HQ!Fba4#fxSqV@+JOz%8W;Xy zXr9RIoWSf{#Oz$ieE2^zLqaD?)FK#IZ0z|dURz)087 yB*ehL%GlJ(*jU@Z(8|ETVY2xX6b-rgDVb@NxHTA_>yH3xVDNPHb6Mw<&;$SnPfMTx diff --git a/radio/src/fonts/std/font_es_08x10.png b/radio/src/fonts/std/font_es_08x10.png index d88578f1fca34d8903c4e3e227e571ad82211dba..78a166085610b2ddc62f7074d8b96ae059d06a5e 100644 GIT binary patch literal 311 zcmV-70m%M|P)Yrt0002~Nkl=NcJi+5PiSDk>j|e~r1PzPB973`%o5{W}J~m3ylhdAJL(i}Psf zbrLGv&TCXOUrY1QMM6A>=S#SyK=IWZPyb3h!}|xVe&F8k{{xO|d@5W2bIt$&002ov JPDHLkV1gz4jynJV literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e2qYMs=P>91DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&U|7|wYy{+S z7I;J!Gca%qgD@k*tT_@uLG}_)Usv{rOneN=ij~5OuYp1uo-U3d9M_Y7{O^D0!G739 zl}+KWTd$*AN8|A($D>UL4>TQQ>iPGdnc-RpS3c{cHBLZ1swJ)wB`Jv|saDBFsX&Us z$iUEC*T6{E&?Lmbz{=Rv%Gg-jz|hLTz+tla6BG@(`6-!cmAEw+p6ibQYGCkm^>bP0 Hl+XkKlWtFG diff --git a/radio/src/fonts/std/font_es_10x14.png b/radio/src/fonts/std/font_es_10x14.png index 72383b448f4a165856f039a806d1729bdea9caac..05411cc13b7e90cdc2ba04471b63a21c00d57ea5 100644 GIT binary patch literal 355 zcmV-p0i6DcP)B(g=)VbY!gao>&;qO!D!2UcVa6 zRJK=omduu7vs97e^g-cdRZR?IrX{&tw9l8+h|9=&Cvbj8PO53f&|n{jz87k!^4#vk1r1Q#>UzPhE@g!4wKEF eplHa=PsvQH#I3>bTz>>m1B0ilpUXO@geCw({aGmh diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 6659e386b..bad85fbc5 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -49,24 +49,24 @@ uint8_t getMappedChar(uint8_t c) result = 127 + c - 0x80; } #elif defined(TRANSLATIONS_ES) - else if (c >= 0x80 && c <= 0x81) { + else if (c >= 0x80 && c <= 0x80+12) { result = 157 + c - 0x80; } #elif defined(TRANSLATIONS_FI) || defined(TRANSLATIONS_SE) else if (c >= 0x80 && c <= 0x85) { - result = 159 + c - 0x80; + result = 169 + c - 0x80; } #elif defined(TRANSLATIONS_IT) else if (c >= 0x80 && c <= 0x81) { - result = 165 + c - 0x80; + result = 175 + c - 0x80; } #elif defined(TRANSLATIONS_PL) else if (c >= 0x80 && c <= 0x80+17) { - result = 167 + c - 0x80; + result = 177 + c - 0x80; } #elif defined(TRANSLATIONS_PT) else if (c >= 0x80 && c <= 0x80+21) { - result = 185 + c - 0x80; + result = 195 + c - 0x80; } #endif else if (c < 0xC0) diff --git a/radio/src/tests/fonts_480x272.png b/radio/src/tests/fonts_480x272.png index da2ac09d348e29885ecbe5cf34770c360c8115f6..3ba0dcbafa29a191f465726378c24a143053921f 100644 GIT binary patch literal 9643 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

N1iX3eKWbaSUoY# z`4lEl*vHqiki-3rT#}j;7w$$U8Fz1y#nH>?5IZ20Qe7mV$Y5MEF&6 z--DE~r@78}tcT0`d%JFZC3t<4{Wi;ew|!Jq`z(Z(ewMcU)JV&Fhn3yLg=!TthDu7& zOR@gtx)@>o<7^>o%yIrL#noox$K4Iw*ayjwFRepj zI$6lQ50;#TrkGHWicVsQ4}7&+9ki7Ua&{at(ed0A7(8h1DsjcfB5_$=dg8&x16w$P z7u<0TBYI2>I&H1keH8L$E-y*&NpF;HhQ#+FDrnVh;2Yuaj5}(@FnTYHeo5u?m5I(m zN-@s2yl-)T14&Xd!-O)wM%=+Q+uOYMMh+lY;|duV|3I z>+BlUOitST*}N}0*_7UJbu`@|3Ye|>WWzKQde+|f2J}DS-4g@b3$Qz_dtds5x2?`K zQ;9bL+gSL%g(A1&`r;_N-Il|dPFr!O?hBZYsxmF3H$|LXH4y~elv1zp{sca(+u^wq zSVW|tpqrGK!7YCZSoj$o2mAH*)2NnakNrJiuqDuK?*mub5@m;}qQuHUa2p}y&y^IE zI825_M$*w1iF+A0#wLeeD}_byXt>M4vZ#L36~>XM#%3Su0R}Y zKbr3n<@a8)Sa8w$+LcKUkeJRAcd@6UE0mKP9xinSP#oS3HalDOD|@kU9SBOyL*8Z< zvic-Oui2$g|L{c`D41Y%74}pELkpq!3c^x-r8nifl};(F zq!qo&jlH2KKjhCt`Zc@s6BY$Na$)~}dHnQ0Ka~3a{px;5oM;Z&O@PS{e9sBc*3gGy I)a+jT7Y*Kgs{jB1 literal 9677 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 literal 5804 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 diff --git a/radio/src/tests/transparency_480x272.png b/radio/src/tests/transparency_480x272.png index b8fec6660175215aa18f93dc4dd7f09d8030adc4..2b0588eb91099c84eb5331edfa06082056dd42b4 100644 GIT binary patch literal 5773 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 KsPyu^sJ{WTviZOO literal 5754 zcmb_gc~nzb(vM053L=WgBAeX`sEB}UvZEj%0-}aRwzk=k9YVqyyFt^^0Th%)ARvge zi3zJL2?UW%h+z>(3?YPoBtn1)0m2rTIA?lh{+Kh}^PTU!bKkqC-hKB})$dnT@7BZX zjy4Am$R7Xz00-@Ct!@ASdnN@#Qgp9C!aAu%6+HGw+PcR80Eg~;8+(2?uM7qNj%nCg zS>A#aEzr)zQf;Z-OB9}v=uuH2Sq({1EjJa(AFC}?-j-UtwV2$qcaN}`_yO^~LVE>w z!6kG|R!CGsOH>l_v*pik_Xz~wga?H7Dn&Nl1n$^|s1a$4yWpgRsVmCmOJA0QOwyq! zPRKsMAZr(a0|4$Vhz0?!r{5C>RQ%@&QgN_@F?cbm!7P`PTYHW7`ndJbq4RUDb(B#3 zLQ}uq{@_3pCG*H$MkK_u89|!kBcVfJ$D)aN&S3-Nf@@3zuFd#l70X#ZiPOS^2NEL< z=MkWiyBtF|<5HWdD;qj_Fl|+Zw6)o3<~!|WlL78_v;9(e#)I-&jp2BsVh81@x{WXd zotf3tUP6PI#5oqRG{5^1uC0bzXWpkmOcsmcili!`Lq4rO3zYjB$E=;%M_wnA!Xyl> zoJW#MzWA(c$s`ZUva1v4i+S_cuia$TO9}lPGc`X@uAct6^jV@0)YDk4-%n>20V+&J zQ9@OBhfUe~FwYlSYr&irwTd^VYRWaE^J|k>^>yqckSJWFV-XVhc_trUFjkZ4<^Kpc z|EbGQCs^W!9>qRFj{V7pdjs<7l(G8Bs`4jLepD-z5rDqpeDdsKgc>f>SpwPoB4#QS zFNuz8Vvp8)sSuExWF-qa|C}tYu`6^L<<2v4V4{UXAXk z4V^~VX}yATI+Rk{dnSQ_4NsDjL47Z}cYymbUjERuz*l{b`|@;j*>xLVlg$;&IM9egOj6dTv93KKdO`h3_ zYg!!*CDpxld!5ekxg5_>s%WPs8+m%RVkX-9Fs&UokCRbAx=MeE9(u6CxuyRFoNP=QI<#f&e9habNJ?$MTsivgYv0ur zAn@tAQHV(c%M}RJv1&%SG-5n}(!PoVQ=j4oDGn}BBrVf8L9Z{oR@Wgz+q);H`y>&? z3#>vSOJzR2F)KNV2!zXJ^~_T1sS9yNiUNi=&hnm4_RIRdpjkOT!8^><4jFTQ@xD$U zou!U|yxc#?)-`#ZbbTm3y*TE#sn1UW9)B=Pjg2-9-qCNqilt#TvdwaO{Z`1f^08Iq z<9xkm*HqiBAJLiZ);}&@Yos0&Vf<91o?f=;*1MHfB)llr*gTBgxt){KYhWymU{Pu^ zdt+dM=WK29{5a5ASmuO`jji`*}!*6dhYsL_1& zwisaxb88l2(tpf7@~}WX`f8oVakc4KM0l85Vy1wdK%ia1m|M*c91rRpHpmH+J^B5k zvxP62ZZ_QFt!m*mffI9i4-C_Z#ruCzQAjIqyVAhcvQzaY-^~EQcjSB9`*fn;Qyc>1 zIa13W9udRj;qXRwoaX>nz#cq`H!>G%r03J`fWvU#EtxoFN|=AF*|V^f5_z~O(^x4h zRmBbJcHDQ_A2IQQNl+ng2O!SXB9VB+MMNN8w|tg8`(^ZZ>Vi?`50&Er_Y+K>jBWwr zavTDO8IhliIYd^>0Cx^6A@V%7vsS~S)#pAxawVi5+81LeTE1)5oxe0{h=&J8;5S51 zH9KCJu2Oqwh44yQ33=jqilL%GxN+=v_U({vQ&5Jsj=ZMn`3(xmuZmo!*L-)bu(ODb zT~@8B6z|R-I1LR%A_ai;0;jNx`zjyN?KN|a!vl2+AP51!WFPcDyr3Xa;Y+>Uv|D?= zOHAa>rv5@vTtHnxY`y8g@vLs0Y9&vh2F~ddwJh10I{LOg*vX4G@{~6_ubLy=@J5kT zg5P+M{@JL27*M$IJdyOYwQ-XS(_43NK57@U&^Avn%ubwhRFxuwPKCib?zrd1BY6FZ ztz7T893b$Nazt9Hme1$KSL~L^`4b|RKjIpR359rsfDO86=EfV8%dq>Hr-4FRtGAP; z9)4@Qb13uR7iL8XzZr=P@sjhsQgsEx?o(S8&@9L0hAOW2wy$C?8#}Z0(F|?of;*rR z7L{@#FGIv~uKCg_@)3p#TS|s56g|6AW#xE;48jG{h*xHd<3EZK z!gUf4YN`PRHI|U)KZ_05aU8$tstKzo%AD57v-gF!8q#j(EWSEh++(_U?((yjy})cw zwdLMQIB47$wwZW$Cx&4nDsm?-r@+`Zhnxut4TBZa+nQ}7T(+1|VMedpBLra{DY+(OGNaFfCZHMK zVL1Lw0WPVr2#-)DKODK1Bu5x^GU0}zHXY7`hXiFBn9bS<5WlGA7&bTO`v$ZQ^fRDD8op*@)zhcE?wGetU?Zc8 zPrBM|JlF01z~WM3RZEhozwMI)FAAvOew+LzwqhnYrBID*w}klw%!hsQc`zG07mxTL zy=9Uzh2=Sxr$C72Y2wF5!5{>y3s>gevV2+2CQ8RH+fGM56RsU~)QLYEs~?v6cHCn? zM?*!7FlhkQZaKT`k6*>OP`VOYGs}Y5Xw7IBdyAgDnkSLui~34gUgW0%#l*VV!dITE zR0e34l2O%dc|M>1!5pe{0Y0tnJ+67OJxgJP>hoX}>Kbhw3ZLauJhtn8M~1LxlI|8B zs@h1rpIWV+zB$Y~^YqupQ^W}7aIfw>bO+Ak*4ITHS^4EB;3wCw6A8J_67FtgR+?)9 zXALOJbB-M>)3u#eU*vC;KHe13U(XGF+~urbQ*%)}b9!ZG{;8k@`g2+ucbYIrqKK||v!o_Rkxgg!;6y7`*9V2Bva`|OKene#_1=jf} zd929)R9$7^P2)z#vfAT~!}o4;7n0}^jweI3Cmf&4`m;?JvM&!*_3)7K-b=sya z8y@lWF^w17mC5@i=!nMt#zb3mAC^d!$dBNqDreDCkLe(!ZK9%!*I6k7-n!Z~yw_(r zzIU_XWrcf@ry&o-OV|8LKcONJed+!FL{i^V|`16YTTHYO91-%}lE6|M3doR8GP1?FQ>y6jhd*xSZ*k_U#kTMf z5uZ>72}uanLILBvX@c)H6t4y~peJzm75W^$w;Tkck{qWVn|?9%f7D8)^(NIay)NK6 z_LSSnjeNb`R@0!w4i-~UE;`~xeYc9}v#K%hD3`QWU8y)hP0c;{tlR5c*2hVYRZomP z<+m_MT;cLqScrE_eK>@&SzU2Jgb`3+aQBU8-dcsACKcR0X*@Qp5pU8p-MERF7!yU< zAGPknO-+~w-LoMZbK(OhZf>7I_6G|xV3uC%A&35lIsL;nyHdA3dPf0JFSbnr@`S{; z)mj$FqOxn@C!=pisLCIEjQl=&BUo`G$IXT5zwgbV`Q0&JNrvtQ8LzlOJz@O83GA|! z;J{(bol=)buuLg5kDOP^vZYCi04xSm|8d-%Lmb+Vvf*#yRKZOVO))7KvV@0jZYM^x z&+VG+INa=4=6z7{?s+_%xLtJ&l}B*IM!0kv336Q)j-Ak~+il|4M$-Q75zT#zC${aG z-?fxcX&XqH-+{*^wDLJ_uvg+xt`Vza~j)ClHpcp86$9+}2;v4h4*MkG&($MGgY49v%dg z9=)uv8=_+t`9ZV;6Q(l)P{_Ks^MDKU*=>ZR6Bm6-y)~5$PAvrNzdFfU^+yXZpse%sw$3^JT=Q=Li(<8H z4}~-dfI{jCiGS-x%{^)6upY;7^v;r04J9)+7>je{;Fq3c*$xfBuG#SG?$N6?n@VV|EWeHSmqGPxb(bLpvMJxt;{cKp7m|6k5-<95HQ z9kw2-n= 212 #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " @@ -258,7 +258,7 @@ #define SPEED_UNIT_METR "kmh" #define LEN_VUNITSSYSTEM "\010" -#define TR_VUNITSSYSTEM "Metrico\0""Imperial" +#define TR_VUNITSSYSTEM "Métrico\0""Imperial" #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" @@ -266,7 +266,7 @@ #define STR_A (STR_VTELEMUNIT+4) #define LEN_VTELEMSCREENTYPE "\007" -#define TR_VTELEMSCREENTYPE "Nada\0 ""Numeros""Barras\0""Script\0" +#define TR_VTELEMSCREENTYPE "Nada\0 ""Números""Barras\0""Script\0" #define LEN_GPSFORMAT "\004" #define TR_GPSFORMAT "HMS NMEA" @@ -350,8 +350,8 @@ #define LEN_VTRAINERMODES "\022" #define TR_VTRAINER_MASTER_JACK "Master/Jack\0 " #define TR_VTRAINER_SLAVE_JACK "Esclav/Jack\0 " -#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/Modulo SBUS" -#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/Modulo CPPM" +#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/Módulo SBUS" +#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/Módulo CPPM" #define TR_VTRAINER_MASTER_BATTERY "Master/Serie\0 " #define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Esclavo/BT\0 ", "Master/Bluetooth\0 ""Esclavo/Bluetooth\0") #define TR_VTRAINER_MULTI "Master/Multi" @@ -364,7 +364,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculado" #define LEN_VFORMULAS "\011" -#define TR_VFORMULAS "Suma\0 ""Media\0 ""Min\0 ""Max\0 ""Multipl. ""Total\0 ""Cell\0 ""Consumo\0 ""Distancia" +#define TR_VFORMULAS "Suma\0 ""Media\0 ""Min\0 ""Máx\0 ""Multipl. ""Total\0 ""Cell\0 ""Consumo\0 ""Distancia" #define LEN_VPREC "\004" #define TR_VPREC "0.--""0.0 ""0.00" @@ -426,7 +426,7 @@ #define TR_EXPONAME TR("Nom.", "Nombre expo") #define TR_BITMAP "Imagen modelo" #define TR_TIMER TR("Timer", "Timer ") -#define TR_ELIMITS TR("E.Limite", "Ampliar limites") +#define TR_ELIMITS TR("E.Límite", "Ampliar límites") #define TR_ETRIMS TR("E.Trims", "Ampliar trims") #define TR_TRIMINC "Paso trim" #define TR_DISPLAY_TRIMS "Ver trims" @@ -450,14 +450,14 @@ #define TR_DEFAULT "(defecto)" #define TR_CHECKTRIMS CENTER "\006Check\012Trims" #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) -#define TR_SWASHTYPE "Tipo ciclico" +#define TR_SWASHTYPE "Tipo cíclico" #define TR_COLLECTIVE TR("Colectivo", "Fuente colectivo") #define TR_AILERON TR("Col. lateral", "Fuente col. lateral") #define TR_ELEVATOR TR("Col. long. ", "Fuente col. longitudinal") #define TR_SWASHRING "Ciclico" -#define TR_ELEDIRECTION TR("ELE Direccion", "Largo cyc. direccion") -#define TR_AILDIRECTION TR("AIL Direccion", "Lateral cyc. direccion") -#define TR_COLDIRECTION TR("PIT Direccion", "Coll. pitch direccion") +#define TR_ELEDIRECTION TR("ELE Dirección", "Largo cyc. dirección") +#define TR_AILDIRECTION TR("AIL Dirección", "Lateral cyc. dirección") +#define TR_COLDIRECTION TR("PIT Dirección", "Coll. pitch dirección") #define TR_MODE "Modo" #define TR_SUBTYPE INDENT "Subtipo" #define TR_NOFREEEXPO "No expo libre!" @@ -476,7 +476,7 @@ #define TR_MIXWARNING "Aviso" #define TR_OFF "OFF" #define TR_ANTENNA "Antena" -#define TR_NO_INFORMATION TR("Sin info", "Sin informacion") +#define TR_NO_INFORMATION TR("Sin info", "Sin información") #define TR_MULTPX "Multipx" #define TR_DELAYDOWN "Atraso bajar" #define TR_DELAYUP "Atraso subir" @@ -495,17 +495,17 @@ #define TR_SCREEN "Pant. " #define TR_SOUND_LABEL "Sonido" #define TR_LENGTH INDENT"Longitud" -#define TR_BEEP_LENGTH INDENT "Duracion Beep" +#define TR_BEEP_LENGTH INDENT "Duración Beep" #define TR_SPKRPITCH INDENT"Tono" #define TR_HAPTIC_LABEL "Haptic" #define TR_HAPTICSTRENGTH INDENT"Intensidad" #define TR_GYRO_LABEL "Gyro" #define TR_GYRO_OFFSET "Offset" -#define TR_GYRO_MAX "Max" +#define TR_GYRO_MAX "Máx" #define TR_CONTRAST "Contraste" #define TR_ALARMS_LABEL "Alarmas" -#define TR_BATTERY_RANGE TR("Rango bateria", "Rango medidor bateria") -#define TR_BATTERYWARNING INDENT"Bateria baja" +#define TR_BATTERY_RANGE TR("Rango batería", "Rango medidor batería") +#define TR_BATTERYWARNING INDENT"Batería baja" #define TR_INACTIVITYALARM INDENT"Inactividad" #define TR_MEMORYWARNING INDENT"Memoria baja" #define TR_ALARMWARNING INDENT"Sin sonido" @@ -516,10 +516,10 @@ #define TR_THROTTLE_LABEL "Potencia" #define TR_THROTTLEREVERSE TR("Invert acel", INDENT "Invertir acel.") #define TR_MINUTEBEEP TR("Minuto", "Cada minuto") -#define TR_BEEPCOUNTDOWN TR(INDENT"Cta. atras", INDENT"Cuenta atras") +#define TR_BEEPCOUNTDOWN TR(INDENT"Cta. atrás", INDENT"Cuenta atrás") #define TR_PERSISTENT TR(INDENT"Persisten.", INDENT"Persistente") #define TR_BACKLIGHT_LABEL "Luz fondo" -#define TR_BLDELAY INDENT"Duracion" +#define TR_BLDELAY INDENT"Duración" #define TR_BLONBRIGHTNESS INDENT"MAS brillo" #define TR_BLOFFBRIGHTNESS INDENT"MENOS brillo" #define TR_BLCOLOR INDENT "Color" @@ -560,7 +560,7 @@ #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "SIN DATOS" #define TR_US "us" -#define TR_TMIXMAXMS "Tmix max" +#define TR_TMIXMAXMS "Tmix máx" #define TR_FREE_STACK "Stack libre" #define TR_MENUTORESET TR_ENTER "Resetear" #define TR_PPM_TRAINER "TR" @@ -574,19 +574,19 @@ #define TR_THROTTLENOTIDLE "Aceler. Activado" #define TR_ALARMSDISABLED "Alarmas Desact." #define TR_PRESSANYKEY TR("\010Pulsa una tecla", "Pulsa una tecla") -#define TR_BADEEPROMDATA "Error datos EEprom" +#define TR_BADEEPROMDATA "Error datos EEPROM" #define TR_BAD_RADIO_DATA "Error datos radio" #define TR_EEPROMFORMATTING "Formateo EEPROM" -#define TR_STORAGE_FORMAT "Preparacion alamacenamiento" +#define TR_STORAGE_FORMAT "Preparación alamacenamiento" #define TR_EEPROMOVERFLOW "Desborde EEPROM" -#define TR_MENURADIOSETUP "CONFIGURACION" +#define TR_MENURADIOSETUP "CONFIGURACIÓN" #define TR_MENUDATEANDTIME "FECHA Y HORA" #define TR_MENUTRAINER "ENTRENADOR" #define TR_MENUSPECIALFUNCS "FUNCIONES GLOBALES" -#define TR_MENUVERSION "VERSION" +#define TR_MENUVERSION "VERSIÓN" #define TR_MENU_RADIO_SWITCHES TR("INTERUPTS", "TEST INTERRUPTORES") -#define TR_MENU_RADIO_ANALOGS TR("ANALOGICOS", "TEST ANALOGICOS") -#define TR_MENUCALIBRATION "CALIBRACION" +#define TR_MENU_RADIO_ANALOGS TR("ANALÓGICOS", "TEST ANALÓGICOS") +#define TR_MENUCALIBRATION "CALIBRACIÓN" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Offsets" #else @@ -594,11 +594,11 @@ #endif #define TR_CHANNELS2FAILSAFE "Canales=>Failsafe" #define TR_CHANNEL2FAILSAFE "Canal=>Failsafe" -#define TR_MENUMODELSEL TR("MODELOS", "SELECCION MODELO") -#define TR_MENUSETUP TR("CONFIG. MODELO", "CONFIGURACION MODELO") +#define TR_MENUMODELSEL TR("MODELOS", "SELECCIÓN MODELO") +#define TR_MENUSETUP TR("CONFIG. MODELO", "CONFIGURACIÓN MODELO") #define TR_MENUFLIGHTMODE "MODO DE VUELO" #define TR_MENUFLIGHTMODES "MODOS DE VUELO" -#define TR_MENUHELISETUP "CONFIGURACION HELI" +#define TR_MENUHELISETUP "CONFIGURACIÓN HELI" // Alignment @@ -608,22 +608,22 @@ #define TR_MENULIMITS "SERVOS" #else #define TR_MENUINPUTS "DR/EXPO" - #define TR_MENULIMITS "LIMITES" + #define TR_MENULIMITS "LÍMITES" #endif #define TR_MENUCURVES "CURVAS" #define TR_MENUCURVE "CURVA" -#define TR_MENULOGICALSWITCH "INTERRUP.LOGICO" -#define TR_MENULOGICALSWITCHES TR3("INTERRUP. LOGICOS", "INTERRUP. LOGICOS", "INTERRUPTORES LOGICOS") +#define TR_MENULOGICALSWITCH "INTERRUP.LÓGICO" +#define TR_MENULOGICALSWITCHES TR3("INTERRUP. LÓGICOS", "INTERRUP. LÓGICOS", "INTERRUPTORES LÓGICOS") #define TR_MENUCUSTOMFUNC TR("FUNCIONES", "FUNCIONES ESPECIALES") #define TR_MENUCUSTOMSCRIPTS "CUSTOM SCRIPTS" -#define TR_MENUTELEMETRY "TELEMETRIA" +#define TR_MENUTELEMETRY "TELEMETRÍA" #define TR_MENUTEMPLATES "PLANTILLAS" -#define TR_MENUSTAT TR("ESTAD.", "ESTADISTICAS") +#define TR_MENUSTAT TR("ESTAD.", "ESTADÍSTICAS") #define TR_MENUDEBUG "DEBUG" #define TR_MONITOR_CHANNELS1 "MONITOR CANALES 1/8" #define TR_MONITOR_CHANNELS2 "MONITOR CANALES 9/16" -#define TR_MONITOR_SWITCHES "MONITOR INTERRP LOGICOS" +#define TR_MONITOR_SWITCHES "MONITOR INTERRP LÓGICOS" #define TR_MONITOR_CHANNELS3 "MONITOR CANALES 17/24" #define TR_MONITOR_CHANNELS4 "MONITOR CANALES 25/32" #define TR_MONITOR_OUTPUT_DESC "SALIDAS" @@ -631,27 +631,27 @@ #define TR_RECEIVER_NUM TR("Num Rx", "Receptor No.") #define TR_RECEIVER "Receptor" #define TR_MULTI_RFTUNE TR("Sint.freq.", "RF Freq. sint.fina") -#define TR_MULTI_TELEMETRY "Telemetria" -#define TR_MULTI_VIDFREQ TR("Freq. Vid.", "Frecuencia Video") +#define TR_MULTI_TELEMETRY "Telemetría" +#define TR_MULTI_VIDFREQ TR("Freq.vídeo", "Frecuencia vídeo") #define TR_RFPOWER "RF Power" #define TR_MULTI_FIXEDID TR("ID Fijo", "ID Fijo") -#define TR_MULTI_OPTION TR("Opcion", "Valor opcion") +#define TR_MULTI_OPTION TR("Opción", "Valor opción") #define TR_MULTI_AUTOBIND TR(INDENT "Emp Cnl",INDENT "Emparejar en canal") #define TR_DISABLE_CH_MAP TR("No ch map", "Desactivar mapa cnl") #define TR_DISABLE_TELEM TR("No telem", "Desactivar telem.") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodetect", INDENT "Autodetectar formato") #define TR_MULTI_LOWPOWER TR(INDENT "Baja poten.", INDENT "Modo de baja poten.") -#define TR_MULTI_LNA_DISABLE INDENT "LNA disable" +#define TR_MULTI_LNA_DISABLE INDENT "LNA desact." #define TR_MODULE_TELEMETRY TR(INDENT "S.Port", INDENT "S.Port link") #define TR_MODULE_TELEM_ON TR("ON", "Activado") -#define TR_DISABLE_INTERNAL TR("Desac.RF int", "Desact. mod. int. RF") +#define TR_DISABLE_INTERNAL TR("Desac.RF int", "Desact. mód. int. RF") #define TR_MODULE_NO_SERIAL_MODE TR("No modo serie", "No en modo serie") -#define TR_MODULE_NO_INPUT TR("Sin señal", "Sin señal") -#define TR_MODULE_NO_TELEMETRY TR3( "No telemetria", "No MULTI_TELEMETRY", "No telemetria (activa MULTI_TELEMETRY)") +#define TR_MODULE_NO_INPUT "Sin señal" +#define TR_MODULE_NO_TELEMETRY TR3( "No telemetría", "No MULTI_TELEMETRY", "No telemetría (activa MULTI_TELEMETRY)") #define TR_MODULE_WAITFORBIND "Emparejar con protocolo" #define TR_MODULE_BINDING "Emparejando" -#define TR_MODULE_UPGRADE_ALERT TR3("Actualizar", "Actualizar modulo", "Actualizar\nmodulo") -#define TR_MODULE_UPGRADE TR("Act recom", "Actualizar modulo recomendado") +#define TR_MODULE_UPGRADE_ALERT TR3("Actualizar", "Actualizar módulo", "Actualizar\nmódulo") +#define TR_MODULE_UPGRADE TR("Act recom", "Actualizar módulo recomendado") #define TR_REBIND "Reemparejar " #define TR_REG_OK "Registro ok" #define TR_BIND_OK "Emparejado ok" @@ -659,32 +659,32 @@ #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. invalido", "Protocolo invalido") -#define TR_MODULE_STATUS TR(INDENT "Estado", INDENT "Estado modulo") +#define TR_PROTOCOL_INVALID TR("Prot. inválido", "Protocolo inválido") +#define TR_MODULE_STATUS TR(INDENT "Estado", INDENT "Estado módulo") #define TR_MODULE_SYNC TR(INDENT "Sync", INDENT "Estado proto sync") #define TR_MULTI_SERVOFREQ TR("V ref serv", "Vel. refr. servo") -#define TR_MULTI_MAX_THROW TR("Max. Throw", "Activar max. throw") +#define TR_MULTI_MAX_THROW TR("Máx. Throw", "Activar máx. throw") #define TR_MULTI_RFCHAN TR("Canal RF", "Selecciona canal RF") #define TR_SYNCMENU "Sync " TR_ENTER -#define TR_LIMIT INDENT"Limite" +#define TR_LIMIT INDENT"Límite" #define TR_MINRSSI "Min Rssi" #define TR_LATITUDE "Latitud" #define TR_LONGITUDE "Longitud" #define TR_GPSCOORD TR("Coords GPS", INDENT "Formato coordenadas") -#define TR_VARIO TR("Vario", "Variometro") +#define TR_VARIO TR("Vario", "Variómetro") #define TR_PITCH_AT_ZERO INDENT "Pitch en cero" -#define TR_PITCH_AT_MAX INDENT "Pitch en max" +#define TR_PITCH_AT_MAX INDENT "Pitch en máx" #define TR_REPEAT_AT_ZERO TR(INDENT "Repet. en cero", INDENT "Repetir en cero") #define TR_SHUTDOWN "APAGANDO" #define TR_SAVEMODEL "Grabando modelo" -#define TR_BATT_CALIB TR("Calib.bat.", "Calibracion bateria") +#define TR_BATT_CALIB TR("Calib.bat.", "Calibración batería") #define TR_CURRENT_CALIB "Calib. actual" #define TR_VOLTAGE INDENT"Voltaje" #define TR_CURRENT INDENT"Actual" #define TR_SELECT_MODEL TR("Selec. modelo", "Seleccionar modelo") -#define TR_CREATE_CATEGORY "Crear categoria" -#define TR_RENAME_CATEGORY "Renombrar categoria" -#define TR_DELETE_CATEGORY "Borrar categoria" +#define TR_CREATE_CATEGORY "Crear categoría" +#define TR_RENAME_CATEGORY "Renombrar categoría" +#define TR_DELETE_CATEGORY "Borrar categoría" #define TR_CREATE_MODEL "Crear modelo" #define TR_DUPLICATE_MODEL "Duplicar modelo" #define TR_COPY_MODEL "Copiar modelo" @@ -693,7 +693,7 @@ #define TR_DELETE_MODEL "Borrar modelo" #define TR_RESTORE_MODEL "Restaurar modelo" #define TR_DELETE_ERROR "Error de borrado" -#define TR_CAT_NOT_EMPTY "Categoria no esta vacia" +#define TR_CAT_NOT_EMPTY "Categoría no esta vacía" #define TR_SDCARD_ERROR "Error SDCARD" #define TR_NO_SDCARD "No SDCARD" #define TR_WAITING_FOR_RX "Esperando a RX..." @@ -705,28 +705,28 @@ #define TR_CONNECTED "Conectado" #define TR_FLEX_915 "Flex 915MHz" #define TR_FLEX_868 "Flex 868MHz" -#define TR_16CH_WITHOUT_TELEMETRY TR("16CH sin telem.", "16CH sin telemetria") -#define TR_16CH_WITH_TELEMETRY TR("16CH con telem.", "16CH con telemetria") -#define TR_8CH_WITH_TELEMETRY TR("8CH con telem.", "8CH con telemetria") +#define TR_16CH_WITHOUT_TELEMETRY TR("16CH sin telem.", "16CH sin telemetría") +#define TR_16CH_WITH_TELEMETRY TR("16CH con telem.", "16CH con telemetría") +#define TR_8CH_WITH_TELEMETRY TR("8CH con telem.", "8CH con telemetría") #define TR_EXT_ANTENNA "Antena ext." #define TR_PIN "Pin" #define TR_UPDATE_RX_OPTIONS "Actualizar opciones RX?" #define TR_UPDATE_TX_OPTIONS "Actualizar opciones TX?" -#define TR_MODULES_RX_VERSION "Modulos / version RX" -#define TR_MENU_MODULES_RX_VERSION "MODULOS / VERSION RX" +#define TR_MODULES_RX_VERSION "Módulos / versión RX" +#define TR_MENU_MODULES_RX_VERSION "MÓDULOS / VERSIÓN RX" #define TR_MENU_FIRM_OPTIONS "OPCIONES FIRMWARE" #define TR_GYRO "Gyro" #define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" #define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" #define TR_RF_PROTOCOL "Protocolo RF" -#define TR_MODULE_OPTIONS "Opciones modulo" +#define TR_MODULE_OPTIONS "Opciones módulo" #define TR_POWER "Potencia" #define TR_NO_TX_OPTIONS "Sin opciones TX" -#define TR_RTC_BATT TR("Bat. RTC", "Bateria RTC") +#define TR_RTC_BATT TR("Bat. RTC", "Batería RTC") #define TR_POWER_METER_EXT "Medidor potencia(EXT)" #define TR_POWER_METER_INT "Medidor potencia(INT)" -#define TR_SPECTRUM_ANALYSER_EXT "Spectro (EXT)" -#define TR_SPECTRUM_ANALYSER_INT "Spectro (INT)" +#define TR_SPECTRUM_ANALYSER_EXT "Espectro (EXT)" +#define TR_SPECTRUM_ANALYSER_INT "Espectro (INT)" #define TR_SDCARD_FULL "SD Card llena" #define TR_NEEDS_FILE "NECESITA ARCHIVO" #define TR_EXT_MULTI_SPEC "opentx-inv" @@ -742,11 +742,11 @@ #define TR_FAILSAFEWARN "FAILSAFE" #define TR_TEST_WARNING TR("TESTING", "TEST BUILD") #define TR_TEST_NOTSAFE "Usar solo para test" -#define TR_WRONG_SDCARDVERSION TR("Ver esperada: ", "Version esperada: ") -#define TR_WARN_RTC_BATTERY_LOW "Bateria RTC baja" +#define TR_WRONG_SDCARDVERSION TR("Ver esperada: ", "Versión esperada: ") +#define TR_WARN_RTC_BATTERY_LOW "Batería RTC baja" #define TR_WARN_MULTI_LOWPOWER "Modo baja potencia" -#define TR_BATTERY "BATERIA" -#define TR_WRONG_PCBREV "Placa PCB erronea" +#define TR_BATTERY "BATERÍA" +#define TR_WRONG_PCBREV "Placa PCB errónea" #define TR_EMERGENCY_MODE "MODO EMERGENCIA" #define TR_PCBREV_ERROR "Error PCB" #define TR_NO_FAILSAFE "Failsafe no fijado" @@ -762,16 +762,16 @@ #define TR_COPROC_TEMP "MB Temp. \016>" #define TR_CAPAWARNING INDENT "Capacidad baja" #define TR_TEMPWARNING INDENT "Sobrecalent" -#define TR_FUNC "Funcion" +#define TR_FUNC "Función" #define TR_V1 "V1" #define TR_V2 "V2" -#define TR_DURATION "Duracion" +#define TR_DURATION "Duración" #define TR_DELAY "Atraso" #define TR_SD_CARD "SD CARD" #define TR_SDHC_CARD "SD-HC CARD" #define TR_NO_SOUNDS_ON_SD "Sin sonidos en SD" #define TR_NO_MODELS_ON_SD "Sin modelos en SD" -#define TR_NO_BITMAPS_ON_SD "Sin imagenes en SD" +#define TR_NO_BITMAPS_ON_SD "Sin imágenes en SD" #define TR_NO_SCRIPTS_ON_SD "No scripts en SD" #define TR_SCRIPT_SYNTAX_ERROR "Script syntax error" #define TR_SCRIPT_PANIC "Script panic" @@ -785,27 +785,27 @@ #define TR_ASSIGN_SPLASH "Pant. bienvenida" #define TR_EXECUTE_FILE "Ejecutar" #define TR_REMOVED "Borrado" -#define TR_SD_INFO "Informacion" +#define TR_SD_INFO "Información" #define TR_SD_FORMAT "Formatear" #define TR_NA "N/A" #define TR_HARDWARE "COMPONENTES" #define TR_FORMATTING "Formateando.." #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Hora" -#define TR_MAXBAUDRATE "Max bauds" +#define TR_MAXBAUDRATE "Máx bauds" #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Buscar" #define TR_BLUETOOTH_INIT "Init" #define TR_BLUETOOTH_DIST_ADDR "Dir. remota" #define TR_BLUETOOTH_LOCAL_ADDR "Dir. local" -#define TR_BLUETOOTH_PIN_CODE "Codigo PIN" +#define TR_BLUETOOTH_PIN_CODE "Código PIN" #define TR_BAUDRATE "Velocidad BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Activo\0 " #else -#define TR_BLUETOOTH_MODES "---\0 ""Telemetria""Entrenador" +#define TR_BLUETOOTH_MODES "---\0 ""Telemetría""Entrenador" #endif #define TR_SD_INFO_TITLE "SD INFO" #define TR_SD_TYPE "Tipo:" @@ -830,24 +830,24 @@ #define TR_FLASH_RECEIVER_OTA "Flash RX OTA" #define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX por ext. OTA" #define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX por int. OTA" -#define TR_FLASH_BLUETOOTH_MODULE TR("Flash modulo BT", "Flash modulo bluetooth") +#define TR_FLASH_BLUETOOTH_MODULE TR("Flash módulo BT", "Flash módulo bluetooth") #define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash unid. pwr mngt" -#define TR_CURRENT_VERSION TR("Vers. actual", "Version actual: ") -#define TR_FLASH_INTERNAL_MODULE TR("Flash modulo int", "Flash modulo interno") +#define TR_CURRENT_VERSION TR("Vers. actual", "Versión actual: ") +#define TR_FLASH_INTERNAL_MODULE TR("Flash módulo int", "Flash módulo interno") #define TR_FLASH_INTERNAL_MULTI TR("Flash Multi int", "Flash Multi interno") -#define TR_FLASH_EXTERNAL_MODULE TR("Flash modulo ext", "Flash modulo externo") +#define TR_FLASH_EXTERNAL_MODULE TR("Flash módulo ext", "Flash módulo externo") #define TR_FLASH_EXTERNAL_MULTI TR("Flash Multi ext", "Flash Multi externo") #define TR_FIRMWARE_UPDATE_ERROR TR("Error act FW", "Error actualiz. firmware") #define TR_FIRMWARE_UPDATE_SUCCESS "Flash ok" #define TR_WRITING "Escribiendo..." #define TR_CONFIRM_FORMAT "Confirmar formato?" #define TR_INTERNALRF "RF interna" -#define TR_INTERNAL_MODULE TR("Modulo int", "Modulo interno") -#define TR_EXTERNAL_MODULE TR("Modulo ext", "Modulo externo") +#define TR_INTERNAL_MODULE TR("Módulo int", "Módulo interno") +#define TR_EXTERNAL_MODULE TR("Módulo ext", "Módulo externo") #define TR_OPENTX_UPGRADE_REQUIRED "Actualiz. OpenTX requerida" #define TR_TELEMETRY_DISABLED "Telem. inactiva" -#define TR_MORE_OPTIONS_AVAILABLE "Mas opciones disp." -#define TR_NO_MODULE_INFORMATION "Sin informacion modulo" +#define TR_MORE_OPTIONS_AVAILABLE "Más opciones disp." +#define TR_NO_MODULE_INFORMATION "Sin información módulo" #define TR_EXTERNALRF "RF externa" #define TR_FAILSAFE INDENT"Failsafe" #define TR_FAILSAFESET "AJUSTES FAILSAFE" @@ -869,14 +869,14 @@ #define TR_MENU_SPECTRUM_ANALYSER "ANALIZADOR DE ESPECTRO" #define TR_MENU_POWER_METER "MEDIDOR POTENCIA" #define TR_SENSOR "SENSOR" -#define TR_COUNTRYCODE "Codigo Pais" +#define TR_COUNTRYCODE "Código país" #define TR_USBMODE "Modo USB" #define TR_JACKMODE "Modo Jack" #define TR_VOICELANG "Idioma voces" #define TR_UNITSSYSTEM "Unidades" #define TR_EDIT "Editar" #define TR_INSERT_BEFORE "Insertar antes" -#define TR_INSERT_AFTER "Insertar despues" +#define TR_INSERT_AFTER "Insertar después" #define TR_COPY "Copiar" #define TR_MOVE "Mover" #define TR_PASTE "Pegar" @@ -886,8 +886,8 @@ #define TR_RESET_TIMER1 "Reset Reloj 1" #define TR_RESET_TIMER2 "Reset Reloj 2" #define TR_RESET_TIMER3 "Reset Reloj 3" -#define TR_RESET_TELEMETRY "Reset Telemetria" -#define TR_STATISTICS "Estadisticas" +#define TR_RESET_TELEMETRY "Reset Telemetría" +#define TR_STATISTICS "Estadísticas" #define TR_ABOUT_US "Nosotros" #define TR_USB_JOYSTICK "Joystick USB (HID)" #define TR_USB_MASS_STORAGE "Almaz. USB (SD)" @@ -920,15 +920,15 @@ #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW", "Switches")) #define TR_ANALOGS_BTN BUTTON(TR("Analog", "Analogs")) -#define TR_CALIBRATION "Calibracion" +#define TR_CALIBRATION "Calibración" #define TR_SET "[Ajuste]" #define TR_TRAINER "Entrenador" #define TR_CHANS "Chans" #define TR_ANTENNAPROBLEM CENTER "Problema antena TX!" #define TR_MODELIDUSED TR("ID en uso", "ID modelo en uso") -#define TR_MODULE "Modulo" +#define TR_MODULE "Módulo" #define TR_RX_NAME "Nombre Rx" -#define TR_TELEMETRY_TYPE TR("Tipo", "Tipo telemetria") +#define TR_TELEMETRY_TYPE TR("Tipo", "Tipo telemetría") #define TR_TELEMETRY_SENSORS "Sensores" #define TR_VALUE "Valor" #define TR_TOPLCDTIMER "Timer LCD superior" @@ -945,22 +945,22 @@ #endif #define TR_USE_INTERNAL_ANTENNA TR("Usa antena int.", "Usa antena interna") #define TR_USE_EXTERNAL_ANTENNA TR("Use antena ext.", "Usa antena externa") -#define TR_ANTENNACONFIRM2 TR("Revisa antena", "Revisa que la antena este instalada!") +#define TR_ANTENNACONFIRM2 TR("Revisa antena", "Revisa que la antena esté instalada!") #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "No requerido" #define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requiere FCC" #define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requiere EU" #define TR_MODULE_PROTOCOL_WARN_LINE2 "firmware certificado" #define TR_LOWALARM INDENT "Alarma baja" -#define TR_CRITICALALARM INDENT "Alarma critica" +#define TR_CRITICALALARM INDENT "Alarma crítica" #define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRY RSSI") -#define TR_NO_RSSIALARM TR(INDENT "Alarmas desact.", INDENT "Alarmas telemetria desact.") +#define TR_NO_RSSIALARM TR(INDENT "Alarmas desact.", INDENT "Alarmas telemetría desact.") #define TR_DISABLE_ALARM TR(INDENT "Desact. alarmas", INDENT "Desact. alarmas telem.") #define TR_ENABLE_POPUP "Activa Popup" #define TR_DISABLE_POPUP "Desactiva Popup" #define TR_POPUP "Popup" #define TR_MIN "Min" -#define TR_MAX "Max" +#define TR_MAX "Máx" #define TR_CURVE_PRESET "Preset..." #define TR_PRESET "Preset" #define TR_MIRROR "Mirror" @@ -972,7 +972,7 @@ #define TR_PTS "pts" #define TR_SMOOTH TR3("Suaviz.", "Suaviz.", "Suavizado") #define TR_COPY_STICKS_TO_OFS TR("Copia stick->subtr", "Copia Sticks a Offset") -#define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Copia min/max a sal", "Copia min/max/ctr a salidas") +#define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Copia min/máx a sal", "Copia min/máx/ctr a salidas") #define TR_COPY_TRIMS_TO_OFS TR("Copia trim->subtr", "Copia trims a subtrim") #define TR_INCDEC "Inc/Decrement" #define TR_GLOBALVAR "Var global" @@ -980,7 +980,7 @@ #define TR_CONSTANT "Constante" #define TR_PERSISTENT_MAH INDENT "Valor mAh" #define TR_PREFLIGHT "Chequeos prevuelo" -#define TR_CHECKLIST TR(INDENT "Lista verif", INDENT "Lista verificacion") +#define TR_CHECKLIST TR(INDENT "Lista verif", INDENT "Lista verificación") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #define TR_AUX_SERIAL_MODE "Puerto serie" #define TR_SCRIPT "Script" @@ -993,7 +993,7 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " -#define TR_NO_TELEMETRY_SCREENS TR("No hay pant. telemetria", "No hay pantallas de telemetria") +#define TR_NO_TELEMETRY_SCREENS TR("No hay pant. telemetría", "No hay pantallas de telemetría") // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nombre" @@ -1001,26 +1001,26 @@ #define TR_PHASES_HEADERS_RUD_TRIM "Trim timon" #define TR_PHASES_HEADERS_ELE_TRIM "Trim elevador" #define TR_PHASES_HEADERS_THT_TRIM "Trim potencia" -#define TR_PHASES_HEADERS_AIL_TRIM "Trim aleron" +#define TR_PHASES_HEADERS_AIL_TRIM "Trim alerón" #define TR_PHASES_HEADERS_CH5_TRIM "Trim 5" #define TR_PHASES_HEADERS_CH6_TRIM "Trim 6" #define TR_PHASES_HEADERS_FAD_IN "Aparecer" #define TR_PHASES_HEADERS_FAD_OUT "Desparecer" #define TR_LIMITS_HEADERS_NAME "Nombre" -#define TR_LIMITS_HEADERS_SUBTRIM "Compensacion" +#define TR_LIMITS_HEADERS_SUBTRIM "Compensación" #define TR_LIMITS_HEADERS_MIN "Min" -#define TR_LIMITS_HEADERS_MAX "Max" -#define TR_LIMITS_HEADERS_DIRECTION "Direccion" +#define TR_LIMITS_HEADERS_MAX "Máx" +#define TR_LIMITS_HEADERS_DIRECTION "Dirección" #define TR_LIMITS_HEADERS_CURVE "Curva" #define TR_LIMITS_HEADERS_PPMCENTER "Centrado PPM" -#define TR_LIMITS_HEADERS_SUBTRIMMODE "Simetrica" +#define TR_LIMITS_HEADERS_SUBTRIMMODE "Simétrica" -#define TR_LSW_HEADERS_FUNCTION "Funcion" +#define TR_LSW_HEADERS_FUNCTION "Función" #define TR_LSW_HEADERS_V1 "V1" #define TR_LSW_HEADERS_V2 "V2" #define TR_LSW_HEADERS_ANDSW "Interrup. AND" -#define TR_LSW_HEADERS_DURATION "Duracion" +#define TR_LSW_HEADERS_DURATION "Duración" #define TR_LSW_HEADERS_DELAY "Retardo" #define TR_GVAR_HEADERS_NAME "Nombre" @@ -1035,7 +1035,7 @@ #define TR_GVAR_HEADERS_FM8 "Valor en FM8" // Horus footer descriptions -#define TR_LSW_DESCRIPTIONS { "Tipo de comparacion o funcion", "Primera variable", "Segunda variable o constante", "Segunda variable o constante", "Condicion adicional para activar linea", "Duracion minima de switch logico", "Duracion minima TRUE para activar switch logico" } +#define TR_LSW_DESCRIPTIONS { "Tipo de comparación o función", "Primera variable", "Segunda variable o constante", "Segunda variable o constante", "Condición adicional para activar línea", "Duración mínima de switch lógico", "Duración mínima TRUE para activar switch lógico" } // Horus layouts and widgets #define TR_FIRST_CHANNEL "Primer canal" @@ -1060,7 +1060,7 @@ #define TR_ABOUT_OPENTX_1 "OpenTX es open source, no-" #define TR_ABOUT_OPENTX_2 "comercial y viene sin " #define TR_ABOUT_OPENTX_3 "garantias. Fue desarrollado" -#define TR_ABOUT_OPENTX_4 "libremente. Ayudas a traves" +#define TR_ABOUT_OPENTX_4 "libremente. Ayudas a través" #define TR_ABOUT_OPENTX_5 "de donaciones son bienvenidas!" #define TR_ABOUT_BERTRAND_1 "Bertrand Songis" @@ -1068,7 +1068,7 @@ #define TR_ABOUT_BERTRAND_3 "Companion codesarrollador" #define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Guru de codigo y drivers" +#define TR_ABOUT_MIKE_2 "Gurú de codigo y drivers" #define TR_ABOUT_MIKE_3 "Seguramente uno de los" #define TR_ABOUT_MIKE_4 "mejores inspiradores" @@ -1078,7 +1078,7 @@ #define TR_ABOUT_ANDRE_1 "Andre Bernet" #define TR_ABOUT_ANDRE_2 "Funcionalidad, usabilidad," -#define TR_ABOUT_ANDRE_3 "depurado, documentacion" +#define TR_ABOUT_ANDRE_3 "depurado, documentación" #define TR_ABOUT_ROB_1 "Rob Thomson" #define TR_ABOUT_ROB_2 "openrcforums webmaster" @@ -1089,7 +1089,7 @@ #define TR_ABOUT_KJELL_4 "Colaborador Companion" #define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Dise\201o grafico" +#define TR_ABOUT_MARTIN_2 "Dise\201o gráfico" #if defined(PCBTARANIS) #define TR_ABOUT_HARDWARE_1 "FrSky" @@ -1119,11 +1119,11 @@ #define TR_TOP_BAR "Panel superior" #define TR_FLASH_ERASE "Borrar flash..." #define TR_FLASH_WRITE "Escribir flash..." -#define TR_OTA_UPDATE "Actualizacion OTA..." -#define TR_MODULE_RESET "Reset modulo..." +#define TR_OTA_UPDATE "Actualización OTA..." +#define TR_MODULE_RESET "Reset módulo..." #define TR_UNKNOWN_RX "RX desconocido" #define TR_UNSUPPORTED_RX "RX no soportado" -#define TR_OTA_UPDATE_ERROR "Error actualizacion OTA" +#define TR_OTA_UPDATE_ERROR "Error actualización OTA" #define TR_DEVICE_RESET "Reset dispositivo..." #define TR_ALTITUDE INDENT "Altitud" #define TR_SCALE "Escala" @@ -1133,9 +1133,9 @@ #define TR_MODS_FORBIDDEN "Modificaciones prohibidas" #define TR_UNLOCKED "Desbloqueado" #define TR_ID "ID" -#define TR_PRECISION "Precision" +#define TR_PRECISION "Precisión" #define TR_RATIO "Ratio" -#define TR_FORMULA "Formula" +#define TR_FORMULA "Fórmula" #define TR_CELLINDEX "Cell index" #define TR_LOGS "Logs" #define TR_OPTIONS "Opciones" @@ -1148,7 +1148,7 @@ #define TR_AUTOOFFSET "Auto offset" #define TR_ONLYPOSITIVE "Positivo" #define TR_FILTER "Filtro" -#define TR_TELEMETRYFULL TR("Telem. llena!", "Todas las entradas de telemetria llenas!") +#define TR_TELEMETRYFULL TR("Telem. llena!", "Todas las entradas de telemetría llenas!") #define TR_SERVOS_OK "Servos OK" #define TR_SERVOS_KO "Servos KO" #define TR_INVERTED_SERIAL INDENT "Invertir" @@ -1164,7 +1164,7 @@ #define TR_SETUP_WIDGETS "Config. widgets" #define TR_USER_INTERFACE "Interfaz" #define TR_THEME "Tema" -#define TR_SETUP "Configuracion" +#define TR_SETUP "Configuración" #define TR_MAINVIEWX "Vista pral. X" #define TR_LAYOUT "Diseño" #define TR_ADDMAINVIEW "Añadir vista pral." @@ -1177,20 +1177,20 @@ #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" #define TR_MENU_MAX "\315MAX" -#define TR_MENU_HELI "\316Ciclico" +#define TR_MENU_HELI "\316Cíclico" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Interruptores" -#define TR_MENU_LOGICAL_SWITCHES TR("\312Interr. logicos", "\312Interruptores logicos") +#define TR_MENU_LOGICAL_SWITCHES TR("\312Interr. lógicos", "\312Interruptores lógicos") #define TR_MENU_TRAINER "\317Entrenador" #define TR_MENU_CHANNELS "\320Canales" #define TR_MENU_GVARS "\311GVars" -#define TR_MENU_TELEMETRY "\321Telemetria" +#define TR_MENU_TELEMETRY "\321Telemetría" #define TR_MENU_DISPLAY "MONITOR" #define TR_MENU_OTHER "Otros" #define TR_MENU_INVERT "Invertir" #define TR_JITTER_FILTER "Filtro ADC" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltaje") -#define TR_AUTH_FAILURE "Fallo " LCDW_128_480_LINEBREAK "autentificacion" +#define TR_AUTH_FAILURE "Fallo " LCDW_128_480_LINEBREAK "autentificación" #define ZSTR_FLR "FLR" #define ZSTR_RSSI "RSSI" diff --git a/radio/util/font2png.py b/radio/util/font2png.py index e734cc0a6..169b6b63f 100755 --- a/radio/util/font2png.py +++ b/radio/util/font2png.py @@ -10,7 +10,7 @@ chars_en = u""" !"#$%&'()*+,-./0123456789:;<=>?°ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ chars_fr = u"""éèàîç""" chars_de = u"""ÄäÖöÜüß""" chars_cz = u"""ěščřžýáíéňóůúďťĚŠČŘŽÝÁÍÉŇÓÚŮĎŤ""" -chars_es = u"""Ññ""" +chars_es = u"""ÑñÁáÉéÍíÓóÚú""" chars_fi = u"""åäöÅÄÖ""" chars_it = u"""àù""" chars_pl = u"""ąćęłńóśżźĄĆĘŁŃÓŚŻŹ""" @@ -19,7 +19,7 @@ chars_pt = 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 = chars_en + chars_extra + chars_fr + chars_de + chars_cz + chars_es + chars_fi + chars_it + chars_pl + chars_pt def createFontBitmap(filename, fontname, fontsize, fontoffset, foreground, background, coordsfile=True): diff --git a/radio/util/translate.py b/radio/util/translate.py index 53e113ca7..58525c969 100755 --- a/radio/util/translate.py +++ b/radio/util/translate.py @@ -70,7 +70,17 @@ translations = {'cz_reduced': [('\\200', u'á'), ('\\206', u'ß')], 'es': [('\\200', u'Ñ'), - ('\\201', u'ñ')], + ('\\201', u'ñ'), + ('\\202', u'Á'), + ('\\203', u'á'), + ('\\204', u'É'), + ('\\205', u'é'), + ('\\206', u'Í'), + ('\\207', u'í'), + ('\\210', u'Ó'), + ('\\211', u'ó'), + ('\\212', u'Ú'), + ('\\213', u'ú')], 'fi': [('\\200', u'å'), ('\\201', u'ä'), From 587c2dc446e20f0ed3546b1acb169d8a59d22294 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 27 Apr 2020 12:16:43 +0200 Subject: [PATCH 115/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index a016b2c53..9f1724afe 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1719,3 +1719,4 @@ Karl Vetter Johannes Janssen François Blondé Precision Aero +Thomas Håkansson From c6ba94ef0632f781e5c399f353f85743f9f31689 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 27 Apr 2020 18:45:53 +0200 Subject: [PATCH 116/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 9f1724afe..e9d8c12cc 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1720,3 +1720,4 @@ Johannes Janssen François Blondé Precision Aero Thomas Håkansson +Gordon Evans From 38fea6b0a681cdb40a21c4720bcc0ae2a3ef3123 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 27 Apr 2020 23:15:49 +0200 Subject: [PATCH 117/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index e9d8c12cc..a26afc3f6 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1721,3 +1721,4 @@ François Blondé Precision Aero Thomas Håkansson Gordon Evans +Benny Simonsen From 50508ba35de8aac96062f5146115f944a1f40d28 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 08:28:50 +0200 Subject: [PATCH 118/199] Fix touch panel on TX16S --- radio/src/targets/horus/tp_gt911.h | 372 +++++++++++++++-------------- 1 file changed, 188 insertions(+), 184 deletions(-) diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index aa35d468f..c09f62dae 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -37,192 +37,196 @@ void gt911ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len); void touchPanelRead(); #define GT911_MAX_TP 5 -#define GT911_CFG_NUMER 0x69 +#define GT911_CFG_NUMER 0x6A //GT911 param table -const uint8_t GT911_Cfg[]= - { - GT911_CFG_NUMER, // 0x8047 Config version - 0xE0,0x01, // 0x8048 X output map : x 480 - 0x10,0x01, // 0x804A Y ouptut max : y 272 - GT911_MAX_TP, // 0x804C Touch number : GT911_MAX_TP - 0x38, // 0x804D Module switch 1 : bit4= xy change Int mode - 0x00, // 0x804E Module switch 2 - 0x02, // 0x804F Shake_Count - 0x48, // 0x8050 Filter - 0x28, // 0x8051 Larger touch - 0x0D, // 0x8052 Noise reduction - 0x50, // 0x8053 Screen touch level - 0x32, // 0x8054 Screen touch leave - 0x03, // 0x8055 Low power control - 0x05, // 0x8056 Refresh rate - 0x00, // 0x8057 X threshold - 0x00, // 0x8058 Y threshold - 0x00, // 0x8059 Reserved - 0x00, // 0x805A Reserved - 0x00, // 0x805B Space (top, bottom) - 0x00, // 0x805C Space (left, right) - 0x00, // 0x805D Mini filter - 0x18, // 0x805E Strech R0 - 0x1A, // 0x805F Strech R1 - 0x1E, // 0x8060 Strech R2 - 0x14, // 0x8061 Strech RM - 0x8A, // 0x8062 Drv groupA num - 0x2A, // 0x8063 Drv groupB num - 0x0C, // 0x8064 Sensor num - 0x30, // 0x8065 FreqA factor - 0x38, // 0x8066 FreqB factor - 0x31,0x0D, // 0x8067 Panel bit freq - 0x00,0x00, // 0x8069 Reserved - 0x02, // 0x806B Panel tx gain - 0xB9, // 0x806C Panel rx gain - 0x03, // 0x806D Panel dump shift - 0x2D, // 0x806E Drv frame control - 0x00, // 0x806F Charging level up - 0x00, // 0x8070 Module switch 3 - 0x00, // 0x8071 Gesture distance - 0x00, // 0x8072 Gesture long press time - 0x00, // 0x8073 X/Y slope adjust - 0x03, // 0x8074 Gesture control - 0x64, // 0x8075 Gesture switch 1 - 0x32, // 0x8076 Gesture switch 2 - 0x00, // 0x8077 Gesture refresh rate - 0x00, // 0x8078 Gesture touch level - 0x00, // 0x8079 New green wake up level - 0x1D, // 0x807A Freq hopping start - 0x41, // 0x807B Freq hopping end - 0x94, // 0x807C Noise detect time - 0xC5, // 0x807D Hopping flag - 0x02, // 0x807E Hopping flag - 0x07, // 0x807F Noise threshold - 0x00, // 0x8080 Nois min threshold old - 0x00, // 0x8081 Reserved - 0x04, // 0x8082 Hopping sensor group - 0xA5, // 0x8083 Hopping Seg1 normalize - 0x1F, // 0x8084 Hopping Seg1 factor - 0x00, // 0x8085 Main clock adjust - 0x94, // 0x8086 Hopping Seg2 normalize - 0x25, // 0x8087 Hopping Seg2 factor - 0x00, // 0x8088 Reserved - 0x88, // 0x8089 Hopping Seg3 normalize - 0x2B, // 0x808A Hopping Seg3 factor - 0x00, // 0x808B Reserved - 0x7D, // 0x808C Hopping Seg4 normalize - 0x33, // 0x808D Hopping Seg4 factor - 0x00, // 0x808E Reserved - 0x74, // 0x808F Hopping Seg5 normalize - 0x3C, // 0x8090 Hopping Seg5 factor - 0x00, // 0x8091 Reserved - 0x74, // 0x8092 Hopping Seg6 normalize - 0x00, // 0x8093 Key1 - 0x00, // 0x8094 Key2 - 0x00, // 0x8095 Key3 - 0x00, // 0x8096 Key4 - 0x00, // 0x8097 Key area - 0x00, // 0x8098 Key touch level - 0x00, // 0x8099 Key leave level - 0x00, // 0x809A Key sens - 0x00, // 0x809B Key sens - 0x00, // 0x809C Key restrain - 0x00, // 0x809D Key restrain time - 0x00, // 0x809E Large gesture touch - 0x00, // 0x809F Reserved - 0x00, // 0x80A0 Reserved - 0x00, // 0x80A1 Hotknot noise map - 0x00, // 0x80A2 Link threshold - 0x00, // 0x80A3 Pxy threshold - 0x00, // 0x80A4 GHot dump shift - 0x00, // 0x80A5 GHot rx gain - 0x00, // 0x80A6 Freg gain - 0x00, // 0x80A7 Freg gain 1 - 0x00, // 0x80A8 Freg gain 2 - 0x00, // 0x80A9 Freg gain 3 - 0x00, // 0x80AA Reserved - 0x00, // 0x80AB Reserved - 0x00, // 0x80AC Reserved - 0x00, // 0x80AD Reserved - 0x00, // 0x80AE Reserved - 0x00, // 0x80AF Reserved - 0x00, // 0x80B0 Reserved - 0x00, // 0x80B1 Reserved - 0x00, // 0x80B2 Reserved - 0x00, // 0x80B3 Combine dis - 0x00, // 0x80B4 Split set - 0x00, // 0x80B5 Reserved - 0x00, // 0x80B6 Reserved - 0x18, // 0x80B7 Sensor CH0 - 0x16, // 0x80B8 Sensor CH1 - 0x14, // 0x80B9 Sensor CH2 - 0x12, // 0x80BA Sensor CH3 - 0x10, // 0x80BB Sensor CH4 - 0x0E, // 0x80BC Sensor CH5 - 0x0C, // 0x80BD Sensor CH6 - 0x0A, // 0x80BE Sensor CH7 - 0x08, // 0x80BF Sensor CH8 - 0x06, // 0x80C0 Sensor CH9 - 0x04, // 0x80C1 Sensor CH10 - 0x02, // 0x80C2 Sensor CH11 - 0xFF, // 0x80C3 Sensor CH12 - 0xFF, // 0x80C4 Sensor CH13 - 0x00, // 0x80C5 Reserved - 0x00, // 0x80C6 Reserved - 0x00, // 0x80C7 Reserved - 0x00, // 0x80C8 Reserved - 0x00, // 0x80C9 Reserved - 0x00, // 0x80CA Reserved - 0x00, // 0x80CB Reserved - 0x00, // 0x80CC Reserved - 0x00, // 0x80CD Reserved - 0x00, // 0x80CE Reserved - 0x00, // 0x80CF Reserved - 0x00, // 0x80D0 Reserved - 0x00, // 0x80D1 Reserved - 0x00, // 0x80D2 Reserved - 0x00, // 0x80D3 Reserved - 0x00, // 0x80D4 Reserved - 0x24, // 0x80D5 Driver CH0 - 0x22, // 0x80D6 Driver CH1 - 0x21, // 0x80D7 Driver CH2 - 0x20, // 0x80D8 Driver CH3 - 0x1F, // 0x80D9 Driver CH4 - 0x1E, // 0x80DA Driver CH5 - 0x1D, // 0x80DB Driver CH6 - 0x1C, // 0x80DC Driver CH7 - 0x18, // 0x80DD Driver CH8 - 0x16, // 0x80DE Driver CH9 - 0x13, // 0x80DF Driver CH10 - 0x12, // 0x80E0 Driver CH11 - 0x10, // 0x80E1 Driver CH12 - 0x0F, // 0x80E2 Driver CH13 - 0x0A, // 0x80E3 Driver CH14 - 0x08, // 0x80E4 Driver CH15 - 0x06, // 0x80E5 Driver CH16 - 0x04, // 0x80E6 Driver CH17 - 0x02, // 0x80E7 Driver CH18 - 0x00, // 0x80E8 Driver CH19 - 0xFF, // 0x80E9 Driver CH20 - 0xFF, // 0x80EA Driver CH21 - 0xFF, // 0x80EB Driver CH22 - 0xFF, // 0x80EC Driver CH23 - 0xFF, // 0x80ED Driver CH24 - 0xFF, // 0x80EE Driver CH25 - 0x00, // 0x80EF Reserved - 0x00, // 0x80F0 Reserved - 0x00, // 0x80F1 Reserved - 0x00, // 0x80F2 Reserved - 0x00, // 0x80F3 Reserved - 0x00, // 0x80F4 Reserved - 0x00, // 0x80F5 Reserved - 0x00, // 0x80F6 Reserved - 0x00, // 0x80F7 Reserved - 0x00, // 0x80F8 Reserved - 0x00, // 0x80F9 Reserved - 0x00, // 0x80FA Reserved - 0x00, // 0x80FB Reserved - 0x00, // 0x80FC Reserved - 0x00, // 0x80FD Reserved - 0x00, // 0x80FE Reserved - }; +const uint8_t GT911_Cfg[] = +{ + GT911_CFG_NUMER, // 0x8047 Config version + 0xE0, // 0x8048 X output map : x 480 + 0x01, + 0x10, // 0x804A Y ouptut max : y 272 + 0x01, + GT911_MAX_TP, // 0x804C Touch number + 0x3C, // 0x804D Module switch 1 : bit4= xy change Int mode + 0x20, // 0x804E Module switch 2 + 0x22, // 0x804F Shake_Count + 0x0A, // 0x8050 Filter + 0x28, // 0x8051 Larger touch + 0x0F, // 0x8052 Noise reduction + 0x5A, // 0x8053 Screen touch level + 0x3C, // 0x8054 Screen touch leave + 0x03, // 0x8055 Low power control + 0x05, // 0x8056 Refresh rate + 0x00, // 0x8057 X threshold + 0x00, // 0x8058 Y threshold + 0x00, // 0x8059 Reserved + 0x00, // 0x805A Reserved + 0x11, // 0x805B Space (top, bottom) + 0x11, // 0x805C Space (left, right) + 0x08, // 0x805D Mini filter + 0x18, // 0x805E Strech R0 + 0x1A, // 0x805F Strech R1 + 0x1E, // 0x8060 Strech R2 + 0x14, // 0x8061 Strech RM + 0x87, // 0x8062 Drv groupA num + 0x29, // 0x8063 Drv groupB num + 0x0A, // 0x8064 Sensor num + 0xCF, // 0x8065 FreqA factor + 0xD1, // 0x8066 FreqB factor + 0xB2, // 0x8067 Panel bit freq + 0x04, + 0x00, // 0x8069 Reserved + 0x00, + 0x00, // 0x806B Panel tx gain + 0xD8, // 0x806C Panel rx gain + 0x02, // 0x806D Panel dump shift + 0x1D, // 0x806E Drv frame control + 0x00, // 0x806F Charging level up + 0x01, // 0x8070 Module switch 3 + 0x00, // 0x8071 Gesture distance + 0x00, // 0x8072 Gesture long press time + 0x00, // 0x8073 X/Y slope adjust + 0x00, // 0x8074 Gesture control + 0x00, // 0x8075 Gesture switch 1 + 0x00, // 0x8076 Gesture switch 2 + 0x00, // 0x8077 Gesture refresh rate + 0x00, // 0x8078 Gesture touch level + 0x00, // 0x8079 New green wake up level + 0xB4, // 0x807A Freq hopping start + 0xEF, // 0x807B Freq hopping end + 0x94, // 0x807C Noise detect time + 0xD5, // 0x807D Hopping flag + 0x02, // 0x807E Hopping flag + 0x07, // 0x807F Noise threshold + 0x00, // 0x8080 Nois min threshold old + 0x00, // 0x8081 Reserved + 0x04, // 0x8082 Hopping sensor group + 0x6E, // 0x8083 Hopping Seg1 normalize + 0xB9, // 0x8084 Hopping Seg1 factor + 0x00, // 0x8085 Main clock adjust + 0x6A, // 0x8086 Hopping Seg2 normalize + 0xC4, // 0x8087 Hopping Seg2 factor + 0x00, // 0x8088 Reserved + 0x66, // 0x8089 Hopping Seg3 normalize + 0xCF, // 0x808A Hopping Seg3 factor + 0x00, // 0x808B Reserved + 0x62, // 0x808C Hopping Seg4 normalize + 0xDB, // 0x808D Hopping Seg4 factor + 0x00, // 0x808E Reserved + 0x5E, // 0x808F Hopping Seg5 normalize + 0xE8, // 0x8090 Hopping Seg5 factor + 0x00, // 0x8091 Reserved + 0x5E, // 0x8092 Hopping Seg6 normalize + 0x00, // 0x8093 Key1 + 0x00, // 0x8094 Key2 + 0x00, // 0x8095 Key3 + 0x00, // 0x8096 Key4 + 0x00, // 0x8097 Key area + 0x00, // 0x8098 Key touch level + 0x00, // 0x8099 Key leave level + 0x00, // 0x809A Key sens + 0x00, // 0x809B Key sens + 0x00, // 0x809C Key restrain + 0x00, // 0x809D Key restrain time + 0x00, // 0x809E Large gesture touch + 0x00, // 0x809F Reserved + 0x00, // 0x80A0 Reserved + 0x00, // 0x80A1 Hotknot noise map + 0x00, // 0x80A2 Link threshold + 0x00, // 0x80A3 Pxy threshold + 0x00, // 0x80A4 GHot dump shift + 0x00, // 0x80A5 GHot rx gain + 0x00, // 0x80A6 Freg gain + 0x00, // 0x80A7 Freg gain 1 + 0x00, // 0x80A8 Freg gain 2 + 0x00, // 0x80A9 Freg gain 3 + 0x00, // 0x80AA Reserved + 0x00, // 0x80AB Reserved + 0x00, // 0x80AC Reserved + 0x00, // 0x80AD Reserved + 0x00, // 0x80AE Reserved + 0x00, // 0x80AF Reserved + 0x00, // 0x80B0 Reserved + 0x00, // 0x80B1 Reserved + 0x00, // 0x80B2 Reserved + 0x00, // 0x80B3 Combine dis + 0x00, // 0x80B4 Split set + 0x00, // 0x80B5 Reserved + 0x00, // 0x80B6 Reserved + 0x14, // 0x80B7 Sensor CH0 + 0x12, // 0x80B8 Sensor CH1 + 0x10, // 0x80B9 Sensor CH2 + 0x0E, // 0x80BA Sensor CH3 + 0x0C, // 0x80BB Sensor CH4 + 0x0A, // 0x80BC Sensor CH5 + 0x08, // 0x80BD Sensor CH6 + 0x06, // 0x80BE Sensor CH7 + 0x04, // 0x80BF Sensor CH8 + 0x02, // 0x80C0 Sensor CH9 + 0xFF, // 0x80C1 Sensor CH10 + 0xFF, // 0x80C2 Sensor CH11 + 0xFF, // 0x80C3 Sensor CH12 + 0xFF, // 0x80C4 Sensor CH13 + 0x00, // 0x80C5 Reserved + 0x00, // 0x80C6 Reserved + 0x00, // 0x80C7 Reserved + 0x00, // 0x80C8 Reserved + 0x00, // 0x80C9 Reserved + 0x00, // 0x80CA Reserved + 0x00, // 0x80CB Reserved + 0x00, // 0x80CC Reserved + 0x00, // 0x80CD Reserved + 0x00, // 0x80CE Reserved + 0x00, // 0x80CF Reserved + 0x00, // 0x80D0 Reserved + 0x00, // 0x80D1 Reserved + 0x00, // 0x80D2 Reserved + 0x00, // 0x80D3 Reserved + 0x00, // 0x80D4 Reserved + 0x28, // 0x80D5 Driver CH0 + 0x26, // 0x80D6 Driver CH1 + 0x24, // 0x80D7 Driver CH2 + 0x22, // 0x80D8 Driver CH3 + 0x21, // 0x80D9 Driver CH4 + 0x20, // 0x80DA Driver CH5 + 0x1F, // 0x80DB Driver CH6 + 0x1E, // 0x80DC Driver CH7 + 0x1D, // 0x80DD Driver CH8 + 0x0C, // 0x80DE Driver CH9 + 0x0A, // 0x80DF Driver CH10 + 0x08, // 0x80E0 Driver CH11 + 0x06, // 0x80E1 Driver CH12 + 0x04, // 0x80E2 Driver CH13 + 0x02, // 0x80E3 Driver CH14 + 0x00, // 0x80E4 Driver CH15 + 0xFF, // 0x80E5 Driver CH16 + 0xFF, // 0x80E6 Driver CH17 + 0xFF, // 0x80E7 Driver CH18 + 0xFF, // 0x80E8 Driver CH19 + 0xFF, // 0x80E9 Driver CH20 + 0xFF, // 0x80EA Driver CH21 + 0xFF, // 0x80EB Driver CH22 + 0xFF, // 0x80EC Driver CH23 + 0xFF, // 0x80ED Driver CH24 + 0xFF, // 0x80EE Driver CH25 + 0x00, // 0x80EF Reserved + 0x00, // 0x80F0 Reserved + 0x00, // 0x80F1 Reserved + 0x00, // 0x80F2 Reserved + 0x00, // 0x80F3 Reserved + 0x00, // 0x80F4 Reserved + 0x00, // 0x80F5 Reserved + 0x00, // 0x80F6 Reserved + 0x00, // 0x80F7 Reserved + 0x00, // 0x80F8 Reserved + 0x00, // 0x80F9 Reserved + 0x00, // 0x80FA Reserved + 0x00, // 0x80FB Reserved + 0x00, // 0x80FC Reserved + 0x00, // 0x80FD Reserved + 0x00 // 0x80FE Reserved +}; //I2C #define GT_CMD_WR 0X28 //write From 6cf3fb51468d9522f4f784381427795acc1f8c79 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 28 Apr 2020 10:02:19 +0200 Subject: [PATCH 119/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index a26afc3f6..c3188bb7c 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1722,3 +1722,4 @@ Precision Aero Thomas Håkansson Gordon Evans Benny Simonsen +George Kennedy From 8b15a28a06636cef09ddd6e8051de26c07db507b Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 10:32:55 +0200 Subject: [PATCH 120/199] Cosmetics --- radio/src/gui/480x272/radio_diaganas.cpp | 5 +++++ radio/src/targets/horus/tp_gt911.h | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index b632bf00c..0df7ca1bf 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -21,6 +21,7 @@ #include "opentx.h" #if defined(RADIO_TX16S) #include "tp_gt911.h" +#include #endif constexpr coord_t LEFT_NAME_COLUMN = MENUS_MARGIN_LEFT; @@ -75,6 +76,10 @@ bool menuRadioDiagAnalogs(event_t event) lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); lcdDrawText(lcdNextPos, MENU_CONTENT_TOP + 7 * FH, ", "); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); + coord_t x = limit(10, (coord_t)touchState.x, 469); // TODO remove, prevent an emergency crash when drawing on y 280 line + coord_t y = limit(7, (coord_t)touchState.y, 264); // TODO remove, prevent an emergency crash when drawing on y 280 line + lcdDrawLine(x - 10, y - 7, x + 10, y + 7, SOLID); + lcdDrawLine(x - 10, y + 7, x + 10, y - 7, SOLID); } #endif diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index c09f62dae..d1d250790 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -229,8 +229,8 @@ const uint8_t GT911_Cfg[] = }; //I2C -#define GT_CMD_WR 0X28 //write -#define GT_CMD_RD 0X29 //read +#define GT_CMD_WR 0X28 +#define GT_CMD_RD 0X29 #define SLAVE_Write_Address 0X28 @@ -238,14 +238,14 @@ const uint8_t GT911_Cfg[] = #define GT_CTRL_REG 0X8040 #define GT_CFGS_REG 0X8047 #define GT_CHECK_REG 0X80FF -#define GT_PID_REG 0X8140 //ID +#define GT_PID_REG 0X8140 -#define GT_GSTID_REG 0X814E // -#define GT_TP1_REG 0X8150 // -#define GT_TP2_REG 0X8158 // -#define GT_TP3_REG 0X8160 // -#define GT_TP4_REG 0X8168 // -#define GT_TP5_REG 0X8170 // +#define GT_GSTID_REG 0X814E +#define GT_TP1_REG 0X8150 +#define GT_TP2_REG 0X8158 +#define GT_TP3_REG 0X8160 +#define GT_TP4_REG 0X8168 +#define GT_TP5_REG 0X8170 #define GT911_READ_XY_REG 0x814E #define GT911_CLEARBUF_REG 0x814E From a53745d8fd9361b04ab144db14330a2598a03ce9 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 11:05:43 +0200 Subject: [PATCH 121/199] Fix x10 video buffer protection --- radio/src/gui/480x272/lcd.cpp | 4 ++++ radio/src/gui/480x272/radio_diaganas.cpp | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 6659e386b..9c6f48cdf 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -422,7 +422,11 @@ void lcdDrawPoint(coord_t x, coord_t y, LcdFlags att) { display_t * p = PIXEL_PTR(x, y); display_t color = lcdColorTable[COLOR_IDX(att)]; +#if defined(PCBX10) + if (p >= displayBuf) { // x10 screen is reversed, so overflow are happening the other way around +#else if (p < DISPLAY_END) { +#endif *p = color; } } diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 0df7ca1bf..b269f8fc0 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -76,10 +76,8 @@ bool menuRadioDiagAnalogs(event_t event) lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); lcdDrawText(lcdNextPos, MENU_CONTENT_TOP + 7 * FH, ", "); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); - coord_t x = limit(10, (coord_t)touchState.x, 469); // TODO remove, prevent an emergency crash when drawing on y 280 line - coord_t y = limit(7, (coord_t)touchState.y, 264); // TODO remove, prevent an emergency crash when drawing on y 280 line - lcdDrawLine(x - 10, y - 7, x + 10, y + 7, SOLID); - lcdDrawLine(x - 10, y + 7, x + 10, y - 7, SOLID); + lcdDrawLine(touchState.x - 10, touchState.y - 7, touchState.x + 10, touchState.y + 7, SOLID); + lcdDrawLine(touchState.x - 10, touchState.y + 7, touchState.x + 10, touchState.y - 7, SOLID); } #endif From 94b3811bbbf274b758df5d5250b5826dce96b486 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 11:50:30 +0200 Subject: [PATCH 122/199] y is not x ! --- radio/src/gui/480x272/lcd.cpp | 2 +- radio/src/gui/480x272/radio_diaganas.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 9c6f48cdf..e77fb66c5 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -423,7 +423,7 @@ void lcdDrawPoint(coord_t x, coord_t y, LcdFlags att) display_t * p = PIXEL_PTR(x, y); display_t color = lcdColorTable[COLOR_IDX(att)]; #if defined(PCBX10) - if (p >= displayBuf) { // x10 screen is reversed, so overflow are happening the other way around + if (p >= displayBuf && x < LCD_W) { // x10 screen is reversed, so overflow are happening the other way around #else if (p < DISPLAY_END) { #endif diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index b269f8fc0..70d769d18 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -76,8 +76,8 @@ bool menuRadioDiagAnalogs(event_t event) lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x); lcdDrawText(lcdNextPos, MENU_CONTENT_TOP + 7 * FH, ", "); lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y); - lcdDrawLine(touchState.x - 10, touchState.y - 7, touchState.x + 10, touchState.y + 7, SOLID); - lcdDrawLine(touchState.x - 10, touchState.y + 7, touchState.x + 10, touchState.y - 7, SOLID); + lcdDrawLine(touchState.x - 10, touchState.y - 8, touchState.x + 10, touchState.y + 8, SOLID); + lcdDrawLine(touchState.x - 10, touchState.y + 8, touchState.x + 10, touchState.y - 8, SOLID); } #endif From 7ee5b1d0249ccd19d37032fcbac3fb8ac2710017 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Tue, 28 Apr 2020 11:59:18 +0200 Subject: [PATCH 123/199] Set SD card version to 26 becasue of already produced cards --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0011a7aa..b2762bf4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "8") 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 "0027") +set(SDCARD_REVISION "0026") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) From be2c10c6cc0be86c4b5148890c241a528ad4b489 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 13:54:09 +0200 Subject: [PATCH 124/199] Cosmetics --- CMakeLists.txt | 2 +- radio/src/dataconstants.h | 5 ++++- radio/src/gui/480x272/radio_diaganas.cpp | 2 +- radio/src/gui/480x272/radio_hardware.cpp | 12 ++++-------- radio/src/targets/horus/tp_gt911.cpp | 13 ++++++------- radio/src/targets/horus/tp_gt911.h | 16 ++++++++-------- radio/src/translations.cpp | 3 +-- radio/src/translations.h | 3 +-- radio/src/translations/cz.h.txt | 3 +-- radio/src/translations/de.h.txt | 3 +-- radio/src/translations/en.h.txt | 3 +-- radio/src/translations/es.h.txt | 3 +-- radio/src/translations/fi.h.txt | 3 +-- radio/src/translations/fr.h.txt | 3 +-- radio/src/translations/it.h.txt | 3 +-- radio/src/translations/nl.h.txt | 3 +-- radio/src/translations/pl.h.txt | 3 +-- radio/src/translations/pt.h.txt | 3 +-- radio/src/translations/se.h.txt | 3 +-- 19 files changed, 37 insertions(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2762bf4b..f0011a7aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "8") 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 "0026") +set(SDCARD_REVISION "0027") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 65f12aa48..ceda80447 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -204,7 +204,10 @@ enum TrainerMode { enum ModuleIndex { EXTERNAL_MODULE, EXTRA_MODULE, - SPORT_MODULE + SPORT_MODULE, + TRAINER_MODE_MASTER_BLUETOOTH, + TRAINER_MODE_SLAVE_BLUETOOTH, + TRAINER_MODE_MULTI }; #endif diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index 70d769d18..e82b96a1c 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -68,7 +68,7 @@ bool menuRadioDiagAnalogs(event_t event) #if defined(HARDWARE_TOUCH) if (HAS_TOUCH_PANEL()) { - lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, "Touch panel:"); + lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, STR_TOUCH_PANEL); } if (touchPanelEvent) { diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index e50dcae33..291fcb7d7 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -412,14 +412,10 @@ bool menuRadioHardware(event_t event) lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); lcdDrawText(lcdNextPos + 10, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { - switch (menuHorizontalPosition) { - case 0: - pushMenu(menuRadioDiagAnalogs); - break; - case 1: - pushMenu(menuRadioDiagKeys); - break; - } + if (menuHorizontalPosition == 0) + pushMenu(menuRadioDiagAnalogs); + else + pushMenu(menuRadioDiagKeys);break; } break; } diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index ffad5cc48..5c4929e95 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -42,7 +42,7 @@ uint8_t GT911_Send_Cfg(uint8_t mode) uint8_t buf[2]; uint8_t i = 0; buf[0] = 0; - buf[1] = mode; // + buf[1] = mode; for (i = 0; i < sizeof(GT911_Cfg); i++) buf[0] += GT911_Cfg[i];//check sum @@ -174,11 +174,10 @@ void I2C_Stop(void) uint8_t I2C_Wait_Ack(void) { uint8_t ucErrTime = 0; - SDA_IN(); // + SDA_IN(); I2C_SDA_H(); delay_us(2); - //I2C_SCL_L();delay_us(6); - I2C_SCL_H();//delay_us(6); + I2C_SCL_H(); while (READ_SDA) { ucErrTime++; if (ucErrTime > 166) { @@ -188,7 +187,7 @@ uint8_t I2C_Wait_Ack(void) delay_us(1); } I2C_SDA_L(); - I2C_SCL_L();// + I2C_SCL_L(); return 0; } @@ -219,7 +218,7 @@ void I2C_Send_Byte(uint8_t txd) uint8_t t; SDA_OUT(); - I2C_SCL_L();// + I2C_SCL_L(); for (t = 0; t < 8; t++) { if ((txd & 0x80) >> 7) I2C_SDA_H(); @@ -346,7 +345,7 @@ bool touchPanelInit(void) delay_ms(10); tmp[0] = 0X00; - gt911WriteRegister(GT_CTRL_REG, tmp, 1);//end reset + gt911WriteRegister(GT_CTRL_REG, tmp, 1); //end reset touchGT911Flag = true; TOUCH_AF_ExtiConfig(); diff --git a/radio/src/targets/horus/tp_gt911.h b/radio/src/targets/horus/tp_gt911.h index d1d250790..2b5f7d32c 100644 --- a/radio/src/targets/horus/tp_gt911.h +++ b/radio/src/targets/horus/tp_gt911.h @@ -248,14 +248,14 @@ const uint8_t GT911_Cfg[] = #define GT_TP5_REG 0X8170 #define GT911_READ_XY_REG 0x814E -#define GT911_CLEARBUF_REG 0x814E -#define GT911_CONFIG_REG 0x8047 -#define GT911_COMMAND_REG 0x8040 -#define GT911_PRODUCT_ID_REG 0x8140 -#define GT911_VENDOR_ID_REG 0x814A -#define GT911_CONFIG_VERSION_REG 0x8047 -#define GT911_CONFIG_CHECKSUM_REG 0x80FF -#define GT911_FIRMWARE_VERSION_REG 0x8144 +#define GT911_CLEARBUF_REG 0x814E +#define GT911_CONFIG_REG 0x8047 +#define GT911_COMMAND_REG 0x8040 +#define GT911_PRODUCT_ID_REG 0x8140 +#define GT911_VENDOR_ID_REG 0x814A +#define GT911_CONFIG_VERSION_REG 0x8047 +#define GT911_CONFIG_CHECKSUM_REG 0x80FF +#define GT911_FIRMWARE_VERSION_REG 0x8144 PACK(typedef struct { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 0c0494055..4f43e33d1 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -215,7 +215,6 @@ const char STR_MENUSPECIALFUNCS[] = TR_MENUSPECIALFUNCS; const char STR_MENUVERSION[] = TR_MENUVERSION; const char STR_MENU_RADIO_SWITCHES[] = TR_MENU_RADIO_SWITCHES; const char STR_MENU_RADIO_ANALOGS[] = TR_MENU_RADIO_ANALOGS; -const char STR_MENU_RADIO_TOUCH[] = TR_MENU_RADIO_TOUCH; const char STR_MENUCALIBRATION[] = TR_MENUCALIBRATION; const char STR_MENUMODELSEL[] = TR_MENUMODELSEL; const char STR_MENUSETUP[] = TR_MENUSETUP; @@ -320,7 +319,6 @@ const char STR_MONITOR_SCREENS[] = TR_MONITOR_SCREENS; const char STR_RESET_BTN[] = TR_RESET_BTN; const char STR_DEBUG[] = TR_DEBUG; const char STR_KEYS_BTN[] = TR_KEYS_BTN; -const char STR_TOUCH_BTN[] = TR_TOUCH_BTN; const char STR_ANALOGS_BTN[] = TR_ANALOGS_BTN; const char STR_TOUCH_NOTFOUND[] = TR_TOUCH_NOTFOUND; const char STR_TOUCH_EXIT[] = TR_TOUCH_EXIT; @@ -592,6 +590,7 @@ const char STR_EXIT[] = TR_EXIT; const char STR_MODULE_RANGE[] = TR_MODULE_RANGE; const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS; const char STR_SPORT_UPDATE_POWER_MODE[] = TR_SPORT_UPDATE_POWER_MODE; +const char STR_TOUCH_PANEL[] = TR_TOUCH_PANEL; #if defined(PCBHORUS) const char STR_ASSIGN_SPLASH[] = TR_ASSIGN_SPLASH; diff --git a/radio/src/translations.h b/radio/src/translations.h index 3dfdac8af..6b0038118 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -169,6 +169,7 @@ extern const char STR_VSENSORTYPES[]; extern const char STR_VFORMULAS[]; extern const char STR_VPREC[]; extern const char STR_VCELLINDEX[]; +extern const char STR_TOUCH_PANEL[]; #if defined(BLUETOOTH) extern const char STR_BLUETOOTH[]; @@ -356,7 +357,6 @@ extern const char STR_MENUSPECIALFUNCS[]; extern const char STR_MENUVERSION[]; extern const char STR_MENU_RADIO_SWITCHES[]; extern const char STR_MENU_RADIO_ANALOGS[]; -extern const char STR_MENU_RADIO_TOUCH[]; extern const char STR_MENUCALIBRATION[]; extern const char STR_MENUMODELSEL[]; extern const char STR_MENUSETUP[]; @@ -496,7 +496,6 @@ extern const char STR_MONITOR_SCREENS[]; extern const char STR_RESET_BTN[]; extern const char STR_DEBUG[]; extern const char STR_KEYS_BTN[]; -extern const char STR_TOUCH_BTN[]; extern const char STR_ANALOGS_BTN[]; extern const char STR_TOUCH_NOTFOUND[]; extern const char STR_TOUCH_EXIT[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 40261da38..08ae06de2 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -590,7 +590,6 @@ #define TR_MENUVERSION "VERZE" #define TR_MENU_RADIO_SWITCHES "DIAG" #define TR_MENU_RADIO_ANALOGS "ANALOGY" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRACE" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trimy => Subtrimy" @@ -917,7 +916,6 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Přepínače")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogy")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -994,6 +992,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Název" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index c946b8fb6..62478e7ed 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -594,7 +594,6 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("Schalter-Test", "Schalter-Test") #define TR_MENU_RADIO_ANALOGS "Geber-Test" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG-Analog") #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -919,7 +918,6 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Testen" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1000,6 +998,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis specific column headers #define TR_PHASES_HEADERS_NAME "Name " diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 359598005..72363c477 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -593,7 +593,6 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("SWITCHES", "SWITCHES TEST") #define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "ANALOGS TEST") -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -918,7 +917,6 @@ #define TR_RESET_BTN BUTTON("Reset") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("Keys", "Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -999,6 +997,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Name" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 3fbe10531..b022314fa 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -587,7 +587,6 @@ #define TR_MENU_RADIO_SWITCHES TR("INTERUPTS", "TEST INTERRUPTORES") #define TR_MENU_RADIO_ANALOGS TR("ANALÓGICOS", "TEST ANALÓGICOS") #define TR_MENUCALIBRATION "CALIBRACIÓN" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Offsets" #else @@ -920,7 +919,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -998,6 +996,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS TR("No hay pant. telemetría", "No hay pantallas de telemetría") +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nombre" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 9ef39befe..afaef5c33 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -602,7 +602,6 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("SWITCHES","SWITCH TEST") #define TR_MENU_RADIO_ANALOGS TR("ANAS","ANALOG INPUTS") -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -936,7 +935,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1013,6 +1011,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Name" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 49876e791..422205dd5 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -613,7 +613,6 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("INTERS", "TEST INTERRUPTEURS") #define TR_MENU_RADIO_ANALOGS TR("ANAS", "ENTREES ANALOGIQUES") -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRATION" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -938,7 +937,6 @@ #define TR_RESET_BTN BUTTON("RAZ") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("Btns","Inters")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1023,6 +1021,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nom" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 9151ec531..750f77a7c 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -612,7 +612,6 @@ #define TR_MENUVERSION "VERSIONE" #define TR_MENU_RADIO_SWITCHES "DIAG" #define TR_MENU_RADIO_ANALOGS "ANAS" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRAZIONE" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -938,7 +937,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Interruttori")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analogico","Analogici")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1015,6 +1013,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nome" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 9acf7e8a8..f36f75cf1 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -597,7 +597,6 @@ #define TR_MENUVERSION "VERSIE" #define TR_MENU_RADIO_SWITCHES TR("Schak.", "Schakelaar-Test") #define TR_MENU_RADIO_ANALOGS "Analoog-Test" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION TR("CALIB. ANALOOG", "CALIBRERING Sticks+Pots") #if defined(COLORLCD) @@ -924,7 +923,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1007,6 +1005,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Name" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 9904709c2..5fd59c2ec 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -611,7 +611,6 @@ #define TR_MENUVERSION "WERSJA" #define TR_MENU_RADIO_SWITCHES TR("PRZEŁ","TEST PRZEŁ") #define TR_MENU_RADIO_ANALOGS TR("WE-ANA","WEJŚCIA ANALOG.") -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRACJA" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trymery => Subtrimy" @@ -937,7 +936,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1014,6 +1012,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nazwa" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 62caa704c..857bc3c35 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -593,7 +593,6 @@ #define TR_MENUVERSION "VERSAO" #define TR_MENU_RADIO_SWITCHES "DIAGNOST" #define TR_MENU_RADIO_ANALOGS "ANALOGICOS" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "CALIBRAGEM" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" @@ -927,7 +926,6 @@ #define TR_RESET_BTN "[Reset]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1004,6 +1002,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Name" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index cfc7ded9b..feff5f1d2 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -610,7 +610,6 @@ #define TR_MENUVERSION "VERSION" #define TR_MENU_RADIO_SWITCHES TR("BRYTARE","TEST AV BRYTARE") #define TR_MENU_RADIO_ANALOGS "ANALOGA VÄRDEN" -#define TR_MENU_RADIO_TOUCH "TOUCHSCREEN TEST" #define TR_MENUCALIBRATION "KALIBRERING" #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "[Spara Trimvärden]" @@ -937,7 +936,6 @@ #define TR_RESET_BTN "[Nollställ]" #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Switches")) -#define TR_TOUCH_BTN BUTTON("Touch") #define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs")) #define TR_TOUCH_NOTFOUND "Touch hardware not found" #define TR_TOUCH_EXIT "Touch screen to exit" @@ -1014,6 +1012,7 @@ #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " #define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" +#define TR_TOUCH_PANEL "Touch panel:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Namn" From 512db24f3377d9dad3f61564890f3549e6b166a8 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 13:59:39 +0200 Subject: [PATCH 125/199] Some tts fixes (#7547) --- radio/util/tts_en.py | 4 +++- radio/util/tts_fr.py | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/radio/util/tts_en.py b/radio/util/tts_en.py index e53cfd348..dff2e29dd 100755 --- a/radio/util/tts_en.py +++ b/radio/util/tts_en.py @@ -72,7 +72,9 @@ for s, f in [("trim center", "midtrim"), ("receiver still connected", "modelpwr"), ]: systemSounds.append((s, filename(f))) -for i, (s, f) in enumerate([("gear!, up!", "gearup"), +for i, (s, f) in enumerate([("armed", "armed"), + ("disarmed", "disarm"), + ("gear!, up!", "gearup"), ("gear!, down!", "geardn"), ("flaps!, up!", "flapup"), ("flaps!, down!", "flapdn"), diff --git a/radio/util/tts_fr.py b/radio/util/tts_fr.py index 736fef4c1..9dc046fa5 100755 --- a/radio/util/tts_fr.py +++ b/radio/util/tts_fr.py @@ -71,9 +71,11 @@ for s, f in [("Trim centré", "midtrim"), ("Récepteur encore sous tension", "modelpwr"), ]: systemSounds.append((s, filename(f))) -for i, (s, f) in enumerate([("altitude", "altitude"), +for i, (s, f) in enumerate([("armé", "armed"), + ("désarmé", "disarm"), + ("altitude", "alt"), ("température moteur", "moteur"), - ("température contrôleur", "cntrleur"), + ("température contrôleur", "tctrl"), ("train rentré", "gearup"), ("train sorti", "geardn"), ("volets rentrés", "flapup"), From 114fd2c4f3834b5fd58746d509b283e3c723fb39 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 16:13:17 +0200 Subject: [PATCH 126/199] Better sky9x fix --- radio/src/dataconstants.h | 5 +---- radio/src/gui/gui_common.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index ceda80447..65f12aa48 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -204,10 +204,7 @@ enum TrainerMode { enum ModuleIndex { EXTERNAL_MODULE, EXTRA_MODULE, - SPORT_MODULE, - TRAINER_MODE_MASTER_BLUETOOTH, - TRAINER_MODE_SLAVE_BLUETOOTH, - TRAINER_MODE_MULTI + SPORT_MODULE }; #endif diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 498c63a89..1ae1a45cc 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -739,12 +739,12 @@ bool isTrainerModeAvailable(int mode) return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER; #endif -#if !defined(BLUETOOTH) || defined(PCBX9E) - if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH) - return false; -#else +#if defined(BLUETOOTH) && !defined(PCBX9E) if (g_eeGeneral.bluetoothMode != BLUETOOTH_TRAINER && (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH)) return false; +#elif !defined(PCBSKY9X) + if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH) + return false; #endif #if defined(PCBXLITE) && !defined(PCBXLITES) From 3d9256e5558e2b434a43b8c8065bc79b928e2d1f Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 28 Apr 2020 16:50:24 +0200 Subject: [PATCH 127/199] Default AETR for Jumper radio too --- radio/src/opentx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 5f89d258b..bcb696da8 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -295,7 +295,7 @@ void generalDefault() #if defined(FRSKY_RELEASE) g_eeGeneral.templateSetup = 17; /* TAER */ -#elif defined(RADIO_TX16S) //TODO : is RADIO_FAMILLY_T16 better ? +#elif defined(RADIO_FAMILY_T16) g_eeGeneral.templateSetup = 21; /* AETR to match bundled multi */ #endif From 92f9e79258113ec95065900986f7ed4452c81333 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 29 Apr 2020 10:02:54 +0200 Subject: [PATCH 128/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index c3188bb7c..2b5ef703f 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1723,3 +1723,4 @@ Thomas Håkansson Gordon Evans Benny Simonsen George Kennedy +Stefano Boggia From 5d0805c66556f8fe54c82381da20e35ea2a926b4 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 12:05:25 +0200 Subject: [PATCH 129/199] Some improvements --- radio/src/gui/480x272/radio_diaganas.cpp | 2 +- radio/src/gui/480x272/radio_hardware.cpp | 2 +- radio/src/gui/480x272/topbar.cpp | 3 ++- radio/src/opentx.cpp | 10 +--------- radio/src/targets/horus/CMakeLists.txt | 7 +++++++ 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/radio/src/gui/480x272/radio_diaganas.cpp b/radio/src/gui/480x272/radio_diaganas.cpp index e82b96a1c..ae452f7ae 100644 --- a/radio/src/gui/480x272/radio_diaganas.cpp +++ b/radio/src/gui/480x272/radio_diaganas.cpp @@ -62,7 +62,7 @@ bool menuRadioDiagAnalogs(event_t event) #endif } -#if (NUM_PWMSTICKS > 0) || defined(SIMU) +#if defined(SIMU) || NUM_PWMSTICKS > 0 lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 8 * FH, STICKS_PWM_ENABLED() ? "Sticks: PWM" : "Sticks: ANA"); #endif diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 291fcb7d7..37f81bed3 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -415,7 +415,7 @@ bool menuRadioHardware(event_t event) if (menuHorizontalPosition == 0) pushMenu(menuRadioDiagAnalogs); else - pushMenu(menuRadioDiagKeys);break; + pushMenu(menuRadioDiagKeys); } break; } diff --git a/radio/src/gui/480x272/topbar.cpp b/radio/src/gui/480x272/topbar.cpp index f14d9a237..81b1f643a 100644 --- a/radio/src/gui/480x272/topbar.cpp +++ b/radio/src/gui/480x272/topbar.cpp @@ -91,8 +91,9 @@ void drawTopBar() /* Tx battery */ uint8_t bars = GET_TXBATT_BARS(5); #if defined(USB_CHARGER) - if (usbChargerLed() && BLINK_ON_PHASE) + if (usbChargerLed() && BLINK_ON_PHASE) { lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR); + } else { #endif lcdDrawBitmapPattern(LCD_W - 130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index bcb696da8..eeb2d2ef2 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -293,11 +293,7 @@ void generalDefault() g_eeGeneral.stickMode = DEFAULT_MODE - 1; #endif -#if defined(FRSKY_RELEASE) - g_eeGeneral.templateSetup = 17; /* TAER */ -#elif defined(RADIO_FAMILY_T16) - g_eeGeneral.templateSetup = 21; /* AETR to match bundled multi */ -#endif + g_eeGeneral.templateSetup = DEFAULT_TEMPLATE_SETUP; g_eeGeneral.backlightMode = e_backlight_mode_all; g_eeGeneral.lightAutoOff = 2; @@ -324,11 +320,7 @@ void generalDefault() #endif #if defined(COLORLCD) -#if defined(RADIO_TX16S) - strcpy(g_eeGeneral.themeName, "Darkblue"); -#else strcpy(g_eeGeneral.themeName, theme->getName()); -#endif theme->init(); #endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index ba4052d48..b07230e4a 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -17,6 +17,7 @@ set(LINKER_SCRIPT targets/horus/stm32f4_flash.ld) set(RTC_BACKUP_RAM YES) set(PPM_LIMITS_SYMETRICAL YES) set(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)") +set(DEFAULT_TEMPLATE_SETUP "0" CACHE STRING "Default channel order") # for size report script set(CPU_TYPE_FULL STM32F429xI) @@ -50,6 +51,7 @@ if (PCB STREQUAL X10) elseif (PCBREV STREQUAL T16) set(FLAVOUR t16) set(LUA_EXPORT lua_export_t16) + set(DEFAULT_TEMPLATE_SETUP 21) add_definitions(-DRADIO_T16) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" OFF) @@ -57,6 +59,7 @@ if (PCB STREQUAL X10) elseif (PCBREV STREQUAL TX16S) set(FLAVOUR tx16s) set(LUA_EXPORT lua_export_t16) + set(DEFAULT_TEMPLATE_SETUP 21) add_definitions(-DRADIO_TX16S) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON) @@ -139,6 +142,10 @@ if(INTERNAL_MODULE_MULTI) add_definitions(-DINTERNAL_MODULE_MULTI) endif() +if(NOT DEFAULT_TEMPLATE_SETUP STREQUAL "") + add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) +endif() + include_directories(${RADIO_SRC_DIRECTORY}/fonts/480x272 gui/${GUI_DIR} gui/${GUI_DIR}/layouts) file(GLOB THEMES_SRC RELATIVE ${RADIO_SRC_DIRECTORY}/gui/480x272 ${RADIO_SRC_DIRECTORY}/gui/480x272/themes/*.cpp) From fe003a74d567b98c657518f2d4e3704df2c9885a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 29 Apr 2020 15:48:36 +0200 Subject: [PATCH 130/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 2b5ef703f..743ed2b0b 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1724,3 +1724,4 @@ Gordon Evans Benny Simonsen George Kennedy Stefano Boggia +Maksym Arshynkin From 1eaf909bd4ab12c58a1f195d757c779a63eb51e1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 17:56:24 +0200 Subject: [PATCH 131/199] Some improvements --- radio/src/CMakeLists.txt | 7 +++++++ radio/src/targets/horus/CMakeLists.txt | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 20852450c..96c9c622e 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -418,6 +418,13 @@ endif() set(SRC ${SRC} ${FIRMWARE_SRC}) +if(INTERNAL_MODULE_MULTI) + set(DEFAULT_TEMPLATE_SETUP 21 CACHE STRING "") +else() + set(DEFAULT_TEMPLATE_SETUP 0 CACHE STRING "") +endif() +message(STATUS "ICI ${INTERNAL_MODULE_MULTI} ${DEFAULT_TEMPLATE_SETUP}") +add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) ##### firmware target ##### diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index b07230e4a..ba4052d48 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -17,7 +17,6 @@ set(LINKER_SCRIPT targets/horus/stm32f4_flash.ld) set(RTC_BACKUP_RAM YES) set(PPM_LIMITS_SYMETRICAL YES) set(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)") -set(DEFAULT_TEMPLATE_SETUP "0" CACHE STRING "Default channel order") # for size report script set(CPU_TYPE_FULL STM32F429xI) @@ -51,7 +50,6 @@ if (PCB STREQUAL X10) elseif (PCBREV STREQUAL T16) set(FLAVOUR t16) set(LUA_EXPORT lua_export_t16) - set(DEFAULT_TEMPLATE_SETUP 21) add_definitions(-DRADIO_T16) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" OFF) @@ -59,7 +57,6 @@ if (PCB STREQUAL X10) elseif (PCBREV STREQUAL TX16S) set(FLAVOUR tx16s) set(LUA_EXPORT lua_export_t16) - set(DEFAULT_TEMPLATE_SETUP 21) add_definitions(-DRADIO_TX16S) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON) @@ -142,10 +139,6 @@ if(INTERNAL_MODULE_MULTI) add_definitions(-DINTERNAL_MODULE_MULTI) endif() -if(NOT DEFAULT_TEMPLATE_SETUP STREQUAL "") - add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) -endif() - include_directories(${RADIO_SRC_DIRECTORY}/fonts/480x272 gui/${GUI_DIR} gui/${GUI_DIR}/layouts) file(GLOB THEMES_SRC RELATIVE ${RADIO_SRC_DIRECTORY}/gui/480x272 ${RADIO_SRC_DIRECTORY}/gui/480x272/themes/*.cpp) From b641906dd4d553ea1c96472ea23865d36756144a Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 17:58:13 +0200 Subject: [PATCH 132/199] remove debug message --- radio/src/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 96c9c622e..7310b878a 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -423,7 +423,6 @@ if(INTERNAL_MODULE_MULTI) else() set(DEFAULT_TEMPLATE_SETUP 0 CACHE STRING "") endif() -message(STATUS "ICI ${INTERNAL_MODULE_MULTI} ${DEFAULT_TEMPLATE_SETUP}") add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) ##### firmware target ##### From e3eb0d291f2c2354775b8be690c59a47c1aa5280 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 18:08:38 +0200 Subject: [PATCH 133/199] Fix simu compilation --- radio/src/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 7310b878a..989457f92 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -359,6 +359,13 @@ endif() add_definitions(-DPOPUP_LEVEL=${POPUP_LEVEL}) +if(INTERNAL_MODULE_MULTI) + set(DEFAULT_TEMPLATE_SETUP 21 CACHE STRING "") +else() + set(DEFAULT_TEMPLATE_SETUP 0 CACHE STRING "") +endif() +add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) + set(SRC ${SRC} opentx.cpp @@ -418,13 +425,6 @@ endif() set(SRC ${SRC} ${FIRMWARE_SRC}) -if(INTERNAL_MODULE_MULTI) - set(DEFAULT_TEMPLATE_SETUP 21 CACHE STRING "") -else() - set(DEFAULT_TEMPLATE_SETUP 0 CACHE STRING "") -endif() -add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP}) - ##### firmware target ##### option(FIRMWARE_TARGET "Configure Firmware target (can be turned of for compiling Companion only)" ON) From 6f35853fda4e4644f23b6649e95a2c506bf46cf6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 19:01:57 +0200 Subject: [PATCH 134/199] Change default theme for TX16s --- radio/src/gui/480x272/themes/darkblue.cpp | 5 ++++- radio/src/gui/480x272/themes/default.cpp | 4 +++- radio/src/targets/horus/CMakeLists.txt | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/480x272/themes/darkblue.cpp b/radio/src/gui/480x272/themes/darkblue.cpp index bf244169e..05a8b2e1f 100644 --- a/radio/src/gui/480x272/themes/darkblue.cpp +++ b/radio/src/gui/480x272/themes/darkblue.cpp @@ -266,4 +266,7 @@ class DarkblueTheme: public Theme BitmapBuffer * DarkblueTheme::menuIconNormal[MENUS_ICONS_COUNT] = { NULL }; BitmapBuffer * DarkblueTheme::menuIconSelected[MENUS_ICONS_COUNT] = { NULL }; -const DarkblueTheme darkblueTheme; +DarkblueTheme darkblueTheme; +#if defined(DEFAULT_THEME_DARKBLUE) + Theme * theme = &darkblueTheme; +#endif \ No newline at end of file diff --git a/radio/src/gui/480x272/themes/default.cpp b/radio/src/gui/480x272/themes/default.cpp index 5ecd5bfbd..b90ccd1a2 100644 --- a/radio/src/gui/480x272/themes/default.cpp +++ b/radio/src/gui/480x272/themes/default.cpp @@ -353,4 +353,6 @@ BitmapBuffer * DefaultTheme::menuIconSelected[MENUS_ICONS_COUNT] = { NULL }; BitmapBuffer * DefaultTheme::currentMenuBackground = NULL; DefaultTheme defaultTheme; -Theme * theme = &defaultTheme; +#if defined(DEFAULT_THEME_DEFAULT) + Theme * theme = &defaultTheme; +#endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index ba4052d48..f45d79b3c 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -63,6 +63,7 @@ if (PCB STREQUAL X10) option(BLUETOOTH "Support for bluetooth module" OFF) set(HARDWARE_TOUCH YES) set(USB_CHARGER YES) + set(DEFAULT_THEME_DARKBLUE ON) if (NOT BLUETOOTH) set(AUX_SERIAL ON) endif() @@ -115,6 +116,12 @@ add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK) add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE}) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) +if(DEFAULT_THEME_DARKBLUE) + add_definitions(-DDEFAULT_THEME_DARKBLUE) +else() + add_definitions(-DDEFAULT_THEME_DEFAULT) +endif() + if(NOT UNEXPECTED_SHUTDOWN) add_definitions(-DNO_UNEXPECTED_SHUTDOWN) endif() From 5c25703142291a8340abf8d835abd62a8ea224a3 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Apr 2020 20:05:29 +0200 Subject: [PATCH 135/199] Further improvements --- radio/src/targets/horus/CMakeLists.txt | 6 +++--- tools/build-frsky.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index f45d79b3c..a02abfa12 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -63,7 +63,7 @@ if (PCB STREQUAL X10) option(BLUETOOTH "Support for bluetooth module" OFF) set(HARDWARE_TOUCH YES) set(USB_CHARGER YES) - set(DEFAULT_THEME_DARKBLUE ON) + set(DEFAULT_THEME "DARKBLUE") if (NOT BLUETOOTH) set(AUX_SERIAL ON) endif() @@ -116,8 +116,8 @@ add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK) add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE}) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) -if(DEFAULT_THEME_DARKBLUE) - add_definitions(-DDEFAULT_THEME_DARKBLUE) +if(DEFAULT_THEME) + add_definitions(-DDEFAULT_THEME_${DEFAULT_THEME}) else() add_definitions(-DDEFAULT_THEME_DEFAULT) endif() diff --git a/tools/build-frsky.py b/tools/build-frsky.py index 3db1e97fb..e4478a2a8 100755 --- a/tools/build-frsky.py +++ b/tools/build-frsky.py @@ -134,7 +134,7 @@ def build(board, translation, srcdir): os.mkdir("output") path = tempfile.mkdtemp() os.chdir(path) - command = "cmake %s -DTRANSLATIONS=%s -DFRSKY_RELEASE=YES %s" % (cmake_options, translation, srcdir) + command = "cmake %s -DTRANSLATIONS=%s -DFRSKY_RELEASE=YES -DDEFAULT_TEMPLATE_SETUP=17 %s" % (cmake_options, translation, srcdir) print(command) os.system(command) os.system("make firmware -j6") From 0050820fda6212065a7a27a4dca47864441812d0 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Wed, 29 Apr 2020 23:11:35 +0200 Subject: [PATCH 136/199] Missing flexr9m for TX16S --- companion/src/firmwares/opentx/opentxinterface.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index a8c38ff42..5c584eceb 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1342,13 +1342,14 @@ void registerOpenTxFirmwares() addOpenTxFrskyOptions(firmware); firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module")); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); - registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); + registerOpenTxFirmware(firmware); /* Radiomaster TX16S board */ firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); + addOpenTxRfOptions(firmware, FLEX); registerOpenTxFirmware(firmware); /* 9XR-Pro */ From 9a31901b7f461c9eb9cb7e58845800f6123a6833 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 30 Apr 2020 11:08:21 +0200 Subject: [PATCH 137/199] Fine tune TX16s MDL simu button --- companion/src/simulation/simulateduiwidgetTX16S.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/simulation/simulateduiwidgetTX16S.cpp b/companion/src/simulation/simulateduiwidgetTX16S.cpp index db1d5fa8b..38cdde149 100644 --- a/companion/src/simulation/simulateduiwidgetTX16S.cpp +++ b/companion/src/simulation/simulateduiwidgetTX16S.cpp @@ -34,7 +34,7 @@ SimulatedUIWidgetTX16S::SimulatedUIWidgetTX16S(SimulatorInterface *simulator, QW // add actions in order of appearance on the help menu act = new RadioUiAction(3, QList() << Qt::Key_Up, SIMU_STR_HLP_KEY_UP, SIMU_STR_HLP_ACT_MDL); - addRadioWidget(ui->rightbuttons->addArea(QRect(10, 0, 80, 35), "TX16S/right_mdl.png", act)); + addRadioWidget(ui->rightbuttons->addArea(QRect(40, 0, 110, 35), "TX16S/right_mdl.png", act)); m_mouseMidClickAction = new RadioUiAction(2, QList() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN); addRadioWidget(ui->rightbuttons->addArea(QRect(45, 70, 100, 160), "TX16S/right_ent.png", m_mouseMidClickAction)); From fa6dfb97c3ead05060e1b7f03a07c6c018ab7a4c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 1 May 2020 11:36:04 +0200 Subject: [PATCH 138/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 743ed2b0b..fb4920d0d 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1725,3 +1725,4 @@ Benny Simonsen George Kennedy Stefano Boggia Maksym Arshynkin +Tomas Sodergren From 6af47e5488a66162f8ebb9585670d6f1fb13c047 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 1 May 2020 16:02:54 +0200 Subject: [PATCH 139/199] Fix doc links --- radio/src/lua/api_general.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index b750c7f16..06b11449c 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -694,7 +694,8 @@ The list of valid sources is available: |----------------|-------| | 2.0 | [all](http://downloads-20.open-tx.org/firmware/lua_fields.txt) | | 2.1 | [X9D and X9D+](http://downloads-21.open-tx.org/firmware/lua_fields_taranis.txt), [X9E](http://downloads-21.open-tx.org/firmware/lua_fields_taranis_x9e.txt) | -| 2.2 | [X9D and X9D+](http://downloads.open-tx.org/2.2/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.2/firmware/lua_fields_x9e.txt), [Horus](http://downloads.open-tx.org/2.2/firmware/lua_fields_x12s.txt) | +| 2.2 | [X9D and X9D+](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x9e.txt), [Horus](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x12s.txt) | +| 2.3 | [X9D and X9D+](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x9e.txt), [X7](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x7.txt), [Horus](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x12s.txt) | @param name (string) name of the field @@ -741,8 +742,8 @@ The list of fixed sources: |----------------|-------| | 2.0 | [all](http://downloads-20.open-tx.org/firmware/lua_fields.txt) | | 2.1 | [X9D and X9D+](http://downloads-21.open-tx.org/firmware/lua_fields_taranis.txt), [X9E](http://downloads-21.open-tx.org/firmware/lua_fields_taranis_x9e.txt) | -| 2.2 | [X9D and X9D+](http://downloads.open-tx.org/2.2/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.2/firmware/lua_fields_x9e.txt), [Horus](http://downloads.open-tx.org/2.2/firmware/lua_fields_x12s.txt) | - +| 2.2 | [X9D and X9D+](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x9e.txt), [Horus](http://downloads.open-tx.org/2.2/release/firmware/lua_fields_x12s.txt) | +| 2.3 | [X9D and X9D+](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x9d.txt), [X9E](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x9e.txt), [X7](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x7.txt), [Horus](http://downloads.open-tx.org/2.3/release/firmware/lua_fields_x12s.txt) | In OpenTX 2.1.x the telemetry sources no longer have a predefined name. To get a telemetry value simply use it's sensor name. For example: From d8ffd1eada71718cbeebdcc76e5a61a90da2625e Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 2 May 2020 20:03:17 +0200 Subject: [PATCH 140/199] Fix companion handling of unknow protocols (#7567) * Tentative fix * cosmetics --- companion/src/firmwares/multiprotocols.cpp | 5 +---- companion/src/firmwares/opentx/opentxeeprom.cpp | 4 ---- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index 0dcc299e9..7b13a2b19 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -173,10 +173,7 @@ QString Multiprotocols::protocolToString(int protocol, bool custom) "Bayang RX", "Pelikan", "Tiger", "WK", "XN297 Dump", "FrSky X 2.1", "FrSky R9" }); - if (protocol == MM_RF_CUSTOM_SELECTED || custom) - return tr("Custom - proto %1)").arg(protocol); - else - return strings.value(protocol, CPN_STR_UNKNOWN_ITEM); + return strings.value(protocol, CPN_STR_UNKNOWN_ITEM); } // static diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index cfeb5278a..7053118d5 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2056,8 +2056,6 @@ class ModuleUnionField: public UnionField { void beforeExport() override { - if (module.multi.rfProtocol > MODULE_SUBTYPE_MULTI_LAST) - module.multi.rfProtocol += 3; rfProtExtra = (module.multi.rfProtocol & 0x70) >> 4; module.multi.rfProtocol &= 0x0f; } @@ -2065,8 +2063,6 @@ class ModuleUnionField: public UnionField { void afterImport() override { module.multi.rfProtocol = (rfProtExtra << 4) + (module.rfProtocol & 0xf); - if (module.multi.rfProtocol > MODULE_SUBTYPE_MULTI_LAST) - module.multi.rfProtocol -= 3; } private: From 8211b9d08d5eb96c628b890b8be1496cf4b71673 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 3 May 2020 10:22:14 +0200 Subject: [PATCH 141/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index fb4920d0d..8095dcd57 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1726,3 +1726,4 @@ George Kennedy Stefano Boggia Maksym Arshynkin Tomas Sodergren +Jörg Lemnitz From 7608e199a0eeecee51ff6388172fa5022d65deb5 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 3 May 2020 16:28:27 +0200 Subject: [PATCH 142/199] TX16S does have an internal multi --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 5c584eceb..13d75e2c0 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -793,7 +793,7 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_ACCST_ISRM_D16: return IS_ACCESS_RADIO(board, id); case PULSES_MULTIMODULE: - return id.contains("internalmulti"); + return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board); default: return false; } From ad104e6ff8d14be2e8bb8ac9597ff3627a53d560 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 3 May 2020 19:52:19 +0200 Subject: [PATCH 143/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index 8095dcd57..ffa540fbc 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1727,3 +1727,4 @@ Stefano Boggia Maksym Arshynkin Tomas Sodergren Jörg Lemnitz +TMac FPV From 3d28467c40e67c077035e732ce788de939b27815 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Sun, 3 May 2020 23:52:16 +0200 Subject: [PATCH 144/199] Update Multi Channels Namer LUA script (#7577) Solve issue: https://github.com/opentx/opentx/issues/7569 Co-authored-by: Pascal Langer --- .../sdcard/horus/SCRIPTS/TOOLS/MultiChan.txt | 157 ++++++ .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 465 ++++++++---------- .../taranis-x7/SCRIPTS/TOOLS/MultiChan.txt | 157 ++++++ .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 465 ++++++++---------- .../taranis-x9/SCRIPTS/TOOLS/MultiChan.txt | 157 ++++++ .../SCRIPTS/TOOLS/MultiChannelsUpdater.lua | 465 ++++++++---------- 6 files changed, 1056 insertions(+), 810 deletions(-) create mode 100644 radio/sdcard/horus/SCRIPTS/TOOLS/MultiChan.txt create mode 100644 radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChan.txt create mode 100644 radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChan.txt diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChan.txt b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChan.txt new file mode 100644 index 000000000..bf61d8ca6 --- /dev/null +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChan.txt @@ -0,0 +1,157 @@ +1,0,Flysky,Flysky,0,CH5,CH6,CH7,CH8 +1,1,Flysky,V9x9,1,Flip,Light,Pict,Video +1,2,Flysky,V6x6,1,Flip,Light,Pict,Video,HLess,RTH,XCAL,YCAL +1,3,Flysky,V912,1,BtmBtn,TopBtn +1,4,Flysky,CX20,0,CH5,CH6,CH7 +28,0,Flysky_AFHDS2A,PWM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,1,Flysky_AFHDS2A,PPM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,2,Flysky_AFHDS2A,PWM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,3,Flysky_AFHDS2A,PPM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +53,0,Flyzone,FZ-410,0 +2,0,Hubsan,H107,1,Flip,Light,Pict,Video,HLess +2,1,Hubsan,H301,0,RTH,Light,Stab,Video +2,2,Hubsan,H501,0,RTH,Light,Pict,Video,HLess,GPS_H,ALT_H,Flip,FModes +41,0,Bugs,3-6-8,0,Arm,Angle,Flip,Pict,Video,LED +60,0,Pelikan,PRO_V4,0,CH5,CH6,CH7,CH8 +37,0,Corona,COR_V1,0,CH5,CH6,CH7,CH8 +37,1,Corona,COR_V2,0,CH5,CH6,CH7,CH8 +37,2,Corona,FD_V3,0,CH5,CH6,CH7,CH8 +25,0,FrSkyV,V8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8Cloned,0,CH5,CH6,CH7,CH8 +67,0,FrSkyL,LR12,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +67,1,FrSkyL,LR12_6CH,0,CH5,CH6 +15,0,FrSkyX,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,1,FrSkyX,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +15,2,FrSkyX,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,3,FrSkyX,D16_8CH_LBT,0,CH5,CH6,CH7,CH8 +15,4,FrSkyX,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,0,FrSkyX2,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,1,FrSkyX2,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +64,2,FrSkyX2,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,3,FrSkyX2,D16_8CH_LBT,1,CH5,CH6,CH7,CH8 +64,4,FrSkyX2,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,0,FrSkyRX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,1,FrSkyRX,CloneTX,0 +39,0,Hitec,Opt_Fw,0,CH5,CH6,CH7,CH8,CH9 +39,1,Hitec,Opt_Hub,0,CH5,CH6,CH7,CH8,CH9 +39,2,Hitec,Minima,0,CH5,CH6,CH7,CH8,CH9 +57,0,HoTT,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +21,0,SFHSS,Std,0,CH5,CH6,CH7,CH8 +68,0,Skyartec,Std,0,CH5,CH6,CH7 +7,0,Devo,8CH,0,CH5,CH6,CH7,CH8 +7,1,Devo,10CH,0,CH5,CH6,CH7,CH8,CH9,CH10 +7,2,Devo,12CH,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +7,3,Devo,6CH,0,CH5,CH6 +7,4,Devo,7CH,0,CH5,CH6,CH7 +30,0,WK2x01,WK2801,0,CH5,CH6,CH7,CH8 +30,1,WK2x01,WK2401,0 +30,2,WK2x01,W6_5_1,0,Gear,Dis,Gyro +30,3,WK2x01,W6_6_1,0,Gear,Col,Gyro +30,4,WK2x01,W6HEL,0,Gear,Col,Gyro +30,5,WK2x01,W6HEL_I,0,Gear,Col,Gyro +6,0,DSM,2_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,1,DSM,2_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,2,DSM,X_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,3,DSM,X_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +22,0,J6Pro,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +22,0,WFLY,WFR0xS,0,CH5,CH6,CH7,CH8,CH9 +24,0,Assan,Std,0,CH5,CH6,CH7,CH8 +14,0,Bayang,Std,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,n-a,n-a,AnAux1,AnAux2 +14,1,Bayang,H8S3D,1,Flip,RTH,Pict,Video,HLess,Invert,Rates +14,2,Bayang,X16_AH,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf +14,3,Bayang,IRDRONE,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +14,4,Bayang,DHD_D4,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +59,0,BayangRX,RX,1,AnAux1,AnAux2,Flip,RTH,Pict,Video +42,0,BugsMini,Mini,0,Arm,Angle,Flip,Pict,Video,LED +42,1,BugsMini,3H,0,Arm,Angle,Flip,Pict,Video,LED,AltHol +34,0,Cabell,V3,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +34,1,Cabell,V3Telem,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +13,0,CG023,Std,1,Flip,Light,Pict,Video,HLess +13,1,CG023,YD829,1,Flip,n-a,Pict,Video,HLess +12,0,CX10,Green,1,Flip,Rate +12,1,CX10,Blue,1,Flip,Rate,Pict,Video +12,2,CX10,DM007,1,Flip,Mode,Pict,Video,HLess +12,4,CX10,JC3015_1,1,Flip,Mode,Pict,Video +12,5,CX10,JC3015_2,1,Flip,Mode,LED,DFlip +12,6,CX10,MK33041,1,Flip,Mode,Pict,Video,HLess,RTH +33,0,DM022,Std,1,Flip,LED,Cam1,Cam2,HLess,RTH,RLow +45,0,E01X,E012,1,n-a,Flip,n-a,HLess,RTH +45,1,E01X,E015,1,Arm,Flip,LED,HLess,RTH +45,2,E01X,E016H,1,Stop,Flip,n-a,HLess,RTH +16,0,ESKY,Std,0,Gyro,Pitch +16,1,ESKY,ET4,0,Gyro,Pitch +35,0,ESKY150,4CH,0 +35,1,ESKY150,7CH,0,FMode,Aux6,Aux7 +20,0,FY326,FY326,1,Flip,RTH,HLess,Expert,Calib +20,1,FY326,FY319,1,Flip,RTH,HLess,Expert,Calib +23,0,FY326,FY326,1,Flip,RTH,HLess,Expert +32,0,GW008,FY326,1,Flip +36,0,H8_3D,Std,1,Flip,Light,Pict,Video,RTH,FlMode,Cal1 +36,1,H8_3D,H20H,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,2,H8_3D,H20,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,3,H8_3D,H30,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +4,0,Hisky,Std,0,Gear,Pitch,Gyro,CH8 +9,0,KN,WLToys,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +9,1,KN,Feilun,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +26,0,Hontai,Std,1,Flip,LED,Pict,Video,HLess,RTH,Calib +26,1,Hontai,JJRCX1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,2,Hontai,X5C1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,3,Hontai,FQ777_951,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +18,0,MJXQ,WHL08,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,1,MJXQ,X600,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,2,MJXQ,X800,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,3,MJXQ,H26D,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,4,MJXQ,E010,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,5,MJXQ,H26WH,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,6,MJXQ,Phoenix,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +17,0,MT99XX,Std,1,Flip,LED,Pict,Video,HLess +17,1,MT99XX,H7,1,Flip,LED,Pict,Video,HLess +17,2,MT99XX,YZ,1,Flip,LED,Pict,Video,HLess +17,3,MT99XX,LS,1,Flip,Invert,Pict,Video,HLess +17,4,MT99XX,FY805,1,Flip,n-a,n-a,n-a,HLess +44,0,NCC1701,Std,1,Warp +51,0,Potensic,A20,1,TakLan,Emerg,Mode,HLess +66,0,Propel,74-Z,1,LEDs,RollCW,RolCCW,Fire,Weapon,Calib,AltHol,TakeOf,Land,Train +29,0,Q2x2,Q222,1,Flip,LED,Mod2,Mod1,HLess,RTH,XCal,YCal +29,1,Q2x2,Q242,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +29,2,Q2x2,Q282,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +31,0,Q303,Q303,1,AltHol,Flip,Pict,Video,HLess,RTH,Gimbal +31,1,Q303,C35,1,Arm,VTX,Pict,Video,n-a,RTH,Gimbal +31,2,Q303,CX10D,1,Arm,Flip +31,3,Q303,CX10WD,1,Arm,Flip +50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +11,0,SLT,V1,0,Gear,Pitch +11,1,SLT,V2,0,CH5,CH6,CH7,CH8 +11,2,SLT,Q100,0,Rates,n-a,CH7,CH8,Mode,Flip,n-a,n-a,Calib +11,3,SLT,Q200,0,Rates,n-a,CH7,CH8,Mode,VidOn,VidOff,Calib +11,4,SLT,MR100,0,Rates,n-a,CH7,CH8,Mode,Flip,Video,Pict +10,0,Symax,Std,1,Flip,Rates,Pict,Video,HLess +10,1,Symax,X5C,1,Flip,Rates,Pict,Video,HLess +5,0,V2x2,Std,1,Flip,Light,Pict,Video,HLess,CalX,CalY +5,1,V2x2,JXD506,1,Flip,Light,Pict,Video,HLess,StaSto,Emerg,Cam_UD +61,0,Tiger,Std,1,Flip,Light +46,0,V911s,Std,1,Calib +46,1,E119,Std,1,Calib +62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess +8,1,YD717,SkyWlkr,1,Flip,Light,Pict,Video,HLess +8,2,YD717,Simax4,1,Flip,Light,Pict,Video,HLess +8,3,YD717,XinXun,1,Flip,Light,Pict,Video,HLess +8,4,YD717,NiHui,1,Flip,Light,Pict,Video,HLess +65,0,FrSkyR9,R9_915,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,1,FrSkyR9,R9_868,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,2,FrSkyR9,R9_915_8CH,0,CH5,CH6,CH7,CH8 +65,3,FrSkyR9,R9_968_8CH,0,CH5,CH6,CH7,CH8 +56,0,Flysky2A_RX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +19,0,Shenqi,Cycle,1 +4,1,Hisky,HK310,0,Aux +43,0,Traxxas,6519,0 +52,0,ZSX,280,1,Light +48,0,V761,Std,1,Gyro +49,0,KF606,Std,1,Trim +47,0,GD00x,V1,1,Trim,LED,Rate +47,1,GD00x,V2,1,Trim,LED,Rate +58,0,FX816,P38,1 diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 2bd2e1a73..42de75e4f 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -1,3 +1,4 @@ + local toolName = "TNS|Multi chan namer|TNE" ---- ######################################################################### @@ -17,168 +18,18 @@ local toolName = "TNS|Multi chan namer|TNE" ---- # # ---- ######################################################################### +local protocol_name = "" +local sub_protocol_name = "" +local bind_ch = 0 +local module_conf = {} +local module_pos = "Internal" +local file_ok = 0 local done = 0 -local Protocols = { - {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, - {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, - {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, - {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, - {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {53, 0, "Flyzone", "FZ-410", { }, 0 }, - {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, - {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, - {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, - {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, - {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, - {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, - {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, - {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, - {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, - {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {30, 1, "WK2x01", "WK2401", { }, 0 }, - {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, - {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, - {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, - {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, - {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, - {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, - {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, - {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, - {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, - {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, - {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, - {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, - {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, - {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, - {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, - {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, - {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, - {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, - {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, - {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, - {35, 0, "ESKY150", "4CH", { }, 0 }, - {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, - {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, - {32, 0, "GW008", "FY326", { "Flip" }, 1 }, - {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, - {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, - {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, - {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, - {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, - {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, - {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, - {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, - {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, - {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, - {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, - {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, - {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, - {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, - {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, - {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, - {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, - {46, 0, "V911s", "Std", { "Calib" }, 1 }, - {46, 1, "E119", "Std", { "Calib" }, 1 }, - {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - --- Need first 4 channels changed... - {19, 0, "Shenqi", "Cycle", { }, 1 }, - {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, - {43, 0, "Traxxas", "6519", { }, 0 }, - {52, 0, "ZSX", "280", { "Light" }, 1 }, - {48, 0, "V761", "Std", { "Gyro" }, 1 }, - {49, 0, "KF606", "Std", { "Trim" }, 1 }, - {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, - {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, - {58, 0, "FX816", "P38", { },1 } -} +local protocol = 0 +local sub_protocol = 0 +local f_seek = 0 +local channel_names={} +local num_search = "Searching" local function drawScreenTitle(title) if LCD_W == 480 then @@ -203,33 +54,14 @@ function bitand(a, b) return result end -local function Multi_Draw_LCD() +local function Multi_Draw_LCD(event) local line = 0 - local module_conf = {} - local module_pos = "Internal" lcd.clear() drawScreenTitle("Multi channels namer") - module_conf = model.getModule(0) - if module_conf["Type"] ~= 6 then - module_pos = "External" - module_conf = model.getModule(1) - if module_conf["Type"] ~= 6 then - if LCD_W == 480 then - lcd.drawText(10,50,"No Multi module configured...", BLINK) - else - --Draw on LCD_W=128 - lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) - end - return - end - end - - local protocol = module_conf["protocol"] - local sub_protocol = module_conf["subProtocol"] --Display settings - local lcd_opt + local lcd_opt = 0 if LCD_W == 480 then x_pos = 10 y_pos = 32 @@ -241,6 +73,180 @@ local function Multi_Draw_LCD() lcd_opt = SMLSIZE end + --Multi Module detection + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + else + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) + line = line + 1 + end + + --Channel order + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) + line = line + 1 + end + + --Can't open file MultiChan.txt + if file_ok == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Can't read MultiChan.txt file...", lcd_opt) + return + end + + if ( protocol_name == "" or sub_protocol_name == "" ) and f_seek ~=-1 then + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + lcd.drawText(x_pos, y_pos+y_inc*line,num_search, lcd_opt) + num_search = num_search .. "." + if #num_search > 15 then + num_search = string.sub(num_search,1,9) + end + local proto = 0 + local sub_proto = 0 + local proto_name = "" + local sub_proto_name = "" + local channels = "" + local nbr_try = 0 + local nbr_car = 0 + repeat + io.seek(f, f_seek) + local data = io.read(f, 100) -- read 100 characters + if #data ==0 then + f_seek = -1 -- end of file + break + end + proto, sub_proto, proto_name, sub_proto_name, bind_ch, channels = string.match(data,'(%d+),(%d),([%w-_ ]+),([%w-_ ]+),(%d)(.+)') + if proto ~= nil and sub_proto ~= nil and protocol_name ~= nil and sub_protocol_name ~= nil and bind_ch ~= nil then + if tonumber(proto) == protocol and tonumber(sub_proto) == sub_protocol then + protocol_name = proto_name + sub_protocol_name = sub_proto_name + bind_ch = tonumber(bind_ch) + if channels ~= nil then + --extract channel names + nbr_car = string.find(channels, "\r") + if nbr_car == nil then nbr_car = string.find(channels, "\n") end + if nbr_car ~= nil then + channels = string.sub(channels,1,nbr_car-1) + end + local i = 5 + for k in string.gmatch(channels, ",([%w-_ ]+)") do + channel_names[i] = k + i = i + 1 + end + end + f_seek = -1 -- protocol found + break + end + end + if f_seek ~= -1 then + nbr_car = string.find(data, "\n") + if nbr_car == nil then nbr_car = string.find(data, "\r") end + if nbr_car == nil then + f_seek = -1 -- end of file + break + end + f_seek = f_seek + nbr_car -- seek to next line + nbr_try = nbr_try + 1 + end + until nbr_try > 20 or f_seek == -1 + io.close(f) + end + + if f_seek ~= -1 then + return -- continue searching... + end + + --Protocol & Sub_protocol + if protocol_name == "" or sub_protocol_name == "" then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) + return + elseif LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) + line = line + 1 + end + end + + if event ~= EVT_VIRTUAL_ENTER and done == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line," Save", lcd_opt + INVERS + BLINK) + return + end + + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) + line = line + 1 + local output, nbr + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) + line = line + 1 +end + +-- Init +local function Multi_Init() + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + return + end + end + + protocol = module_conf["protocol"] + sub_protocol = module_conf["subProtocol"] + --Exceptions on first 4 channels... local stick_names = { "Rud", "Ele", "Thr", "Ail" } if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX @@ -257,7 +263,6 @@ local function Multi_Draw_LCD() end --Determine fist 4 channels order - local channel_names={} local ch_order=module_conf["channelsOrder"] if (ch_order == -1) then channel_names[1] = stick_names[defaultChannel(0)+1] @@ -273,91 +278,11 @@ local function Multi_Draw_LCD() ch_order = math.floor(ch_order/4) channel_names[bitand(ch_order,3)+1] = stick_names[1] end - - --Specific channels for protocol - local protocol_name, sub_protocol_name, bind_ch - for i,v in ipairs(Protocols) do - if v[1] == protocol and v[2] == sub_protocol then - protocol_name = v[3] - sub_protocol_name = v[4] - for j,w in ipairs(v[5]) do - channel_names[4+j]=w; - end - bind_ch = v[6] - end - end - - lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) - line = line + 1 - if (ch_order == -1) then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) - line = line + 1 - end - if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) - else if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - else - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) - line = line + 1 - lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - end - text1="" - text2="" - for i,v in ipairs(channel_names) do - if i<=8 then - if i==1 then - text1 = v - else - text1=text1 .. "," .. v - end - else - if i==9 then - text2 = v - else - text2=text2 .. "," .. v - end - end - end - if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) - line = line + 1 - if text2 ~= "" then - lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) - line = line + 1 - end - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) - line = line + 1 - local output, nbr - if done == 0 then - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i - end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) - end - done = 1 - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) - line = line + 1 - end -end - --- Init -local function Multi_Init() + --Check MultiChan.txt + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + file_ok = 1 + io.close(f) end -- Main @@ -366,8 +291,8 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - Multi_Draw_LCD() - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + Multi_Draw_LCD(event) + if event == EVT_VIRTUAL_EXIT then return 2 end end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChan.txt b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChan.txt new file mode 100644 index 000000000..bf61d8ca6 --- /dev/null +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChan.txt @@ -0,0 +1,157 @@ +1,0,Flysky,Flysky,0,CH5,CH6,CH7,CH8 +1,1,Flysky,V9x9,1,Flip,Light,Pict,Video +1,2,Flysky,V6x6,1,Flip,Light,Pict,Video,HLess,RTH,XCAL,YCAL +1,3,Flysky,V912,1,BtmBtn,TopBtn +1,4,Flysky,CX20,0,CH5,CH6,CH7 +28,0,Flysky_AFHDS2A,PWM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,1,Flysky_AFHDS2A,PPM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,2,Flysky_AFHDS2A,PWM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,3,Flysky_AFHDS2A,PPM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +53,0,Flyzone,FZ-410,0 +2,0,Hubsan,H107,1,Flip,Light,Pict,Video,HLess +2,1,Hubsan,H301,0,RTH,Light,Stab,Video +2,2,Hubsan,H501,0,RTH,Light,Pict,Video,HLess,GPS_H,ALT_H,Flip,FModes +41,0,Bugs,3-6-8,0,Arm,Angle,Flip,Pict,Video,LED +60,0,Pelikan,PRO_V4,0,CH5,CH6,CH7,CH8 +37,0,Corona,COR_V1,0,CH5,CH6,CH7,CH8 +37,1,Corona,COR_V2,0,CH5,CH6,CH7,CH8 +37,2,Corona,FD_V3,0,CH5,CH6,CH7,CH8 +25,0,FrSkyV,V8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8Cloned,0,CH5,CH6,CH7,CH8 +67,0,FrSkyL,LR12,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +67,1,FrSkyL,LR12_6CH,0,CH5,CH6 +15,0,FrSkyX,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,1,FrSkyX,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +15,2,FrSkyX,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,3,FrSkyX,D16_8CH_LBT,0,CH5,CH6,CH7,CH8 +15,4,FrSkyX,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,0,FrSkyX2,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,1,FrSkyX2,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +64,2,FrSkyX2,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,3,FrSkyX2,D16_8CH_LBT,1,CH5,CH6,CH7,CH8 +64,4,FrSkyX2,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,0,FrSkyRX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,1,FrSkyRX,CloneTX,0 +39,0,Hitec,Opt_Fw,0,CH5,CH6,CH7,CH8,CH9 +39,1,Hitec,Opt_Hub,0,CH5,CH6,CH7,CH8,CH9 +39,2,Hitec,Minima,0,CH5,CH6,CH7,CH8,CH9 +57,0,HoTT,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +21,0,SFHSS,Std,0,CH5,CH6,CH7,CH8 +68,0,Skyartec,Std,0,CH5,CH6,CH7 +7,0,Devo,8CH,0,CH5,CH6,CH7,CH8 +7,1,Devo,10CH,0,CH5,CH6,CH7,CH8,CH9,CH10 +7,2,Devo,12CH,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +7,3,Devo,6CH,0,CH5,CH6 +7,4,Devo,7CH,0,CH5,CH6,CH7 +30,0,WK2x01,WK2801,0,CH5,CH6,CH7,CH8 +30,1,WK2x01,WK2401,0 +30,2,WK2x01,W6_5_1,0,Gear,Dis,Gyro +30,3,WK2x01,W6_6_1,0,Gear,Col,Gyro +30,4,WK2x01,W6HEL,0,Gear,Col,Gyro +30,5,WK2x01,W6HEL_I,0,Gear,Col,Gyro +6,0,DSM,2_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,1,DSM,2_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,2,DSM,X_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,3,DSM,X_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +22,0,J6Pro,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +22,0,WFLY,WFR0xS,0,CH5,CH6,CH7,CH8,CH9 +24,0,Assan,Std,0,CH5,CH6,CH7,CH8 +14,0,Bayang,Std,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,n-a,n-a,AnAux1,AnAux2 +14,1,Bayang,H8S3D,1,Flip,RTH,Pict,Video,HLess,Invert,Rates +14,2,Bayang,X16_AH,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf +14,3,Bayang,IRDRONE,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +14,4,Bayang,DHD_D4,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +59,0,BayangRX,RX,1,AnAux1,AnAux2,Flip,RTH,Pict,Video +42,0,BugsMini,Mini,0,Arm,Angle,Flip,Pict,Video,LED +42,1,BugsMini,3H,0,Arm,Angle,Flip,Pict,Video,LED,AltHol +34,0,Cabell,V3,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +34,1,Cabell,V3Telem,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +13,0,CG023,Std,1,Flip,Light,Pict,Video,HLess +13,1,CG023,YD829,1,Flip,n-a,Pict,Video,HLess +12,0,CX10,Green,1,Flip,Rate +12,1,CX10,Blue,1,Flip,Rate,Pict,Video +12,2,CX10,DM007,1,Flip,Mode,Pict,Video,HLess +12,4,CX10,JC3015_1,1,Flip,Mode,Pict,Video +12,5,CX10,JC3015_2,1,Flip,Mode,LED,DFlip +12,6,CX10,MK33041,1,Flip,Mode,Pict,Video,HLess,RTH +33,0,DM022,Std,1,Flip,LED,Cam1,Cam2,HLess,RTH,RLow +45,0,E01X,E012,1,n-a,Flip,n-a,HLess,RTH +45,1,E01X,E015,1,Arm,Flip,LED,HLess,RTH +45,2,E01X,E016H,1,Stop,Flip,n-a,HLess,RTH +16,0,ESKY,Std,0,Gyro,Pitch +16,1,ESKY,ET4,0,Gyro,Pitch +35,0,ESKY150,4CH,0 +35,1,ESKY150,7CH,0,FMode,Aux6,Aux7 +20,0,FY326,FY326,1,Flip,RTH,HLess,Expert,Calib +20,1,FY326,FY319,1,Flip,RTH,HLess,Expert,Calib +23,0,FY326,FY326,1,Flip,RTH,HLess,Expert +32,0,GW008,FY326,1,Flip +36,0,H8_3D,Std,1,Flip,Light,Pict,Video,RTH,FlMode,Cal1 +36,1,H8_3D,H20H,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,2,H8_3D,H20,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,3,H8_3D,H30,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +4,0,Hisky,Std,0,Gear,Pitch,Gyro,CH8 +9,0,KN,WLToys,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +9,1,KN,Feilun,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +26,0,Hontai,Std,1,Flip,LED,Pict,Video,HLess,RTH,Calib +26,1,Hontai,JJRCX1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,2,Hontai,X5C1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,3,Hontai,FQ777_951,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +18,0,MJXQ,WHL08,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,1,MJXQ,X600,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,2,MJXQ,X800,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,3,MJXQ,H26D,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,4,MJXQ,E010,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,5,MJXQ,H26WH,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,6,MJXQ,Phoenix,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +17,0,MT99XX,Std,1,Flip,LED,Pict,Video,HLess +17,1,MT99XX,H7,1,Flip,LED,Pict,Video,HLess +17,2,MT99XX,YZ,1,Flip,LED,Pict,Video,HLess +17,3,MT99XX,LS,1,Flip,Invert,Pict,Video,HLess +17,4,MT99XX,FY805,1,Flip,n-a,n-a,n-a,HLess +44,0,NCC1701,Std,1,Warp +51,0,Potensic,A20,1,TakLan,Emerg,Mode,HLess +66,0,Propel,74-Z,1,LEDs,RollCW,RolCCW,Fire,Weapon,Calib,AltHol,TakeOf,Land,Train +29,0,Q2x2,Q222,1,Flip,LED,Mod2,Mod1,HLess,RTH,XCal,YCal +29,1,Q2x2,Q242,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +29,2,Q2x2,Q282,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +31,0,Q303,Q303,1,AltHol,Flip,Pict,Video,HLess,RTH,Gimbal +31,1,Q303,C35,1,Arm,VTX,Pict,Video,n-a,RTH,Gimbal +31,2,Q303,CX10D,1,Arm,Flip +31,3,Q303,CX10WD,1,Arm,Flip +50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +11,0,SLT,V1,0,Gear,Pitch +11,1,SLT,V2,0,CH5,CH6,CH7,CH8 +11,2,SLT,Q100,0,Rates,n-a,CH7,CH8,Mode,Flip,n-a,n-a,Calib +11,3,SLT,Q200,0,Rates,n-a,CH7,CH8,Mode,VidOn,VidOff,Calib +11,4,SLT,MR100,0,Rates,n-a,CH7,CH8,Mode,Flip,Video,Pict +10,0,Symax,Std,1,Flip,Rates,Pict,Video,HLess +10,1,Symax,X5C,1,Flip,Rates,Pict,Video,HLess +5,0,V2x2,Std,1,Flip,Light,Pict,Video,HLess,CalX,CalY +5,1,V2x2,JXD506,1,Flip,Light,Pict,Video,HLess,StaSto,Emerg,Cam_UD +61,0,Tiger,Std,1,Flip,Light +46,0,V911s,Std,1,Calib +46,1,E119,Std,1,Calib +62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess +8,1,YD717,SkyWlkr,1,Flip,Light,Pict,Video,HLess +8,2,YD717,Simax4,1,Flip,Light,Pict,Video,HLess +8,3,YD717,XinXun,1,Flip,Light,Pict,Video,HLess +8,4,YD717,NiHui,1,Flip,Light,Pict,Video,HLess +65,0,FrSkyR9,R9_915,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,1,FrSkyR9,R9_868,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,2,FrSkyR9,R9_915_8CH,0,CH5,CH6,CH7,CH8 +65,3,FrSkyR9,R9_968_8CH,0,CH5,CH6,CH7,CH8 +56,0,Flysky2A_RX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +19,0,Shenqi,Cycle,1 +4,1,Hisky,HK310,0,Aux +43,0,Traxxas,6519,0 +52,0,ZSX,280,1,Light +48,0,V761,Std,1,Gyro +49,0,KF606,Std,1,Trim +47,0,GD00x,V1,1,Trim,LED,Rate +47,1,GD00x,V2,1,Trim,LED,Rate +58,0,FX816,P38,1 diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 2bd2e1a73..42de75e4f 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -1,3 +1,4 @@ + local toolName = "TNS|Multi chan namer|TNE" ---- ######################################################################### @@ -17,168 +18,18 @@ local toolName = "TNS|Multi chan namer|TNE" ---- # # ---- ######################################################################### +local protocol_name = "" +local sub_protocol_name = "" +local bind_ch = 0 +local module_conf = {} +local module_pos = "Internal" +local file_ok = 0 local done = 0 -local Protocols = { - {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, - {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, - {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, - {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, - {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {53, 0, "Flyzone", "FZ-410", { }, 0 }, - {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, - {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, - {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, - {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, - {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, - {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, - {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, - {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, - {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, - {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {30, 1, "WK2x01", "WK2401", { }, 0 }, - {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, - {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, - {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, - {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, - {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, - {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, - {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, - {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, - {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, - {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, - {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, - {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, - {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, - {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, - {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, - {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, - {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, - {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, - {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, - {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, - {35, 0, "ESKY150", "4CH", { }, 0 }, - {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, - {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, - {32, 0, "GW008", "FY326", { "Flip" }, 1 }, - {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, - {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, - {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, - {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, - {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, - {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, - {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, - {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, - {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, - {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, - {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, - {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, - {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, - {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, - {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, - {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, - {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, - {46, 0, "V911s", "Std", { "Calib" }, 1 }, - {46, 1, "E119", "Std", { "Calib" }, 1 }, - {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - --- Need first 4 channels changed... - {19, 0, "Shenqi", "Cycle", { }, 1 }, - {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, - {43, 0, "Traxxas", "6519", { }, 0 }, - {52, 0, "ZSX", "280", { "Light" }, 1 }, - {48, 0, "V761", "Std", { "Gyro" }, 1 }, - {49, 0, "KF606", "Std", { "Trim" }, 1 }, - {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, - {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, - {58, 0, "FX816", "P38", { },1 } -} +local protocol = 0 +local sub_protocol = 0 +local f_seek = 0 +local channel_names={} +local num_search = "Searching" local function drawScreenTitle(title) if LCD_W == 480 then @@ -203,33 +54,14 @@ function bitand(a, b) return result end -local function Multi_Draw_LCD() +local function Multi_Draw_LCD(event) local line = 0 - local module_conf = {} - local module_pos = "Internal" lcd.clear() drawScreenTitle("Multi channels namer") - module_conf = model.getModule(0) - if module_conf["Type"] ~= 6 then - module_pos = "External" - module_conf = model.getModule(1) - if module_conf["Type"] ~= 6 then - if LCD_W == 480 then - lcd.drawText(10,50,"No Multi module configured...", BLINK) - else - --Draw on LCD_W=128 - lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) - end - return - end - end - - local protocol = module_conf["protocol"] - local sub_protocol = module_conf["subProtocol"] --Display settings - local lcd_opt + local lcd_opt = 0 if LCD_W == 480 then x_pos = 10 y_pos = 32 @@ -241,6 +73,180 @@ local function Multi_Draw_LCD() lcd_opt = SMLSIZE end + --Multi Module detection + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + else + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) + line = line + 1 + end + + --Channel order + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) + line = line + 1 + end + + --Can't open file MultiChan.txt + if file_ok == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Can't read MultiChan.txt file...", lcd_opt) + return + end + + if ( protocol_name == "" or sub_protocol_name == "" ) and f_seek ~=-1 then + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + lcd.drawText(x_pos, y_pos+y_inc*line,num_search, lcd_opt) + num_search = num_search .. "." + if #num_search > 15 then + num_search = string.sub(num_search,1,9) + end + local proto = 0 + local sub_proto = 0 + local proto_name = "" + local sub_proto_name = "" + local channels = "" + local nbr_try = 0 + local nbr_car = 0 + repeat + io.seek(f, f_seek) + local data = io.read(f, 100) -- read 100 characters + if #data ==0 then + f_seek = -1 -- end of file + break + end + proto, sub_proto, proto_name, sub_proto_name, bind_ch, channels = string.match(data,'(%d+),(%d),([%w-_ ]+),([%w-_ ]+),(%d)(.+)') + if proto ~= nil and sub_proto ~= nil and protocol_name ~= nil and sub_protocol_name ~= nil and bind_ch ~= nil then + if tonumber(proto) == protocol and tonumber(sub_proto) == sub_protocol then + protocol_name = proto_name + sub_protocol_name = sub_proto_name + bind_ch = tonumber(bind_ch) + if channels ~= nil then + --extract channel names + nbr_car = string.find(channels, "\r") + if nbr_car == nil then nbr_car = string.find(channels, "\n") end + if nbr_car ~= nil then + channels = string.sub(channels,1,nbr_car-1) + end + local i = 5 + for k in string.gmatch(channels, ",([%w-_ ]+)") do + channel_names[i] = k + i = i + 1 + end + end + f_seek = -1 -- protocol found + break + end + end + if f_seek ~= -1 then + nbr_car = string.find(data, "\n") + if nbr_car == nil then nbr_car = string.find(data, "\r") end + if nbr_car == nil then + f_seek = -1 -- end of file + break + end + f_seek = f_seek + nbr_car -- seek to next line + nbr_try = nbr_try + 1 + end + until nbr_try > 20 or f_seek == -1 + io.close(f) + end + + if f_seek ~= -1 then + return -- continue searching... + end + + --Protocol & Sub_protocol + if protocol_name == "" or sub_protocol_name == "" then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) + return + elseif LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) + line = line + 1 + end + end + + if event ~= EVT_VIRTUAL_ENTER and done == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line," Save", lcd_opt + INVERS + BLINK) + return + end + + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) + line = line + 1 + local output, nbr + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) + line = line + 1 +end + +-- Init +local function Multi_Init() + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + return + end + end + + protocol = module_conf["protocol"] + sub_protocol = module_conf["subProtocol"] + --Exceptions on first 4 channels... local stick_names = { "Rud", "Ele", "Thr", "Ail" } if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX @@ -257,7 +263,6 @@ local function Multi_Draw_LCD() end --Determine fist 4 channels order - local channel_names={} local ch_order=module_conf["channelsOrder"] if (ch_order == -1) then channel_names[1] = stick_names[defaultChannel(0)+1] @@ -273,91 +278,11 @@ local function Multi_Draw_LCD() ch_order = math.floor(ch_order/4) channel_names[bitand(ch_order,3)+1] = stick_names[1] end - - --Specific channels for protocol - local protocol_name, sub_protocol_name, bind_ch - for i,v in ipairs(Protocols) do - if v[1] == protocol and v[2] == sub_protocol then - protocol_name = v[3] - sub_protocol_name = v[4] - for j,w in ipairs(v[5]) do - channel_names[4+j]=w; - end - bind_ch = v[6] - end - end - - lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) - line = line + 1 - if (ch_order == -1) then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) - line = line + 1 - end - if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) - else if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - else - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) - line = line + 1 - lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - end - text1="" - text2="" - for i,v in ipairs(channel_names) do - if i<=8 then - if i==1 then - text1 = v - else - text1=text1 .. "," .. v - end - else - if i==9 then - text2 = v - else - text2=text2 .. "," .. v - end - end - end - if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) - line = line + 1 - if text2 ~= "" then - lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) - line = line + 1 - end - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) - line = line + 1 - local output, nbr - if done == 0 then - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i - end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) - end - done = 1 - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) - line = line + 1 - end -end - --- Init -local function Multi_Init() + --Check MultiChan.txt + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + file_ok = 1 + io.close(f) end -- Main @@ -366,8 +291,8 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - Multi_Draw_LCD() - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + Multi_Draw_LCD(event) + if event == EVT_VIRTUAL_EXIT then return 2 end end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChan.txt b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChan.txt new file mode 100644 index 000000000..bf61d8ca6 --- /dev/null +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChan.txt @@ -0,0 +1,157 @@ +1,0,Flysky,Flysky,0,CH5,CH6,CH7,CH8 +1,1,Flysky,V9x9,1,Flip,Light,Pict,Video +1,2,Flysky,V6x6,1,Flip,Light,Pict,Video,HLess,RTH,XCAL,YCAL +1,3,Flysky,V912,1,BtmBtn,TopBtn +1,4,Flysky,CX20,0,CH5,CH6,CH7 +28,0,Flysky_AFHDS2A,PWM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,1,Flysky_AFHDS2A,PPM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,2,Flysky_AFHDS2A,PWM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +28,3,Flysky_AFHDS2A,PPM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +53,0,Flyzone,FZ-410,0 +2,0,Hubsan,H107,1,Flip,Light,Pict,Video,HLess +2,1,Hubsan,H301,0,RTH,Light,Stab,Video +2,2,Hubsan,H501,0,RTH,Light,Pict,Video,HLess,GPS_H,ALT_H,Flip,FModes +41,0,Bugs,3-6-8,0,Arm,Angle,Flip,Pict,Video,LED +60,0,Pelikan,PRO_V4,0,CH5,CH6,CH7,CH8 +37,0,Corona,COR_V1,0,CH5,CH6,CH7,CH8 +37,1,Corona,COR_V2,0,CH5,CH6,CH7,CH8 +37,2,Corona,FD_V3,0,CH5,CH6,CH7,CH8 +25,0,FrSkyV,V8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8,0,CH5,CH6,CH7,CH8 +3,0,FrSkyD,D8Cloned,0,CH5,CH6,CH7,CH8 +67,0,FrSkyL,LR12,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +67,1,FrSkyL,LR12_6CH,0,CH5,CH6 +15,0,FrSkyX,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,1,FrSkyX,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +15,2,FrSkyX,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +15,3,FrSkyX,D16_8CH_LBT,0,CH5,CH6,CH7,CH8 +15,4,FrSkyX,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,0,FrSkyX2,D16_FCC,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,1,FrSkyX2,D16_8CH_FCC,0,CH5,CH6,CH7,CH8 +64,2,FrSkyX2,D16_LBT,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +64,3,FrSkyX2,D16_8CH_LBT,1,CH5,CH6,CH7,CH8 +64,4,FrSkyX2,D16Cloned,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,0,FrSkyRX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +55,1,FrSkyRX,CloneTX,0 +39,0,Hitec,Opt_Fw,0,CH5,CH6,CH7,CH8,CH9 +39,1,Hitec,Opt_Hub,0,CH5,CH6,CH7,CH8,CH9 +39,2,Hitec,Minima,0,CH5,CH6,CH7,CH8,CH9 +57,0,HoTT,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +21,0,SFHSS,Std,0,CH5,CH6,CH7,CH8 +68,0,Skyartec,Std,0,CH5,CH6,CH7 +7,0,Devo,8CH,0,CH5,CH6,CH7,CH8 +7,1,Devo,10CH,0,CH5,CH6,CH7,CH8,CH9,CH10 +7,2,Devo,12CH,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +7,3,Devo,6CH,0,CH5,CH6 +7,4,Devo,7CH,0,CH5,CH6,CH7 +30,0,WK2x01,WK2801,0,CH5,CH6,CH7,CH8 +30,1,WK2x01,WK2401,0 +30,2,WK2x01,W6_5_1,0,Gear,Dis,Gyro +30,3,WK2x01,W6_6_1,0,Gear,Col,Gyro +30,4,WK2x01,W6HEL,0,Gear,Col,Gyro +30,5,WK2x01,W6HEL_I,0,Gear,Col,Gyro +6,0,DSM,2_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,1,DSM,2_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,2,DSM,X_22,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +6,3,DSM,X_11,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,n-a,ThKill +22,0,J6Pro,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12 +22,0,WFLY,WFR0xS,0,CH5,CH6,CH7,CH8,CH9 +24,0,Assan,Std,0,CH5,CH6,CH7,CH8 +14,0,Bayang,Std,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,n-a,n-a,AnAux1,AnAux2 +14,1,Bayang,H8S3D,1,Flip,RTH,Pict,Video,HLess,Invert,Rates +14,2,Bayang,X16_AH,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf +14,3,Bayang,IRDRONE,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +14,4,Bayang,DHD_D4,1,Flip,RTH,Pict,Video,HLess,Invert,Rates,TakeOf,EmStop +59,0,BayangRX,RX,1,AnAux1,AnAux2,Flip,RTH,Pict,Video +42,0,BugsMini,Mini,0,Arm,Angle,Flip,Pict,Video,LED +42,1,BugsMini,3H,0,Arm,Angle,Flip,Pict,Video,LED,AltHol +34,0,Cabell,V3,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +34,1,Cabell,V3Telem,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +13,0,CG023,Std,1,Flip,Light,Pict,Video,HLess +13,1,CG023,YD829,1,Flip,n-a,Pict,Video,HLess +12,0,CX10,Green,1,Flip,Rate +12,1,CX10,Blue,1,Flip,Rate,Pict,Video +12,2,CX10,DM007,1,Flip,Mode,Pict,Video,HLess +12,4,CX10,JC3015_1,1,Flip,Mode,Pict,Video +12,5,CX10,JC3015_2,1,Flip,Mode,LED,DFlip +12,6,CX10,MK33041,1,Flip,Mode,Pict,Video,HLess,RTH +33,0,DM022,Std,1,Flip,LED,Cam1,Cam2,HLess,RTH,RLow +45,0,E01X,E012,1,n-a,Flip,n-a,HLess,RTH +45,1,E01X,E015,1,Arm,Flip,LED,HLess,RTH +45,2,E01X,E016H,1,Stop,Flip,n-a,HLess,RTH +16,0,ESKY,Std,0,Gyro,Pitch +16,1,ESKY,ET4,0,Gyro,Pitch +35,0,ESKY150,4CH,0 +35,1,ESKY150,7CH,0,FMode,Aux6,Aux7 +20,0,FY326,FY326,1,Flip,RTH,HLess,Expert,Calib +20,1,FY326,FY319,1,Flip,RTH,HLess,Expert,Calib +23,0,FY326,FY326,1,Flip,RTH,HLess,Expert +32,0,GW008,FY326,1,Flip +36,0,H8_3D,Std,1,Flip,Light,Pict,Video,RTH,FlMode,Cal1 +36,1,H8_3D,H20H,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,2,H8_3D,H20,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +36,3,H8_3D,H30,1,Flip,Light,Pict,Video,Opt1,Opt2,Cal1,Cal2,Gimbal +4,0,Hisky,Std,0,Gear,Pitch,Gyro,CH8 +9,0,KN,WLToys,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +9,1,KN,Feilun,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim +26,0,Hontai,Std,1,Flip,LED,Pict,Video,HLess,RTH,Calib +26,1,Hontai,JJRCX1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,2,Hontai,X5C1,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +26,3,Hontai,FQ777_951,1,Flip,Arm,Pict,Video,HLess,RTH,Calib +18,0,MJXQ,WHL08,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,1,MJXQ,X600,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,2,MJXQ,X800,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,3,MJXQ,H26D,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,4,MJXQ,E010,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,5,MJXQ,H26WH,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +18,6,MJXQ,Phoenix,1,Flip,Arm,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate +17,0,MT99XX,Std,1,Flip,LED,Pict,Video,HLess +17,1,MT99XX,H7,1,Flip,LED,Pict,Video,HLess +17,2,MT99XX,YZ,1,Flip,LED,Pict,Video,HLess +17,3,MT99XX,LS,1,Flip,Invert,Pict,Video,HLess +17,4,MT99XX,FY805,1,Flip,n-a,n-a,n-a,HLess +44,0,NCC1701,Std,1,Warp +51,0,Potensic,A20,1,TakLan,Emerg,Mode,HLess +66,0,Propel,74-Z,1,LEDs,RollCW,RolCCW,Fire,Weapon,Calib,AltHol,TakeOf,Land,Train +29,0,Q2x2,Q222,1,Flip,LED,Mod2,Mod1,HLess,RTH,XCal,YCal +29,1,Q2x2,Q242,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +29,2,Q2x2,Q282,1,Flip,LED,Pict,Video,HLess,RTH,XCal,YCal +31,0,Q303,Q303,1,AltHol,Flip,Pict,Video,HLess,RTH,Gimbal +31,1,Q303,C35,1,Arm,VTX,Pict,Video,n-a,RTH,Gimbal +31,2,Q303,CX10D,1,Arm,Flip +31,3,Q303,CX10WD,1,Arm,Flip +50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 +11,0,SLT,V1,0,Gear,Pitch +11,1,SLT,V2,0,CH5,CH6,CH7,CH8 +11,2,SLT,Q100,0,Rates,n-a,CH7,CH8,Mode,Flip,n-a,n-a,Calib +11,3,SLT,Q200,0,Rates,n-a,CH7,CH8,Mode,VidOn,VidOff,Calib +11,4,SLT,MR100,0,Rates,n-a,CH7,CH8,Mode,Flip,Video,Pict +10,0,Symax,Std,1,Flip,Rates,Pict,Video,HLess +10,1,Symax,X5C,1,Flip,Rates,Pict,Video,HLess +5,0,V2x2,Std,1,Flip,Light,Pict,Video,HLess,CalX,CalY +5,1,V2x2,JXD506,1,Flip,Light,Pict,Video,HLess,StaSto,Emerg,Cam_UD +61,0,Tiger,Std,1,Flip,Light +46,0,V911s,Std,1,Calib +46,1,E119,Std,1,Calib +62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video +8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess +8,1,YD717,SkyWlkr,1,Flip,Light,Pict,Video,HLess +8,2,YD717,Simax4,1,Flip,Light,Pict,Video,HLess +8,3,YD717,XinXun,1,Flip,Light,Pict,Video,HLess +8,4,YD717,NiHui,1,Flip,Light,Pict,Video,HLess +65,0,FrSkyR9,R9_915,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,1,FrSkyR9,R9_868,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16 +65,2,FrSkyR9,R9_915_8CH,0,CH5,CH6,CH7,CH8 +65,3,FrSkyR9,R9_968_8CH,0,CH5,CH6,CH7,CH8 +56,0,Flysky2A_RX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14 +19,0,Shenqi,Cycle,1 +4,1,Hisky,HK310,0,Aux +43,0,Traxxas,6519,0 +52,0,ZSX,280,1,Light +48,0,V761,Std,1,Gyro +49,0,KF606,Std,1,Trim +47,0,GD00x,V1,1,Trim,LED,Rate +47,1,GD00x,V2,1,Trim,LED,Rate +58,0,FX816,P38,1 diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua index 2bd2e1a73..42de75e4f 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/MultiChannelsUpdater.lua @@ -1,3 +1,4 @@ + local toolName = "TNS|Multi chan namer|TNE" ---- ######################################################################### @@ -17,168 +18,18 @@ local toolName = "TNS|Multi chan namer|TNE" ---- # # ---- ######################################################################### +local protocol_name = "" +local sub_protocol_name = "" +local bind_ch = 0 +local module_conf = {} +local module_pos = "Internal" +local file_ok = 0 local done = 0 -local Protocols = { - {1, 0, "Flysky", "Flysky", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {1, 1, "Flysky", "V9x9", { "Flip", "Light", "Pict", "Video" }, 1 }, - {1, 2, "Flysky", "V6x6", { "Flip", "Light", "Pict", "Video", "HLess", "RTH", "XCAL", "YCAL" }, 1 }, - {1, 3, "Flysky", "V912", { "BtmBtn", "TopBtn" }, 1 }, - {1, 4, "Flysky", "CX20", { "CH5", "CH6", "CH7" }, 0 }, - {28, 0, "Flysky AFHDS2A", "PWM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 1, "Flysky AFHDS2A", "PPM_IBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 2, "Flysky AFHDS2A", "PWM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {28, 3, "Flysky AFHDS2A", "PPM_SBUS", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - {53, 0, "Flyzone", "FZ-410", { }, 0 }, - {2, 0, "Hubsan", "H107", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {2, 1, "Hubsan", "H301", { "RTH", "Light", "Stab", "Video" }, 0 }, - {2, 2, "Hubsan", "H501", { "RTH", "Light", "Pict", "Video", "HLess", "GPS_H", "ALT_H", "Flip", "FModes" }, 0 }, - {41, 0, "Bugs", "3-6-8", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {60, 0, "Pelikan", "PRO_V4", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 0, "Corona", "COR_V1", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 1, "Corona", "COR_V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {37, 2, "Corona", "FD_V3", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {25, 0, "FrSkyV", "V8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {3, 0, "FrSkyD", "D8Cloned", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {67, 0, "FrSkyL", "LR12", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {67, 1, "FrSkyL", "LR12_6CH", { "CH5", "CH6" }, 0 }, - {15, 0, "FrSkyX", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 1, "FrSkyX", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 2, "FrSkyX", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {15, 3, "FrSkyX", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {15, 4, "FrSkyX", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 0, "FrSkyX2", "D16 FCC", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 1, "FrSkyX2", "D16_8CH FCC", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {64, 2, "FrSkyX2", "D16 LBT", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {64, 3, "FrSkyX2", "D16_8CH LBT", { "CH5", "CH6", "CH7", "CH8" }, 1 }, - {64, 4, "FrSkyX2", "D16Cloned", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 0, "FrSkyRX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {55, 1, "FrSkyRX", "CloneTX", { }, 0 }, - {39, 0, "Hitec", "Opt_Fw", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 1, "Hitec", "Opt_Hub", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {39, 2, "Hitec", "Minima", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {57, 0, "HoTT", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {21, 0, "SFHSS", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {68, 0, "Skyartec", "Std", { "CH5", "CH6", "CH7" }, 0 }, - {7 , 0, "Devo", "8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {7 , 1, "Devo", "10CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10" }, 0 }, - {7 , 2, "Devo", "12CH", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {7 , 3, "Devo", "6CH", { "CH5", "CH6" }, 0 }, - {7 , 4, "Devo", "7CH", { "CH5", "CH6", "CH7" }, 0 }, - {30, 0, "WK2x01", "WK2801", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {30, 1, "WK2x01", "WK2401", { }, 0 }, - {30, 2, "WK2x01", "W6_5_1", { "Gear", "Dis", "Gyro" }, 0 }, - {30, 3, "WK2x01", "W6_6_1", { "Gear", "Col", "Gyro" }, 0 }, - {30, 4, "WK2x01", "W6HEL", { "Gear", "Col", "Gyro" }, 0 }, - {30, 5, "WK2x01", "W6HEL_I", { "Gear", "Col", "Gyro" }, 0 }, - {6 , 0, "DSM", "2_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 1, "DSM", "2_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 2, "DSM", "X_22", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {6 , 3, "DSM", "X_11", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "n-a", "ThKill" }, 0 }, - {22, 0, "J6Pro", "Std", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12" }, 0 }, - {22, 0, "WFLY", "WFR0xS", { "CH5", "CH6", "CH7", "CH8", "CH9" }, 0 }, - {24, 0, "Assan", "Std", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {14, 0, "Bayang", "Std", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "n-a", "n-a", "AnAux1", "AnAux2" }, 1 }, - {14, 1, "Bayang", "H8S3D", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates" }, 1 }, - {14, 2, "Bayang", "X16_AH", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf" }, 1 }, - {14, 3, "Bayang", "IRDRONE", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {14, 4, "Bayang", "DHD_D4", { "Flip", "RTH", "Pict", "Video", "HLess", "Invert", "Rates", "TakeOf", "EmStop" }, 1 }, - {59, 0, "BayangRX", "RX", { "AnAux1", "AnAux2", "Flip", "RTH", "Pict", "Video" }, 1 }, - {42, 0, "BugsMini", "Mini", { "Arm", "Angle", "Flip", "Pict", "Video", "LED" }, 0 }, - {42, 1, "BugsMini", "3H", { "Arm", "Angle", "Flip", "Pict", "Video", "LED", "AltHol" }, 0 }, - {34, 0, "Cabell", "V3", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {34, 1, "Cabell", "V3Telem", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {13, 0, "CG023", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {13, 1, "CG023", "YD829", { "Flip", "n-a", "Pict", "Video", "HLess" }, 1 }, - {12, 0, "CX10", "Green", { "Flip", "Rate" }, 1 }, - {12, 1, "CX10", "Blue", { "Flip", "Rate", "Pict", "Video" }, 1 }, - {12, 2, "CX10", "DM007", { "Flip", "Mode", "Pict", "Video", "HLess" }, 1 }, - {12, 4, "CX10", "JC3015_1", { "Flip", "Mode", "Pict", "Video" }, 1 }, - {12, 5, "CX10", "JC3015_2", { "Flip", "Mode", "LED", "DFlip" }, 1 }, - {12, 6, "CX10", "MK33041", { "Flip", "Mode", "Pict", "Video", "HLess", "RTH" }, 1 }, - {33, 0, "DM022", "Std", { "Flip", "LED", "Cam1", "Cam2", "HLess", "RTH", "RLow" }, 1 }, - {45, 0, "E01X", "E012", { "n-a", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {45, 1, "E01X", "E015", { "Arm", "Flip", "LED", "HLess", "RTH" }, 1 }, - {45, 2, "E01X", "E016H", { "Stop", "Flip", "n-a", "HLess", "RTH" }, 1 }, - {16, 0, "ESKY", "Std", { "Gyro", "Pitch" }, 0 }, - {16, 1, "ESKY", "ET4", { "Gyro", "Pitch" }, 0 }, - {35, 0, "ESKY150", "4CH", { }, 0 }, - {35, 1, "ESKY150", "7CH", { "FMode", "Aux6", "Aux7" }, 0 }, - {20, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {20, 1, "FY326", "FY319", { "Flip", "RTH", "HLess", "Expert", "Calib" }, 1 }, - {23, 0, "FY326", "FY326", { "Flip", "RTH", "HLess", "Expert" }, 1 }, - {32, 0, "GW008", "FY326", { "Flip" }, 1 }, - {36, 0, "H8_3D", "Std", { "Flip", "Light", "Pict", "Video", "RTH", "FlMode", "Cal1" }, 1 }, - {36, 1, "H8_3D", "H20H", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 2, "H8_3D", "H20", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {36, 3, "H8_3D", "H30", { "Flip", "Light", "Pict", "Video", "Opt1", "Opt2", "Cal1", "Cal2", "Gimbal" }, 1 }, - {4 , 0, "Hisky", "Std", { "Gear", "Pitch", "Gyro", "CH8" }, 0 }, - {9 , 0, "KN", "WLToys", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {9 , 1, "KN", "Feilun", { "DRate", "THold", "IdleUp", "Gyro", "Ttrim", "Atrim", "Etrim" }, 0 }, - {26, 0, "Hontai", "Std", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 1, "Hontai", "JJRCX1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 2, "Hontai", "X5C1", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {26, 3, "Hontai", "FQ777_951", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "Calib" }, 1 }, - {18, 0, "MJXQ", "WHL08", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 1, "MJXQ", "X600", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 2, "MJXQ", "X800", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 3, "MJXQ", "H26D", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 4, "MJXQ", "E010", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 5, "MJXQ", "H26WH", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {18, 6, "MJXQ", "Phoenix", { "Flip", "Arm", "Pict", "Video", "HLess", "RTH", "AuFlip", "Pan", "Tilt", "Rate" }, 1 }, - {17, 0, "MT99XX", "Std", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 1, "MT99XX", "H7", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 2, "MT99XX", "YZ", { "Flip", "LED", "Pict", "Video", "HLess" }, 1 }, - {17, 3, "MT99XX", "LS", { "Flip", "Invert", "Pict", "Video", "HLess" }, 1 }, - {17, 4, "MT99XX", "FY805", { "Flip", "n-a", "n-a", "n-a", "HLess" }, 1 }, - {44, 0, "NCC1701", "Std", { "Warp" }, 1 }, - {51, 0, "Potensic", "A20", { "TakLan", "Emerg", "Mode", "HLess" }, 1 }, - {66, 0, "Propel", "74-Z", { "LEDs", "RollCW", "RolCCW", "Fire", "Weapon", "Calib", "AltHol", "TakeOf", "Land", "Train" }, 1 }, - {29, 0, "Q2x2", "Q222", { "Flip", "LED", "Mod2", "Mod1", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 1, "Q2x2", "Q242", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {29, 2, "Q2x2", "Q282", { "Flip", "LED", "Pict", "Video", "HLess", "RTH", "XCal", "YCal" }, 1 }, - {31, 0, "Q303", "Q303", { "AltHol", "Flip", "Pict", "Video", "HLess", "RTH", "Gimbal" }, 1 }, - {31, 1, "Q303", "C35", { "Arm", "VTX", "Pict", "Video", "n-a", "RTH", "Gimbal" }, 1 }, - {31, 2, "Q303", "CX10D", { "Arm", "Flip" }, 1 }, - {31, 3, "Q303", "CX10WD", { "Arm", "Flip" }, 1 }, - {50, 0, "Redpine", "Fast", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {50, 1, "Redpine", "Slow", { "sCH5", "sCH6", "sCH7", "sCH8", "sCH9", "sCH10", "sCH11", "sCH12", "sCH13", "sCH14", "sCH15", "sCH16" }, 0 }, - {11, 0, "SLT", "V1", { "Gear", "Pitch" }, 0 }, - {11, 1, "SLT", "V2", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {11, 2, "SLT", "Q100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "n-a", "n-a", "Calib" }, 0 }, - {11, 3, "SLT", "Q200", { "Rates", "n-a", "CH7", "CH8", "Mode", "VidOn", "VidOff", "Calib" }, 0 }, - {11, 4, "SLT", "MR100", { "Rates", "n-a", "CH7", "CH8", "Mode", "Flip", "Video", "Pict" }, 0 }, - {10, 0, "Symax", "Std", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {10, 1, "Symax", "X5C", { "Flip", "Rates", "Pict", "Video", "HLess" }, 1 }, - {5 , 0, "V2x2", "Std", { "Flip", "Light", "Pict", "Video", "HLess", "CalX", "CalY" }, 1 }, - {5 , 1, "V2x2", "JXD506", { "Flip", "Light", "Pict", "Video", "HLess", "StaSto", "Emerg", "Cam_UD" }, 1 }, - {61, 0, "Tiger", "Std", { "Flip", "Light" }, 1 }, - {46, 0, "V911s", "Std", { "Calib" }, 1 }, - {46, 1, "E119", "Std", { "Calib" }, 1 }, - {62, 0, "XK", "X450", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {62, 1, "XK", "X420", { "FMode", "TakeOf", "Emerg", "3D_6G", "Pict", "Video" }, 1 }, - {8 , 0, "YD717", "Std", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 1, "YD717", "SkyWlkr", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 2, "YD717", "Simax4", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 3, "YD717", "XinXun", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {8 , 4, "YD717", "NiHui", { "Flip", "Light", "Pict", "Video", "HLess" }, 1 }, - {65,0, "FrSkyR9", "R9_915", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,1, "FrSkyR9", "R9_868", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14", "CH15", "CH16" }, 0 }, - {65,2, "FrSkyR9", "R9_915_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {65,3, "FrSkyR9", "R9_968_8CH", { "CH5", "CH6", "CH7", "CH8" }, 0 }, - {56, 0, "Flysky2A RX", "RX", { "CH5", "CH6", "CH7", "CH8", "CH9", "CH10", "CH11", "CH12", "CH13", "CH14" }, 0 }, - --- Need first 4 channels changed... - {19, 0, "Shenqi", "Cycle", { }, 1 }, - {4 , 1, "Hisky", "HK310", { "Aux" }, 0 }, - {43, 0, "Traxxas", "6519", { }, 0 }, - {52, 0, "ZSX", "280", { "Light" }, 1 }, - {48, 0, "V761", "Std", { "Gyro" }, 1 }, - {49, 0, "KF606", "Std", { "Trim" }, 1 }, - {47, 0, "GD00x", "V1", { "Trim", "LED", "Rate" }, 1 }, - {47, 1, "GD00x", "V2", { "Trim", "LED", "Rate" }, 1 }, - {58, 0, "FX816", "P38", { },1 } -} +local protocol = 0 +local sub_protocol = 0 +local f_seek = 0 +local channel_names={} +local num_search = "Searching" local function drawScreenTitle(title) if LCD_W == 480 then @@ -203,33 +54,14 @@ function bitand(a, b) return result end -local function Multi_Draw_LCD() +local function Multi_Draw_LCD(event) local line = 0 - local module_conf = {} - local module_pos = "Internal" lcd.clear() drawScreenTitle("Multi channels namer") - module_conf = model.getModule(0) - if module_conf["Type"] ~= 6 then - module_pos = "External" - module_conf = model.getModule(1) - if module_conf["Type"] ~= 6 then - if LCD_W == 480 then - lcd.drawText(10,50,"No Multi module configured...", BLINK) - else - --Draw on LCD_W=128 - lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) - end - return - end - end - - local protocol = module_conf["protocol"] - local sub_protocol = module_conf["subProtocol"] --Display settings - local lcd_opt + local lcd_opt = 0 if LCD_W == 480 then x_pos = 10 y_pos = 32 @@ -241,6 +73,180 @@ local function Multi_Draw_LCD() lcd_opt = SMLSIZE end + --Multi Module detection + if module_conf["Type"] ~= 6 then + if LCD_W == 480 then + lcd.drawText(10,50,"No Multi module configured...", BLINK) + else + --Draw on LCD_W=128 + lcd.drawText(2,17,"No Multi module configured...",SMLSIZE) + end + return + else + lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) + line = line + 1 + end + + --Channel order + if (ch_order == -1) then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) + line = line + 1 + end + + --Can't open file MultiChan.txt + if file_ok == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Can't read MultiChan.txt file...", lcd_opt) + return + end + + if ( protocol_name == "" or sub_protocol_name == "" ) and f_seek ~=-1 then + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + lcd.drawText(x_pos, y_pos+y_inc*line,num_search, lcd_opt) + num_search = num_search .. "." + if #num_search > 15 then + num_search = string.sub(num_search,1,9) + end + local proto = 0 + local sub_proto = 0 + local proto_name = "" + local sub_proto_name = "" + local channels = "" + local nbr_try = 0 + local nbr_car = 0 + repeat + io.seek(f, f_seek) + local data = io.read(f, 100) -- read 100 characters + if #data ==0 then + f_seek = -1 -- end of file + break + end + proto, sub_proto, proto_name, sub_proto_name, bind_ch, channels = string.match(data,'(%d+),(%d),([%w-_ ]+),([%w-_ ]+),(%d)(.+)') + if proto ~= nil and sub_proto ~= nil and protocol_name ~= nil and sub_protocol_name ~= nil and bind_ch ~= nil then + if tonumber(proto) == protocol and tonumber(sub_proto) == sub_protocol then + protocol_name = proto_name + sub_protocol_name = sub_proto_name + bind_ch = tonumber(bind_ch) + if channels ~= nil then + --extract channel names + nbr_car = string.find(channels, "\r") + if nbr_car == nil then nbr_car = string.find(channels, "\n") end + if nbr_car ~= nil then + channels = string.sub(channels,1,nbr_car-1) + end + local i = 5 + for k in string.gmatch(channels, ",([%w-_ ]+)") do + channel_names[i] = k + i = i + 1 + end + end + f_seek = -1 -- protocol found + break + end + end + if f_seek ~= -1 then + nbr_car = string.find(data, "\n") + if nbr_car == nil then nbr_car = string.find(data, "\r") end + if nbr_car == nil then + f_seek = -1 -- end of file + break + end + f_seek = f_seek + nbr_car -- seek to next line + nbr_try = nbr_try + 1 + end + until nbr_try > 20 or f_seek == -1 + io.close(f) + end + + if f_seek ~= -1 then + return -- continue searching... + end + + --Protocol & Sub_protocol + if protocol_name == "" or sub_protocol_name == "" then + lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) + return + elseif LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + else + lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) + line = line + 1 + lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) + line = line + 1 + end + + text1="" + text2="" + for i,v in ipairs(channel_names) do + if i<=8 then + if i==1 then + text1 = v + else + text1=text1 .. "," .. v + end + else + if i==9 then + text2 = v + else + text2=text2 .. "," .. v + end + end + end + if LCD_W > 128 then + lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) + line = line + 1 + if text2 ~= "" then + lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) + line = line + 1 + end + end + + if event ~= EVT_VIRTUAL_ENTER and done == 0 then + lcd.drawText(x_pos, y_pos+y_inc*line," Save", lcd_opt + INVERS + BLINK) + return + end + + lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) + line = line + 1 + local output, nbr + if done == 0 then + for i,v in ipairs(channel_names) do + output = model.getOutput(i-1) + output["name"] = v + model.setOutput(i-1,output) + nbr = i + end + for i = nbr, 15 do + output = model.getOutput(i) + output["name"] = "n-a" + model.setOutput(i,output) + end + if bind_ch == 1 then + output = model.getOutput(15) + output["name"] = "BindCH" + model.setOutput(15,output) + end + done = 1 + end + lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) + line = line + 1 +end + +-- Init +local function Multi_Init() + module_conf = model.getModule(0) + if module_conf["Type"] ~= 6 then + module_pos = "External" + module_conf = model.getModule(1) + if module_conf["Type"] ~= 6 then + return + end + end + + protocol = module_conf["protocol"] + sub_protocol = module_conf["subProtocol"] + --Exceptions on first 4 channels... local stick_names = { "Rud", "Ele", "Thr", "Ail" } if ( protocol == 4 and sub_protocol ==1 ) or protocol == 19 or protocol == 52 then -- Hisky/HK310, Shenqi, ZSX @@ -257,7 +263,6 @@ local function Multi_Draw_LCD() end --Determine fist 4 channels order - local channel_names={} local ch_order=module_conf["channelsOrder"] if (ch_order == -1) then channel_names[1] = stick_names[defaultChannel(0)+1] @@ -273,91 +278,11 @@ local function Multi_Draw_LCD() ch_order = math.floor(ch_order/4) channel_names[bitand(ch_order,3)+1] = stick_names[1] end - - --Specific channels for protocol - local protocol_name, sub_protocol_name, bind_ch - for i,v in ipairs(Protocols) do - if v[1] == protocol and v[2] == sub_protocol then - protocol_name = v[3] - sub_protocol_name = v[4] - for j,w in ipairs(v[5]) do - channel_names[4+j]=w; - end - bind_ch = v[6] - end - end - - lcd.drawText(x_pos, y_pos+y_inc*line,module_pos .. " Multi detected.", lcd_opt) - line = line + 1 - if (ch_order == -1) then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels order can't be read from Multi...", lcd_opt) - line = line + 1 - end - if protocol_name == nil or sub_protocol_name == nil then - lcd.drawText(x_pos, y_pos+y_inc*line,"Unknown protocol "..tostring(protocol).."/"..tostring(sub_protocol).." ...", lcd_opt) - else if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name .. " / SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - else - lcd.drawText(x_pos, y_pos+y_inc*line,"Protocol: " .. protocol_name, lcd_opt) - line = line + 1 - lcd.drawText(x_pos, y_pos+y_inc*line,"SubProtocol: " .. sub_protocol_name, lcd_opt) - line = line + 1 - end - text1="" - text2="" - for i,v in ipairs(channel_names) do - if i<=8 then - if i==1 then - text1 = v - else - text1=text1 .. "," .. v - end - else - if i==9 then - text2 = v - else - text2=text2 .. "," .. v - end - end - end - if LCD_W > 128 then - lcd.drawText(x_pos, y_pos+y_inc*line,"Channels: " .. text1, lcd_opt) - line = line + 1 - if text2 ~= "" then - lcd.drawText(x_pos*9, y_pos+y_inc*line,text2, lcd_opt) - line = line + 1 - end - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Setting channel names.", lcd_opt) - line = line + 1 - local output, nbr - if done == 0 then - for i,v in ipairs(channel_names) do - output = model.getOutput(i-1) - output["name"] = v - model.setOutput(i-1,output) - nbr = i - end - for i = nbr, 15 do - output = model.getOutput(i) - output["name"] = "n-a" - model.setOutput(i,output) - end - if bind_ch == 1 then - output = model.getOutput(15) - output["name"] = "BindCH" - model.setOutput(15,output) - end - done = 1 - end - lcd.drawText(x_pos, y_pos+y_inc*line,"Done!", lcd_opt) - line = line + 1 - end -end - --- Init -local function Multi_Init() + --Check MultiChan.txt + local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r") + if f == nil then return end + file_ok = 1 + io.close(f) end -- Main @@ -366,8 +291,8 @@ local function Multi_Run(event) error("Cannot be run as a model script!") return 2 else - Multi_Draw_LCD() - if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then + Multi_Draw_LCD(event) + if event == EVT_VIRTUAL_EXIT then return 2 end end From 88070d1d3e4788af11865670abe94ec71d489f3e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 4 May 2020 10:07:20 +0200 Subject: [PATCH 145/199] Cosmetics --- companion/src/mainwindow.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 35e15968b..06760fb41 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -916,14 +916,15 @@ void MainWindow::changelog() void MainWindow::customizeSplash() { - CustomizeSplashDialog * dialog = new CustomizeSplashDialog(this); + auto * dialog = new CustomizeSplashDialog(this); dialog->exec(); dialog->deleteLater(); } void MainWindow::writeEeprom() { - if (activeMdiChild()) activeMdiChild()->writeEeprom(); + if (activeMdiChild()) + activeMdiChild()->writeEeprom(); } void MainWindow::readEeprom() From 51633eac22bfa2356257869052478c7b3b00898c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 4 May 2020 10:24:36 +0200 Subject: [PATCH 146/199] Cosmetics --- companion/src/mdichild.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index 3c8c7c214..1a85aafb7 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -1490,18 +1490,18 @@ bool MdiChild::convertStorage(Board::Type from, Board::Type to, bool newFile) isUntitled = true; if (cstate.hasLogEntries(RadioDataConversionState::EVT_INF)) { - QDialog * msgBox = new QDialog(Q_NULLPTR, Qt::Dialog | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint); + auto * msgBox = new QDialog(Q_NULLPTR, Qt::Dialog | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint); - ExportableTableView * tv = new ExportableTableView(msgBox); + auto * tv = new ExportableTableView(msgBox); tv->setSortingEnabled(true); tv->verticalHeader()->hide(); tv->setModel(cstate.getLogModel(RadioDataConversionState::EVT_INF, tv)); tv->resizeColumnsToContents(); tv->resizeRowsToContents(); - QDialogButtonBox * btnBox = new QDialogButtonBox(QDialogButtonBox::Ok, this); + auto * btnBox = new QDialogButtonBox(QDialogButtonBox::Ok, this); - QVBoxLayout * lo = new QVBoxLayout(msgBox); + auto * lo = new QVBoxLayout(msgBox); lo->addWidget(new QLabel(tr("The conversion generated some important messages, please review them below."))); lo->addWidget(tv); lo->addWidget(btnBox); From fd45916489ab0f3be2158e11fbf3f19883fcbf28 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 4 May 2020 10:25:09 +0200 Subject: [PATCH 147/199] Cosmetics --- companion/src/firmwares/opentx/opentxeeprom.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 7053118d5..7940a8547 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -1916,7 +1916,7 @@ class SensorField: public TransformedField { internalField.Append(new UnsignedField<32>(this, _param, "param")); } - virtual void beforeExport() + void beforeExport() override { if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) { _id = sensor.id; @@ -2039,7 +2039,7 @@ class ModuleUnionField: public UnionField { module(module), rfProtExtra(0) { - ModuleData::Multi& multi = module.multi; + ModuleData::Multi & multi = module.multi; internalField.Append(new UnsignedField<3>(this, rfProtExtra)); internalField.Append(new BoolField<1>(this, multi.disableTelemetry)); internalField.Append(new BoolField<1>(this, multi.disableMapping)); @@ -2067,7 +2067,7 @@ class ModuleUnionField: public UnionField { private: StructField internalField; - ModuleData& module; + ModuleData & module; unsigned int rfProtExtra; }; @@ -2131,7 +2131,8 @@ class ModuleUnionField: public UnionField { memset(receiverName, 0, sizeof(receiverName)); } - bool select(const unsigned int& attr) const override { + bool select(const unsigned int& attr) const override + { return attr >= PULSES_ACCESS_ISRM && attr <= PULSES_ACCESS_R9M_LITE_PRO; } @@ -2139,7 +2140,6 @@ class ModuleUnionField: public UnionField { { for (int i=0; i Date: Mon, 4 May 2020 10:27:00 +0200 Subject: [PATCH 148/199] Module EEPROM save fails --- companion/src/firmwares/opentx/opentxeeprom.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 7940a8547..f2275fe61 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2057,7 +2057,6 @@ class ModuleUnionField: public UnionField { void beforeExport() override { rfProtExtra = (module.multi.rfProtocol & 0x70) >> 4; - module.multi.rfProtocol &= 0x0f; } void afterImport() override From 6fbfe02cd9ad104f50b20ce67f6420a128e217da Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 4 May 2020 11:31:34 +0200 Subject: [PATCH 149/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index ffa540fbc..90b3a280b 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1728,3 +1728,4 @@ Maksym Arshynkin Tomas Sodergren Jörg Lemnitz TMac FPV +Josef Schaeffler From d44facd3162a9581cbb273fb542a345689d80eaa Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Mon, 4 May 2020 13:20:35 +0100 Subject: [PATCH 150/199] Update es translation of Companion (#7578) Update es translation --- CREDITS.txt | 1 + companion/src/translations/companion_es.ts | 9168 ++++++++++++-------- 2 files changed, 5610 insertions(+), 3559 deletions(-) diff --git a/CREDITS.txt b/CREDITS.txt index 90b3a280b..69e242fac 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -11,6 +11,7 @@ Arne Schwabe (schwabe) [Translators] [fr] Sebastien Charpentier (LapinFou) +[es] Daniel Gorbea (dgatf) [Other contributors] Rob Thomson diff --git a/companion/src/translations/companion_es.ts b/companion/src/translations/companion_es.ts index 7e1cf51d6..bdd44458d 100644 --- a/companion/src/translations/companion_es.ts +++ b/companion/src/translations/companion_es.ts @@ -11,22 +11,22 @@ Yes, controlled by a single channel - Si, controlado por un único canal + Sí, controlado por un único canal Yes, controlled by two channels - Si, controlado por dos canales + Sí, controlado por dos canales <br>First Aileron Channel: - <br>Canal Primer Alerón: + <br>Canal primer alerón: Second Aileron Channel: - Canal Segundo Alerón: + Canal segundo alerón: @@ -39,22 +39,22 @@ Yes, controlled by a single channel - Si, controlado por un único canal + Sí, controlado por un único canal Yes, controlled by two channels - Si, controlado por dos canales + Sí, controlado por dos canales <br>First Airbrake Channel: - <br>Primer Canal Aerofreno: + <br>Primer canal aerofreno: Second Airbrake Channel: - Segundo Canal Aerofreno: + Segundo canal aerofreno: @@ -63,22 +63,23 @@ Application Settings have been saved to %1 - + Los ajustes de la aplicación han sido grabados a +.%1 Could not save Application Settings to file "%1" - + No se han podido grabar los ajustes de la aplicación en el archivo "%1" because the file could not be saved (check access permissions). - + porque el archivo no se ha podido grabar (revisa los permisos). for unknown reasons. - + por causas desconocidas. @@ -86,48 +87,64 @@ Show this message again at next startup? - + ¿Mostrar este mensaje de nuevo en el siguiente inicio? AppPreferencesDialog + + Edit Settings - Editar Ajustes + Editar ajustes + + Radio Profile - Perfil de Radio + Perfil de radio - + + + Default Channel Order - Orden Prederterminado Canales + Orden prederterminado canales - + + + Build Options - Opciones Firmware + Opciones del firmware - + + + Menu Language - Lenguaje Menú + Lenguaje de los menús - + + + Default Stick Mode - Modo Prederterminado Sticks + Modo prederterminado sticks - + + + Select Image - Seleccionar Imagen + Seleccionar imagen - + + + Mode selection: Mode 1: @@ -147,508 +164,712 @@ Mode 4: Right stick: Elevator, Rudder - Selección de Modo: + Selección de modo: Modo 1: - Stick Izquierdo: Elevador, Timón - Stick Derecho: Acelerador, Alerón + Stick izquierdo: Elevador, Timón + Stick derecho: Acelerador, Alerón Modo 2: - Stick Izquierdo: Acelerador, Timón - Stick Derecho: Elevador, Alerón + Stick izquierdo: Acelerador, Timón + Stick derecho: Elevador, Alerón Modo 3: - Stick Izquierdo: Elevador, Alerón - Stick Derecho: Acelerador, Timón + Stick izquierdo: Elevador, Alerón + Stick derecho: Acelerador, Timón Modo 4: - Stick Izquierdo: Acelerador, Alerón - Stick Derecho: Elevador, Timón + Stick izquierdo: Acelerador, Alerón + Stick derecho: Elevador, Timón - + + + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + + + Mode 2 (RUD THR ELE AIL) - Modo 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 + Pantalla de inicio - - + + + + + + The profile specific folder, if set, will override general Backup folder - + La carpeta específica del perfil, si está fijada, anulará la carpeta de copia de seguridad general - + + + Backup folder - + Carpeta de copia de seguridad - + + + If set it will override the application general setting - + Si está fijado anulará los ajustes generales de la aplicación> - + + + if set, will override general backup enable - + si está fijado anulará la copia de seguridad general> - + + + <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 - + Selecciona carpeta - + + + Select Executable - + Selecciona ejecutable - + + + Release channel - + Canal de distribución - + + + Releases (stable) - + Releases (estable) - + + + Release candidates (testing) - + Release candidates (testing) - + + + Nightly builds (unstable) - + Nightly builds (inestable) - + + + Simulator Volume Gain - + Ganancia de volumen del simulador - + + + + Simulator controls + Controles de simulador + + + + + + Save switch/pot positions on simulator exit + Guardar las posiciones de interruptores/pots al salir del simulador + + + + + + Clear saved positions + Limpiar las posiciones guardadas + + + + + Profile Name - Nombre de Perfil + Nombre de perfil - + + + Clear Image - Limpiar Imagen + Limpiar imagen - + + + Append version number to FW file name - Agregar el número de version al nombre de archivo de Firmware + Agregar el número de versión 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 + Tipo de radio - + + + Other Settings - Otros Ajustes + Otros ajustes - + + + General Settings - Ajustes Generales + Ajustes generales - + + + SD Structure path Estructura de archivos SD - + + + Application Settings - Ajustes Aplicación + Ajustes de la aplicación - + + + Show splash screen when Companion starts - Mostrar pantalla de inicion cuando Companion comience + Mostrar pantalla de inicio 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 + Comprobar automáticamente actualizaciones del firmware OpenTX - + + + Splash Screen Library - Libreria de pantallas de inicio + Librería de pantallas de inicio - + + + Google Earth Executable Ejecutable Google Earth - + + + Only show user splash images - Mostrar solo pantallas de inicio del usuario + Mostrar sólo pantallas de inicio de usuario - + + + Show user and companion splash images - Mostrar pantallas de inicio del usuario y companion + Mostrar pantallas de inicio de usuario y companion - + + + User Splash Screens - Pantallas de Inicio del Usuario + Pantallas de inicio de usuario - + + + Automatic Backup Folder - Carpeta copia de seguridad Automática + Carpeta copia de seguridad automática - + + + Simulator Settings - Ajustes Simulador + Ajustes del simulador - + + + Simulator BackLight Luz de fondo del simulador - + + + Enable Activado - + + + most recently used files - + ficheros usados recientemente - + + + Startup Settings - + Ajustes de inicio - + + + Remember - + Recordar - + + + Output Logs Folder - + Carpeta de reportes - + + + <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>Esta opción mantiene el comportamiento de las versiones anteriores de OpenTx donde se conservan los slots de modelos vacíos cuando se elimina o mueve un modelo. </p><p>Cuando esta opción no está seleccionada, los otros modelos pueden reordenarse para llenar el hueco dejado por el modelo borrado.</p></body></html> - + + + Remove empty model slots when deleting models (only applies for radios w/out categories) - + Eliminar los slots vacíos cuando se borran modelos (sólo aplica a radios sin categorías) - + + + Use model wizard - + Usar el asistente de modelos - + + + Open model editor - + Abrir el editor de modelos - + + + Just create the model - + Sólo crear el modelo - + + + Debug Output Logging - + Reporte de depuración - + + + <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>Mantiene un reporte para todos los mensajes de depuración generados por las aplicaciones Companion/Simulador. Un desarrollador de OpenTX los puede requerir para ayudar a diagnosticar el problema.</p></body></html> - + + + Application (Companion/Simulator) - + Aplicación (Companion/simulador) - + + + <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>Mantiene un log para todos los mensajes generados por el firmware de la radio mientras se ejecuta en el simulador. Esta es la misma información que se vería en el simulador <span style=" font-style:italic;">Salida de depuración</span> ventana.</p></body></html> - + + + Radio Firmware (in Simulator) - + Radio firmware (en simulador) - + + + Action on New Model - + Accioń en nuevo modelo - + + + Blue Azul - + + + Green Verde - + + + Red Rojo - + + + Orange Naranja - + + + Yellow Amarillo - + + + Screenshot capture folder - + Carpeta de capturas de pantalla - + + + 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 + Sólo capturar al portapapeles My Radio - Mi 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> - + <p><b>No puedes cambiar el tipo de radio o las opciones del firmware mientras hay cambios sin guardar ¿Qué quieres hacer?</b></p> <ul><li><i>Guardar todo</i> - Guardar los archivos abiertos andtes de guardar los ajustes.<li><li><i>Resetear</i> - Volver al tipo de radio y opciones de firmware anteriores antes de salvar los los ajustes.</li><li><i>Cancelar</i> - Volver a la ventana de edición de ajustes.</li></ul> Select your snapshot folder - Selecciona tu carpeta de capturas + Selecciona la carpeta de capturas Note: Nightly builds are not available in this version, Release/RC update channel will be used. - + Nota: No hay nightly builds para esta versión, se usará el canal Release/RC. - + No joysticks found - No se han encopntrado joysticks + No se han encontrado joysticks EMPTY: No radio settings stored in profile - VACIO: No se han guardado ajustes en el perfil de tu radio + VACÍO: No se han guardado ajustes en el perfil de tu radio AVAILABLE: Radio settings of unknown age - DISPONIBLE:Ajustes de radio de tiempo desconocido + DISPONIBLE:Ajustes de radio de antigüedad desconocida @@ -658,7 +879,7 @@ Modo 4: Select your library folder - Selecciona tu carpeta de una carpeta + Selecciona tu carpeta de librerías @@ -669,7 +890,7 @@ Modo 4: Select a folder for application logs - + Selecciona una carpeta para los reportes de la aplicación @@ -677,19 +898,19 @@ Modo 4: Selecciona el ejecutable de Google Earth - + Select the folder replicating your SD structure - Selecciona la carpeta que replica la structura de tu tarjeta SD + Selecciona la carpeta que replica la estructura de tu tarjeta SD - + Open Image to load - Abrir imagen para cargar + Abre imagen para cargar - + Images (%1) - Imagenes (%1) + Imágenes (%1) @@ -697,89 +918,90 @@ Modo 4: Error reading %1: %2 - + Error leyendo %1: %2 Cannot save EEPROM - + No se puede guardar la EEPROM Cannot open file %1: %2. - + No se puede abrir el archivo %1: +%2. Error writing file %1: %2. - Error escribiendo el archivo %1: + Error escribiendo el archivo %1: %2. Invalid binary EEPROM file %1 - + Archivo binario de la EEPROM no válido %1 Boards - + Left Horizontal - Izquierda Hrizontal + Izquierda horizontal - + Left Vertical - Izquierda Vertical + Izquierda vertical - + Right Vertical - Derecha Vertical - - - - Right Horizontal - Derecha Horizontal - - - - Aux. 1 - - - - - Aux. 2 - - - - - - Unknown - Desconocido + Derecha vertical - Rud - Rud + Right Horizontal + Derecha horizontal - Ele - Ele + Aux. 1 + - Thr - Thr + Aux. 2 + - + + + Unknown + Desconocido + + + + Rud + + + + + Ele + + + + + Thr + + + + Ail - Ail + @@ -787,17 +1009,17 @@ Modo 4: Negative span - Amplitud negativa + Amp. negativa Mid value - Valor medio + Valor medio Positive span - Amplitud positiva + Amp. positiva @@ -805,153 +1027,192 @@ Modo 4: Can't extract RADIO/radio.bin - + No se puede extraer RADIO/radio.bin Can't extract RADIO/models.txt - + No se puede extraer RADIO/models.txt Can't extract %1 - + No se puede extraer %1 Error loading models - + Error cargando modelos Channels - + Name Nombre - + Min - Min + Mín - + Max - Max + Máx - + Subtrim - Subtrim + - + Direction Dirección - + Curve Curva - + PPM Center Centro PPM - + Linear Subtrim Subtrim lineal - + CH%1 - + - + Popup menu available - + Menú emergente disponible - + --- - --- + - + INV - INV + - - &Copy - &Copiar + + Copy + Copiar - - &Cut - C&ortar + + Cut + Cortar - - &Paste - &Pegar + + Paste + Pegar - - &Delete - &Borrar + + Clear + Limpiar + + + + Insert + Insertar + + + + Delete + Borrar + + + + Move Up + Mover arriba + + + + Move Down + Mover abajo + + + + Clear All + Limpiar todo ChecklistDialog + + Edit Checklist - + Editar lista de verificación + + Line nn, Col nn - + Línea nn, Col nn + + &Import... - + &Importar... + + &Cancel - + &Cancelar + + &OK - + + + Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file. - + Ten en cuenta que el máximo ancho del display está limitado por el modelo de la radio. También renombrar el modelo rompe el link a este archivo de verificación. + + File: unknown - + Archivo: desconocido Open Checklist - + Abrir lista de verificación Checklist Files (*.txt) - + Ficheros de verificación (*.txt) @@ -960,43 +1221,47 @@ Modo 4: Model Checklist - + Lista de verificación del modelo Cannot open file for writing %1: %2. - + No se puede abrir el archivo para escritura %1: +%2. Cannot write to file %1: %2. - + No se puede escribir en el archivo %1: +%2. Cannot write file %1: %2. - No se puede escribir el archivo %1: + No se puede escribir el archivo %1: %2. Cannot open file %1: %2. - + No se puede abrir el archivo %1: +%2. Cannot read file %1: %2. - + No se puede leer el archivo %1: +%2. Line %1, Col %2 - + Línea %1, Col %2 @@ -1004,118 +1269,119 @@ Modo 4: OpenTX Companion - + Information - Información + Información Warning - Aviso + Aviso Error - Error + Error Application Settings - Ajustes Aplicación + Ajustes aplicación files - + archivos Radio and Models settings - + Ajustes de radio y modelos - + Select or create a file for exported Settings: - + Selecciona o crea un archivo para exportar los ajustes: - + Press the 'Retry' button to choose another file. - + Presiona el botón de 'Reintentar' para elegir otro archivo. - + Simulator for this firmware is not yet available - El simulador para este firmware ya no está disponible + El simulador para este firmware aún no está disponible - + Uknown error during Simulator startup. - + Error durante el arranque del simulador. - + Simulator Error - + Error del simulador - + Data Load Error - + Error de carga de datos - + Error occurred while starting simulator. - + Ha ocurrido un error al arrancar el simulador. <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>Bienvenido a OpenTX %1.</b></p><p>Como primer paso, por favor configura el perfil de radio inicial seleccionando el tipo de radio, el lenguaje y las opciones de firmware.</p><p>También puedes tomarte un tiempo para revisar las otras opciones disponibles en el cuadro de diálogo Ajustes que se muestra.</p><p>Después de guardar la configuración, te recomendamos que descargues el firmware más reciente para tu radio utilizando la opción de menú <i>Archivo -&gt; Descargar</i>.</p><p>Por favor visita <a href='http://www.open-tx.org'>open-tx.org</a> para últims noticies y documentación. Gracias pr elegir OpenTX!</p>- El equipo de 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>Gracias por actualizar a OpenTX %1.</b></p><p>Esta es una actualización mayor que añade y modifica muchas cosas, por favor asegúrate que lees cuidadosamente las notas de la version para entender los cambios y verificar que cada uno de tus modelos funciona correctamente.</p><p>Por favor visita <a href='http://www.open-tx.org'>open-tx.org</a> para las notas de la versión y otra documentación.</p>- El equipo de OpenTX. <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> - + <p>El tipo de radio en el perfil seleccionado no existe. Usando en su lugar el tipo predeterminado.</p> <p><b>¡Por favor, actualiza los ajustes del perfil!</b></p> The saved settings could not be imported, please try again or continue with current settings. - + Los ajustes guardados no pudieron ser importafos, por favor inténtalo de nuevo con los ajustes actuales. Import from File - + Importar desde archivo Import from v%1 - + Importar desde v%1 Do not import - + No importar We have found possible Companion settings backup file(s). Do you want to import settings from a file? - + Se ha encontrado archivo(s) de ajustes de Companion +¿Quieres importar los ajustes desde un archivo? Import settings from a file, or start with current values. - + Importar ajustes desde un archivo, o empezar con los valores actuales. @@ -1123,105 +1389,120 @@ Do you want to import settings from a file? Do you want to import them? If you have a settings backup file, you may import that instead. - + Se han encontrado ajutes de la versión de Companion: %1. +¿Quieres importarlos? + +Si tienes un archivo de backup, puedes importar en su lugar. Select %1: - + Selecciona %1: Save application settings to file... - + Guardar ajustes aplicación a archivo... Load application settings from file or previous version... - + Cargar ajustes de aplicación desde archivo o versión previa... Reset ALL application settings to default and remove radio profiles... - + Resetea TODOS los ajustes de la aplicación y eliminar los perfiles de radio... Exit before settings initialization and application startup. - + Salir antes de inicializar ajustes y arrancar aplicación. Print version number and exit. - + Muestra número de de versión y sale. Print this help text. - + Muestra este texto de ayuda. Reset ALL application settings to default values and remove radio profiles, are you sure? - + Resetea TODOS los ajustes a valores predeterminados y elimina los perfiles de radio, ¿estás seguro? Would you like to perform a backup first? - + ¿Quieres hacer una copia primero? Application settings were reset and saved. - + Los ajustes de la aplicación fueron reseteados y guadados. settings - + ajustes CompareDialog + + Compare Models - + Comparar modelos + + To compare models, drag and drop them anywhere in this window. - + Para comparar modelos, arrastra y suéltalos en esta ventana. + + Close Cerrar + + Style - + Estilo + + Print Imprimir + + Print to file Imprimir a archivo Unnamed Model %1 - + Modelo sin nombre %1 Click to remove this model. - + Presiona para eleminar este modelo. @@ -1231,7 +1512,7 @@ If you have a settings backup file, you may import that instead. Select PDF output file - Seleccionar archivo de salida PDF + Seleccionar archivo de salida PDF @@ -1239,7 +1520,7 @@ If you have a settings backup file, you may import that instead. OK, I understand. - OK, Entiendo. + OK, entiendo. @@ -1247,17 +1528,17 @@ If you have a settings backup file, you may import that instead. Write error - Error escritura + Error de escritura Cannot write %1 (reason: %2) - + No se puede escribir %1 (razón: %2) Cannot open %1 (reason: %2) - + No se puede abrir %1 (razón: %2) @@ -1265,55 +1546,55 @@ If you have a settings backup file, you may import that instead. OpenTX Contributors - + Colaboradores de OpenTX Honors go to Rafal Tomczak (RadioClone), Thomas Husterer (th9x) and Erez Raviv (er9x and eePe) - Los honores van a Rafal Tomczak (RadioClone), Thomas Husterer (th9x) y Erez Raviv (er9x y eePe) + Los honores son para Rafal Tomczak (RadioClone), Thomas Husterer (th9x) y Erez Raviv (er9x y eePe) OpenTX Blacklist - + Main developers - + Desarrolladores principales Translators - + Traductores Companies and projects who have donated to OpenTX - + Compañías y proyectos que han donado a OpenTX People who have donated to OpenTX - + Gente que ha donado a OpenTX Other contributors - + Otros colaboradores monthly - + mensualmente CurveData - + CV - + @@ -1321,17 +1602,17 @@ If you have a settings backup file, you may import that instead. Diff - Diff + Expo - Expo + Func - Func + @@ -1344,109 +1625,145 @@ If you have a settings backup file, you may import that instead. Diff(%1) - + Expo(%1) - + Function(%1) - Función(%1) + Función(%1) Curve(%1) - Curva(%1) + Curva(%1) Curves + + Fixed X - X Fija + X fija + + Custom X - X A medida + X personalizada + + Lines - Lineas + Líneas + + Smooth Suave + + + + Curve type - Tipo de Curva + Tipo de curva + + Curve Creator - Creador de curva + Propiedades de la curva + + Y at X=0 - Y a X=0 + Y en X=0 + + Point size - + Tamaño punto + + Y at X=100 - Y a X=100 + Y en X=100 + + Both Ambos + + x>0 - x>0 + + + x<0 - x<0 + + + Apply Aplicar + + Side - Cara + Lado + + Y at X=-100 - Y a X=-100 + Y en X=-100 + + Coefficient Coeficiente + + Curve name Nombre de la curva @@ -1458,7 +1775,7 @@ If you have a settings backup file, you may import that instead. Popup menu available - + Menú desplegable disponible @@ -1473,47 +1790,47 @@ If you have a settings backup file, you may import that instead. Single Expo - Expo Unico + Expo único Symmetrical f(x)=-f(-x) - Simetricas f(x)=-f(-x) + Simétricas f(x)=-f(-x) Symmetrical f(x)=f(-x) - Simetricas f(x)=f(-x) + Simétricas f(x)=f(-x) Copy - + Copiar Paste - + Pegar Clear - + Limpiar Clear all curves - + Limpiar todas las curvas Are you sure you want to reset curve %1? - + ¿Seguro que quieres resetear todas la curva %1? Are you sure you want to reset all curves? - + ¿Seguro que quiere resetear todas las curvas? @@ -1523,7 +1840,7 @@ If you have a settings backup file, you may import that instead. Not enough free points in EEPROM to store the curve. - No hay suficientes puntos en el EEPROM para guardar la curva. + No hay suficientes puntos libres en la EEPROM para guardar la curva. @@ -1531,234 +1848,239 @@ If you have a settings backup file, you may import that instead. GF - + SF - SF + Override %1 - Invalidar %1 + Invalidar %1 Trainer - Trainer + Entrenador Trainer RUD - Entrenador RUD + Entrenador RUD Trainer ELE - Entrenador ELE + Entrenador ELE Trainer THR - Entrenador THR + Entrenador THR Trainer AIL - Entrenador AIL + Entrenador AIL - Instant Trim - Trim Instantáneo + Trainer Channels + Canales entrenador - Play Sound - Reproducir Sonido + Instant Trim + Trim instantáneo - Haptic - Reproducir Haptic + Play Sound + Reproducir sonido - Reset - Resetear + Haptic + Reproducir haptic - Set Timer %1 - Ajustar temporizador %1 + Reset + Resetear - Vario - + Set Timer %1 + Ajustar temporizador %1 - Play Track - Reproducir Pista + Vario + Variómetro - Play Both - Reproducir Ambos + Play Track + Reproducir pista - Play Value - Reproducir Valor + Play Both + Reproducir ambos - Play Script - + Play Value + Reproducir valor - SD Logs - + Play Script + Reproducir script - Volume - Volumen + SD Logs + Reportes SD - Backlight - Luz de Fondo + Volume + Volumen - Screenshot - + Backlight + Luz de fondo - Background Music - Música de Fondo + Screenshot + Captura - Background Music Pause - Pausar Música de Fondo + Background Music + Música de fondo - Adjust %1 - + Background Music Pause + Pausar música de fondo - SetFailsafe Int. Module - + Adjust %1 + Ajustar %1 - SetFailsafe Ext. Module - + SetFailsafe Int. Module + Fijar failsafe módulo interno - RangeCheck Int. Module - + SetFailsafe Ext. Module + Fijar failsafe módulo externo - RangeCheck Ext. Module - + RangeCheck Int. Module + RangeCheck módulo interno - Bind Int. Module - + RangeCheck Ext. Module + RangeCheck módulo externo + Bind Int. Module + Bind módulo interno + + + Bind Ext. Module - + Bind módulo externo - + Timer1 - Temporizador1 - - - - Timer2 - Temporizador 2 + Temporizador 1 - Timer3 - Temporizador 3 + Timer2 + Temporizador 2 + Timer3 + Temporizador 3 + + + Flight - + Vuelo - + Telemetry - Telemetría + Telemetría - + Rotary Encoder - Codificador Rotativo + Codificador rotativo - + REa - + - + REb - + - + s - + - - - + + + <font color=red><b>Inconsistent parameter</b></font> - <font color=red><b>Parámetro Inconsistente</b></font> + <font color=red><b>Parámetro Inconsistente</b></font> - + Value - Valor + Valor - + played once, not during startup - + reproducido una vez, no durante el inicio - + repeat(%1s) - + repetir(%1s) - + DISABLED - + DESABILITADO - + CFN - + @@ -1766,7 +2088,7 @@ If you have a settings backup file, you may import that instead. Switch - Cambiar + Interruptor @@ -1786,150 +2108,210 @@ If you have a settings backup file, you may import that instead. Popup menu available - + Menú deplegable disponible SF%1 - SF%1 + GF%1 - + ON - ON + Error occurred while trying to play sound, possibly the file is already opened. (Err: %1 [%2]) - + Ha ocurrido un error al reproducir el sonido, posiblemente el archivo ya está abierto. (Err: %1 [%2]) Unable to find or open sound file: %1 - + No se puede encontrar o abrir el archivo de sonido: +%1 - - Value - Valor - - - - Source - - - - - GVAR - GVAR - - - - Increment - Incremento - - - - &Delete - &Borrar + + Copy + Copiar - &Copy - &Copiar + Cut + Cortar - &Cut - C&ortar + Paste + Pegar - &Paste - &Pegar + Clear + Limpiar + + + + Insert + Insertar + + + + Delete + Borrar + + + + Move Up + Mover arriba + + + + Move Down + Mover abajo + + + + Clear All + Limpiar todo + + + + Value + Valor + + + + Source + Fuente + + + + GVAR + + + + + Increment + Incremento CustomizeSplashDialog + + Transmitter Splash Screen Editor - Editor de la pantalla de inicio del transmisor + Editor de la pantalla de inicio de la radio + + + + Invert Invertir + + + + Load FW Cargar FW + + + + Load Pict - Cargar Imag + Cargar imag + + + + Load Profile - Cargar Perfil + Cargar perfil + + + + Save Guardar + + + + Open Splash Library - Abrir libreria de pantallas de inicio + Abrir librería de pantallas de inicio + + + + + + + + ... FW: %1 - + Pict: %1 - + Profile image - Nombre de Perfil + Nombre de imagen Open Firmware File - Abrir archivo de Firmware + Abrir archivo de firmware Can not load embedded image from firmware file %1. - No se pueden cargar la imagen incrustada el archivo de firmware %1. + No se puede cargar la imagen incrustada en el archivo de firmware %1. @@ -1939,7 +2321,7 @@ If you have a settings backup file, you may import that instead. Images (%1) - Imagenes (%1) + Imágenes (%1) @@ -1959,7 +2341,7 @@ If you have a settings backup file, you may import that instead. File Saved - Archivo Guardado + Archivo guardado @@ -1979,7 +2361,7 @@ If you have a settings backup file, you may import that instead. File Save Error - Error Guardado de Archivo + Error en el guardado del archivo @@ -1992,22 +2374,22 @@ If you have a settings backup file, you may import that instead. 90 - 90 + 120 - 120 + 120x - 120x + 140 - 140 + @@ -2015,169 +2397,186 @@ If you have a settings backup file, you may import that instead. Conversion error on field %1 - + Error de conversión en el campo %1 - + Switch - + Interruptor - + Switch - + Interruptor - + cannot be exported on this board! - + no puede ser exportada en esta placa! - + Source - + Fuente - + Source %1 cannot be exported on this board! - + ¡La fuente %1 no puede ser exportada a esta placa! - + OpenTX only accepts %1 points in all curves - OpenTx solo aceta %1 puntos en todas las curvas + OpenTX sólo acepta %1 puntos en todas las curvas - + OpenTx only accepts %1 points in all curves - OpenTx solo aceta %1 puntos en todas las curvas + OpenTX sólo acepta %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 en esta placa no acepta esa función - + OpenTX doesn't accept this radio protocol - OpenTX en esta placa no acepta este protocolo de radio + OpenTX no acepta este protocolo de radio DebugOutput - + + Debug Output - + Salida de depuració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>Activa/desactiva el filtro. Si el botón no permanece activo, probablemente hay un error de sintaxis en la expresión introducida.</p></body></html> - + + Filter: - + Filtro: - + + <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>Introduce fitro de texto aquí. Presiona el botón de ayuda/info para detalles acerca del uso del filtro. </p><p> +Para <b>eliminar una entrada recordada</b> desde la lista de filtros, primero elígelo, y entonces presiona la combinación de teclas <code>Shift-Delete</code> (o <code>Shift-Backspace</code>) .</p></body></html> - + + Buffer: - + Buffer: - + + Number of lines to keep in display. - + Número de líneas a mantener en display. - + + Filter &Help - + &Ayuda filtros - + + Show information about using the filter. - + Muestra información acerca del uso de filtros. - + + Word &Wrap - + Ajuste de &línea - + + Toggle word wrapping on/off. - + Habilita/desabilita ajuste de línea. - + + &Clear - + &Limpiar - + + Clear the output window of all text. - + Limpia de texto la ventana de salida. - + + Enable &Filter - + Habilitar &filtro - + + Turn the filter on/off. - + Apaga/enciende el filtro. - + <html><head><style>kbd {background-color: palette(alternate-base); font-size: large; white-space: nowrap;}</style></head><body><p>The filter supports two syntax types: basic matching with common wildcards as well as full Perl-style (<code>pcre</code>) Regular Expressions.</p><p>By default a filter will only show lines which match (<b>inclusive</b>). To make an <b>exclusive</b> filter which removes matching lines, prefix the filter expression with a <kbd>!</kbd> (exclamation mark).</p><p>To use <b>Regular Expressions</b> (RegEx), prefix the filter text with a <kbd>/</kbd> (slash) or <kbd>^</kbd> (up caret). <ul><li>Put the <kbd>/</kbd> or <kbd>^</kbd> after the exclusive <kbd>!</kbd> indicator if you're using one.</li><li>By default the match is case-sensitive. To make it insensitive, add the typical <kbd>/i</kbd> (slash i) operator at the end of your RegEx.</li><li>If you use a caret (^) to denote a RegEx, it will become part of the Reg. Ex. (that is, matches from start of line).</li><li>If the RegEx is invalid, the filter edit field should show a red border and you will not be able to enable the filter.</li><li>A useful resource for testing REs (with a full reference) can be found at <a href="http://www.regexr.com/">http://www.regexr.com/</a></li></ul></p><p>To use <b>basic matching</b> just type any text.<ul><li>Wildcards: <kbd>*</kbd> (asterisk) matches zero or more of any character(s), and <kbd>?</kbd> (question mark) matches any single character.</li><li>The match is always case-insensitive.</li><li>The match always starts from the beginning of a log line. To ignore characters at the start, use a leading <kbd>*</kbd> wildcard.</li><li>A trailing <kbd>*</kbd> is always implied (that is, matches anything to the end of the log line). To avoid this, use a RegEx.</li><li>You can match literal wildcard characters by prefixing them with a <kbd>\</kbd> (backslash) character (eg. "foo\*bar" matches "foo*bar").</li></ul></p><p>After <b>editing text</b>, press ENTER or TAB key (or click anywhere outside the box) to update the filter.</p><p>To <b>remove an entry</b> from the filter selector list, first choose it, and while in the line editor press <kbd>Shift-Delete</kbd> (or <kbd>Shift-Backspace</kbd>) key combination. The default filters cannot be removed. Up to 50 filters are stored.</p></body></html> - + <html><head><style>kbd {background-color: palette(alternate-base); font-size: large; white-space: nowrap;}</style></head><body><p>El filtro admite dos tipos de sintaxis: coincidencia básica con comodines comunes y expresiones regulares Perl-style (<code>pcre</code>).</p><p>Por defecto, un filtro solo mostrará líneas que coinciden (<b>inclusivo</b>). Para hacer un filtro <b>exclusivo</b> que elimine la lineas con coincidencias, prefija la expresión del filtro con un <kbd>!</kbd> (símbolo de exclamación).</p><p>Para usar <b>expresiones regulares</b> (RegEx), prefija el filtro de texto con un <kbd>/</kbd> (barra oblicua) o <kbd>^</kbd> (et). <ul><li>Pon el <kbd>/</kbd> o <kbd>^</kbd> después del indicador exclusivo <kbd>!</kbd> si estás usando uno.</li><li> Por defecto, la coincidencia distingue entre mayúsculas y minúsculas. Para hacerlo insensible, agrega el operador típico<kbd>/i</kbd> (barra invertida) al final del RegEx.</li><li>Si usas un et (^) para indicar RegEx, se convertirá en parte del Reg. Ex. (esto es, coincidencia desde el incio de línea).</li><li>Si el RegEx no es válido, el campo de edición del filtro mostrará un borde rojo y no se podrá habilitar el filtro.</li><li>Encuentra un recurso útil para probar RE (con una referencia completa) en <a href="http://www.regexr.com/">http://www.regexr.com/</a></li></ul></p><p>Para usar <b>coincidencia básica</b> simplemente teclee cualquier texto.<ul><li>Comodines: <kbd>*</kbd> (asterisco) coincidencia de ningúno o más caracter(es), y <kbd>?</kbd> (símbolo de interrogación) coincidecia de caracteres individuales.</li><li>La coincidecia es insensible a mayús/minus.</li><li>La coincidencia siempre empieza desde el inicio de la línea de reporte. Para ignorar caracteres al inicio, usa un comodín de comienzo <kbd>*</kbd>.</li><li>De final <kbd>*</kbd> está siempre implícito (esto es, cualquier coincidecia hasta el final de la línea de reporte). Para evitar esto, use ub RegEx.</li><li>Puedes hacer coincidir con caracteres comodines prefijándolos con el carácter <kbd>\</kbd> (barra invertida) (ej. "foo\*bar" coincide "foo*bar").</li></ul></p><p>Después de <b>editar texto</b>, presiona la tecla ENTER o TAB (o haz click fuera del texto para actualizar el filtro.</p><p>Para <b>eliminar una entrada</b> de la lista de selección de filtro, primero selecciónala, y mientras estás en la linea del editor pulsa la combinación de teclas <kbd>Shift-Delete</kbd> (o <kbd>Shift-Backspace</kbd>). Los filtros predeterminados no se pueden eliminar. Se guardan hasta 50 filtros.</p></body></html> - + Debug Console Filter Help - + Ayuda del filtro de la consola de depuración DownloadDialog + + Downloading: - Descargando: + Descargando: Unable to save the file %1: %2. - No se puede guardar el archivo %1: %2. + No se puede guardar el archivo %1: %2. Download failed: %1. - Descarga fallida: %1. + Descarga fallida: %1. @@ -2185,85 +2584,87 @@ To <b>remove a remembered entry</b> from the filter list, first cho Possible causes for this: - + Posibles causas de esto: - Eeprom is from a newer version of OpenTX - + - Eeprom es de una versión más nueva de OpenTX - Eeprom is not from OpenTX - + - Eeprom no es de OpenTX - Eeprom is not from Th9X - + - Eeprom no es de Th9X - Eeprom is not from Gruvin9X - + - Eeprom no es de Gruvin9X - Eeprom is not from ErSky9X - + - Eeprom no es de ErSky9X - Eeprom is not from Er9X - + - Eeprom no es de Er9X - Eeprom size is invalid - + - Tamaño de eeprom no es válido - Eeprom file system is invalid - + - Sistema de archivos de eeprom no es válido - Eeprom is from a unknown board - + - Eeprom es de una placa desconocida - Eeprom is from the wrong board - + - Eeprom es de una placa errónea - Eeprom backup not supported - + - Backup de Eeprom no soportado - Something that couldn't be guessed, sorry - + - Algo que no pudo ser adivinado, lo siento Warning: - + Advertencia: - Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used - + Tu radio probablemente usa un firmware erróneo, + el tamaño de la eeprom es de 4096 pero sólo los primeros 2048 son usados - 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. - + Tu eeprom es de una vesión anterior de OpenTX, actualizando! + Para mantener tu archivo original como un backup, por favor elige Archivo -> Guarda Como especificando un nombre diferente. @@ -2271,12 +2672,12 @@ To <b>remove a remembered entry</b> from the filter list, first cho Unable to open %1: %2 - + No se puede abrir %1: %2 Invalid EEPROM file %1 - + Fichero EEPROM %1 no válido @@ -2284,12 +2685,12 @@ To <b>remove a remembered entry</b> from the filter list, first cho <br>First Elevon Channel: - <br>Primer canal de Elevon: + <br>Primer canal de elevón: Second Elevon Channel: - Segundo canal de Elevon: + Segundo canal de elevón: @@ -2297,18 +2698,20 @@ To <b>remove a remembered entry</b> from the filter list, first cho INP - + (@%1) - + ExpoDialog + + Weight Peso @@ -2316,103 +2719,147 @@ To <b>remove a remembered entry</b> from the filter list, first cho + + + + + + GV - GV + + + Input name Nombre entrada + + Flight modes Modos de vuelo + + Switch - Switch + Interruptor + + Source - Origen + Fuente + + Line name - Nombre de linea + Nombre de línea + + Stick Side - Lado Stick + Lado stick + + Scale Escala + + Include Trim - Incluir Trim + Incluir trim + + No - No + + + Yes - Si + Sí + + Curve Curva + + Curve applied to the source. - Curva aplicada al origen. + Curva aplicada a la fuente. + + Offset Offset + + The source for the mixer - El origen de la mezcla + La fuente de la mezcla + + NEG - NEG + + + Source for the mixer. - Origen para la mezcla. + Fuente para la mezcla. + + Switch used to enable the line. If blank then the input is considered to be "ON" all the time. - Switch usado para activar la linea. -Si está en blanco entonces las entradas son consideradas como ON todo el tiempo. + Interruptor usado para activar la linea. +Si está en blanco entonces las entradas son consideradas ON todo el tiempo. + + POS - POS + + + ALL TODO @@ -2424,22 +2871,22 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Popup menu available - + Disponible menú desplegable Clear All - + Limpiar todo Set All - + Fijar todo Invert All - + Invertir todo @@ -2447,57 +2894,57 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Select All - + Selecciona todo Copy selection as TAB-delimited text - + Copiar selección como texto delimitado por TAB Copy selection as cooma-delimited text (CSV) - + Copiar selección como texto delimitado por comas (CSV) Copy selection as pipe-delimited text - + Copiar selección como texto delimitado por barras verticales Copy selection as HTML - + Copiar selección como HTML Save selection to file - + Guardar seleccíon a archivo Tab-delimited text - + Texto delimitado por TAB Comma-delimited text - + Texto delimitado por comas Pipe-delimited text - + Texto delimitado por barras verticales HTML - + Save to file - + Guardar a archivo @@ -2505,22 +2952,22 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Throttle Channel: - Canal de Acelerador: + Canal de acelerador: Yaw Channel: - Canal de Yaw: + Canal de viraje: Pitch Channel: - Canal de pitch: + Canal de inclinación: Roll Channel: - Canal de roll: + Canal de balanceo: @@ -2528,565 +2975,604 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo Synchronize Files - + Sincroniza ficheros Are you sure you wish to abort the sync? - + ¿Seguro que quieres abortar la sincronización? Source Folder: - + Carpeta de origen: Destination Folder: - + Carpeta de destino: %1%2 Both directions, to destination folder first - + %1%2 ambas direcciones, a la carpeta de destino primero %1%2 Both directions, to source folder first - + %1%2 ambas direcciones, a la carpeta de origen primero %1 Only from source folder to destination folder - + %1 Sólo de la carpeta de origen a la carpeta de destino %1 Only from destination folder to source folder - + %1 Sólo de la carpeta de destino a la carpeta de origen How to handle overwriting files which already exist in the destination folder. - + Como manejar sobreescritura de archivos que ya existen en la carpte de destino. Copy only if newer and different (compare contents) - + Sólo copiar si es más reciente y diferente (comparar contenido) Copy only if newer (do not compare contents) - + Sólo copiar si más reciente (no comparar contenido) Copy only if different (ignore file time stamps) - + Copiar si es diferente (ignora marcas de tiempo del archivo) Always copy (force overwite existing files) - + Siempre copia (fuerza sobreescritura de archivos existentes) Any size - + Cualquier tamaño Skip files larger than this size. Enter zero for unlimited. - + Omitir archivos mayores de este tamaño. Cero para ilimitado. Minimum reporting level. Events of this type and of higher importance are shown. WARNING: High log rates may make the user interface temporarily unresponsive. - + Mínimo nivel de reporte. Eventos de este tipo y de mayor importancia son mostrados. +ADVERTENCIA: Altos niveles de reporte pueden hace que la interfaz de usuario no responda temporalemente. Skipped - + Omitido Created - + Creado Updated - + Actualizado Errors Only - + Sólo errores Test-run only - + Sólo Test-run Run as normal but do not actually copy anything. Useful for verifying results before real sync. - + Ejecución normal pero no copia nada. Útil para verificar resultados antes de una sincronización real. Log Level: - + Nivel de reporte: Filters: - + Filtros: 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. - + El filtro "Incluye" sólo copiará archivos que coincidan con el patrón(es). +El filtro "Excluye" omitirá archivos que coincidan con el patrón(es). +El filtro Incluye es evaluado primero. One or more file pattern(s) to exclude, separated by commas. Blank means exclude none. ?, *, and [...] wildcards accepted. - + Uno o más patrones de archivos a excluir, separados por comas. +Vacío significa incluir todos. Comodines ?, *, y [...] aceptados. One or more file pattern(s) to include, separated by commas. Blank means include all. ?, *, and [...] wildcards accepted. - + Uno o más patrones de archivos a incluir, separados por comas. +Vacío significa incluir todos. Comodines ?, *, y [...] aceptados. Include: - + Incluye: Exclude: - + Excluye: Case sensitive - + Distingue mayús/minus Follow links - + Sigue links Include hidden - + Incluye ocultos Recursive - + Recursivo Skip empty - + Omitir vacíos Apply filters - + Aplica filtros Filter Options: - + Opciones de filtro: Folder Options: - + Opciones de carpeta: Options - + Opciones Show extra options - + Muestra opciones extra Reset to defaults - + Resetear a predeterminados Close - Cerrar + Cerrar Sync. Direction: - + Dirección de sinc: Existing Files: - + Archivos existentes: Max. File Size: - + Max. tamaño archivo: MB - + KB - + Abort - + Abortar Start - Comenzar + Iniciar Total: <b>%1</b>; Created: <b>%2</b>; Updated: <b>%3</b>; Skipped: <b>%4</b>; Errors: <font color=%6><b>%5</b></font>; - + Total: <b>%1</b>; Creados: <b>%2</b>; Actualizados: <b>%3</b>; Omitidos: <b>%4</b>; Errores: <font color=%6><b>%5</b></font>; Current: <b>%1</b> of - + Actual: <b>%1</b> de Source folder not found. - + Carpeta de origen no encontrada. Destination folder not found. - + Carpeta de destino no encontrada. Source and destination folders are the same. - + Carpetas de origen y destino son las mismas. Firmware - + Channel values displayed in us - Visualizar los valores de canal en us + Visualiza los valores de canal en us - + No OverrideCH functions available - No hay funciones OverrideCH disponibles + Sin funciones OverrideCH - + Possibility to enable FAI MODE (no telemetry) at field - - - - - FAI MODE (no telemetry) always enabled - - - - - Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 - + Posibilidad de habilitar el MODO FAI (sin telemetría) - + FAI MODE (no telemetry) always enabled + MODO FAI (sin telemetría) siempre activado + + + + Removes D8 FrSky protocol support which is not legal for use in the EU on radios sold after Jan 1st, 2015 + Elimina el soporte para el protocolo D8 FrSky el cual no es de uso legal en EU en radios vendidas después del 1 de enero de 2015 + + + + Disable HELI menu and cyclic mix support - Desactivar el menú de HELI y el soporte de mezcla de cíclico + Desactiva el menú de HELI y el soporte de mezcla de cíclico - - + + Disable Global variables - Desactivar las variables Globales + Desactiva las variables globales - - + + Enable Lua custom scripts screen - - - - - Use alternative SQT5 font - Usar fuente alternativa SQT5 - - - - Pots use in menus navigation - Usar potenciómetros en los menús de navegación - - - - 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 - - - - - 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 - - - - 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 + Habilita la pantalla de Lua custom scripts - Don't use bold font for highlighting active items - No usar la fuente negrita para destacar elementos activos + Use alternative SQT5 font + Usa la fuente alternativa SQT5 - - - Support for ACCESS internal module replacement - + + Pots use in menus navigation + Usa potenciómetros en los menús de navegación + + + + FrSky Taranis X9D+ + + + + + Support for PPM internal module hack + Soporte para el hack de PPM del módulo interno + + + + Enable non certified firmwares + Habilita firmware no certificado + + + + + Disable RAS (SWR) + Desactiva RAS (SWR) + + + + FrSky Taranis X9D+ 2019 + + + + + FrSky Taranis X9D + + + + + Haptic module installed + Módulo haptic instalado + + + + FrSky Taranis X9E + + + + + Confirmation before radio shutdown + Confirmar antes de apagar la radio - FrSky Horus X10 Express - + Horus gimbals installed (Hall sensors) + Gimbals Horus instalados (sensores Hall) - - Jumper T12 - + + FrSky Taranis X9-Lite + - - Enable non certified R9M firmwares - + + FrSky Taranis X7 / X7S + - - Turnigy 9XR with m128 chip - + + FrSky Taranis X-Lite S/PRO + - - Turnigy 9XR - - - - - 9X with stock board - - - - - Enable resetting values by pressing up and down at the same time - Activar el reseteo de valores presionando up y down al mismo tiempo - - - - 9X with stock board and m128 chip - - - - - 9X with AR9X board - - - - - 9X with Sky9x board - - - - - 9X with Gruvin9x board - + + FrSky Taranis X-Lite + + FrSky Horus X10 / X10S + + + + + FrSky Horus X10 Express / X10S Express + + + + + FrSky Horus X12S + + + + + Use ONLY with first DEV pcb version + Usar SÓLO con la primera versión DEV pcb + + + + Jumper T12 / T12 Pro + + + + + + Support for MULTI internal module + Soporte para módulo interno MULTI + + + + Jumper T16 / T16+ / T16 Pro + + + + + + Support for bluetooth module + Soporte para módulo bluetooth + + + + Radiomaster TX16s / TX16s Hall / TX16s Masterfire + + + + + Turnigy 9XR-PRO + + + + + Enable HELI menu and cyclic mix support + Activar menú HELI y el soporte de mezcla de cíclico + + + + 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 moviéndolo + + + + In model setup menus automatically set switch by moving the control + En el menú de ajuste de modelo se selecciona automáticamente el interruptor de control moviéndolo + + + + 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 + + + + FrSky Taranis X9-Lite S + + + + + FrSky Taranis X7 / X7S Access + FrSky Taranis X7 / X7S Access + + + + + Support for ACCESS internal module replacement + Soporte para módulo interno ACCESS de reemplazo + + + + Turnigy 9XR with m128 chip + Turnigy 9XR con chip m128 + + + + Turnigy 9XR + + + + + 9X with stock board + 9X con placa de stock + + + + Enable resetting values by pressing up and down at the same time + Activar el reseteo de valores presionando arriva y abajo al mismo tiempo + + + + 9X with stock board and m128 chip + 9X con placa de stock y chip m128 + + + + 9X with AR9X board + 9X con placa AR9X + + + + 9X with Sky9x board + 9X con placa Sky9x + + + + 9X with Gruvin9x board + 9X con placa Gruvin9x + + + DIY MEGA2560 radio - + FirmwarePreferencesDialog + + Downloads Descargas + + Check for updates - Comprobar Actualizaciones + Comprobar actualizaciones + + Firmware - Firmware + + + Download firmware - + Descargar firmware + + Download SD contents - + Descargar contenido SD + + Latest Download - Última Descarga + Última descarga Unknown - Desconocido + Desconocido @@ -3094,319 +3580,373 @@ Blank means include all. ?, *, and [...] wildcards accepted. No - No + Yes, controlled by a single channel - Si, controlado por un único canal + Sí, controlado por un único canal Yes, controlled by two channels - Si, controlado por dos canales + Sí, controlado por dos canales <br>First Flap Channel: - <br>Canal del primer Flap: + <br>Canal del primer flap: Second Flap Channel: - Canal del segundo Flap: + Canal del segundo flap: FlashEEpromDialog + + Write Models and Settings to Radio - Escribir Modelos y Ajustes a la Radio + Escribir modelos y ajustes a la radio + + Load... - + Cargar... + + Current Profile - Perfil Actual + Perfil actual + + Allows Companion to write to older version of the firmware - Permitir a Companion escribir a las versiones viejas de firmware + Permite a Companion escribir en las versiones anteriores de firmware + + Check Firmware compatibility - Comprobar la compatibilidad del firmware + Comprobar la compatibilidad del firmware + + <html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html> - + <html><head/><body><p>Guarda una copia de la eeprom a la carpeta de backup especificada en los ajustes de Companion antes de escribir el modelo actual en la radio.</p></body></html> + + Backup before Write - + Guadar antes de escribir + + <html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html> - <html><head/><body><p>Modificar los parámetros de calibración utilizando la configuración de perfil actual</p></body></html> + <html><head/><body><p>Modifica los parámetros de calibración utilizando la configuración de perfil actual</p></body></html> + + Patch calibration setting from profile - Arreglar los ajustes de calibración desde el perfil + Arreglar los ajustes de calibración desde el perfil + + <html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html> - <html><head/><body><p>Modificar los parámetros de HW usando los ajustes del perfil actual</p></body></html> + <html><head/><body><p>Modifica los parámetros de HW usando los ajustes del perfil actual</p></body></html> + + Patch HW settings from profile - + Arreglar los ajustes de HW desde el perfil + + Cancel - Cancelar + Cancelar + + Write to TX - Escribir al TX + Escribir al TX Current profile: %1 - + Perfil actual: %1 Choose Radio Backup file - Elegir archivo de copia de seguridad de la radio + 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 + 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 + Datos de ajustes de radio incorrectos en el perfil, ajustes no corregidos Cannot write file %1: %2. - No se puede escribir el archivo %1: + No se puede escribir el archivo %1: %2. Error writing file %1: %2. - Error escribiendo el archivo %1: + 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! + 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! + El firmware de la radio está obsoleto, ¡por favor actualízalo! Cannot check Models and Settings compatibility! Continue anyway? - ¡No se pueden comprobar la compatibilidad de Modelos y Ajustes! ¿Continuar de todas maneras? + ¡No se puede comprobar la compatibilidad de modelos y ajustes! ¿Continuar de todas maneras? FlashFirmwareDialog + + Flash Firmware - + Flash firmware + + Load... - + Cargando... + + Date & Time - Fecha & Hora + Fecha & Hora + + Variant - Variante + Variante + + Version - + Versión + + Use profile start screen - Usar la pantala de inicio del perfil + Usar la pantalla de inicio del perfil + + Use firmware start screen - Usar la pantalla de inicio del firmware + Usar la pantalla de inicio del firmware + + Use library start screen - Usar la libreria de pantalla de inicio + Usar la librería de pantalla de inicio + + Use another start screen - Usar otra pantalla de inicio + Usar otra pantalla de inicio + + Allows Companion to write to older version of the firmware - Permitir a Companion escribir a las versiones viejas de firmware + Permitir a Companion escribir a las versiones anteriores de firmware + + Check Hardware compatibility - + Verificar compatibilidad del hardware + + Backup and restore Models and Settings - Copia de seguridad y restauración de Modelos y Ajustes + Copia de seguridad y restauración de modelos y ajustes + + Cancel - Cancelar + Cancelar + + Write to TX - Escribir al TX + Escribir al TX Open Firmware File - Abrir archivo de Firmware + Abrir archivo de firmware %1 may not be a valid firmware file - %1 puede no ser un archivo de firmware válido + %1 puede no ser un archivo de firmware válido The firmware file is not valid. - El archivo de firmware no es válido. + El archivo de firmware no es válido. There is no start screen image in the firmware file. - No hay imagen de pantalla de inicio en el archivo de firmware. + No hay imagen de pantalla de inicio en el archivo de firmware. Profile image %1 is invalid. - El perfil de imagen %1 es inválido. + El perfil de imagen %1 no es válido. Open image file to use as radio start screen - Abir archivo de imagen para usar de pantalla de inicio de la radio + Abrir archivo de imagen para usar de pantalla de inicio de la radio Images (%1) - Imagenes (%1) + Imágenes (%1) Image could not be loaded from %1 - La imagen no puede ser cargada desde %1 + La imagen no puede ser cargada desde %1 The library image could not be loaded - La librería de imágen no puede ser cargada + La librería de imágen no puede ser cargada Splash image not found - + Imagen de inicio no encontrada Cannot save customized firmware - No se puede guardar el firmware personalizado + No se puede guardar el firmware personalizado Write Firmware to Radio - Escribir Firmware a la Radio + Escribir firmware a la radio Firmware check failed - + Ha fallado la verificación del firmware Could not check firmware from radio - + No se puede verificar el firmware de la radio New firmware is not compatible with the one currently installed! - + ¡El nuevo firmware no es compatible con el instalado actualmente! Conversion failed - Coversion fallida + Coversión fallida Cannot convert Models and Settings for use with this firmware, original data will be used - No se pueden convertir los Modelos y Ajustes para usar con este firmware, se usarán los datos originales + No se puede convertir los modelos y ajustes para usar con este firmware, se usarán los datos originales Restore failed - Restauración fallida + Restauración fallida Could not restore Models and Settings to Radio. The models and settings data file can be found at: %1 - No se ha podido restaurar los Modelos y Ajustes a la Radio. Los datos de los modelos y ajustes se pueden encontrar en: %1 + No se ha podido restaurar los modelos y ajustes a la radio. Los datos de los modelos y ajustes se pueden encontrar en: %1 Flashing done - + Flashing hecho @@ -3414,58 +3954,58 @@ Blank means include all. ?, *, and [...] wildcards accepted. Executable %1 not found - + Ejecutable %1 no encontrado Writing... - + Escribiendo... Reading... - + Leyendo... Verifying... - + Verificando... unknown - + desconocido ie: OpenTX for 9X board or OpenTX for 9XR board - Esto es: OpenTX para placas 9x o OpenTX para placas 9XR + 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 + 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 + Esto es: OpenTX para placas Gruvin9x Your radio uses a %1 CPU!!! Please check advanced burn options to set the correct cpu type. - Tu radio usa un %1 CPU!!! + Tu radio usa un %1 CPU!!! -Por favor comprueba en las opciones avanzadas de gravado el tipo correcto de cpu. +Por favor comprueba en las opciones avanzadas de grabado el tipo correcto de cpu. Your radio uses a %1 CPU!!! Please select an appropriate firmware type to program it. - Tu radio usa un %1 CPU!!! + Tu radio usa un %1 CPU!!! Por favor elige el tipo de firmware apropiado para programarlo. @@ -3474,183 +4014,205 @@ Por favor elige el tipo de firmware apropiado para programarlo. You are currently using: %1 - + Actualmente estás usando: %1 Your radio does not seem connected to USB or the driver is not initialized!!!. - + ¡¡¡La radio no parece estar conectada al USB o el controlador no está inicializado!!! Flashing done (exit code = %1) - + Flashing hecho (código salida = %1) Flashing done with errors - + Flashing hecho con errores FUSES: Low=%1 High=%2 Ext=%3 - + FUSIBLES: Low=%1 High=%2 Ext=%3 FlightMode + + Fade In - + Transición entrada + + Fade Out - + Transición salida + + Name Nombre + + Switch - Switch + Interruptor + + + + + + trim6 + + + + + + + trim5 + FlightModeData - + FM - + FlightModePanel - + Rotary Encoder %1 - Codificador Rotativo %1 + Codificador rotativo %1 - + Name - Nombre + Nombre - + Value source - + Valor fuente - + Value - Valor + Valor + + + + GVAR%1 + - GVAR%1 - GVAR%1 - - - Popup enabled - Popup activado + Menú desplegable activado Popup menu available - + Menú desplegable disponible - + Trim disabled - Trim desactivado + Trim desactivado - + Own Trim - Trim propio + Trim propio - + Use Trim from Flight mode %1 - Usar Trim para el modo de vuelo %1 + Usar trim para 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 - + Usar trim para modo de vuelo %1 + trim propio con compensador - Min - + Unit + Unidad + Prec + + + + + Min + Mín + + + Max - + Máx - + 0._ - + - + 0.0 - 6P {0.0?} + - - + + &Clear - + &Limpiar - - + + Clear - + Limpiar - + Clear all current Flight Mode properties? - + ¿Limpiar todas las propiedades del modo de vuelo actual? FlightModesPanel - + Flight Mode %1 - Modo de vuelo%1 + Modo de vuelo %1 - + (%1) - (%1) + - + (default) - (Predeterminado) + (predeterminado) @@ -3658,17 +4220,17 @@ Actualmente estás usando: Has Flybar - Tiene Flybar + Tiene flybar Flybarless - Flybarless + Flybar: - Flybar: + @@ -3676,17 +4238,17 @@ Actualmente estás usando: Yellow - Amarillo + Amarillo Orange - Naranja + Naranja Red - Rojo + Rojo @@ -3695,23 +4257,27 @@ Actualmente estás usando: V - + --- - --- + FusesDialog + + Fuses - + Fusibles + + <!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; } @@ -3725,15 +4291,31 @@ 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-family:'MS Shell Dlg 2'; font-size:8pt;">Proper states for AtMega 2560 :</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM erase fuse not set: D7, 11, FC</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM erase fuse set: D7, 19, FC</span></p></body></html> - + <!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; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Lee los fuses actuales en el controlador AVR.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Estados apropiados para </span><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">AtMega 64 </span><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM borrar fuse no fijado: 0E, 81, FF</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM borra fuse fijado: 0E, 89, FF</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Estados apropiados para AtMega 2560 :</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM borrar fuse no fijado: D7, 11, FC</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM borrar fuse fijado: D7, 19, FC</span></p></body></html> + + Read Fuses - Leer Fuses + Leer fusibles + + <!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; } @@ -3749,17 +4331,35 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">When in doubt consult either the project's page or the 9xforum (http://9xforums.com/forum/)</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">If you do get locked out - google lookup for &quot;dealing with Fuse Bricks&quot;.</span></p></body></html> - + <!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; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:600; text-decoration: underline;">Resetear fusibles</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Los fusibles en el AVR le dicen cómo comportarse. Al presionar este botón, los fusibles tienen los parámetros predeterminados necesarios en el FW. Estos parámetros son diferentes para el stock y 4,1 MB, verifique que haya seleccionado el tipo de procesador apropiado en las preferencias. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Este botón también establece la "Protección EEPROM" Fusible. </span> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Esto evita que se borre la EEPROM cuando se escribe la memoria flash. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "familia-fuente: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; peso de fuente: 600; decoración de texto: subrayado;"> ADVERTENCIA </span> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> La configuración de los fusibles puede ocasionar problemas e incluso un bloqueo total de tu controlador. Haz esto solo si sabes lo que estás haciendo. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> En caso de duda, consulta la página del proyecto o el 9xforum (http://9xforums.com/forum/) </span> </ p > +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Si quedas bloqueado, busca en google para & quot; tratar con Fuse Bricks & quot ;. </span> </p> </body> </html> + + Reset Fuses EEPROM - PROTECT - Resetear Fuses + Resetear fusibles EEPROM - PROTEGIDA + + <!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; } @@ -3775,16 +4375,35 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">When in doubt consult either the project's page or the 9xforum (http://9xforums.com/forum/)</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">If you do get locked out - google lookup for &quot;dealing with Fuse Bricks&quot;.</span></p></body></html> - + <!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; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:600; text-decoration: underline;">Resetear fusibles</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Los fusibles en el AVR te dicen cómo comportarse. Al presionar este botón, los fusibles tienen los parámetros predeterminados necesarios en </span> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> FW. Estos parámetros son diferentes para el stock y 4,1 MB, verifique que haya seleccionado el tipo de procesador apropiado en las preferencias. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Este botón también borra la "protección EEPROM" Fusible. </span> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Esto causa el borrado de la EEPROM cuando se escribe la memoria flash. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "familia-fuente: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; peso de fuente: 600; decoración de texto: subrayado;"> ADVERTENCIA </span> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> La configuración de los fusibles puede ocasionar problemas e incluso un bloqueo total de su controlador. Haz esto solo si sabes lo que estás haciendo. </span> </p> +<p style = "- qt-parameter-type: empty; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent : 0px; familia de fuentes: 'MS Shell Dlg 2'; tamaño de fuente: 8pt; "> <br /> </p> +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> En caso de duda, consulta la página del proyecto o el 9xforum (http://9xforums.com/forum/) </span> </ p > +<p style = "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-block-indent: 0; text-indent: 0px;"> <span style = "font-family: 'MS Shell Dlg 2'; font-size: 8pt;"> Si quedas bloqueado, busca en google para & quot; tratar con Fuse Bricks & quot ;. </span> </p> </body> </html> + + Reset Fuses EEPROM - DELETE - + Resetear fusibles +EEPROM - BORRAR + + <!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; } @@ -3793,18 +4412,24 @@ p, li { white-space: pre-wrap; } <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;"></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Changing the fuses can mess up your radio.</p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Proceed only if you know what you are doing.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; text-decoration: underline;">AVISO</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cambiar los fuses de la radio puede estropear la radio.</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Continúa sólo si sabes lo que estás haciendo.</p></body></html> Reset Radio Fuses - + Resetear fusibles de la radio Read Fuses from Radio - + Leer fusibles de la radio @@ -3812,53 +4437,57 @@ p, li { white-space: pre-wrap; } % - + ? - + 0._ - + 0.0 - 6P {0.0?} + ?.? - + GV - GV + Own value - Valor propio + Valor propio Flight mode %1 value - Valor modo de vuelo%1 + Valor modo de vuelo %1 GeneralEdit + + Radio settings - + Ajustes radio + + General settings used throught the transmitter. These will be relevant for all models in the same EEPROM. Ajustes generales usados a través del transmisor. @@ -3872,32 +4501,36 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. Trainer - Trainer + Entrenador + + Store calib. and hw settings in selected profile - Guardar calib. y los ajustes de hw en el perfil seleccionado + Guardar calib. y ajustes hw en el perfil seleccionado + + Retrieve calib. and hw settings from profile - Recuperar calib. y los ajustes de hw de un perfil + Recuperar calib. y ajustes hw de un perfil Global Functions - + Funciones globales Hardware - + Hardware Calibration - + Calibración @@ -3907,12 +4540,12 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. Wrong data in profile, Switch/pot config not retrieved - + Datos erróneos en el perfil, configuración de interruptor/pot no se ha recuperado Wrong data in profile, hw related parameters were not retrieved - Datos incorrectos en el perfil,los parámetros de hw no se ha recuperado + Datos incorrectos en el perfil, los parámetros de hw no se han recuperado @@ -3928,236 +4561,330 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM. GeneralSettings - + Radio Settings - + Ajustes de radio GeneralSetup + + Form - + Form + + Readonly Unlock - Desactivar solo lectura + Desactivar sólo lectura + + SC - + + + SE - + + + SA - + + + SF - SF + + + SH - + + + SD - + + + SB - + + + SG - + + + Timeshift from UTC - Zona horaria UTC + Zona horaria UTC + + Voice Language - Lenguaje de las Voces + Lenguaje de las voces + + Country Code - Codigo País + Código país + + Stick reverse - + Invertir stick + + FAI Mode - Modo FAI + Modo FAI + + Adjust RTC - + Ajustar RTC + + Vario pitch at max - Tono de vario al max + Tono de vario al máx + + + + Hz - + + + Speaker Volume - Volumen Altavoz + Volumen altavoz + + Backlight Switch - Switch de pantalla + Interruptor de luz de fondo + + Sound Mode - Modo sonido + Modo sonido + + Color 1 - + + + Color 2 - + + + Speaker Pitch (spkr only) - Tono del altavoz (solo altavoz) + Tono altavoz(sólo alt) + + 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. + 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 + seg + + Backlight color - Color de pantalla + Color de pantalla + + Beeper - + Beeper + + Speaker - Altavoz + Altavoz + + BeeperVoice - BeeperVoz + VozBeeper + + SpeakerVoice - VozAltavoz + VozAltavoz + + Beep volume - Volumen Beep + Volumen beep + + Wav volume - Volumen Wav + Volumen wav + + Vario volume - Volumen Vario + Volumen vario + + Background volume - Volumen de Fondo + Volumen de fondo + + + + ms - + + + Backlight Auto OFF after - Apagado automático de pantalla después + Auto apagado de pantalla después de + + Backlight flash on alarm - Pantalla parpadea con una alarma + Pantalla parpadea con alarma + + Vario pitch at zero - Tono de vario a cero + Tono de vario en cero + + Vario repeat at zero - Vario repite a cero + Vario repite en cero + + This is the switch selectrion for turning on the backlight (if installed). - Este es el switch seleccionado para encender la pantalla (si está instalada). + Este es el interruptor seleccionado para encender la luz de fondo (si está instalada). + + + + <!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; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <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;">LCD Screen Contrast</span></p> <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> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!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; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> @@ -4166,41 +4893,57 @@ p, li { white-space: pre-wrap; } + + Backlight Brightness - Brillo pantalla + Brillo pantalla + + RotEnc Navigation - Navegación RotEnc + Navegación RotEnc + + Automatically adjust the radio's clock if a GPS is connected to telemetry. - + Ajusta automáticamente el reloj de la radio si se conecta un GPS a la telemetría. + + America - + América + + Japan - Japón + Japón + + Europe - Europa + Europa + + Backlight OFF Brightness - + Brillo luz de fondo OFF + + Mode selection: Mode 1: @@ -4220,7 +4963,7 @@ Mode 4: Right stick: Elevator, Rudder - Selección de Modo: + Selección de modo: Modo 1: Stick Izquierdo: Elevador, Timón @@ -4242,465 +4985,661 @@ Modo 4: + + Mode 1 (RUD ELE THR AIL) - Modo 1 (RUD ELE THR AIL) + Modo 1 (RUD ELE THR AIL) + + Mode 2 (RUD THR ELE AIL) - Modo 2 (RUD THR ELE AIL) + Modo 2 (RUD THR ELE AIL) + + Mode 3 (AIL ELE THR RUD) - Modo 3 (AIL ELE THR RUD) + Modo 3 (AIL ELE THR RUD) + + Mode 4 (AIL THR ELE RUD) - Modo 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> + <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. - + Si activas FAI, sólo los sensores RSSI y RxBt seguirán funcionando. Esta función no puede ser deshabilitada en la radio. + + RSSI Poweroff Warning - + Aviso RSSI al apagado + + Low EEPROM Warning - + Advertencia de poca EEPROM + + Owner Registration ID - - - - - aaaaaaAA - + ID de propietario + + 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 - + Retraso de encendido + + Jack Mode - + Modo jack + + Audio - + + + Trainer - Trainer + Entrenador + + DMS - + + + USB Mode - + Modo USB + + Power Off Delay - + Retraso de apagado + + + + Ask on Connect - + Preguntar al conectar + + Joystick (HID) - + Joystick (HID) + + USB Mass Storage - + Almacenamiento USB + + USB Serial (CDC) - + USB Serial (CDC) + + Stick Mode - Modo Stick + Modo sticks + + Metric - Métrico + Métrico + + Imperial - + Imperial + + Default Channel Order - Orden Prederterminado Canales + Orden prederterminado canales + + GPS Coordinates - Coordenadas GPS + Coordenadas GPS + + Min - + Mín + + + + v - + + + Max - + Máx + + Inactivity Timer - Tiempo de inactividad + Tiempo de inactividad + + Show Splash Screen on Startup - Mostrar Pantalla de Inicio al Enceder + Mostrar pantalla de inicio al encender + + Contrast - Contraste + Contraste + + Battery Meter Range - + Medidor de rango de batería + + Haptic Strength - Fuerza de Haptic + Fuerza de haptic + + LCD Display Type - Tipo de Pantalla LCD + Tipo de pantalla LCD + + "No Sound" Warning - Aviso "Sin Sonido" + Aviso "sin sonido" + + Battery Warning - Aviso de Bateria + Aviso de batería + + Haptic Length - Longitud Haptic + Duración haptic + + MAVLink Baud Rate - Transferencia Baud MAVLink + Velocidad de transmisión MAVLink + + + + Quiet - Silencio + Silencio + + Only Alarms - Solo Alarmas + Sólo alarmas + + + + No Keys - Sin teclas + No teclas + + + + All - Todo + Todo + + Battery warning voltage. This is the threashhold where the battery warning sounds. Acceptable values are 5v..10v - Voltaje de aviso de la batería. + Voltaje de aviso de la batería. Este es el umbral cuando la batería emite sonidos de aviso. Los valores aceptables son 5v..10v + + Standard - Estandar + Estándar + + 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. + Si no es cero emitirá sonidos si el transmisor se deja sin pulsaciones durante el número específico de minutos. + + + + + + nnnnnnNN + + + min - min + + + + + Show splash screen on startup - Mostrar pantalla de inicio al encender + 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; } @@ -4712,7 +5651,7 @@ 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;">Switch warning - will alert if switches are not in their defaul position</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> <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> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!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; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> @@ -4720,72 +5659,106 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Esto define los avisos al inicio.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de acelerador - te alertará sin el gas no esta en la posición inactiva</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de Switch - tealertará si los switches no están en su posición prederterminada</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de interruptor - te alertará si los interruptores no están en su posición prederterminada</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aviso de memoria - te alertará si no hay suficiente memoria libre</p> <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 + X-Corto + + + + Short - Corto + Corto + + + + Normal - + + + + + Long - Largo + Largo + + + + X-Long - X-Largo + X-Largo + + NMEA - + + + Play Delay (switch mid position) - Retardo de Play (switch en posición media) + Retardo de reproducción (interruptor en posición media) + + Measurement Units - Unidades de Medida + Unidades de medida + + Haptic Mode - Modo Haptic + Modo haptic + + Beeper Length - Longitud del beeper + Duración del beeper + + Beeper Mode - Modo Beeper + Modo beeper + + Beeper volume 0 - Quiet. No beeps at all. @@ -4793,18 +5766,20 @@ p, li { white-space: pre-wrap; } 2 - Normal. 3 - Loud. 4 - Extra loud. - Volumen Beeper + Volumen beeper 0 - Silencio. Ningun tipo de beep. -1 - Sin teclas. Los beeps suenan normal pero las teclas de menu no sonarán. +1 - No teclas. Los beeps suenan normal pero las teclas de menu no sonarán. 2 - Normal. 3 - Alto. 4 - Extra Alto. + + Alarms Only - Solo Alarmas + Sólo alarmas @@ -4812,129 +5787,131 @@ p, li { white-space: pre-wrap; } OFF - + Keys - Teclas + Teclas Sticks - + Sticks Keys + Sticks - Teclas + Sticks + Teclas + Sticks ON - ON + English - Inglés + Inglés Dutch - + Holandés French - Francés + Francés Italian - Italiano + Italiano German - Alemán + Alemán Czech - Checo + Checo Slovak - Eslovaco + Eslovaco Spanish - Español + Español Polish - Polaco + Polaco Portuguese - Portugués + Portugués Russian - + Ruso Swedish - Sueco + Sueco Hungarian - + Húngaro 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 ? - + Si activas FAI, sólo sensores RSSI and RxBt seguirán funcionando. +Esta función no puede ser deshabilitada en la radio. +¿ Estás seguro ? @@ -4942,433 +5919,568 @@ Are you sure ? No - No + Yes, controled by a switch - Si, controlado por un switch + Sí, controlado por un interruptor Yes, controlled by a pot - Si, controlado por un potenciómetro + Sí, controlado por un potenciómetro Hardware + + Form - - - - - SQ - - - - - SR - - - - - LS2 - - - - - SP - - - - - SO - - - - - S4 - - - - - RS - - - - - SB - - - - - PPM 2 - PPM 2 - - - - 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 - + Form + + + SQ + + + + + + + SR + + + + + + + LS2 + + + + + + + SP + + + + + + + SO + + + + + + + S4 + + + + + + + RS + + + + + + + SB + + + + + + + PPM 2 + + + + + + + OFF + + + + + + + S-Port Mirror + S-Port + + + + + + Telemetry + Telemetría + + + + + + SBUS Trainer + Entrenador SBUS + + + + + + Debug + Depuración + + + + + + RTC Batt Check + Check Batería RTC + + + + + + Rud + + + + + + + PPM 3 + + + + + + + S1 + + + + + + + S2 + + + + + + + S3 + + + + + + + PPM 1 + + + + + + + Serial Port + Puerto Serie + + + + + + v + + + + + + + PPM Multiplier + Multiplicador PPM + + + + + + Current Offset + Offset actual + + + + + + PPM 4 + + + + + + + SA + + + + + + + Ele + + + + + + + Antenna + Antena + + + + + + S5 + + + + + + + Ail + + + + + + + Thr + + + + + + + SC + + + + + + + LS + + + + + + + SD + + + + + + + Battery Offset + Offset batería + + + + + + SE + + + + + + + SF + + + + + + + SG + + + + + + + SH + + + + + + + SI + + + + + + + SJ + + + + + + + SK + + + + + + SL - + + + SM - + + + SN - + - + + + RS2 - + + + Bluetooth - + Bluetooth + + ADC Filter - + Filtro ADC + + Device Name: - + Nombre dispositivo: HardwarePanel - - + + None - Ninguno + Ninguno 2 Positions Toggle - + 2 posiciones palanca 2 Positions - + 2 posiciones 3 Positions - + 3 posiciones - + Pot with detent - + Pos con fijador - + Multipos switch - + Interruptor multipos - + Pot without detent - + Pot sin fijador - + Slider with detent - - - - - OFF - - - - - Enabled - - - - - Telemetry - Telemetría + Slider con fijador + OFF + + + + + Enabled + Activado + + + + Telemetry + Telemetría + + + Trainer - Trainer + Entrenador - + Internal - + Interno - + Ask - + Preguntar - + Per model - + Por modelo - + Internal + External - + Interno + Externo - + External - + Externo Heli + + Invert Elevator - Invertir Elevador + Invertir elevador + + Invert Aileron - Invertir Aleron + Invertir alerón + + Invert Collective - Invertir Colectivo + Invertir colec. + + Invert Invertir + + Off + + 120 + + 120X + + 140 + + 90 + + Long. cyc - + Cíclico longitudinal + + Lateral cyc - + Cíclico lateral + + Collective Colectivo + + Swash Type - Tipo de Plato + Tipo de plato + + Swash Ring - + Plato @@ -5376,22 +6488,22 @@ Are you sure ? Throttle Channel: - Canal de Acelerador: + Canal de acelerador: Yaw Channel: - Canal de Yaw: + Canal de viraje: Pitch Channel: - Canal de pitch: + Canal de inclinación: Roll Channel: - Canal de roll: + Canal de balanceo: @@ -5399,19 +6511,20 @@ Are you sure ? Invalid EEPROM File %1 - Archivo EEPROM inválido %1 + Archivo EEPROM no válido %1 Cannot open file %1: %2. - + No se puede abrir el archivo %1: +%2. Error writing file %1: %2. - Error escribiendo el archivo %1: + Error escribiendo el archivo %1: %2. @@ -5421,30 +6534,30 @@ Are you sure ? Move Up - Mover Arriba + Mover arriba Ctrl+Up - + Ctrl+Arriba Move Down - Mover Abajo + Mover abajo Ctrl+Down - + Ctrl+Abajo Clear All Inputs - Limpiar Todas las entradas + Limpiar todas las entradas @@ -5454,7 +6567,7 @@ Are you sure ? Delete Selected Inputs? - ¿Borrar las Entradas Seleccionadas? + ¿Borrar las entradas seleccionadas? @@ -5474,7 +6587,7 @@ Are you sure ? Enter - + Intro @@ -5494,7 +6607,7 @@ Are you sure ? Ctrl+C - Ctrl+C + @@ -5504,7 +6617,7 @@ Are you sure ? Ctrl+X - Ctrl+X + @@ -5542,17 +6655,17 @@ Are you sure ? INV - INV + NOR - NOR + CH - + @@ -5560,7 +6673,7 @@ Are you sure ? GV - GV + @@ -5568,122 +6681,122 @@ Are you sure ? --- - --- + a>x - + a<x - + |a|>x - + |a|<x - + AND - + OR - + XOR - + a=b - + a!=b - + a>b - + a<b - + a>=b - + a<=b - + d>=x - + |d|>=x - + a=x - + a~x - + Timer - Temporizador + Temporizador Sticky - + Pegajoso Edge - + Borde Unknown - Desconocido + Desconocido L - + LSW - + @@ -5716,22 +6829,22 @@ Are you sure ? AND Switch - + Interruptor AND Popup menu available - + Menú emergente disponible (instant) - + (instante) (infinite) - + (infinito) @@ -5758,172 +6871,192 @@ Are you sure ? LogsDialog + + Companion Log Viewer - Visor de registros de Companion + Visor de registros de Companion + + Filename - Nombre Archivo + Nombre archivo + + Open LogFile - Abrir archivo Registros + Abrir archivo registros + + Zoom - + Zoom + + Save session CSV - + Guardar sesión CSV + + X - + + + Y - + + + Reset - Resetear + Resetear + + Fly sessions - Sesiones de vuelo + Sesiones de vuelo Telemetry logs - Registros de telemetría + Registros de telemetría Time (hh:mm:ss) - Hora (hh:mm:ss) + Hora (hh:mm:ss) Plot Title Change - + Cambia título de plot New plot title: - + Nuevo título de plot: Axis Label Change - + Cambia etiqueta de eje New axis label: - + Nueva etiqueta de eje: Graph Name Change - + Cambia nombre gráfico New graph name: - + Nuevo nombre gráfico: Error: no GPS data found - + Error: datos de GPS no encontrados The column containing GPS coordinates must be named "GPS". The columns for altitude "GAlt" and for speed "GSpd" are optional - + La columna conteniendo las coordenadas GPS debe llamarse "GPS". + +Las columnas para altitud "GAlt" y para velocidad "GSpd" son opcionales Cannot write file %1: %2. - No se puede escribir el archivo %1: + No se puede escribir el archivo %1: %2. Cursor A: %1 m - + Cursor A: %1 m Cursor B: %1 m - + Cursor B: %1 m Time delta: %1 - + Tiempo delta: %1 Climb rate: %1 m/s - + Velocidad de ascenso: %1 m/s Select your log file - Selecciona tu archivo de registros + Selecciona tu archivo de registros Available fields - Campos disponibles + 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 + El archivo de registros elegido contiene %1 líneas inválidas de un total de %2 líneas - total duration - + time span + lapso de tiempo duration - + duración (L1) - + (R1) - + (L2) - + (R2) - + @@ -5932,13 +7065,13 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt File loaded - Archivo Cargado + Archivo cargado Save As - Guardar Como + Guardar como @@ -5969,24 +7102,24 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Archivo guardado - + Read Models and Settings From Radio - Leer los Modelos y Ajustes de la Radio + Leer los modelos y ajustes de la radio Save Radio Backup to File - Guardar Copia deSeguridad de la Radio a un Archivo + Guardar copia de seguridad de la radio a un archivo Read Radio Firmware to File - Leer el Firmware de la Radio a un Archivo + Leer el firmware de la radio a un archivo OpenTX Home Page: <a href='%1'>%1</a> - + OpenTX Home Page: <a href='%1'>%1</a> @@ -6008,18 +7141,18 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Compilation server too busy, try later - Servidor de compilación demasiado ocupado, inténtalo mas tarde + Servidor de compilación demasiado ocupado, inténtalo más tarde Unknown server failure, try later - Fallo desconocido de servidor, inténtalo mas tarde + Fallo desconocido de servidor, inténtalo más tarde Yes - Si + Sí @@ -6031,83 +7164,83 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Release Notes - Notas de la Versión + Notas de la versión - + Open Models and Settings file - Abrir archivo de Modelos y Ajustes + Abre archivo de modelos y ajustes - + New Nuevo - + Open... Abrir... - + Save Guardar - + Save As... - Guardar Como... + Guardar como... - + Compare models Comparar modelos - + Exit the application - Salir de la aplicación + Sale de la aplicación - + List available programmers Lista de programadores disponibles - + Show fuses dialog - + Muestra ventane de fusibles - + Show the application's About box - Mostrar la ventana de aplicación Acerca de + Muestra la ventana de aplicación Acerca de - + Set Menu Language - Menú Ajuste Lenguaje + Lenguaje - + Write Escribir - + %2 - %2 + - + Alt+%1 - + - + New Radio - Nueva Radio + Nueva radio @@ -6117,7 +7250,7 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt Do you want to write the firmware to the radio now ? - ¿Te gustaría escribir el firmware a la radio ahora? + ¿Te gustaría escribir el firmware en la radio ahora? @@ -6130,421 +7263,423 @@ The columns for altitude "GAlt" and for speed "GSpd" are opt 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) - + Imagen de disco(*.dmg) Would you like to open the disk image to install the new version? - + ¿Quieres abrir la imagen del disco para instalar la nueva versioń? A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> - + Una nueva versión de Companion está disponible, por favor visita <a href='%1'>OpenTX website!</a> There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? - + Hay cambios sin guardar en el archivo que se perderán al cambiar de tipo de radio. + +¿Quieres continuar? No local SD structure path configured! - + ¡No configurada la ruta a la estructura SD local! No Radio or SD card detected! - + ¡No radio o tarjeta SD detectada! - + Close - Cerrar + Cerrar - + Close Models and Settings file - + Cierra el archivo de modelos y ajustes - + List of recently used files - + Lista de los archivos recientes - + Radio Profiles - + Perfiles de radio - + Create or Select Radio Profiles - + Crea o selecciona perfiles de radio - + Release notes... - + Notas de la versión... - + Show release notes - + Muestra notas de la versión - + Create a new Radio Settings Profile - + Crea un nuevo perfil de ajustes de radio - + Copy Current Radio Profile - + Copiar el perfil de radio actual - + Duplicate current Radio Settings Profile - + Duplica el perfil de radio actual - + Delete Current Radio Profile... - + Borrar el perfil de radio actual... - + Delete the current Radio Settings Profile - + Borra los ajustes actuales del perfil de radio actual - + Export Application Settings.. - + Exportar ajustes aplicación... - + Save all the current %1 and Simulator settings (including radio profiles) to a file. - + Guarda los ajustes actuales de %1 y del simulador (incluyendo perfiles de radio) a un archivo - + Import Application Settings.. - + Importar ajustes de la aplicación... - + Load %1 and Simulator settings from a prevously exported settings file. - + Carga los ajustes de %1 y del simulador desde un fichero de ajustes exportado previamente - - Tabbed Windows - - - - + Use tabs to arrange open windows. - + Usa las pestañas para organizar las ventanas abiertas - + + Tabbed Windows + Ventanas con pestañas + + + Tile Windows - + Ventanas en cascada - + Arrange open windows across all the available space. - + Organiza las ventanas en todo el espacio disponible - + Cascade Windows - + Ventanas en cascada - + Arrange all open windows in a stack. - + Organiza todas las ventanas abiertas en una cascada - + Close All Windows - + Cierra todas las ventanas - + Closes all open files (prompts to save if necessary. - + Cierra todos los archivos abiertos (pregunta guardar si es necesario) - + Window - - - - - Ctrl+Shift+S - - - - - Ctrl+Alt+L - + Ventana + 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 + Usa iconos pequeños en la barra de herramientas - + Use normal size toolbar icons - Usar iconos normales en la barra de herramientas + Usa iconos normales en la barra de herramientas - + Normal - + Normal - + Use big toolbar icons - Usar iconos grandes en la barra de herramientas + Usa iconos grandes en la barra de herramientas - + Big Grande - + Use huge toolbar icons - Usar iconos extra grandes en la barra de herramientas + Usa iconos extra grandes en la barra de herramientas - + Huge Extra Grande - + - Copy - + - Copiar - + Companion :: Open files warning - + Companion :: advertencia de archivos abiertos - + Please save or close modified file(s) before deleting the active profile. - + Por favor guarda o cierra los archivos modificados antes de borrar el perfil activo. - + Not possible to remove profile - No es posible eliminar el perfil + No se puede eliminar el perfil - + The default profile can not be removed. - El perfil prederterminado no se puede eliminar. + El perfil prederterminado no se puede eliminar. - + Confirm Delete Profile - + Confirma borrar perfil - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! - + ¿Seguro que quieres borrar el perfil de radio "%1"? ¡Esta acción no se puede deshacer! - + Please save or close all modified files before importing settings - + Por favor guarda o cierra todos los archivos modificados antes de importar ajustes - + <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>Los ajustes de %1 y del simulador pueden ser importados (restaurar) desde archvo exportado previamente (copia de seguridad). Esto reemplazará los ajustes actuales con los ajustes del archivo.</p><p>Se realizará automáticamente una copia de seguridad de los ajustes actuales. Pero si los ajustes actuales son útiles se recomienda que hagas una copia de seguridad manual primero.</p><p>Para los mejores resultados al importar ajustes, <b>cierra otras ventanas de %1 que tengas abiertas, y asegúrate que la aplicación del simulador no se está ejecutando.</p><p>¿Quieres continuar?</p></html> - + Confirm Settings Import - - - - - Select %1: - - - - - backup - + Confirma importar ajustes + Select %1: + Selecciona %1 + + + + backup + copia de seguridad + + + Press the 'Ignore' button to continue anyway. - + Presiona el botón de 'Ignorar' para continuar de todos modos. - + 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> - + Los ajustes no han podido ser importados. + <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>Nuevos ajustes han sido importados desde:<br> %1.</p><p>%2 ahora se reiniciará.</p><p>Ten en cuenta que puedes necesitar cerrar y reiniciar %2 antes de que algunos ajustes como el lenguaje y el tema de iconos se hagan efectivos.</p> + + + <p>The previous settings were backed up to:<br> %1</p> - + <p>Los ajustes anteriores fueron guardados en:<br> %1</p> Not enough flash available on this board for all the selected options - + No hay suficiente flash en esta placa para todas las opciones seleccionadas Compilation server temporary failure, try later - + Fallo temporal del servidor de compilación, intentalo más tarde Compilation error - + Error de compilación Invalid firmware - + Firmware no válido Invalid board - + Placa no válida Invalid language - + Lenguaje no válido - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. - + Algunos textos no serán traducidos hasta que reinicie Companion. Por favor ten en cuenta que algunas traducciones no están completas. Models and Settings read - + Lee modelos y ajustes No Companion release candidates are currently being served for this version, please switch release channel - + Actualmente no hay release candidates de Companion disponibles para esta versión, por favor cambia el canal de distribución No nightly Companion builds are currently being served for this version, please switch release channel - + Actualmente no hay nightly builds de Companion disponibles para esta versión, por favor cambia el canal de distribución No Companion release builds are currently being served for this version, please switch release channel - + Actualmente no hay distribuciones de Companion disponibles para esta versión, por favor cambia el canal de distribución Companion update check failed, new version information not found. - + El chequeo de la actualización de Companion ha fallado, la información de la nueva versión no se ha encontrado. No firmware release candidates are currently being served for this version, please switch release channel - + Actualmente no hay releases candidates de firmware disponibles para esta versión, por favor cambia el canal de distribución No firmware nightly builds are currently being served for this version, please switch release channel - + Actualmente no hay nightly builds de firmware disponibles para esta versión, por favor cambia el canal de distribución No firmware release builds are currently being served for this version, please switch release channel - + Actualmente no hay distribuciones de firmware disponibles para esta versión, por favor cambia el canal de distribución Release candidate builds are now available for this version, would you like to switch to using them? - + Ya hay disponibles release candidates para esta versión, ¿quieres cambiar para usarlas? Channel changed to RC, please restart the download process - + Canal cambiado a RC, por favor reinicia el proceso de descarga Official release builds are now available for this version, would you like to switch to using them? - + Ya hay disponibles distribuciones oficiales para esta versión, ¿quieres cambiar para usarlas? Channel changed to Release, please restart the download process - + Canal cambiado a Release, por favor reinicia el proceso de descarga This radio (%1) is not currently available in this firmware release channel - + Actualmente la radio (%1) no está disponible en este canal de distribución Firmware update check failed, new version information not found or invalid. - + El chequeo de la actualización del firmware ha fallado, la información de la versión no se ha encontrado o no es válida. @@ -6553,34 +7688,38 @@ 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. - + El firmware %1 parece que no se ha descargado anteriormente: +La versión %2 está disponible. +¿Quieres descargarla ahora? + +Te recomendamos que revises las notas de la versión usando el botón de abajo para los ver cambios que puedan ser importantes para tí. Do you want to download version %1 now ? - + ¿Quieres descargar ahora la versión %1? Ignore this version %1? - + ¿Ignorar esta versión %1? Local Folder - + Carpeta local Radio Folder - + Carpeta de radio This function is not yet implemented - + Esta función aún no está implementada @@ -6593,68 +7732,68 @@ We recommend you view the release notes using the button below to learn about an Derechos de autor del equipo OpenTX - + Create a new Models and Settings file - Crear un nuevo archivo de Modelos y Ajustes + Crea un nuevo archivo de modelos y ajustes - - + + Save Models and Settings file - Guardar el archivo de Modelos y Ajustes + Guarda el archivo de modelos y ajustes - + Exit Salir - + Use default system language. - + Usa el lenguaje predeterminado del sistema. - + Use %1 language (some translations may not be complete). - + Usa lenguaje %1 (algunas traducciones pueden no estar completas) - + Classical - Clasico + Clásico - + The classic companion9x icon theme - Tema de iconos clasicos de companion9x + Tema de iconos clásicos de companion9x - + Yerico - + Yerico - + Yellow round honey sweet icon theme Tema de iconos amarillo miel redondo - + Monochrome Monocromo - + MonoWhite MonoBlanco - + MonoBlue MonoAzul - + System language Lenguaje del sistema @@ -6667,231 +7806,237 @@ We recommend you view the release notes using the button below to learn about an 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. - + Una nueva versión del firmware %1 está disponible: + - actual es %2 + - nuevo es %3 + +¿Quieres descargar ahora? + +Te recomendamos que revises las notas de la versión usando el botón de abajo para los ver cambios que puedan ser importantes para tí. - + Synchronize SD - + Sincronizar SD - + OpenTX Companion %1 - Radio: %2 - Profile: %3 - + OpenTX Companion %1 - Radio: %2 - Perfil: %3 - + About... Acerca de... - + View Log File... - Ver Archivo de Registro... + Ver archivo de registro... - + Open and view log file - Abrir y ver el archivo de registro + Abre el archivo de registro - + Settings... Ajustes... - + Edit Settings - Editar Ajustes + Edita ajustes - + Download... Descargar... - + Download firmware and voice files - Descargar los archivos de firmware y voces + Descarga los archivos de firmware y voces - + Check for Updates... - Comprobar Actualizaciones... + Comprobar actualizaciones... - + Check OpenTX and Companion updates - Comprobar la actualizaciones de OpenTX y Companion + Comprueba las actualizaciones de OpenTX y Companion - + Compare Models... - Comparar Modelos... + Comparar modelos... - + Edit Radio Splash Image... - Editar Imagen de Inicio de la Radio... + 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... - + Fusibles... - - 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 + Read Firmware from Radio + Leer firmware de la radio + + + + Read firmware from Radio + Leer firmware de la radio - Configure Communications... - Configurar Comunicaciones... + Write Firmware to Radio + Escribir firmware a la radio - Configure software for communicating with the Radio - Configurar software para la comunicación con la Radio + Write firmware to Radio + Escribir firmware a 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 + + 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 + Abre 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 + Configura 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 - + Sincronización de la tarjeta SD - + Recent Files - Archivos Recientes + Archivos recientes - - Set Icon Theme - Selecciona el Tema de Iconos - - - - Set Icon Size - Selecciona el Tamaño de Iconos - - - + Set Icon Theme + Tema de iconos + + + + Set Icon Size + Tamaño de iconos + + + + File Archivo - - + + Edit Editar - + Settings Ajustes - + Read/Write Leer/Escribir - - + + Help Ayuda - + Ready Listo @@ -6899,63 +8044,58 @@ We recommend you view the release notes using the button below to learn about an MdiChild - + Editing model %1: Editando modelo %1: Delete - Borrar + Borrar Move to Category - + Mover a categoría Alt+S - + - + Do you want to overwrite radio general settings? - ¿Quieres sobreescribir los ajustes generales de la radio? + ¿Quieres sobreescribir los ajustes generales de la radio? - + This category is not empty! - + ¡Esta categoría no está vacía! - + New model Translators: do NOT use accents here, this is a default model name. - + Nuevo modelo - + <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>El tipo actualmente seleccionado de radio (%1) no es compatible con el archivo %3 (de %2), los modelos y ajustes necesitan ser convertidos.</b></p> - - Unable to find Horus radio SD card! - - - - + Models and Settings written - + Modelos y ajustes escritos - + Unable to find file %1! - ¡No es posible encontrar el archivo %1! + ¡No se puede encontrar el archivo %1! - + Error reading file %1: %2. Error leyendo el archivo %1: @@ -6969,303 +8109,313 @@ We recommend you view the release notes using the button below to learn about an 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). - - - + + %n modelo + %n modelos %n Model(s) As in "Paste 3 Models" or "Insert 1 Model." - - - + + %n modelo + %n modelos %n Category(ies) As in "Delete 3 Categories" or "Delete 1 Category." - - - + + %n categoría + %n categorías Nothing selected - + Nada seleccionado Rename Category - + Renombrar categoría Edit Model - + Editar modelo Cut - + Cortar Copy - + Copiar Paste - + Pegar Insert - + Insertar Edit Radio Settings - + Editar ajustes de radio Copy Radio Settings - + Copiar ajustes de radio Paste Radio Settings - + Pegar ajustes de radio Simulate Radio - + Simular radio Add Category - + Añadir categoría Category - + Categoría Add Model - + Añadir modelo Model - Modelo + Modelo Restore from Backup - + Restaurar desde copia de seguridad Model Wizard - Asistente Modelos + Asistente modelos Set as Default - + Fijar como predeterminado Print Model - + Imprimir modelo Simulate Model - + Simular modelo Duplicate Model - + Duplicar modelo Show Category Actions Toolbar - + Muestra barra de acciones de categoría Show Radio Actions Toolbar - + Muestra barra de acciones de radio Show Model Actions Toolbar - + Muestra barra de acciones de modelo - + + read only + solo lectura + + + New category Translators do NOT use accent for this, this is the default category name on Horus. - + Nueva categoria - + Category index out of range. - + Índice de categoría fuera de rango. - + Cannot delete the last category. - + No se puede eliminar la última categoría. - + Cannot insert model, last model in list would be deleted. - + No se puede insertar el modelo, no hay slots de modelo disponibles. - + Cannot add model, could not find an available model slot. - + No se puede añadir el modelo, no hay slots de modelo disponibles. - + Cannot paste model, out of available model slots. - + No se puede pegar el modelo, no hay slots de modelo disponibles. - + You are replacing an existing model, are you sure? - + Estás reemplazando un modelo existente, ¿estás seguro? - + Delete %n selected model(s)? - - - + + ¿Borrar %n modelo seleccionado? + ¿Borrar %n modelos seleccionados? - + Delete %n selected category(ies)? - - - + + ¿Borrar %n categoría seleccionada? + ¿Borrar %n categorías seleccionadas? - + Cannot duplicate model, could not find an available model slot. - + No se puede duplicar el modelo, no hay un slot de modelo disponibles. - + Do you wish to continue with the conversion? - + ¿Quieres continuar la conversión? - + Choose <i>Apply</i> to convert the file, or <i>Close</i> to close it without conversion. - + Elige <i>Aplicar</i> para convertir el archivo, o <i>Cerrar</i> para cerrar sin conversión. - + <b>The conversion generated some important messages, please review them below.</b> - + <b>La conversión ha generado mensajes importantes, por favor revísalos.</b> - + Companion :: Conversion Result for %1 - + Companion :: Resultado de la conversión para %1 - + + Unable to find radio SD card! + ¡No se puede encontrar la tarjeta SD de la radio! + + + Error opening file %1: %2. Error abriendo el archivo %1: %2. - + Save As - Guardar Como + Guardar como - + Open backup Models and Settings file - Abrir archivo de copia de seguridad de Modelos y Ajustes + Abre 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 + Archivo binariode copia de seguridad no válido %1 - + Cannot write temporary file! ¡No se puede escribir el archivo temporal! @@ -7275,23 +8425,27 @@ Do you want to save your changes? MIX - + (@%1) - + MixerDialog + + Dialog Mezclas + + Source Fuente @@ -7300,71 +8454,107 @@ Do you want to save your changes? + + + + + + + + The source for the mixer - LA fuente de la mezcla + La fuente de la mezcla + + Weight - Carga + Peso + + + + + + GV - + GV + + Switch used by the mix. If blank then the mix is considered to be "ON" all the time. The value of the mixer is multiplied by this value and divided by 100. - Switch usado por la mezcla. + Interruptor usado por la mezcla. Si está en blanco entonces la mezcla se considera que está activa todo el tiempo. + + Offset - + Offset + + Include Trim - Incluir Trim + Incluir trim + + Curve Curva + + The curve used by the mix La curva usada por la mezcla + + Switch - + Interruptor + + Yes - Si + Sí + + No - No + + + Warning Aviso + + Name Nombre @@ -7373,6 +8563,14 @@ Si está en blanco entonces la mezcla se considera que está activa todo el tiem + + + + + + + + <!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; } @@ -7384,44 +8582,57 @@ 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;">If Delay is not zero the actuation of the mix will be delayed by the specified amount of seconds.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Slow is not zero then the speed of the mix will be set by the value specified -&gt; the value states the number of seconds it takes to transit from -100 to 100.</p></body></html> - + + + Mixer warning. Setting this value will cause a beep to be emmitted when this value is active. - Sellecionar este valor provocará un beep emitido cuando este activo. Aviso del mezclador. - +Selecionar este valor provocará un beep cuando el valor esté activo. + + OFF APAGADO + + 1 Beep + + 2 Beep 2 Beeo + + 3 Beep + + Multiplex - Opciones + + + Multiplexer This determines how mixer values are added. @@ -7429,9 +8640,9 @@ This determines how mixer values are added. "+" means the value of the current mix is added to the previous mixes in the same channel. "*" means the value of the current mix is amultiplied with the previous mixes in the same channel. "R" means the value replaces the previous values. If the switch is off the value will be ignored. - Opciones + Multiplexer -Esto determina como los valores de mezcla son añadidos. +Esto determina cómo los valores de mezcla son añadidos. "+" significa que el valor de la mezcla actual es añadido a la mezcla previa en el mismo canal. "*" significa que el valor de la mezcla actual es multiplicada por la mezcla previa en el mismo canal @@ -7439,73 +8650,91 @@ Esto determina como los valores de mezcla son añadidos. + + ADD AÑADIR + + MULTIPLY MULTIPLICAR + + REPLACE REEMPLAZAR + + Flight modes Modos de vuelo + + Include DR/Expo - Incluye DR/Expo + IncluirDR/Expo + + Delay Retardo + + Slow Lento + + Up Arriba + + Down Abajo DEST -> %1 - + Click to access popup menu - + Pulsa para acceder el menú emergente Clear All - + Limpiar todo Set All - + Fijar todo Invert All - + Ivertir todo @@ -7513,22 +8742,22 @@ Esto determina como los valores de mezcla son añadidos. Increase font size - + Aumentar tamaño de fuente Decrease font size - + Reducir tamaño de fuente Default font size - + Tamaño de fuente predeterminado Ctrl+0 - + @@ -7537,7 +8766,7 @@ Esto determina como los valores de mezcla son añadidos. Move Up - Mover Arriba + Mover arriba @@ -7549,7 +8778,7 @@ Esto determina como los valores de mezcla son añadidos. Move Down - Mover Abajo + Mover abajo @@ -7590,12 +8819,12 @@ Esto determina como los valores de mezcla son añadidos. Enter - Enter + Intro &Toggle highlight - &Seleccionar Palanca + &Seleccionar palanca @@ -7668,18 +8897,20 @@ Esto determina como los valores de mezcla son añadidos. Model: - + Modelo: Throttle Source - Fuente del acelerador + Fuente del acelerador ModelEdit + + Dialog Mensaje @@ -7691,7 +8922,7 @@ Esto determina como los valores de mezcla son añadidos. Heli - + Heli @@ -7701,7 +8932,7 @@ Esto determina como los valores de mezcla son añadidos. Logical Switches - Switches lógicos + Interruptor lógicos @@ -7711,7 +8942,7 @@ Esto determina como los valores de mezcla son añadidos. Outputs - Salidas + Salidas @@ -7735,6 +8966,8 @@ Esto determina como los valores de mezcla son añadidos. + + Simulate Simular @@ -7744,102 +8977,102 @@ Esto determina como los valores de mezcla son añadidos. Exponential - Exponencial + Exponencial Extra Fine - Extra Fino + Extra Fino Fine - Fino + Fino Medium - Medio + Medio Coarse - Duro + Duro Unknown - Desconocido + Desconocido Slave/Jack - + Slave/Jack Master/SBUS Module - + Módulo Master/SBUS Master/CPPM Module - + Módulo Master/CPPM Master/SBUS in battery compartment - + Master/SBUS en compartimento de la batería Master/Jack - + Enable - + Activar Disable - + Desactivar True - + Verdadero False - + Falso Yes - Si + Sí No - No + Y - + N - + ON - ON + @@ -7847,458 +9080,458 @@ Esto determina como los valores de mezcla son añadidos. OFF - + bytes - + Mode - Modo + Modo Channels - Canales + Canales Frame length - + Longitud frame PPM delay - Retardo PPM + Retardo PPM Polarity - Polaridad + Polaridad Protocol - Protocolo + Protocolo Delay - Retardo + Retardo Receiver - Receptor + Receptor Radio protocol - + Protocolo radio Subtype - + Subtipo Option value - + Valor opción Sub Type - + Sub tipo RF Output Power - + Potencia de salida RF 90 - 90 + 120 - 120 + 120X - 120X + 140 - 140 + MULT! - + Offset - Offset + Slow - Lento + Lento Warn - + Aviso Flight modes - Modos de vuelo + Modos de vuelo Flight mode - Modo de vuelo + Modo de vuelo All - Todo + Todo Edge - + Borde Sticky - + Pegajoso Timer - Temporizador + Temporizador missing - + falta Duration - Duración + Duración Extended Limits - Límites extendidos + Límites extendidos Display Checklist - Lista verificación pantalla + Mostrar lista de verificación Global Functions - + Funciones globales Manual - + Manual Auto - + Auto Failsafe Mode - Modo Failsafe + Modo failsafe Hold - Esperar + Mantener No Pulse - + Sin pulsos Not set - + No fijado No pulses - + Sin pulsos Silent - Silencio + Silencio Beeps - + Beeps Voice - Voz + Voz Haptic - Reproducir Haptic + Haptic Flight - + Vuelo Manual reset - + Reset manual Step - + Paso Display - + Mostrar Extended - + Extendido Never - + Nunca On Change - + Al cambiar Always - + Siempre Source - + Fuente Trim idle only - + Trim sólo al ralentí Warning - Aviso + Aviso Reversed - + Invertido Tmr - + Temporiz. FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Alti - + Alti+ - + VSpeed - + Veloc. vert. A1 - + A2 - + A3 - + A4 - + FAS - + Cells - + Celdas Calculated - + Calculado Add - + Sumar Average - + Media Min - + Mínimo Max - + Máximo Multiply - + Multiplicar Totalise - + Total Cell - + Celda Consumption - + Consumo Distance - + Distancia Lowest - + Menor Cell %1 - + Celda %1 Highest - + Mayor Delta - + Formula - + Fórmula Id - + Instance - + Instancia @@ -8306,130 +9539,130 @@ Esto determina como los valores de mezcla son añadidos. Sensor - + Sources - + Fuentes GPS - + GPS Alt. - + Blades - Palas + Palas Multi. - + F - + Inst - + Alt - + Unit - Unidad + Unidad Prec - + Ratio - + Multi - + A/Offset - + Filter - + Filtro Persist - + Persist. Positive - Positivo + Positivo Log - + Reporte Numbers - + Números Bars - Barras + Barras Script - + Script Filename - Nombre Archivo + Nombre archivo Error: Unable to open or read file! - + Error: ¡No se puede abrir o leer el archivo! Persistent - + Persistente Off - Apagado + @@ -8439,89 +9672,89 @@ Esto determina como los valores de mezcla son añadidos. None - Ninguno + Ninguno Name - Nombre + Nombre Countdown - Cuenta Atrás + Cuenta atrás Minute call - + Cada minuto FM%1 - + FM%1%2 - + FM%1+%2 - + Weight - + Peso Switch - + Interruptor NoTrim - + No DR/Expo - + Offset(%1) - + Disabled in all flight modes - + Desactivado en todos los modos de vuelo instant - + instante Custom - A medida + Personalizado Standard - Estandar + Estándar @@ -8544,368 +9777,500 @@ Esto determina como los valores de mezcla son añadidos. Model Name: - Nombre Modelo: + Nombre modelo: Model Type: - Tipo Modelo: + Tipo modelo: Module - + + + Failsafe Mode - Modo Failsafe + Modo failsafe + + Start Comenzar - + + + PPM delay Retardo PPM + + Negative Negativo + + Positive Positivo + + Polarity Polaridad - + + + Trainer Mode - Modo Entrenador + Modo entrenador - + + + PPM Frame Length - Longitud Trama PPM + Longitud trama PPM + + CH - + + + Antenna - + Antena - + + + Option value - - - - - Bind on startup - + Valor opción + + RF Output Power - + Potencia de salida de RF - + + + Low Power - + Baja potencia - + + + us - + + + Multi Radio Protocol - + Multi Radio protocol - + + + Sub Type - + Sub tipo - + + + Master/Jack - + Master/Jack - + + + Slave/Jack - + Slave/Jack - + + + Master/SBUS Module - + Módulo Master/SBUS - + + + Master/CPPM Module - + Módulo Master/CPPM - + + + Master/SBUS in battery compartment - + Master/SBUS en compartimento de la batería - + + + Show values in: - + Muestra valores en: - + + + % abbreviation for percent - + - + + + μs abbreviation for microseconds - + - + + + ms + + Receiver 1 - + Receptor 1 + + + + + + X - + + + Receiver 2 - + Receptor 2 + + Receiver 3 - + Receptor 3 + + WARNING: changing RF Output Power needs RE-BIND - + AVISO: cambiar potencia salida de RF requiere RE-BIND - + + + Channels Canales - + + + Registration ID - + Registro ID - + + + WARNING: Requires non-certified firmware! - + AVISO: ¡Requiere firmware no certificado! - + + + Not set - + No fijado - + + + Hold - Esperar + Mantener - + + + Custom - A medida + Personalizado - + + + No Pulses Sin Pulsos - + + + Receiver Receptor - - Failsafe Positions - Posiciones Failsafe + + + + Master/Bluetooth + Master/Bluetooth - + + + + Slave/Bluetooth + Slave/Bluetooth + + + + + + Master/Multi + Master/Multi + + + + + + Disable Telemetry + Desactivar telemetría + + + + + + Disable Ch. Map + Desactivar mapa canales + + + + + + Failsafe Positions + Posiciones failsafe + + + + + Protocol Protocolo + + Receiver No. Receptor Nº. - + + + Output type - + Tipo de salida - + + + Open Drain - + - + + + Push Pull - + ModuleData - + Positive - Positivo + Positivo - + Negative - Negativo + Negativo - + Trainer Port - Puerto Entrenador + Puerto entrenador - + Internal Radio System - Sistema Interno de Radio + Sistema de radio interno - + External Radio Module - Modulo externo de Radio + Módulo externo de radio - + Extra Radio System - Extra Sistema de Radio + Sistema de radio extra - + Radio System - Sistema de Radio + Sistema de radio - + 10mW - 16CH - + - - + + 100mW - 16CH - + - + 500mW - 16CH - + - + Auto <= 1W - 16CH - + - - + + 25mW - 8CH - + - - + + 25mW - 16CH - + - + 200mW - 16CH (no telemetry) - + 200mW - 16CH (sin telemetría) - + 500mW - 16CH (no telemetry) - + 500mW - 16CH (sin telemetría) - + 100mW - 16CH (no telemetry) - + 100mW - 16CH (sin telemetría) ModulePanel - + Value - Valor + Valor - + Hold - Esperar + Mantener - + No Pulse - + Sin pulsos - + Ask - + Preguntar - + Internal - + Interno - + Internal + External - + Interno + Externo - + External - + Externo + + + + Autodetect Format + Autodetectar formato + + + + Bind on channel + Bind con canal @@ -8913,448 +10278,448 @@ Esto determina como los valores de mezcla son añadidos. Input - Entrada + Entrada Weight - + Peso Long. cyc - + Cíc. long. Lateral cyc - + Cíc. lateral Collective - Colectivo + Colectivo Flight modes - Modos de vuelo + Modos de vuelo Flight mode - Modo de vuelo + Modo de vuelo Switch - + Interruptores General - + EEprom Size - + Tamaño EEprom Model Image - Imagen del modelo + Imagen del modelo Throttle - Acelerador + Acelerador Trims - + Center Beep - + Beep en centro Switch Warnings - Avisos palancas (Switch) + Avisos interruptores Pot Warnings - Avisos Potenciómetros + Avisos potenciómetros Other - + Otro Timers - + Temporizadores Time - Hora + Hora Countdown - Cuenta Atrás + Cuenta atrás Modules - + Módulos Trainer port - + Puerto entrenador Helicopter - Helicóptero + Helicóptero Swash - + Type - + Tipo Ring - + Protocol - Protocolo + Protocolo Low - + Bajo Critical - + Crítico Telemetry audio - + Audio telemetría Altimetry - Altímetro + Altímetro Vario source - Fuente Variómetro + Fuente variómetro Vario limits > - + Límites variómetro Sink max - + Descenso máx Sink min - + Descenso mín Climb min - + Ascenso mín Climb max - + Ascenso máx Center silent - + Centro silencio Top Bar - + Barra superior Volts source - + Fuente de voltage Altitude source - + Fuente de altitud Various - Varios + Varios Serial protocol - + Protocolo serie FAS offset - + mAh count - Valor mAh + Valor mAh Persistent mAh - mAh Constantes + mAh persistente Current source - Fuente Actual + Fuente actual Blades - Palas + Palas Parameters - Parámetros + Parámetros Telemetry Sensors - + Sensores de telemetría Telemetry Screens - + Pantallas de telemetría GF%1 - + Global Functions - + Funciones globales Checklist - + Lista de verificación GV%1 - + RE%1 - + Channel - + Canal Name - Nombre + Nombre Prec - + Popup - + Emergente Outputs - Salidas + Salidas Subtrim - Subtrim + Direct - + Directo Curve - Curva + Curva PPM - + Linear - Lineal + Lineal Telemetry - Telemetría + Telemetría Offset - Offset + Min - + Mín Min.call - + Cada min Persist - + Persistente F.In - + Atn. entr. F.Out - + Atn.sal. Global vars - + Vars globales Max - + Máx Global Variables - Variables globales + Variables globales Inputs - Entradas + Entradas Mixers - Mezclas + Mezclas Curves - Curvas + Curvas L%1 - + Logical Switches - Switches lógicos + Interruptores lógicos SF%1 - SF%1 + Special Functions - Funciones especiales + Funciones especiales Analogs - + Analógicos Unit - Unidad + Unidad Scale - Escala + Escala RSSI Alarms - + Alarmas RSSI @@ -9362,52 +10727,47 @@ Esto determina como los valores de mezcla son añadidos. Subtype - + Subtipo Video TX frequency - + Frecuencia vídeo TX CC2500 frequency fine tune - + CC2500 ajuste fino de frecuencia Telemetry - Telemetría + Telemetría Radio output power - + Potencia de salida radio Servo output frequency - + Frecuencia de salida servo Option value - + Valor opción Fixed ID value - + Valor ID fijo DEFAULT - - - - - Custom - proto %1) - + PREDETERMINADO @@ -9415,45 +10775,45 @@ Esto determina como los valores de mezcla son añadidos. Throttle Channel: - Canal Throttle: + Canal de acelerador: Yaw Channel: - Canal Yaw: + Canal de viraje: Pitch Channel: - Canal Pitch: + Canal de inclinación: Roll Channel: - Canal Roll: + Canal de balanceo: OpenTxEepromInterface - - - Unknown error - - + Unknown error + Error desconocido + + + ... plus %1 errors - + ... más %1 errores - + Cannot write radio settings - + No se pueden escribir los ajustes de la radio - + Cannot write model %1 - + No se puede escribir el modelo %1 @@ -9461,12 +10821,12 @@ Esto determina como los valores de mezcla son añadidos. Throttle Cut - Corte de Gas + Corte de gas Throttle Timer - Temporizador de Gas + Temporizador de gas @@ -9480,62 +10840,71 @@ Esto determina como los valores de mezcla son añadidos. Error opening file %1: %2. - Error abriendo el archivo %1: + Error abriendo el archivo %1: %2. Error opening OTX archive %1 - + Error abriendo archivo OTX %1 Error initializing OTX archive writer - + Error inicializando el escritor de archivo OTX Error writing file %1: %2. - Error escribiendo el archivo %1: + Error escribiendo el archivo %1: %2. Error creating OTX file %1: %2. - + Error creando el fichero OTX %1: +%2. Error creating OTX archive - + Error creando el archivo OTX Error adding %1 to OTX archive - + Error añadiendo %1 al archivo OTX PrintDialog + + Close Cerrar + + Style - + Estilo + + Print Imprimir + + Print to file Imprimir a archivo @@ -9547,7 +10916,7 @@ Esto determina como los valores de mezcla son añadidos. Select PDF output file - Seleccionar archivo de salida PDF + Seleccionar archivo de salida PDF @@ -9559,27 +10928,46 @@ Esto determina como los valores de mezcla son añadidos. ProgressDialog + + Flash Firmware - + + + Close - Cerrar + Cerrar Cancel - Cancelar + Cancelar ProgressWidget + + Show Details - Mostrar detalles + Mostrar detalles + + + + QObject + + + WARNING + AVISO + + + + <p>Importing JumperTX data into OpenTX 2.3 is <b>not supported and dangerous.</b></p> <p>It is unfortunately not possible for us to differentiate JumperTX data from legitimate FrSky X10 data, but <b>You should only continue here if the file you opened comes from a real FrSky X10.</b></p> <p>Do you really want to continue?</p> + <p> Importar datos de JumperTX a OpenTX 2.3 <b> no es compatible y es peligroso. </b> </p> <p> Desafortunadamente, no es posible diferenciar los datos de JumperTX de los datos legítimos de FrSky X10, pero <b> Sólo debes continuar aquí si el archivo que se abrió proviene de un FrSky X10 real. </b> </p> <p> ¿Realmente deseas continuar? </p> @@ -9587,7 +10975,7 @@ Esto determina como los valores de mezcla son añadidos. Models - + Modelos @@ -9595,97 +10983,97 @@ Esto determina como los valores de mezcla son añadidos. is invalid - + es inválido converted to - + convertido a verify is - + verificar si [DBG] - + [NFO] - + [WRN] - + [CVT] - + [ERR] - + [INV] - + Event - + Evento Origin - + Fuente Comp - + Comp Sub-Component - + Sub-componente Field - + Campo Type - + Tipo Old - + Anterior Action - Acción + Acción New - Nuevo + Nuevo Seq - + @@ -9694,24 +11082,24 @@ Esto determina como los valores de mezcla son añadidos. Cannot write file %1: %2. - No se puede escribir el archivo %1: + No se puede escribir el archivo %1: %2. <b><u>WARNING!</u></b><br>This will reset the fuses of %1 to the factory settings.<br>Writing fuses can mess up your radio.<br>Do this only if you are sure they are wrong!<br>Are you sure you want to continue? - <b><u>¡AVISO!</u></b><br>Esto reseteará los fuses de %1 a los ajustes de fábrica.<br>Escribir fuses puede estropear tu radio.<br>¡Haz esto sólo si estás seguro que están mal!<br>¿Estás seguro de continuar? + <b><u>¡AVISO!</u></b><br>Esto reseteará los fusibles de %1 a los ajustes de fábrica.<br>Escribir los fusibles puede estropear tu radio.<br>¡Haz esto sólo si estás seguro que están mal!<br>¿Estás seguro de continuar? Could not delete temporary file: %1 - + No se puede borrar el archivo temporal: %1 - Unable to find Horus radio SD card! - + Unable to find radio SD card! + ¡No se puede encontrar la tarjeta SD de la radio! @@ -9719,28 +11107,34 @@ Esto determina como los valores de mezcla son añadidos. <p>Value (input): <b>%1</b></p> - + <p>Valor (entrada): <b>%1</b></p> Right-double-click to reset to center. - + Doble click derecho para reiniciar centro. RadioNotFoundDialog + + No Radio Found - No se ha encontrado la Radio + No se ha encontrado radio + + <html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html> - + <html><head/><body> <p> ¡No se encontró radio! </p> <p> Asegúrate de mantener presionados los botones de ajuste inferiores hacia el centro mientras la enciendes. </p> <p> Luego, conecta el cable USB. </p> <p> <span style = "font-family: 'arial, sans-serif'; font-size: 13px; font-style: italic; color: # 222222; background-color : #ffffff; "> Nota: si tienes una Taranis que no tiene el firmware actualizado a 2.0, entonces esta versión de Companion no funcionará. </span> </p> </body> </html> + + OK @@ -9749,64 +11143,78 @@ Esto determina como los valores de mezcla son añadidos. RadioOutputsWidget - + + Form - + - + + View: - + Vista: - + + Logical Switches - Switches lógicos + Interruptores lógicos - + + Global Variables - Variables globales + Variables globales - + + Channel Outputs - + Salidas canales - + + Mix Outputs - + Salidas mixes - + + L o g i c - + L +ó +g +i +c +o - + + G l o b a l - + - + + C h a @@ -9815,27 +11223,34 @@ n e l s - + C +a +n +a +l +e +s - + + M i x e s - + FM%1 - + GV%1 - + @@ -9843,7 +11258,7 @@ s Latch/unlatch the momentary switch. - + Activa/desactiva el interruptor momentáneo. @@ -9854,7 +11269,7 @@ s V - + @@ -9862,428 +11277,428 @@ s s - + ft - + m - + °C - + ° - + % - + mph - + km/h - + m/s - + A - + mAh - + W - + g - + TrmR - + TrmE - + TrmT - + TrmA - + Trm5 - + Trm6 - + TrmH - + TrmV - + Batt - Batería + Batería Time - Hora + Hora Timer1 - Temporizador1 + Temporizador1 Timer2 - Temporizador 2 + Temporizador 2 Timer3 - Temporizador 3 + Temporizador 3 RAS - + RSSI Tx - + RSSI Rx - + A1 - + A2 - + A3 - + A4 - + Alt - + Rpm - + Fuel - Combustible + Combustible T1 - + T2 - + Speed - Velocidad + Velocidad Dist - + Distancia GPS Alt - + Cell - + Celda Cells - + Celdas Vfas - + Curr - + Cnsp - + Cons Powr - + AccX - + AccY - + AccZ - + Hdg - + VSpd - + VelocVert AirSpeed - + VelocAire dTE - + A1- - + A2- - + A3- - + A4- - + Alt- - + Alt+ - + Rpm+ - + T1+ - + T2+ - + Speed+ - Velocidad+ + Velocidad+ Dist+ - + AirSpeed+ - + VelocAire+ Cell- - + Celda- Cells- - + Celdas- Vfas- - + Curr+ - + Powr+ - + ACC - + GPS Time - Hora GPS + Hora GPS REa - + REb - + ??? - ??? + ---- - + I as in Input - + LUA%1%2 - + MAX - + CYC%1 - + TR as in Trainer - + SRC - + @@ -10291,165 +11706,170 @@ s ↑ - + ↓ - + - - + ! - + RudTrim Left - RudTrim Izquierda + RudTrim izquierda RudTrim Right - RudTrim Derecha + RudTrim derecha EleTrim Down - EleTrim Abajo + EleTrim Abajo EleTrim Up - EleTrim Arriba + EleTrim Arriba ThrTrim Down - ThrTrim Abajo + ThrTrim abajo ThrTrim Up - ThrTrim Arriba + ThrTrim arriba AilTrim Left - AilTrim Izquierda + AilTrim Izquierda AilTrim Right - AilTrim Derecha + AilTrim Derecha Trim 5 Down - + Trim 5 abajo Trim 5 Up - + Trim 5 arriba Trim 6 Down - + Trim 6 abajo Trim 6 Up - + Trim 6 arriba TrmH Left - + TrmH izquierda TrmH Right - + TrmH derecha TrmV Down - + TrmV abajo TrmV Up - + TrmV arriba REa - + REb - + OFF - + ON - ON + THs - + TH% - + THt - + - + ??? - ??? + One - Uno + Uno - + + Act + + + + ---- - + - + Telemetry - Telemetría + Telemetría - + SW - + @@ -10457,7 +11877,7 @@ s Companion Release Notes - Notas de la versión Companion + Notas de la versión de Companion @@ -10465,7 +11885,7 @@ s OpenTX Release Notes - Notas de la versión OpenTX + Notas de la versión de OpenTX @@ -10473,17 +11893,17 @@ s Played once, not during startup - Reproducir una vez, no en el inicio + Reproducir una vez, no durante el inicio No repeat - No Repetir + No repetir %1s - %1s + @@ -10496,7 +11916,7 @@ s Yes - Si + Sí @@ -10510,14 +11930,15 @@ s Error opening file %1: %2. - Error abriendo el archivo %1: + Error abriendo el archivo %1: %2. Error opening file %1 in write mode: %2. - + Error abriendo archivo %1 en modo de escritura: +%2. @@ -10526,293 +11947,352 @@ s V - + A - + mA - + kts - + m/s - + km/h - + mph - + m - + f - + °C - + °F - + % - + mAh - + W - + mW - + dB - + rpms - + g - + ° - + Rad - + hours - + horas minutes - + minutos seconds - + segundos - + + ml/minute + ml/minuto + + + TELE - - - - - Internal - - - - - External - + Setup + + Center beep Centro beep + + OFF - OFF + + + Model Image Imagen del modelo + + Exponential Exponencial + + Throttle Trim Idle Only - Trim de acelerador ajuste de ralentí + Trim acel. ralentí + + Extra Fine Extra Fino + + Fine Fino + + Medium Medio + + Coarse - Duro + Grueso + + Display Checklist - Lista verificación pantalla + Lista de verific. + + Timer 2 Temporizador 2 + + Timer 1 - Temporizador1 + Temporizador 1 + + Timer 3 - Temporizador3 + Temporizador 3 + + Never - + Nunca + + Top LCD Timer - + Temp. LCD superior + + On change - + Al cambiar + + Always - + Siempre + + Global Functions - + Funcs. globales + + Edit Checklist... - + Lista de verific... + + Throttle Source - Fuente del acelerador + Fuente acelerador + + Trim Step - Pasos de Trim + Paso de trim + + Trims Display - + Mostrar trims + + Warnings Avisos + + Switch Warnings - Avisos palancas (Switch) + Avisos interruptores + + Pot Warnings Avisos Potenciómetros + + Manual - + Manual + + Auto + + Model Modelo + + Extended Limits Límites extendidos + + Extended Trims Trims extendidos + + Throttle Warning Aviso acelerador + + Reverse throttle operation. If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. @@ -10824,31 +12304,33 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t + + Reverse Throttle - Invertir acelerador (Throttle) + Invertir acelerador SetupPanel - + Timer %1 - + Temporizador %1 - + THR - + - + Profile Settings - + Ajustes de perfil - + SD structure path not specified or invalid - + Ruta de la SD no especificada o no válida @@ -10856,7 +12338,7 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t Elevator Channel: - Canal Profundidad (Elevator): + Canal de profundidad: @@ -10865,203 +12347,203 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t screenshot Simulator LCD screenshot file name prefix - + captura ENTER - + INTRO S - + PG-UP - + RE PÁG PG-DN - + AV PÁG DEL - + SUPR BKSP - + RETR ESC - + 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>[ SHIFT ]</pre> - + <pre>[ UP ]</pre> - + <pre>[ DN ]</pre> - + <pre>[ <font size=+2>+</font> ]</pre> - + <pre>[ <font size=+2>-</font> ]</pre> - + <pre>[ PgUp ]</pre> - + <pre>[ PgDn ]</pre> - + <pre>[ MDL ]</pre> - + <pre>[ RTN ]</pre> - + <pre>[ SYS ]</pre> - + <pre>[ TELE ]</pre> - + <font size=+3>&#x2261;</font> - + @@ -11069,609 +12551,673 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t OpenTx Simulator - + Simulador de OpenTx Available profiles: - + Perfiles disponibles: ID: - + Name: - + Nombre: Available radios: - + Radios disponibles: Radio profile ID or Name to use for simulator. - + Perfil ID de radio o nombre a usar para simulador. profile - + perfil Radio type to simulate (usually defined in profile). - + Tipo de radio a simular (normalmente definido en el perfil). radio - + radio Directory containing the SD card image to use. The default is configured in the chosen Radio Profile. - + Directorio conteniendo la imagen de la tarjeta SD a usar. El predeterminado es configurado en el perfil de radio seleccionado. path - + ruta Data source type to use (applicable to Horus only). One of: - + Origen de datos a usar (sólo aplicable a Horus). Uno de: type - + tipo data-source - + origen-datos Radio data (.bin/.eeprom/.otx) image file to use OR data folder path (for Horus-style radios). NOTE: any existing EEPROM data incompatible with the selected radio type may be overwritten! - + Imagen de datos de radio (.bin/.eeprom/.otx) o carpeta (para radios estilo Horus) a usar. +NOTA: cualquier dato EEPROM incompatible con la radio seleccionada puede ser sobreescrito! [data-source] - + [origen-datos] Error: Profile ID %1 was not found. - + Error: Perfil ID %1 no encontrado. Unrecognized startup data source type: %1 - + Tipo de origen de datos de arranque desconocido: %1 WARNING: couldn't initialize SDL: %1 - + WARNING: No se puede inicializar SDL: +%1 ERROR: No simulator libraries available. - + ERROR: No hay librerías de simulador disponibles. ERROR: Couldn't start simulator, missing radio/profile/data file/folder. Profile ID: [%1]; Radio ID: [%2]; Data File: [%3] - + ERROR: No se puede iniciar el simulador, falta radio/perfil/datos ficheo/carpeta. + Perfil ID: [%1]; Radio ID: [%2]; +Archivo datos: [%3] ERROR: Radio profile or simulator firmware not found. Profile ID: [%1]; Radio ID: [%2] - + ERROR: Perfil de radio o firmware del simulador no encontrado. +Perfil ID: [%1]; Radio ID: [%2] Uknown error during Simulator startup. - + Error desconocido al iniciar el simulador. SimulatorMainWindow - + + OpenTx Simulator - + Simulador de OpenTX - + + View - + Vista - + + Radio Window - + Ventana de radio - + + Reload... - + Recargar... - + + Tools - + Herramientas - + + Toolbar - + Barra de herramientas - + + Reload Lua Scripts - + Recarga scripts Lua - + + Reload the Lua environment on the simulated radio. - + Recarga el entorno Lua en la simulación de la radio. - + + F7 - + - + + Reload Radio Data - + Recarga datos de radio - + + Reload all radio data without restarting the simulator. - + Recarga todos los datos de la radio sin reiniciar el simulador. - + + F9 - + - + + Key Mapping - + Mapa de teclas - + + Show keyboard maping reference. - + Muestra el mapa de teclas. - + + F1 - + - + + Joystick Settings - + Ajustes joystick - + + Open joystick configuration settings dialog. - + Abre la configuracíon de ajustes del joystick. - + + F3 - + - + + LCD Screenshot - + Captura LCD - + + Save a screenshot of the current simulated LCD screen. - + Guarda una captura de la simulación de la pantalla LCD. - + + F8 - + - + + Dock In Main Window - + Anclar en la ventana principal - + + Show the radio in the main window or as a separate "floating" window. - + Muestra la radio en la ventana principal o en una ventana "flotante" separada. - + + Menu Bar - + Barra superior - + + Show or hide the top menu bar. - + Muestra u oculta la barra superior. - + + Alt+M - + Alt+M - + + Constrain Width - + Restringir ancho - + + Set radio widget width to be a fixed size. - + Fija el ancho de widget de la radio a un tamaño fijo. - + + Constrain Height - + Restringir alto - + + Set radio widget height to be a fixed size. - + Fija el alto de widget de la radio a un tamaño fijo. ERROR: Failed to create simulator interface, possibly missing or bad library. - + ERROR: No se puede crear la interfaz de simulador, posiblemente falta o es erronea la librería. Alt+T - + Radio Outputs - + Salidas de radio F2 - + Telemetry Simulator - + Simulador de telemetría F4 - + Trainer Simulator - + Simulador de entrenador F5 - + Debug Output - + Salida de depuración F6 - + <b>Simulator Controls:</b> - + <b>Controles simulador:</b> <tr><th>Key/Mouse</th><th>Action</th></tr> note: must match html layout of each table row (keyTemplate). - + <tr><th>Tecla/Ratón</th><th>Acción</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 - + Ayuda simulador SimulatorStartupDialog - + + OpenTX Simulator - Startup Options - + Simulador de OpenTX - Opciones de arranque - + + Simulator Startup Options: - + Opciones de arranque del simulador: - + + Radio Profile: - + Perfil de radio: - + + Existing radio profiles are shown here.<br /> Create or edit profiles using the Companion application. - + Los perfiles de radio existentes se muestran aquí.<br /> +Crea o edita perfiles usando la aplicación de Companion. - + + Radio Type: - + Tipo de radio: - + + Existing radio simulators are shown here.<br /> The radio type specified in the selected profile is used by default. - + Los simuladores de radio existentes se muestran aquí.<br /> +Por defecto se us el tipo de radio especificado en en perfil seleccionado. - + + Data Source: - + Origen de datos: - + + Data File: - + Archivo de datos: - + + Data Folder: - + Carpeta de datos: - + + SD Image Path: - + Ruta de la imagen 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! - + Archivo de datos de la radio (.bin/.eeprom/.otx) a usar. Un nuevo archivo con imange predeterminada se creará si es necesario.<br /> +<b>NOTE</b>: cualquier EEPROM incompatible con la radio selccionada se sobreescribirá! - + + Select data file... - + Selecciona archivo de datos... - - - + + + + + + ... - + - + + Directory containing RADIO and MODELS folders to use.<br /> New folder(s) with default radio/model will be created here if necessary. - + Directorio conteniendo RADIO y MODELOS a usar.<br /> +Nuevas carpeta(s) con radio/modelo predeterminado se crearán aquí si es necesario. - + + Select data folder... - + Selecciona carpeta de datos... - + + Directory containing the SD card image to use.<br/> The default is configured in the chosen Radio Profile. - + Directorio que contiene la imagen de la tarjeta SD a usar.<br/> +El predeterminado es configurado en el Perfil de radio seleccionado. - + + Select SD card image folder... - + Selecciona la carpeta de la imagen de la tarjeta SD... - + + Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with. - + Selecciona el origen de datos (Archivo/carpeta/tarjata SD) con el que quieres iniciar el simulador. - + + File - Archivo + Archivo - + + Folder - + Carpeta - + + SD Path - + Ruta SD All files (*.*) - + Todos los ficheros (*.*) Select a data file - + Selecciona un archivo de datos Select Data Directory - + Selecciona directorio de datos Select SD Card Image Folder - + Selecciona carpeta de imágenes de la tarjeta SD SimulatorWidget - + + Companion Simulator - Simulador Companion + Simulador Companion Radio Simulator (%1) - + Simulador radio (%1) - + Could not determine startup data source. - + No se pueden determinar los datos de arranque. - + Could not load data, possibly wrong format. - + No se puede cargar datos, posiblemente formato erróneo. - + Data Load Error - + Error de carga de de datos - + Invalid startup data provided. Plese specify a proper file/path. - + Datos de inicio inválidos. Por favor specifica un archivo/ruta válido. - + Simulator Startup Error - + Error de arranque del simulador - + Error saving data: could open file for writing: '%1' - + Error salvando datos: no se puede abrir el archivo como escritura: '%1' - + Error saving data: could not get data from simulator interface. - + Error salvando datos: no se puede obtener datos de la interfaz del simulador. - + An unexpected error occurred while attempting to save radio data to file '%1'. - + Ha ocurrido un error inesperado al intentar guardar los datos de la radio al archivo '%1'. - + Data Save Error - + Error de guardado de datos - + Radio firmware error: %1 - + Error del firmware de la radio: %1 - + - Flight Mode %1 (#%2) - + - Modo de vuelo %1 (#%2) - + Cannot open joystick, joystick disabled - No se puede abrir el joystick, joystick desactivado + No se puede abrir el joystick, joystick desactivado @@ -11679,12 +13225,12 @@ The default is configured in the chosen Radio Profile. Right-double-click to reset to center. - + Doble click derecho para reiniciar el centro. <p>Value (input): <b>%1</b></p> - + <p>Valor (entrada): <b>%1</b></p> @@ -11692,18 +13238,22 @@ The default is configured in the chosen Radio Profile. + + + + ... Splash Library - page %1 of %2 - LIbreria de pantallas de inicio - página %1 de %2 + LIbrería de pantallas de inicio - página %1 de %2 Invalid image in library %1 - Imagen inválida en la librería %1 + Imagen no válida en la librería %1 @@ -11724,56 +13274,69 @@ The default is configured in the chosen Radio Profile. Unable to find file %1! - ¡No es posible encontrar el archivo %1! + ¡No se puede encontrar el archivo %1! StyleEditDialog + + Style Sheet Editor - + Editor de hoja de estilo + + &Reset to default - + &Reiniciar a los predeterminados + + &Cancel - + &Cancelar + + &OK - + + + This feature does not validate your changes and assumes you are familiar with CSS syntax for QT. - + Esta propiedad no valida tus cambios y asume que eres familiar con la sintaxis CSS para QT. Cannot retrieve style %1 Error: %2 - + No se puede obtener el estilo %1 +Error: %2 Cannot retrieve default style %1 Error: %2 - + No se puede obtener el estilo predeterminado %1 +Error: %2 Cannot update custom style %1 Error: %2 - + No se puede actualizar el estilo personalizado %1 +Error: %2 @@ -11781,47 +13344,47 @@ Error: %2 Style sheet data read from '%1' - + Hoja de estilo leída desde '%1' Style sheet data unable to be read from '%1' - + No se puede leer hoja de estilo desde '%1' Cannot create folder '%1' - + No se puede crear el directorio '%1' Cannot open file for writing '%1': Error: %2 - + No se puede abrir el archivo para escritura '%1': Error: %2 Cannot write to file '%1': Error: %2 - + No se puede escribir en el archivo '%1': Error: %2 Cannot flush buffer for file '%1': Error: %2 - + No se puede vaciar buffer para el archivo '%1': Error: %2 Style sheet written to '%1' - + Hoja de estilo escrita a '%1' Custom style sheet deleted: '%1' - + Hoja de estilo personalizada borrada: '%1' Unable to delete custom style sheet: '%1' - + No se puede borrar hoja de estilo personalizada: '%1' @@ -11829,141 +13392,145 @@ Error: %2 [TEST RUN] - + [TEST RUN] Synchronization failed, nothing found to copy. - + Sincronización fallida, no se ha encontrado nada para copiar. Skipping large file: %1 (%2KB) - + Omitiendo archivo largo: %1 (%2KB) Creating directory: %1 - + Creando directorio: %1 Could not create directory: %1 - + No se puede crear el directorio: %1 Gathering file information for %1... - + Reuniendo información del archivo para %1... No files found in %1 - + Ficheros no encontrados en %1 Synchronization aborted at %1 of %2 files. - + Sincronización abortada con %1 de %2 ficheros. Synchronization finished with %1 files in %2m %3s. - + Sincronización finalizada con %1 ficheros en %2m %3s. Synchronizing: %1 To: %2 - + Sincronizando: %1 + a: %2 Starting synchronization: %1 -> %2 - + Iniciando sincronización: + %1 -> %2 + Too many errors, giving up. - + +Demasiados errores, abortando. Skipping filtered file: %1 - + Omitiendo archivo filtrado: %1 Skipping linked file: %1 - + Omitiendo archivo linkado: %1 Aborted synchronization of: - + Sincronizacíon abortada de: Finished synchronizing: - + Sincronización finalizada: Created: %1; Updated: %2; Skipped: %3; Errors: %4; - + Creado: %1; Actualizado: %2; Omitido: %3; Errores: %4; Directory exists: %1 - + Existe el directorio: %1 At least one of the file modification dates is in the future, error on: %1 - + Al menos una de las fechas de modificación de los ficheros está en el futuro, error en: %1 Skipping older file: %1 - + Omitiendo fichero más antiguo: %1 Could not open source file '%1': %2 - + No se puede abrir el archivo de origen '%1': %2 Could not open destination file '%1': %2 - + No se puede abrir el archivo de destino '%1': %2 Skipping identical file: %1 - + Omitiendo archivo idéntico: %1 Replacing file: %1 - + Reemplazando archivo:; %1 Creating file: %1 - + Creando archivo: %1 Could not delete destination file '%1': %2 - + No se puede borrar el archivo de destino '%1': %2 Copy failed: '%1' to '%2': %3 - + Copia fallida: '%1' a '%2': %3 @@ -11976,12 +13543,12 @@ Too many errors, giving up. Elevator Channel: - Canal Profundidad (Elevator): + Canal de profundidad: Only one channel still available!<br>You probably should configure your model without using the wizard. - + ¡Sólo hay un canal disponible!<br>Deberías configurar el modelo sin el asistente. @@ -11994,7 +13561,7 @@ Too many errors, giving up. Only Elevator - Solo profundidad + Sólo profundidad @@ -12011,299 +13578,433 @@ Too many errors, giving up. Telemetry + + A1 + + A2 + + RSSI + + Alarm 1 Alarma 1 + + + + ---- + + + + Yellow Amarillo + + + + Orange Naranja + + + + Red Rojo + + Alarm 2 Alarma 2 + + Disable telemetry audio warnings - + Desactivar avisos de telemetría + + Source - + Fuente + + Center Silent - + Centro silencioso + + Altitude source - + Fuente de altitud + + Volts source - + Fuente de voltage + + Top Bar - + Barra superior + + Serial Protocol - Protocolo Serie + Protocolo serie + + Sensors - + Sensores + + Disable multi sensor handling - + Desactivar soporte sensor múltiple + + Volt source Fuente Voltaje + + Current source Fuente Actual + + Protocol Protocolo + + None Ninguno + + FrSky Sensor Hub - + FrSky Sensor Hub + + Blades Palas + + Sink Max - Descenso Máximo + Máximo descenso + + Climb Max - Máximo Ascenso + Máximo ascenso + + Sink Min - Descenso Mínimo + Mínimo descenso + + Climb Min - Mínimo Ascenso + Mínimo ascenso + + Vario source - Fuente Variómetro + Fuente variómetro + + Vario limits - Límites Variómetro + Límites variómetro + + Altimetry Altímetro + + mAh + + A + + Various Varios + + mAh count Valor mAh + + FAS Offset + + Persistent mAh - mAh Constantes + mAh constantes TelemetryAnalog + + Unit Unidad + + Max Value - Valor Máximo + Valor máx + + Alarm 1 Alarma 1 + + + + ---- + + + + Yellow Amarillo + + + + Orange Naranja + + + + Red Rojo + + + + < + + + + > + + Alarm 2 Alarma 2 + + Offset - Offset + + + Volts (V) Voltios (V) + + Amps (A) Amperios (A) + + Speed (m/s or ft/s) Velocidad (m/s o pies/s) + + Raw (-) + + Speed (km/h or miles/h) Velocidad (km/h o millas/h) + + Meters (m or ft) Metros (m o pies) + + Temp (°) - Temp (°) + + + Fuel (%) Combustible (%) + + mAmps (mA) miliAmperios (mA) @@ -12317,18 +14018,20 @@ Too many errors, giving up. TelemetryCustomScreen + + Custom Screen Type Personalizar tipo pantalla None - Ninguno + Ninguno Numbers - + Números @@ -12338,25 +14041,33 @@ Too many errors, giving up. Script - + Script + + Min Mínimo + + Source Fuente + + Gauge Medida + + Max Máximo @@ -12364,104 +14075,104 @@ Too many errors, giving up. TelemetryPanel - + FrSky S.PORT - + FrSky D - + FrSky D (cable) - + Telemetry screen %1 Pantalla telemetría %1 - + Source - + Fuente - + Low Alarm - Alarma Baja + 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 - + VelocVert - - - + + + A1 - - - + + + A2 - - + + A3 - - + + A4 - - + + FAS - + Cells - + Celdas - + --- @@ -12470,448 +14181,649 @@ Too many errors, giving up. TelemetrySensor + + Form - - - - - Custom - A medida - - - - Calculated - + Form + + + Custom + Personalizado + + + + + + Calculated + Calculado + + + + + Id - + - + + + Instance - + Instancia - + + + Rx - + - - Mod. - - - - + + + Add - + Suma - + + + Average - + Media - + + + Min - + Mín - + + + Max - + Máx - + + + Multiply - + Multiplicar - + + + Totalize - + Total - + + + Cell - + Celda - + + + Consumption - + Consumo - + + + Dist - + Distancia - + + + Cells Sensor : - + Sensor celdas : - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + --- - --- + - + + + GPS Sensor : - + Sensor GPS: - + + + Alt. Sensor : - + Sensor alt: - + + + 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 (-) - + - + + + + TELE## + + + + + + RPM - + - + + + + ml/min + + + + + + Precision - + Precisión - + + + Ratio - + Ratio - + + + Blades - Palas + Palas - + + + Offset - Offset + Offset - + + + Multiplier - + - + + + Auto Offset - + - + + + Filter - + Filtro - + + + Persistent - + Persistente - + + + Positive - Positivo + Positivo - + + + Logs - + TelemetrySensorPanel - + + TELE%1 + + + + + Popup menu available + Menú desplegable disponible + + + Lowest - + Menor - + Cell %1 - + Celda %1 - + Highest - + Mayor - + Delta - + + + + + Copy + Copiar + + + + Cut + Cortar + + + + Paste + Pegar + + + + Clear + Limpiar + + + + Clear All + Limpiar todo + + + + Clear Telemetry Sensor. Are you sure? + Limpiar el sensor de telemetría ¿Estás seguro? + + + + Clear all Telemetry Sensors. Are you sure? + Limpiar todos los sensores de telemetría ¿Estás seguro? TelemetrySimulator - + + Telemetry Simulator - + Simulador de telemetría - + + VFAS - + - + + RSSI - + - + + A1 - + - + + A2 - + - + + Simulate - Simular + Simular - + + Replay SD Log File - + Reproducir archivo SD de reporte - + + Replay rate - + Velocidad de reproducción - + + Load - + Cargar - + + |> - + - + + <| - + - + + > - + - + + <- - + - + + X - + - + + Row # Timestamp - + Col # +Tiempo - + + 1/5x - 1/5x + - + + 5x - 5x + - + + No Log File Currently Loaded - + Actualmente no hay cargado archivo de reporte - + + RAS - + - - - + + + + + + V / ratio - + - + + Db - + - + + RxBt - + @@ -12927,274 +14839,331 @@ Timestamp - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + <html><head/><body><p><br/></p></body></html> - + - + + Tmp1 - + Temporizador 1 - + + A3 - + - + + A4 - + - + + Tmp2 - + Temporizador 2 - + + Fuel - Combustible + Combustible - - + + + + °C - + - + + ml - + - + + % - + - - + + + + Meters - + Metros - + + Alt - + - + + VSpd - + VelocVertical - + + m/s - + - + + Fuel Qty - + Cant. combust. - - + + + + km/h - + - + + Hdg - + - + + ASpd - + VelocAire - - - + + + + + + G - + - + + GPS - + - + + Lat,Lon (dec.deg.) - + - + + AccX - + - + + dd-MM-yyyy hh:mm:ss - + - + + Date - + Fecha - + + Amps - + - + + AccZ - + - + + GAlt - + - - + + + + Volts - + Voltios - + + Cels - + Celdas - + + Curr - + - + + AccY - + - + + GSpd - + VelocTierra - + + Degrees - + Grados - + + Setting RSSI to zero simulates telemetry and radio link loss. - + Fijando RSSI a cero simula pérdida de telemetría y conexión con la radio. - + + Set RSSI to zero when paused. - + Fijar RSSI a cero en pausa. - + + Stop sending telemetry data when the Telemetry Simulator window is hidden. - + Para de enviar datos de telemetría cuado el simulador esté oculto. - + + Pause simulation when hidden. - + Pausar simulación cuando se oculte. - - + + + + RPM - + - + + When enabled, sends any non-blank values as simulated telemetry data. - + Cuando está activado, envía valores no vacíos como datos de telemetría simulados. Log File - + Archivo Log LOG Files (*.csv) - + Ficheros LOG (*.csv) ERROR - invalid file - + ERROR - archivo no válido @@ -13202,30 +15171,34 @@ hh:mm:ss Yes - Si + Sí No - No + <br>Throttle Channel: - <br>Canal de Acelerador: + <br>Canal de acelerador: Timer + + Countdown - Cuenta Atrás + Cuenta atrás + + Minute Call - Cada Minuto + Cada minuto @@ -13233,12 +15206,12 @@ hh:mm:ss TMR - + Timer %1 - + Temporizador %1 @@ -13247,22 +15220,23 @@ hh:mm:ss Use mouse scroll or UP/DOWN arrow keys to change time in small steps. CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. - + Usar el scroll del ratón o teclas ARRIBA/ABAJO para cambiar el tiempo en pequeños pasos. +CTRL + scroll o AV/RE PÁG para cambiar el tiempo en pasos grandes. m - + h - + s - + @@ -13285,7 +15259,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Haptic - Reproducir Haptic + @@ -13307,28 +15281,38 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Trainer + + Form - + + + Mode - Modo + Modo + + Input - Entrada + Entrada + + Weight - + Peso + + Rud - Rud + @@ -13339,6 +15323,22 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. + + + + + + + + + + + + + + + + Beeper volume 0 - Quiet. No beeps at all. @@ -13346,10 +15346,10 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. 2 - Normal. 3 - Loud. 4 - Extra loud. - Volumen Beeper + Volumen Beeper 0 - Silencio. Ningun tipo de beep. -1 - Sin teclas. Los beeps suenan normal pero las teclas de menu no sonarán. +1 - No teclas. Los beeps suenan normal pero las teclas de menú no sonarán. 2 - Normal. 3 - Alto. 4 - Extra Alto. @@ -13359,80 +15359,143 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. + + + + + + + + Off - Apagado + Apagado + + + + + + + + += (Sum) - + += (Suma) + + + + + + + + := (Replace) - := (Reemplazar) + := (Reemplazar) + + + + + + + + chn1 - + + + + + + + + + chn2 - + + + + + + + + + chn3 - + + + + + + + + + chn4 - + + + Ele - Ele + + + Thr - Thr + + + Ail - Ail + TrainerSimulator - + + Trainer simulator - + Simulador de entrenador @@ -13440,34 +15503,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Index - + Índice Name - Nombre + Nombre Size - + Tamaño RX # - + Models Translators do NOT use accent for this, this is the default category name on Horus. - + Modelos Model %1 Translators: do NOT use accents here, this is a default model name. - + Modelo %1 @@ -13475,12 +15538,12 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. First Tail Channel: - Primer Canal de cola: + Primer canal de cola: Second Tail Channel: - Segundo Canal de cola: + Segundo canal de cola: @@ -13488,42 +15551,42 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Hld Y - + Hold Vertical stick position. - + Mantener la posición vertical del stick. Fix Y - Fijar Y + Fijar Y Prevent Vertical movement of stick. - + Evitar el movimiento vertical del stick. Fix X - Fijar X + Fijar X Prevent Horizontal movement of stick. - + Evitar el movimiento horizontal del stick. Hld X - + Hold Horizontal stick position. - + Mantener la posición horizontal del stick. @@ -13531,7 +15594,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Standard Wing - Ala estandar + Ala estándar @@ -13589,7 +15652,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Flaps - + Flaps @@ -13681,7 +15744,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Rotor Type - Tipo Rotor + Tipo rotor @@ -13703,7 +15766,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Multirotor - + Multirotor @@ -13728,7 +15791,7 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Manually check the direction of each control surface and reverse any channels that make controls move in the wrong direction. Remove the propeller/propellers before you try to control your model for the first time.<br>Please note that continuing removes all old model settings! - Comprobar manualmente la dirección de cada control de superficie y los reversos de cualquier canal para que el control de movimiento no se erroneo. Saca la hélice/hélices antes de intentar controlar tu modelo por primera vez.<br> ¡Por favor tenga en cuenta eliminar los ajustes viejos! + Comprobar manualmente la dirección de cada control de superficie y los reversos de cualquier canal para que el control de movimiento no sea erróneo. Saca la hélice/hélices antes de intentar controlar tu modelo por primera vez.<br> ¡Por favor ten en cuenta que continuar eliminar los ajustes anteriores del modelo! @@ -13743,17 +15806,17 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Most aircraft have a main wing and a tail with control surfaces. Flying wings and delta winged aircraft only have a single wing. The main control surface on a standard wing controls the roll of the aircraft. This surface is called an aileron.<br>The control surface of a delta wing controls both roll and pitch. This surface is called an elevon. - La mayoría de los aviones tienen un ala principal y una cola con controles de superficie. Volando alas y alas delta solo hay un ala simple. El control principal de superficie en un ala estandar controla el alabeo del avión. Esta superficie se llama alerón.<br> El control de superficie de un ala delta controla ambos alabeo y cabeceo. Esta superficie se llama elevon. + La mayoría de los aviones tienen un ala principal y una cola con controles de superficie. Volando alas y alas delta sólo hay un ala simple. El control principal de superficie en un ala estandar controla el alabeo del avión. Esta superficie se llama alerón.<br> El control de superficie de un ala delta controla ambos alabeo y cabeceo. Esta superficie se llama elevon. Models use one or two channels to control the ailerons.<br>A so called Y-cable can be used to connect a single receiver channel to two separate aileron servos. If your servos are connected by a Y-cable you should select the single-servo option.<br><br>Aileron - Spektrum: CH2, Futaba: CH1 - Los modelos usan 1 o 2 canales para controlar los alerones.<br>Un cable en Y se puede usar para conectar un solo canal del receptor a dos servos separados de los alerones. Si usas servos conectados por un cable Y debes seleccionar la opcion de servo único.<br><br> Alerón Spektrum: CH2, Futaba CH1 + Los modelos usan 1 o 2 canales para controlar los alerones.<br>Un cable en Y se puede usar para conectar un sólo canal del receptor a dos servos separados de los alerones. Si usas servos conectados por un cable Y debes seleccionar la opcion de servo único.<br><br> Alerón - Spektrum: CH2, Futaba CH1 This wizard assumes that your flaps are controlled by a switch. If your flaps are controlled by a potentiometer you can change that manually later. - Este asistente asume que tus flaps estan controlados por un switch. Si tus flaps están controlados por un potenciómetro lo puedes cambiar manualmente mas tarde. + Este asistente asume que tus flaps estan controlados por un interruptor. Si tus flaps están controlados por un potenciómetro lo puedes cambiar manualmente más tarde. @@ -13833,12 +15896,12 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. Model Name: - Nombre Modelo: + Nombre modelo: Model Type: - Tipo Modelo: + Tipo Modelo: @@ -13855,17 +15918,23 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. burnConfigDialog + + AVRDUDE Location - Localización AVRDUDE + Ubicación AVRDUDE + + Location of AVRDUDE executable Locatioon of AVRDUDE executable - Localización del ejecutable AVRDUDE + Ubicación del ejecutable AVRDUDE + + Programmer Configuration Configuration AVRDUDE / SAM-BA Configuración del programador @@ -13875,36 +15944,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps. + + + + + + + + The location of the AVRDUDE executable. The location of the AVRDUDE.EXE executable. - La localización del ejecutable AVRDUDE. + La ubicación del ejecutable AVRDUDE. + + DFU-Util Location - Localización de la utilidad DFU + Ubicación de la utilidad DFU + + + + + + Use this button to browse and look for the AVRDUDE executable file. - Usa este botón para explorar y mirar el archivo ejecutable de AVRDUDE. + Usa este botón para explorar y ver el archivo ejecutable de AVRDUDE. + + + + + + Browse... Explorar... + + Programmer Programador + + Programmer used for communicating with the controller. Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer. Programador usado para la comunicación con el controlador. @@ -13912,23 +16007,35 @@ Por favor consulta la documentacion del programador y la documentación de AVRDU + + List all available programmers. Lista todos los programadores disponibles. + + List Available - Listado Disponibles + Listado disponibles + + + + Extra arguments that will be passed to AVRDUDE on every call - Argumentos extras que deben pasar a AVRDUDE en cada llamada + Argumentos extra que deben pasar a AVRDUDE en cada llamada + + + + Extra arguments used in AVRDUDE. This can be used for providing extra information to AVRDUDE. @@ -13940,69 +16047,99 @@ Por favor solamente usa esto si sabes lo que estás haciendo. No hay control de + + Extra Arguments Argumentos extra + + Show AVRDUDE help Mostrar la ayuda de AVRDUDE + + Show Help - Mostrar Ayuda + Mostrar ayuda + + Communication port to the programmer. Puerto de comunicaciones al programador. + + MCU + + at91sam3s8-9xr + + Alternate device Dispositivo alternativo + + Use advanced controls Usar controles avanzados + + + + Port Puerto + + SAM-BA Location - Localizacon SAM-BA + Ubicación SAM-BA + + + + Location of sam-ba executable - Localización del ejecutable sam-ba + Ubicación del ejecutable sam-ba + + ARM MCU + + sam-ba serial port Puerto serie sam-ba @@ -14026,32 +16163,40 @@ Por favor solamente usa esto si sabes lo que estás haciendo. No hay control de Select Location - Seleccionar localización + Seleccionar ubicación List available programmers - Lista de programadores disponibles + Lista de programadores disponibles Avrdude help - + Ayuda Avrdude <b><u>WARNING!</u></b><br>Normally CPU type is automatically selected according to the chosen firmware.<br>If you change the CPU type the resulting eeprom could be inconsistent. - <b><u>¡AVISO!</u></b><br>Normalmente el tipo de CPU ees automáticamente elegida para el tipo de firmware.<br>Si cambias el tipo de CPU el eeprom resultante podria ser inconsistente. + <b><u>¡AVISO!</u></b><br>Normalmente el tipo de CPU es automáticamente elegida para el tipo de firmware.<br>Si cambias el tipo de CPU el eeprom resultante podría ser inconsistente. + + + + CPU of your TX - CPU a tu TX + CPU de tu TX + + + + CPU present on your 9x radio Should be m64 for stock radios m2560 for v4.1 boards @@ -14064,87 +16209,101 @@ m2560 para las placas v4.1 joystickDialog - + + Configure Joystick - Configurar Joystick + Configurar joystick - + + Ch2 - + + Ch1 - + + Ch4 - + + Ch6 - + + Ch3 - + + Ch5 - + + Ch7 - + + Ch8 - + + Instructions Instrucciones - + + Enable - + Activar - + + Cancel Cancelar - + + Back - + Atrás - + + Start - Comenzar + Inicio @@ -14153,29 +16312,30 @@ m2560 para las placas v4.1 - + + Ok Not Assigned - + No asignado Stick - + Knob/Slider %1 - + Knob/Slider %1 No joysticks found - No se han encopntrado joysticks + No se han encontrado joysticks @@ -14186,158 +16346,48 @@ m2560 para las placas v4.1 Press the Start button to start the stick range calibration procedure. You may change the channel assignments or inversion at any time. - + Presiona el botón Inicio para empezar el procedimiento de calibración de los stick +Puedes cambiar la asinación de canales o inversión en cualquier momento. Move sticks and pots in every direction making full movement Press Next when finished - + Mueve los sticks y pots hasta el final en todas las direcciones +Presiona Siguiente al finalizar Place sticks and pots in middle position. Press Next when done - + Mueve los sticks y pots a la posición central +Presiona Siguiente al finalizar Map joystick channels to controls using comboboxes. Press Next when done. - + Mapea los canales de joystick a los controles usando las listas deplegables +Presiona Siguiente al finalizar. Check inversion checkbox to if necessary to reverse direction. Press Next when done. - + Revisa la casilla de inversión si es necesario invertir la dirección. +Presiona Siguiente cuando finalices. Press OK to save configuration Press Cancel to abort joystick calibration without saving. - + Presiona OK oara guardar la configuración +Presiona Cancelar para abortar la calibración del joystick sin guardar. Calibration not complete, save anyway? - - - - - preferencesDialog - - - Preferences - Preferencias - - - - Simulator capture folder - Carpeta de captura de simulador - - - - Use clipboard only - Usar sólo portapapeles - - - - - ... - - - - - Splash library behaviour - Libreria de pantallas de inicio - - - - Remember simulator switches - Recordar los switch en el simulador - - - - Include companion splashes - Incluir pantallas de inicio de companion - - - - Only user defined splashes - Solo pantallas de inicio definidas por el usuario - - - - Custom TX splash screen - Pantalla de inicio personalizada del TX - - - - Personal splash library - Pantallas de inicio personales - - - - Joystick - - - - - - Open Folder - Abrir Carpeta - - - - Blue - Blu - Azul - - - - Simu BackLight - Luz de fondo del simulador - - - - Green - Verde - - - - Red - Rojo - - - - Orange - Naranja - - - - Yellow - Amarillo - - - - Enable - Activado - - - - Calibrate - Calibrar - - - - Open Image - Abrir Imagen - - - - Invert Pixels - Ivertir Pixeles + Calibración incompleta, ¿guardar? From 70507779a8608dadf054e62520f62e2af82a81a1 Mon Sep 17 00:00:00 2001 From: Neil Horne Date: Mon, 4 May 2020 22:44:33 +1000 Subject: [PATCH 151/199] Option to prompt for radio profile on companion start (#7565) * Optional prompt for radio profile on companion start * Sort out timings and use std appdata function * Change dialog title --- companion/src/CMakeLists.txt | 3 + companion/src/apppreferencesdialog.cpp | 2 + companion/src/apppreferencesdialog.ui | 561 +++++++++++++------------ companion/src/mainwindow.cpp | 38 +- companion/src/mainwindow.h | 1 + companion/src/profilechooser.cpp | 62 +++ companion/src/profilechooser.h | 47 +++ companion/src/profilechooser.ui | 110 +++++ companion/src/storage/appdata.h | 1 + 9 files changed, 541 insertions(+), 284 deletions(-) create mode 100644 companion/src/profilechooser.cpp create mode 100644 companion/src/profilechooser.h create mode 100644 companion/src/profilechooser.ui diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 14f24ccba..016d962a6 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -250,6 +250,7 @@ set(companion_SRCS wizarddialog.cpp styleeditdialog.cpp dialogs/filesyncdialog.cpp # TODO move to own lib with other dialogs + profilechooser.cpp ) set(companion_MOC_HDRS @@ -284,6 +285,7 @@ set(companion_MOC_HDRS styleeditdialog.h helpers_html.h dialogs/filesyncdialog.h + profilechooser.h ) set(companion_UIS @@ -305,6 +307,7 @@ set(companion_UIS flasheepromdialog.ui radionotfound.ui styleeditdialog.ui + profilechooser.ui ) if(WIN32) diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index e3817a9ba..c235788df 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -73,6 +73,7 @@ void AppPreferencesDialog::accept() g.OpenTxBranch(AppData::DownloadBranchType(ui->OpenTxBranch->currentIndex())); g.autoCheckFw(ui->autoCheckFirmware->isChecked()); g.showSplash(ui->showSplash->isChecked()); + g.promptProfile(ui->chkPromptProfile->isChecked()); g.simuSW(ui->simuSW->isChecked()); g.removeModelSlots(ui->opt_removeBlankSlots->isChecked()); g.newModelAction(ui->opt_newMdl_useWizard->isChecked() ? AppData::MODEL_ACT_WIZARD : ui->opt_newMdl_useEditor->isChecked() ? AppData::MODEL_ACT_EDITOR : AppData::MODEL_ACT_NONE); @@ -185,6 +186,7 @@ void AppPreferencesDialog::initSettings() ui->autoCheckCompanion->setChecked(g.autoCheckApp()); ui->autoCheckFirmware->setChecked(g.autoCheckFw()); ui->showSplash->setChecked(g.showSplash()); + ui->chkPromptProfile->setChecked(g.promptProfile()); ui->historySize->setValue(g.historySize()); ui->backLightColor->setCurrentIndex(g.backLight()); ui->volumeGain->setValue(profile.volumeGain() / 10.0); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index 9ed6d0e4c..80301223d 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -6,7 +6,7 @@ 0 0 - 741 + 864 668 @@ -722,32 +722,21 @@ Mode 4: 6 - - - - - - Automatic check for OpenTX firmware updates - - - true - - - - - - - Automatic check for Companion updates - - - true - - - - + + + + + 0 + 0 + + + + Enable automatic backup before writing firmware + + - - + + 0 @@ -755,7 +744,66 @@ Mode 4: - Startup Settings + Google Earth Executable + + + + + + + + 0 + 0 + + + + + Releases (stable) + + + + + Release candidates (testing) + + + + + Nightly builds (unstable) + + + + + + + + + 0 + 0 + + + + + Only show user splash images + + + + + Show user and companion splash images + + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal @@ -795,76 +843,27 @@ Mode 4: - - - - - 0 - 0 - - - - Automatic Backup Folder - - - - - - - - 0 - 0 - - - - Google Earth Executable - - - - Show splash screen when Companion starts + Show splash screen true - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - Remember - - - - - + + - - + + true - - false - - + 0 @@ -872,127 +871,13 @@ Mode 4: - Select Folder + Select Executable - - - - - - false - - - - - - - - 0 - 0 - - - - Select Folder - - - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - Debug Output Logging - - - - - - - - 0 - 0 - - - - Enable automatic backup before writing firmware - - - - - - <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) - - - - - - - - 0 - 0 - - - - Output Logs Folder - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - - Only show user splash images - - - - - Show user and companion splash images - - - - - - - - Qt::Horizontal - - - - @@ -1026,38 +911,17 @@ Mode 4: - - + + - - - true - + false - - - Select Folder - - - - - - - - - - - true - - - - - + 0 @@ -1065,13 +929,62 @@ Mode 4: - Select Executable + Select Folder - + + + + + 0 + 0 + + + + Remember + + + + + + + + 0 + 0 + + + + Output Logs Folder + + + + + + + + 0 + 0 + + + + Startup Settings + + + + + + + <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) + + + + @@ -1084,47 +997,7 @@ Mode 4: - - - - Release channel - - - - - - - - 0 - 0 - - - - Splash Screen Library - - - - - - - - 0 - 0 - - - - Action on New Model - - - - - - - Qt::Horizontal - - - - + @@ -1148,29 +1021,163 @@ Mode 4: - - + + + + + + true + + + false + + + + + + + Select Folder + + + + + + + - + 0 0 + + Action on New Model + + + + + - - Releases (stable) - + + + true + + + false + + - - Release candidates (testing) - + + + + 0 + 0 + + + + Select Folder + + + + + + + + + + 0 + 0 + + + + Splash Screen Library + + + + + + + Release channel + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + Debug Output Logging + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + Automatic Backup Folder + + + + + + + + + Automatic check for OpenTX firmware updates + + + true + + - - Nightly builds (unstable) - + + + Automatic check for Companion updates + + + true + + + + + + + + Qt::Horizontal + + + + + + + Prompt for radio profile + diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 06760fb41..2c230000b 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -49,6 +49,7 @@ #include "translations.h" #include "dialogs/filesyncdialog.h" +#include "profilechooser.h" #include #include @@ -130,10 +131,16 @@ MainWindow::MainWindow(): else { if (!g.previousVersion().isEmpty()) g.warningId(g.warningId() | AppMessages::MSG_UPGRADED); - if (checkProfileRadioExists(g.sessionId())) - QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates())); - else - g.warningId(g.warningId() | AppMessages::MSG_NO_RADIO_TYPE); + if (g.promptProfile()) { + QTimer::singleShot(updateDelay, this, SLOT(chooseProfile())); // add an extra second to give mainwindow time to load + updateDelay += 5000; // give user time to select profile before warnings + } + else { + if (checkProfileRadioExists(g.sessionId())) + QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates())); + else + g.warningId(g.warningId() | AppMessages::MSG_NO_RADIO_TYPE); + } } QTimer::singleShot(updateDelay, this, SLOT(displayWarnings())); @@ -468,7 +475,7 @@ void MainWindow::checkForFirmwareUpdateFinished(QNetworkReply * reply) const QString errorString = seekCodeString(qba, "ERROR"); const QString blockedRadios = seekCodeString(qba, "BLOCK"); long version; - + if (errorString == "NO_RC") return onUpdatesError(tr("No firmware release candidates are currently being served for this version, please switch release channel")); else if (errorString == "NO_NIGHTLY") @@ -481,7 +488,7 @@ void MainWindow::checkForFirmwareUpdateFinished(QNetworkReply * reply) msgbox.setText(tr("Release candidate builds are now available for this version, would you like to switch to using them?")); msgbox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgbox.setDefaultButton(QMessageBox::Yes); - + if(msgbox.exec() == QMessageBox::Yes) { g.OpenTxBranch(AppData::DownloadBranchType(AppData::BRANCH_RC_TESTING)); return onUpdatesError(tr("Channel changed to RC, please restart the download process")); @@ -493,7 +500,7 @@ void MainWindow::checkForFirmwareUpdateFinished(QNetworkReply * reply) msgbox.setText(tr("Official release builds are now available for this version, would you like to switch to using them?")); msgbox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgbox.setDefaultButton(QMessageBox::Yes); - + if(msgbox.exec() == QMessageBox::Yes) { g.OpenTxBranch(AppData::DownloadBranchType(AppData::BRANCH_RELEASE_STABLE)); return onUpdatesError(tr("Channel changed to Release, please restart the download process")); @@ -1807,3 +1814,20 @@ void MainWindow::autoClose() { this->close(); } + +void MainWindow::chooseProfile() +{ + QMap active; + active = g.getActiveProfiles(); + if (active.size() > 1) { + ProfileChooserDialog *pcd = new ProfileChooserDialog(this); + connect(pcd, &ProfileChooserDialog::profileChanged, this, &MainWindow::loadProfileId); + pcd->exec(); + delete pcd; + // doi here as need to wait until dialog dismissed and current radio type is set + if (checkProfileRadioExists(g.sessionId())) + doAutoUpdates(); + else + g.warningId(g.warningId() | AppMessages::MSG_NO_RADIO_TYPE); + } +} diff --git a/companion/src/mainwindow.h b/companion/src/mainwindow.h index 222c047e0..9369dacac 100644 --- a/companion/src/mainwindow.h +++ b/companion/src/mainwindow.h @@ -128,6 +128,7 @@ class MainWindow : public QMainWindow void exportSettings(); void importSettings(); void autoClose(); + void chooseProfile(); void openUpdatesWaitDialog(); void closeUpdatesWaitDialog(); diff --git a/companion/src/profilechooser.cpp b/companion/src/profilechooser.cpp new file mode 100644 index 000000000..17a9570e5 --- /dev/null +++ b/companion/src/profilechooser.cpp @@ -0,0 +1,62 @@ +/* + * 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 "profilechooser.h" +#include "ui_profilechooser.h" +#include "appdata.h" + +ProfileChooserDialog::ProfileChooserDialog(QWidget * parent): + QDialog(parent), + ui(new Ui::ProfileChooserDialog) +{ + ui->setupUi(this); + setWindowIcon(QIcon(":/icon.png")); + QComboBox *prof = ui->cboProfiles; + prof->clear(); + + QMap active; + active = g.getActiveProfiles(); + QMapIterator i(active); + while (i.hasNext()) { + i.next(); + prof->addItem(i.value(), i.key()); + } + + prof->setSizeAdjustPolicy(QComboBox::AdjustToContents); + prof->setCurrentIndex(prof->findData(g.id())); + connect(prof, SIGNAL(currentIndexChanged(int)), this, SLOT(on_cboProfilesCurrentIndexChanged(int))); +} + +ProfileChooserDialog::~ProfileChooserDialog() +{ + delete ui; +} + +void ProfileChooserDialog::on_cboProfilesCurrentIndexChanged(int index) +{ + QComboBox *prof = ui->cboProfiles; + + if ((prof->currentIndex() > -1)) { + int oldid = g.id(); + int newid = prof->currentData().toInt(); + if (oldid != newid) + emit profileChanged(newid); + } +} diff --git a/companion/src/profilechooser.h b/companion/src/profilechooser.h new file mode 100644 index 000000000..b40e6b359 --- /dev/null +++ b/companion/src/profilechooser.h @@ -0,0 +1,47 @@ +/* + * 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 _PROFILECHOOSER_H_ +#define _PROFILECHOOSER_H_ + +#include + +namespace Ui { + class ProfileChooserDialog; +} + +class ProfileChooserDialog : public QDialog +{ + Q_OBJECT + + public: + ProfileChooserDialog(QWidget * parent = 0); + ~ProfileChooserDialog(); +signals: + void profileChanged(int newid); + + private slots: + void on_cboProfilesCurrentIndexChanged(int index); + + private: + Ui::ProfileChooserDialog *ui; +}; + +#endif // _PROFILECHOOSER_H_ diff --git a/companion/src/profilechooser.ui b/companion/src/profilechooser.ui new file mode 100644 index 000000000..10a6d6bbe --- /dev/null +++ b/companion/src/profilechooser.ui @@ -0,0 +1,110 @@ + + + ProfileChooserDialog + + + + 0 + 0 + 352 + 102 + + + + + 0 + 0 + + + + Select Profile + + + + + 20 + 20 + 311 + 66 + + + + + + + + + + 0 + 0 + + + + Profile + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + false + + + + + + + + + + buttonBox + accepted() + ProfileChooserDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ProfileChooserDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/companion/src/storage/appdata.h b/companion/src/storage/appdata.h index 3ffa7d688..a17b9c1ce 100644 --- a/companion/src/storage/appdata.h +++ b/companion/src/storage/appdata.h @@ -575,6 +575,7 @@ class AppData: public CompStoreObj PROPERTY4(bool, snapToClpbrd, "snapshot_to_clipboard", false) PROPERTY4(bool, autoCheckApp, "startup_check_companion", true) PROPERTY4(bool, autoCheckFw, "startup_check_fw", true) + PROPERTY4(bool, promptProfile, "startup_prompt_profile", false) PROPERTY(bool, enableBackup, false) PROPERTY(bool, backupOnFlash, true) From 0e2b4e0a3fded9f0347ca1decb69e6a5a04295de Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 4 May 2020 15:46:43 +0200 Subject: [PATCH 152/199] Improve TX16s UARTS (#7568) * Rework TX16s UARTs * Rework TX16s UARTs --- .../common/arm/stm32/aux_serial_driver.cpp | 2 +- radio/src/targets/horus/hal.h | 59 ++++++++----------- radio/src/telemetry/frsky.h | 7 ++- 3 files changed, 30 insertions(+), 38 deletions(-) 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 38d7006d7..58f27fed5 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -104,7 +104,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol) break; } #endif - auxSerialSetup(FRSKY_SPORT_BAUDRATE, false); + auxSerialSetup(FRSKY_TELEM_MIRROR_BAUDRATE, false); break; #if defined(DEBUG) || defined(CLI) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 063daae68..c37f1ba54 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -392,7 +392,7 @@ #endif // Serial Port (DEBUG) -#if defined(PCBX12S) +#if defined(PCBX12S) || defined(RADIO_TX16S) #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1) #define AUX_SERIAL_RCC_APB1Periph RCC_APB1Periph_USART3 #define AUX_SERIAL_RCC_APB2Periph 0 @@ -407,47 +407,34 @@ #define AUX_SERIAL_USART_IRQn USART3_IRQn #define AUX_SERIAL_DMA_Stream_RX DMA1_Stream1 #define AUX_SERIAL_DMA_Channel_RX DMA_Channel_4 -#elif defined(RADIO_TX16S) && !defined(BLUETOOTH) - #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_DMA2) - #define AUX_SERIAL_RCC_APB1Periph 0 - #define AUX_SERIAL_RCC_APB2Periph RCC_APB2Periph_USART6 - #define AUX_SERIAL_USART USART6 - #define AUX_SERIAL_GPIO_AF GPIO_AF_USART6 - #define AUX_SERIAL_USART_IRQn USART6_IRQn - #define AUX_SERIAL_GPIO GPIOG - #define AUX_SERIAL_GPIO_PIN_TX GPIO_Pin_14 // PG.14 - #define AUX_SERIAL_GPIO_PIN_RX GPIO_Pin_9 // PG.09 - #define AUX_SERIAL_GPIO_PinSource_TX GPIO_PinSource14 - #define AUX_SERIAL_GPIO_PinSource_RX GPIO_PinSource9 - #define AUX_SERIAL_USART_IRQHandler USART6_IRQHandler - #define AUX_SERIAL_DMA_Stream_RX DMA2_Stream6 - #define AUX_SERIAL_DMA_Channel_RX DMA_Channel_5 - #define AUX_SERIAL_PWR_GPIO GPIOB - #define AUX_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 - #define TRAINER_BATTERY_COMPARTMENT - - #define AUX2_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1) - #define AUX2_SERIAL_PWR_GPIO GPIOA - #define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_15 // PA.15 - #define AUX2_SERIAL_RCC_APB1Periph RCC_APB1Periph_USART3 - #define AUX2_SERIAL_RCC_APB2Periph 0 - #define AUX2_SERIAL_GPIO GPIOB - #define AUX2_SERIAL_GPIO_PIN_TX GPIO_Pin_10 // PB.10 - #define AUX2_SERIAL_GPIO_PIN_RX GPIO_Pin_11 // PB.11 - #define AUX2_SERIAL_GPIO_PinSource_TX GPIO_PinSource10 - #define AUX2_SERIAL_GPIO_PinSource_RX GPIO_PinSource11 - #define AUX2_SERIAL_GPIO_AF GPIO_AF_USART3 - #define AUX2_SERIAL_USART USART3 - #define AUX2_SERIAL_USART_IRQHandler USART3_IRQHandler - #define AUX2_SERIAL_USART_IRQn USART3_IRQn - #define AUX2_SERIAL_DMA_Stream_RX DMA1_Stream1 - #define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_4 +#if defined(RADIO_TX16S) + #define TRAINER_BATTERY_COMPARTMENT // allows serial port TTL trainer +#endif #else #define AUX_SERIAL_RCC_AHB1Periph 0 #define AUX_SERIAL_RCC_APB1Periph 0 #define AUX_SERIAL_RCC_APB2Periph 0 #endif +#if defined(RADIO_TX16S) && !defined(BLUETOOTH) + #define AUX2_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_DMA2) + #define AUX2_SERIAL_RCC_APB1Periph 0 + #define AUX2_SERIAL_RCC_APB2Periph RCC_APB2Periph_USART6 + #define AUX2_SERIAL_USART USART6 + #define AUX2_SERIAL_GPIO_AF GPIO_AF_USART6 + #define AUX2_SERIAL_USART_IRQn USART6_IRQn + #define AUX2_SERIAL_GPIO GPIOG + #define AUX2_SERIAL_GPIO_PIN_TX GPIO_Pin_14 // PG.14 + #define AUX2_SERIAL_GPIO_PIN_RX GPIO_Pin_9 // PG.09 + #define AUX2_SERIAL_GPIO_PinSource_TX GPIO_PinSource14 + #define AUX2_SERIAL_GPIO_PinSource_RX GPIO_PinSource9 + #define AUX2_SERIAL_USART_IRQHandler USART6_IRQHandler + #define AUX2_SERIAL_DMA_Stream_RX DMA2_Stream6 + #define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_5 + #define AUX2_SERIAL_PWR_GPIO GPIOB + #define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 +#endif + // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 763da1b32..623ecb67d 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -33,7 +33,12 @@ enum FrSkyDataState { STATE_DATA_XOR, }; -#define FRSKY_SPORT_BAUDRATE 57600 +#define FRSKY_SPORT_BAUDRATE 57600 +#if defined(RADIO_TX16S) +#define FRSKY_TELEM_MIRROR_BAUDRATE 115200 +#else +#define FRSKY_TELEM_MIRROR_BAUDRATE FRSKY_SPORT_BAUDRATE +#endif #define FRSKY_D_BAUDRATE 9600 From 19249febb5d06ad41e4c0557287c7249797967e7 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 4 May 2020 17:56:27 +0200 Subject: [PATCH 153/199] Re-add rxnum for multi rx (needed for trainer) --- radio/src/pulses/modules_helpers.h | 3 --- radio/src/telemetry/telemetry.h | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index c8e8411c4..244e58a79 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -384,9 +384,6 @@ inline bool isModuleRxNumAvailable(uint8_t moduleIdx) if (isModuleISRM(moduleIdx)) return true; - if (IS_RX_MULTI(moduleIdx)) - return false; - if (isModuleMultimodule(moduleIdx)) return true; diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index c7228a0ff..c92e722f0 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -121,6 +121,7 @@ extern uint8_t telemetryProtocol; #define IS_D16_MULTI(module) false #define IS_HOTT_MULTI(module) false #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) + #define IS_RX_MULTI(module) false #endif #define IS_SPEKTRUM_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_SPEKTRUM) From 24615f777326d18d8a38e90d4bad169562a85fff Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 4 May 2020 18:06:40 +0200 Subject: [PATCH 154/199] Internal multi missing on server built tx16s firmware --- radio/util/build-firmware.py | 2 +- radio/util/fwoptions.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index 8d85d542c..76bade5b6 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -151,7 +151,7 @@ def main(): elif board_name == "tx16s": cmake_options["PCB"] = "X10" cmake_options["PCBREV"] = "TX16S" - firmware_options = options_jumper_t16 + firmware_options = options_radiomaster_tx16s maxsize = 2 * 1024 * 1024 else: return INVALID_BOARD diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index 1b7e5cfad..811ff17b7 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -222,4 +222,16 @@ options_jumper_t16 = { "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), "internalmulti": ("INTERNAL_MODULE_MULTI", "YES", "NO"), "bluetooth": ("BLUETOOTH", "YES", "NO"), +} + +options_radiomaster_tx16s = { + "noheli": ("HELI", "NO", "YES"), + "ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"), + "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"), + "nogvars": ("GVARS", "NO", "YES"), + "faimode": ("FAI", "YES", None), + "faichoice": ("FAI", "CHOICE", None), + "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), + "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), + "bluetooth": ("BLUETOOTH", "YES", "NO"), } \ No newline at end of file From 9b42f8c6b91f9668e7ba3cc63e6e2f1d853ea79b Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 5 May 2020 10:49:56 +0200 Subject: [PATCH 155/199] Improve companion trainer default --- companion/src/firmwares/generalsettings.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/companion/src/firmwares/generalsettings.cpp b/companion/src/firmwares/generalsettings.cpp index 1676e913c..9c38391c7 100644 --- a/companion/src/firmwares/generalsettings.cpp +++ b/companion/src/firmwares/generalsettings.cpp @@ -123,6 +123,12 @@ GeneralSettings::GeneralSettings() strcpy(bluetoothName, "taranis"); } + for (uint8_t i = 0; i < 4; i++) { + trainer.mix[i].mode = 2; // replace (:=) + trainer.mix[i].src = i; + trainer.mix[i].weight = 100; + } + templateSetup = g.profile[g.sessionId()].channelOrder(); stickMode = g.profile[g.sessionId()].defaultMode(); From ef84394a37c23fe70edb78e24c49ef30181dc7c6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 5 May 2020 15:39:51 +0200 Subject: [PATCH 156/199] Add screenshot button to TX16S simu --- companion/src/images/simulator/TX16S/left.png | Bin 48315 -> 32296 bytes .../src/images/simulator/TX16S/left_page.png | Bin 48258 -> 32274 bytes .../src/images/simulator/TX16S/left_page2.png | Bin 48292 -> 32303 bytes .../src/images/simulator/TX16S/left_rtn.png | Bin 48242 -> 32217 bytes .../src/images/simulator/TX16S/left_sys.png | Bin 48264 -> 32243 bytes .../src/images/simulator/TX16S/left_tele.png | Bin 48266 -> 32206 bytes .../src/simulation/simulateduiwidgetTX16S.cpp | 2 +- 7 files changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/images/simulator/TX16S/left.png b/companion/src/images/simulator/TX16S/left.png index ded33bf620b35487e831e385d89cb629313a76a5..83d12f301cb8995be656e602a46318fd8289f48e 100755 GIT binary patch literal 32296 zcmXt<1yEFPxW*Cb24QIgq**$Jg+HB2NiNOOox&1|bayC7OXt$DpmcX5-5~-C2ngss z-aB^~hGlo)#QS}3{GR7TYiTGG;?dxtp`j6~swn6HKWos?p0MCx0k4|1@OFV87;L7AyM+s4cbuP9196d&~IvIi_}(Swtz-H$ldNywAFr|IWGH*dL0O znu-5yJLf-jB@^TJvY`dr=7j~N{Q+BZisP@Ye_lribg0yZ{C7i8cpZdzOgHzJLW?uf zc6l3!=s&~EhY6vfZoV!F6QeV79vk0(Gq@>;K44X49I6u%7@n9A-S;#c*bezq@b~Ck z>}viduK(x{2k}}?>NoNdyu?=)$*`OD0dma+D8Hf8IR%Yq^xyD89(7O(Xrpu}UC`CLeuwQ98Jg@IP=l{ZGXXs8x1`++pMYCw=XAnSmGwgPz|7)zDctDCr?z+xwO!@WS$

jm$IqC+srV;)J}x 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 literal 48315 zcmeFa1yr5OvMx#j!AT&&-CZXZJh;mwID}vmhe>b?5Zv7f?ry;?xI-WT0t5&a2pS-` z-Jd0_?6vnkC+D8?-hKCtFb0F>|EsFIzpk#XsxBr$N(z!_$oR-GFfeG+Qew)$&oUU8 zJCumc?I}^WFw_%2Lp4z>*o7T9K(GA7#L(lGf`0`B~z$9)Xo%YLnRkG z4oA?J5eOR|?iGp!W<(7}{)n(bmKE-k9T+@tzUY>1G1+|lW%#OQN^q^@AhmiF;VmL+ zyc9c_(+jmwgc#$qPj6Sx;tKPVSICq$FzATYMr3xE6n9`wJoxz;$loHg!rXCwkAevE zRzBq|D`CL(gAI`+ojYE>ci!4ZJ(flE!i0I^8ZMFt^F-o~S85{lQc zCKx>$&oA#`yi!k+-0r|=$C6>)$%uj>eFO;M+XDv2BX(ULE#MJn*@U?v9Hd*$54j8Mh_sBRK?#w z$s_(s8S(de6Bw99dylazMwV)PFFtrLtE()k9XL~6lnjUC5aX%` zPikN?zRsv0*xXNsL|cDA{pFQO$Md)9mzJj<{1?ZEpIetGUxA*z zl7u_?+%fcBE|+jL8p+q-)0YUzi#n9+3!?YrUD5^(8uXaU;D;~5#gao0K)K{WBGGi+ zRO8o1OACzWu!0MmFcs#4cif_w3Z5Cl9?8<6YuLYCI);JSZ-TaephblBGWA&;b-Laa zx|GbIg7Gqzj(!0Hqbo+qtTIq7)QboMBbM=szCxJbdpj=UTX@3ud!O1-F7&v3MJT&E zM9@W$jl2kL_2^2xMQHtpD~RazSUx-<;&=--^^dW+&)lI}e_z1n!I?f{T03p?D8wu7I+(APgQy}|>x)I~F3)cX|7N8-;NHO^^;t>nF zTcBtcH|4`1Q4mc-=0Xky8zxyvR9uxn2RG;NO-3{KKNB~Jz*X8yAvv!KbB8# zpb0Hr3N8Y!37!*fd7@k%-un=|UKLhuw#~$~qz6e*RSo)DdUvd-0pvKDIO;e8dKQ(! zqP(K{A{5mF)j^erLfxk?%Oq6UpDq_7eTXksElO3|d`j@tq>!&5pva^Esv?x*p?Mhu zuh}WrsVJHQ&ZvC8+}uNoVu)Am%t&T|R_yQainEKla(LR^k-jPMlBg*}pr|mDN0eQL zUAk^3d_ufNu~ad*SaP$4 zt86Gec@gi8XX!*lZcUfscTQCpU&kY=VQwY@E(>i7g^*IWHyO8wOQxy zB&N0MdZo!h^XFY!*3JlDvRtZMTAk$|N}_7OSEEwG&!Udt@^^E-fbtWu^v>>qMW1y( z5zW<)(@$9RjcOR<&z_J7lXwtn)}ymbxop*A)ssyPPfbQGE59MXldLS?kVlutC&wq( zJ3KU;H9VQbnIgb81zJm4OPNYpsMFJO)?%zJsI7-cSFLE}Y3|fETl;D8Xy$6DYCWr# zC`~P;nrtd<%E!oWP>4||PMb98tk|pVuPv;@t62RAKU-F7Rr^xk!~n;nuDh&rC#EIl zW#h}RO92G5fa&|iL|Q~1c5iGkdDVF5lSf|f2)*q79{-iaL}L_v^dtLn?V~}uF0<69 zDeomsa7-HPd=3Ibf@Hl1nG*z=QwVzI`dU_G>iOiigy>DVrqE#KkVG203F zls?3fPM4<1ZuhRUPxLc*bxa5)J&x64p~OQ`RPmKb%^C%ZAxo5c=~P8su2a#m{w|K- zk)Un*vfwg5_dIA`^Z5|>+q%BGLB&pJ+H=1JQBR6%qifgeF_?TWsyimIL9c{gY2Q6R zadjta3m4*@g&b8)ZwrTJGzen}M|hWdueO(xnf7f(mXaN>C5}XmnBDhN@>rjIhoJvO zKcv$GmBuf?Pu*WA+$K;1e~c}G(`oFJsNI6tnOMBoe2NL1B2PJ!3@5!{5wkh}40j_( zqfigCvF6Z(MyiIir7R&2GkqDCwPowV#r8qKQtA@QvKvk!OW!jam&}ol?|%8%h0G5b zdE=kR1u8s_{U(e~Uw|D-wg1S8DjeCRgQ&xVoMnt_EbybK4n48Lz7)N@YxGuBGp7q> zH+wGQYJ)FLVPvx$n%rCpZyI*8BdHZgfVYLsCps$fg-8*Zd`zv$hRGLW$H5YaU)5E& zbx0ixaU4RwMRjD!JxwO$T9LeU6)oB+dW0$yh`MpxaL@oxd~q7X@b*ykz-%P<>)rJ0 z?S~x?7o%%){bkjeh%~;ml$i5W@xO4HMPA0b$KbC9U&3D>TuW~?p;)}Fo>1n|LhUMV z@k+OSz`MQXj>RU5D)Oq|%gs+y+s_m=STq-E^w0cL2?Vi%g3B;xaT2gRKhl13UL^>C z4zwkGihWa9+|^(-YCLZI^~*d{n)dzpqJ%FA_pQ;UXWpPKsJ+=fJQAN}Nf@S`ZStuV zZOCrpuWyFr_m2$o3900$d{;SB;o2FWtI?l2u^!tYaBDu|*qWHtZa%&g>~Eb_y`w5W zVLSmjmp-pP7AgxW`g#(7ZuP8G!Rp0!FYGw%B?86$+Np*Q6GYTERpgw`CQvT zyHRmSaBOm8-t|IqmgK=}4t`A+nFE!6vzf2n?_*5%M?+KNQeS#7pMKJt&8l@;foeWYHmo?OoR+-k#qga0b#y<%_E>!#$g1|5rr z9oLo`H{;{41ZmtObKhHB_OP!fC(?KX=2{M1p~v0FhYQ$q9=0@>BZE!TPBc5E&5F&> zzdzX)o)(=8m=Myw`t))4lc)Jxr;LNKPm;&*emLamtfji3e)W@jrKz!8Ok;TLkY(Kob!*pnJSOw6nW$akCC$VttN1jyAn z+VrhOQQdJVxX~g2?>Nynp~Jh`m0kvz4W_9j~(h`EPQ0f%eT~ z7IM(rS?Elc^?dyNrF|a1`^8cFo&+%GW{mZWH?8O}c2>yWdAG-aM(@w?32Ew8Yv4c9; z8bZV!fvHgZtJ&MxD?|QTou3c|kpD|T_GZTaM$XNfe+vS{+3er2-Msmo?KhqJeX02Y z(0D~{A^P@ETNNnOQt)?m{VNay;xJluGixKLlN}vD%ipR0(wV;mLB#a!A%Y-Q5GxZa z8xtF=3L7Uc=rJ$bV+J->URKs0g#1qVHyQF!BQs-{f0Dt)%gN5m`j~DE}@4 z*n>v;_WD016A{49Sx{DJaTGkHa!mQY(@SP(&W zewKgr_+N4Xv98kZp{}5vvZM&9w74i28xI#36Ns7ZM=?Lp{UGNzt>=}twzJo_HiSrv z2?7t8&CHB=AsjpqBYiF-CJ=`)8xzQg!b%H2cji+UVQb zL2h=v0QsNW{??G*+Q}Q9->e6(zTu5U6*RorOAsS|mVbEq*RXCm|6nuw=Y{*v(fwWa z53K)QzLP1$`ajx?zl-{f>fZ~ogBsgA>DxktO#nUkXA|+1>qi^$yTpHF`MYR-mYb8u z((M0<1%O&RLTvvlO8_jiK5%M7Z0!V%ZJ}1AxBH#c9!jcjV`FJ%sDHDzERNPjf1H80 zd;8CI{z1n7i*vQpcl>Xv8ux#;k^eiY_L!HQn-|3Xr``WQqiTQcP(xFFYZHi(Aj_YN z_UD8Dn^ue!!o|vMWMsf($gTgF31Yy(#l*wT@tDa7Fud%K*$sgAhJViQf6qYt?WFym zShaufA%4a_{C{iF4FB6EioHS|7T2!5yaN)zhYE=809TYq`#Tb|9j^A z-!`K^=W6|TOzHoxHs$Z9|3CU)f4YqS?62KK7J!Q?_Pb(A+?>!i&I6!$|A~7BcvwJi z#ruO5{L?l5StI&4_J24h{*Z3;zvCVMKCmBH|CMCuf5$=oy@!7x;;)|mMEnO}e{je6 zZ=y_Iz{3VSzTdnbK_C|Sr)NJ%`|X{^ji+qs@S7*h!^O%5Vr5}t1-|}Z{qgnRSvCJ- z)*oO0o%JtHRckYQLC_z){q6A&TsNWc@4?zrApHZmncCkU{heCL%o$>-A!Y_dLUuQP zJ{vd3A54FL^Dj9y|KbGk00aE3yWco}c=HG6@7v>tG|g|z^7~UD2?XSySZ)(gKdjho zWbr@W_-ji4^RjOx{_5lwil1rxg6n5cx~2IA*DVx3)A$9~&!BWm^9!z9D1N5#3$C9* z>6YdfT(?mCOyd_^KZDXO%`doaq4=4`FSvdNrCXX`aNR=jGmT$x{R~RCG{4}wh2m!# zzu@{Alx}H$!F3D8&oq9)^)o2l()@z!7K)!~{DSLeP`ai01=lSUKhyXH*UzAIOY;k^ zTPS{}@e8h>LFty}7hJbc{7mB)Tt9=-EzK{uZlU;@#xJ;j2Blk?UvS+*@iUEIaQzHQ zw=}=tx`pCr8o%KB8I*2me!+DM#m_W;!SypJ-O~Jm>lTWiY5aogXHdGO`32W46hG7W z1=r7@bW8IKu3IR6rtu4|pF!!C<`-PIQ2b2eKZFbUua9(qSOcHq-~@bNgHOMO5Ab0R zq=r(;@-Q&2R4_1J!0)Hmz|XHRFb=FRFdKR>FuaK{FgVcY=iL%8Fwl8vF<}+wnKv!c z5hZIcIC0|+R5aOlTPVe2vI-bv3{c`{U@ePVs#+=&j(RMzJ;knJVdqbAoEL}JQt!0; zFIo@6YO$hzw2q0C8o=ycysui>^BR0zP z%#4;>+m)4tg)H#M(#k3*u+O%kd9RVUZECZBxi=zr%(Ty45a)7iw90esYUjEoX!O&U z#5$gyXSyc4!O6lwczW8P^X!@QuxBRc6F0AJgQ!-U1|4eA?=(67 zp$ao;uiK>8m+Y>OLMV@+_Jl{Q+prb8gO>s(r0Y(e9+2lIYa}h{sdb(nrD``bAS59f zwC9bxynJcKfv;Su_TJ<}X63o%LUwtfK<2?jTj6D3pj`gb(~E=A)zgDDP?FsECg)+i zwzl@yHkn-VknSaago)#-3178T;`hWTOp#UowS}JS<-Ytuo*x_9)^rUYF!Rn^p}l7M zY>-+p~ zCpD#|OoeL2+{{Dx^dNqFpUW`%O{$$umtFIUI+q12kA)8wmM9Urb)(ECD@OwJk$_B8 zc-V&K=2-KZaXI zh)2@|Ubj1D8>;f}BNlmc88>|et?pi+w(sMCS$USdX{4{zqMPvk{Zl+t`0;JW7`7?% znw2{f-wy508vP#}oyPJ6Oqf%VxPN=)es#JwebOAwSg+<&+_iw{SS4sSK!w*(&l=pB z<#|4u^(|+JEo-#$xLS$U_4y8G{G(4_pj*xFoR|}2fkmjQsfk+}aBX33WX~2;vC7aY z9mmCHx{rqP;q-FK^HQBI8!PHLrAd^@J`ILTXrEWsF)K?Y(rAcdBuMvc5D|k5V@-nW zu85Uwf4=9aL1mLF z(y|Z{_vw8w#q?pdDV>5O2mRs3_6Bi3JQMXj_q`9Xg^Tx%yKHhD1tfMZDk&%`=1!PP zH_gS%u1n6>t|EzoUrz@`wvb zJIU`wiq(RlU)|iKUE9LyVUsUn-K85Q#gsYc&B`s>BoZb(c!b$$vY5rK7r%C+qcJp! zE44yc7IJ;{7t(CmgOCKv;_!Dtvpo$E!^zpM?uPoYtA&M#*{-rJzJX>Tla(!=(>9g_ z*}|z!K&w}$t4%;D!#VH2=A29jN$| z<7cAqD-MJ1l5f1MJYLLhlep*}36>_xQ$KRqTN3ZEV#@L&Ek~3VLAo-piS9SD%||D5 z(ZO6W7ZwpH?RCXq#(D9`I>spWUd14_4#cy~!eNl$i@V@+w?J%ikzD(9+^-8;mkhz= zJkiG04M!!`DC}S6r!2XEPYV<)D=)t>Q-D}tlgPA$X1@(qvXu1PUy(MG!o)8Nvv8Nv zQxx%e@ywx?(b5nv{zE0JS0*ypS?LS3j`Q=mN;{xCr~#sQ_X8|=gtNyYJ=$0fU7sZn z=iR9O4cy7x)&&*y1Ep3LH4N>QcBIY9l5+}yMQ zV-MlL?>7QTr*Atp0VB-?jCOvy2Yr5i{{FZuOX*?}Pq-+v`+HX5Fmu5C=f9Wk8M3{n ztt-(DpI%}G%wcskS1$j(8=iHyKMdp5_Xmt1Yl8EW5MdjQ>BqZVrX5xWlU3;vx+!wh z_?NpB(|NKi|bsI86eVV6~g2h&>qCCmS$Y3~v6g>A=Iw8{Mu)YGPvY^{i>GY-@YF-=0^# z_c_*Z))4*XounnigFbwWY{-Is}~&Bet`0IV9g()VAbn&uRcbf(>K1OkAQ7WJ?{ zhDI6FkKg$lsf)J%0Xt^9;hEt5v|(cagQn!jHL*i06*A%PQflep4})3GkDH>66WM@6 zE=eID&^CyZle(B#a8~4=GvoWODuU-*>@MHe$FxLh0dE5eRRmB6hDP;CC%xNUFrnLk ztVT;7K$n(UAIPz} zN*bLCK0h#GduCyS?OdC_M<#*C?4!8;?#On^=5uYo=Cm)PYYT0#(OYq_RH@o;j>q(L z6ma59O-)(AVKq^hp>7&Vak~4Fr3~l2(PH9x{5Vn~n+(uXMz2`9N7|AfwjCkB#{2rU z@Xf3haDH0^-Zj`gy+C9#SF8~J8nT5byM4Aiad;I%{QDFs`CX$FGUn zW^5BU`vGmrQ7)8fTSx%>tC)TO6seQ?hr1NmsbQSO6GebhQ19|3$vvdc?Dit0$+EP~ z8_fhv7SN>}^&_B5Iyi%FluOy z+QSTY0Bcx1%^1hN^04~UJuRcgWHc@Jq-o5QQmoxgb`mSx7UctC6Go>vQlgcR`sn7E z_v{lbutOuSL0`ysug+qPxuI~fAS5~&>Pz(;5ZN&MHIdU?bs6uj^FoZ(hnDgB}|24S8R zGHcZm7HzUYoHbfZ?a$5MtY0nUAt+v_3>)8^4CNlR9t%C#A!o?SE;2g@aY3D8f z#2$|PFjV7BR5XHv*1b6l(pem$uaVBf?O1nG{T<_( zSCM%rRfLG2eCFK-%HplcfoLD}JlFL26cEy~)!+sW4$l6JMS1`3<@|1c`t@o0jlX@d zvwKzcIyJT5l1oE0TWQDvJ!E%9M-K*MTQ7rTJPPCpS5SLkHOZ^x>sSg4U*%-@(qgPv_E61MK$GLOXgAY7UM86)oa%XU9*FxYJzOeF>I6ci2 z8TRf((c<~^@px}1E=bU*u=zkhLR=dxWhwetD19-43kuf8Mqky4=$i3H<9L9h6OA=wp; zByg;b3pO6b8Y_CET5;|X7L!$#49Zh;x=#Q7-92u>=m#R=n8x25x-qx8qA(=739<7n z0=g}^Vis*^Z;oRT$8?Xg!Vl)0E(gQhxeL4HJoigKRQd&Uz+!W0h|Zf9c&P<-lW@Y+ zIpj<=`s|R8n86+$zNdoBXWUsfS z-yOOV$&}BSS9Tj?1Zf=^6CKLGmlW}zt;8S#oDydDkx3_CWq&VrW zzqY277OwAn6U}X0KmU!qWaRE<;Ou7{kr4)3zKx9y8Nh{uJSHr2L7AP{5XHIIzim)O z7LH%9iu3)XdWZVx&U)L#$1evwAKJ!`*Vn8{prcPMPO)PS*YxU4yR3%&9$Y2Y_(D-A z!X!lT!~DOy3QR97BmjqfO)a6AHY85bxZ;d^p|H8%b~m~A5PoQe<)dTRibT>_7RpVG znwpxrG7-tki7bq}H}{^+ZnkXHV^AtX3soD(KjJzP*-3#T664s8>5^9GskK#$uHwrV zGwwmr-H3F3e(pnT;>UZslmscSHQ#+~HLi0|R1HOaI8m@|;m9BeoYSr?ty~D+bZONc z{&Ue**cO}TsD?-LzKiXU4>VB}PiARm<}O+e^+n+rTtz}1**+@ugfyPGcQA8o^1LLt zPcdJwGN^^pE#+yK)^lA+hh;|pB&p%YQ)5>G}!5__~@O%gQ6M-AR35Z?L(zcs*X zKt@VjH_XNPI`v2kgS%tnc`VpltoI-+v%rU-`_s|K6vihXtVQ<@4#;rVcXFx5V8w-W zM=-m+=Y7sXvBy}(;{Avd#g&?!wAj5SWV+@Ep7XN6x~!rH5)KYf4}znOcJsvpvJ!ca zTLwTU)=#P1oI*pE#4#0Jm&It-9-(zb9&0Ov;|wBxtZPTy<~(IebUCP*N?i*}w1O1* z(DEGhGX+mu)o~)vzEkLMB$S8|lV;fT2t?I=R4ea?jD=z+UP5zepmHSMVobc>znCu7 zG4A%plr}gOx6|5VIvm-P|IL%>Q;81TR!WP(jIncfE|M{%7SSh_oW)C-rv~%=V%0+L z+_GxR+}u7PzLQ`pdUk034Xl%Jka*;+=@5q3bPS_5(`Ry2;1Pb7pExCoGRqy6<*i`7 z=nM_$lLc4x*gRE{3e2dX{SZXGMe2}ZdI!qb!^AL3tU5Aa9T#P6mGrUydZE{S(ix1q z{HU<6;=<%obdQa@*xbd?AQ_G}T~EghGvz!7S-+gvLZY7*CFbJzqlL-0G$&$O!Ui0^ z5>&j`Xn7S6ILP}~c-`<`ch%xApn08OVY3O7Juu%tNROZwTTe!J#Xu6SKK~K}YWn=0 zH*#!tw=TUp4ZpjLYim$`R38baX*6Ypt^|*no<<@K$K?^n{YTwA7>5zvimitMHC?PA zblHrH<1?n&>t0h|V)4D82t^gUX2V#?0vkm3Z>BF!kPY4d{=jC;i*wYA7aSZxOJBqM zkgq6T#-UE6WW(_1I}GZvwWYG-XLz18AoxdfU@}N_mf9iV2d98TarW-p>SJrIAg)WY z(fBapsS#kLT-5F&#E~W!uem^TZ1W1dBML9#mle^wrJ`h9nE3-^Yoih%d#uGC;@VJO zMb`p^cEL2o#TIM(p}?9Rbl9dAN!0oR0yx$6fgzsoj3-BVv}chfYiP~ zDpsl8M(DXjhvJAaGIV;-2a6`f?C#n6gksFRHBd`WjH42$rUQ9kh}nG@kSZh3wB#Vg zz#@9LWO$0Sq4jOg;=}aN4yTAKm*$TAJ;a6Ua)t;bFEMFC_7%|VJs;VR?xml$^djn9 zGh0Dxev!x|T;fW^pdOtAYAq$Xxzz3+VmAFa&Un(SF~l_4A+1>Q<$31Zw|G`& zSC^2pR$IRZ=N=@A*(u8?cgMtbP1!(>IPCacwIb*^O*o7a5!n1bTLX`gDQO>Ct%BQh zF?Ym9Oep+Q-g6#S#7Cr%S2?Rh>P4bITs%;%=<8%>rVW07SRcqfK(EJ0S&5WK6LW6$ z*t?ydeFgZY80hCjwOaU#-xw189<7 z1WV&Hk+y|VI8!e{NTCMRE?-h7%gU9bn7ryw@2yx|w_c28$KlLq{V2_;o zt>V0;?({?6X9jcA%-Gs-)Pih9*Ly0=wo6E(_|kR8<7BxoI?>Q}bc^}pKSP{HHy+7w zS-|>HF=C1arP3@pC!%6ly5I4xoYJtaqBF`|BEXSVmBNm-Jis5*Hu4iK89Wt4uqzytRYqm8QQ}lEt!UYW9$*Rmg z;E|oO72zk7I{Ch2E_*^I{<*ybYm`M-O<)cW*oBKeC|hIUIZm=o1R)xOw-^y6kM*EL z40~;rMr~j6(Lg*Q#SjKtMTunXqvmN1@)b04e6pqL4JWo;TUad3QX?wz!RO7I^rUHq z%|;~g8QZgl`DqI4EkXvbrr(Wl3uQeN>UcFBpPv2fOY|ui%Mx`!^HPX(A?fe6$= zlaC|h{Xka>?VvGg9<5mA+Givx-nn;2(=LKcAPN5dd&TS(?Qm^lKU)piWM^9GK4riUFe4F^^|fVFz>7jNdd#?U z*a!;*=Rlx}!=l><_`g5~Sc5#g5u>@|K1fX^XUuS>UxHkFKLou&=U7T5vx==$+*IkH z2pvB2KJU`jbc_`}S(S)1YsbNrn449fUba#lXchoi$NPhy-S`y}mS zB59PeFL$r6pf{<%mX;O{e%|EJK5DP(ELZ{(3!I+o*V%!Av+`m_D2(q22W18FFS$3R z#&(4S1>^G-(+3Ek&168rM2g(MB-y|A<>Z_GiqBy(tfyXlQx?W9MZ|;=ptaXvb|X@H zg9_Isf!g4<%PkY37$6(){Q7Ka_48*hf2o3|x)NLtipmWC9>Qnr3Ax#kklX_J0>K%N z8XzhLVygL<$InjpB0OLBJT0s{T9opgVt23K;$L*@)Ca4=sWxfoXxDC%^%BxEl=-vD zwY8+be%%LTiY~@kE~9Uf4X39(EBYB9aBD z#A!!-KLE&K0GXyipu?fHgPM+zIhXGa(7?dje%>fM!xVnY)!mk*{>E&x>=k!G#odXi z?=O#bfq0WDox{Z4z)bmEB8pkyox3H8W_;PpmPrEGpL48!%d>mILT! z+Fbl3Mswe_dje4v5dG%9|JrBDLBDOI0j3F{w6fd?S0AV?e$K9!H?AQ8!xU^mvF~g@ zw)HZwI#|U;W52h+&sC8;*ktF>R4=VJC@S9|b+SN!(C;~hnG8-S4yKsDW)DiWj$Srp z%4=5xX6)fGRwh|aBlCp@o}qEB3<$55_cS&R&yr;x&+Ig>BN2RwWWpiF*`+WDE!h(4T7=l9v>5L9`zQ3u?M?(@$5uW4LLiJ{S@2gm`gImzB3S&5$^zJ1L6({`g$!)FvoZ z0RqH6H|hdpHGsUj^%k|MWh@P9<~@JMfhxN#8N4#IN8dlkJ7ZKXVx0Q72;nS~Tff5j zV91ct?|XKS3&_OJZVzZfTd07H6L6(8Sw^&H(t?rQf#6Ca>#Jc$yZ=4@T_?6CCDLFt z)nz!4UIykoZe0ffB|TBYon6c#N7D`@NVn^eanpqj-owMCpx+pR=yuP;!Ec=BAaN3d zb_G)va)Gq+&JOdo21LL#idrKl;cYUOfMka{(o6SHQUUFYK!4Hm?&rl5(J{#i`K(tG zEwlT7M5~@Pl0}~c?YY7bRB@mVENA2jvjwP_j!x;?@suRQU@QXSs zz3(j#X4OA(NQsYA9lzt2JeJUKA1);mLnHLt2%KD2kxm)w=OlMst+)RA1DoQb#IX_|>QmwcrcSLUsF`#lDmT^R$c{VP9cEi; z4Xwz`(=-fU_x7)?wITowsvVloXHsD=<#>@#+aW51vx-$@cP7 z`(eTP@~O@7&BMu7Hz1V{++CX2&;#jd;Nov8g*r_n0!u@lC;9ptr7oX?m?&%I9-!c6Hi__w6905kc~d{#Lut}6idoF zUx{B$em^Z>z!4=qamLCSxIF+ahXGpxq|5!N1g}&}fd6oV=aH){?LRs~z{xgKRk3}N zI=Tj^sVHNjpAnb_mV9#dZgfJ$9Bw}~zG_$3_SQX#Lz8%$3STcQ3frL9y&f%+MV-%6<4~owPCWLGMzaWWv16L2@#1?g%<(%}r#-l~QWeFNYCr)<~x_Y04q; z!CyesKbSPXTg8P-K)9u+r#hR?tD!4cTJej*>nLs8${i~jI*B-*Fo(4Rm;FW$4<>Tx zY^g?_Q;O8~*4DdlJw={3l~qT+VZF-)Yu>MetcH(~J{VL=1(Ep7Y~A}bK zQ@%IWeENpsxnJ_3&tNKWA6u9^6f161P*096-gE{bH%+aDS-DJj>b)t)B>f9O!wT~U zu_=`n{lDHXU>=U@MDA<)3=5 zI4!J;06y1S=DJb6P!qLwco zOl91KZv^Wi2by7#Mr62uJazZTKI}dA$vh%HoB=c_F6Qu>F~wy3sJ1%~z{i>2U;jSn zvrKN4T3?_9T80{#Z^HSKxI*|sKsrHcV>VkEl;cg9uj%1OrY=wkE@M2($fbRJ-#6P* z(s?h6AVm^gAaw;?=g@I|UmJ-Xva(evo&Zd2a9|&B)g>RoQ_A{=fHrjUt9?cXw`{Ea zlxdCDo2sv;BL&asdb?|;j7Dkl6J4O4hiSoVX|}=4QUir@m#KHA5=%4Vn8z@!n?W(nC%Vrbb zBb*#1ttfD|gKANXTS6$nm!h>u2<*CfT^+SnU6sQVEf^fV(TO?}l2I_&$r_#GjyS_J zHD`I1g-0)@R|=F1`$k5>Gu#%e>tZSk$;13fftxGf0*y#vQ3dw3LjJfV7nHUCLIY04 z>>#n8iS9fo3YF(ccW~IFeu0ZuTJ=~v`YkGQ8Mvy2 z^@_%)cf9or<*1J+Pkdan$&MZu4#mwV5AeHWum$++;*fJ{7+f&of+cS4#_h$9I} zHhB{GL7e8NPr4~ghxg%OfeI2CRFDc>g&&T+XZF~gz;|7(0Rp38i}mxg+qK?ZZW#M- z#TL-n1-%oq#73aP1*<)Z`x5x|;Ps5*xNS%6k6yR{zX}#ldlf*e)>tetTz!T179+=*rK%wUpk~w;fts(BiL(uK6%X%dGineQT?N zz0BmR_J?zU%@K~pAh=@r-oEt7 zx_c}sDQWxSMdgtmm;r5kFwB3Vl8#r(@_~zn=gx)|LtHQ+F|kbcSUtGR#QjU)!~QdP zJmxS*IYpv5+R`Z1gvfbS6+BUGDLm#oOVlS;NQD{aJHZ8d-nGT14MZv)u%S}jvWsDP$MJi}Ht8_j+g@nS- z9zE;mgs>R;z8fKmg_l%`t-aBn%XcPTJUg_BvC*qGfpD}vB4vPWI8ooleLSsB99t>T zSEBa|Z$8)|a`;0%Td+#H@R!6RVpo@!)X6wwELMSfi`?2*;acyxkpndMtA^z+OG^Ck zcFimfA^bg7&1Dht6n?Q)_ri4iiWt)fw^>_P%y5WAxizXf9Z7^xXBQ%`hkY@WJzr!FWZ z{UC%oB>NQ=5lNi(u zc-j{fY^cJ0+_Q4tp>)w58i4m`Tt2Xa2-*@%_b1D`ZI{1 zcN>se*O#L3pCgGDJi+u3ALRwDyN%&nX(Qa-y+oG4*$PV&_@uLC0e(eGCu+~jp~3R- zv3`HhoJ%5o*zsG$?!IAxBly&m;>BJ0oaC>|rfPG8LCz;rW7g|Va1rMV2>Mz6o3MwV zfyuOrp>J(cFH%bTOjlmU^0Re{tQv9UGv&i>r4UfOPT8ghGJs+sQET8&J0^T9`&dFl zy!&5(qOz(YO9}W*t%mAF*WE-0F4iZn5B*mgMKzZ&@ywac4EJn-8x5DwuTKaXjn(o^ z>Y*bi(4Dyin~70?r5f+RW>?Drt!KzNv)j_TD0qASar5yY3H8B3NU zd?=5=>t01#pzz;s#}^61GMtF!vqO_$6$iY001JiNwu(0e|C!d@qHR;*-1 z^N@~4DUa(xN$}k5rfF#zAXx z*CBazh_ME{ZSMhgtpX<%a(i^qFM%?wLq9QhIjWL81QINl*uxL+m!DG^SY&coyMD2e~W?6cHzEeQ^XwlI+0n4giu2fmH}3!2J-M;Rfs}ZEs&g8&yE1F3)JmR}>hPoS^`>wbyje*3-P^vyEczvkzH! z!xl7~B}BzQ3#J9=?YOPEl8UHw@oRajVo4wa*;ND1Ytk{t{Ah`r%fFk_$`oiT9UmW` znLChfwcR7rDhTCNH?HU2IMb6RrgzQYqR9)(LumkN2^2lgo}Pa8d5{A*Z=C@Tri{Rv zkBT3tevok2T{gT7bJbCyt?&=dz~}Pd;LZ&Y;9yzCTg;6b2(!*jvuOb$BjC;uI1kAp zhy|j7=oYA4vhXLsqchjm55km19}5lEX%bp`Rbecth85yWbLsKC^&oY(4~TUlgswD> zj*g;pRNjb6jJ~A_o_B)|Eo%i6`0zxU*Kk^X|2&}PX{$+RsF7()are-HPc1Xlv5Cp2 zomBpfe(-$3rws@Xg%q-jM4o%+=XOvKp{SFR`Wr=~bYL~(WW-yq4$B9Ht`CF;fqE={ z*YC92wGxK;8kL6c4YQ&biv-oIzeyQ+$-VK(L_m%Bt}LQk!Xy)mt6=U~4ite*^WqyN z#JmhP*p@<`piwKaYd?U1{T{HjZoL#)jAmBmE64>rI-m;Uru6lu4ytqUn?%PjJShml zTkse%v|kD&Ma;NT>~->=WrE4>wy+erta&6N7&#mvqNpY*e5j7&lfbLh=z=>y3|lL% zLXO?t(KB+5=O@?UO7?t}7WdpMlqWvh{tGYPj#2%v@za@YuJ6%;js|;0G+Nd1;e-Or z8}cHAlZej`iOYe?tQQKw&&ibtD=!DXcdX{|f2puGCUk{j)ZtMng&v27v!x72_k08{ zeUe+icX|{l4A^*)vAFQKKG@4j40!0$ydAX?&tA{YDP{Z=vy38EOhgq3WD0M}bzB8* z>P&%xVjy-abY$0H$+{yUhDm~wHP0Py6TgicLvUBL~p@a0~jgqHR-+J-j7=_T-3Dqx)=^+S)=SP{R#$ZG#GOL1uQOar6=*csJyu! zuL80#T>We^-Woid__C{L=tLCsbk!S#MS80m8nj(Xf!|t==VNYCx!kRLVH_E(OV}rC z11hu_U(K`oHGvXm<7y-`SJNdu%Bm=eR~1(5$_OU9v;!4jTO~|CU`!?;&~;@_Jv z>jfBoQH<{%d6(ETvau&P@j>kSkJ!y?0|hMWH5gYco}VY*MB)AMa_rtnuSh{kUHx;W z{WvblyQ}=IgEPY9W|<%xT!!PbM6|{F0`!b>9C0$>4qDe`6$_{`(n#?)j0l3u8l#lI zeiqNLNTP*#UP*o@+EJvZA5QySv;O7_f-rweC{(s-&cB#O1dbsyUlHY&sq1iTN_|+{mo52%cX=EXCz1YEeEifD7m=PK zTYRXe)e)7s-ib+Z2mZS4d#Aa;$d2o*Oel(Fj{<1)|^q?RY{vSjwM| zI0Cq?&ug@e6(^?z871_yOk}G-&@d}fMlILZ%dS(^HSF{j&|Fvf`S$8_`8~FdoyVP%*vb^ zr3Eh8KrLK9`sK<#P?|Ppt?uaPIKBteB>)v?K1`h>(aVsE>uZN|8E-GdN4JiZ}H>2fnW*ZGcw!0zR`XW{E1|aLbbs)F4r46%2UO zu?g7sso&&3Y@=r)24Z%;{R-0aP#7cVmL0QX=fWRIP<7ZTWeO|8KLu&{4!L=og zzcQ`Op9?6m0|u!=j|Bwv+&OQyYRn0X5g#6SrDgT;a^glml`wRoh^q!tvUAqQ{wXH5 znGG&5Q6KGgy0VS=;EyYoyrv4oO zy%pOQ+SqK$fjj{+b?}};eNA{-RoXT%@HD}f^g!mDRZxwbchhg^dC>tKgv)z=W1x0!|DSec~z*^AC zHk1PNA1HtWDkXses<`ItmIM!xocU}ZSY15Yr*SRu6DEvAR=a@oPd zC*rAf4Vq@e$yF$0ZrMPYO!gRUY6N~^w9^M*@^dRuoI39wPvQHIAg9Suo5lCoHpBw` zMGHP-^=bdy<3LDASfYAmKNIf%fQE+VrZlZZmxU@paQ>)yy2=J?1`UHlGmqW{N;q}! zhPNu+ z(g${+D7JHvwMCHl=1(q4T+~B|KTbDqID}+HPFqUg7=tly(gUAITDilh%rWQ&-1H($ zD@_v1)ag z#iNqUYZ|{)P886@1aYJcuaMEiNFz(ycQoQ}A09d&%YJVHDsscNn}8&UkLu(sP`C*s zBmwmC!zA#>O&XA*lw@+Aj5_kCKdA8NWP#|!3g#4WcGgWh*J25O0)qZez^NI%xUptZodmckvenbEz~5c~^_W`& z69<(|K56fP4FGIhAPvf!svz^(-k_l8;~5@Hs){j=5ge_Aln9S}mtU*hD&zP!6L_!C zPwA{$QILW#9?Dl(RFU;a45HawmR8fmsPI5Ce=_uc)pV9&QGQ<+HUR1F?nY_=DXC#- zWRwQ!l9Ui>q;u#Hq(LO5L0Y=IK|o4cIwar2?|;3Y^@16m^PIEy+V@&#(iKZPbrU?$ z99Ded5?GFv4ETk8W^tJIK;cDbPmL7LfM+iBqO5pI5tciKHD)fJ30By?tEhKbb3WiX zW#OaJ^3ch;#4bwrOye`WspF+!Pe2+2SYD`;dA4gVr9{3oNWlbX-H_iR&w`T+r?d0$ zYL*r*SohYqy-QHDsOuK?nRBa_zJqgmN3U)n5zOI0VOIFtsH||#R67D&e!N z;tbwMU5UXQ_=f)}S8u=uQ>0q6uuq{^#QYv$ZrIq^)3DduCR4mcS04rLz`90%9L{QG zl|$DC9`EAfVmYm;dVeViVTUc?%1RBYeiz3XY)r-P-p!rf(I$C`Ce z!#_WnYvU9$pHBE)uT-;8?R9r(|L@=M&m=*?#AtKcPSf^v*^{ig8@5ZN_)IN0*-sWj z`Qq*R<(I48ci-s=BP|VBJ#G(CRh~@UczPv#O@_lT*R@*zGc?(@Oo>25DI@%9;xnb+ zM`j;F`=}!l<9!OH;m`g#+#9l0W%N%YBgwi-S(k=_=wtubrgUYmCxZ#Id-G@*o+Ty#3_++y=f~ zyef`2T3O%s_yRF#mSN7H$X-3+J&N^%VTBsdc4S187t=pVz2R~4w1>-R8Jtr7FSQh)F{Ol+5Eq>^$Av%6_W2Q__NZn?df{k|^0uzPx{4#?k` zb}G$2lgd1+8S_*NWmMe0eFt?#L#@glv$0vaJn5m+4*J)yK&%|Qncav)gdKy7`Ep_R z*Mt%9Y89Ys?#&1D>{N*H4=y>oyo|)~hfIU@0_0fWW#~hPRprf*XYO-Fq7!f; zUGb^gLR&~jHy=CDa93Vpk#Uh<>!5@Vqv=AWBxEo?8=^UnwHaK%xLIt9N{>cdptLdR!p@2V^)GeJxbgLQ~)L|fmNtP`#IJV`;ZDX%)OJ#z< zEBJuAOSw-un!R{g1*Pv$rXlWvS$&0Z@*z27b2UYp5zfonS{Q&6#=*e>OC|KTP<7}u z@sD7k6m2o*t=$2CHW1l`)IECWp)RfqeMIp)UI} z6kkR?RFEvR;eOpa;_LGl-tN;R?AospP4v52=M98-m}F`#$ITz`Ij5<$73>yVQrK7C7F8*cW-xw;dz7*XUoh8oDN z;vY8j!t`-75erO@=e1nl80p+KmrhV3Tn8n>zMSP%?sklUH>KT&Jvxsje)8-fw?`R+ z?L|7hRylbgWOx)jp{@*&dw(ngV}qBki<)YBWIGWB>~RD6w+hQ&CpSeM84lC^c7*$w zU!j}uhtIJV{vtfu0-IBW5cL7&=VTd|aeY#Mk&L-2C>0Clc=!uWVa)sCY<~@Xsrbiu z-m&SJJKNlP$4$LLz=9XWnAfG05lu9O}l&nQ(M#%qk>Y zH&*-g0I?;62brn|d!VZ4+)=oFB&E&*jbv4a*5zINUU@$_4FMd^SWoNP?z3ycL-4d< zKn*ijGdnFNz4gdkY1sU(dsS9&C!=f8>aX28>Z~w*tYuz%R5e!2^!MeZu_x6_lz8Ez zE^1{uO=EPE03HCEyF-b+pxg|>+t2zUidQ*5dOcC{=6*t~?8GeOlzGvZ2^$v$k^DoA#+Kk|HIe9R=(^LnK$?sP|8Q@+sB)TmY9DsN<{9X;zR#uSXC6<}rz zK-Y#7of`1|eP{&1$!J5A(&+Vg-rkAts^nTd+Hdx%Byg84yksK3i7n~eFPeX(`x%u& zmGn?vn$q>#^*8$@OJcI-uMX+v?ezG3)N5nCU{71|gVunNJ1-(6~APX;cahz}AfW{f82uxsyrZNn4x)nIaGg%44C?b@a z;n(%lEn){meco%#qW7Wcbz@HgYqfI;4yPDf`53s$e(AsMein*3#VjK{ch3ropyjJI z&3e!Htb19*^3za~vL&z3BR$l=C6M2JL7; zsF>T5P+CG=+sXGDmr?G_wa8bbeHY5I-INtS_MRMb4Ws&-tkR(hX&goMnbCuzlFinr z5km$R^YQH8V}HWZ4CzzhB+7qg6V%Jp&s5UuMr4CjUDVLq0~{EtI{)5#r|DSz026s| zZeXGW2$Z$+xlfL2!4B!zpYpdyn2X5@DM+l3ZH^1vK!3RuDm%eLy-mM=SSBoctX40x1c0mamY z@(OIkZ;@`r+dZ965CcZvBDVru#eAcvO~fQ5l7ZpCH(6-OO=ijKWJqnGJy&2_w8~#4 zLGRbX`wx`(PZRKX=j<0U`Up!$(?Y3CGPC2d-|{4>hN;_@JUSWiy>li*z>X0PUNQ}f z_OF$yE2t)FO-$G@_2s;D1flaD{goYh+BMI$*e361c0agprhiy^gCN1VvK zdng=0VIkQQL-91|udn^H1`V;VW1oP!GdF0$b10WnAiJb zbnFEpRwT*X9ddN9A-Fe71^!*v+RJ1+EYdjmL{CW}gndT~BkZ;v9;u{G;AMkc z{14dlri}s70lCnjT>27UPL^>z_%j`rpbzLp-G9e$AwOd^*abRIHtQ9bzJ#|b_;l@d zU4A*BQ3RUvf{r@9Swop%*zt+`ZIUfbem|=Ub9{{yZDhx94uulkAfGyg2%0zjmn8BO zT)MciF?V%-F}+8HjD!SBx?*#y5sx&P=*SqZ z8MSI+LCE@RLKc|3fsa+~!5ysgJlW~}`$u2%Kfgzp){J>k&7}s|$;9GM)vuggL_3$w z{b_~8`0+hYVCx~Q*Q8{;-+`03>E?I_u~QRI^BN5>ao&nWFIJM z%9J>!DY-FTFhR&h{J*LVz0X6R+e_nALzp9Fnm3H#)~v|*nasl}a5mvr@V zn=M>*9-|Q*?_OMkwjs{SMKuBE9S;;0oq%)>wWu5@;1BLrIoedYPr8;)iSd*)Gd=1B zdUQRRveb`Nq_qxyS=SitZJ5d%?wG5j3G31~IM~M0DKgpQn%Hvv+2$ImU_}?wY$+MPMk!LgkT9jB)8*n3Q;7&tJ`me`bUdMq3m*XYTObGRNJO zJm7HDJ*yr+^64Ps)|hJdDI=+JU(3X62%IdPto5UsYp}EZk#>T)DdQL5`RrvL$q-i} zHGmqQaEwK#_VadX3k$#2Iy#VBdA3_D-92ccalHh*nn2ACj;Zmmrg*h0K6+87TMCI7 zr11pOn-xUY#(K|1WE==HZNnD)01&X*EFn^&vNVq#i4#$`KcD{*yMvR%3X`TOY5T2| z!ud|lQuW(J4JkHOeFQD9gFas3m}!$wDh>uiKdz9P{{{iNUVDb>HycyqDK`P^a|ys% zc{Cf48y8i%_pCWy-2)d9;xGQj<6ZHY15g|2eR(bXWoVr7cqqc|0}S?>g((0 z1s47<_`$`c+Vud?PG-m8FDq7q|7V}@a>FSl-vTE7F2ip#(;NHcBy!9bVvn-^lxV%1 zQQ-lk69Zhf0@`duL4RlO7V6}=|L7t62|D`2Mcc zW9^?;3-L+O%HXCm@b>~e&bmMYDq>1S|@WRs|D%))2lS|cBR zB(D(5(t!^0U8IHm092c!!RU{U^Lr9LW#9PG=|Gg^Uz(w1V8gN%48WOTw%XAFt>SUF zb;9(?^zPZ@K$q?iNkkCPsmjRATbB*_D_t9#Yj+EUO4QlGD=@D1^21BlY^#^68eF;C z>E}B0!*QX9!>N`Gn!lPkz%R7~VqtuPA)aQaVoR@ftm8(dLg!t--BAJIAZA8vMKcL} zC$~H8+!^dcHdvvq?N>m?IdV%=dwS+HJqlc=slRmqgjQ)+x9~7k0TMBQo?*6S*>ko_ zYUGs%4@Nie-&gh0ISYHH4*iev@sg2NmV7*Lc7BACKN8dxesgmOeC~E^=2D)miEjNA z3sI!(F$+$((U4=(7FmiT6FZZyDNPdZAr9^&7-n;**Wih|GwbMl}?Rl-W~Gs^!# z*}A3QrA)VOAgUH`n}Jpa3Y(o=@SKiUyD$L!t8yWS_}sT37sKGs#lW>DpJJKoJZ#{( zF950xK%klNrTqF-C$_iI$30dQ-i=e?-a1Ar%yc+ma4=^t)2x?e}7P2cQ?O~mGt`)92yn;Of?cqzsEl-+&b zLhhJNxnYY#tLaQF;EbdkW)2e+$lQn3*i$e=kN@E{bD8+dZaraeX22Oin$D?p@@_UL zQv&Y?plzEpa>ulb4|W{|EEYjPM2F^w$5#I4{N6Tcu8vl{7KrjG>ryG*77arT=#t-- zDla(#|1=mAckw`eHabj0Zc>vX{GZ?EMR3RDd%MICguIFV+dm4r^UO= zVG(*_$H>@l%qMfsGS_OzaX}1Q!aPVYf}cQRu6;C0`&0h)&t;Z~#oWWFG0oVjS?xZp zI>MnC@ekZR6+?dW_3!Cczr#E<;41-SKZHa&yQUQ9-NahjjB7Hcaxkr8Tmz{*2~o%@ zW-Jc54twWVYfF}<2SVoe^~yRT%CZ8R_67yI-z+g2(slg+FPZ{rRQ6L=1rz-_c?zNN zJcK4U`x}_zmU%dJi?d`Ok0M1=QzmqmM*MJ#X8o5Lr;3poBsK?QMm#`h zPx{T{`wIRf!Uflh&!UyP-*EPMRi7ig25hpR)Osj?uCBV16~;5a&vk`aoW z%$c9~!oCa)-dfY#A=G<-Q3f-;2meB3&zgW0W~_^ox8~B8*924lD4f~BRH>Q=!~%h1 zgi%>Xsl(t|TXfQK9(!q4Q@V)htZCZQ`wbA3K<|zZ0tLF6$l)+?*}Zi;#zA){t^5YTmy11Qcd4(*g+=gDsHEB4?+g0KCxqyMV?qa(-FsGMW#$x3Gmoog$wYwk)DOnOId*EMXRT%#xumd&p! z!wGH7hy=03@jcIRUWwE7V~sk(>n9BkfIe+s=NW+9JsGU_Zu%m74rv<0F1a+#y=WbV zspY8TdqQ7CZ(_HB(p&LFCM93dCZ;}{(VWdyS!wz&4>6AHZ()k7P4PyA>3(z<_=)o@ zFsqQNnOrfnAqCEhHiECC`WS@ITRFg(4senRNzU%mUtT{}_UHX-kVw1MvfcSF-)oE(xaD1eR(3$OAdP)WLR zP-@XA1CW@AHvf}sk(HNB+0RgT56k`QoQ>8Y>OD<9 zwd|cXK#Y^x8x<3scCN#?)TTbnux6Hqn-_~av})9V-J)%5%-ek}S<%cb<4~>h+LY&O zhmIenx<`!$$tzE&xWZt;K<&|bEhjXbWSxe7>Qn5Os~`Y{nZwAPV2kgD!BRz7%#rOzi|fT z4Ie4yxL>I&=e!9-w8o=o3^Rn)r<%Muqk@QzA~x7IPz)+0L5?v{KAfh8autbu(7cj+ z=+~y}p@xj5(WF(7IyP$We#yrUY>S^Tl(@-DF-N?ZE!vuHve-e zh7>{^q-mvPqHBJBqy3|5OigNqhZ`N=I90j+mjn05Mf%Tatp0_#_&@*HXR8_or)AAf zg&@E5tnI0~uZ?>2VLPW}$&*C_6FHl;BqvB-Fw{6WT)`aTb$j71pYSerF{0S$x>TL8 zql|JrTP5g-7RE*okZ?BcZWezY7ZQCnpq4V$lfc>%u_~PqnVs|OO%Sx3IQx+~GBjt0kl!d+ zvz)4(f-e9uDlMIj<_uBB{sdP@N&Vs5&HB#_Q33`$oF|HUGNe<{=9`=YLuA(WR#nk; z3|+GKbCr46kQ;KW-9ujf{w2KaFH*KvdxX;P&qwq)Buo{`e1u$@dHCxjnM7R?imSHI zTIyDI!gMPud_R@ghSL`IDpf>jRGU|lj=t0mB&s5-yL;@h21AvF{9qtqhi1gGean69 zXYTpe=?zOtvL*6o$`fp+hOrtu5#i#n&@|wa1F293Wh}sDfMOd^Y3?a4{GI7(-CWX$ z+f(5T8%CT=ih%wXsH{<^PbgZlKH=+XQeQ;S&!qdQp+dwLC-}VwS{&>~vhl1!B-=v@ zSXaBQ01E>4@rN8GP$53#8%=CO$heC|ukD6DB5(36=*P8n1~KRh2#q95nfp*gp}e>r z)>~%isdPcQ{s%?x@{_N6g!jjrFM@f)E#M*wNu@WE5!uQ7oqFE_t5&vVF$k_w#Fv^k zvNR=So?W41ndEy@>mR)SdDJl_RZ-P!*0UPa|6nrxZeV`extrP4I5Mbpma#k3tV3Qx zQyZxUS%=}Q3)xWlFt|7sV;=f@^9L_^!9{hiXjPzXJkzo+XdsdeeRKfv0cPlc`BEuD zL=M_6xQ_myb;-dKi0x7dRotxO7Zj&b37&Mv&h$P{Nz2F>$7kK0kWMq5WC;$Hv)YwS z?A8C3xm#1Uz$b0lLRgL&jw@P!UiQb?Mz^-~^3+c_sf40mWhX?}64H*Flk=i&=Eb(+(r{ zQf=xCF)HEQ{U|O-pQw^GBP&LVxqdPtkqkne{{0bZP3gadC&s^(n5dJCj~0a4Oj0wI zq3t?Ix-i_j`m^iAE=lT8OGa6TeZC+^@j9Qg1l8}l-ttuvK#BU_zrYL%E$s=PWW4n@ zJs4mDboY9(xjBnqr66N7i$n8Sl92IwKC`#3^>&})$hlgn+~B7^lZz?! z%+e###IBw&JUxk`n$2L1Tnf{!OM13%`bTX=jX?f;Xb3=}U8e7y`_8K?fh~)X!b#Ib6ivAt>UvkH0qn}Ya+oJG=^ z(Nw9VO)NRqX~ire>xEH$24KjKs)MeirfTm8Jw;q!;_(&&ZVp&za3pTjmfY5`+z)^I zrDbLgGw!+xuc@2^$J<`(cVLSCV9hk+nQ9SE*8d^V(4P)8|h{$X2?a?zp1T zD7_fqEc#WuS4PC;wyQvL2% zPiWvT@ki0W%3k1HP5xujoHk>!7EZtJmtL01Wzq3e)3`r~Wl!A4E#$T?QR&zqtcG@u zM=G824y5O>2G5S#?4;GEjaZO7Ry&527Z-g#&apXFaqyrsgWufQP)gvr!{-)o+k`mn6}?wo?G*frb&ysM%-BJ8oXxw-af z`PhJRZQDTc-DuVNU-R>EK&%Fj(~#n$O-H~^rlJj9DZ$k_(YMU2la zvYru||EMQGXzNCHu4t79Eyv7gI^>+VMMp;i(;yR0ZiE26a&E{s+Lo!3n$-HOA6H~t zRJ+$DkE(pSi6N7rr~G#*TOa36jvOl_@`v*-*W+L1v7!SV8MDHZu#Ul=w=zhjDE8YE zXzOw^NO1yTPYN%FEE+)rpL3qQN8FVS*W$JQ3BA3x5^3-@61n_$He;Cl>g7M^%YW+x zpey%V_&8T7a4a@WAcrx_4VgT~cjwfES6!amM%o^A%&{X}GGye*QWp9&mE&T^luW;uFk4472l# z&#taSu=XT1xc@LY9hkdx^Zj}y@llY4u-%C3fQlqSHdU{LRPY$W3Xyb@DPW7oJ97SE zlfr`>glUy36lmb37g`}KebeB?dcJI324oCnn*1ZcZm3T)Hxj@&e%ukDc2tR5M zA&yMXBp9gj9jQnrr?gAR0>*P}-~8f4FYvOC!dL1o&6g4t(R-uX1;lMtORkd8k;>^6Y)J|UyQ zPpgvoi|Z^APNIWfh(Y`=TZi!xLUWvJn#4-ImZGx)Xu0;67DlwP9n*TPjt!w*kO>(k7KtwrL^_c{B zWJOC(29u^V*F^r>njq8J>~`u)u?lp)jJwUASdXX271==}zfq$8A-tSMXw; zX!Lf}_N^OnncVm#>#6kcz(I-fDukqCdH#J!M>g2mzP0rNO{F?OFb=KK_B(4nLX120 zufN!{6Lk2^VABtuWbBOE@I+w7Jva-u(aIlwl%s= zKl$fnSJ^0?Y5Og_T+eqI{yZ>_j}h0~vg09VvTSDK=0+bt9r)i#`X19&RuJKb1xDW@ z%f4|^i>Hd?knW7FJSxxd1>}dhLm9y!tthj&wW+UY;l#3*`k>@cf@`b|0|z~U`=v_s zSL|-=iD8YJm|PQ4%T57f+(p=L9s%t$k=Wo?dk6T+CwE-Ut7@U;B0Si_YgH-cB1Lyt zvIkA+N%0J#zsxQ732^$B<+0^qaq6!%)!{LY|0_T_pS-a>!e{(SzTjRkk{X;LMlf6p%Hz)t+lIL;%89eW}I68jU#m% zwH>Mbzm{uGjWsr}Eo%61xd@C`mB0DdlyAQOhX_XZA*HdFg^|~JR6%@9I#)w2Ke0pM zTX>GXI_50l4r3}BuL=kzn-4<-VAD|R_h)4vX%zwH*RIqL)WwR^Cp)GRjeU`45T^AGV?>S>w6tI;nWf(gpQO^!vmGSiw z%@!BZLFprv-RRy*87z8m|kItGEuYT7ZNB9FppJbI~)eT{C*%x4pW{6jq4YSCZ_Hn90KbfnblE2IdkXd*^ZI>f)&W6Ki2!u zV|+o<&1v56FIgjm`JRTR5;^3;2x1K;b2lb!oC0EWVsoS+Prd5=$R8w<9M;#fMkFyr z&!8tPwp0BrBR%KT2B&B-hhcM&re0Owu`WjFg04v4= zcnny5Cgwq%f&^2X`liZBfwKHGO(Zo(ENlFi<=;T70OC-95(Y$frdO_t z^y8cnfrW5Rve;;+Dp$L2mCbShEvc=o1+mOapMKu>Ux+(xi8+^w;U&BS)|T*(e7``Y z39#9zAud=b`R45V$X}dQ`oGJL^x=eTg{%|o88+Ktzo}iQJr)Nx`1-!HFaHD?C%2*U zBUdZ7dLkxe?#Ca$r-u#gkKReS+&c}5gVf=1By*WMFz)kc18osraqP327u4e&XYqp! zPL5`?RdahN>D;#;Hi!PE$dGc)~DB1^g9hoVqFQV(0#DSxrqv{?YTgcz0081K2t*Y*i5C?phMP~O zf^2fY#ZR}Ckr{F(hSTAxyrwK)l~28=RT8sK9I{b2S573jx|gT1HP zRhA5HpMBl?$$Pw~wp*Vg!jLf1y{of$u6Ypc?e*p#is!j%3?R*x@8T<(XtA|12;=D(6HCPU{t|d2c1N=vN$~PMrGW>>$8FoHBGozKz357#)YZK%V<1?FZ zX$^~L?^(T1Sx8*;7U8)Oy>a03<(#0r|?2<0=bk`S%1HrmAQ27s?oWr}^-8f4| zEB->95NyIl$i5#K+lztGpBHoKloC#sDphPCNpYjD$04-- zqQ@bQtum8mkX9X0ci#-yLcsK^>AXdo!N3B37zA~g+;{(b1hS#&wMSG_WlYFfWJ>SV) zYYE~;G^>Sh7xy`p=vpJqkZ1^Njvy)Fx6S-5o{>STMApIxVn!JZdUA#$+9X;2zsMmv z8K20Fz{6U?W`n>ui?`_Hib)oc&Kg9fdq-}LyN#yY=(&*cT}V~@%`mXs<%sL#zRp_h znr{*fy)|-V$H;bypV^OE;Ycot=8o$J&mZ`Zfc#$)8(s6Z3;n)QV{?s#@J;0l5_bmf z0iQ$MKJ6wF^L@_z(dMj2fx)m0)&`|6v0AwPuhsPQ0D)mT`8VD!2Ca669|SaF*=u z?g~sv-~WtZg`B8S^M+BQORIb)i8k?^bo6WDVb5PT;+TX*kK*HWRG>W4pGO1UscH`a$Ge(wk1;JRY{FBJ5~7 z9ajRwRWLK`y}N7KJ2+sm=j^v1%d)8Lf=a-NhL#Uizr{1|m(F8e{namyyf+S0eokhp z!G|IK?}Z3{n5l6Xjx6bBM`m;~uDP;=;2saVlAL4JHv@Y}_Z0Uci2MX&>T2~e_3AWYDwrh{ zed}Mt*mU3B@Vpzn&yxwwh!`yOVHlKrT^wE$HFW%=ZlzYYl#qCf@(I_q^-LMUQRfeh z-)SUYk0wu?U?q+$1({qf9RF)=n#Sbx@T#+gq?M-(285j*njM$?UYgehNj96T2e0TS zVHo}JV}H^)Z__YG?1|Q@73%+qXwnXX_9ZjBVaXBig=tJZ4g&bbP*bI;fA++aJ8Knd zJjm!E%64bR8msmQ|FbYFS~jh`cN`IIPB7E~(jtpa2I**ZHf<0iVY3%pJz+ zq?MUqHa`ko*98M&%5W zsfm=2(d>TaiL}51)<5fgL-FpOZ-l6@vwU0D#~8*dw4i~D^Eq3X)4dh^U;q)xlt!^R zWzBw9_!&tdbAO?Ayv_+(qso0)B2nRTV$0{$TArACG1VCl#JPu0&hB z@9f}W0q20?#7o{25A@z%Ja)e*g4j5(C*3H6w!hvld+e58jP;L~nt*H@=v~O9U9o0^ zfahL+jV zbWYBWc=GnLn}iP2&`KcpxQQiAOiZ{eW$+SVX-dWDM|lVHS#~OzJGKg-H*O@so5IqN z@olBNKXBrm-o9u3WhxuZO1D6`oqt^F;JthQpifwHS*HP33ILL6s%k_QPLFDyV@)0Mt(Kl7O!Z8sUdHXONCUB!ogxu`j~HIuyzrS^1eD%>pNt4joe|no<_~ zjX5hG#~j}h`nZjZ*k4bwzaTyTF1II|=2b#*mcnP`b702{y)ik(1KnxlTwPk#XQ6Mm z8zjNWi`9DhmGdr|U;4l0bmH2z$$#y^7|qr(8w@4GdBXLQ@FV>@IE-3)s=eS9mXz6; z>TBjfW9)A3M>XHTFYyHVU^n2VkC}T@FxCVD@Uh%On7Er8D-d<4#XT6oofX}Ha|!)x zNPDWCem*xE>5ZS)zuKc> z@Do^bexwi)XkP@f&?XwU@fY)p5H>0185Q;A-_huK0SrF8x|i96`4lz5MntRuV*j3 zmK?yIj3Oq^jf7Rj!(X(83g9hpvtyKL7AG7o54`u?(DE@qzdTy=^#W1PU~LF+X>YI< z_)G)gBf|L>)8N%y1T}lSvE>rI|KjM8%c%wcTlmAdpFdv*my0OebSjPThns=qXW$uo zoclHeQE?2?0UUW{gtg_6*lViJ@A*2~$x1cuTfitF_DSb4NZ7t#2DxS4!sLk8X*Mh$ z0ZIzYWH~E=EOyX0cG}yq#-6d15)H;y3&(rK;KCU2j|vCpdwa?#0a82VYF$T^XWx}2 zKKBUdBy(XT<~ScVl17+1r-V%J^9y2rfQ8G`J?`uouj^Z^zHPje+b*1QjYx7}i1 z0BsN@plwxj`QNa_L--(2j<;P>8|c)r-&tC+V3nP81d?^ov@ywJ#jfO1S0S1*OY^r6 z=C=xwD7lmY76iU?A(i~tGd(`o+W|}xSw|-SeBA1FcOvEeU@2o^rZm1c>tko-e3168 zSW>zG^bc_0cjCBccjkDAE!;@<{g-SRO(Su)qSbPosBSfiU)CJ}-ZiaOuq}$pmx`|g1}=Jf zK;HfjrKBZmN^c0*^4s#ly|byXYaI1P9-=_v@J$}0i}-BAs(<*omW!MxmFc(=mE-*4 zu4cwSsVjToPW}E6=U&aA$&HTNplLRBWOMoMy7m70-p;{+yU)v7=j``y+7Hwvn#B;) ztU<3}E6));;}|&;uC3a`w$BCz9tx&ziJ3D_b-~KD-pfJ(IVZ+u4icP!T>8G8jHf*f zv}z`uTi@zm3gQ^ToRi65h|i|yckgCh!Dsf2E+zpa(6@&?_a?|Loqth%K+3JM1S4pzb!K7-`nC zc3W23950W3BW6Z~bS`BbSz->J1EW@9wM5dcU$wwqj_gtG%!%yG!yW}@AjhRxb>OWw z74KaIQRVmEfYr{p-(SAle@Yco5^o6_=s1>ft77pu8Qw|9o=4ZD&QC85SiS+iK zZ!KSD>~nX}z5&ni7ZqT1EhK=#!@vOqsHp9hhpP)NW$pf1&0-M1jJuEs*K&@^UVgEh zf(-mQ?xg0R+;_AV#SLcqR-)9=v**EOcs)O3CX(L2z5VW=+Di2OW%LGknSq^Sz75Ccuoak~2LAs2{*ZVuhN4$Gtvk42U6W@}wj9cx>vOL!^_YxOn&|5!bJ(!B=ofTv~KzksfcibF-pOa zSfdiY^LlW{3NYiUih512S-(E+lCo$$5p6w5c4#{4zIXTWd4B675nH3-ak`Ogm;^!? z!F?>CZ)Ve(?Y={6GOOLnoy*BPk^Q+9q;tO|p&Z|S{J;-DE;Af94&nLa%GL2hvw_nhA< zp(Gm@NrNi)@giIaUzD2MbmJLGQhH0?8>lSw;UWs4uOF|3&@kuIV-nr1zq*5hjrZyR zzz(THf9?#y^#=Dea7FuogXTA?_^ZJwfEc$f2FpV zP>jw;}tbgyoGtW7WSEKrg*b!QktnMp`I-LrqG)G6+s-_~Mi9qI25or&(fw-#^} z&>e7?UjAS?KBM9OR_9}VH*|L&d{X~IwLj6AlbYh<$L%JE@-#x@x}lwyqz+x!JL9rHG z72t`WiIN9Q9W1vZDNpukhVzT(d`{hDvR^gwX}1jP(A3q>P8_-4m_Z2!_s`xHw+54e z1dD8Z5YPZ(RKXof38y=kpGr$hA-HN7NCmK%sAAxv8IJUIzm tY6K;M+7n!8W8i(J@vxnU-rP$(a5^^~{O-H{>x0E& z7+}u5=bXLw+0XNvC^Z#X3{(Ac{wQ!;Cl@m96a5-x4@$&HPk)e8=|$ivN#+Z zGy(1JXCyc{R3TeQNi{VaXAft08)p|Pc}Yns7dK}sTL()xIJu~tG;b}fCBlfQPH*3W z2~K=w$%{@5s!sljS*gz%?@gKBV1D3%QWqlNNJ}9ShzHZWjSZ)P(nN;^nf6e8qss3$ z#aCB{e5lv)*x&C=Pv4@n4zSPbd=Rm|2v}@``_}Q&+To#x8pM+uM7guCkPsVPYW@cv z{SxlYIGkxc_Xh+Ck-i`~Q3|J9r9`|(ns-6`-uB8jhvT-6EFlR-NMG>b|ErLNL{b;z;?KU*OL(L|jgV6w{hm(nm?^+~Ktb>PF1 zF<-I9|BFV-Cj0uR;dK1I)!)f1DX3;_wkT_5mHTKj`?prSm??h0MG5DVLz{sw_-%4J zTK7)QCq)@UgSPVFMXRR8MVW&^D-(i~pH8pJQGV@mwZWer&4ec&3Ioa8%j(;M6gel7TSe93>i z@DMw2{K|y2k(1nwUy6FP(*~W@oD1{!wR)R8P(bt-+uf%y(q$&a z6%tkGb+c>;&z~cEc>Su0_wVy^UZcPgjXH@ayj>O7H+8ob@O;38IUg#Jz4HeCVIT&4-7VLts&ZV-b6Egg|SG z=@2C1@|L2T2r-xw8%YPAP!7R12&-OPbopJh7|JrdSBRY&8i^R54LqY5vH%8q(AY1b z7I>!+WK+c0kVDhA9q>2Uh@YvsrM}`*Y0IH;2aQv|-FpWSdsTafk2D}2g^h(P@ifg) zj>r=6qd=$}<(WbV$tb8sB4k>`20t@6Fk-XsolVT4Z+);K}fI3$JP#MJ2h7${POiHM;IRg%$(3dIz*;%(oI z_ZYZ?m1r;2i1Cr6W#1S4R^Ke&XCk!YwIlz5uN@~8Y$tn{?^GzG{-Ipeh8v9H7}O;B zC!cmE>d3(Zrww-_(n-=pVoN5WXv>t7m_!EIJmhLn>T?p8J!eVAONP!kWSq(h{X@)v z8A07!J!A)}v?v18m^we`P~BmjVB7*}yaq6~N5 znh{(HT%o$AJjT;W&N8+pn#oDbdd+^Gh0Kb~vT}c~QubnyO-9-~+he$vzBa!$K#2~8 zh9)2ym~~3UNwxQX>qnFCC{8Pm*<%?I9#I%cPI{9xr{Tlw$jr}NIxkc~QlY8Qr_nHr zZ~Ng`?3m|R zl}ppqeiq$pT3c9JfGqng-7V}briSCEu`~H5BGMFCi*oWe3Ods@)7%qxhaHpc6G@Y@ zl1*qX*rpOW(wtL&g8mtQt@%~(t*}nBKyo{gMnT<#OOMOoDrkp(;Fx}%{$5c}F*-e4 z&&>oyXI2+g9bDugSD|XFqc6RpC@2Z3y_Vj$CCH3!P^ec38`V!`){g#B#G(t6xXV8I z(8jhAma9-(_%LlfpEBRE5NhXX_hNT*B6KpgfHrTiKxvE3Lrj7~LO`-X@*(p_CVb{o z=0xTL>=KM#O;;@f?gYE93a#R-8Z>@vWc1wg^!K>-$n>N*N%G9`&^=u|-JI<^;=0wi zy+7TUj<~D7O}@3iMMgJ$WB;b6Con`@vaz6=da7>IWjWGf&n(4q-hszX>BBugJLfrP z;O9bHT*vyk;-$Uhid5SlwjsxFKD_^6(tyyw-mo=sH=%#Pd(g}_Oqfe}3K9YtgGuz< z*s%0AVTF1~dXCVOre_;R^ND6BXm0&XV^qV6^@s6%?qK4QSk@*R1KqW|rZUH^75z1o z-zv*5R?ZfAW?$w5-6|$ECTGJ-%rQ?el_G>9aAe!evv&Lj#iE2t~{FnHa1o=NU!<-H`aJ)Gl%pL-<-Y4u+EKnqfEQsKVWQkaJRCO%+ z1Uthqb8qJ0W`*8U@Mwe)cK#~Y~|z6-t`fr5PwJZP|p z^9~^Z!5c{wbruCoerwLjAi&hZ@Ms&UFBd51%tX(_cWZN$#ko{hUxz&AnU0q39ibRL z6v`hqCEX&MA{#4}DOD5KK~X|H5O)$gC=(&eFEdqhsR#8N@QKw{QXkJr6=HSQF*Yh` zVewq}t~a7*^?O9X!%%8{rUh$U%u2+aZ<8_5-rLRb+EBrCbUP(%K5~AM#}I6|%AAYN5w?_Ela!k* zn(_IYdJ0$ls?**1!Uz9Pf#wV;t=tWoVgxTrcPO4=Sz$%`@%p^_&JBGHst0n1mu}B) zcka#mDtnNFfcCera9HU_6VMm)*CTK`%=0wg^Xjy1$-aui@KaZheP3c+XdE-?7Zy$s z6NgVHvzexDf!lU?FLc5R1oJ$)&CDm|rw ze#uf7*PqgptgthbwLfE3W0=3YfB!mbX_&J;OmsWG?zn~;!MCrn9uW)>)Ort{cY$s7 z_1h!rWLvC@M}PisuRYi#_xq&9sJ&I=T5Y>g*66&})%x=LMG`q1t8t!XDQ&*%)3At7 z^JHaBr*V7NHTHqpVnG?kHb&kr;4k2y!8BLXYeA&XdlR+$_J&eZ&z{wT?6 z49Qt*9sXk8(%dk*H*)+$^3Uh7arHR!L%sFrB<>_(u8}~xx6{4<;L|Z$6wzRtc{`q2HCZdUUFjTiDq$;jqa(8He=uh*YDE}5Tf_d`#l=8B*8 zj+v(_NT+m!Nx$S?`3JTg=^mRrbWR6c^*K-eyql1kjQzRy)9|tLHnq31uNGwDJ@s}% zG%)$zDzN6Ux_6ECg80IBOSU5~W9l{NMeR=g!hDJGrz#fFEFs}5(wmH%zx3XOp1`S+ z%3MxE84k{u0S+!G6b|kgcq-@!4$hMk4(`Mh4o)Zo4vxqryG>mf_{Cc@MOi7hfB${v zca|js&!D)->AS>;l#jl741gh9h!ar75B)KbC8ONndwtin3= z6C94!`AELEx=mKK-Y@$-oS%1YY&4OswQz+%L0>ryi52-mT7uE&x+q=GTMpwXgT%TA zB5;W7e&xG6n1AoFd+J-R_PWSzf6#;35065s$tJ_dFQQ_7X*RXBD>d!zYRHzbojY(; zg|DP4=8oC;`S^~W?@s4!c$kzm!EA($hU~VjhO_>nWdmm7`)=Q@8s1M>eE_qkOG)wM zO;u>IRCnZ=u%;>ie+T@4gEM0W6}S`r@}+F9;4tq?t{sd7`12j)FN@FKzdc_rXhhx9 zE`-OtvkxJsozSH{zrB~Fgnc*pbPkhJU6X*+*QdOH--U88t7~gDo7YNUFj%S|)2EQh znHij%>}<8dFKQ(De}kX=DFR)fdWe$q$o=85 zm|%+RF1e#U^M8vmbob7;B8w9#{9;`k_rBv|(_7Dv*P_nkKOX{5Tkc-$c}V_yL1*WL z(m7^FM@RK)og#%2T+u$viMGjWk-ubXctXa3ac2>cHbObGFMl46uXcxczAN?Kp!khx zRN%j|rjG&hp$bt8tc7Jx|Jc1q*$N|+GnQmM*-F!u$d%gqy?hEitRg)O*wV*X2X}8G zB(<9YgRqU+eEE{cl8UNbsSV6(3SCrdmhY0rmNkU!8RpiiWScqLe$l0fMJXD(m6xJG z|3izVOht)=gs{FBDLwlMWXitI8nUJT%6=kfkM@w8{=javcP+B|?Z*Pk-JgJy zJ728|t>9+mBt-Ui7t7}D+30A%t({$5%$?T$RMAiS-jp<)EXE4=0yot9TN%c9A3N8k zcH~aPHQo_!vw`URXRP5R&obtd;t{qx+;F?^p>3G>f?X;mCT988g=YH(=3q9R{AG~C z<6ptR+&*N;mus>RBgb8%_Tn+AF- z%G)QeVbeKGV)KvLl)hk(zHvi5+RK3%G#^|oQ=-A#p9&1+V=WWKv?f-f!DX)3C?LRQ zdic;s`O29-gFB;|^kM45amb}`xV6}(9~*~y=%MsSISP)K&!O+6`&*48gVeJ0t}C`a z0GrjgRx{1=_GpHdhUUl8DfMI=H7I;e~5~}oH;(cxH04# z0*6B#;Rs}Bri1$H!wUrcq=ULwS|UPNFgP`IKOm>my3@F9+eHo;85xL|@)ZY-Rzu9s z!78Q2nr2yv1)=Myi8EcV&!@M0BX~k%MO6hH5Com^N=bMQ#UN_^~YSsX@l|Q8JJHym_n*T z7=?(hlx?O)>7@esB-M9?r|A)%TpjM7pqg^#_rPc6^XW5S*e#M~qS4Prvfjsd$|UD<*j zNAJF{Q?GtfYzLgzW+>~$)?u}iZD00;6)V5Ggj9J-4IXWvvhh#0v0&PYrBl|2lPXU0 z-vM{NIrk3_Kmt(%Vi3qbsS5NdzM%ME?a+F!TVyPXy>O|5?a>yQ2*hhD0pde##<5=R zG-#3#D|($85{K~c&8j}eBaL<)@UMN_-@^O06;#wJ7i=6I z!6qgq6`2q+{8I{h4UA93b|0I!X)dBJ^*L~E^u&fG52f)Z!S#2STMdD)Y;T3XD*=%> zcW}S}16R9rF)}iGcz8&yt*!B7P1xAm$54CvL2z^1k(wh9T9pGwElIp%;} zd*$PgYBfqaR`{=;tw^U*x?v^uzuSR<9qGHI3-UHoLH@=ZKL!%1(tS|{ee9O)|pq=TOJ z^WVRxEx1vZawYk#6kO%_DH4uXtn*5on*FHt&^v2qY^Fy>P=JLCE!0e+V{%2u50o1Ibg$yA6p8z2bm%q zv+2N}szozQ>)k+1+S}XDpWfNp zHYE@*QnE9EiGmB!u3XT(vfV6<;nDm4Z#XRAoOtOvdbP+7HG8*LIk1$-9^wK{JQ6n+ zmC9wyPD}@eX>V_zzj!#lyyVRO(!NnTF`=BPQnvl)@J0{@1_4{JU>tIDpbXRs>Vy6I z)5%H9IGLhU#Oeh*^@bI66vIvX!;J`_x}x9pgdnF_zBlUf7xXbeJ8V`%j5|IR5Kx|r zA+0e~9(FH$=KJxD%C}fM?;bZA>(9kak`frA8ap&l+SV!#}+ z4wBMt`9!Ta@S$BjZf12!5rBI#vit?r!)Si^+BE^4>!t zqAC3*{EfBp;HsgpzwH;mfh2$E!h(V0fTC-|{ar1IjvBE(nkW+`+y`_` zeF`TnJgOt8&L=+#XMh_-zdzF#4D!FAiTY0DO=wvKy{7+XRJm|8lFUfWzJEeU`*xk+ zG<6gfVaG$_;qR{m%qI1#A+SUg36j?y6!+vTS76=_} zKR{m_-3h1;ZUiT+8VK_BNej>!AGdtl>+~#jbZe~jr0@N5O0xaZWTd-XfjRT=@sa!V zdX*sQhc;A9N=m9#t)nZX)!B;Wo1g0=z=cK%_)gl8cms2f%f_& zkgkQjb!MAn#mBRl22k1D9>(yj^uyjsod;h2f)Ch6Gs!<)s-4^VJFzu=f6piKu#!Jw zaUB+G8`58gpzKBP%P{B7rJG1=X$Ssb#|W|SE1PlxB&oRrMKiJXFv`7bjyZMA@_A$H z#prpEzf1hfo$eRupHEpo<@M8M>}xw^bZZPzpx&`X`SfW#=q!00JX+JnI9FIzk5WV| zW+cX380@uSFC9jx)>npyU;8Id2&Q&jrwsJ!M%#gUD*DhmHS^H*Ao862=?U+7HoZ$~ z!YaAz<;+>LY)%jfHd0?LT~|*Qey~eOz(R*hCNuoCq=~5$%J9u#P4l;)vfp@-T81pr z49!!vtRUE>X!*A7_ChAED|e*gYZ!G*!#tAVoveQkc_%b% z!?r8LI`Z~Rm`iUG&GFiQ60PK#jc=-(xa{B5zrU)!FLz7F|BcpzOgX(flyH17k=5AQ z*%?eFm&4ggYG1BJnIO%^F~3_#T1xL$JkF$0!xJ-3bErq<0pzlPFvTpLk^v37k-qTR ziy5NLWGo43{IMhRn2|L{VcOehL7nVLazdc3a1kgTN}xohZpRXR3(#z+LrxzCqJ=-@@o5-XLU@UoQJ=gYanytfb z7tuotZyjJJdTYE%q_9}R966vLy}P^nweU@d7gd~Xr@hpCu*oRr3Q{}t|x?m zmpZ(i*n+7@+Q>tcnke%&yA5NAX5lEOkH($=m*r@-kjTQ1Rn|Lj5V7dVnIg7OFu(l! zT(W5D_u8_MG-Sx-Tc;zEuJE911v!ZE#P#Jf|9&ftQ|SE9;UdJSE>-^ULQE%o_puB1 zdbq^wu${6)Nxl5`v@|Jxe38a%=4d1s^1^#ip-CYKZG$r^-{zvx3~r1*v5l|IBNzEP zni`ucEmbM4lTO}PH3}2L)j;ICZ+V$hq7=AIOf(R~lsi8dg{i_w5=mX#oK4KJNMo9Z zM4NJ0+-y3QRVxg94mpfzl1q(1Rh-nv+1sntm&3hq?T4T?Nldn|HcH`;!_ew-wF0)! z>)rPqoPnW9)t;PhLRUM?Sg*wnyq(S|2E!d zyU;ndT|9`&x&7xk&KO4&#wC<^jjs4bXA7U)-9Q`UsFcP4Kg!5f!xKH>sS#GE8^>E@ zF^`&jdok?Z{7d9aSWUo<+DnguyM;GHVpA=F4)63g>=&JV<;(_LqzN?+9{zPc!>1QW ztwiV~N&!(WcBAKphXw-?SspUC@6(@a_gT%NW$o|)=&_(qucgr;4Fr`nJZ3a1_fUEh zF|JR_HD30mVTWIH}ISmEzNIzsd^!UzQsp4G=~#nT9NPI0nsn`)6$sWK}MAVeC1=33%ITE1g5$dP7r zswKjN6g~=T!(-s9I_;P1CS$C;c{Qxy0G>PvKckC}B8!<}#KUJB=G~ADs&a{R>q#gw z68KP!N4Fq0*uC0!XFLzHED}e22S$*6oK;@@yg2FYYeomvF5j>Z1BoQ7s zXSV!@^$bdhW|9RRtCZM_h0gb-U{K6&LDn&JE*)Q~AU6uh@k;RS1VJPQw~S2)LBmNu z8^`fVCQT91SAJPg!X69msLUH&^%;1ODC;M2BQ&AFJE5#<`?znpG-I6wa0P$aE&cTMt(c@$RgnGmuQohUI$#>bQ}i{_+GPG{Z@JPVF`VH z8sC#BxxLAxbtti}PWXl67_P2N=dD*Fcjj+%{GgPwNDp@`q4lwL3;!0Vyx=LjHOk2_ulMEZF8?L zrqgU0xSn#jjfK75|OxFa54JvBRWV;)eG)@V|rP>z%mUJwG@rc`6u1jv77?S z5VEr#a>DRq&zM4D1;#IFL@-n0nEBXxlM9;D3yBhyV_Th?88`WuJTDnNnx#nlZF%>? z>ndGbS!kCi2hTQzAW7xB9nWw5Eub(4>&4Ofdg)4A4(E}XJ~Es)ioOS2p&egk zX{G#iUO{8+*%H!eieTKC9Y*I;?#M$n<9bZR>HBJ^rZVIFCMC4n!lo>XQay@tyL&N> zvdCyK>B3!ivWj?K@|{`8sjzXG^=}H}6MBSe=Sry<5{_y*oP`}ve-2S8p!Gj43%3^+ zYg2q9?yuvG9KBZkd8_SYe|ubqS)XxO2w6-fX3r8NIv6Ix9&E*?1?On++&^PCiKhuB z{*imVivwZ1`W%`BOc1NV$-OfV16l$8@Z1>Rdt0j6vD34h$l%7#)Q-Z-5mdoqVZ0sB ze1-Qk69!kG+8Cu1heNh~OXSW3>1ym@k_N8e+!i9s6~d4aH1$0$8wnIu{*(Z(Ox2iJ zlcA<}hx6ImT~_7a%pmNFG2-kjbVoQ{wOWM(stcZK+)NlrVP_sgq29{o#P#XF2&`H* zr}?TY_T&0e__q{7&A3!35-}_Ubk-|9kpY1K=vM(DssIoffS$Qd>bEDYO&GaFRk>W> z7BeF$PU;aOwOiLYPOSvJIXG%M|3I6s5NHek>$s0SRL%-15|&t!^maJQvCewK4Jx#H zsW8wK>gx>=t%l@wpb&T)TrAwDOLp9AM2AM_&O1Utj{tgM^uD6bk;p|vm&zm4xP(-+ z-G85CXlP(rz=mU+CLW6sDf`>Jkl6e4=YN_YrD(BrE+m}Yq>D@nz1ogs^}f1P84ZnH zD_9pi`tH{tcznf@r z13JR_Y2qUL!Fmt;dbalqa0{|4wK~;0wotw4guq)`-!s@!uMf-pq7d2Dr7s%gCb=p`1z011CP^>*0x^xI-d@*ZW})RY2fT>S~j&of5Y;V2*gFw zf-2-B8H%1Dl9o>Iv8a%?P##GbMR4JEAWVh{oaq3yqS&}rwqeDgee#izw$Em(Tr1p;Pp?J4kPpV?4dTO#iCnu z@+z+IW--_~A;K~fansTyB1-CAr356r>A}eV$SEl`Vc-%##{%S^=00e&5EorVUByQ* zvq4SZWDqEIP#D3+*zh!Qs57}~GeV$JE_F!ZmCcUY1TSIdz27EjMwzSGUPYCP{X9i{ zFGm8;0GbRMDox+`ZdkQpzFLy9k_Z=J%%DuhK?w=iZVQTvYv(<4wg%|FfMW4K+2zN= zNwk8%>UrZ)6z@2_)$JxH&iwQ4mCgR-*Wn$=rS{X7178u~yHLTl>|jcgMla1<1E0e@ z!ggESN)%l!p2%jWQjwjZ?boB-v~85Vq16|Xt}Q&HfS~lB9Mah-0;qkgF*Fxcg7YAU zinyU@6dT=N^88RltnKEGk6>fvk6)ksRdQ4!0Bfl8`J@t1&TY)icT-w;SON^dBe@=8 z+vM0#frZsl(Btqd;h1~3kj#AakumYkz$_ba!0sT1@1L{g;|=evlAIj!=JVXcLfQgh z#I_-(JRLuNmKAV8I`VbV3B$)S%9kVA|I{MNe~&|wG^Zf^$~i=WDC}zun-QWB#lrDK zRYJ>!T%J-b^jj*BqT>KwTtk!0i;#1S_xXAOV6@EuTI?R~5osJ#DBygIM!9gvvw9E^Shfe`7d>TRWqvfWcS1Y=1ILhDs zB%f{QHqO(a?-#Z~>2(B9xplRJB7+u39glLwhSOZmM{gUz%Cg|r7xeDWTabxGr92AI zp|RkNpi$*O5m}_Uq5E8I5%t9!ke9u@ya1zN)`I(M6{mf~O*GG<1e^clckR_V5;elS z9y2LOPHUQOB2f>*o#$*Q2^Q!=G)IM59(Q$lne(GgH3g3<-uRqiT_ypqtb{I#r++M! zi2mQpaLLnwJUV$7jk#m|!L4%L8Vl@wUXEg$S5U00xod{k)$l&;U+yU%>I<2}@Bc`% zP9i%Rf7dF`@latwy^8e&!Bdseg;NkAPf#f_NmB3B@gA}Eiv@G~lo5qVmC`A-+$L{A z1-22f_N735Vo5K1QGWn**$_6n_+NT*&spE%X z6=(i;e=t}q{PXy!^h56{xunswF;{QzIhr&98@+@oH$GPeTVK;W4D`KhS>A7xx2e~1 zw*1O4W~Q{AW|_04_{TzbR3wnX0e6ihRRItY$Cvl7uFKhStqm&|bS6V&?EsY?P=61y zjcQ@Wr#_H3MIdm+>jtspdEYxy+({C1DI%Vf36|4iJ-IJLc2-j4#JSClbYH3}Qikgw zYf4FUF7BSz@U!!&?SK_IgGy}_t_c`cfVw>V%da!n?*rgv0^Y*O!=Ds76hLJEPYO?r z9Wn==n0IQHjAfb9Eh5aM?9gK?H?D2pB#q;SC2@CZ4hi|A#kt<3JPF4$2m5p+%5i!0 z6teqX#9UFEap!AX84Q&jWqWp*RO|#I2}IIgx^-jMC*+jC78)&GQb?532RES;a?* zai9{JTFyeE`1Mh>VAHGkm5leU)52Qz&C^j8>*4Ji>>xt4(fU|GEPkix@pnv*`3s}< z>PZL*$SDe>#`u=-i+4PQADM<=;K8*@B=vs7Y?(;6S zZL6m@i2jyVO4?@$15ZdhR{7Z!&U$*%Mf@qw_sxz9szsmt0a~63|rW=#Fx|q459=WXpsP43>dkMqL95%4A6UIVoX|Jx=tlQ5+8XXgq+A<>CTtj3!S!XKT5BtR3r3~%66WH zIgVOT5(znB0B@}Z=BAXZ9kKjOQX`Ip?orT)|E)wjNEqSfvvtEt#UkYfR`{ylvi;KO zotnzQKZBJHdPfce2S6{48!{(8pnAg&`2At%&hv0~1QI^2?8g0jkDibENAu+IuAW5& z4s=qLvQE@VpDlaLpuY@Nt*_8I7Euc^mXjanx22Ql0M%L2p*&$jgFAghJ&6toyQoM& zLk}$-$j~8P#UPdeTqm{dHH8$PCBTKTvedlEQE%6XjbWXVr%+Ymy6FwC6iFTMiDqu2 zVlETD^G0iFYJ_&EL=pcm9VtF>DbT4zQnmGj(r93sya{j0oUjV2H%s=KzMoj4lE(#7 zOTmd{s-dO8&^p*lY0<0Nn@3SyIQ-54J43glm9rYhwh2tDey5y<5@Feqh8qKOq>Xp1 zI*-d2WQ~f_4j@LUlfbjpTR-pB|ERkqz_%~T{+$evQUSk$(c>&@!itkmr+6E?c9sNPCQ!7o3>xTwp z5HCjD{7fwOhu8Sc*% z=~XT;DbK+%>Z46YbMSs4JQEd?k>)NUVM%Uj73SAJIeYj6X!8gm=mhW<+ek(x&K__y zJo-P)H>P@B3>{P448(Uj-$Cl6wy-~JhGcX|sW^+5@5`uO%aF7fA9YWp0)j7~RR=F& zgv&@NdIqqCr|gY_MZDS?+3^&30#UR}>5v~TFTVjN)}-Lpu~dzwdDRX%2UYG^Bhbwz%`mF&ConOrAxbJ~0aR=S(K(ZjJHg)+pq zP0_3NRj7rjQiVDsXZUYJ#Pc=5D0nW|@guv2%k)^dk8eG@iB=vSUz!_^R9+8{9Q zL3GsJq@yTB;GS8}S}%%0(D6%7@226#PD6h9;l5EE|R?lJMqc>3c1$d{Up{@!_A5PfY4(8Rr9QY2XsK zjbYN-7N#3|D6BT7%%Y$T^T6)7e1npig1CL@V1;_IKNigvb8SJ|QnS>J@N)?|4&7gd zu`OeJ-vXBmI*ze%t*Oz>n5*1+oxCCQ?19sh<#|oH5rgSS?egoLkxk4Z#ay=;{iE>I z-+Ju{6yepiLkLvlI>?Q;rE(lS8stkz7-*uBA6*LQNc*c2zRs5m+gDH=jIecbDKjm~ zaIt2NoyIBOq2ocah}%sVoO~xaGTGwars<&=I=qt7To^nL$o2P~s$Gr#1N-!|4vk4` zL~h&35bwnJD$qmehCYB#Ap&9RYOc2@2dfz#CdAP{*><6^D8~#w+X-EXX}Z^P55CO; zyl*6kiwIO{%V%d7DBWGAi7`aha?$+j&*YEwlH)hJ_xuZPS|2CTEBkPCX%w9f@@^}J=E(l=FEq$1gC ztJ>2$(@|;Cxw5Y9xo6m8y0@J6Q(3e{@gqOLAGoV(Qr$^w?&G0mAxM!1ou8rSYOJo; z=)7r-`d4no4l~!?Tvz-alR7z@y#eNf&H*~K+~xIztYd}SOk7T|*A5slnk<3Of~^JI z6=4U6kol#60w!!}yjL)NZ+8`TLBd(!9aUKEbE4xs{7FY77>B>S24lS$ot%v{Up>q1Vwdxk$ zhqD?Guy81eh5Vl8jZ1V;^NUmIzdZsayvd_dje-o0HI0DHNJDPA{SpH`U+m0nmmtYHgK$7+HBy|HWRf70nu`Gxx8S`j2d*Vv8B@A{d))GLgla?|$S< zB4H^{Bif!Zt6!eqeWz}rn^H2YHCRx%twPP%7w^R7R1od_N>AbXac}_^JEM6dZbVJt zhfbhVb&kBJj??w$Gs_B{#uDlawq5GT8)yCZE)LIauWP3ym&Kc%{c80k*9<{6YxAzn zi#HPO5ktw-N*_GfA*J4S8VTp~by_yUCrOB?iC+-;QfyN`OYi z=+G7_`I?27?2F!s;jXmilj4AS1RGuU$WSVDC^X3=NYI)5ufyl@-$v+rIyIKis8}nB z(P8nFiU*=G3n;D^w_EB@pNC+H=D)lIFzx(S|IishPm?bDp_g{uK$8u$+o&~{h-U)> z-_C2Q&Hy%)rGC@ww5=fMY+IeFj9#{LeNTdm{XwfBCd}+pFj8(jfePU|hMKU61Jr;l=^?Rk9YZX|#OADjk>_?yZ>h50~?wGmfuFCb{}j^1px zw~GeOGk{$PSk1^4zKZ`?2`LLDz7AxLX$C}BT=#caQ?N%0GZH=k#2>|f3>k28GwSs9 zlqOuTGg~M?U5hm46k7bxu$1`9qlLJjw<~L|>8r+2EeOZeF|XOWZJ~%)qga9~68Jac z`9<_U`Vt^iwq07xT5=N$n^J`-1Z8xhV1H;SA{TxW8=yZgGbGDr*k@b5@4T7(*a(9W z(3Nz!U!H$e!G}GtkMAl(XCb*$E!f#E4~yOCd@<9n7^sujmq9#nFYFUC1<0@PzRxy6 zv7RhrOE9)FWch(fMl4~bp&Z|3-jjYAqZy$@@;DjbFmf~)M|%6|-_57n$1C%;z!%>} zhqyr%{ek$xAt|Ij%YdroUpP~6pczawk-AGc5Pk8$YL(Pzj4BL0Nwz)4aRsXPanK|Z zHhi@7%^?})viC4NH8L$`Y~o}IbWXr!O9S}P+mN1$&^3}E8$s;bRxI;0=hhh;wN7LH zApPKWZKC!V8=c^r%;Bhxo8A!;|gO67%c9p^Vv6}>M z52N-{NO$HC6oABmk~wt<9EXk;s|{`svYcl(Hz_=YatJPPDy{Tm`k#$zJ&!w#hcbt- zcfaLt?PffjHE)#ydLZS~ux#&dG>(I%hXsuSsp3kB(0v;bNr!=6F#v`Ywf>_0beLgo@^J>Gqc~i&0 zl{B`ulQI~9GjYailS-Fm_6%S;GI3>hw$tP2@G^!OEsjHZuA(Bhavbe@tJ()NH!D zWQeJi(_kuswY8A@()WuAv5!1qh=&aGjlhLv;_&cv^o^M@2j)Eqs`}@Cyp9Hey2v)0 z;}dp5G?IiNRz$kjNw4-!?!WP!4*-EzlnHP#<0nKhNEi{4|6yvGOQ)V-0|T^+ER`}K zKP%&W1H{8F6H?5Cs@cg%9J*ZH-#r1~LM^*GY9wlrb_qWR5M99MzMKgw06SB?V&rw* z5zaK_@=DRYo>2TcUg-l$2q9u7bx5MyJ~#?Z!BAIar%V_ERvci6MEp%MOL<7*n8vt) zq5nI2FTBq2loS;e1$nqId?LfN<^Dbmxb-+M7Bqi=hB&In({RlWmOn#f5h6J6|2pf^ z`3T;k<#|95{6L3kWC2fO+q?$wjS*fT=jWX57WF$;WT*ASld!`~3s-tf| zW=#YW**E`3!}YGe+a&i1o&sLI;;SD(h-z`F$4>QCLp)M%9YT77C`A3`hK7bXMXm09 zD%%D5)GP-~X=GyGHshZ;Mg@)zN%N=Ayh-65do#1qLoqgTGVx${$Tjdut3-U?Mr&qg z>hj&(l@A$%#L33j2)Pf1g$DL54qyPn1L(J+nRnkvohNMO%R7LJCymF-P-0-E__mgi zHbxIybF_njf%OAuy*X3Pe1P5q=s{L@e+U&!hLKHgLPFha16>E%XFJ>;QmcoC7Mx@D zn+;9+8{)t}u zio@M%#xdT&Ll`5?Bs+#Qck!T_GXyYLBV6x<9V7Z8fSUgwRH#yhm!wGUY`^JX+=6-* z{w`BkaeIGVpyq(lXBfT~jMjMHVZNzgkjveOJmSL-@2bt3s<6CiS!hKcb>{WaM^0rh zl8Fj_{r(fMmUG7$xy)nSB$yG~PXH+iFt7vd3b$gD2bQ&2mhVe!?byeG++tjt*PCOx zb9hB5tdVlxO)^t=u1#GKOs`t2SR-_qu8o(FU=P2X%a$CN7iR9;Kv<1?~(rJ@p`j8abE|%6M(=5%qX8>fJ5xX$*r4|`ACc|q1XEpAXQWxw*Xy}_&2~` z{sVBvc{^CSPGuN%z;8!$3FcgcPT20TfA+ZNS37LRd`~=#ofwIx zMt#>LjyBhpk-gAB?H(BvABCh%Ed5QJf3xdJq<(KaeBzSGyn!44*Td+0$KNx8t&(Rd z=u4pVF*T+Ub18_63&%KcB#jEiPs`@bQfA_f)@kK+W?LlnTtsfehA^z{C3ZFUzJGE) zz_#J&LwZLpq+htGBifypoHxUnWXP7pXbKA-yV(g zvp~TfBMy?NHkVgwG|Jh_sx*50$b4fL=;tsw;^NEP54AN8cabBhBdlt6g#GV`gu3ny z;0%OO`ukwA8H(Ebmm z-|maxAw~ycp;{{wF#B~czfqt;6gvY>w?3!9;e_u&$;ikM1?e%ps}$1c6{Ee3EFxEl zO9H4`UnELyA@uf2gmL5&Ec0oB8M337b>fX@b^*{1sADds(My(tq0-ZMJsTBArf}SA za$k+*yFLoV4}E*QvP0&s;%Xf0fcpUKBcOD$5IfRO%syH;7wBfxN#tWm4ul_-y?N&O zRlO_C8Yn3fGZ=UPUugazs55^{0&Ti*ro=oZkuPs5WKj$NHF*y)JhgrLUUZ!5XP;+{ zS3}Y>XbW>9*&+?Q{J)dL4JvR)jGnp`=ub*Fe;-nK-gLlFeR&-(=mo5XzP>(}qQ(;e zZn7MG8eS(wO2Ppdn-X6(Zbat-kZ^(p{;ITv)nrZ`uJYwC{>DfhLV*bWM7?$UMyV?X zP4@by|tf2&Dk{Q2{ztat?{GC|88`y?M_h3oBm zjohoyxvCY!+@Tl@%_hWu0u~bf@f`(GDlDBB;@3soWtSwf^j4KQ??`UVAk)H*`nhoV zvSFauO5jaB6*`qYwlSNHJqA{Id2TZ3NsXx+-!gb*{;?l5VgS zO@)*xx`&(DcxOVMz0QENQxH-q$#O<-y7#w5ybPCIS1YnLcUB7F$|X)UwPXFYYGpf- zIKEeb=ld}QyaDTxdhXt^0Yq%`;_!7s#Fm`(-n{|nq-hj>aqaIH=9k3-{yr+*x|w!1 z5lNdS^)T0QTED{_rN{bD#>zisGEw5z$!~KC(Bz%@DCt%Y73*S#^Hs5{=WWFZ<~0af z@37mnPSfTDdfZFetYtHaF8!ptK8ll9ej;rWB5JD^Og}K(-v`YYTw`7h(jyPGn7+;) zf4x1O(L{gg;I}O>$o>ka<{jCN+;->^96L49m_=6VIo9wnlbAIGuUg(L$17A!4Wc-_ zR@L+P#yJ>A>jTCsOxaVpowpk5zDq5w3i}fn#AJr>&{ci&n-d5GH>pPB-mr&RFJ2j4 zRK)`tUkma#bveh?10o*b>xG6t&2r(HRU?6T$+d4BcR37ltQ0djs7RjBm7xU&Ku$4| zWuBGi^CVru*_3ThiyLL&2t{2jTV6HCw>a1I&mihPjZwqIJ`QkOo)u|v+yFlEK?0s4 zYh@4)d*~!JcYg;l?4JtxBu3afVM`u{{e25Js}Y&LA+s0pubOywlG5hBov~Bhw7ErGg>2Hf(RKe#lNF1*>e+mMCC)$c0gv7mj1tCs$)1 z!*CPH{i}b*3-c@pa+baBTuXr}F>Jr)sk^7im%LR{l$i?*xrt#TaG!hjq5{<3Wq%Vo z9#o$pNGb~HwyCI1+9+so*;22UkNY+k#MEPZSGjwf?(MYX#G=8jX4h1q`E2~uk!+T7 zt4$W)XE@Xs*J_yG(_|F8PadZ$W}0Jvus-=_sT<;y!`sXw>4jdMa=WO zrvCXKzd{!&OkPPIsdH{$h9H_}lj`-|F2C)`sme_QUHt{dck#c=U><1Rx!47*a>LSV z4sc@4%SRTc2oBR&PI^3wKTIo6m_~^3@Xg92Has_vTXk9IBfrcYdF{4J;}ZQejUF}g))FyqgJ-sd3hg^&4}NCf&dJTQXsp!DPcI+wBp#(}f0Q-1ubtJ`C* zi5WQj4RkXAtAJ7b5+bNFch(W|#2LR4M1#OC;?v=4Ga^2O)RcKc--%U;XGaWUT^png zK(q<9tdu{gGUEHs_W?{MLp6A-X}Yw}kJBh}=t6z1(sCPb4fLC34PBCJkz!TXQ4Vei z{YI7Z|2-rb85xNtftmSbSg#B=gWX;Pk~4ztq)D1NS_1lImeh0LNjW}oB5_}FB*U4k z{x;7?yAe^JwMbF$_=kXak}_zrsya!*x=blm>E+>Q*ZzTicZT^o`;j_BUJz9@h)CSs zWZlV(i=W`35*QUpf%3Nb?hQC1FozE&-RmC|DY7F%2AzJ)sj@o;_Q~!N{l!bfTlbH3 zQO-AI!AM#5I*yJT6h7+PhSZ%Vz=Ip1vn|kqm^(1? z2jK%)F3PkIgRhe-#|1e2Y9X)lA>Iv{p)7Do&@1Jmp-}-we$c?u;98UVANp z<{qJ87CNMlWH^w{W<5Y61Ax}Hx4Vl9K!Sg-f7Q%+yjDr?@!u6<-(@p{j}P0tI_8d~ zNAH(G%knw5;jDtf4N}3wdiy!jB{j@z0WbpFYsqqtjuIJ+fl$ zp}ojo;h94|!o!rR4-PKQ-p)2MYQZ}QR9uog#LdGYIjFrJ(|AeT5?f65R!Sz5uHy#M zEuyO)kMU8(Y$hnDQLj?=(dU8kUsC;@u-rmT;xbSrtilcp!;nH=Vp?_n#Z9o`Fx&}2f z&s=JH0yo0^4O|#r7ZNtc5u3Y%%=$K*ie4uW9-GV9p&XYJm!r6#UgK5;W#O-F>PU z>}iE&b1yMZqdqP?%H4H+tVXUUS3Z|qk^cgk4JK)x@ASJ zMS=dv#IMIye{pH|J3H@7e7qzIgIV!Y(XKdD#~oYoWIL72TZfT68N8Mr^`5UV&U5?v z3RG=C6(3C{3SnGrQ~1Yjv)({q2P=GZZC{oj=7N8EaU?FvoJ$Gw@S~!L?A>lrwa?K= zl9x9bq*h;Y00KwleD~lc6_Km_rv2+a4KeKFh#%eP!cjX?_PT5e(eA)ulN}j}4??YY zR}-Nj?OPum($F~9^kidC>!^_$gt*FaON%xFQ@HvKFZ8d_aj$@V0+GCXH|tp)oK~VUFfVT0($Q^ux?JOz1vcPJ}x-> z5|jrCUZ4zjz6HI# z&?~*DRGuX9F=d~Q#F-qY+PS_nZC@g}Nz&^o8oU&b%);D`z!E)@Ub4)Tk4j*gC5+k7VU zkKZ`|YXe@xBZC64ceKyLDupa&r&x#EKhu_xUI=Z>IkTKS? zDxrf;N-%rxv1 zC!8A)xqtnnEmLUp+w{c?Oon5$kXN{E8tbb4yq=rs=Kj|FA!OPy6G3_wH3ORuXXYfE zbdG9Bn8^;5NJ0zzda*MC{w(gDD_?vfvwO!cP9LqO@fkAQ_0}fo&&H!lFbn{he>q}% z^kX{YLtO%ig?M##QswCcl=(o6c45JSAg{ZG>TF8+hN$TNq*%ClFk2k{_(%zqy;3i) zmC?y-uvQQe)178+eS}j!h96DKc-6A|s|ND<#PK`r_`BM~lw^EMkP8ErNT4YKMFeQL zDEW5uT@F>JXtV_Hn_94}8~p^9=o~TNe)Ujh?>)h*owOpO!(s5vo6JVZo^FsWdtsa0 zZjSKVU@~@M%Liwye=zVPv>-uKz zDFs!%V<+YUFq6}DLMjaqAQ^f1X9zt~!nSA{dnqMS%X10n)1J-cx+lQu3NppLobw=9 z7g7G*u43177k?OV5@;eHCq!pN8*!#bTj{7cdKR@N*VOi~v>J}q((~+hCDwL#%K-h5 z@K@zS9$B_G=H&xTrr%jjeR~@`v~e2nmYB_K`MYKmqMog9h=_>j(h#i&oB=&}?dWMX z=I(la4lq+a?tC&_Ghy)qXk0)^0@@GYG(k&uY@$vCh1xSp&GnCNKqm>$FPo=Uzc4s zeXtfw#zIRed*fie$=%!An~j2v8RY~PdLq%;D!+OTNFf}cBo&d+maCQT6bWn4EeGy2$>HdvEy9I;% zOQpwsg!(5wZBkB2zccD};L-zWdfbLy3p@rmFYu_x-qpUoEN;~Vdf}81er7!|%7U`P zuyw}4%n=do3NrSdEK#by)qrJU?vn=AL;_lx1fD|d01fQ z`uZBDVF>pVDI|4EWi286vy6y!K%~4G#?%zz+K6$AAizBgyjy33p}dwzY;;($ z6T4x7a3DVZSILw2ZEHROU-I6{Br9ggK9m@PG-gUO9#V==<6{C(Atev8%bJJ%{a zJ#}C!-GcA!T|&Z#6YBshBCMNRqD+>0g3+Gv`5Y&npebTB+wga6t%+S~8zPA?@rP(u zFvS}wZ1_^DEroisV!L$62SP%^&yUjs39?xSSBE?on=;uEjh>pRQ?I4RU!P87JWvfX zS$tbLk9$-o41Y9xX~7Z7L1usEwB@12BVYq7ZSWUEJ<6hJ-^KY-lPRLwr5SHxbamaRaE#puT^>MJb4}2%B z{pU3QDKFWB-lLFD2kX=!b=^_Hfww}jw7f*)G6wjyoX8Whm6v4L?9915dKDT4S~(ZX zzFFtz=Vhr+T3V#rhmot}`Ww)8$( zAkF=G&zqk+dFTX8|G+wun|IH!J-E&SROztsk-?=upC+sh}fUj##+& ztn6D%QHd6fxgDnxEG(mdjmMoTG?@ADC(U({#McP3b(z(sVj~18OI`QiiAg5<25a2k z>`*PM3XHJN64K-?6d_-~6vcV+Y5RGVX(WX81qqh zl{8r!uHi*b84YY<&1q!?@JM1xPBuNaMwY_$%zmo1t+UKgim~U52=9DH_JTMmr3>^2DJAe^7{QB1C(zN7J zcmvg#T0v&1Xm@8g1F*Bdvx5%=6*28F5ia#!^mQ3PEmb)mc+2}=EFNlJzU?&d^oU?< z4|e*rplGP_nD7}bnRK>5O<)iXg_Nupzfkd5Y0gG!;iJz#G%oz!De3nYwPoqxRkc6Z z<1@%Hiq|1J!L6Q(!O5RrkLW@t)7^q<{i_guM!LtoRJ{}1e4V-D_a`%ZI1sN9-0o)kQ56-Qp0ofAfhLk{J4v$PBb7@{!Zp|FUg!-Q$uiTeiV zv}9#DsaHEGRD6MD49$p9TGHK z_8(j&BIc$mrzq#OSjL}^Jadfg<`#rjHy2n08Pp*JtIrHu7R&;nB(b3;-^AL_!!QI0 z!Z3XMx*~ABj93W|&XRKk^P;#kKW_8}a#G945vq`rP=5(VLy{96mA+28Z)g=*FJmRs z@Rp@6M#IYV8I20Tx7;`bo7HRjJmj>EIWOc{{0NT&es!^ruA75Jvw%z_zWv-$Ls3)l z%P+|@enD^YOdg57lmGsl+1rqamgae&2HCJjZ171OR7H@CS2v#|pE8TA_e6Phj^HDZ zc^)L1n|VJ#)NuLdi}PE!mgn+LhuvR~l!I0aujwvJ+W&l*bBO8QBaJcs#9(O4O7iVe z=GTQ8rQu;ij1;O90=AZ=X7Y@5Hd$HFx&q?_Xk#?$4J0srWZUV}Yed*u`~8?pay-H` z71vXze<6Z7yULjTR14Q`(;rRQ3US;7BdgxW3y{v<+DgkTF+6v*^}>ske2z}?LROBL zcTO*4g&oIpYPbea>wX@`~w9+f<0SdLL3s}g{!pocO#RK*KK zur1^;am)zDH~I%5QzkA9Y`6ttP4*^%`wTz0JDZosaGX~pmAp^!ayYGLGu93=6-`DV zWiK_Q==wp5lC*B6<`0@E@#ZrJ3VdxZ17rpwpnM?CamuECbFtnQTo-FEuP=qu)*AM8 z10yx|SdqBWSlgPUh$d{!ty8ymuhbRdnc$h-Aj$_Mgl`Z(18;*6=ZNbbqN9iQZN((i z;eXBA+?)*MHzP!PKxWNzyQIk9iBNg$%z^36v@r$js$Jv7KB$#JL=X4|WKZMa=*Pc_ z=>kpZ_q-8FN3Akj;_3nN%=+5WTWx^m)VS>PMNLf&WfiNdtu-4HlpG403seY8wCe2d zQE_?rF45ww!ZK2^o_*qkdH>?C%iTW|kneOd+D9niZyR@!>%XLSjI@v1RESuwggW-} z_Ipc#Ge59P&EcL8;P86_rEI24&Q$LKCkITUPphN7BS5(iYzZyWJyT|Io4D&1{ey6} z017Tez2RduySl}g%e0@(&cT_!|KQh+zJEopkD`55Q4u)x-ti?qlQXnF?wmll5&S+< zo8l3Nr=54@96haWBwqyC+DU%8X)jjE{uHni0&Lj!nb@xm-Muu!CLw-Aw{;R3 zY%9WR11Dsyqs%_mkhyR;udPvRusF28%rboN@LTEQ-Y(J|2~UsUo5lo{DcGQmRGbMK z$16PBt-Cy`Wx>bD(DkSHD!)G&9}5<*49v*-@g9JL<5dWSHlSqWLZ)U^ttm+Uq5C?$kJlp6&WGTkNHsdi| zU;_VG@aKY`Cxkb=Cr7U;U^!;~onzOD$Hn{J{bQ8|w5(=a5NZIEp^dIi= zRj+E91cC69akEn(=+S`PaB+EAlt+Swah@bzSNeA#?y)>`TE_g;XNL%#^xsE$;4+=Y zMt=+doUJYoNW!dPbyGcQPJSQSk=bZ|CR*Wnh$q44;Kbp-AS)ydJ6R3q2e})3Eln8b z+Z@V=0#iDT(h_{*zd^gkbCmo}P@nQqqLdjn!EuYC~in`=cZ_itjq27+2bIt zLI(%?ESMjD&x=(#o=_x4c-;gm$tQW9BZ@LyA;^!gnNO@&nep=UaBg@@i=WV|X>z4| z(RzM`*n@v9L-7nE%Zguxg><2vdrrrk@bs*a+?tDtnz@r)%0DVye84p59*+IT-gr*Z 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 diff --git a/companion/src/images/simulator/TX16S/left_page2.png b/companion/src/images/simulator/TX16S/left_page2.png index c104c148bd8b16d10ae4c01e7456aa213b765b33..b5a3bfecd874c8020818e42d2d6ec1e09cac3e75 100755 GIT binary patch literal 32303 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 diff --git a/companion/src/images/simulator/TX16S/left_rtn.png b/companion/src/images/simulator/TX16S/left_rtn.png index 0080f271a83f5fae7adf709b2721c7553d8c4547..cee2e20615267d178cee88b765ecc7bcc7d81c53 100755 GIT binary patch literal 32217 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 literal 48242 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 diff --git a/companion/src/images/simulator/TX16S/left_sys.png b/companion/src/images/simulator/TX16S/left_sys.png index 31eeb409fd780032e2ec4765031d2d6315583945..f7a97caf4704cf6407c396fa7570ad42bcdecd43 100755 GIT binary patch literal 32243 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�MI}~d`j^J93P!VTp{XzLaPftF4EjM@FKTfSZG)l zQ+`CMpe4bq(Am!P=WL_W6H(?uMlVTdK-tv;L)1Mm=oRT&6Te<^IWGhC{%cT`hlYdw zOz7`gb>FXnB?TA?X}t+1!+ye(5(tD|ud3_29nU;+QfQycqiHGen2HOMA_|gW!V7)Y zRIr~dynxNNuj63%ijuF3s3Jtan3_-5@Z|!#ms)gkbXcsCrffiZ7^4O(yoAV#L%7rD zWYvD9Ljm+P2U=sB*a24-0Ro_NRs&7Ksy|pYFm-h$03S1gxq;aS(sQr}?L?hl)#mcf zhpSRE3MWQXi%}^_!C^xfcUsRN#-#BZqS8MX3E4P`1jG*)2yq%TVuk36_c%L*e(C+2 zXE)y=2)m~l&DKKDRNYU%R#(eFEW!Q8@~Py*gnesS*CU9R1c;sgc=_l9Iu%GI;ozcZ z;5K{~-rL)&E}J@SnDDC3EGDl;(^gTW5LWP(jg027{-MM|*3|YP{%;phQh@Ke`&)@+ zJ_a*i&E7J7tddV5&GYv2pT=`yaTOf$`%G82X6cBpuh+28dz+m)In&8DLRl6{zkOo*KQlOwyWNei!9Y6y&;YMxELbtk z=iu2SnE%U0p&>4OKxeNz)XV&hFa3%Px{c zu(hlE%U^#mspBS1j?JPKA%%iJ^@N%^9K3CQ@A|6!{mQ3c5M@YTbb%bH!}y^I(Ti$Y zijeQ$3?0>;HaMx_*&thimq?a)|DyG(1^zDWh+lh9-~EI=jJK}(gZw`-I6S|{Gv1~? z%;$=Dz*R$lvatJ;HDepNMRb)ZSHew1Y~xk%Q^lfa`b$%aCsb71g}!(@gwI_-Z^&W$ zlb6N%D)5(M%vqmGNGV46msCKiA=)(J$9X)T3(m0_o)Xf}_p!u4G8fk0?j8d<-hR1V zMos)L1KbD&!sn1Lm=+iwU?+!AuIlPTFAxWg@3-DRY!SmPg5kZ~w9epLfNLuMBmRO0 zu+D54b#3vhl_+6qh>6MOWSUhqv{EdTI_VE(@`^Sch9x%@tM6`x-ah7e&~`?8VgyLP zi*xxbFzk0DkD7Vp&bsjS(yM0&wi7<(N+tWK^YVBtHcGA0FvBh5!Hn literal 48264 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 apS*tlHG+{ZEEO#Idm;-{f|f}b`2G*DSpew( diff --git a/companion/src/simulation/simulateduiwidgetTX16S.cpp b/companion/src/simulation/simulateduiwidgetTX16S.cpp index 38cdde149..76bfd1f33 100644 --- a/companion/src/simulation/simulateduiwidgetTX16S.cpp +++ b/companion/src/simulation/simulateduiwidgetTX16S.cpp @@ -59,7 +59,7 @@ SimulatedUIWidgetTX16S::SimulatedUIWidgetTX16S(SimulatorInterface *simulator, QW m_scrollDnAction = new RadioUiAction(-1, QList() << Qt::Key_Plus << Qt::Key_Equal, SIMU_STR_HLP_KEY_PLS % "|" % SIMU_STR_HLP_MOUSE_DN, SIMU_STR_HLP_ACT_ROT_RGT); connectScrollActions(); - addRadioWidget(ui->leftbuttons->addArea(QRect(10, 252, 30, 30), "TX16S/left_scrnsht.png", m_screenshotAction)); + addRadioWidget(ui->leftbuttons->addArea(QRect(10, 245, 30, 30), "TX16S/left_scrnsht.png", m_screenshotAction)); m_backlightColors << QColor(47, 123, 227); From 89aad214359c51bde9f5c138e41ed6d444049ccd Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 6 May 2020 09:54:14 +0200 Subject: [PATCH 157/199] Fix screenshot button position --- .../src/images/simulator/TX16S/bottom.png | Bin companion/src/images/simulator/TX16S/left.png | Bin 32296 -> 32133 bytes .../src/images/simulator/TX16S/left_page.png | Bin 32274 -> 32071 bytes .../src/images/simulator/TX16S/left_page2.png | Bin 32303 -> 32107 bytes .../src/images/simulator/TX16S/left_rtn.png | Bin 32217 -> 32059 bytes .../src/images/simulator/TX16S/left_sys.png | Bin 32243 -> 32083 bytes .../src/images/simulator/TX16S/left_tele.png | Bin 32206 -> 32088 bytes .../src/images/simulator/TX16S/right.png | Bin .../src/images/simulator/TX16S/right_ent.png | Bin .../src/images/simulator/TX16S/right_mdl.png | Bin companion/src/images/simulator/TX16S/top.png | Bin 11 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 companion/src/images/simulator/TX16S/bottom.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left_page.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left_page2.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left_rtn.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left_sys.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/left_tele.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/right.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/right_ent.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/right_mdl.png mode change 100755 => 100644 companion/src/images/simulator/TX16S/top.png diff --git a/companion/src/images/simulator/TX16S/bottom.png b/companion/src/images/simulator/TX16S/bottom.png old mode 100755 new mode 100644 diff --git a/companion/src/images/simulator/TX16S/left.png b/companion/src/images/simulator/TX16S/left.png old mode 100755 new mode 100644 index 83d12f301cb8995be656e602a46318fd8289f48e..602017e44863658adfea82d23918918a2f5549c2 GIT binary patch delta 26303 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

Oq{lfZ5#6z!mdP;iXANB`~QEFo3iC3RmH-_B-W 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 Kl&TbLL;nxZ+_gpk diff --git a/companion/src/images/simulator/TX16S/left_page.png b/companion/src/images/simulator/TX16S/left_page.png old mode 100755 new mode 100644 index 5c94a36e10ca2330b5d578e23cd18f696e3f99dd..9ea20a59fe26650972f132901ccd359b0b102b68 GIT binary patch delta 29086 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 z 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 YU9zgpZ^J!%H^4tNB~8T&`PV`J2b2+5X8-^I diff --git a/companion/src/images/simulator/TX16S/left_page2.png b/companion/src/images/simulator/TX16S/left_page2.png old mode 100755 new mode 100644 index b5a3bfecd874c8020818e42d2d6ec1e09cac3e75..6ef922970d1a63e6c8b4f5d7f160822adc758d89 GIT binary patch delta 28884 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 delta 29132 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 ZJN&)TGdvO4Id{MxWqA#`GMN{C{|D3`HVOa$ diff --git a/companion/src/images/simulator/TX16S/left_rtn.png b/companion/src/images/simulator/TX16S/left_rtn.png old mode 100755 new mode 100644 index cee2e20615267d178cee88b765ecc7bcc7d81c53..4fa7d04ff7f85b317b4285681ced474937dc5f3d GIT binary patch delta 27060 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 G@BaYgrtww) delta 27152 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%0AJeAxKX4>yJ$s<}i-L|iaQ#I!>O1y|W9vEvhd^vq z?C2v9SEpBc>mnqNz_*#6|I9_8NJmnxWB4Ei{LHeNHVq>kTocQE9fK^988bciQe2?W zA;u2}8A~%+sw-<+2m*q>B{5~sToGYBEZ0I-t^7cv;%nX<9M1FE-e-=#Q2x`>C zVRUncJSDb&rUU7OolVI(>ss}f{|-~O|15kxM#G72bJnjYCdAnZ zLh82_@EBinKlPFZ!CKzC6U~83S1n8VAj|&Zydc}}((dwdrtJxIBnI7&SHG@m9{Em% zu!*vt`T|$eGfnBWQpo!tMj{wPYGUkOC4ToZy`1CLf?Hv=^+hu=oqheIZcfotbBX?%xQv7}8{PDt~J`dI03PM+$`Af=gTS5QS$ zMDByZkyqMiI=n{T@mL##K#scw{Kg*5gMc>*q%t(V6ORdCM>b!des_0++%RN;8N4<4 z@}Kba!qWANS@u{}dBH6Gch!RHsn`__Mtr(59LKq``37Ba?Kwg)28x(?d&KYbVv+!* zmX$jSW)IAmx5jSWB9%n*Xc3J+2!W>;U?JvJW^WNZGl6L5d|qMdYKeaHwwtRqMr+-z znPQm}?#t7LHu{2G=y(T&O^%NzbS46Dh|GioDCnO?gn3AM*JL8A%mD`Cd|**DvW~ME zbN++dN8a#~H<>uDqt#VPYNAog{|?{a$*X=Evkj#AN{)~06dtv|8Bb|l>v;rDb)r$p zt6yJUB)xPMSUJkRc|&y-xboPArD;=n)bXJR_S9-Y56svd3MubyuIVZzao{aVc_)?U z+<5F=zu2Of)D)vNn`VFy@>RGbh|0u36JiyI+oNJGiv_>{BK4WG$$py*Ja=^QZ!DqN zbrt*VGXBdP5O@7Q*kB>44Y-Fsr*k&ji!Ht!MEVKuj}gofdE51c-poN2sQf@4loF%* z03_ds#WKEQ{=WL)_z{> zmqvhS1gKpwBR(V?EJIn)KO_sw<#DmB_R{5a!xji(^X?&+gDAI##g+($vnW;vSO!hH z5~z}$?%~Qa^p0~^#lyRDt9asYRaK$fDCdVMO`*=lGp0_O!uZ=3TR}~ByHy=P`|C%b zL8?>_&fu;Nq52wQlo6kq{1`R*oR?aiXm-I1096qhill55p8H04>3Vni%Y;*d!qsIMl^ z9*I%#?0*(ey1S!WdA!ZR!rKOuXi{u6nGov zcR7)rWye$phedH>Ck}>K+1>MI7#qL$d6Job51~hWq*Zdf@n9=Fi_=*`eB&(rf67NVVVyM^BeAc2zQ^Xucowl*L;6x#W4ki4#v zrc{B(tu(uem1`6XsmzvVgbk;kme~&R%rC|zjIMBhaec;_U#)B&mm`(VLStsRi%l{8 zl>~k82TA_SjEqt6lT|P|1#azKQmHo|iRqyu3oQD&;U~q-=7G(K_LfvSGku6LzU3E#F6YL-dR8m5^-GDV@UojZpCL7_`9 zMc`!-zk;ypZ5yJ zZug>VpU0ZZd3tg%s;BX9AvA2A;OXg!u>o=-+u&Y)UymRW=aaw7lIOMbc4nwXPj3Yr zGmf)wF0zkfZq8%S=MFSZ4;_+giXPiJQD`*pu9&XNnk~aq5|?kRJT(hlH3!q-k$l11 z!FP|!tk~TRh0E_z9=No$^Y)FNyq>jPFMIkiu<9LP1M4+`fJ#r}7F*f);!b570}uRf zO)4DR=`v?csC7v@_ek)*H^$6w^5ZM8mb?QDn|ab6S@U2^sISKJ%Pn5l@%X^6Wb;^i zHmcT{8(9t9bUMs3Guaz@7ruYb2eNJ8B0?0#lcd1O{pdH&Mg1P|pJBYkJIlluuwmFx-<#B$M<}JM5Xv9GovWtx(%@S$BCP^RbH& zr5-@XZhMN*loJ#uAAmT2{cUK+WJx&eCneI#SOq$H4k?2r2OM$1t^`W#8O6O;Ni!w6 z{1E}+xIYcCw4P^M^g~t*xwa7}8~rA^uMadPwx}5NIi(w%GiR1jDwaRM2mfp2^|;cFkqy=+JYo^X_k>=o6Tz}@`I8~W}dv1{nTfyOdG*jbGKCi zY+Ug3VxZJa!e+%|{v*UNW&CuPeDVGR-#eI1&R=vDO!lf)HosxX&zE(%9sSz?Fm2PY zIS>N`{xrxBfm{`kpK*#lVBODs#i`<0-5fLZ&oT(d(9(t=y*6G=2an8r3ds`y?}w&W z%9&b3rDwpEyaH3m%~dT*=CO4J2B-N`%lDcUs|Qp)j(w^1Fy^*@mz6i^|7{Q8&8`q& zUcTNBku7LDk7&bnP5L2hOc3zlfw7E%FP;Ow3XgONz7fs!QO!eQ3K__?|V|^#Kbe7^`z%pkC!e8rQe*7vS}Sf zfr6L3q`F4Xz-`7wDnp%+p$<9eN-E3ucBa!;6|+MYb+5Y$;vgvtEk0yD%@b+<=qJUm zAN1Dy^UyIe3V`i(eGi03mgqop4GeUje}P&_htdgHmBe0A7v$wPAAI>yG8mm+e36j- zHxQ0oC;z0+<9>bV@#W2ho8Ss4)q(mY(9`qf9;mKRJmr-qLV;Nd{cr#&hX04q0K&DB z3zCQVGgOCcvp-30@8&VgYB!$nP3Y-``dKUY1}Cid zgJZlOmnw5CEiSftNBZv0*LP2qKEKJ{%!XPY(-A6W@N#;+4vn=krg{>!Vv=Z(CtO%> zA-!kqw8Pai`Mb2doF8DZrHNNO{qf)ANcSly^1xIo+M|^B}BB z^aK}e0wH{Nfmo`#aKSm`u#$npQRuH;=(|Z`{x|xBc>TPu**fn#AFp{bJM6XNv^xRc}}PQ)cqbP0pr^bm`0)#qhWl9rQclU3B4jfXc4 z1w?L-$^k|8zkZ=ASk5o6{bJdsaz2awg`70+>3$d;|zG z;)p*dKJGvx2I!UdQANc$4nCazEh5^w5y@-2N-Fucq|^;22P~6zJh*4wNa3AjoF?}5 z&=1gBBtM*LA^^zy{+r8}H#-6*0LU6fQ|RV5;Nt-98grn9fa5)^No>IMBF^nyQ2t(V zlDP%btM1F!sW2<_-&wYEFlwxZiXP`V%z;$)&P-+Y(yMIHlfHNcgbEihi?8GZ$bQJj z?`4&*e0*qv*#^z~gsj{$x0w7tW6gQf)H8eyOAyAqt)6So9XzzjVQCgT`rl(kj=srQ zvTnRky}vc~7goSx7w0#M@VHlNe3+F?dXGl*fgbhsi!Y-Au#>oobf{tL_)k0Z6(|xw zF)M$5m?ZmmjPZJ`8CEWHy|CwZ_7F^K=tCbE)Pc^$b!RXYpv?nAKJkjeHB}=~;R*!! z=V#5rEJpcGrkob(;v?dssPCB|?MTxrWrk$%F{|s{+4pYrd0umlO4o}1lM+(fQ)TZm z65JhEWn?uCZ35#7ZI#i>z$6l6>%Q;)Zh)>DZYpg+!2;TImqZ(FpYH91pu^{cME_Z= zfS;81$G_`6zhzx8t;3yD%+0dT_Y+0DVNI7yl2_K2Yd7Be^eFR$Sup`j2Gs$TNbyh8 z(h68)nq-*rUJQ?izVr&!E5B%06ny?W4MJjl0<2>6$*1LF<3khdt0BQzPZVuLKjLsH z`{wWF(gmP4A5?>u1qgwmcc{*0z-FG>Ik^=vWnWL;q}LxlgKZ^^>HfMf{Lwf}89_*` zgCvtOzDT$~0B+JS`XhR_r|k$fQ42yH>ssR+lY!gg+3Wh2UWbK0DE=D951Y#7Nc9ZDn|_#x}8}m@!FXPSE3b6pz&Oi6Dy}Pm;gu z(KXn&z{PB2*mw;MZ5|~N2Yk@yOi))N1W8?S$)#uN%ZWYh5yJxlQXR74Hg?<+#W=a; delta 27056 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 D$;&Z8 diff --git a/companion/src/images/simulator/TX16S/left_tele.png b/companion/src/images/simulator/TX16S/left_tele.png old mode 100755 new mode 100644 index 69b43a52d2ee14fbd9669b6b70d34f7a5e5080a8..a51f18bd1487277fa2e3b2b77ef32354b4d1c0f6 GIT binary patch delta 28731 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 diff --git a/companion/src/images/simulator/TX16S/right.png b/companion/src/images/simulator/TX16S/right.png old mode 100755 new mode 100644 diff --git a/companion/src/images/simulator/TX16S/right_ent.png b/companion/src/images/simulator/TX16S/right_ent.png old mode 100755 new mode 100644 diff --git a/companion/src/images/simulator/TX16S/right_mdl.png b/companion/src/images/simulator/TX16S/right_mdl.png old mode 100755 new mode 100644 diff --git a/companion/src/images/simulator/TX16S/top.png b/companion/src/images/simulator/TX16S/top.png old mode 100755 new mode 100644 From c14b5079d308644a4bf4e9ef5be60ab36d3590d9 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 6 May 2020 19:24:48 +0200 Subject: [PATCH 158/199] Add x7 access simu to mac companion --- tools/build-companion-nightly.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/build-companion-nightly.sh b/tools/build-companion-nightly.sh index 06f605c0d..98d6653e6 100755 --- a/tools/build-companion-nightly.sh +++ b/tools/build-companion-nightly.sh @@ -62,6 +62,10 @@ cmake ${COMMON_OPTIONS} -DPCB=X7 ${SRCDIR} make -j${JOBS} libsimulator rm CMakeCache.txt +cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=ACCESS ${SRCDIR} +make -j${JOBS} libsimulator +rm CMakeCache.txt + cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 ${SRCDIR} make -j${JOBS} libsimulator rm CMakeCache.txt From 3fc5bc6d77ceb7313f51210f2a8827434ec324c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Charpentier?= Date: Thu, 7 May 2020 15:47:20 +0200 Subject: [PATCH 159/199] Updated French Translation (#7587) --- companion/src/translations/companion_fr.ts | 581 +++++++++++---------- 1 file changed, 300 insertions(+), 281 deletions(-) diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts index c88f190f0..c8d06c20f 100644 --- a/companion/src/translations/companion_fr.ts +++ b/companion/src/translations/companion_fr.ts @@ -342,55 +342,60 @@ Manche Droit: Profondeur, Direction - - - - + + + + Select Folder Sélectionner dossier - + + Show splash screen + Afficher l'écran de démarrage + + + Select Executable Sélectionner exécutable - + Release channel Canal de version - + Releases (stable) Officiel (stable) - + Release candidates (testing) Candidate (test) - + Nightly builds (unstable) Nighlty (instable) - + Simulator Volume Gain Gain de volume du simulateur - + Simulator controls Commandes du simulateur - + Save switch/pot positions on simulator exit Enregistrer les positions des inters/pots à la sortie du simulateur - + Clear saved positions Effacer les positions enregistrées @@ -440,265 +445,265 @@ Manche Droit: Profondeur, Direction Paramètres de l'application - - Show splash screen when Companion starts - Afficher l'écran d'accueil au lancement de Companion - - - + Automatic check for Companion updates Vérifier la présence de mises à jour de Companion automatiquement - + Enable automatic backup before writing firmware Sauvegarder les paramètres et modèles automatiquement lors des transferts - + Automatic check for OpenTX firmware updates Vérifier la présence de mises à jour de firmware automatiquement - + Splash Screen Library Bibliothèque d'écrans d'accueil - + Google Earth Executable Exécutable Google Earth - + Only show user splash images Ne montrer que les images de l'utilisateur - + Show user and companion splash images Montrer les images de Companion et de l'utilisateur - + User Splash Screens Ecrans d'accueil personnalisés - + Automatic Backup Folder Dossier de sauvegardes automatiques - + Simulator Settings Paramètres du simulateur - + Simulator BackLight Rétroéclairage du simulateur - + Enable Actif - + Action on New Model Action par défaut "Ajout Modèle" - + Use model wizard Assistant - + Open model editor Éditer modèle - + Just create the model Créer modèle - + <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><b><u>/!\</u> Uniquement pour les radios sans catégories <u>/!\</u></b></p><p>Cette option maintient le comportement des anciennes versions d’OpenTx où les emplacements des modèles vides sont conservés lorsqu'un modèle est supprimé ou déplacé.</p><p>Lorsque cette option est désélectionnée, les autres modèles peuvent être réarrangés pour combler l'écart laissé par le modèle supprimé.</p></body></html> - + most recently used files fichiers récemment utilisés - + Startup Settings Paramètres de démarrage - + Remember Mémoriser - + Output Logs Folder Dossier des logs sauvegardés - + Remove empty model slots when deleting models (only applies for radios w/out categories) Supprimer les emplacements vides lors de la suppression de modèles - + Debug Output Logging Log les messages de debug - + <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>Garder un log de tous les messages de débogage générés par les applications Companion/Simulateur. Un développeur OpenTX peut demander ce log afin d'aider à diagnostiquer un problème.</p></body></html> - + Application (Companion/Simulator) Application (Companion/Simulateur) - + <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>Conserver un log de tous les messages générés par le firmware radio lors de l'exécution du Simulateur. C'est la même information visible depuis le Simulateur dans la <span style=" font-style:italic;">Fenêtre de débogage</span>.</p></body></html> - + Radio Firmware (in Simulator) Firmware radio (Simulateur) - + + Prompt for radio profile + Afficher le choix "profil radio" au démarrage + + + Blue Bleu - + Green Vert - + Red Rouge - + Orange Orange - + Yellow Jaune - + Screenshot capture folder Dossier des captures d'écran - + Joystick - + Calibrate Calibrer - + Only capture to clipboard Capturer dans le presse-papiers uniquement - + 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: Paramètres enregistrés à une date inconnue - + AVAILABLE: Radio settings stored %1 DISPONIBLE: Paramètres 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 paramètres 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) @@ -2135,7 +2140,7 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import OpenTX ne supporte pas cette fonction sur cette carte - + OpenTX doesn't accept this radio protocol OpenTX ne supporte pas ce protocole radio @@ -3034,9 +3039,15 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont + Support for bluetooth module Prise en charge du module Bluetooth + + + Radiomaster TX16s / TX16s Hall / TX16s Masterfire + + Turnigy 9XR-PRO @@ -4073,7 +4084,7 @@ Communs à tous les modèles d'une même EEPROM. GeneralSettings - + Radio Settings Paramètres de la radio @@ -6083,79 +6094,79 @@ Les colonnes contenant l'altitude "GAlt" et la vitesse "GSpd MainWindow - - + + Edit Édition - + File Fichier - + New release available Nouvelle version disponible - + Error opening file %1: %2. Erreur à l'ouverture du fichier %1: %2. - + Compilation server too busy, try later Serveur de compilation surchargé, veuillez réessayer plus tard - + Unknown server failure, try later Erreur inconnue du serveur de compilation, veuillez réessayer plus tard - + Do you want to write the firmware to the radio now ? Voulez vous transférer le firmware à la radio maintenant ? - - + + Yes Oui - - + + No Non - - + + Release Notes Notes de version - + Compare models Comparer les modèles - + Show fuses dialog Afficher les paramètres des fusibles - + A monochrome black icon theme Thème avec icônes monochromes noires - + A new version of %1 firmware is available: - current is %2 - newer is %3 @@ -6172,511 +6183,511 @@ Voulez vous la télécharger maintenant ? Nous recommandons de lire attentivement les notes de version à l'aide du bouton ci-dessous, celles-ci peuvent contenir des infos importantes concernant les changements effectués depuis la version précédente. - - + + Synchronize SD Synchroniser la carte SD - + New Nouveau - + Open... Ouvrir... - + A monochrome white icon theme Thème avec icônes monochromes blanches - + A monochrome blue icon theme Thème avec icônes monochromes bleues - + Small Petites - + Use small toolbar icons Petites icônes de barre d'outils - + Use normal size toolbar icons Icônes de barre d'outils normales - + Normal Normales - + Use big toolbar icons Grosses icônes de barre d'outils - + Big Grandes - + Use huge toolbar icons Immenses icônes de barre d'outils - + Huge Immenses - + List programmers... Lister les programmateurs... - + Fuses... Fusibles... - - + + Read Firmware from Radio Lire le firmware de la radio - + Read firmware from Radio Lire le firmware de la radio - + Write Firmware to Radio Transférer le firmware à la radio - + Write firmware to Radio Transférer le firmware à la radio - + Add Radio Profile Ajouter un profil de radio - + Manuals and other Documents Manuels et documents - + Open the OpenTX document page in a web browser Ouvre la page de documentation d'OpenTX dans un navigateur - + Write Models and Settings To Radio Transférer les paramètres et modèles vers la radio - + Write Models and Settings to Radio Transférer les paramètres et modèles vers la radio - - + + Read Models and Settings from Radio Lire les paramètres et modèles depuis la radio - + OpenTX Companion %1 - Radio: %2 - Profile: %3 OpenTX Companion %1 - Radio: %2 - Profil: %3 - + List of recently used files Liste des fichiers récemment utilisés - + Radio Profiles Profil radio - + Create or Select Radio Profiles Créer ou Sélectionner un profil radio - + Configure Communications... Configurer les communications... - + Configure software for communicating with the Radio Configurer le programme gérant les communications avec la radio - + Write Backup to Radio Transférer une sauvegarde à la radio - + Write Backup from file to Radio Transférer une sauvegarde à la radio - + Backup Radio to File Sauvegarder la radio - + Save a complete backup file of all settings and model data in the Radio Créer une copie de sauvegarde de tous les paramètres et modèles de la radio - + Contributors... Contributeurs... - + A tribute to those who have contributed to OpenTX and Companion Remerciements à tout ceux qui ont contribué à OpenTX et Companion - + SD card synchronization Synchronisation de la carte SD - + Recent Files Fichiers récents - + Set Icon Theme Choisir le thème d'icônes - + Set Icon Size Choisir la taille des icônes - + Write Ecrire - + A new version of Companion is available (version %1)<br>Would you like to download it? Une nouvelle version de Companion est disponible (version %1)<br>Voulez-vous la télécharger ? - + OpenTX Home Page: <a href='%1'>%1</a> Page d'accueil d'OpenTX: <a href='%1'>%1</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Si vous trouvez ce programme utile, merci de le supporter par une <a href='%1'>donation</a> - + Ready Prêt - + Show the application's About box Afficher la fenêtre "A propos" de l'application - - + + File loaded Fichier chargé - - + + Open Models and Settings file Ouvrir un fichier de paramètres et modèles - + File saved Fichier sauvegardé - + Read Models and Settings From Radio Lire les paramètres et modèles depuis la radio - + Not enough flash available on this board for all the selected options Pas assez de place disponible pour les options sélectionnées - + Compilation server temporary failure, try later Erreur de compilation sur le serveur, veuillez réessayer plus tard - + Compilation error Erreur de compilation - + Invalid firmware Firmware invalide - + Invalid board Carte non valide - + Invalid language Language non valide - + Some text will not be translated until the next time you start Companion. Please note that some translations may not be complete. Certains textes ne seront pas traduits avant le prochain redémarrage de Companion. Veuillez noter que certaines traductions peuvent ne pas être complètes. - + Models and Settings read Lecture des modèles et paramètres - + Companion update check failed, new version information not found. La vérification de mise à jour de Companion a échoué, les infos sur une nouvelle version sont introuvables. - + Firmware update check failed, new version information not found or invalid. La vérification de mise à jour du Firmware a échoué, les infos sur une nouvelle version sont introuvables ou invalides. - + Local Folder Dossier "Local" - + Radio Folder Dossier "Radio" - - + + This function is not yet implemented Cette fonction n'est pas implémentée pour l'instant - + Save Radio Backup to File Sauvegarder la radio - + Read Radio Firmware to File Sauvegarder le firmware de la radio - + The OpenTX Companion project was originally forked from <a href='%1'>eePe</a> Le projet OpenTX Companion a été créé à partir d'<a href='%1'>eePe</a> - + Copyright OpenTX Team - + Create a new Models and Settings file Créer un nouveau fichier de paramètres et modèles - - + + Save Models and Settings file Enregistrer le fichier de paramètres et modèles - + Save Enregistrer - + Save As... Enregistrer sous... - + Close Fermer - + Close Models and Settings file Fermer le fichier de paramètres et modèles - + Exit the application Quitter l'application - + Exit Quitter - + Create a new Radio Settings Profile Créer un nouveau profil de paramètres et modèles - + Copy Current Radio Profile Copier le profil radio actuel - + Duplicate current Radio Settings Profile Dupliquer les paramètres radio du profil actuel - + Delete the current Radio Settings Profile Supprimer les paramètres radio du profil actuel - + Use default system language. Utiliser le langage système par défaut. - + Use %1 language (some translations may not be complete). Utiliser la langue %1 (certaines traductions peuvent être incomplètes). - + Classical Classique - + Diskimage (*.dmg) Image disque (*.dmg) - + Would you like to open the disk image to install the new version? Voulez-vous ouvrir l'image disque afin d'installer la nouvelle version ? - + Executable (*.exe) Exécutable (*.exe) - - + + Would you like to launch the installer? Voulez-vous lancer l'installateur ? - + 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" - + 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" - + 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 "candidate" ou "nightly" - + A new release of Companion is available, please check the <a href='%1'>OpenTX website!</a> Une nouvelle version de Companion est disponible, vérifiez le site OpenTX <a href='%1'> !</a> - + 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" - + 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" - + 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 "candidate" ou "nightly" - + Release candidate builds are now available for this version, would you like to switch to using them? Une version "candidate" est maintenant disponible pour cette version, voulez-vous commuter de canal afin de l'utiliser? - + Channel changed to RC, please restart the download process Canal commuté sur "candidate", veuillez redémarrer le processus de téléchargement - + Official release builds are now available for this version, would you like to switch to using them? Une version "officielle" est maintenant disponible pour cette version, voulez-vous commuter de canal afin de l'utiliser? - + Channel changed to Release, please restart the download process Canal commuté sur "officiel", veuillez redémarrer le processus de téléchargement - + This radio (%1) is not currently available in this firmware release channel Le firmware pour cette radio (%1) n'est actuellement pas disponible dans le canal "officiel" - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now? @@ -6689,18 +6700,18 @@ Voulez-vous le télécharger maintenant? Nous vous recommandons de consulter les notes de mise à jour à l'aide du bouton ci-dessous pour en savoir plus sur les modifications susceptibles de vous intéresser. - - + + Do you want to download version %1 now ? Voulez-vous télécharger la version %1 maintenant? - + Ignore this version %1? Ignorer cette version %1? - + There are unsaved file changes which you may lose when switching radio types. Do you wish to continue? @@ -6709,355 +6720,355 @@ Do you wish to continue? Êtes-vous sûr de vouloir continuer ? - + No local SD structure path configured! Aucun chemin de configuré pour la structure SD en local ! - + No Radio or SD card detected! Pas de Radio ou carte SD de détectée ! - + Release notes... Notes de version... - + Show release notes Afficher les notes de version - + Delete Current Radio Profile... Supprimer le profil radio actuel... - + Export Application Settings.. Exporter Préférences Application... - + Save all the current %1 and Simulator settings (including radio profiles) to a file. Enregistrez tous les paramètres actuels %1 et du simulateur (y compris les profils radio) dans un fichier. - + Import Application Settings.. Importer les paramètres de l'application... - + Load %1 and Simulator settings from a prevously exported settings file. Charger les paramètres %1 et les paramètres de Simulation depuis un fichier précédemment exporté. - + Tabbed Windows Fenêtres à onglets - + Use tabs to arrange open windows. Utilisez les onglets pour organiser les fenêtres ouvertes. - + Tile Windows Titre de la fenêtre - + Arrange open windows across all the available space. Disposez les fenêtres ouvertes sur tout l'espace disponible. - + Cascade Windows Fenêtres en cascade - + Arrange all open windows in a stack. Organisez toutes les fenêtres ouvertes dans une pile. - + Close All Windows Fermer toutes les fenêtres - + Closes all open files (prompts to save if necessary. Fermer tous les fichiers ouverts (proposer de sauvegarder si nécessaire). - + Window Fenêtre - + Ctrl+Shift+S - + Ctrl+Alt+L - + Ctrl+Alt+D - + Ctrl+Alt+R - + The classic companion9x icon theme Thème d'icônes classique de Companion - + Yerico - + Yellow round honey sweet icon theme Thème d'icônes rondes jaunes - + Monochrome - + MonoWhite Monochrome Blanc - + Alt+%1 - + - Copy - Copier - + Companion :: Open files warning Companion::Ouvrir les fichiers d'avertissement - + Please save or close modified file(s) before deleting the active profile. Veuillez sauvegarder ou fermer le(s) fichier(s) modifié(s) avant de supprimer le profil actif. - + Not possible to remove profile Impossible de supprimer le profil - + The default profile can not be removed. Le profil par défaut ne peut pas être supprimé. - + Confirm Delete Profile Confirmer la suppression du profil - + Are you sure you wish to delete the "%1" radio profile? There is no way to undo this action! Etes-vous sûr de vouloir supprimer le profil radio %1? Cette action est irréversible! - + Please save or close all modified files before importing settings Veuillez sauvegarder ou fermer tous les fichiers modifiés avant d'importer les paramètres - + <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 et les paramètres du simulateur peuvent être importés (restaurés) à partir d’un fichier d’exportation (sauvegarde) préalablement sauvegardé. Ceci remplacera les paramètres actuels par tous les paramètres trouvés dans le fichier.</p><p>Une sauvegarde automatique des paramètres actuels sera tentée. Mais si les paramètres actuels sont utiles, il est recommandé de commencer par une sauvegarde manuelle.</p><p>Pour obtenir de meilleurs résultats lors de l'importation des paramètres,<b> fermez les autres fenêtres %1 que vous avez éventuellement ouvertes et assurez-vous que l'application autonome Simulator n'est pas en cours d'exécution. </p><p>Souhaitez-vous continuer? </p></html> - + Confirm Settings Import Confirmer les paramètres d'importation - + Select %1: Sélectionnez %1: - + backup sauvegarde - + Press the 'Ignore' button to continue anyway. Appuyez sur le bouton 'Ignorer' pour continuer quand même. - + The settings could not be imported. Les paramètres n'ont pas pu être importés. - + <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>Les nouveaux paramètres ont été importés depuis:<br> %1. </p><p>%2 sera maintenant réinitialisé.</p><p>Notez que vous devrez peut-être fermer et redémarrer %2 avant que certains paramètres tels que la langue et le thème d’icône prennent effet.</p> - + <p>The previous settings were backed up to:<br> %1</p> <p>Les paramètres précédents ont été sauvegardés sous:<br> %1 </p> - + MonoBlue Monochrome Bleu - + System language Langue du système - + About... A propos... - + View Log File... Ouvrir un Log... - + Open and view log file Ouvrir et visualiser un log - + Settings... Préférences... - + Edit Settings Éditer les préférences - + Download... Télécharger... - + Download firmware and voice files Télécharger firmware et fichiers son - + Check for Updates... Vérifier les mises à jour... - + Check OpenTX and Companion updates Vérifier les mises à jour d'OpenTX et Companion - + Compare Models... Comparer 2 modèles... - + Edit Radio Splash Image... Éditer l'écran d'accueil de la radio... - + Edit the splash image of your Radio Éditer l'écran d'accueil de la radio - + List available programmers Lister les programmateurs supportés - - + + Save As Enregistrer Sous - - + + No updates available at this time. Aucune mise à jour disponible. - - + + Help Aide - + Checking for updates Recherche de mises à jour - + The new theme will be loaded the next time you start Companion. Le nouveau thème sera utilisé lors du prochain lancement de Companion. - + About Companion A propos de Companion - + Set Menu Language Choisir la langue des menus - + Settings Paramètres - + Read/Write Transfert - + %2 - + New Radio Nouvelle radio @@ -9614,11 +9625,6 @@ Mixage actif par défaut si non-renseigné. DEFAULT DÉFAUT - - - Custom - proto %1) - Personnaliser - proto %1) - MultirotorPage @@ -9766,6 +9772,19 @@ Mixage actif par défaut si non-renseigné. Fichiers ODF (*.odt);; Fichiers PDF (*.pdf);;Fichiers HTML (*.htm *.html);;Tous les fichiers (*) + + ProfileChooserDialog + + + Select Profile + Choisir Profil + + + + Profile + Profil + + ProgressDialog From 6bd989620ad6e91667e44c6376c86677507a4614 Mon Sep 17 00:00:00 2001 From: Marco Robustini Date: Fri, 8 May 2020 01:17:14 -0700 Subject: [PATCH 160/199] Update it.h.txt (#7589) Some alignments of the Italian language. --- radio/src/translations/it.h.txt | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 750f77a7c..72223e759 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -938,8 +938,8 @@ #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("SW","Interruttori")) #define TR_ANALOGS_BTN BUTTON(TR("Analogico","Analogici")) -#define TR_TOUCH_NOTFOUND "Touch hardware not found" -#define TR_TOUCH_EXIT "Touch screen to exit" +#define TR_TOUCH_NOTFOUND "Schermo touch non trovato" +#define TR_TOUCH_EXIT "Tocca lo schermo per uscire" #define TR_CALIBRATION TR("Calibraz.", "Calibrazione") #define TR_SET "[Set]" #define TR_TRAINER TR("Trainer", "Maestro/Allievo") @@ -1012,8 +1012,8 @@ #define TR_SPORT_UPDATE_POWER_MODE "SP Power" #define LEN_SPORT_UPDATE_POWER_MODES "\004" #define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 " -#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens" -#define TR_TOUCH_PANEL "Touch panel:" +#define TR_NO_TELEMETRY_SCREENS "Nessuno Schermo Telemetria" +#define TR_TOUCH_PANEL "Schermo touch:" // Horus and Taranis column headers #define TR_PHASES_HEADERS_NAME "Nome" @@ -1058,21 +1058,21 @@ #define TR_LSW_DESCRIPTIONS { "Tipo o funzione di confronto", "Prima variabile", "Seconda variabile o costante", "Seconda variabile o costante", "Condizione aggiuntiva da abilitare linea", "Durata minima ON dell'interruttore logico", "Durata minima TRUE affinché l'interruttore si accenda" } // Horus layouts and widgets -#define TR_FIRST_CHANNEL "First channel" -#define TR_FILL_BACKGROUND "Fill background?" -#define TR_BG_COLOR "BG Color" +#define TR_FIRST_CHANNEL "Primo canale" +#define TR_FILL_BACKGROUND "Riempi lo sfondo?" +#define TR_BG_COLOR "Colore sfondo" #define TR_SLIDERS_TRIMS "Sliders+Trims" #define TR_SLIDERS "Sliders" -#define TR_FLIGHT_MODE "Flight mode" -#define TR_INVALID_FILE "Invalid File" -#define TR_TIMER_SOURCE "Timer source" -#define TR_SIZE "Size" -#define TR_SHADOW "Shadow" -#define TR_TEXT "Text" -#define TR_COLOR "Color" -#define TR_MAIN_VIEW_X "Main view X" -#define TR_PANEL1_BACKGROUND "Panel1 background" -#define TR_PANEL2_BACKGROUND "Panel2 background" +#define TR_FLIGHT_MODE "Modo di volo" +#define TR_INVALID_FILE "File invalido" +#define TR_TIMER_SOURCE "Sorgente timer" +#define TR_SIZE "Dimensione" +#define TR_SHADOW "Ombra" +#define TR_TEXT "Testo" +#define TR_COLOR "Colore" +#define TR_MAIN_VIEW_X "Vista principale X" +#define TR_PANEL1_BACKGROUND "Sfondo Panello 1" +#define TR_PANEL2_BACKGROUND "Sfondo Panello 2" // About screen #define TR_ABOUTUS TR(" INFO ", "INFO SU") @@ -1357,4 +1357,4 @@ #define ZSTR_CL15 "Cl15" #define ZSTR_CL16 "Cl16" #define ZSTR_CL17 "Cl17" -#define ZSTR_CL18 "Cl18" \ No newline at end of file +#define ZSTR_CL18 "Cl18" From 0e84377bf70e8e9d8533b2a00d4c1f9f462bb53d Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 8 May 2020 15:44:29 +0200 Subject: [PATCH 161/199] Update some multi strings --- companion/src/firmwares/moduledata.h | 5 ++++- radio/src/gui/gui_common.cpp | 2 ++ radio/src/pulses/modules_constants.h | 3 ++- radio/src/translations/untranslated.h | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 83744908a..ee969fd0d 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -126,7 +126,10 @@ enum MultiModuleRFProtocols { MODULE_SUBTYPE_MULTI_XN297DUMP, MODULE_SUBTYPE_MULTI_FRSKYX2, MODULE_SUBTYPE_MULTI_FRSKY_R9, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FRSKY_R9 + MODULE_SUBTYPE_MULTI_PROPEL, + MODULE_SUBTYPE_MULTI_FRSKYL, + MODULE_SUBTYPE_MULTI_SKYARTEC, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_SKYARTEC }; enum TrainerProtocol { diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 1ae1a45cc..69e954b03 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -888,6 +888,7 @@ const char STR_SUBTYPE_FLYZONE[] = "\005""FZ410"; const char STR_SUBTYPE_FX816[] = "\003""P38"; const char STR_SUBTYPE_ESKY150[] = "\003""4CH""7CH"; const char STR_SUBTYPE_FRSKYL[] = "\010""LR12\0 ""LR12 6ch"; +const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch"; const char* mm_options_strings::options[] = { nullptr, @@ -947,6 +948,7 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_FRSKYX2, 4, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKY_R9, 4, true, false, STR_SUBTYPE_FRSKYR9, nullptr}, {MODULE_SUBTYPE_MULTI_PROPEL, 0, false, false, NO_SUBTYPE, nullptr}, {MODULE_SUBTYPE_MULTI_FRSKYL, 1, false, false, STR_SUBTYPE_FRSKYL, STR_MULTI_RFTUNE}, {MM_RF_CUSTOM_SELECTED, 7, true, true, NO_SUBTYPE, STR_MULTI_OPTION}, diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index a519d0269..82e53421d 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -166,7 +166,8 @@ enum ModuleSubtypeMulti { MODULE_SUBTYPE_MULTI_FRSKY_R9, MODULE_SUBTYPE_MULTI_PROPEL, MODULE_SUBTYPE_MULTI_FRSKYL, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_FRSKY_R9 + MODULE_SUBTYPE_MULTI_SKYARTEC, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_SKYARTEC }; #define MODULE_SUBTYPE_MULTI_XN297DP 63-3 diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index cbef5238b..b558eaa72 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -125,4 +125,4 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\007" -#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""WK\0 ""XN297DU""FrSkyX2""FrSkyR9" +#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""XK\0 ""XN297DU""FrSkyX2""FrSkyR9""Propel\0""FrSkyL\0""Skyartec" From 4b2f0ab9e84c9b951e66339811660120c3ccf3cb Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 9 May 2020 20:00:24 +0200 Subject: [PATCH 162/199] Update CREDITS.txt --- CREDITS.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CREDITS.txt b/CREDITS.txt index 69e242fac..7e85a8d98 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1730,3 +1730,6 @@ Tomas Sodergren Jörg Lemnitz TMac FPV Josef Schaeffler +Mike Frizell +MeCodeGoodSomeday + From 34281d8648de6549eaea19a7d86b2b3174705886 Mon Sep 17 00:00:00 2001 From: Augusto Zanellato Date: Sun, 10 May 2020 10:46:43 +0200 Subject: [PATCH 163/199] Fixed typo in Italian translation of companion (#7592) --- companion/src/translations/companion_it.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/translations/companion_it.ts b/companion/src/translations/companion_it.ts index 21b3e87db..3572d1d4c 100644 --- a/companion/src/translations/companion_it.ts +++ b/companion/src/translations/companion_it.ts @@ -6797,7 +6797,7 @@ We recommend you view the release notes using the button below to learn about an Set Menu Language - Inposta Menu Lingua + Menù Impostazione Lingua From c17b0469c42804f83131eafa7981c316690bcae6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 11 May 2020 08:35:48 +0200 Subject: [PATCH 164/199] Update CREDITS.txt --- CREDITS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CREDITS.txt b/CREDITS.txt index 7e85a8d98..f70842e4f 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1732,4 +1732,4 @@ TMac FPV Josef Schaeffler Mike Frizell MeCodeGoodSomeday - +Timothy Fry From a4d6002178944cfe9e20535ecf80e0c4339f4694 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 11 May 2020 10:31:33 +0200 Subject: [PATCH 165/199] Save also on simple multi type change --- radio/src/gui/480x272/model_setup.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index 83c23161b..8108577d2 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -1137,6 +1137,7 @@ bool menuModelSetup(event_t event) g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); g_model.moduleData[moduleIdx].subType = 0; resetMultiProtocolsOptions(moduleIdx); + storageDirty(EE_MODEL); } } #endif From f44305beb1ba7d6730d2fc9e05a4ae521b0b79b8 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Wed, 13 May 2020 11:52:54 +0200 Subject: [PATCH 166/199] No BT on TX16S for now --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- radio/util/fwoptions.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 13d75e2c0..44346310d 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1348,7 +1348,7 @@ void registerOpenTxFirmwares() /* Radiomaster TX16S board */ firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); - firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); + // firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); addOpenTxRfOptions(firmware, FLEX); registerOpenTxFirmware(firmware); diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index 811ff17b7..7e5604fd9 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -233,5 +233,5 @@ options_radiomaster_tx16s = { "faichoice": ("FAI", "CHOICE", None), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), - "bluetooth": ("BLUETOOTH", "YES", "NO"), + # "bluetooth": ("BLUETOOTH", "YES", "NO"), } \ No newline at end of file From 2e95562668966804dc233861db9d3fb3c4cbf6b1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 14 May 2020 09:59:07 +0200 Subject: [PATCH 167/199] Black tx16s --- radio/sdcard/horus/THEMES/Darkblue/tx16s.bmp | Bin 164938 -> 164938 bytes radio/sdcard/horus/THEMES/Default/tx16s.bmp | Bin 124056 -> 164938 bytes 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 radio/sdcard/horus/THEMES/Darkblue/tx16s.bmp diff --git a/radio/sdcard/horus/THEMES/Darkblue/tx16s.bmp b/radio/sdcard/horus/THEMES/Darkblue/tx16s.bmp old mode 100755 new mode 100644 index 826fc35f000e449e374a24b2da04667d9f050c34..bb44eda4148d3957279826f501f8cb15548e386b GIT binary patch literal 164938 zcmeF41-Ks7wfA$s`+T=Tu>c7nK!}HULfqZ;#NFL-PbooKY7{RN3N6rbZv`z{yjY-k zaR{!#3DN!ie`{t<_8H!j1o9qw?(?1VWM$9HJMX+Rd$0fUy{FgEL96~x75;uAI$rdM z=zh_ER5_^1f2zIXMm7`wCjJNN|o$im0tZz4)YIov`v0BI(y5OEmg{!!sabi z!j@2F(}oRIHgDV%9=iX5Flxle(6L?n(4}L?(4|9%(7jXV(4%t~qn=&5hF;yehrT^} zhJHPJh5o&IhrYdfg}yy|+Oa-8dW7Ek+|KLTE%fQ$!_FJfyH6P0uU{BCa9|i_G)V2B zFkOIbHc`h!Q&ZymoXa(! zsoG}Weow!{Z%!H`qV?ZTw zZQ2@jIHXNz*Q#}B)1qZ)-Mo25Et@tCEgClo%@1yz(!rt0!3i~P*eEor*B~@%P(K{p zu%S_-2JANo4eQr8YE-{LXsYiXbl`!Zf1keLl1nbBvv%#;jE^^O-kfchH*c5M^?8OM zY;NATvC5WBo2zX2^2>0}FV76ETePq~?bx=R^>x<{9fh4vhJ`-edf1qN7q9@aJy3l# zsBb?b-ySkxKo~x7u*P~w7&Cl?@xw&%{Uq`F6!Dnz8$3CE(&R8}>eMiEN0yX*+lJ>@auMtT0csV9wmIVD7xIaL&B22(sWjJ6+E+b$XaSd9sl|JME0g zQ`9HI^!SN}zlp**SWoacHo;hlFeVy1vLuuY8)o=I7SZoU!W3h|7$MidQ7_>LLareT z8Qae7+J#P##=HF?hh%ta)4XM9)4YXYs->{iT$lnA;OF25!c9tG1>7{KS1;7BTUR)1 z92(TE7h352<;#|Zr=EJMN(jLSo^vWMzAmrpZr-xF%BD@5bpO&d>GP-!Z@&Iom?8dc z*`!G-o7#jf?K)WBc9Xnvy+gmFN1V_vj172!*fz{amy`@0CcQDj#&&}A1>=q!hc9As zUV*O?UK9VpgDK6Q1^=cbo}NEXygqlXFfunRnZF<`6*?J2U|*O* zUd)>2GGe;PiP_VphnYH#Jeg`b4ml(JW;!*|rRXjC6g>rY(Ans27x`oeYgSH}%<6B}omDnxT6+ha0)Bfgsl|A}W8ik}Tf;{QePzo;~SCwd5+K?`QjHB8Q(0ZwOR_?$OW zzc1|0o<6-G&6%llXXzY~>ADnC8K$-GSTCzJxgdEkR|Gz03p05FGtdn6i`$a4=xE0a z{h7zj7}?k(Wy`t!Hf+!!vyH)zW2awgSG(Tn*|}@z-nnx?Hi8`}w&$?v+O(EUCu-fY zWoRXP1VRV3Y}VZP1)gc%M3|DyZQ58ip74b&*H8R3Q~i7S?|&cGy!>*NPe1;o6o!m1 zv3F$m;4c_&ieJl1XMCOOqEoW_O7Ie%eEjin#_2ycp2KJ8)1z0IqH*aWd#qiXHldsF z(HZ|n`)p$;_v+d`V5fnVJWhtCcqzeGk&dA)k=z3}=$x@5WWx(P$i@k&t%h%4{>X%h zrsrl#2brxVesO!oTkNyB@Z{V%h86JQ*x`6gbI?&bhCEMftF87Jb{e{6acaxK?+I2C zyvz|F&zO?fO$pB?zE5UT>R!zcQeVNx;2z@K#I{QJCna)#>&=$E2|ngblg(+A9!qUe z?9l{2U}(C@kFVNnll6P}U-(k^Yx18&hM`p7(7&Tooin(9|1hYJbU%Ji?_R;MBA+L= z5wO*qz>QOeAIZ!v@`><^I>?5D+P7^R+M|zzrM7Jj32kN99g^xI^ihju%`$4%w26H_ zLgU|6*B>HzIz_Vb$ z?p?c@-sL%)G&(qRY~MbNkd2H?=_0w)LpbTKeua8s7vt|szYqiH-&^*WbpIg9u%Uwn zhhf6UaN&dRmy8%8KUa3QurXeG1)8LBo-Qm*MYjkW=A($WXGsnjNw&`t&7}2XX*)aG zpDkVBG)r=ShUD}#@#|Fi2M}Wd_90>j+=tUh#Ta7Zo`*;l50VcsKt2F+v0v{b#?e!@ z3(t?NV7!qZPRNm%_}ropV4o9)Ne8M<+malJaAxe8Y*2qikQG~ zk@}N(NlAMDqlq7+{YpzrVa!OLQ>|hOC9;V}3On#B*WvjJ(E!D0?Du>1)^qm>y?gWw zJhv0iACvV1dWhIUN{%DLPODb(ixp$Y5jGpwgs-sSz!r8L*MJXhy5VnCHmqNt@Mnsd z3V|CitiQM3cr%>3YL$(t%Li;z?HXtJYhb_rp?}}LwolB2 z@n)anY{QR(2PG|I$1y(RyL}m_zT#1B!%twcd$$Ci+yi65Jvo^z&|LO_2;Gkl>Qui@ z-BA0WTA_9=(SZpabijcD+P}trVZZA8W>lkE^$=6_z4r}?>^PCd-rFm zxo?e7vqlYjKDK%0ItLw;QQg|L&A;%t7p?gr_#z@~DQqpbyWoA(CFm1T2l+WMb&~Gs zEZlT%-_ed^llb{;^L+?>93l*5BwYmN_&&cC+j{U_C&g=zKJv)$+`pblWqV?)eI0wM z*yoy#(SJ`r`Ba!Ezm$GLztD33UFENU3Gl&lA}ioc^ZjI}x~*#dpL7y>iI^j?l6nW# z33U&uol&g=4hYbJ`|odbz$M3=KsTi$ala@aBdqI9= zV!;?89?l3LOK6kd5%0;}$-fD4X+v z`|dOBY$4{B`aH$P#P+UdF=k=ru}2>@8^+}hx&}J}Ss&|R_hn+a0k)h>e(1Z0v`C&e z)&p$Eb}if9Z{{m1wqh}uMv7rd*7?2AqPvleWl=0c**4vReo4uXF`iJZ{e@rAfi;ES zi2Qh=Ha^d{3!TR?|D7Fe{XXOK{TOZj`O0fQ?q7Hw*%#{|Y!8o-(dNg~#~c2Msg2@p znQn>oOu7yKppVcu*b`vKx7ml^zzuvbOfkSaZoi|-X2p89$KU1nIdStaSFt1d2i$YN z*j3m_=o#)C{NvkzA^aN7DT_)yv(80t^BsuoPKsGWoY%3f`loHO9qW5^JN+2zdHl?> z$n7=SwyhI8z+2amW_L=5wrr8ubA@p1_kp(kNo?5*RPq$l2oV1 zpZPi1|B(3!vTLwy@;<}Y+Q&8$Z^OUzm&w6Hv=2pc(dDI&jko9q$i_6~`8$Rod&~f^`@W$(}hhvXD zHZ;-wG--UW;Q~JcAH^^t%-HkGzNG)a4!lW!#(l^$LOeIe;d^XSsAC6VgI3?QJ|p%I zX43vMEa-f@hTF^Zo%6r0$5x9r_%~M+vd9|~|xEVER zT}I`vw4oipDS(sy5O`` zOJNj}958%3PSrXOcngoX42$vR+r}H>5%&FBv23xiYu+rwD(53liBI)Wd={U9dqUq5 zLwf3oCoCsl-q;BnWfQL7Xfg0lKK?lT`uy|7>urn|dUWe%zB(}!^TUO6>@xV9XY}VY zo=s&byv*@f2YY{b8-M28){p3J>2u^ip&7U`t? zZrJ#1^cDKRYZZ&?(7 zmuG1#D(ij>3%Xw1a;`s*jiH|1_g#<0tzBFFX=7o(m*_tKO=6aO-=Eii%l92;w0_K5 zu2l%9I>xo(A7l=)6xoUn!(YG-8mOETwj1AXt z&oo|zc-cR*@pO#Hrf1yjH_|cVyIhxJg|6c=)vzQPTM9>!eB`^19dxGIiqc=$@!$nN z0zT~|yT6Wf&e*YI!()#%!lzzdm4>@r>NZMCBaGgP{lU!N9lM zX52T=oXHq{$NRgiHtSD~ZGG__I*s^@j~&-y8_W^2fw&f9>AaS2W4>;nxMstM8W8&_ zixdmzv-;}edL9!`V{`bJ7OzrUC`RS+C2FXg>^}5NrCP_GAJ=|%zP{`C+DOmYsE(dh z_io$7tJDVv!@E$rZMaE4^Yh~GaIB%o`_B3b9O(N-x)%Kjo}8B%6L{ap%=?#fni9hl zzsBTa?LA6%H8(O9!>=c+cqzq36%(tnHdu-n_UZeww!0e$*~ z@ngnXo|b#6TenU)_q=nfeD>LAnY~t2n@zaUJOImWVi(en=oRwk)Yy|7C+>`WhHeBe z-Z${M_eq8ceV=U~2XB2m7*pc*@E6Az2l~&)j^o&<#;@XA_{`4bdlBDl<-dp*a~P>d zuE0sxs;k&7R8QMr2A(tQ7=E|Lv+JqP`K_4O{5fdtS&{4MvwEB7A?Jm%TKBQO;=70^ z%(ua>gRuX_m(69@c#Xc>W_jB!A1`pZW_&ITxW4C}eVZ}#XYl7_-}&3en3nM>^qgjQ zr+y0lsQI|5FO&H$_(It2ZnFz7@De=beC6BT=5dsLH?`S__hADOUllBmv1`|1B4V4>?nDHOzA{ET=Irm8T`O*J3wCF#T*x( zqm;Ee=AV1rB(-1Ni2o}t6H^!R8!1^$ZIlnN7(a1-eFvMy;*okrkHs*i_yZop&V2SX zuhzU-lFLqHWui;K2z_q2l5OVxx?jU%Mda&@>^Bq>Z>2br`knLbdO6$_!j9v{Kl8CR z{Ald4fAA^r#j(?-YaYe0p+iG6jq$((VXQSo{){2cH{tnO3A(0=vHUn(zG z%VNbdR4WK>#;WFzIx_4>?u|aCUz0veVlOU>;N=)EwheC3E$9K^rLklceTH9GDlY)v z(ziO!{2hq?ZK-GH_xLO!#W)p*=3a=WbQEuQ?My5`sp;ZA;XCKIj0bg$ZLi^_HIhxr zJO-Ov(!EFMCF-qO`9AXHh;J4oea3mnx89sjYv=Qwqy~>#vc5Y&)JtZh-}5#C)et*1RLt9k$nf@2~okIkV^V`QU>O65JH2<}<}jpASFyApGF1&yo5vWKwIOJkn!y=tt*w|yb;EZfxVI{$h7E-m=* z*02Iz3Q>A4^HK|vcnyBbliv^D$*wE@1d}^N@%OYH-+R2xwc`E!w#fkGg7*>IUDG*d zrJgB1p7y7mn{4+k>pR>heI#Nm(0`r8v&cDJPVa=K~hMSE=s=om@>t&-655O+8`r`=` ztR9WJVC=O%l56B^Ebc7c=N`ej*{Q+=b`qG!p53Y!65Gdc&YCooTjn+Pv_ z2ivK&hC}j5++O{hpGM5c|%feHhOi884^2!1v<)ZEd^0`ns)O6Q0Z8%Qx9~ zOnj5?@*TgQulpR?`Ds6Ue|yVyxju4gfMUS?`t&y4Y_@>-H^vOxdAtTnj+nE^2sN!ef#aVs}vD8b3f3$ zv!#m`nT>`1CLVyk!M8#8p!3no*sLBK#x_IOI99-VzJHh}oySN=^8fT>O8$AQXV}I^ zVcrJz2V;nRk9=pm&^d1B+wllTjwK&=pA+Ky-a0>()%tl~w~ep&O?f^3-Z#Mw_h9}K zK2zi)ecfj@DkVExIM@<_`cUw zv5lVub{sRb9#4WV`7Llm40zGPg<*!~mGlz-V6U|n25-CVHk)I;v;GZ!jVQeR)?4QL z<9}e6Gmiz|hB+w2(y)hlUNC|!#yy($oX|89x?dhVS_CxJ3uC z4<8z4(wac_v5mmZ{P~*qE}esq(^+zpxZ08>ONyp%WbcJrZ@I;4UWkJ*PjJPOWtz7; zEyE457UV~aml!kgcHB?)+&p_3wyp8cvXxp(v%z)pa-iEjU`i6KwiF9CB@o!`41g-Hg_x<-j6j_SVP9<*o&89Y=9%k*Rt?+E_}bdTK^quS&u+iFBZkuhCgi$ z8`eFDsJxylf8F>uZLJ>GCegDl6@Oy4F?W%*8>VT#Icw56U%(sao~=BQ*0)Pv6vBa@ z=WU^L{21r(JMMS$TdWH+RsQ*6`Rj)sdT1D@d+8xNx0UXpk3M_prI(6=8|8z-dFP#H z`AB2|Iio|DFAvkFO-*VA#H+-h!4&!keCPE}j2oUK#*gpk+jg?ez>8DfPQxB!%_4Ba zb`#}1S*K{l;w6TScpNLYOJnKV=nuoOu)I|3W|^NO9~hsQ^&P0=hhN-Q^ET!Ic)o+; zXO01H9WUPc@j|WZF8n3S9f>yw%O+>tfu)NVhog=AOlh?c2A(b_8n+ zW+ndC(uIpcj}$l9N4^f%j^M`atk?$Q7~ge@KP$A&`S{(`;1Pqyw}O9<(i%4>o_Jzd zApZ-$h8#`{*-Q7{d+$!;hPc4zpMM@!ty*R4MZn+S27SXiW5^9+(b#ET>uPzMw4MU& z@O=0^)K3!wB-cX@$k%M5hKqf!0e0A?C1$WK+^}vW>+v~msMBHn!Ak$8;@}9K!#cp^ zc&K|r){?&gJ9*rg9hJtDV!O@pf!+WY^E`#0ZwbGhJVne4(tS8T-%v2d_}t|3>O#|{1t$60U1>;0)ywpvf+NWGSsed;@@ zF+k@~OYn7YL+w0q0oH0J*0UorvGSbq#TaYH$GAbxvJNUT7haD2n{DC7F%#p(w;dba zmW3OxLH#j#$K}FG9ycA8A8#anyz#~xi;o-W1aNcMiWMd^SWlT)Ja!suj)EP>jknYg zFu#fQu~@r~`CL9vAghzs=ir68EX=7P7eo!sws1qPlXYNOhZSE3+@Nn5C*sYOm?&RN z>`4EjZ-_(pP`niz$#H|ef$!lF@PaL07H;5oi1YnC#|*9G#oI!-;d|&QVp#C(ilwsC zq;FQPTp5;0_n>dUO#{{IUw7SgMaK>J0IP1N5swGI*jD6ay)M;T`h}XChINxUgy@s3 z-cxxduek$1)I(6C!`#m1(ofXSI&SiHHq;B0g&XuuC2s!xm;qNYZu$y0;Dt4}zYcD| zgJZ^X>)^n#<9P8l#*O(x!V5MJpHoW-Zs1{XbHWKHSnjiL-@b+$^i8pG!<=Apt=NW# zE?aKDPrU>(#Pkig5x={i1CAhYz+?8)|K?z4qFo=^Nr{jvKIwp5ymR;U=1w z$Fre3AjgT#aYG#%b{cg9mAI)mxS`gaFh5q#GySdfSp!fe)pgM{O6+JhB)*oil>1aVqoYSaD%>c++e%9e?wnj zr{Vk47s!UTnqPx#AP$|c3HM`NIwWgyGJlYB+o&%a3P0ch%s6(?J=E01xN-jm+~D6- z#sw+{c6eXVGUZCTi~qq5JnOiD_wk3}5%i8@0sR6Nc!z=^Si&$j=22oX5NX z;$*A~10TA+ab3iDZl{@lqnOch`RGR+ez>ihiN2vG8huk&{PxE`{&A;qL%jfXHa|Z7 zbhER#$HSE`0yjLr*G1=X!+pBH1CESTzs5Xt#}(LOn>;CfhE8^zwbJ)nHEW@@QX1J@ zf9Cmny&Cg#*e~SYfS*d-R1C~ur|~YJrQoJhN5c(uHebOF>w#-LA@~M4N*)hg!`ck+ zhQ(UN)7T|Vv?d!dSk{t6FOiEU{t6F*HS#o`;{h{{8}P{50?2z}TaKF*ig9_~vre5l z;fgD+C<<<r1}u~0Sp_;_I5d^TZ+m^}PX-2nZs6mMNOxh)6I5)27D z+IHNyk3(LEwL4R5OY%hX7;SoxM9rU1Na+VgPn#w zf?fd^@?;{ zgPY5*xO}JWG{?;13N!NeBPH-&TwSTPKMd+82~E22ZoAkK~J zLct8!@t6QDV}Sn2M1lpyP&h4a&j|^9btHtrIT0^s=Jqo1g#mXO>sNJ|xeIUj=Ts2g`d34{oP9 zW@zpHQ|!=3=w9s8vWWgc=AdtpM_?tUZRs1sjqJ3_y3UG&8|nodHv<$a{@S=vEXr%K z;0|$4=v&m8Ebaz9Zim~SM!JT%Yv>!|0td;ay7baZcN#Z7 zZ|&@}&N5xeyM&KW9Ab&)n4)iqL*w6+Wv781;u;nYk(!Z&=xbb({yPXE#BTvyCrh61O!q&h}W1W2X z1)P8v&zt-Cj+s1e;2oFO=p1;E?_j5u!j1SC%p4&-Flf*qtFr+&zy9^Fi-wzX&OUpG za1+M_T;HH09WRcNLap1djvHby|^7iJOXp8LzW(eKW9MKU;GT?39HYcqPV7 z-cEyW3gLzv3AP&gCdLi#6~hN|-0;pBV!-Gds+?;ccc%)v>F8)R-N+{mu42)NO@(6%=8MHgLU zb^fDAmV{%a+gM|OdI|7DOWhj&yx%h|&xEd_7TPKHYuL7TIMq(x0l z-M}x{Y542#i0d5m2bjQ4BY%Tk;{FZsB;ywyBmRVJ#=fB@65M!P03BwZ<@62y6LB{D z8|<`0mo2lnFmt7`)rQG_E2h55aC6~>_O4>bjpM~z>TfLWC*KP_WA>V!t8@E~$=prp zKpOvEy5Lw_06lqO@)vf z;0B$;xbYr~Z;TsZ1Ki->kgow>9!ucZH^mJ$TDjpy^=TJv4>x`Knw>_>0y#onljnon z)^vN5&;2~Fr6C^!7U*Ae3VAZNiJNiUVg&N}VtqsHGqJR>(t*?ql+rgdEA>r9&~pn_ zF92?scepLwxXvl1Z&ZI4>l^eBddK4ewAgT82R9|dMr8VidI4f-#MIC?tY=e8zV*51 zp1afj4evDI9Ui~^?Qb(X?YN_l(Ypy$FCbZhzM}NHxgQSimO9>l=8a zPVIv%E&wh#552;6TrYrr%Hsz4?KYfakrw`BZSzG77bNx2(l_9S+Rov_hub>|4pbbX zD7e{_;^y)z%!k9jIsVujZsrO%$~QW095bcbHd}E7mYi7Ysbd;%MxS&Rj=%}nh%w{X z;TZY{oUs-(cADdccPdxrZz>Lcm^+y0n|UVZzzy$evbAp0dgwfE&=1I0>YB;p5l?g6 zkO$4<27HvljpVlBM)3l$65|G2$Z(^2IqF>wSN`UR2shLV6bm=Lt~&aL*ayG+b#deR zhI&2X0x@;f+}7@T_a^VLvv<&F4idTse4u|I$5Ez_I(D|>tZzSF>$-y*;sKTUn~H-O z?6$4AnQOQiE;)z3nJYYb92yjp1|wVkk$ABu5V~L*Yyqd z60zV6H}Y>>-+-F~RIhTu1s4>>zrjws@`@`%W5ugVMvVB{xIupKJf@H2aFX|Nzzy@(h^b*qP^(Uz=RE2Kq;J}a z7aA!?$2+{6Dldcm1&=e&8GVzt(@fvUAHuG~UncJX9`d+>&m1e@2IATrcidRLfbx*U z1df&cG(vn$T!44vUVQPzJB=IS(1x2Uue7`;`sM`I0EzvZ?bvC|S>@i5Ez|^f9*dTF z(9Ii3eu$W_Nlc7&INZkpFHT?xodi|lreb5pF=V(=Yykge#NeS}k#I9#c$zER5GQS1 zuYtV}xtVkbzCLjzw@Z8tq|8nuo+keWtdQpbJLsH7iW^woT=Q>`&)8$ )^+{jLI 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�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 Date: Thu, 14 May 2020 13:06:06 +0200 Subject: [PATCH 168/199] Multi RX needs bind button too --- radio/src/gui/gui_common.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 5b8c61a97..b1b71eba0 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -141,10 +141,7 @@ void runFatalErrorScreen(const char * message); inline uint8_t MODULE_BIND_ROWS(int moduleIdx) { - if (IS_RX_MULTI(moduleIdx)) - return 0; - - if (isModuleXJTD8(moduleIdx) || isModuleSBUS(moduleIdx)) + if (isModuleXJTD8(moduleIdx) || isModuleSBUS(moduleIdx) || IS_RX_MULTI(moduleIdx)) return 1; if (isModulePPM(moduleIdx) || isModulePXX1(moduleIdx) || isModulePXX2(moduleIdx) || isModuleDSM2(moduleIdx) || isModuleMultimodule(moduleIdx)) From 61acd26497a6d4784abb22160afdc0cb9fa5f117 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 15 May 2020 10:09:25 +0200 Subject: [PATCH 169/199] Missing protection (when no bitmap on SD) --- radio/src/gui/480x272/model_select.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/480x272/model_select.cpp b/radio/src/gui/480x272/model_select.cpp index 9cb0f3979..539191372 100644 --- a/radio/src/gui/480x272/model_select.cpp +++ b/radio/src/gui/480x272/model_select.cpp @@ -62,7 +62,7 @@ void drawModel(coord_t x, coord_t y, ModelCell * model, bool current, bool selec if (selected) { lcdDrawSolidRect(x, y, MODELCELL_WIDTH+2, MODELCELL_HEIGHT+2, 1, TITLE_BGCOLOR); drawShadow(x, y, MODELCELL_WIDTH+2, MODELCELL_HEIGHT+2); - if (selectMode == MODE_MOVE_MODEL) { + if (selectMode == MODE_MOVE_MODEL && modelselModelMoveBackground) { lcd->drawMask(x+MODELCELL_WIDTH+2-modelselModelMoveBackground->getWidth(), y, modelselModelMoveBackground, TITLE_BGCOLOR); lcd->drawMask(x+MODELCELL_WIDTH+2-modelselModelMoveBackground->getWidth()+12, y+5, modelselModelMoveIcon, TEXT_BGCOLOR); } From 1cad34eb73e1ce6eb896afb6149cfe2c5ae86b2f Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 15 May 2020 14:50:13 +0200 Subject: [PATCH 170/199] Add lua table lib to colorlcd (#7599) * Add lua table lib to colorlcd * Allow require on colorlcd --- radio/src/thirdparty/Lua/src/lauxlib.h | 1 + radio/src/thirdparty/Lua/src/linit.c | 7 ++++++- radio/src/thirdparty/Lua/src/ltablib.c | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/radio/src/thirdparty/Lua/src/lauxlib.h b/radio/src/thirdparty/Lua/src/lauxlib.h index aab96bd1c..9cd4c02d3 100644 --- a/radio/src/thirdparty/Lua/src/lauxlib.h +++ b/radio/src/thirdparty/Lua/src/lauxlib.h @@ -29,6 +29,7 @@ extern const luaL_Reg mathlib[]; extern const luaL_Reg bitlib[]; extern const luaL_Reg iolib[]; extern const luaL_Reg strlib[]; +extern const luaL_Reg tab_funcs[]; extern const luaL_Reg opentxLib[]; extern const luaL_Reg lcdLib[]; diff --git a/radio/src/thirdparty/Lua/src/linit.c b/radio/src/thirdparty/Lua/src/linit.c index 940790e3d..4706a3ab7 100644 --- a/radio/src/thirdparty/Lua/src/linit.c +++ b/radio/src/thirdparty/Lua/src/linit.c @@ -28,7 +28,9 @@ */ static const luaL_Reg loadedlibs[] = { // {"_G", luaopen_base}, - // {LUA_LOADLIBNAME, luaopen_package}, +#if defined(PCBHORUS) + {LUA_LOADLIBNAME, luaopen_package}, +#endif // {LUA_COLIBNAME, luaopen_coroutine}, // {LUA_TABLIBNAME, luaopen_table}, {LUA_IOLIBNAME, luaopen_io}, @@ -51,6 +53,9 @@ const luaR_table lua_rotable[] = {LUA_STRLIBNAME, strlib, NULL}, {LUA_MATHLIBNAME, mathlib, mathlib_vals}, {LUA_BITLIBNAME, bitlib, NULL}, +#if defined(PCBHORUS) + {LUA_TABLIBNAME, tab_funcs, NULL}, +#endif {NULL, NULL, NULL} }; diff --git a/radio/src/thirdparty/Lua/src/ltablib.c b/radio/src/thirdparty/Lua/src/ltablib.c index c61903b08..d545a5325 100644 --- a/radio/src/thirdparty/Lua/src/ltablib.c +++ b/radio/src/thirdparty/Lua/src/ltablib.c @@ -256,7 +256,7 @@ static int sort (lua_State *L) { /* }====================================================== */ -static const luaL_Reg tab_funcs[] = { +const luaL_Reg tab_funcs[] = { {"concat", tconcat}, #if defined(LUA_COMPAT_MAXN) {"maxn", maxn}, From f0d8d340fd38f5c6b38ef9f628531e1437ea84e2 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 15 May 2020 14:51:36 +0200 Subject: [PATCH 171/199] Add AUX2 (#7588) AUX2 added --- radio/src/datastructs.h | 3 +- radio/src/debug.h | 1 + radio/src/gui/480x272/radio_hardware.cpp | 23 ++- radio/src/lua/api_general.cpp | 7 + radio/src/opentx.cpp | 4 + radio/src/serial.cpp | 4 + .../conversions/conversions_218_219.cpp | 2 +- .../common/arm/stm32/aux_serial_driver.cpp | 176 ++++++++++++++++++ .../common/arm/stm32/bootloader/boot.cpp | 9 +- radio/src/targets/horus/CMakeLists.txt | 8 +- radio/src/targets/horus/board.cpp | 6 + radio/src/targets/horus/board.h | 21 ++- radio/src/targets/horus/hal.h | 4 + radio/src/targets/simu/simpgmspace.cpp | 20 ++ radio/src/targets/taranis/board.h | 4 +- radio/src/targets/taranis/hal.h | 5 + radio/src/telemetry/crossfire.cpp | 5 + radio/src/telemetry/frsky.cpp | 5 + radio/src/telemetry/multi.cpp | 6 + radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 3 +- radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 3 +- radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 3 +- radio/src/translations/nl.h.txt | 3 +- radio/src/translations/pl.h.txt | 3 +- radio/src/translations/pt.h.txt | 3 +- radio/src/translations/se.h.txt | 3 +- 32 files changed, 323 insertions(+), 17 deletions(-) diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 413c5efcd..a0571ac61 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -666,7 +666,8 @@ PACK(struct TrainerData { #if defined(PCBHORUS) #define EXTRA_GENERAL_FIELDS \ - NOBACKUP(uint8_t auxSerialMode); \ + NOBACKUP(uint8_t auxSerialMode:4); \ + NOBACKUP(uint8_t aux2SerialMode:4); \ swconfig_t switchConfig; \ uint16_t potsConfig; /* two bits per pot */ \ uint8_t slidersConfig; /* 1 bit per slider */ \ diff --git a/radio/src/debug.h b/radio/src/debug.h index 2ed2f209b..e73c73f29 100644 --- a/radio/src/debug.h +++ b/radio/src/debug.h @@ -38,6 +38,7 @@ extern "C" { #endif uint8_t auxSerialTracesEnabled(); +uint8_t aux2SerialTracesEnabled(); #if defined(SIMU) typedef void (*traceCallbackFunc)(const char * text); diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 37f81bed3..3ba908ad9 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -70,7 +70,9 @@ enum MenuRadioHardwareItems { #if defined(AUX_SERIAL) ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE, #endif - +#if defined(AUX2_SERIAL) + ITEM_RADIO_HARDWARE_AUX2_SERIAL_MODE, +#endif ITEM_RADIO_HARDWARE_JITTER_FILTER, ITEM_RADIO_HARDWARE_RAS, @@ -89,6 +91,11 @@ enum MenuRadioHardwareItems { #else #define AUX_SERIAL_ROW #endif +#if defined(AUX2_SERIAL) +#define AUX2_SERIAL_ROW 0, +#else +#define AUX2_SERIAL_ROW +#endif #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 #define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 @@ -159,6 +166,7 @@ bool menuRadioHardware(event_t event) EXTERNAL_ANTENNA_ROW AUX_SERIAL_ROW /* aux serial mode */ + AUX2_SERIAL_ROW /* aux2 serial mode */ 0, /* ADC filter */ READONLY_ROW /* RAS */, SPORT_POWER_ROWS @@ -371,6 +379,19 @@ bool menuRadioHardware(event_t event) break; #endif +#if defined(AUX2_SERIAL) + case ITEM_RADIO_HARDWARE_AUX2_SERIAL_MODE: + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_AUX2_SERIAL_MODE); +#if defined(RADIO_TX16S) + lcdDrawText(lcdNextPos, y, " (TTL)"); +#endif + g_eeGeneral.aux2SerialMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_AUX_SERIAL_MODES, g_eeGeneral.aux2SerialMode, 0, UART_MODE_MAX, attr, event); + if (attr && checkIncDec_Ret) { + aux2SerialInit(g_eeGeneral.aux2SerialMode, modelTelemetryProtocol()); + } + break; +#endif + case ITEM_RADIO_HARDWARE_JITTER_FILTER: { lcdDrawText(MENUS_MARGIN_LEFT, y, STR_JITTER_FILTER); diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 06b11449c..778af80c6 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1601,6 +1601,13 @@ static int luaSerialWrite(lua_State * L) while(wr_len--) auxSerialPutc(*p++); } #endif +#if defined(AUX2_SERIAL) + if (aux2SerialMode == UART_MODE_LUA) { + size_t wr_len = len; + const char* p = str; + while(wr_len--) aux2SerialPutc(*p++); + } +#endif #else debugPrintf("luaSerialWrite: %.*s",len,str); #endif diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index eeb2d2ef2..9e5ced95e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1939,6 +1939,10 @@ void opentxInit() auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol()); #endif +#if defined(AUX2_SERIAL) + aux2SerialInit(g_eeGeneral.aux2SerialMode, modelTelemetryProtocol()); +#endif + #if MENUS_LOCK == 1 getMovedSwitch(); if (TRIMS_PRESSED() && g_eeGeneral.switchUnlockStates==switches_states) { diff --git a/radio/src/serial.cpp b/radio/src/serial.cpp index 953a865f5..c83b2fd92 100644 --- a/radio/src/serial.cpp +++ b/radio/src/serial.cpp @@ -34,6 +34,10 @@ void serialPutc(char c) { if (auxSerialTracesEnabled()) auxSerialPutc(c); #endif +#if defined(AUX2_SERIAL) + if (aux2SerialTracesEnabled()) + aux2SerialPutc(c); +#endif } void serialPrintf(const char * format, ...) diff --git a/radio/src/storage/conversions/conversions_218_219.cpp b/radio/src/storage/conversions/conversions_218_219.cpp index fe047ed80..dfca770ac 100644 --- a/radio/src/storage/conversions/conversions_218_219.cpp +++ b/radio/src/storage/conversions/conversions_218_219.cpp @@ -400,7 +400,7 @@ void convertRadioData_218_to_219(RadioData & settings) #if defined(PCBHORUS) // 2 new pots from X10: // - copy btw. 'chkSum' and 'auxSerialMode' (excl.) - memcpy(&settings.chkSum, &oldSettings.chkSum, offsetof(RadioData, auxSerialMode) - offsetof(RadioData, chkSum)); + memcpy(&settings.chkSum, &oldSettings.chkSum, offsetof(RadioData, switchConfig) - sizeof(uint8_t) - offsetof(RadioData, chkSum)); // - move calibration data memcpy(&settings.calib[NUM_STICKS + 5], &oldSettings.calib[NUM_STICKS + 3], sizeof(CalibData) * (STORAGE_NUM_SLIDERS + STORAGE_NUM_MOUSE_ANALOGS)); memclear(&settings.calib[NUM_STICKS + 3], sizeof(CalibData) * 2); 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 58f27fed5..35a23073c 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -193,5 +193,181 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) } #endif } +#endif + +#if defined(AUX2_SERIAL) +uint8_t aux2SerialMode = 0; +Fifo aux2SerialTxFifo; +AuxSerialRxFifo aux2SerialRxFifo __DMA (AUX2_SERIAL_DMA_Stream_RX); + +void aux2SerialSetup(unsigned int baudrate, bool dma) +{ + USART_InitTypeDef USART_InitStructure; + GPIO_InitTypeDef GPIO_InitStructure; + + GPIO_PinAFConfig(AUX2_SERIAL_GPIO, AUX2_SERIAL_GPIO_PinSource_RX, AUX2_SERIAL_GPIO_AF); + GPIO_PinAFConfig(AUX2_SERIAL_GPIO, AUX2_SERIAL_GPIO_PinSource_TX, AUX2_SERIAL_GPIO_AF); + + GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_GPIO_PIN_TX | AUX2_SERIAL_GPIO_PIN_RX; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_Init(AUX2_SERIAL_GPIO, &GPIO_InitStructure); + +#if defined(AUX2_SERIAL_PWR_GPIO) + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_PWR_GPIO_PIN; + GPIO_Init(AUX2_SERIAL_PWR_GPIO, &GPIO_InitStructure); +#endif + + USART_InitStructure.USART_BaudRate = baudrate; + USART_InitStructure.USART_WordLength = USART_WordLength_8b; + USART_InitStructure.USART_StopBits = USART_StopBits_1; + USART_InitStructure.USART_Parity = USART_Parity_No; + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; + USART_Init(AUX2_SERIAL_USART, &USART_InitStructure); + + if (dma) { + DMA_InitTypeDef DMA_InitStructure; + aux2SerialRxFifo.clear(); + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_RXNE, DISABLE); + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE); + DMA_InitStructure.DMA_Channel = AUX2_SERIAL_DMA_Channel_RX; + DMA_InitStructure.DMA_PeripheralBaseAddr = CONVERT_PTR_UINT(&AUX2_SERIAL_USART->DR); + DMA_InitStructure.DMA_Memory0BaseAddr = CONVERT_PTR_UINT(aux2SerialRxFifo.buffer()); + DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; + DMA_InitStructure.DMA_BufferSize = aux2SerialRxFifo.size(); + DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; + DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; + DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; + DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; + DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; + DMA_InitStructure.DMA_Priority = DMA_Priority_Low; + DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; + DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; + DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; + DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; + DMA_Init(AUX2_SERIAL_DMA_Stream_RX, &DMA_InitStructure); + USART_DMACmd(AUX2_SERIAL_USART, USART_DMAReq_Rx, ENABLE); + USART_Cmd(AUX2_SERIAL_USART, ENABLE); + DMA_Cmd(AUX2_SERIAL_DMA_Stream_RX, ENABLE); + } + else { + USART_Cmd(AUX2_SERIAL_USART, ENABLE); + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_RXNE, ENABLE); + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE); + NVIC_SetPriority(AUX2_SERIAL_USART_IRQn, 7); + NVIC_EnableIRQ(AUX2_SERIAL_USART_IRQn); + } +} + +void aux2SerialInit(unsigned int mode, unsigned int protocol) +{ + aux2SerialStop(); + + aux2SerialMode = mode; + + switch (mode) { + case UART_MODE_TELEMETRY_MIRROR: +#if defined(CROSSFIRE) + if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { + aux2SerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false); + break; + } +#endif + aux2SerialSetup(FRSKY_TELEM_MIRROR_BAUDRATE, false); + break; + +#if defined(DEBUG) || defined(CLI) + case UART_MODE_DEBUG: + aux2SerialSetup(DEBUG_BAUDRATE, false); + break; +#endif + + case UART_MODE_TELEMETRY: + if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) { + aux2SerialSetup(FRSKY_D_BAUDRATE, true); + } + break; + + case UART_MODE_LUA: + aux2SerialSetup(DEBUG_BAUDRATE, false); + } +} + +void aux2SerialPutc(char c) +{ +#if !defined(SIMU) + int n = 0; + while (aux2SerialTxFifo.isFull()) { + delay_ms(1); + if (++n > 100) return; + } + aux2SerialTxFifo.push(c); + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, ENABLE); +#endif +} + +void aux2SerialSbusInit() +{ + aux2SerialSetup(SBUS_BAUDRATE, true); + AUX2_SERIAL_USART->CR1 |= USART_CR1_M | USART_CR1_PCE ; + AUX2_SERIAL_POWER_ON(); +} + +void aux2SerialStop() +{ + DMA_DeInit(AUX2_SERIAL_DMA_Stream_RX); + USART_DeInit(AUX2_SERIAL_USART); +} + +uint8_t aux2SerialTracesEnabled() +{ +#if defined(DEBUG) + return (aux2SerialMode == UART_MODE_DEBUG); +#else + return false; +#endif +} + +#if !defined(SIMU) +extern "C" void AUX2_SERIAL_USART_IRQHandler(void) +{ + DEBUG_INTERRUPT(INT_SER2); + // Send + if (USART_GetITStatus(AUX2_SERIAL_USART, USART_IT_TXE) != RESET) { + uint8_t txchar; + if (aux2SerialTxFifo.pop(txchar)) { + /* Write one byte to the transmit data register */ + USART_SendData(AUX2_SERIAL_USART, txchar); + } + else { + USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE); + } + } + +#if defined(CLI) + if (getSelectedUsbMode() != USB_SERIAL_MODE) { + // Receive + uint32_t status = AUX2_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX2_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { + switch (aux2SerialMode) { + case UART_MODE_DEBUG: + cliRxFifo.push(data); + break; + } + } + status = AUX2_SERIAL_USART->SR; + } + } +#endif +} +#endif + #endif #endif // AUX_SERIAL diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index b0079b49e..c849f9e9a 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -197,15 +197,15 @@ int main() RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | KEYS_RCC_AHB1Periph | LCD_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph | - AUX_SERIAL_RCC_AHB1Periph | I2C_RCC_AHB1Periph | + AUX_SERIAL_RCC_AHB1Periph | AUX2_SERIAL_RCC_AHB1Periph | I2C_RCC_AHB1Periph | SD_RCC_AHB1Periph, ENABLE); RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph | LCD_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph | INTERRUPT_xMS_RCC_APB1Periph | I2C_RCC_APB1Periph | - AUX_SERIAL_RCC_APB1Periph | + AUX_SERIAL_RCC_APB1Periph | AUX2_SERIAL_RCC_APB1Periph | SD_RCC_APB1Periph, ENABLE); - RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph | RCC_APB2Periph_SYSCFG | AUX_SERIAL_RCC_APB2Periph, ENABLE); + RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph | RCC_APB2Periph_SYSCFG | AUX_SERIAL_RCC_APB2Periph | AUX2_SERIAL_RCC_APB2Periph, ENABLE); pwrInit(); keysInit(); @@ -249,6 +249,9 @@ int main() #if defined(DEBUG) && defined(AUX_SERIAL) auxSerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined) #endif +#if defined(DEBUG) && defined(AUX2_SERIAL) + aux2SerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined) +#endif __enable_irq(); diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index a02abfa12..b1a01e2e1 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -64,8 +64,9 @@ if (PCB STREQUAL X10) set(HARDWARE_TOUCH YES) set(USB_CHARGER YES) set(DEFAULT_THEME "DARKBLUE") + set(AUX_SERIAL ON) if (NOT BLUETOOTH) - set(AUX_SERIAL ON) + set(AUX2_SERIAL ON) endif() else() set(FLAVOUR x10) @@ -238,6 +239,11 @@ if (AUX_SERIAL) set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp) endif() +if (AUX2_SERIAL) + add_definitions(-DAUX2_SERIAL) + set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp) +endif() + set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} ${LCD_DRIVER} diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 15b14ac2f..704a6f27c 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -96,6 +96,7 @@ void boardInit() KEYS_RCC_AHB1Periph | ADC_RCC_AHB1Periph | AUX_SERIAL_RCC_AHB1Periph | + AUX2_SERIAL_RCC_AHB1Periph | TELEMETRY_RCC_AHB1Periph | TRAINER_RCC_AHB1Periph | BT_RCC_AHB1Periph | @@ -116,6 +117,7 @@ void boardInit() TIMER_2MHz_RCC_APB1Periph | AUDIO_RCC_APB1Periph | AUX_SERIAL_RCC_APB1Periph | + AUX2_SERIAL_RCC_APB1Periph | TELEMETRY_RCC_APB1Periph | TRAINER_RCC_APB1Periph | AUDIO_RCC_APB1Periph | @@ -135,6 +137,7 @@ void boardInit() TELEMETRY_RCC_APB2Periph | BT_RCC_APB2Periph | AUX_SERIAL_RCC_APB2Periph | + AUX2_SERIAL_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph, ENABLE); @@ -147,6 +150,9 @@ void boardInit() #if defined(DEBUG) && defined(AUX_SERIAL) auxSerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined) #endif +#if defined(DEBUG) && defined(AUX2_SERIAL) + aux2SerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined) +#endif TRACE("\nHorus board started :)"); TRACE("RCC->CSR = %08x", RCC->CSR); diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 437346078..74ebd7368 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -615,7 +615,7 @@ void sportUpdatePowerInit(); #define IS_SPORT_UPDATE_POWER_ON() (false) #endif -// Second serial port driver +// Aux serial port driver #if defined(AUX_SERIAL_GPIO) #define DEBUG_BAUDRATE 115200 extern uint8_t auxSerialMode; @@ -635,6 +635,25 @@ void auxSerialPowerOff(); #endif #endif +// Aux2 serial port driver +#if defined(AUX2_SERIAL) +extern uint8_t aux2SerialMode; +void aux2SerialInit(unsigned int mode, unsigned int protocol); +void aux2SerialPutc(char c); +#define aux2SerialTelemetryInit(protocol) aux2SerialInit(UART_MODE_TELEMETRY, protocol) +void aux2SerialSbusInit(); +void aux2SerialStop(); +void aux2SerialPowerOn(); +void aux2SerialPowerOff(); +#if defined(AUX2_SERIAL_PWR_GPIO) +#define AUX2_SERIAL_POWER_ON() aux2SerialPowerOn() +#define AUX2_SERIAL__POWER_OFF() aux2SerialPowerOff() +#else +#define AUX2_SERIAL_POWER_ON() +#define AUX2_SERIAL__POWER_OFF() +#endif +#endif + // Haptic driver void hapticInit(); void hapticDone(); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index c37f1ba54..f964e0137 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -433,6 +433,10 @@ #define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_5 #define AUX2_SERIAL_PWR_GPIO GPIOB #define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 +#else + #define AUX2_SERIAL_RCC_AHB1Periph 0 + #define AUX2_SERIAL_RCC_APB1Periph 0 + #define AUX2_SERIAL_RCC_APB2Periph 0 #endif // Telemetry diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 73a4948ca..fa0122175 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -787,3 +787,23 @@ void auxSerialStop() { } #endif + +#if defined(AUX2_SERIAL) +AuxSerialRxFifo aux2SerialRxFifo(nullptr); +uint8_t aux2SerialMode; +void aux2SerialInit(unsigned int mode, unsigned int protocol) +{ +} + +void aux2SerialPutc(char c) +{ +} + +void aux2SerialSbusInit() +{ +} + +void aux2SerialStop() +{ +} +#endif diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index acba12d76..e62b71523 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -785,7 +785,7 @@ void hapticOff(); void hapticOn(); #endif -// Second serial port driver +// Aux serial port driver #if defined(AUX_SERIAL_GPIO) #define DEBUG_BAUDRATE 115200 #define AUX_SERIAL @@ -796,7 +796,7 @@ void auxSerialPutc(char c); void auxSerialSbusInit(); void auxSerialStop(); #define AUX_SERIAL_POWER_ON() -#define AUX_SERIAL__POWER_OFF() +#define AUX_SERIAL_POWER_OFF() #endif // BT driver diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index b55226edf..cfe9830b7 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -1323,6 +1323,11 @@ #define AUX_SERIAL_DMA_Channel_RX DMA_Channel_4 #endif +// No aux2 on taranis +#define AUX2_SERIAL_RCC_AHB1Periph 0 +#define AUX2_SERIAL_RCC_APB1Periph 0 +#define AUX2_SERIAL_RCC_APB2Periph 0 + // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 diff --git a/radio/src/telemetry/crossfire.cpp b/radio/src/telemetry/crossfire.cpp index 724fbe1a0..07f3577f4 100644 --- a/radio/src/telemetry/crossfire.cpp +++ b/radio/src/telemetry/crossfire.cpp @@ -201,6 +201,11 @@ void processCrossfireTelemetryData(uint8_t data) auxSerialPutc(data); } #endif +#if defined(AUX2_SERIAL) + if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) { + aux2SerialPutc(data); + } +#endif if (telemetryRxBufferCount == 0 && data != RADIO_ADDRESS) { TRACE("[XF] address 0x%02X error", data); diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 0fe1a5bfd..611ece4ac 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -32,6 +32,11 @@ void processFrskyTelemetryData(uint8_t data) auxSerialPutc(data); } #endif +#if defined(AUX2_SERIAL) + if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) { + aux2SerialPutc(data); + } +#endif if (pushFrskyTelemetryData(data)) { if (IS_FRSKY_SPORT_PROTOCOL()) { diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index 3719d660b..55f09eed3 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -322,6 +322,12 @@ static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module) auxSerialPutc(packet[c]); } #endif +#if defined(AUX2_SERIAL) + if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) { + for (uint8_t c=0; c < len; c++) + aux2SerialPutc(packet[c]); + } +#endif // Switch type switch (type) { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 4f43e33d1..39a5bc556 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -564,6 +564,7 @@ const char STR_ALTITUDE[] = TR_ALTITUDE; const char STR_SCALE[] = TR_SCALE; const char STR_VIEW_CHANNELS[] = TR_VIEW_CHANNELS; const char STR_AUX_SERIAL_MODE[] = TR_AUX_SERIAL_MODE; +const char STR_AUX2_SERIAL_MODE[] = TR_AUX2_SERIAL_MODE; const char STR_THROTTLE_LABEL[] = TR_THROTTLE_LABEL; const char STR_SCRIPT[] = TR_SCRIPT; const char STR_INPUTS[] = TR_INPUTS; diff --git a/radio/src/translations.h b/radio/src/translations.h index 6b0038118..3e7536295 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -864,6 +864,7 @@ extern const char STR_SCALE[]; extern const char STR_VIEW_CHANNELS[]; extern const char STR_POTWARNING[]; extern const char STR_AUX_SERIAL_MODE[]; +extern const char STR_AUX2_SERIAL_MODE[]; extern const char STR_THROTTLE_LABEL[]; extern const char STR_SCRIPT[]; extern const char STR_INPUTS[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 08ae06de2..4c04f2bf1 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -981,6 +981,7 @@ #define TR_CHECKLIST TR(INDENT "Poznámky", INDENT "Zobrazit poznámky") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Ofset") #define TR_AUX_SERIAL_MODE "Seriový port" +#define TR_AUX2_SERIAL_MODE "Seriový port 2" #define TR_SCRIPT "Skript" #define TR_INPUTS "Vstupy" #define TR_OUTPUTS "Výstupy" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 62478e7ed..c9e91bd45 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -987,6 +987,7 @@ #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_AUX2_SERIAL_MODE "Serieller Port 2" #define TR_SCRIPT "Lua-Skript" #define TR_INPUTS "Eingaben" #define TR_OUTPUTS "Ausgaben" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 72363c477..e7c30c01e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -985,7 +985,8 @@ #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display checklist") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS offset") -#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX2_SERIAL_MODE "Serial port 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index b022314fa..428505c1c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -985,6 +985,7 @@ #define TR_CHECKLIST TR(INDENT "Lista verif", INDENT "Lista verificación") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #define TR_AUX_SERIAL_MODE "Puerto serie" +#define TR_AUX2_SERIAL_MODE "Puerto serie 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Entradas" #define TR_OUTPUTS "Salidas" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index afaef5c33..4ff379551 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -999,7 +999,8 @@ #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX2_SERIAL_MODE "Serial port 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 422205dd5..e9e87f731 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1002,6 +1002,7 @@ #define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes") #define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS") #define TR_AUX_SERIAL_MODE "Port série" +#define TR_AUX2_SERIAL_MODE "Port série 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Entrées" #define TR_OUTPUTS "Sorties" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 72223e759..37a494f8a 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1001,7 +1001,8 @@ #define TR_PREFLIGHT "Controlli Prevolo" #define TR_CHECKLIST INDENT "Mostra Checklist" #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Porta Seriale" +#define TR_AUX_SERIAL_MODE "Porta Seriale" +#define TR_AUX2_SERIAL_MODE "Porta Seriale 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Ingresso" #define TR_OUTPUTS "Uscita" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index f36f75cf1..397cdd636 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -987,7 +987,8 @@ #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Toon Checklist") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Seriele poort" +#define TR_AUX_SERIAL_MODE "Seriele poort" +#define TR_AUX2_SERIAL_MODE "Seriele poort 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 5fd59c2ec..370d757f6 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1000,7 +1000,8 @@ #define TR_PREFLIGHT "Lista Ostrzeżeń" #define TR_CHECKLIST TR(INDENT "Czeklista",INDENT "Pokaż Listę Ostrzeżeń") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Port szreg." +#define TR_AUX_SERIAL_MODE "Port szreg." +#define TR_AUX2_SERIAL_MODE "Port szreg. 2" #define TR_SCRIPT "Skrypt" #define TR_INPUTS "Wejścia" #define TR_OUTPUTS "Wyjścia" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 857bc3c35..a9b5d0027 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -990,7 +990,8 @@ #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX_SERIAL_MODE "Serial port" +#define TR_AUX2_SERIAL_MODE "Serial port 2" #define TR_SCRIPT "Script" #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index feff5f1d2..1578d86a1 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1000,7 +1000,8 @@ #define TR_PREFLIGHT "Startkontroller" #define TR_CHECKLIST TR(INDENT "Checklista", INDENT "Visa Checklista") #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_AUX_SERIAL_MODE "Serieporten" +#define TR_AUX_SERIAL_MODE "Serieporten" +#define TR_AUX2_SERIAL_MODE "Serieporten 2" #define TR_SCRIPT "Programkod" #define TR_INPUTS "Input" #define TR_OUTPUTS "Outputs" From a32a431436f7caff31329f8ea32d95f68fca7e32 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 15 May 2020 14:52:33 +0200 Subject: [PATCH 172/199] Improve Batt and Batt charging icon (#7584) --- radio/src/bitmaps/480x272/mask_txbat.png | Bin 601 -> 310 bytes .../bitmaps/480x272/mask_txbat_charging.png | Bin 4967 -> 553 bytes radio/src/gui/480x272/topbar.cpp | 16 ++++++++-------- 3 files changed, 8 insertions(+), 8 deletions(-) mode change 100755 => 100644 radio/src/bitmaps/480x272/mask_txbat_charging.png diff --git a/radio/src/bitmaps/480x272/mask_txbat.png b/radio/src/bitmaps/480x272/mask_txbat.png index fd59391909622330e0a5cfd8db19de74edd4a0c3..001d2751c03e3587780330fff21ee326b0d992a0 100644 GIT binary patch delta 237 zcmVST6hzNoh7Jjd5*mbP zn8BiED8^tYXlU4g9s~@)u|ObEV&Wn>$=%7%r~gk@Bnbx+IFd84ilT_V?*jm|*2wc5 zp67jZsWAq1U0;LKG-coSR?}2fg|=-kJz7K%hT->Td$<1o(2jn^AMEh~V-VAl6@Z1l00000NkvXXu0mjf)2(Xz delta 531 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 diff --git a/radio/src/gui/480x272/topbar.cpp b/radio/src/gui/480x272/topbar.cpp index 81b1f643a..f78174aa8 100644 --- a/radio/src/gui/480x272/topbar.cpp +++ b/radio/src/gui/480x272/topbar.cpp @@ -91,18 +91,18 @@ void drawTopBar() /* Tx battery */ uint8_t bars = GET_TXBATT_BARS(5); #if defined(USB_CHARGER) - if (usbChargerLed() && BLINK_ON_PHASE) { - lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR); + if (usbChargerLed()) { + lcdDrawBitmapPattern(LCD_W - 130, 25, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR); } else { -#endif - lcdDrawBitmapPattern(LCD_W - 130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); - for (unsigned int i = 0; i < 5; i++) { - lcdDrawSolidFilledRect(LCD_W - 122 + 4 * i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR); - } -#if defined(USB_CHARGER) + lcdDrawBitmapPattern(LCD_W - 130, 25, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); } +#else + lcdDrawBitmapPattern(LCD_W - 130, 25, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR); #endif + for (unsigned int i = 0; i < 5; i++) { + lcdDrawSolidFilledRect(LCD_W - 128 + 4 * i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR); + } topbar->refresh(); #if 0 From 51f841d2af51fb76c4e0dad8e4f93167bec533b6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 15 May 2020 15:09:36 +0200 Subject: [PATCH 173/199] Fix haptic getCapabilities() (#7573) Fix haptic getCapabilities() --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 44346310d..464c458ef 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -564,7 +564,7 @@ int OpenTxFirmware::getCapability(::Capability capability) case SoundPitch: return 1; case Haptic: - return (IS_2560(board) || IS_SKY9X(board) || IS_TARANIS_PLUS(board) || IS_TARANIS_SMALL(board) || IS_TARANIS_X9E(board) || IS_FAMILY_HORUS_OR_T16(board) || IS_JUMPER_T12(board) || id.contains("haptic")); + return board != Board::BOARD_TARANIS_X9D || id.contains("haptic"); case ModelTrainerEnable: if (IS_HORUS_OR_TARANIS(board) && board!=Board::BOARD_TARANIS_XLITE) return 1; From 682f0f1b0521304c1dc79f80c8088e75ec0fb75b Mon Sep 17 00:00:00 2001 From: Tom van Dijk <5869151+tomvand@users.noreply.github.com> Date: Fri, 15 May 2020 15:13:23 +0200 Subject: [PATCH 174/199] lua serialRead (#7520) Lua serial read --- radio/src/lua/api_general.cpp | 52 +++++++++++++++++++ radio/src/lua/lua_api.h | 5 ++ .../common/arm/stm32/aux_serial_driver.cpp | 13 +++++ .../src/targets/common/arm/stm32/usbd_cdc.cpp | 11 +++- 4 files changed, 79 insertions(+), 2 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 778af80c6..6a4ab7c44 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -66,6 +66,10 @@ { "EVT_"#xxx"_LONG", EVT_KEY_LONG(yyy) }, \ { "EVT_"#xxx"_REPT", EVT_KEY_REPT(yyy) } +#if defined(LUA) && !defined(CLI) +Fifo * luaRxFifo = nullptr; +#endif + /*luadoc @function getVersion() @@ -1615,6 +1619,53 @@ static int luaSerialWrite(lua_State * L) return 0; } +/*luadoc +@function serialRead([num]) +@param num (optional): maximum number of bytes to read. + If non-zero, serialRead will read up to num characters from the buffer. + If 0 or left out, serialRead will read up to and including the first newline character or the end of the buffer. + Note that the returned string may not end in a newline if this character is not present in the buffer. + +@retval str string. Empty if no new characters were available. + +Reads characters from the serial port. The string is allowed to contain any character, including 0. + +@status current Introduced in TODO +*/ +static int luaSerialRead(lua_State * L) +{ + int num = luaL_optunsigned(L, 1, 0); + +#if defined(LUA) && !defined(CLI) + if (!luaRxFifo) { + luaRxFifo = new Fifo(); + if (!luaRxFifo) { + lua_pushlstring(L, "", 0); + return 1; + } + } + uint8_t str[LUA_FIFO_SIZE]; + uint8_t *p = str; + while (luaRxFifo->pop(*p)) { + p++; // increment only when pop was successful + if (p - str >= LUA_FIFO_SIZE) { + break; // Buffer full + } + if (num == 0 && (*(p - 1) == '\n' || *(p - 1) == '\r')) { + break; // Found newline + } + if (num > 0 && p - str >= num) { + break; // Requested number of characters reached + } + } + lua_pushlstring(L, (const char*)str, p - str); +#else + lua_pushlstring(L, "", 0); +#endif + + return 1; +} + const luaL_Reg opentxLib[] = { { "getTime", luaGetTime }, { "getDateTime", luaGetDateTime }, @@ -1662,6 +1713,7 @@ const luaL_Reg opentxLib[] = { { "multiBuffer", luaMultiBuffer }, #endif { "serialWrite", luaSerialWrite }, + { "serialRead", luaSerialRead }, { nullptr, nullptr } /* sentinel */ }; diff --git a/radio/src/lua/lua_api.h b/radio/src/lua/lua_api.h index 71a1cef01..a0dc8e919 100644 --- a/radio/src/lua/lua_api.h +++ b/radio/src/lua/lua_api.h @@ -41,6 +41,11 @@ extern "C" { #endif #endif +#if !defined(CLI) +#define LUA_FIFO_SIZE 256 +extern Fifo * luaRxFifo; +#endif + extern lua_State * lsScripts; extern lua_State * lsWidgets; extern bool luaLcdAllowed; 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 35a23073c..4ebef6790 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -192,6 +192,19 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) } } #endif +#if defined(LUA) && !defined(CLI) + if (luaRxFifo && auxSerialMode == UART_MODE_LUA) { + // Receive + uint32_t status = AUX_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { + luaRxFifo->push(data); + } + status = AUX_SERIAL_USART->SR; + } + } +#endif } #endif diff --git a/radio/src/targets/common/arm/stm32/usbd_cdc.cpp b/radio/src/targets/common/arm/stm32/usbd_cdc.cpp index dd0233941..4d9409ec8 100644 --- a/radio/src/targets/common/arm/stm32/usbd_cdc.cpp +++ b/radio/src/targets/common/arm/stm32/usbd_cdc.cpp @@ -218,11 +218,18 @@ static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len) #if defined(CLI) //copy data to the application FIFO - for (uint32_t i = 0; i < Len; i++) - { + for (uint32_t i = 0; i < Len; i++) { cliRxFifo.push(Buf[i]); } #endif +#if defined(LUA) && !defined(CLI) + // copy data to the LUA FIFO + if (luaRxFifo) { + for (uint32_t i = 0; i < Len; i++) { + luaRxFifo->push(Buf[i]); + } + } +#endif return USBD_OK; } From f7fc15d7b5d15b4dc6b77ab54ec5ce0cb5126c4a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 15 May 2020 15:17:41 +0200 Subject: [PATCH 175/199] Cosmetics --- radio/src/gui/128x64/model_flightmodes.cpp | 3 ++- radio/src/lua/api_general.cpp | 17 +++++++++++------ .../common/arm/stm32/aux_serial_driver.cpp | 16 ++++++++-------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index b619121b6..cfe15842b 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -87,7 +87,8 @@ void menuModelFlightModeOne(event_t event) int8_t editMode = s_editMode; #if defined(GVARS) - if (s_currIdx == 0 && sub>=ITEM_MODEL_FLIGHT_MODE_SWITCH) sub += VERTICAL_SHIFT; + if (s_currIdx == 0 && sub>=ITEM_MODEL_FLIGHT_MODE_SWITCH) + sub += VERTICAL_SHIFT; for (uint8_t k=0; kpop(*p)) { p++; // increment only when pop was successful if (p - str >= LUA_FIFO_SIZE) { - break; // Buffer full + // buffer full + break; } - if (num == 0 && (*(p - 1) == '\n' || *(p - 1) == '\r')) { - break; // Found newline + if (num == 0) { + if (*(p - 1) == '\n' || *(p - 1) == '\r') { + // found newline + break; + } } - if (num > 0 && p - str >= num) { - break; // Requested number of characters reached + else if (p - str >= num) { + // requested number of characters reached + break; } } lua_pushlstring(L, (const char*)str, p - str); 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 4ebef6790..bc0e54504 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -194,16 +194,16 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) #endif #if defined(LUA) && !defined(CLI) if (luaRxFifo && auxSerialMode == UART_MODE_LUA) { - // Receive - uint32_t status = AUX_SERIAL_USART->SR; - while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { - uint8_t data = AUX_SERIAL_USART->DR; - if (!(status & USART_FLAG_ERRORS)) { - luaRxFifo->push(data); - } - status = AUX_SERIAL_USART->SR; + // Receive + uint32_t status = AUX_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { + luaRxFifo->push(data); } + status = AUX_SERIAL_USART->SR; } + } #endif } #endif From 40f9b05ce240758231cbbcecaca7254d26219c8e Mon Sep 17 00:00:00 2001 From: Neil Horne Date: Fri, 15 May 2020 23:25:50 +1000 Subject: [PATCH 176/199] Companion update model references from enhanced context menus (#7325) Companion update model references from enhanced context menus --- companion/src/firmwares/CMakeLists.txt | 1 + .../src/firmwares/adjustmentreference.cpp | 81 ++ companion/src/firmwares/adjustmentreference.h | 69 ++ companion/src/firmwares/curvereference.h | 1 + companion/src/firmwares/eeprominterface.h | 5 +- companion/src/firmwares/gvardata.cpp | 5 + companion/src/firmwares/gvardata.h | 3 +- companion/src/firmwares/io_data.cpp | 81 +- companion/src/firmwares/io_data.h | 32 +- companion/src/firmwares/modeldata.cpp | 996 +++++++++++++++++- companion/src/firmwares/modeldata.h | 109 +- companion/src/firmwares/moduledata.cpp | 56 + companion/src/firmwares/moduledata.h | 4 +- .../src/firmwares/opentx/opentxinterface.cpp | 9 + companion/src/firmwares/rawsource.h | 8 +- companion/src/firmwares/rawswitch.h | 9 +- companion/src/modeledit/channels.cpp | 161 +-- companion/src/modeledit/channels.h | 30 +- companion/src/modeledit/curves.cpp | 341 +++--- companion/src/modeledit/curves.h | 28 +- companion/src/modeledit/customfunctions.cpp | 143 +-- companion/src/modeledit/customfunctions.h | 30 +- companion/src/modeledit/flightmodes.cpp | 865 ++++++++++++--- companion/src/modeledit/flightmodes.h | 46 +- companion/src/modeledit/inputs.cpp | 504 ++++++--- companion/src/modeledit/inputs.h | 18 +- companion/src/modeledit/logicalswitches.cpp | 438 +++++--- companion/src/modeledit/logicalswitches.h | 66 +- companion/src/modeledit/setup.cpp | 293 ++++-- companion/src/modeledit/setup.h | 22 +- companion/src/modeledit/setup.ui | 2 +- 31 files changed, 3472 insertions(+), 984 deletions(-) create mode 100644 companion/src/firmwares/adjustmentreference.cpp create mode 100644 companion/src/firmwares/adjustmentreference.h diff --git a/companion/src/firmwares/CMakeLists.txt b/companion/src/firmwares/CMakeLists.txt index b6b8fcaba..502a04961 100644 --- a/companion/src/firmwares/CMakeLists.txt +++ b/companion/src/firmwares/CMakeLists.txt @@ -1,5 +1,6 @@ set(firmwares_SRCS + adjustmentreference.cpp boards.cpp curvereference.cpp customfunctiondata.cpp diff --git a/companion/src/firmwares/adjustmentreference.cpp b/companion/src/firmwares/adjustmentreference.cpp new file mode 100644 index 000000000..37b284ecd --- /dev/null +++ b/companion/src/firmwares/adjustmentreference.cpp @@ -0,0 +1,81 @@ +/* + * 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 "adjustmentreference.h" +#include "radiodata.h" // for ModelData + +AdjustmentReference::AdjustmentReference(int value) +{ + int val = value; + if (abs(val) > ADJUST_REF_GVAR_BASE && abs(val) <= ADJUST_REF_GVAR_BASE + CPN_MAX_GVARS) { + type = ADJUST_REF_GVAR; + val = val >= 0 ? val - ADJUST_REF_GVAR_BASE : val + ADJUST_REF_GVAR_BASE; + } + else + this->type = ADJUST_REF_VALUE; + + this->value = val; +} + +AdjustmentReference::AdjustmentReference(AdjustRefType type, int value) +{ + this->type = type; + if (isValid(value)) + this->value = value; + else + clear(); +} + +bool AdjustmentReference::isValid(const int value) const +{ + switch(type) { + case ADJUST_REF_VALUE: + if (abs(value) < ADJUST_REF_GVAR_BASE) + return true; + break; + case ADJUST_REF_GVAR: + if (abs(value) > 0 && abs(value) <= CPN_MAX_GVARS); + return true; + break; + } + return false; +} + +QString AdjustmentReference::toString(const ModelData * model, const bool sign) const +{ + QString ret; + + switch(type) { + case ADJUST_REF_GVAR: + ret = RawSource(SOURCE_TYPE_GVAR, abs(value) - 1).toString(model); + if (value < 0) + ret.prepend("-"); + else if (sign) + ret.prepend("+"); + break; + default: + ret = "%1%"; + if (sign && value > 0) + ret.prepend("+"); + ret = ret.arg(value); + break; + } + return ret; +} diff --git a/companion/src/firmwares/adjustmentreference.h b/companion/src/firmwares/adjustmentreference.h new file mode 100644 index 000000000..2a7b7e141 --- /dev/null +++ b/companion/src/firmwares/adjustmentreference.h @@ -0,0 +1,69 @@ +/* + * 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 ADJUSTMENTREFERENCE_H +#define ADJUSTMENTREFERENCE_H + +#include + +class ModelData; + +constexpr int ADJUST_REF_GVAR_BASE { 10000 }; + +class AdjustmentReference { + Q_DECLARE_TR_FUNCTIONS(AdjustmentReference) + + public: + enum AdjustRefType { + ADJUST_REF_VALUE, + ADJUST_REF_GVAR, + }; + + AdjustmentReference() { clear(); } + explicit AdjustmentReference(int value); + AdjustmentReference(const AdjustRefType type, const int value); + + void clear() { memset(this, 0, sizeof(AdjustmentReference)); } + + bool isSet() const { return type != ADJUST_REF_VALUE || value != 0; } + bool isValid(const int value) const; + QString toString(const ModelData * model = nullptr, const bool sign = false) const; + + inline const int toValue() const + { + if (type == ADJUST_REF_GVAR) + return value >= 0 ? value + ADJUST_REF_GVAR_BASE : value - ADJUST_REF_GVAR_BASE; + else + return value; + } + + bool operator== ( const AdjustmentReference & other) const { + return (this->type == other.type) && (this->value == other.value); + } + + bool operator!= ( const AdjustmentReference & other) const { + return (this->type != other.type) || (this->value != other.value); + } + + AdjustRefType type; + int value; +}; + +#endif // ADJUSTMENTREFERENCE_H diff --git a/companion/src/firmwares/curvereference.h b/companion/src/firmwares/curvereference.h index ff5571bb5..cb5be4e73 100644 --- a/companion/src/firmwares/curvereference.h +++ b/companion/src/firmwares/curvereference.h @@ -50,6 +50,7 @@ class CurveReference { int value; QString toString(const ModelData * model = NULL, bool verbose = true) const; + bool isSet() const { return type != CURVE_REF_DIFF || value != 0; } }; #endif // CURVEREFERENCE_H diff --git a/companion/src/firmwares/eeprominterface.h b/companion/src/firmwares/eeprominterface.h index 9632af1ac..c2bf0dafa 100644 --- a/companion/src/firmwares/eeprominterface.h +++ b/companion/src/firmwares/eeprominterface.h @@ -100,6 +100,8 @@ enum Capability { GvarsName, NoTelemetryProtocol, TelemetryCustomScreens, + TelemetryCustomScreensBars, + TelemetryCustomScreensLines, TelemetryCustomScreensFieldsPerLine, TelemetryMaxMultiplier, HasVario, @@ -149,7 +151,8 @@ enum Capability { DangerousFunctions, HasModelCategories, HasSwitchableJack, - PwrButtonPress + PwrButtonPress, + Sensors }; class EEPROMInterface diff --git a/companion/src/firmwares/gvardata.cpp b/companion/src/firmwares/gvardata.cpp index 23c90cd2a..6ee1712d0 100644 --- a/companion/src/firmwares/gvardata.cpp +++ b/companion/src/firmwares/gvardata.cpp @@ -90,3 +90,8 @@ float GVarData::getMaxPrec() const { return getMax() * multiplierGet(); } + +bool GVarData::isEmpty() const +{ + return (name[0] == '\0' && min == 0 && max == 0 && (!popup) && prec == 0 && unit == 0); +} diff --git a/companion/src/firmwares/gvardata.h b/companion/src/firmwares/gvardata.h index 7718c5b21..e0d2da882 100644 --- a/companion/src/firmwares/gvardata.h +++ b/companion/src/firmwares/gvardata.h @@ -43,7 +43,7 @@ class GVarData { GVAR_PREC_MUL1 }; - char name[GVAR_NAME_LEN+1]; + char name[GVAR_NAME_LEN + 1]; int min; int max; bool popup; @@ -62,6 +62,7 @@ class GVarData { int getMax() const; float getMinPrec() const; float getMaxPrec() const; + bool isEmpty() const; }; diff --git a/companion/src/firmwares/io_data.cpp b/companion/src/firmwares/io_data.cpp index b0201d3d5..a958750d8 100644 --- a/companion/src/firmwares/io_data.cpp +++ b/companion/src/firmwares/io_data.cpp @@ -35,6 +35,10 @@ void ExpoData::convert(RadioDataConversionState & cstate) swtch.convert(cstate); } +bool ExpoData::isEmpty() const +{ + return (chn == 0 && mode == INPUT_MODE_NONE); +} /* * MixData @@ -48,6 +52,10 @@ void MixData::convert(RadioDataConversionState & cstate) swtch.convert(cstate); } +bool MixData::isEmpty() const +{ + return (destCh == 0); +} /* * LimitData @@ -87,17 +95,16 @@ void LimitData::clear() bool LimitData::isEmpty() const { - return (min == -1000 && max == 1000 && !revert && !offset && !ppmCenter && !symetrical && name[0] == '\0'); + return (min == -1000 && max == 1000 && !revert && !offset && !ppmCenter && !symetrical && name[0] == '\0' && !curve.isSet()); } - /* * CurveData */ CurveData::CurveData() { - clear(5); + clear(); } void CurveData::clear(int count) @@ -126,22 +133,20 @@ QString CurveData::nameToString(const int idx) const * FlightModeData */ -void FlightModeData::clear(const int phase) +void FlightModeData::clear(const int phaseIdx) { memset(reinterpret_cast(this), 0, sizeof(FlightModeData)); - if (phase != 0) { - for (int idx=0; idx(this), 0, sizeof(ExpoData)); } void convert(RadioDataConversionState & cstate); + bool isEmpty() const; }; enum MltpxValue { @@ -90,8 +93,11 @@ class MixData { char name[MIXDATA_NAME_LEN+1]; void clear() { memset(reinterpret_cast(this), 0, sizeof(MixData)); } + bool isEmpty() const; }; +#define LIMITDATA_NAME_LEN 6 + class LimitData { Q_DECLARE_TR_FUNCTIONS(LimitData) @@ -103,7 +109,7 @@ class LimitData { int offset; int ppmCenter; bool symetrical; - char name[6+1]; + char name[LIMITDATA_NAME_LEN+1]; CurveReference curve; QString minToString() const; QString maxToString() const; @@ -120,6 +126,8 @@ class CurvePoint { int8_t y; }; +#define CURVEDATA_NAME_LEN 6 + class CurveData { Q_DECLARE_TR_FUNCTIONS(CurveData) @@ -131,7 +139,7 @@ class CurveData { }; CurveData(); - void clear(int count); + void clear(int count = 5); bool isEmpty() const; QString nameToString(const int idx) const; @@ -139,9 +147,13 @@ class CurveData { bool smooth; int count; CurvePoint points[CPN_MAX_POINTS]; - char name[6+1]; + char name[CURVEDATA_NAME_LEN+1]; }; +#define FLIGHTMODE_NAME_LEN 10 +#define RENC_MAX_VALUE 1024 +#define RENC_MIN_VALUE -RENC_MAX_VALUE + class FlightModeData { Q_DECLARE_TR_FUNCTIONS(FlightModeData) @@ -151,14 +163,20 @@ class FlightModeData { int trimRef[CPN_MAX_TRIMS]; int trim[CPN_MAX_TRIMS]; RawSwitch swtch; - char name[10+1]; + char name[FLIGHTMODE_NAME_LEN+1]; unsigned int fadeIn; unsigned int fadeOut; int rotaryEncoders[CPN_MAX_ENCODERS]; int gvars[CPN_MAX_GVARS]; - void clear(const int phase); - QString nameToString(int index) const; + void clear(const int phaseIdx); + QString nameToString(int phaseIdx) const; void convert(RadioDataConversionState & cstate); + bool isEmpty(int phaseIdx) const; + bool isGVarEmpty(int phaseIdx, int gvIdx) const; + bool isREncEmpty(int phaseIdx, int reIdx) const; + int linkedFlightModeZero(int phaseIdx, int maxOwnValue) const; + int linkedGVarFlightModeZero(int phaseIdx) const; + int linkedREncFlightModeZero(int phaseIdx) const; }; class SwashRingData { diff --git a/companion/src/firmwares/modeldata.cpp b/companion/src/firmwares/modeldata.cpp index a2fdb4981..b72cc328a 100644 --- a/companion/src/firmwares/modeldata.cpp +++ b/companion/src/firmwares/modeldata.cpp @@ -25,6 +25,7 @@ #include "macros.h" #include "radiodataconversionstate.h" #include "helpers.h" +#include "adjustmentreference.h" /* * TimerData @@ -37,6 +38,10 @@ void TimerData::convert(RadioDataConversionState & cstate) mode.convert(cstate); } +bool TimerData::isEmpty() +{ + return (mode == RawSwitch(SWITCH_TYPE_TIMER_MODE, 0) && name[0] == '\0' && minuteBeep == 0 && countdownBeep == COUNTDOWN_SILENT && val == 0 && persistent == 0 /*&& pvalue == 0*/); +} /* * ModelData @@ -60,16 +65,16 @@ ModelData & ModelData::operator = (const ModelData & src) ExpoData * ModelData::insertInput(const int idx) { - memmove(&expoData[idx+1], &expoData[idx], (CPN_MAX_EXPOS-(idx+1))*sizeof(ExpoData)); + memmove(&expoData[idx + 1], &expoData[idx], (CPN_MAX_EXPOS - (idx + 1)) * sizeof(ExpoData)); expoData[idx].clear(); return &expoData[idx]; } bool ModelData::isInputValid(const unsigned int idx) const { - for (int i=0; imode == 0) break; + if (expo->mode == INPUT_MODE_NONE) break; if (expo->chn == idx) return true; } @@ -78,9 +83,9 @@ bool ModelData::isInputValid(const unsigned int idx) const bool ModelData::hasExpos(uint8_t inputIdx) const { - for (int i=0; i ModelData::expos(int input) const { QVector result; - for (int i=0; ichn==input && ed->mode!=0) { + if ((int)ed->chn == input && ed->mode != INPUT_MODE_NONE) { result << ed; } } @@ -113,9 +118,9 @@ QVector ModelData::expos(int input) const QVector ModelData::mixes(int channel) const { QVector result; - for (int i=0; idestCh == channel+1) { + if ((int)md->destCh == channel + 1) { result << md; } } @@ -126,8 +131,8 @@ void ModelData::removeInput(const int idx, bool clearName) { unsigned int chn = expoData[idx].chn; - memmove(&expoData[idx], &expoData[idx+1], (CPN_MAX_EXPOS-(idx+1))*sizeof(ExpoData)); - expoData[CPN_MAX_EXPOS-1].clear(); + memmove(&expoData[idx], &expoData[idx + 1], (CPN_MAX_EXPOS - (idx + 1)) * sizeof(ExpoData)); + expoData[CPN_MAX_EXPOS - 1].clear(); //also remove input name if removing last line for this input if (clearName && !expos(chn).size()) @@ -136,12 +141,12 @@ void ModelData::removeInput(const int idx, bool clearName) void ModelData::clearInputs() { - for (int i=0; igetCapability(VirtualInputs)) { - for (int i=0; ichn = i; expo->mode = INPUT_MODE_BOTH; expo->srcRaw = settings.getDefaultSource(i); expo->weight = 100; - strncpy(inputNames[i], Helpers::removeAccents(expo->srcRaw.toString(this)).toLatin1().constData(), sizeof(inputNames[i])-1); + strncpy(inputNames[i], Helpers::removeAccents(expo->srcRaw.toString(this)).toLatin1().constData(), sizeof(inputNames[i]) - 1); } } } @@ -222,9 +227,9 @@ void ModelData::setDefaultMixes(const GeneralSettings & settings) setDefaultInputs(settings); } - for (int i=0; idestCh = i+1; + mix->destCh = i + 1; mix->weight = 100; if (IS_ARM(board)) { mix->srcRaw = RawSource(SOURCE_TYPE_VIRTUAL_INPUT, i); @@ -240,8 +245,8 @@ void ModelData::setDefaultValues(unsigned int id, const GeneralSettings & settin clear(); used = true; sprintf(name, "MODEL%02d", id+1); - for (int i=0; i 1024; + return flightModeData[phaseIdx].gvars[gvarIdx] > GVAR_MAX_VALUE; } -int ModelData::getGVarFieldValue(int phaseIdx, int gvarIdx) +bool ModelData::isGVarLinkedCircular(int phaseIdx, int gvarIdx) { - int idx = flightModeData[phaseIdx].gvars[gvarIdx]; - for (int i=0; idx>GVAR_MAX_VALUE && i= phaseIdx) nextPhase += 1; + for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) { + int val = flightModeData[phaseIdx].gvars[gvarIdx]; + if (phaseIdx == 0 || val <= GVAR_MAX_VALUE) + return false; + int nextPhase = val - (GVAR_MAX_VALUE + 1); + if (nextPhase >= phaseIdx) + nextPhase += 1; phaseIdx = nextPhase; - idx = flightModeData[phaseIdx].gvars[gvarIdx]; } - return idx; + return true; +} + +int ModelData::getGVarValue(int phaseIdx, int gvarIdx) +{ + for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) { + int val = flightModeData[phaseIdx].gvars[gvarIdx]; + if (phaseIdx == 0 || val <= GVAR_MAX_VALUE) + return val; + int nextPhase = val - (GVAR_MAX_VALUE + 1); + if (nextPhase >= phaseIdx) + nextPhase += 1; + phaseIdx = nextPhase; + } + return flightModeData[0].gvars[gvarIdx]; // circular linked so return FM0 value +} + +bool ModelData::isREncLinked(int phaseIdx, int reIdx) +{ + return flightModeData[phaseIdx].rotaryEncoders[reIdx] > RENC_MAX_VALUE; +} + +bool ModelData::isREncLinkedCircular(int phaseIdx, int reIdx) +{ + for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) { + int val = flightModeData[phaseIdx].rotaryEncoders[reIdx]; + if (phaseIdx == 0 || val <= RENC_MAX_VALUE) + return false; + int nextPhase = val - (RENC_MAX_VALUE + 1); + if (nextPhase >= phaseIdx) + nextPhase += 1; + phaseIdx = nextPhase; + } + return true; +} + +int ModelData::getREncValue(int phaseIdx, int reIdx) +{ + for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) { + int val = flightModeData[phaseIdx].rotaryEncoders[reIdx]; + if (phaseIdx == 0 || val <= RENC_MAX_VALUE) + return val; + int nextPhase = val - (RENC_MAX_VALUE + 1); + if (nextPhase >= phaseIdx) + nextPhase += 1; + phaseIdx = nextPhase; + } + return flightModeData[0].rotaryEncoders[reIdx]; // circular linked so return FM0 value } void ModelData::setTrimValue(int phaseIdx, int trimIdx, int value) { - for (uint8_t i=0; i= 126 && var <= 130) - var = flightModeData[0].gvars[var-126]; + var = flightModeData[0].gvars[var - 126]; else if (var <= -126 && var >= -130) - var = - flightModeData[0].gvars[-126-var]; + var = - flightModeData[0].gvars[-126 - var]; } ModelData ModelData::removeGlobalVars() { ModelData result = *this; - for (int i=0; isize() <= MAX_REF_UPDATES) + updRefList->append(UpdateReferenceParams(type, action, index1, index2, shift)); + else + qDebug() << "Warning: Update ignored as the list of updates exceeds " << MAX_REF_UPDATES; + } +} + +int ModelData::updateAllReferences(const ReferenceUpdateType type, const ReferenceUpdateAction action, const int index1, const int index2, const int shift) +{ + //Stopwatch s1("ModelData::updateAllReferences"); + //s1.report("Start"); + + int loopcnt = 0; + int updcnt = 0; + updRefList = nullptr; + QVector updRefParams; // declaring this variable in ModelData class crashes program on opening model file + updRefList = &updRefParams; // so declare pointer variable in ModelData class and pass it the address of the local array + + if (updRefList) { + appendUpdateReferenceParams(type, action, index1, index2, shift); + + while (!updRefList->isEmpty()) + { + if (++loopcnt > MAX_REF_UPDATES) { + qDebug() << "Warning: Update iterations terminated early as the list exceeded " << MAX_REF_UPDATES; + break; + } + //qDebug() << "Start of iteration:" << loopcnt; + updcnt += updateReference(); + updRefList->removeFirst(); + } + } + + qDebug() << "Iterations:" << loopcnt << " References updated:" << updcnt; + //s1.report("Finish"); + + return updcnt; +} + +int ModelData::updateReference() +{ + UpdateReferenceParams p = updRefList->first(); + + if (p.action < REF_UPD_ACT_CLEAR || p.action > REF_UPD_ACT_SWAP || p.type < REF_UPD_TYPE_CHANNEL || p.type > REF_UPD_TYPE_TIMER) { + qDebug() << "Error - invalid parameters" << " > type:" << p.type << " action:" << p.action << " index1:" << p.index1 << " index2:" << p.index2 << " shift:" << p.shift; + return 0; + } + + memset(&updRefInfo, 0, sizeof(updRefInfo)); + updRefInfo.type = p.type; + updRefInfo.action = p.action; + updRefInfo.index1 = abs(p.index1); + updRefInfo.index2 = abs(p.index2); + updRefInfo.shift = p.shift; + + if ((updRefInfo.action == REF_UPD_ACT_SWAP && updRefInfo.index1 == updRefInfo.index2) || (updRefInfo.action == REF_UPD_ACT_SHIFT && updRefInfo.shift == 0)) { + qDebug() << "Warning - nothing to do" << " > type:" << updRefInfo.type << " action:" << updRefInfo.action << " index1:" << updRefInfo.index1 << " index2:" << updRefInfo.index2 << " shift:" << updRefInfo.shift; + return 0; + } + + //Stopwatch s1("ModelData::updateReference"); + //s1.report("Start"); + + Firmware *fw = getCurrentFirmware(); + + switch (updRefInfo.type) + { + case REF_UPD_TYPE_CHANNEL: + updRefInfo.srcType = SOURCE_TYPE_CH; + updRefInfo.maxindex = fw->getCapability(Outputs); + break; + case REF_UPD_TYPE_CURVE: + updRefInfo.maxindex = fw->getCapability(NumCurves); + break; + case REF_UPD_TYPE_FLIGHT_MODE: + updRefInfo.swtchType = SWITCH_TYPE_FLIGHT_MODE; + updRefInfo.maxindex = fw->getCapability(FlightModes); + break; + case REF_UPD_TYPE_GLOBAL_VARIABLE: + updRefInfo.srcType = SOURCE_TYPE_GVAR; + updRefInfo.maxindex = fw->getCapability(Gvars); + break; + case REF_UPD_TYPE_INPUT: + updRefInfo.srcType = SOURCE_TYPE_VIRTUAL_INPUT; + updRefInfo.maxindex = fw->getCapability(VirtualInputs); + break; + case REF_UPD_TYPE_LOGICAL_SWITCH: + updRefInfo.srcType = SOURCE_TYPE_CUSTOM_SWITCH; + updRefInfo.swtchType = SWITCH_TYPE_VIRTUAL; + updRefInfo.maxindex = fw->getCapability(LogicalSwitches); + break; + case REF_UPD_TYPE_SCRIPT: + updRefInfo.srcType = SOURCE_TYPE_LUA_OUTPUT; + updRefInfo.maxindex = fw->getCapability(LuaScripts); + break; + case REF_UPD_TYPE_SENSOR: + updRefInfo.srcType = SOURCE_TYPE_TELEMETRY; + updRefInfo.swtchType = SWITCH_TYPE_SENSOR; + updRefInfo.maxindex = fw->getCapability(Sensors); + break; + case REF_UPD_TYPE_TIMER: + updRefInfo.srcType = SOURCE_TYPE_SPECIAL; + updRefInfo.maxindex = fw->getCapability(Timers); + // rawsource index offset TODO refactor timers so be own category + updRefInfo.index1 += 2; + updRefInfo.index2 += 2; + updRefInfo.maxindex += 2; + break; + default: + qDebug() << "Error - unhandled reference type:" << updRefInfo.type; + return 0; + } + + updRefInfo.maxindex--; // getCapabilities and constants are 1 based + + //qDebug() << "updRefInfo - type:" << updRefInfo.type << " action:" << updRefInfo.action << " index1:" << updRefInfo.index1 << " index2:" << updRefInfo.index2 << " shift:" << updRefInfo.shift; + //qDebug() << "maxindex:" << updRefInfo.maxindex << "updRefInfo - srcType:" << updRefInfo.srcType << " swtchType:" << updRefInfo.swtchType; + + //s1.report("Initialise"); + + for (int i = fw->getCapability(NumFirstUsableModule); i < fw->getCapability(NumModules); i++) { + ModuleData *md = &moduleData[i]; + if (md->protocol != PULSES_OFF && md->failsafeMode == FAILSAFE_CUSTOM && md->hasFailsafes(fw)) + updateModuleFailsafes(md); + } + //s1.report("Modules"); + + for (int i = 0; i < CPN_MAX_TIMERS; i++) { + TimerData *td = &timers[i]; + if (!td->isModeOff()) { + updateTimerMode(td->mode); + if (td->isModeOff()) + appendUpdateReferenceParams(REF_UPD_TYPE_TIMER, REF_UPD_ACT_CLEAR, i); + } + } + //s1.report("Timers"); + + for (int i = 1; i < CPN_MAX_FLIGHT_MODES; i++) { // skip FM0 as switch not used + FlightModeData *fmd = &flightModeData[i]; + if (fmd->swtch.isSet()) { + updateSwitchRef(fmd->swtch); + if(!fmd->swtch.isSet()) + appendUpdateReferenceParams(REF_UPD_TYPE_FLIGHT_MODE, REF_UPD_ACT_CLEAR, i); + } + } + //s1.report("Flight Modes"); + + for (int i = 0; i < CPN_MAX_EXPOS; i++) { + ExpoData *ed = &expoData[i]; + if (!ed->isEmpty()) { + updateSourceRef(ed->srcRaw); + if (ed->srcRaw.isSet()) { + updateSwitchRef(ed->swtch); + updateCurveRef(ed->curve); + updateAdjustRef(ed->weight); + updateAdjustRef(ed->offset); + updateFlightModeFlags(ed->flightModes); + } + else { + unsigned int chnsave = ed->chn; + removeInput(i); + i--; + if (!hasExpos(chnsave)) + appendUpdateReferenceParams(REF_UPD_TYPE_INPUT, REF_UPD_ACT_CLEAR, chnsave); + } + } + } + //s1.report("Inputs"); + + for (int i = 0; i < CPN_MAX_MIXERS; i++) { + MixData *md = &mixData[i]; + if (!md->isEmpty()) { + updateDestCh(md); + if (!md->isEmpty()) { + updateSourceRef(md->srcRaw); + if (md->srcRaw.isSet()) { + updateSwitchRef(md->swtch); + updateCurveRef(md->curve); + updateAdjustRef(md->weight); + updateAdjustRef(md->sOffset); + updateFlightModeFlags(md->flightModes); + } + else { + removeMix(i); + i--; + } + } + } + } + //s1.report("Mixes"); + + for (int i = 0; i < CPN_MAX_CHNOUT; i++) { + LimitData *ld = &limitData[i]; + if (!ld->isEmpty()) { + updateAdjustRef(ld->min); + updateAdjustRef(ld->max); + updateAdjustRef(ld->offset); + updateLimitCurveRef(ld->curve); + } + } + //s1.report("Outputs"); + + for (int i = 0; i < CPN_MAX_LOGICAL_SWITCHES; i++) { + LogicalSwitchData *lsd = &logicalSw[i]; + if (!lsd->isEmpty()) { + bool clearlsd = false; + CSFunctionFamily family = lsd->getFunctionFamily(); + switch(family) { + case LS_FAMILY_VOFS: + updateSourceIntRef(lsd->val1); + if (lsd->val1 == 0) + clearlsd = true; + break; + case LS_FAMILY_STICKY: + case LS_FAMILY_VBOOL: + updateSwitchIntRef(lsd->val1); + updateSwitchIntRef(lsd->val2); + if (lsd->val1 == 0 && lsd->val2 == 0) + clearlsd = true; + break; + case LS_FAMILY_EDGE: + updateSwitchIntRef(lsd->val1); + if (lsd->val1 == 0) + clearlsd = true; + break; + case LS_FAMILY_VCOMP: + updateSourceIntRef(lsd->val1); + updateSourceIntRef(lsd->val2); + if (lsd->val1 == 0 && lsd->val2 == 0) + clearlsd = true; + break; + default: + break; + } + if (clearlsd) { + lsd->clear(); + appendUpdateReferenceParams(REF_UPD_TYPE_LOGICAL_SWITCH, REF_UPD_ACT_CLEAR, i); + } + else { + updateSwitchIntRef(lsd->andsw); + } + } + } + //s1.report("Logical Switches"); + + for (int i = 0; i < CPN_MAX_SPECIAL_FUNCTIONS; i++) { + CustomFunctionData *cfd = &customFn[i]; + if (!cfd->isEmpty()) { + updateAssignFunc(cfd); + if (!cfd->isEmpty()) { + updateSwitchRef(cfd->swtch); + if (cfd->func == FuncVolume || cfd->func == FuncPlayValue || (cfd->func >= FuncAdjustGV1 && cfd->func <= FuncAdjustGVLast && (cfd->adjustMode == FUNC_ADJUST_GVAR_GVAR || cfd->adjustMode == FUNC_ADJUST_GVAR_SOURCE))) { + updateSourceIntRef(cfd->param); + if (cfd->param == 0) + cfd->clear(); + } + } + } + } + //s1.report("Special Functions"); + + if (fw->getCapability(Heli)) { + updateSourceRef(swashRingData.aileronSource); + updateSourceRef(swashRingData.collectiveSource); + updateSourceRef(swashRingData.elevatorSource); + //s1.report("Heli"); + } + + if (fw->getCapability(Telemetry)) { + updateTelemetryRef(frsky.voltsSource); + updateTelemetryRef(frsky.altitudeSource); + updateTelemetryRef(frsky.currentSource); + updateTelemetryRef(frsky.varioSource); + for (int i = 0; i < fw->getCapability(TelemetryCustomScreens); i++) { + switch(frsky.screens[i].type) { + case TELEMETRY_SCREEN_BARS: + for (int j = 0; j < fw->getCapability(TelemetryCustomScreensBars); j++) { + FrSkyBarData *fbd = &frsky.screens[i].body.bars[j]; + updateSourceRef(fbd->source); + if (!fbd->source.isSet()) { + fbd->barMin = 0; + fbd->barMax = 0; + } + } + break; + case TELEMETRY_SCREEN_NUMBERS: + for (int j = 0; j < fw->getCapability(TelemetryCustomScreensLines); j++) { + FrSkyLineData *fld = &frsky.screens[i].body.lines[j]; + for (int k = 0; k < fw->getCapability(TelemetryCustomScreensFieldsPerLine); k++) { + updateSourceRef(fld->source[k]); + } + } + break; + default: + break; + } + } + //s1.report("Telemetry"); + } + + // TODO maybe less risk to leave it up to the user?? + /* + for (int i = 0; i < CPN_MAX_SENSORS; i++) { + SensorData *sd = &sensorData[i]; + if (sd->isAvailable() && sd->type == SensorData::TELEM_TYPE_CALCULATED) { + } + } + s1.report("Telemetry Sensors"); + */ + + // TODO needs lua incorporated into Companion as script needs to be parsed to determine if input field is source or value + /* + for (int i=0; i < CPN_MAX_SCRIPTS; i++) { + ScriptData *sd = &scriptData[i]; + if (sd->filename[0] != '\0') { + for (int j = 0; j < CPN_MAX_SCRIPT_INPUTS; j++) { + // get input parameters and for each one where type is SOURCE + if(inputtype = "SOURCE") + updateSourceIntRef(sd->inputs[j]); + } + } + } + s1.report("Custom Scripts"); + */ + + // TODO Horus CustomScreenData and TopBarData will need checking for updates but Companion does not current handle ie just data blobs refer modeldata.h + + qDebug() << "References updated this iteration:" << updRefInfo.updcnt; + //s1.report("Finish"); + + return updRefInfo.updcnt; +} + +template +void ModelData::updateTypeIndexRef(R & curRef, const T type, const int idxAdj, const bool defClear, const int defType, const int defIndex) +{ + //qDebug() << "Raw value: " << curRef.toValue() << " String:" << curRef.toString() << " Type: " << curRef.type << " Index:" << curRef.index << " idxAdj:" << idxAdj << " defClear:" << defClear << " defType:" << defType << " defIndex:" << defIndex; + if (!curRef.isSet() || curRef.type != type) + return; + + R newRef; + newRef.type = curRef.type; + newRef.index = abs(curRef.index); + + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + if (newRef.index != (updRefInfo.index1 + idxAdj)) + return; + if (defClear) + newRef.clear(); + else { + newRef.type = (T)defType; + newRef.index = defIndex; + } + break; + case REF_UPD_ACT_SHIFT: + if (newRef.index < (updRefInfo.index1 + idxAdj)) + return; + + newRef.index += updRefInfo.shift; + + if (newRef.index < (updRefInfo.index1 + idxAdj) || newRef.index > (updRefInfo.maxindex + idxAdj)) { + if (defClear) + newRef.clear(); + else { + newRef.type = (T)defType; + newRef.index = defIndex; + } + } + break; + case REF_UPD_ACT_SWAP: + if (newRef.index == updRefInfo.index1 + idxAdj) + newRef.index = updRefInfo.index2 + idxAdj; + else if (newRef.index == updRefInfo.index2 + idxAdj) + newRef.index = updRefInfo.index1 + idxAdj; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (curRef.type != newRef.type || abs(curRef.index) != newRef.index) { + newRef.index = curRef.index < 0 ? -newRef.index : newRef.index; + //qDebug() << "Updated reference: " << curRef.toString() << " -> " << newRef.toString(); + curRef = newRef; + updRefInfo.updcnt++; + } +} + +template +void ModelData::updateTypeValueRef(R & curRef, const T type, const int idxAdj, const bool defClear, const int defType, const int defValue) +{ + //qDebug() << " String:" << curRef.toString() << " Type: " << curRef.type << " Value:" << curRef.value; + if (!curRef.isSet() || curRef.type != type) + return; + + R newRef; + newRef.type = curRef.type; + newRef.value = abs(curRef.value); + + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + if (newRef.value != (updRefInfo.index1 + idxAdj)) + return; + if (defClear) + newRef.clear(); + else { + newRef.type = (T)defType; + newRef.value = defValue; + } + break; + case REF_UPD_ACT_SHIFT: + if (newRef.value < (updRefInfo.index1 + idxAdj)) + return; + + newRef.value += updRefInfo.shift; + + if (newRef.value < (updRefInfo.index1 + idxAdj) || newRef.value > (updRefInfo.maxindex + idxAdj)) { + if (defClear) + newRef.clear(); + else { + newRef.type = (T)defType; + newRef.value = defValue; + } + } + break; + case REF_UPD_ACT_SWAP: + if (newRef.value == updRefInfo.index1 + idxAdj) + newRef.value = updRefInfo.index2 + idxAdj; + else if (newRef.value == updRefInfo.index2 + idxAdj) + newRef.value = updRefInfo.index1 + idxAdj; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (curRef.type != newRef.type || abs(curRef.value) != newRef.value) { + newRef.value = curRef.value < 0 ? -newRef.value : newRef.value; + //qDebug() << "Updated reference: " << curRef.toString() << " -> " << newRef.toString(); + curRef = newRef; + updRefInfo.updcnt++; + } +} + +void ModelData::updateCurveRef(CurveReference & crv) +{ + if (updRefInfo.type == REF_UPD_TYPE_GLOBAL_VARIABLE && (crv.type == CurveReference::CURVE_REF_DIFF || crv.type == CurveReference::CURVE_REF_EXPO)) + updateAdjustRef(crv.value); + else if (updRefInfo.type == REF_UPD_TYPE_CURVE && crv.type == CurveReference::CURVE_REF_CUSTOM) + updateTypeValueRef(crv, CurveReference::CURVE_REF_CUSTOM, 1); +} + +void ModelData::updateLimitCurveRef(CurveReference & crv) +{ + CurveReference src = CurveReference(CurveReference::CURVE_REF_CUSTOM, crv.value); + updateCurveRef(src); + if (crv.value != src.value) + crv.value = src.value; +} + +void ModelData::updateAdjustRef(int & value) +{ + if (updRefInfo.type != REF_UPD_TYPE_GLOBAL_VARIABLE) + return; + + AdjustmentReference adj = AdjustmentReference(value); + updateTypeValueRef(adj, AdjustmentReference::ADJUST_REF_GVAR, 1); + if (value != adj.toValue()) + value = adj.toValue(); +} + +void ModelData::updateAssignFunc(CustomFunctionData * cfd) +{ + const int invalidateRef = -1; + int newRef = (int)cfd->func; + int idxAdj; + + switch (updRefInfo.type) + { + case REF_UPD_TYPE_CHANNEL: + if(cfd->func < FuncOverrideCH1 || cfd->func > FuncOverrideCH32) // TODO refactor to FuncOverrideCHLast + return; + idxAdj = FuncOverrideCH1; + break; + case REF_UPD_TYPE_GLOBAL_VARIABLE: + if (cfd->func < FuncAdjustGV1 || cfd->func > FuncAdjustGVLast) + return; + idxAdj = FuncAdjustGV1; + break; + case REF_UPD_TYPE_TIMER: + if (cfd->func < FuncSetTimer1 || cfd->func > FuncSetTimer3) // TODO refactor to FuncSetTimerLast + return; + idxAdj = FuncSetTimer1 - 2; // reverse earlier offset requiured for rawsource + break; + default: + return; + } + + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + if (newRef != (updRefInfo.index1 + idxAdj)) + return; + newRef = invalidateRef; + break; + case REF_UPD_ACT_SHIFT: + if (newRef < (updRefInfo.index1 + idxAdj)) + return; + + newRef += updRefInfo.shift; + + if (newRef < (updRefInfo.index1 + idxAdj) || newRef > (updRefInfo.maxindex + idxAdj)) + newRef = invalidateRef; + break; + case REF_UPD_ACT_SWAP: + if (newRef == updRefInfo.index1 + idxAdj) + newRef = updRefInfo.index2 + idxAdj; + else if (newRef == updRefInfo.index2 + idxAdj) + newRef = updRefInfo.index1 + idxAdj; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (newRef == invalidateRef) { + cfd->clear(); + //qDebug() << "Function cleared"; + updRefInfo.updcnt++; + } + else if (cfd->func != (AssignFunc)newRef) { + //qDebug() << "Updated reference:" << cfd->func << " -> " << newRef; + cfd->func = (AssignFunc)newRef; + updRefInfo.updcnt++; + } +} + +void ModelData::updateDestCh(MixData * md) +{ + if (updRefInfo.type != REF_UPD_TYPE_CHANNEL) + return; + + const int invalidateRef = -1; + const int idxAdj = 1; + int newRef = md->destCh; + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + if (newRef != (updRefInfo.index1 + idxAdj)) + return; + newRef = invalidateRef; + break; + case REF_UPD_ACT_SHIFT: + if (newRef < (updRefInfo.index1 + idxAdj)) + return; + + newRef += updRefInfo.shift; + + if (newRef < (updRefInfo.index1 + idxAdj) || newRef > (updRefInfo.maxindex + idxAdj)) + newRef = invalidateRef; + break; + case REF_UPD_ACT_SWAP: + if (newRef == updRefInfo.index1 + idxAdj) + newRef = updRefInfo.index2 + idxAdj; + else if (newRef == updRefInfo.index2 + idxAdj) + newRef = updRefInfo.index1 + idxAdj; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (newRef == invalidateRef) { + md->clear(); + //qDebug() << "Mix cleared"; + updRefInfo.updcnt++; + } + else if (md->destCh != static_cast(newRef)) { + //qDebug() << "Updated reference:" << md->destCh << " -> " << newRef; + md->destCh = newRef; + updRefInfo.updcnt++; + } +} + +void ModelData::updateFlightModeFlags(unsigned int & curRef) +{ + if (updRefInfo.type != REF_UPD_TYPE_FLIGHT_MODE || curRef == 0 /*all selected*/ || curRef == 511 /*all deselected*/) + return; + + if (updRefInfo.index1 > CPN_MAX_FLIGHT_MODES || updRefInfo.index2 > CPN_MAX_FLIGHT_MODES) + return; + + unsigned int newRef = curRef; + bool flag[CPN_MAX_FLIGHT_MODES]; + bool f; + + int mask = 1; + for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) { + flag[i] = curRef & mask; + mask <<= 1; + } + + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + flag[updRefInfo.index1] = false; + break; + case REF_UPD_ACT_SHIFT: + if(updRefInfo.shift < 0) { + for (int i = updRefInfo.index1; i < CPN_MAX_FLIGHT_MODES; i++) { + if (i - updRefInfo.shift <= updRefInfo.maxindex) + flag[i] = flag[i - updRefInfo.shift]; + else + flag[i] = false; + } + } + else { + for (int i = CPN_MAX_FLIGHT_MODES - 1; i >= updRefInfo.index1; i--) { + if (i - updRefInfo.shift >= updRefInfo.index1) + flag[i] = flag[i - updRefInfo.shift]; + else + flag[i] = false; + } + } + break; + case REF_UPD_ACT_SWAP: + f = flag[updRefInfo.index1]; + flag[updRefInfo.index1] = flag[updRefInfo.index2]; + flag[updRefInfo.index2] = f; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + newRef = 0; + for (int i = CPN_MAX_FLIGHT_MODES - 1; i >= 0 ; i--) { + if (flag[i]) + newRef++; + newRef <<= 1; + } + newRef >>= 1; + + if (curRef != newRef) { + //qDebug() << "Updated reference:" << curRef << " -> " << newRef; + curRef = newRef; + updRefInfo.updcnt++; + } +} + +void ModelData::updateTelemetryRef(unsigned int & curRef) +{ + if (updRefInfo.type != REF_UPD_TYPE_SENSOR) + return; + + const int idxAdj = 1; + int newRef = curRef; + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + if (newRef != (updRefInfo.index1 + idxAdj)) + return; + newRef = 0; + break; + case REF_UPD_ACT_SHIFT: + if (newRef < (updRefInfo.index1 + idxAdj)) + return; + + newRef += updRefInfo.shift; + + if (newRef < (updRefInfo.index1 + idxAdj) || newRef > (updRefInfo.maxindex + idxAdj)) + newRef = 0; + break; + case REF_UPD_ACT_SWAP: + if (newRef == updRefInfo.index1 + idxAdj) + newRef = updRefInfo.index2 + idxAdj; + else if (newRef == updRefInfo.index2 + idxAdj) + newRef = updRefInfo.index1 + idxAdj; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (curRef != static_cast(newRef)) { + //qDebug() << "Updated reference:" << curRef << " -> " << newRef; + curRef = newRef; + updRefInfo.updcnt++; + } +} + +void ModelData::updateModuleFailsafes(ModuleData * md) +{ + if (updRefInfo.type != REF_UPD_TYPE_CHANNEL) + return; + + bool updated = false; + + switch (updRefInfo.action) + { + case REF_UPD_ACT_CLEAR: + break; + case REF_UPD_ACT_SHIFT: + if (updRefInfo.shift == 0 || updRefInfo.index1 < 0 || updRefInfo.index1 > CPN_MAX_CHNOUT - 1) + return; + + if (updRefInfo.shift > 0) { + for (int i = (CPN_MAX_CHNOUT - 1); i > updRefInfo.index1; i--) { + md->failsafeChannels[i] = md->failsafeChannels[i - 1]; + } + md->failsafeChannels[updRefInfo.index1] = 0; + } + else { + for (int i = (updRefInfo.index1 + 1); i < (CPN_MAX_CHNOUT - 1); i++) { + md->failsafeChannels[i - 1] = md->failsafeChannels[i]; + } + md->failsafeChannels[CPN_MAX_CHNOUT - 1] = 0; + } + updated = true; + break; + case REF_UPD_ACT_SWAP: + int tmp; + if (updRefInfo.index1 >= 0 && updRefInfo.index1 < CPN_MAX_CHNOUT) { + updated = true; + tmp = md->failsafeChannels[updRefInfo.index1]; + if (updRefInfo.index2 >= 0 && updRefInfo.index2 < CPN_MAX_CHNOUT) + md->failsafeChannels[updRefInfo.index1] = md->failsafeChannels[updRefInfo.index2]; + else + md->failsafeChannels[updRefInfo.index1] = 0; + } + else + tmp = 0; + if (updRefInfo.index2 >= 0 && updRefInfo.index2 < CPN_MAX_CHNOUT) + updated = true; + md->failsafeChannels[updRefInfo.index2] = tmp; + break; + default: + qDebug() << "Error - unhandled action:" << updRefInfo.action; + return; + } + + if (updated) { + //qDebug() << "Updated module failsafes"; + updRefInfo.updcnt++; + } +} + +int ModelData::linkedFlightModeIndexToValue(const int phaseIdx, const int useFmIdx, const int maxOwnValue) +{ + int val; + + if (phaseIdx == useFmIdx || phaseIdx < 0 || phaseIdx > (CPN_MAX_FLIGHT_MODES - 1) || useFmIdx < 0 || useFmIdx > (CPN_MAX_FLIGHT_MODES - 1)) + val = flightModeData[phaseIdx].linkedFlightModeZero(phaseIdx, maxOwnValue); + else + val = maxOwnValue + useFmIdx + (useFmIdx >= phaseIdx ? 0 : 1); + + return val; +} + +int ModelData::linkedFlightModeValueToIndex(const int phaseIdx, const int val, const int maxOwnValue) +{ + int idx = val - maxOwnValue - 1; + if (idx >= phaseIdx) + idx += 1; + return idx; +} + +int ModelData::getGVarFlightModeIndex(const int phaseIdx, const int gvarIdx) +{ + if (!isGVarLinked(phaseIdx, gvarIdx)) + return -1; + return (linkedFlightModeValueToIndex(phaseIdx, flightModeData[phaseIdx].gvars[gvarIdx], GVAR_MAX_VALUE)); +} + +void ModelData::setGVarFlightModeIndexToValue(const int phaseIdx, const int gvarIdx, const int useFmIdx) +{ + flightModeData[phaseIdx].gvars[gvarIdx] = linkedFlightModeIndexToValue(phaseIdx, useFmIdx, GVAR_MAX_VALUE); +} + +int ModelData::getREncFlightModeIndex(const int phaseIdx, const int reIdx) +{ + if (!isREncLinked(phaseIdx, reIdx)) + return -1; + return (linkedFlightModeValueToIndex(phaseIdx, flightModeData[phaseIdx].rotaryEncoders[reIdx], RENC_MAX_VALUE)); +} + +void ModelData::setREncFlightModeIndexToValue(const int phaseIdx, const int reIdx, const int useFmIdx) +{ + flightModeData[phaseIdx].rotaryEncoders[reIdx] = linkedFlightModeIndexToValue(phaseIdx, useFmIdx, RENC_MAX_VALUE); +} + +bool ModelData::isExpoParent(const int index) +{ + const ExpoData &ed = expoData[index]; + const QVector chexpos = expos(ed.chn); + return chexpos.constFirst() == &ed; +} + +bool ModelData::isExpoChild(const int index) +{ + const ExpoData &ed = expoData[index]; + const QVector chexpos = expos(ed.chn); + return chexpos.constFirst() != &ed; +} + +bool ModelData::hasExpoChildren(const int index) +{ + const ExpoData &ed = expoData[index]; + const QVector chexpos = expos(ed.chn); + return chexpos.constFirst() == &ed && chexpos.constLast() != &ed; +} + +bool ModelData::hasExpoSiblings(const int index) +{ + const ExpoData &ed = expoData[index]; + const QVector chexpos = expos(ed.chn); + return !isExpoParent(index) && chexpos.size() > 2; +} + +void ModelData::removeMix(const int idx) +{ + memmove(&mixData[idx], &mixData[idx + 1], (CPN_MAX_MIXERS - (idx + 1)) * sizeof(MixData)); + mixData[CPN_MAX_MIXERS - 1].clear(); +} diff --git a/companion/src/firmwares/modeldata.h b/companion/src/firmwares/modeldata.h index c4959d456..93e98588e 100644 --- a/companion/src/firmwares/modeldata.h +++ b/companion/src/firmwares/modeldata.h @@ -76,6 +76,8 @@ class TimerData { int pvalue; void clear() { memset(reinterpret_cast(this), 0, sizeof(TimerData)); mode = RawSwitch(SWITCH_TYPE_TIMER_MODE, 0); } void convert(RadioDataConversionState & cstate); + bool isEmpty(); + bool isModeOff() { return mode == RawSwitch(SWITCH_TYPE_TIMER_MODE, 0); } }; #define CPN_MAX_SCRIPTS 9 @@ -128,6 +130,8 @@ enum TrainerMode { TRAINER_MODE_MULTI }; +#define INPUT_NAME_LEN 4 + class ModelData { Q_DECLARE_TR_FUNCTIONS(ModelData) @@ -170,7 +174,7 @@ class ModelData { MixData mixData[CPN_MAX_MIXERS]; LimitData limitData[CPN_MAX_CHNOUT]; - char inputNames[CPN_MAX_INPUTS][4+1]; + char inputNames[CPN_MAX_INPUTS][INPUT_NAME_LEN+1]; ExpoData expoData[CPN_MAX_EXPOS]; CurveData curves[CPN_MAX_CURVES]; @@ -219,11 +223,23 @@ class ModelData { void setTrimValue(int phaseIdx, int trimIdx, int value); bool isGVarLinked(int phaseIdx, int gvarIdx); - int getGVarFieldValue(int phaseIdx, int gvarIdx); - float getGVarFieldValuePrec(int phaseIdx, int gvarIdx); + bool isGVarLinkedCircular(int phaseIdx, int gvarIdx); + int getGVarValue(int phaseIdx, int gvarIdx); + float getGVarValuePrec(int phaseIdx, int gvarIdx); + int getGVarFlightModeIndex(const int phaseIdx, const int gvarIdx); + void setGVarFlightModeIndexToValue(const int phaseIdx, const int gvarIdx, const int useFmIdx); + + bool isREncLinked(int phaseIdx, int reIdx); + bool isREncLinkedCircular(int phaseIdx, int reIdx); + int getREncValue(int phaseIdx, int reIdx); + int getREncFlightModeIndex(const int phaseIdx, const int reIdx); + void setREncFlightModeIndexToValue(const int phaseIdx, const int reIdx, const int useFmIdx); ModelData removeGlobalVars(); + int linkedFlightModeIndexToValue(const int phaseIdx, const int useFmIdx, const int maxOwnValue); + int linkedFlightModeValueToIndex(const int phaseIdx, const int val, const int maxOwnValue); + void clearMixes(); void clearInputs(); @@ -231,8 +247,95 @@ class ModelData { bool isAvailable(const RawSwitch & swtch) const; + enum ReferenceUpdateAction { + REF_UPD_ACT_CLEAR, + REF_UPD_ACT_SHIFT, + REF_UPD_ACT_SWAP, + }; + + enum ReferenceUpdateType { + REF_UPD_TYPE_CHANNEL, + REF_UPD_TYPE_CURVE, + REF_UPD_TYPE_FLIGHT_MODE, + REF_UPD_TYPE_GLOBAL_VARIABLE, + REF_UPD_TYPE_INPUT, + REF_UPD_TYPE_LOGICAL_SWITCH, + REF_UPD_TYPE_SCRIPT, + REF_UPD_TYPE_SENSOR, + REF_UPD_TYPE_TIMER, + }; + + struct UpdateReferenceParams + { + ReferenceUpdateType type; + ReferenceUpdateAction action; + int index1; + int index2; + int shift; + + UpdateReferenceParams() {} + UpdateReferenceParams(ReferenceUpdateType t, ReferenceUpdateAction a, int i1, int i2 = 0, int s = 0) : + type(t), action(a), index1(i1), index2(i2), shift(s) {} + }; + + int updateAllReferences(const ReferenceUpdateType type, const ReferenceUpdateAction action, const int index1, const int index2 = 0, const int shift = 0); + bool isExpoParent(const int index); + bool isExpoChild(const int index); + bool hasExpoChildren(const int index); + bool hasExpoSiblings(const int index); + void removeMix(const int idx); + protected: void removeGlobalVar(int & var); + + private: + QVector *updRefList = nullptr; + + struct UpdateReferenceInfo + { + ReferenceUpdateType type; + ReferenceUpdateAction action; + int index1; + int index2; + int shift; + int updcnt; + int maxindex; + RawSourceType srcType; + RawSwitchType swtchType; + }; + UpdateReferenceInfo updRefInfo; + + int updateReference(); + void appendUpdateReferenceParams(const ReferenceUpdateType type, const ReferenceUpdateAction action, const int index1, const int index2 = 0, const int shift = 0); + template + void updateTypeIndexRef(R & curref, const T type, const int idxAdj = 0, const bool defClear = true, const int defType = 0, const int defIndex = 0); + template + void updateTypeValueRef(R & curref, const T type, const int idxAdj = 0, const bool defClear = true, const int defType = 0, const int defValue = 0); + void updateAdjustRef(int & adj); + void updateAssignFunc(CustomFunctionData * cfd); + void updateCurveRef(CurveReference & crv); + void updateDestCh(MixData * md); + void updateLimitCurveRef(CurveReference & crv); + void updateFlightModeFlags(unsigned int & flags); + void updateTelemetryRef(unsigned int & idx); + void updateModuleFailsafes(ModuleData * md); + inline void updateSourceRef(RawSource & src) { updateTypeIndexRef(src, updRefInfo.srcType); } + inline void updateSwitchRef(RawSwitch & swtch) { updateTypeIndexRef(swtch, updRefInfo.swtchType, 1); } + inline void updateTimerMode(RawSwitch & swtch) { updateTypeIndexRef(swtch, updRefInfo.swtchType, 1, false, (int)SWITCH_TYPE_TIMER_MODE, 0); } + inline void updateSourceIntRef(int & value) + { + RawSource src = RawSource(value); + updateTypeIndexRef(src, updRefInfo.srcType); + if (value != src.toValue()) + value = src.toValue(); + } + inline void updateSwitchIntRef(int & value) + { + RawSwitch swtch = RawSwitch(value); + updateTypeIndexRef(swtch, updRefInfo.swtchType, 1); + if (value != swtch.toValue()) + value = swtch.toValue(); + } }; #endif // MODELDATA_H diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index a227dd5b8..370a6979b 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -181,3 +181,59 @@ QStringList ModuleData::powerValueStrings(int subType, Firmware * fw) strIdx += 2; return strings[strIdx]; } + +bool ModuleData::hasFailsafes(Firmware * fw) const +{ + return fw->getCapability(HasFailsafe) && ( + protocol == PULSES_ACCESS_ISRM || + protocol == PULSES_ACCST_ISRM_D16 || + protocol == PULSES_PXX_XJT_X16 || + protocol == PULSES_PXX_R9M || + protocol == PULSES_ACCESS_R9M || + protocol == PULSES_ACCESS_R9M_LITE || + protocol == PULSES_ACCESS_R9M_LITE_PRO || + protocol == PULSES_XJT_LITE_X16 || + protocol == PULSES_MULTIMODULE + ); +} + +int ModuleData::getMaxChannelCount() +{ + switch (protocol) { + case PULSES_ACCESS_ISRM: + return 24; + case PULSES_PXX_R9M: + case PULSES_ACCESS_R9M: + case PULSES_ACCESS_R9M_LITE: + case PULSES_ACCESS_R9M_LITE_PRO: + case PULSES_ACCST_ISRM_D16: + case PULSES_XJT_LITE_X16: + case PULSES_PXX_XJT_X16: + case PULSES_CROSSFIRE: + case PULSES_SBUS: + case PULSES_PPM: + return 16; + case PULSES_XJT_LITE_LR12: + case PULSES_PXX_XJT_LR12: + return 12; + case PULSES_PXX_DJT: + case PULSES_XJT_LITE_D8: + case PULSES_PXX_XJT_D8: + return 8; + case PULSES_LP45: + case PULSES_DSM2: + case PULSES_DSMX: + return 6; + case PULSES_MULTIMODULE: + if (multi.rfProtocol == MODULE_SUBTYPE_MULTI_DSM2) + return 12; + else + return 16; + break; + case PULSES_OFF: + break; + default: + break; + } + return 8; +} diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index ee969fd0d..0d1d7bb6f 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -159,7 +159,7 @@ class ModuleData { unsigned int modelId; unsigned int protocol; // type in datastructs.h int rfProtocol; // rfProtocol in datastructs.h - + unsigned int subType; bool invertedSerial; unsigned int channelsStart; @@ -207,6 +207,8 @@ class ModuleData { static QString indexToString(int index, Firmware * fw); static QString protocolToString(unsigned protocol); static QStringList powerValueStrings(int subType, Firmware * fw); + bool hasFailsafes(Firmware * fw) const; + int getMaxChannelCount(); }; #endif // MODULEDATA_H diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 464c458ef..8825a5c42 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -616,6 +616,10 @@ int OpenTxFirmware::getCapability(::Capability capability) return 0; else return IS_ARM(board) ? 4 : 2; + case TelemetryCustomScreensBars: + return (getCapability(TelemetryCustomScreens) ? 4 : 0); + case TelemetryCustomScreensLines: + return (getCapability(TelemetryCustomScreens) ? 4 : 0); case TelemetryCustomScreensFieldsPerLine: return HAS_LARGE_LCD(board) ? 3 : 2; case NoTelemetryProtocol: @@ -754,6 +758,11 @@ int OpenTxFirmware::getCapability(::Capability capability) return IS_TARANIS_XLITES(board); case PwrButtonPress: return IS_HORUS_OR_TARANIS(board) && (board!=Board::BOARD_TARANIS_X9D) && (board!=Board::BOARD_TARANIS_X9DP); + case Sensors: + if (IS_FAMILY_HORUS_OR_T16(board) || IS_TARANIS_X9(board)) + return 60; + else + return 40; default: return 0; } diff --git a/companion/src/firmwares/rawsource.h b/companion/src/firmwares/rawsource.h index e9273d399..f59ab70f5 100644 --- a/companion/src/firmwares/rawsource.h +++ b/companion/src/firmwares/rawsource.h @@ -227,11 +227,7 @@ class RawSource { AllSourceGroups = InputSourceGroups | GVarsGroup | TelemGroup | ScriptsGroup }; - RawSource(): - type(SOURCE_TYPE_NONE), - index(0) - { - } + RawSource() { clear(); } explicit RawSource(int value): type(RawSourceType(abs(value)/65536)), @@ -258,6 +254,8 @@ class RawSource { bool isSlider(int * sliderIndex = NULL, Board::Type board = Board::BOARD_UNKNOWN) const; bool isTimeBased(Board::Type board = Board::BOARD_UNKNOWN) const; bool isAvailable(const ModelData * const model = NULL, const GeneralSettings * const gs = NULL, Board::Type board = Board::BOARD_UNKNOWN) const; + bool isSet() const { return type != SOURCE_TYPE_NONE || index != 0; } + void clear() { type = SOURCE_TYPE_NONE; index = 0; } bool operator == ( const RawSource & other) const { return (this->type == other.type) && (this->index == other.index); diff --git a/companion/src/firmwares/rawswitch.h b/companion/src/firmwares/rawswitch.h index af49156c0..d79ac0aa6 100644 --- a/companion/src/firmwares/rawswitch.h +++ b/companion/src/firmwares/rawswitch.h @@ -65,11 +65,7 @@ class RawSwitch { AllSwitchContexts = AllModelContexts | GlobalFunctionsContext }; - RawSwitch(): - type(SWITCH_TYPE_NONE), - index(0) - { - } + RawSwitch() { clear(); } explicit RawSwitch(int value): type(RawSwitchType(abs(value)/256)), @@ -91,6 +87,8 @@ class RawSwitch { RawSwitch convert(RadioDataConversionState & cstate); QString toString(Board::Type board = Board::BOARD_UNKNOWN, const GeneralSettings * const generalSettings = NULL, const ModelData * const modelData = NULL) const; bool isAvailable(const ModelData * const model = NULL, const GeneralSettings * const gs = NULL, Board::Type board = Board::BOARD_UNKNOWN) const; + bool isSet() const { return type != SWITCH_TYPE_NONE || index != 0; } + void clear() { type = SWITCH_TYPE_NONE; index = 0; } bool operator== ( const RawSwitch& other) const { return (this->type == other.type) && (this->index == other.index); @@ -100,7 +98,6 @@ class RawSwitch { return (this->type != other.type) || (this->index != other.index); } - RawSwitchType type; int index; }; diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index 593121d83..450f785fd 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -120,7 +120,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera s1.report("header"); - for (int i=0; isetContextMenuPolicy(Qt::CustomContextMenu); label->setToolTip(tr("Popup menu available")); label->setMouseTracking(true); - connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(chn_customContextMenuRequested(QPoint))); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomContextMenuRequested(QPoint))); tableLayout->addWidget(i, col++, label); // Channel name @@ -204,7 +204,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera Channels::~Channels() { // compiler warning if delete[] - for (int i=0; igetChannelsMax(); - for (int i=0 ; iupdateMinMax(10 * channelMax); chnMin[i]->updateMinMax(10 * channelMax); chnMax[i]->updateMinMax(10 * channelMax); @@ -280,7 +280,7 @@ void Channels::ppmcenterEdited() void Channels::update() { - for (int i=0; igetBoard())) { int numcurves = firmware->getCapability(NumCurves); curveCB[i]->clear(); - for (int j=-numcurves; j<=numcurves; j++) { + for (int j = -numcurves; j <= numcurves; j++) { curveCB[i]->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, j).toString(model, false), j); } curveCB[i]->setCurrentIndex(model->limitData[i].curve.value + numcurves); @@ -312,118 +312,140 @@ void Channels::updateLine(int i) lock = false; } -void Channels::chnPaste() +void Channels::cmPaste() { - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat(MIMETYPE_CHN)) { - QByteArray chnData = mimeData->data(MIMETYPE_CHN); - LimitData *chn = &model->limitData[selectedChannel]; - memcpy(chn, chnData.constData(), sizeof(LimitData)); - updateLine(selectedChannel); + QByteArray data; + if (hasClipboardData(&data)) { + memcpy(&model->limitData[selectedIndex], data.constData(), sizeof(LimitData)); + updateLine(selectedIndex); emit modified(); } } -void Channels::chnDelete() +void Channels::cmDelete() { - int maxidx = chnCapability - 1; - for (int i=selectedChannel; ilimitData[i].isEmpty() || !model->limitData[i+1].isEmpty()) { - LimitData *chn1 = &model->limitData[i]; - LimitData *chn2 = &model->limitData[i+1]; - memcpy(chn1, chn2, sizeof(LimitData)); - updateLine(i); - } + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Channel. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + memmove(&model->limitData[selectedIndex], &model->limitData[selectedIndex + 1], (CPN_MAX_CHNOUT - (selectedIndex + 1)) * sizeof(LimitData)); + model->limitData[chnCapability - 1].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CHANNEL, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, -1); + + for (int i = selectedIndex; i < chnCapability; i++) { + updateLine(i); } - model->limitData[maxidx].clear(); - updateLine(maxidx); + emit modified(); } -void Channels::chnCopy() +void Channels::cmCopy() { - QByteArray chnData; - chnData.append((char*)&model->limitData[selectedChannel],sizeof(LimitData)); + QByteArray data; + data.append((char*)&model->limitData[selectedIndex], sizeof(LimitData)); QMimeData *mimeData = new QMimeData; - mimeData->setData(MIMETYPE_CHN, chnData); + mimeData->setData(MIMETYPE_CHANNEL, data); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } -void Channels::chnCut() +void Channels::cmCut() { - chnCopy(); - chnClear(); + cmCopy(); + cmClear(); } -void Channels::chn_customContextMenuRequested(QPoint pos) +void Channels::onCustomContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); - selectedChannel = label->property("index").toInt(); - + selectedIndex = label->property("index").toInt(); QPoint globalPos = label->mapToGlobal(pos); - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat(MIMETYPE_CHN); - bool moveUpAllowed = (selectedChannel > 0); - bool moveDownAllowed = (selectedChannel < (chnCapability - 1)); - bool insertAllowed = (selectedChannel < (chnCapability - 1)) && (model->limitData[chnCapability - 1].isEmpty()); - QMenu contextMenu; - contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(chnCopy())); - contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(chnCut())); - contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(chnPaste()))->setEnabled(hasData); - contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(chnClear())); + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(cmClear())); contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"),this,SLOT(chnInsert()))->setEnabled(insertAllowed); - contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"),this,SLOT(chnDelete())); - contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(chnMoveUp()))->setEnabled(moveUpAllowed); - contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(chnMoveDown()))->setEnabled(moveDownAllowed); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"),this,SLOT(cmInsert()))->setEnabled(insertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"),this,SLOT(cmDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(cmMoveUp()))->setEnabled(moveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(cmMoveDown()))->setEnabled(moveDownAllowed()); contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(chnClearAll())); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(cmClearAll())); contextMenu.exec(globalPos); } -void Channels::chnMoveUp() +bool Channels::hasClipboardData(QByteArray * data) const { - swapChnData(selectedChannel, selectedChannel - 1); + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_CHANNEL)) { + if (data) + data->append(mimeData->data(MIMETYPE_CHANNEL)); + return true; + } + return false; } -void Channels::chnMoveDown() +bool Channels::insertAllowed() const { - swapChnData(selectedChannel, selectedChannel + 1); + return ((selectedIndex < chnCapability - 1) && (model->limitData[chnCapability - 1].isEmpty())); } -void Channels::chnClear() +bool Channels::moveDownAllowed() const { - model->limitData[selectedChannel].clear(); - updateLine(selectedChannel); + return selectedIndex < chnCapability - 1; +} + +bool Channels::moveUpAllowed() const +{ + return selectedIndex > 0; +} + +void Channels::cmMoveUp() +{ + swapData(selectedIndex, selectedIndex - 1); +} + +void Channels::cmMoveDown() +{ + swapData(selectedIndex, selectedIndex + 1); +} + +void Channels::cmClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Channel. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + model->limitData[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CHANNEL, ModelData::REF_UPD_ACT_CLEAR, selectedIndex); + updateLine(selectedIndex); emit modified(); } -void Channels::chnClearAll() +void Channels::cmClearAll() { - for (int i=0; ilimitData[i].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CHANNEL, ModelData::REF_UPD_ACT_CLEAR, i); updateLine(i); } emit modified(); } -void Channels::chnInsert() +void Channels::cmInsert() { - for (int i=(chnCapability - 1); i>selectedChannel; i--) { - if (!model->limitData[i].isEmpty() || !model->limitData[i-1].isEmpty()) { - memcpy(&model->limitData[i], &model->limitData[i-1], sizeof(LimitData)); - updateLine(i); - } - } - chnClear(); + memmove(&model->limitData[selectedIndex + 1], &model->limitData[selectedIndex], (CPN_MAX_CHNOUT - (selectedIndex + 1)) * sizeof(LimitData)); + model->limitData[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CHANNEL, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, 1); + update(); + emit modified(); } -void Channels::swapChnData(int idx1, int idx2) +void Channels::swapData(int idx1, int idx2) { if ((idx1 != idx2) && (!model->limitData[idx1].isEmpty() || !model->limitData[idx2].isEmpty())) { LimitData chntmp = model->limitData[idx2]; @@ -431,6 +453,7 @@ void Channels::swapChnData(int idx1, int idx2) LimitData *chn2 = &model->limitData[idx2]; memcpy(chn2, chn1, sizeof(LimitData)); memcpy(chn1, &chntmp, sizeof(LimitData)); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CHANNEL, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); updateLine(idx1); updateLine(idx2); emit modified(); diff --git a/companion/src/modeledit/channels.h b/companion/src/modeledit/channels.h index f50c72b89..caa0fca38 100644 --- a/companion/src/modeledit/channels.h +++ b/companion/src/modeledit/channels.h @@ -26,7 +26,7 @@ #include -constexpr char MIMETYPE_CHN[] = "application/x-companion-chn"; +constexpr char MIMETYPE_CHANNEL[] = "application/x-companion-channel"; class GVarGroup; @@ -68,19 +68,23 @@ class Channels : public ModelPanel void ppmcenterEdited(); void update(); void updateLine(int index); - void chnDelete(); - void chnCopy(); - void chnPaste(); - void chnCut(); - void chnMoveUp(); - void chnMoveDown(); - void chnInsert(); - void chnClear(); - void chnClearAll(); - void chn_customContextMenuRequested(QPoint pos); + void cmDelete(); + void cmCopy(); + void cmPaste(); + void cmCut(); + void cmMoveUp(); + void cmMoveDown(); + void cmInsert(); + void cmClear(); + void cmClearAll(); + void onCustomContextMenuRequested(QPoint pos); private: - void swapChnData(int idx1, int idx2); + bool hasClipboardData(QByteArray * data = nullptr) const; + bool insertAllowed() const; + bool moveDownAllowed() const; + bool moveUpAllowed() const; + void swapData(int idx1, int idx2); QLineEdit *name[CPN_MAX_CHNOUT]; LimitsGroup *chnOffset[CPN_MAX_CHNOUT]; LimitsGroup *chnMin[CPN_MAX_CHNOUT]; @@ -89,7 +93,7 @@ class Channels : public ModelPanel QComboBox *curveCB[CPN_MAX_CHNOUT]; QSpinBox *centerSB[CPN_MAX_CHNOUT]; QCheckBox *symlimitsChk[CPN_MAX_CHNOUT]; - int selectedChannel; + int selectedIndex; int chnCapability; }; diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index cf3eb9e71..5759e60e6 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -117,7 +117,12 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet lock = true; - if (!firmware->getCapability(HasCvNames)) { + maxCurves = firmware->getCapability(NumCurves); + hasNames = firmware->getCapability(HasCvNames); + hasEnhanced = firmware->getCapability(EnhancedCurves); + maxPoints = firmware->getCapability(NumCurvePoints); + + if (!hasNames) { ui->curveName->hide(); ui->curveNameLabel->hide(); } @@ -127,14 +132,14 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet connect(scene, SIGNAL(newPoint(int, int)), this, SLOT(onSceneNewPoint(int, int))); ui->curvePreview->setScene(scene); - int numcurves=firmware->getCapability(NumCurves); + int limit; - if (numcurves>16) { - limit=numcurves/2; + if (maxCurves > 16) { + limit = maxCurves / 2; } else { - limit=numcurves; + limit = maxCurves; } - for (int i=0; isetStyleSheet(QString("background-color: %1; color: white; padding: 2px 3px; border-style: outset; border-width: 1px; border-radius: 2px; border-color: inherit;").arg(colors[i].name())); #endif edit->setPalette(palette); - edit->setText(tr("Curve %1").arg(i+1)); + edit->setText(tr("Curve %1").arg(i + 1)); edit->setContextMenuPolicy(Qt::CustomContextMenu); edit->setToolTip(tr("Popup menu available")); - connect(edit, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowContextMenu(const QPoint&))); + connect(edit, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(onCustomContextMenuRequested(const QPoint&))); connect(edit, SIGNAL(clicked()), this, SLOT(editCurve())); - if (icurvesLayout->addWidget(edit, i, 1, 1, 1); } else { - ui->curvesLayout2->addWidget(edit, i-limit, 2, 1, 1); + ui->curvesLayout2->addWidget(edit, i - limit, 2, 1, 1); } // The curve plot checkbox @@ -167,7 +172,7 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet plot->setProperty("index", i); plot->setPalette(palette); connect(plot, SIGNAL(toggled(bool)), this, SLOT(plotCurve(bool))); - if (icurvesLayout->addWidget(plot, i, 2, 1, 1); } else { ui->curvesLayout2->addWidget(plot, i-limit, 1, 1, 1); @@ -175,13 +180,13 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet } QSpacerItem * item = new QSpacerItem(1,1, QSizePolicy::Fixed, QSizePolicy::Expanding); - ui->curvesLayout->addItem(item,limit+1,1,1,1,0); - if (limit!=numcurves) { + ui->curvesLayout->addItem(item,limit + 1, 1, 1, 1, 0); + if (limit != maxCurves) { QSpacerItem * item2 = new QSpacerItem(1,1, QSizePolicy::Fixed, QSizePolicy::Expanding); - ui->curvesLayout2->addItem(item2,limit+1,1,1,1,0); + ui->curvesLayout2->addItem(item2,limit + 1, 1, 1, 1, 0); } - for (int i=0; isetProperty("index", i); spnx[i]->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); @@ -199,14 +204,14 @@ Curves::Curves(QWidget * parent, ModelData & model, GeneralSettings & generalSet ui->pointsLayout->addWidget(spny[i], i, 1, 1, 1); bool insert; - if (firmware->getCapability(EnhancedCurves)) { + if (hasEnhanced) { insert = (i >= 1); } else { - insert = (i==2 || i==4 || i==8 || i==16); + insert = (i == 2 || i == 4 || i ==8 || i == 16); } if (insert) { - ui->curvePoints->addItem(tr("%1 points").arg(i+1), i+1); + ui->curvePoints->addItem(tr("%1 points").arg(i + 1), i + 1); } } @@ -250,7 +255,7 @@ void Curves::update() { lock = true; - if (firmware->getCapability(HasCvNames)) { + if (hasNames) { ui->curveName->setText(model->curves[currentCurve].name); } @@ -272,7 +277,7 @@ void Curves::updateCurveType() int index = 0; - if (firmware->getCapability(EnhancedCurves)) { + if (hasEnhanced) { index = model->curves[currentCurve].count - 2; } else { @@ -305,35 +310,34 @@ void Curves::updateCurve() qreal width = scene->sceneRect().width(); qreal height = scene->sceneRect().height(); - qreal centerX = scene->sceneRect().left() + width/2; - qreal centerY = scene->sceneRect().top() + height/2; + qreal centerX = scene->sceneRect().left() + width / 2; + qreal centerY = scene->sceneRect().top() + height / 2; - QGraphicsSimpleTextItem *ti = scene->addSimpleText(tr("Editing curve %1").arg(currentCurve+1)); + QGraphicsSimpleTextItem *ti = scene->addSimpleText(tr("Editing curve %1").arg(currentCurve + 1)); ti->setPos(3, 3); - scene->addLine(centerX, GFX_MARGIN, centerX, height+GFX_MARGIN); - scene->addLine(GFX_MARGIN, centerY, width+GFX_MARGIN, centerY); + scene->addLine(centerX, GFX_MARGIN, centerX, height + GFX_MARGIN); + scene->addLine(GFX_MARGIN, centerY, width + GFX_MARGIN, centerY); QPen pen; pen.setWidth(1); pen.setStyle(Qt::SolidLine); - int numcurves = firmware->getCapability(NumCurves); - for (int k=0; kcurves[k].count; - for (int i=0; icurves[k].type == CurveData::CURVE_TYPE_CUSTOM) - scene->addLine(centerX + (qreal)model->curves[k].points[i].x*width/200,centerY - (qreal)model->curves[k].points[i].y*height/200,centerX + (qreal)model->curves[k].points[i+1].x*width/200,centerY - (qreal)model->curves[k].points[i+1].y*height/200, pen); + scene->addLine(centerX + (qreal)model->curves[k].points[i].x*width/200, centerY - (qreal)model->curves[k].points[i].y*height/200,centerX + (qreal)model->curves[k].points[i+1].x*width/200,centerY - (qreal)model->curves[k].points[i+1].y*height/200, pen); else - scene->addLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)model->curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model->curves[k].points[i+1].y*height/200, pen); + scene->addLine(GFX_MARGIN + i*width/(numpoints-1), centerY - (qreal)model->curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model->curves[k].points[i+1].y*height/200, pen); } } } int numpoints = model->curves[currentCurve].count; - for (int i=0; isetProperty("index", i); @@ -341,26 +345,27 @@ void Curves::updateCurve() nodex->setBallSize(ui->pointSize->value()); nodex->setBallHeight(0); if (model->curves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM) { - if (i>0 && i 0 && i < numpoints - 1) { nodex->setFixedX(false); - nodex->setMinX(model->curves[currentCurve].points[i-1].x); - nodex->setMaxX(model->curves[currentCurve].points[i+1].x); + nodex->setMinX(model->curves[currentCurve].points[i - 1].x); + nodex->setMaxX(model->curves[currentCurve].points[i + 1].x); } else { nodex->setFixedX(true); } - nodex->setPos(centerX + (qreal)model->curves[currentCurve].points[i].x*width/200,centerY - (qreal)model->curves[currentCurve].points[i].y*height/200); + nodex->setPos(centerX + (qreal)model->curves[currentCurve].points[i].x * width / 200, centerY - (qreal)model->curves[currentCurve].points[i].y * height / 200); } else { nodex->setFixedX(true); - nodex->setPos(GFX_MARGIN + i*width/(numpoints-1), centerY - (qreal)model->curves[currentCurve].points[i].y*height/200); + nodex->setPos(GFX_MARGIN + i * width / (numpoints - 1), centerY - (qreal)model->curves[currentCurve].points[i].y * height / 200); } connect(nodex, SIGNAL(moved(int, int)), this, SLOT(onNodeMoved(int, int))); connect(nodex, SIGNAL(focus()), this, SLOT(onNodeFocus())); connect(nodex, SIGNAL(unfocus()), this, SLOT(onNodeUnfocus())); connect(nodex, SIGNAL(deleteMe()), this, SLOT(onNodeDelete())); scene->addItem(nodex); - if (i>0) scene->addItem(new Edge(nodel, nodex)); + if (i > 0) + scene->addItem(new Edge(nodel, nodex)); } lock = false; @@ -371,20 +376,20 @@ void Curves::updateCurvePoints() lock = true; int count = model->curves[currentCurve].count; - for (int i=0; ishow(); spny[i]->setValue(model->curves[currentCurve].points[i].y); if (model->curves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM) { spnx[i]->show(); - if (i==0 || i==model->curves[currentCurve].count-1) { + if (i == 0 || i == model->curves[currentCurve].count - 1) { spnx[i]->setDisabled(true); spnx[i]->setMaximum(+100); spnx[i]->setMinimum(-100); } else { spnx[i]->setDisabled(false); - spnx[i]->setMaximum(model->curves[currentCurve].points[i+1].x); - spnx[i]->setMinimum(model->curves[currentCurve].points[i-1].x); + spnx[i]->setMaximum(model->curves[currentCurve].points[i + 1].x); + spnx[i]->setMinimum(model->curves[currentCurve].points[i - 1].x); } spnx[i]->setValue(model->curves[currentCurve].points[i].x); } @@ -392,7 +397,7 @@ void Curves::updateCurvePoints() spnx[i]->hide(); } } - for (int i=count; ihide(); spnx[i]->hide(); } @@ -421,9 +426,9 @@ void Curves::onNodeMoved(int x, int y) spnx[index]->setValue(x); spny[index]->setValue(y); if (index > 0) - spnx[index-1]->setMaximum(x); - if (index < model->curves[currentCurve].count-1) - spnx[index+1]->setMinimum(x); + spnx[index - 1]->setMaximum(x); + if (index < model->curves[currentCurve].count - 1) + spnx[index + 1]->setMinimum(x); emit modified(); lock = false; } @@ -444,17 +449,14 @@ void Curves::onNodeUnfocus() bool Curves::allowCurveType(int points, CurveData::CurveType type) { - int numcurves = firmware->getCapability(NumCurves); - int totalpoints = 0; - for (int i=0; icurves[i].count); - CurveData::CurveType cvType = (i==currentCurve ? type : model->curves[i].type); - totalpoints += cvPoints + (cvType==CurveData::CURVE_TYPE_CUSTOM ? cvPoints-2 : 0); + for (int i = 0; i < maxCurves; i++) { + int cvPoints = (i == currentCurve ? points : model->curves[i].count); + CurveData::CurveType cvType = (i == currentCurve ? type : model->curves[i].type); + totalpoints += cvPoints + (cvType == CurveData::CURVE_TYPE_CUSTOM ? cvPoints - 2 : 0); } - int fwpoints = firmware->getCapability(NumCurvePoints); - if (totalpoints > fwpoints) { + if (totalpoints > maxPoints) { QMessageBox::warning(this, "companion", tr("Not enough free points in EEPROM to store the curve.")); return false; } @@ -472,8 +474,8 @@ void Curves::on_curvePoints_currentIndexChanged(int index) model->curves[currentCurve].count = numpoints; // TODO something better + reuse! - for (int i=0; icurves[currentCurve].points[i].x = (i >= numpoints-1 ? +100 : -100 + (200*i)/(numpoints-1)); + for (int i = 0; i < CPN_MAX_POINTS; i++) { + model->curves[currentCurve].points[i].x = (i >= numpoints - 1 ? +100 : -100 + (200 * i) / (numpoints - 1)); model->curves[currentCurve].points[i].y = 0; } @@ -491,12 +493,13 @@ void Curves::on_curveCustom_currentIndexChanged(int index) if (!lock) { CurveData::CurveType type = (CurveData::CurveType)index; int numpoints = ui->curvePoints->itemData(ui->curvePoints->currentIndex()).toInt(); + if (allowCurveType(model->curves[currentCurve].count, type)) { model->curves[currentCurve].type = type; // TODO something better + reuse! - for (int i=0; icurves[currentCurve].points[i].x = (i >= numpoints-1 ? +100 : -100 + (200*i)/(numpoints-1)); + for (int i = 0; i < CPN_MAX_POINTS; i++) { + model->curves[currentCurve].points[i].x = (i >= numpoints - 1 ? +100 : -100 + (200 * i) / (numpoints - 1)); model->curves[currentCurve].points[i].y = 0; } @@ -525,7 +528,7 @@ void Curves::on_curveName_editingFinished() void Curves::resizeEvent(QResizeEvent *event) { QRect qr = ui->curvePreview->contentsRect(); - ui->curvePreview->scene()->setSceneRect(GFX_MARGIN, GFX_MARGIN, qr.width()-GFX_MARGIN*2, qr.height()-GFX_MARGIN*2); + ui->curvePreview->scene()->setSceneRect(GFX_MARGIN, GFX_MARGIN, qr.width() - GFX_MARGIN * 2, qr.height() - GFX_MARGIN * 2); updateCurve(); ModelPanel::resizeEvent(event); } @@ -559,12 +562,12 @@ void Curves::on_curveApply_clicked() int index = ui->curveType->currentIndex(); int numpoints = model->curves[currentCurve].count; - for (int i=0; icurves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM) x = model->curves[currentCurve].points[i].x; else - x = -100.0 + (200.0/(numpoints-1))*i; + x = -100.0 + (200.0 / (numpoints - 1)) * i; bool apply = false; switch (ui->curveSide->currentIndex()) { @@ -572,11 +575,11 @@ void Curves::on_curveApply_clicked() apply = true; break; case 1: - if (x>=0) + if (x >= 0) apply = true; break; case 2: - if (x<0) + if (x < 0) apply = true; break; } @@ -591,68 +594,6 @@ void Curves::on_curveApply_clicked() emit modified(); } -void Curves::ShowContextMenu(const QPoint& pos) // this is a slot -{ - QPushButton *button = (QPushButton *)sender(); - int index = button->property("index").toInt(); - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - QPoint globalPos = button->mapToGlobal(pos); - QMenu myMenu; - QAction *action; - action = myMenu.addAction(CompanionIcon("copy.png"),tr("Copy")); - action->setProperty("index", CURVE_COPY); - - action = myMenu.addAction(CompanionIcon("paste.png"),tr("Paste")); - if (!mimeData->hasFormat("application/x-companion-curve-item")) { - action->setEnabled(false); - } - action->setProperty("index", CURVE_PASTE); - - action = myMenu.addAction(CompanionIcon("clear.png"),tr("Clear")); - action->setProperty("index", CURVE_RESET); - action = myMenu.addAction(CompanionIcon("clear.png"),tr("Clear all curves")); - action->setProperty("index", CURVE_RESETALL); - - QAction* selectedItem = myMenu.exec(globalPos); - if (selectedItem) { - int action=selectedItem->property("index").toInt(); - if (action==CURVE_COPY) { - QByteArray curveData; - QMimeData *mimeData2 = new QMimeData; - curveData.append((char*)&model->curves[index], sizeof(CurveData)); - mimeData2->setData("application/x-companion-curve-item", curveData); - QApplication::clipboard()->setMimeData(mimeData2, QClipboard::Clipboard); - } - else if (action==CURVE_PASTE) { - QByteArray curveData = mimeData->data("application/x-companion-curve-item"); - CurveData *curve = &model->curves[index]; - memcpy(curve, curveData.constData(), sizeof(CurveData)); - update(); - emit modified(); - } - else if (action==CURVE_RESET) { - int res = QMessageBox::question(this, "companion", tr("Are you sure you want to reset curve %1?").arg(index+1), QMessageBox::Yes | QMessageBox::No); - if (res == QMessageBox::Yes) { - model->curves[index].clear(5); - update(); - emit modified(); - } - } - else if (action==CURVE_RESETALL) { - int res = QMessageBox::question(this, "companion", tr("Are you sure you want to reset all curves?"), QMessageBox::Yes | QMessageBox::No); - if (res == QMessageBox::Yes) { - int numcurves = firmware->getCapability(NumCurves); - for (int i=0; icurves[i].clear(5); - } - update(); - emit modified(); - } - } - } -} - void Curves::onPointSizeEdited() { if (!lock) { @@ -690,7 +631,7 @@ void Curves::onSceneNewPoint(int x, int y) newidx = numpoints; } else { - for (int i=0; icurves[currentCurve].points[i].x) { newidx = i; break; @@ -699,8 +640,8 @@ void Curves::onSceneNewPoint(int x, int y) } numpoints++; model->curves[currentCurve].count = numpoints; - for (int idx=(numpoints-1); idx>(newidx); idx--) { - model->curves[currentCurve].points[idx] = model->curves[currentCurve].points[idx-1]; + for (int idx = (numpoints - 1); idx > newidx; idx--) { + model->curves[currentCurve].points[idx] = model->curves[currentCurve].points[idx - 1]; } model->curves[currentCurve].points[newidx].x = x; model->curves[currentCurve].points[newidx].y = y; @@ -709,6 +650,150 @@ void Curves::onSceneNewPoint(int x, int y) } } +void Curves::onCustomContextMenuRequested(QPoint pos) +{ + QPushButton *button = (QPushButton *)sender(); + selectedIndex = button->property("index").toInt(); + QPoint globalPos = button->mapToGlobal(pos); + + QMenu contextMenu; + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"), this, SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"), this, SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"), this, SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"), this, SLOT(cmClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"), this, SLOT(cmInsert()))->setEnabled(insertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"), this, SLOT(cmDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(cmMoveUp()))->setEnabled(moveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(cmMoveDown()))->setEnabled(moveDownAllowed()); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"), this, SLOT(cmClearAll())); + + contextMenu.exec(globalPos); +} + +bool Curves::hasClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_CURVE)) { + if (data) + data->append(mimeData->data(MIMETYPE_CURVE)); + return true; + } + return false; +} + +bool Curves::insertAllowed() const +{ + return ((selectedIndex < maxCurves - 1) && (model->curves[maxCurves - 1].isEmpty())); +} + +bool Curves::moveDownAllowed() const +{ + return selectedIndex < maxCurves - 1; +} + +bool Curves::moveUpAllowed() const +{ + return selectedIndex > 0; +} + +void Curves::cmClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Curve. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + model->curves[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CURVE, ModelData::REF_UPD_ACT_CLEAR, selectedIndex); + update(); + emit modified(); +} + +void Curves::cmClearAll() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Curves. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int i = 0; i < maxCurves; i++) { + model->curves[i].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CURVE, ModelData::REF_UPD_ACT_CLEAR, i); + } + update(); + emit modified(); +} + +void Curves::cmCopy() +{ + QByteArray data; + data.append((char*)&model->curves[selectedIndex], sizeof(CurveData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData(MIMETYPE_CURVE, data); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void Curves::cmCut() +{ + cmCopy(); + cmClear(); +} + +void Curves::cmDelete() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Curve. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + memmove(&model->curves[selectedIndex], &model->curves[selectedIndex + 1], (CPN_MAX_CURVES - (selectedIndex + 1)) * sizeof(CurveData)); + model->curves[maxCurves - 1].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CURVE, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, -1); + update(); + emit modified(); +} + +void Curves::cmInsert() +{ + memmove(&model->curves[selectedIndex + 1], &model->curves[selectedIndex], (CPN_MAX_CURVES - (selectedIndex + 1)) * sizeof(CurveData)); + model->curves[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CURVE, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, 1); + update(); + emit modified(); +} + +void Curves::cmMoveDown() +{ + swapData(selectedIndex, selectedIndex + 1); +} + +void Curves::cmMoveUp() +{ + swapData(selectedIndex, selectedIndex - 1); +} + +void Curves::cmPaste() +{ + QByteArray data; + if (hasClipboardData(&data)) { + CurveData *cd = &model->curves[selectedIndex]; + memcpy(cd, data.constData(), sizeof(CurveData)); + update(); + emit modified(); + } +} + +void Curves::swapData(int idx1, int idx2) +{ + if ((idx1 != idx2) && (!model->curves[idx1].isEmpty() || !model->curves[idx2].isEmpty())) { + CurveData cdtmp = model->curves[idx2]; + CurveData *cd1 = &model->curves[idx1]; + CurveData *cd2 = &model->curves[idx2]; + memcpy(cd2, cd1, sizeof(CurveData)); + memcpy(cd1, &cdtmp, sizeof(CurveData)); + model->updateAllReferences(ModelData::REF_UPD_TYPE_CURVE, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + update(); + emit modified(); + } +} + CustomScene::CustomScene(QGraphicsView * view) : QGraphicsScene(view) { diff --git a/companion/src/modeledit/curves.h b/companion/src/modeledit/curves.h index a65ba8872..d9a5364a6 100644 --- a/companion/src/modeledit/curves.h +++ b/companion/src/modeledit/curves.h @@ -26,12 +26,7 @@ #include #include -enum CopyAction { - CURVE_COPY, - CURVE_PASTE, - CURVE_RESET, - CURVE_RESETALL -}; +constexpr char MIMETYPE_CURVE[] = "application/x-companion-curve"; namespace Ui { class Curves; @@ -71,7 +66,6 @@ class Curves : public ModelPanel private slots: void editCurve(); - void ShowContextMenu(const QPoint& pos); void plotCurve(bool checked); void on_curveName_editingFinished(); void on_curvePoints_currentIndexChanged(int index); @@ -86,6 +80,16 @@ class Curves : public ModelPanel void onSceneNewPoint(int x, int y); void onPointSizeEdited(); void onNodeDelete(); + void onCustomContextMenuRequested(QPoint pos); + void cmClear(); + void cmClearAll(); + void cmCopy(); + void cmCut(); + void cmDelete(); + void cmInsert(); + void cmPaste(); + void cmMoveDown(); + void cmMoveUp(); protected: virtual void resizeEvent(QResizeEvent *event); @@ -105,6 +109,16 @@ class Curves : public ModelPanel bool allowCurveType(int points, CurveData::CurveType type); void setPointY(int i, int x, int y); CustomScene * scene; + int maxCurves; + int hasNames; + int hasEnhanced; + int maxPoints; + int selectedIndex; + bool hasClipboardData(QByteArray * data = nullptr) const; + bool insertAllowed() const; + bool moveDownAllowed() const; + bool moveUpAllowed() const; + void swapData(int idx1, int idx2); }; #endif // _CURVES_H_ diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index fdba765d8..34f05a707 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -127,7 +127,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData * model, else label->setText(tr("GF%1").arg(i+1)); label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); - connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(fsw_customContextMenuRequested(QPoint))); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomContextMenuRequested(QPoint))); tableLayout->addWidget(i, 0, label); // s1.report("label"); @@ -608,76 +608,63 @@ void CustomFunctionsPanel::update() lock = false; } -void CustomFunctionsPanel::fswPaste() +void CustomFunctionsPanel::cmPaste() { - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat(MIMETYPE_FSW)) { - QByteArray fswData = mimeData->data(MIMETYPE_FSW); - CustomFunctionData *fsw = &functions[selectedFunction]; - memcpy(fsw, fswData.constData(), sizeof(CustomFunctionData)); - resetCBsAndRefresh(selectedFunction); + QByteArray data; + if (hasClipboardData(&data)) { + memcpy(&functions[selectedIndex], data.constData(), sizeof(CustomFunctionData)); + resetCBsAndRefresh(selectedIndex); emit modified(); } } -void CustomFunctionsPanel::fswDelete() +void CustomFunctionsPanel::cmDelete() { - int maxidx = fswCapability - 1; - for (int i=selectedFunction; isetData(MIMETYPE_FSW, fswData); + mimeData->setData(MIMETYPE_CUSTOM_FUNCTION, data); QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); } -void CustomFunctionsPanel::fswCut() +void CustomFunctionsPanel::cmCut() { - fswCopy(); - fswClear(); + cmCopy(); + cmClear(); } -void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) +void CustomFunctionsPanel::onCustomContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); - selectedFunction = label->property("index").toInt(); - + selectedIndex = label->property("index").toInt(); QPoint globalPos = label->mapToGlobal(pos); - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat(MIMETYPE_FSW); - bool moveUpAllowed = (selectedFunction > 0); - bool moveDownAllowed = (selectedFunction < (fswCapability - 1)); - bool insertAllowed = (selectedFunction < (fswCapability - 1)) && (functions[fswCapability - 1].isEmpty()); - QMenu contextMenu; - contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(fswCopy())); - contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(fswCut())); - contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(fswPaste()))->setEnabled(hasData); - contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(fswClear())); + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(cmClear())); contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"),this,SLOT(fswInsert()))->setEnabled(insertAllowed); - contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"),this,SLOT(fswDelete())); - contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(fswMoveUp()))->setEnabled(moveUpAllowed); - contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(fswMoveDown()))->setEnabled(moveDownAllowed); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"),this,SLOT(cmInsert()))->setEnabled(insertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"),this,SLOT(cmDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(cmMoveUp()))->setEnabled(moveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(cmMoveDown()))->setEnabled(moveDownAllowed()); contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(fswClearAll())); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(cmClearAll())); contextMenu.exec(globalPos); } @@ -762,25 +749,31 @@ void CustomFunctionsPanel::populateFuncParamCB(QComboBox *b, uint function, unsi } } -void CustomFunctionsPanel::fswMoveUp() +void CustomFunctionsPanel::cmMoveUp() { - swapFuncData(selectedFunction, selectedFunction - 1); + swapData(selectedIndex, selectedIndex - 1); } -void CustomFunctionsPanel::fswMoveDown() +void CustomFunctionsPanel::cmMoveDown() { - swapFuncData(selectedFunction, selectedFunction + 1); + swapData(selectedIndex, selectedIndex + 1); } -void CustomFunctionsPanel::fswClear() +void CustomFunctionsPanel::cmClear() { - functions[selectedFunction].clear(); - resetCBsAndRefresh(selectedFunction); + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Special Function. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + functions[selectedIndex].clear(); + resetCBsAndRefresh(selectedIndex); emit modified(); } -void CustomFunctionsPanel::fswClearAll() +void CustomFunctionsPanel::cmClearAll() { + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Special Functions. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + for (int i=0; iselectedFunction; i--) { - if (!functions[i].isEmpty() || !functions[i-1].isEmpty()) { - memcpy(&functions[i], &functions[i-1], sizeof(CustomFunctionData)); - resetCBsAndRefresh(i); - } + memmove(&functions[selectedIndex + 1], &functions[selectedIndex], (CPN_MAX_SPECIAL_FUNCTIONS - (selectedIndex + 1)) * sizeof(CustomFunctionData)); + functions[selectedIndex].clear(); + + for (int i = selectedIndex; i < (fswCapability - 1); i++) { + resetCBsAndRefresh(i); } - fswClear(); } -void CustomFunctionsPanel::swapFuncData(int idx1, int idx2) +void CustomFunctionsPanel::swapData(int idx1, int idx2) { if ((idx1 != idx2) && (!functions[idx1].isEmpty() || !functions[idx2].isEmpty())) { CustomFunctionData fswtmp = functions[idx2]; @@ -823,3 +815,30 @@ void CustomFunctionsPanel::resetCBsAndRefresh(int idx) refreshCustomFunction(idx); lock = false; } + +bool CustomFunctionsPanel::hasClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_CUSTOM_FUNCTION)) { + if (data) + data->append(mimeData->data(MIMETYPE_CUSTOM_FUNCTION)); + return true; + } + return false; +} + +bool CustomFunctionsPanel::insertAllowed() const +{ + return ((selectedIndex < fswCapability - 1) && (model->curves[fswCapability - 1].isEmpty())); +} + +bool CustomFunctionsPanel::moveDownAllowed() const +{ + return selectedIndex < fswCapability - 1; +} + +bool CustomFunctionsPanel::moveUpAllowed() const +{ + return selectedIndex > 0; +} diff --git a/companion/src/modeledit/customfunctions.h b/companion/src/modeledit/customfunctions.h index fd257ce98..1c93f3e96 100644 --- a/companion/src/modeledit/customfunctions.h +++ b/companion/src/modeledit/customfunctions.h @@ -30,7 +30,7 @@ class RawSourceFilterItemModel; class RawSwitchFilterItemModel; class TimerEdit; -constexpr char MIMETYPE_FSW[] = "application/x-companion-fsw"; +constexpr char MIMETYPE_CUSTOM_FUNCTION[] = "application/x-companion-custom-function"; class RepeatComboBox: public QComboBox { @@ -67,7 +67,7 @@ class CustomFunctionsPanel : public GenericPanel void updateDataModels(); void customFunctionEdited(); void functionEdited(); - void fsw_customContextMenuRequested(QPoint pos); + void onCustomContextMenuRequested(QPoint pos); void refreshCustomFunction(int index, bool modified=false); void onChildModified(); bool playSound(int index); @@ -75,21 +75,25 @@ class CustomFunctionsPanel : public GenericPanel void toggleSound(bool play); void onMediaPlayerStateChanged(QMediaPlayer::State state); void onMediaPlayerError(QMediaPlayer::Error error); - void fswDelete(); - void fswCopy(); - void fswPaste(); - void fswCut(); - void fswMoveUp(); - void fswMoveDown(); - void fswInsert(); - void fswClear(); - void fswClearAll(); + void cmDelete(); + void cmCopy(); + void cmPaste(); + void cmCut(); + void cmMoveUp(); + void cmMoveDown(); + void cmInsert(); + void cmClear(); + void cmClearAll(); private: void populateFuncCB(QComboBox *b, unsigned int value); void populateGVmodeCB(QComboBox *b, unsigned int value); void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsigned int adjustmode=0); - void swapFuncData(int idx1, int idx2); + bool hasClipboardData(QByteArray * data = nullptr) const; + bool insertAllowed() const; + bool moveDownAllowed() const; + bool moveUpAllowed() const; + void swapData(int idx1, int idx2); void resetCBsAndRefresh(int idx); RawSwitchFilterItemModel * rawSwitchItemModel; RawSourceFilterItemModel * rawSrcAllItemModel; @@ -113,7 +117,7 @@ class CustomFunctionsPanel : public GenericPanel QSlider * fswtchBLcolor[CPN_MAX_SPECIAL_FUNCTIONS]; QMediaPlayer * mediaPlayer; - int selectedFunction; + int selectedIndex; int fswCapability; }; diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index 53f5d7585..a38b493a9 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -29,21 +29,23 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI ui(new Ui::FlightMode), phaseIdx(phaseIdx), phase(model.flightModeData[phaseIdx]), - reCount(firmware->getCapability(RotaryEncoders)), - gvCount(firmware->getCapability(Gvars)), rawSwitchItemModel(NULL) { ui->setupUi(this); ui->labelName->setContextMenuPolicy(Qt::CustomContextMenu); ui->labelName->setToolTip(tr("Popup menu available")); - connect(ui->labelName, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(name_customContextMenuRequested(const QPoint &))); + connect(ui->labelName, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onCustomContextMenuRequested(const QPoint &))); - int modesCount = firmware->getCapability(FlightModes); + board = getCurrentBoard(); + fmCount = firmware->getCapability(FlightModes); + gvCount = firmware->getCapability(Gvars); + reCount = firmware->getCapability(RotaryEncoders); + trimCount = Boards::getCapability(board, Board::NumTrims); // Flight mode name QRegExp rx(CHAR_FOR_NAMES_REGEX); - if (modesCount) { + if (fmCount) { ui->name->setValidator(new QRegExpValidator(rx, this)); ui->name->setMaxLength(firmware->getCapability(FlightModesName)); connect(ui->name, SIGNAL(editingFinished()), this, SLOT(phaseName_editingFinished())); @@ -65,13 +67,13 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI if (firmware->getCapability(FlightModesHaveFades)) { int scale = firmware->getCapability(SlowScale); int range = firmware->getCapability(SlowRange); - ui->fadeIn->setMaximum(float(range)/scale); - ui->fadeIn->setSingleStep(1.0/scale); - ui->fadeIn->setDecimals((scale==1 ? 0 :1) ); + ui->fadeIn->setMaximum(float(range) / scale); + ui->fadeIn->setSingleStep(1.0 / scale); + ui->fadeIn->setDecimals((scale == 1 ? 0 :1) ); connect(ui->fadeIn, SIGNAL(editingFinished()), this, SLOT(phaseFadeIn_editingFinished())); - ui->fadeOut->setMaximum(float(range)/scale); - ui->fadeOut->setSingleStep(1.0/scale); - ui->fadeOut->setDecimals((scale==1 ? 0 :1)); + ui->fadeOut->setMaximum(float(range) / scale); + ui->fadeOut->setSingleStep(1.0 / scale); + ui->fadeOut->setDecimals((scale == 1 ? 0 :1)); connect(ui->fadeOut, SIGNAL(editingFinished()), this, SLOT(phaseFadeOut_editingFinished())); } else { @@ -81,78 +83,82 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI // The trims QString labels[CPN_MAX_TRIMS]; - for(int i=0; i < CPN_MAX_STICKS; i++) { + for(int i = 0; i < CPN_MAX_STICKS; i++) { labels[i] = firmware->getAnalogInputName(i); } - labels[4] = "T5"; - labels[5] = "T6"; + labels[4] = "T5"; // TODO firmware function + labels[5] = "T6"; // TODO firmware function trimsLabel << ui->trim1Label << ui->trim2Label << ui->trim3Label << ui->trim4Label << ui->trim5Label << ui->trim6Label; trimsUse << ui->trim1Use << ui->trim2Use << ui->trim3Use << ui->trim4Use << ui->trim5Use << ui->trim6Use; trimsValue << ui->trim1Value << ui->trim2Value << ui->trim3Value << ui->trim4Value << ui->trim5Value << ui->trim6Value; trimsSlider << ui->trim1Slider << ui->trim2Slider << ui->trim3Slider << ui->trim4Slider << ui->trim5Slider << ui->trim6Slider; - Board::Type board = firmware->getBoard(); - - for (int i = getBoardCapability(board,Board::NumTrims); i < CPN_MAX_TRIMS; i++) { + for (int i = trimCount; i < CPN_MAX_TRIMS; i++) { trimsLabel[i]->hide(); trimsUse[i]->hide(); trimsValue[i]->hide(); trimsSlider[i]->hide(); } - for (int i = 0; i < getBoardCapability(board,Board::NumTrims); i++) { - trimsLabel[i]->setText(labels[CONVERT_MODE(i+1)-1]); - + for (int i = 0; i < trimCount; i++) { + trimsLabel[i]->setText(labels[CONVERT_MODE(i + 1) - 1]); QComboBox * cb = trimsUse[i]; cb->setProperty("index", i); if (IS_HORUS_OR_TARANIS(board)) { cb->addItem(tr("Trim disabled"), -1); } - for (int m=0; maddItem(tr("Own Trim"), m*2); + cb->addItem(tr("Own Trim"), m * 2); } else if (phaseIdx > 0) { - cb->addItem(tr("Use Trim from Flight mode %1").arg(m), m*2); + cb->addItem(tr("Use Trim from Flight mode %1").arg(m), m * 2); if (IS_HORUS_OR_TARANIS(board)) { - cb->addItem(tr("Use Trim from Flight mode %1 + Own Trim as an offset").arg(m), m*2+1); + cb->addItem(tr("Use Trim from Flight mode %1 + Own Trim as an offset").arg(m), m * 2 + 1); } } } connect(cb, SIGNAL(currentIndexChanged(int)), this, SLOT(phaseTrimUse_currentIndexChanged(int))); + int trimsMax = firmware->getCapability(ExtendedTrimsRange); + if (trimsMax == 0 || !model.extendedTrims) { + trimsMax = firmware->getCapability(TrimsRange); + } + trimsValue[i]->setProperty("index", i); + trimsValue[i]->setRange(-trimsMax, +trimsMax); connect(trimsValue[i], SIGNAL(valueChanged(int)), this, SLOT(phaseTrim_valueChanged())); trimsSlider[i]->setProperty("index", i); + trimsSlider[i]->setRange(-trimsMax, +trimsMax); + int chn = CONVERT_MODE(i + 1) - 1; + if (chn == 2/*TODO constant*/ && model.throttleReversed) + trimsSlider[i]->setInvertedAppearance(true); connect(trimsSlider[i], SIGNAL(valueChanged(int)), this, SLOT(phaseTrimSlider_valueChanged())); } // Rotary encoders if (reCount > 0) { QGridLayout *reLayout = new QGridLayout(ui->reGB); - for (int i=0; ireGB); - label->setText(tr("Rotary Encoder %1").arg(i+1)); + label->setText(tr("Rotary Encoder %1").arg(i + 1)); reLayout->addWidget(label, i, 0, 1, 1); if (phaseIdx > 0) { // RE link to another RE reUse[i] = new QComboBox(ui->reGB); reUse[i]->setProperty("index", i); Helpers::populateGvarUseCB(reUse[i], phaseIdx); - if (phase.rotaryEncoders[i] > 1024) { - reUse[i]->setCurrentIndex(phase.rotaryEncoders[i] - 1024); - } connect(reUse[i], SIGNAL(currentIndexChanged(int)), this, SLOT(phaseREUse_currentIndexChanged(int))); reLayout->addWidget(reUse[i], i, 1, 1, 1); } // RE value reValues[i] = new QSpinBox(ui->reGB); reValues[i]->setProperty("index", i); - reValues[i]->setMinimum(-1024); - reValues[i]->setMaximum(1024); + reValues[i]->setMinimum(RENC_MIN_VALUE); + reValues[i]->setMaximum(RENC_MAX_VALUE); connect(reValues[i], SIGNAL(editingFinished()), this, SLOT(phaseREValue_editingFinished())); reLayout->addWidget(reValues[i], i, 2, 1, 1); } @@ -206,15 +212,16 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI gvLayout->addWidget(popupLabel, 0, headerCol++, 1, 1); } - for (int i=0; igvGB); - label->setText(tr("GVAR%1").arg(i+1)); + label->setText(tr("GVAR%1").arg(i + 1)); label->setProperty("index", i); label->setContextMenuPolicy(Qt::CustomContextMenu); - connect(label, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(gvLabel_customContextMenuRequested(const QPoint &))); - gvLayout->addWidget(label, i+1, col++, 1, 1); + label->setToolTip(tr("Popup menu available")); + connect(label, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(gvOnCustomContextMenuRequested(const QPoint &))); + gvLayout->addWidget(label, i + 1, col++, 1, 1); // GVar name int nameLen = firmware->getCapability(GvarsName); if (nameLen > 0) { @@ -222,24 +229,21 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI gvNames[i]->setProperty("index", i); gvNames[i]->setMaxLength(nameLen); connect(gvNames[i], SIGNAL(editingFinished()), this, SLOT(GVName_editingFinished())); - gvLayout->addWidget(gvNames[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvNames[i], i + 1, col++, 1, 1); } if (phaseIdx > 0) { // GVar link to another GVar gvUse[i] = new QComboBox(ui->gvGB); gvUse[i]->setProperty("index", i); Helpers::populateGvarUseCB(gvUse[i], phaseIdx); - if (phase.gvars[i] > GVAR_MAX_VALUE) { - gvUse[i]->setCurrentIndex(phase.gvars[i] - GVAR_MAX_VALUE); - } connect(gvUse[i], SIGNAL(currentIndexChanged(int)), this, SLOT(phaseGVUse_currentIndexChanged(int))); - gvLayout->addWidget(gvUse[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvUse[i], i + 1, col++, 1, 1); } // GVar value gvValues[i] = new QDoubleSpinBox(ui->gvGB); gvValues[i]->setProperty("index", i); connect(gvValues[i], SIGNAL(editingFinished()), this, SLOT(phaseGVValue_editingFinished())); - gvLayout->addWidget(gvValues[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvValues[i], i + 1, col++, 1, 1); if (IS_HORUS_OR_TARANIS(board) && phaseIdx == 0) { // GVar unit @@ -247,33 +251,33 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI gvUnit[i]->setProperty("index", i); populateGvarUnitCB(gvUnit[i]); connect(gvUnit[i], SIGNAL(currentIndexChanged(int)), this, SLOT(phaseGVUnit_currentIndexChanged(int))); - gvLayout->addWidget(gvUnit[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvUnit[i], i + 1, col++, 1, 1); // GVar precision gvPrec[i] = new QComboBox(ui->gvGB); gvPrec[i]->setProperty("index", i); populateGvarPrecCB(gvPrec[i]); connect(gvPrec[i], SIGNAL(currentIndexChanged(int)), this, SLOT(phaseGVPrec_currentIndexChanged(int))); - gvLayout->addWidget(gvPrec[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvPrec[i], i + 1, col++, 1, 1); // GVar min gvMin[i] = new QDoubleSpinBox(ui->gvGB); gvMin[i]->setProperty("index", i); connect(gvMin[i], SIGNAL(editingFinished()), this, SLOT(phaseGVMin_editingFinished())); - gvLayout->addWidget(gvMin[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvMin[i], i + 1, col++, 1, 1); // GVar max gvMax[i] = new QDoubleSpinBox(ui->gvGB); gvMax[i]->setProperty("index", i); connect(gvMax[i], SIGNAL(editingFinished()), this, SLOT(phaseGVMax_editingFinished())); - gvLayout->addWidget(gvMax[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvMax[i], i + 1, col++, 1, 1); // Popups gvPopups[i] = new QCheckBox(ui->gvGB); gvPopups[i]->setProperty("index", i); //gvPopups[i]->setText(tr("Popup enabled")); connect(gvPopups[i], SIGNAL(toggled(bool)), this, SLOT(phaseGVPopupToggled(bool))); - gvLayout->addWidget(gvPopups[i], i+1, col++, 1, 1); + gvLayout->addWidget(gvPopups[i], i + 1, col++, 1, 1); } } } @@ -302,45 +306,35 @@ void FlightModePanel::update() ui->fadeOut->setValue(float(phase.fadeOut)/scale); for (int i = 0; i < getBoardCapability(firmware->getBoard(), Board::NumTrims); i++) { - int trimsMax = firmware->getCapability(ExtendedTrimsRange); - if (trimsMax == 0 || !model->extendedTrims) { - trimsMax = firmware->getCapability(TrimsRange); - } - trimsSlider[i]->setRange(-trimsMax, +trimsMax); - trimsValue[i]->setRange(-trimsMax, +trimsMax); - int chn = CONVERT_MODE(i+1)-1; - if (chn == 2/*TODO constant*/ && model->throttleReversed) - trimsSlider[i]->setInvertedAppearance(true); trimUpdate(i); } - for (int i=0; isetDisabled(false); - int idx = phase.rotaryEncoders[i]; - FlightModeData *phasere = &phase; - while (idx > 1024) { - int nextPhase = idx - 1025; - if (nextPhase >= phaseIdx) nextPhase += 1; - phasere = &model->flightModeData[nextPhase]; - idx = phasere->rotaryEncoders[i]; - reValues[i]->setDisabled(true); - } - reValues[i]->setValue(phasere->rotaryEncoders[i]); + for (int i = 0; i < reCount; i++) { + updateRotaryEncoder(i); } + + emit nameModified(); } + void FlightModePanel::updateGVar(int index) { lock = true; if (firmware->getCapability(GvarsName) > 0) { gvNames[index]->setText(model->gvarData[index].name); } + if (phaseIdx > 0) { + if (model->isGVarLinked(phaseIdx, index)) + gvUse[index]->setCurrentIndex(phase.gvars[index] - GVAR_MAX_VALUE); + else + gvUse[index]->setCurrentIndex(0); + } gvValues[index]->setDisabled(model->isGVarLinked(phaseIdx, index)); - setGVSB(gvValues[index], model->gvarData[index].getMin(), model->gvarData[index].getMax(), model->getGVarFieldValue(phaseIdx, index)); - if (IS_HORUS_OR_TARANIS(getCurrentBoard()) && phaseIdx == 0) { + setGVSB(gvValues[index], model->gvarData[index].getMin(), model->gvarData[index].getMax(), model->getGVarValue(phaseIdx, index)); + if (IS_HORUS_OR_TARANIS(board) && phaseIdx == 0) { gvUnit[index]->setCurrentIndex(model->gvarData[index].unit); gvPrec[index]->setCurrentIndex(model->gvarData[index].prec); setGVSB(gvMin[index], GVAR_MIN_VALUE, model->gvarData[index].getMax(), model->gvarData[index].getMin()); @@ -362,6 +356,20 @@ void FlightModePanel::setGVSB(QDoubleSpinBox * sb, int min, int max, int val) sb->setValue(val * mul); } +void FlightModePanel::updateRotaryEncoder(int index) +{ + lock = true; + if (phaseIdx > 0) { + if (model->isREncLinked(phaseIdx, index)) + reUse[index]->setCurrentIndex(phase.rotaryEncoders[index] - RENC_MAX_VALUE); + else + reUse[index]->setCurrentIndex(0); + } + reValues[index]->setDisabled(model->isREncLinked(phaseIdx, index)); + reValues[index]->setValue(model->getREncValue(phaseIdx, index)); + lock = false; +} + // TODO: pull units from GVarData void FlightModePanel::populateGvarUnitCB(QComboBox * cb) { @@ -380,45 +388,44 @@ void FlightModePanel::populateGvarPrecCB(QComboBox * cb) void FlightModePanel::phaseName_editingFinished() { - QLineEdit *lineEdit = qobject_cast(sender()); - strcpy(phase.name, lineEdit->text().toLatin1()); - emit modified(); - emit nameModified(); + QLineEdit *lineEdit = qobject_cast(sender()); + strcpy(phase.name, lineEdit->text().toLatin1()); + emit modified(); + emit nameModified(); } void FlightModePanel::phaseSwitchChanged(int index) { - if (lock) - return; - - bool ok; - const RawSwitch rs(ui->swtch->itemData(index).toInt(&ok)); - if (ok && phase.swtch.toValue() != rs.toValue()) { - phase.swtch = rs; - emit modified(); + if (!lock) { + bool ok; + const RawSwitch rs(ui->swtch->itemData(index).toInt(&ok)); + if (ok && phase.swtch.toValue() != rs.toValue()) { + phase.swtch = rs; + emit modified(); + } } } void FlightModePanel::phaseFadeIn_editingFinished() { - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int scale = firmware->getCapability(SlowScale); - phase.fadeIn = round(spinBox->value()*scale); - emit modified(); + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int scale = firmware->getCapability(SlowScale); + phase.fadeIn = round(spinBox->value()*scale); + emit modified(); } void FlightModePanel::phaseFadeOut_editingFinished() { - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int scale = firmware->getCapability(SlowScale); - phase.fadeOut = round(spinBox->value()*scale); - emit modified(); + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int scale = firmware->getCapability(SlowScale); + phase.fadeOut = round(spinBox->value()*scale); + emit modified(); } void FlightModePanel::trimUpdate(unsigned int trim) { lock = true; - int chn = CONVERT_MODE(trim+1)-1; + int chn = CONVERT_MODE(trim + 1) - 1; int value = model->getTrimValue(phaseIdx, chn); trimsSlider[trim]->setValue(value); trimsValue[trim]->setValue(value); @@ -428,9 +435,8 @@ void FlightModePanel::trimUpdate(unsigned int trim) trimsSlider[trim]->setEnabled(false); } else { - Board::Type board = firmware->getBoard(); if (IS_HORUS_OR_TARANIS(board)) - trimsUse[trim]->setCurrentIndex(1 + 2*phase.trimRef[chn] + phase.trimMode[chn] - (phase.trimRef[chn] > phaseIdx ? 1 : 0)); + trimsUse[trim]->setCurrentIndex(1 + 2 * phase.trimRef[chn] + phase.trimMode[chn] - (phase.trimRef[chn] > phaseIdx ? 1 : 0)); else trimsUse[trim]->setCurrentIndex(phase.trimRef[chn]); if (phaseIdx == 0 || phase.trimRef[chn] == phaseIdx || (IS_HORUS_OR_TARANIS(board) && phase.trimMode[chn] != 0)) { @@ -451,6 +457,7 @@ void FlightModePanel::phaseGVValue_editingFinished() QDoubleSpinBox *spinBox = qobject_cast(sender()); int gvar = spinBox->property("index").toInt(); phase.gvars[gvar] = spinBox->value() * model->gvarData[gvar].multiplierSet(); + emit datachanged(); emit modified(); } } @@ -462,6 +469,7 @@ void FlightModePanel::GVName_editingFinished() int gvar = lineedit->property("index").toInt(); memset(&model->gvarData[gvar].name, 0, sizeof(model->gvarData[gvar].name)); strcpy(model->gvarData[gvar].name, lineedit->text().toLatin1()); + emit datachanged(); emit modified(); } } @@ -478,7 +486,9 @@ void FlightModePanel::phaseGVUse_currentIndexChanged(int index) else { phase.gvars[gvar] = GVAR_MAX_VALUE + index; } - updateGVar(gvar); + if (model->isGVarLinkedCircular(phaseIdx, gvar)) + QMessageBox::warning(this, "Companion", tr("Warning: Global variable links back to itself. Flight Mode 0 value used.")); + emit datachanged(); emit modified(); lock = false; } @@ -490,8 +500,8 @@ void FlightModePanel::phaseGVUnit_currentIndexChanged(int index) QComboBox *comboBox = qobject_cast(sender()); int gvar = comboBox->property("index").toInt(); model->gvarData[gvar].unit = index; + emit datachanged(); emit modified(); - updateGVar(gvar); } } @@ -501,8 +511,8 @@ void FlightModePanel::phaseGVPrec_currentIndexChanged(int index) QComboBox *comboBox = qobject_cast(sender()); int gvar = comboBox->property("index").toInt(); model->gvarData[gvar].prec = index; + emit datachanged(); emit modified(); - updateGVar(gvar); } } @@ -513,19 +523,19 @@ void FlightModePanel::phaseGVMin_editingFinished() int gvar = spinBox->property("index").toInt(); model->gvarData[gvar].setMin(spinBox->value()); if (!model->isGVarLinked(phaseIdx, gvar)) { - if (model->getGVarFieldValuePrec(phaseIdx, gvar) < spinBox->value()) { + if (model->getGVarValuePrec(phaseIdx, gvar) < spinBox->value()) { phase.gvars[gvar] = model->gvarData[gvar].getMin(); } } - for (int x=1; xgetCapability(FlightModes); x++) { + for (int x = 1; x < fmCount; x++) { if (!model->isGVarLinked(x, gvar)) { if (model->flightModeData[x].gvars[gvar] < model->gvarData[gvar].getMin()) { model->flightModeData[x].gvars[gvar] = model->gvarData[gvar].getMin(); } } } + emit datachanged(); emit modified(); - updateGVar(gvar); } } @@ -536,19 +546,19 @@ void FlightModePanel::phaseGVMax_editingFinished() int gvar = spinBox->property("index").toInt(); model->gvarData[gvar].setMax(spinBox->value()); if (!model->isGVarLinked(phaseIdx, gvar)) { - if (model->getGVarFieldValuePrec(phaseIdx, gvar) > spinBox->value()) { + if (model->getGVarValuePrec(phaseIdx, gvar) > spinBox->value()) { phase.gvars[gvar] = model->gvarData[gvar].getMax(); } } - for (int x=1; xgetCapability(FlightModes); x++) { + for (int x = 1; x < fmCount; x++) { if (!model->isGVarLinked(x, gvar)) { if (model->flightModeData[x].gvars[gvar] > model->gvarData[gvar].getMax()) { model->flightModeData[x].gvars[gvar] = model->gvarData[gvar].getMax(); } } } + emit datachanged(); emit modified(); - updateGVar(gvar); } } @@ -582,11 +592,13 @@ void FlightModePanel::phaseREUse_currentIndexChanged(int index) phase.rotaryEncoders[re] = 0; } else { - phase.rotaryEncoders[re] = 1024 + index; ; + phase.rotaryEncoders[re] = RENC_MAX_VALUE + index; ; } update(); - lock = false; + if (model->isREncLinkedCircular(phaseIdx, re)) + QMessageBox::warning(this, "Companion", tr("Warning: Rotary encoder links back to itself. Flight Mode 0 value used.")); emit modified(); + lock = false; } } @@ -595,7 +607,7 @@ void FlightModePanel::phaseTrimUse_currentIndexChanged(int index) if (!lock) { QComboBox *comboBox = qobject_cast(sender()); int trim = comboBox->property("index").toInt(); - int chn = CONVERT_MODE(trim+1)-1; + int chn = CONVERT_MODE(trim + 1) - 1; int data = comboBox->itemData(index).toInt(); if (data < 0) { phase.trimMode[chn] = -1; @@ -603,7 +615,6 @@ void FlightModePanel::phaseTrimUse_currentIndexChanged(int index) phase.trim[chn] = 0; } else { - Board::Type board = firmware->getBoard(); if (IS_HORUS_OR_TARANIS(board)) { phase.trimMode[chn] = data % 2; phase.trimRef[chn] = data / 2; @@ -624,7 +635,7 @@ void FlightModePanel::phaseTrim_valueChanged() if (!lock) { QSpinBox *spinBox = qobject_cast(sender()); int trim = spinBox->property("index").toInt(); - int chn = CONVERT_MODE(trim+1)-1; + int chn = CONVERT_MODE(trim + 1) - 1; int value = spinBox->value(); model->setTrimValue(phaseIdx, chn, value); lock = true; @@ -639,7 +650,7 @@ void FlightModePanel::phaseTrimSlider_valueChanged() if (!lock) { QSlider *slider = qobject_cast(sender()); int trim = slider->property("index").toInt(); - int chn = CONVERT_MODE(trim+1)-1; + int chn = CONVERT_MODE(trim + 1) - 1; int value = slider->value(); model->setTrimValue(phaseIdx, chn, value); lock = true; @@ -649,78 +660,638 @@ void FlightModePanel::phaseTrimSlider_valueChanged() } } -void FlightModePanel::name_customContextMenuRequested(const QPoint & pos) +void FlightModePanel::onCustomContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); QPoint globalPos = label->mapToGlobal(pos); + QMenu contextMenu; - contextMenu.addAction(CompanionIcon("clear.png"), tr("&Clear"),this,SLOT(fmClear()),tr("Clear")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"), this, SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"), this, SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"), this, SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"), this, SLOT(cmClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"), this, SLOT(cmInsert()))->setEnabled(insertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"), this, SLOT(cmDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(cmMoveUp()))->setEnabled(moveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(cmMoveDown()))->setEnabled(moveDownAllowed()); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"), this, SLOT(cmClearAll()))->setEnabled(phaseIdx == 0); + contextMenu.exec(globalPos); } -void FlightModePanel::fmClear() +bool FlightModePanel::hasClipboardData(QByteArray * data) const { - int res = QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all current Flight Mode properties?"), QMessageBox::Yes | QMessageBox::No); - if (res == QMessageBox::Yes) { - phase.clear(phaseIdx); - if (phaseIdx == 0) { - if (IS_HORUS_OR_TARANIS(getCurrentBoard())) { - for (int i=0; i < gvCount; ++i) { - model->gvarData[i].clear(); + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_FLIGHTMODE)) { + if (data) + data->append(mimeData->data(MIMETYPE_FLIGHTMODE)); + return true; + } + return false; +} + +bool FlightModePanel::insertAllowed() const +{ + return ((phaseIdx < fmCount - 1) && (model->flightModeData[fmCount - 1].isEmpty(fmCount - 1))); +} + +bool FlightModePanel::moveDownAllowed() const +{ + return phaseIdx < fmCount - 1; +} + +bool FlightModePanel::moveUpAllowed() const +{ + return phaseIdx > 0; +} + +void FlightModePanel::cmClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Flight Mode. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + phase.clear(phaseIdx); + + if (phaseIdx == 0) { + for (int i = 0; i < gvCount; i++) { + model->gvarData[i].clear(); + for (int j = 0; j < fmCount; j++) { + FlightModeData *fm = &model->flightModeData[j]; + fm->gvars[i] = fm->linkedGVarFlightModeZero(j); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_CLEAR, i); + } + } + else { + QComboBox * pswtch = ui->swtch; + RawSwitch item = RawSwitch(SWITCH_TYPE_NONE); + pswtch->setCurrentIndex(pswtch->findText(item.toString())); + for (int i = 0; i < gvCount; i++) { + phase.gvars[i] = phase.linkedGVarFlightModeZero(phaseIdx); + } + for (int i = 0; i < reCount; i++) { + phase.rotaryEncoders[i] = phase.linkedREncFlightModeZero(phaseIdx); + } + } + + model->updateAllReferences(ModelData::REF_UPD_TYPE_FLIGHT_MODE, ModelData::REF_UPD_ACT_CLEAR, phaseIdx); + + emit datachanged(); + emit modified(); +} + +void FlightModePanel::cmClearAll() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Flight Modes. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int j = 0; j < fmCount; j++) { + FlightModeData *fm = &model->flightModeData[j]; + fm->clear(j); + for (int i = 0; i < gvCount; i++) { + fm->gvars[i] = fm->linkedGVarFlightModeZero(j); + } + for (int i = 0; i < reCount; i++) { + fm->rotaryEncoders[i] = fm->linkedREncFlightModeZero(j); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_FLIGHT_MODE, ModelData::REF_UPD_ACT_CLEAR, j); + } + + for (int i = 0; i < gvCount; i++) { + model->gvarData[i].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_CLEAR, i); + } + + emit datachanged(); + emit modified(); +} + +void FlightModePanel::cmCopy() +{ + QByteArray data; + data.append((char*)&model->flightModeData[phaseIdx], sizeof(FlightModeData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData(MIMETYPE_FLIGHTMODE, data); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void FlightModePanel::cmCut() +{ + cmCopy(); + cmClear(); +} + +void FlightModePanel::cmDelete() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Flight Mode. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + const int maxidx = fmCount - 1; + + memmove(&model->flightModeData[phaseIdx], &model->flightModeData[phaseIdx + 1], (CPN_MAX_FLIGHT_MODES - (phaseIdx + 1)) * sizeof(FlightModeData)); + model->flightModeData[maxidx].clear(maxidx); + + for (int j = 0; j < maxidx; j++) { + FlightModeData *fm = &model->flightModeData[j]; + + if (phaseIdx == 0 && j == 0) + fm->swtch = RawSwitch(0); + + for (int i = 0; i < trimCount; i++) { + if (phaseIdx == 0 && j == 0) { + fm->trimMode[i] = 0; + fm->trimRef[i] = 0; + } + else if (fm->trimRef[i] > phaseIdx && fm->trimMode[i] > -1) { + fm->trimRef[i]--; + } + else if (fm->trimRef[i] == phaseIdx) { + fm->trimMode[i] = 0; + fm->trimRef[i] = 0; + fm->trim[i] = 0; + } + } + + for (int i = 0; i < gvCount; i++) { + if (model->isGVarLinked(j, i)) { + int idx = model->getGVarFlightModeIndex(j, i); + if (phaseIdx == 0 && j == 0) + model->setGVarFlightModeIndexToValue(j, i, j); + else if (idx > phaseIdx) + model->setGVarFlightModeIndexToValue(j, i, idx - 1); + else if (idx == phaseIdx) + model->setGVarFlightModeIndexToValue(j, i, 0); + } + } + + for (int i = 0; i < reCount; i++) { + if (model->isREncLinked(j, i)) { + int idx = model->getREncFlightModeIndex(j, i); + if (phaseIdx == 0 && j == 0) + model->setREncFlightModeIndexToValue(j, i, j); + else if (idx > phaseIdx) + model->setREncFlightModeIndexToValue(j, i, idx - 1); + else if (idx == phaseIdx) + model->setREncFlightModeIndexToValue(j, i, 0); + } + } + } + + model->updateAllReferences(ModelData::REF_UPD_TYPE_FLIGHT_MODE, ModelData::REF_UPD_ACT_SHIFT, phaseIdx, 0, -1); + + emit datachanged(); + emit modified(); +} + +void FlightModePanel::cmInsert() +{ + const int maxidx = fmCount - 1; + + memmove(&model->flightModeData[phaseIdx + 1], &model->flightModeData[phaseIdx], (CPN_MAX_FLIGHT_MODES - (phaseIdx + 1)) * sizeof(FlightModeData)); + model->flightModeData[phaseIdx].clear(phaseIdx); + + for (int j = maxidx; j > 0; j--) { + FlightModeData *fm = &model->flightModeData[j]; + + for (int i = 0; i < trimCount; i++) { + if (phaseIdx == 0 and j == 1) + fm->trimRef[i] = j; + else if (fm->trimRef[i] >= phaseIdx) { + if (fm->trimRef[i] < maxidx) + fm->trimRef[i]++; + else { + fm->trimMode[i] = 0; + fm->trimRef[i] = 0; + fm->trim[i] = 0; } } } - else { - lock = true; - QComboBox * pswtch = ui->swtch; - RawSwitch item = RawSwitch(SWITCH_TYPE_NONE); - pswtch->setCurrentIndex(pswtch->findText(item.toString())); - if (gvCount > 0 && (firmware->getCapability(GvarsFlightModes))) { - for (int i=0; isetCurrentIndex((phase.gvars[i] > GVAR_MAX_VALUE ? (phase.gvars[i] - GVAR_MAX_VALUE) : 0)); - } + + for (int i = 0; i < gvCount; i++) { + if (model->isGVarLinked(j, i)) { + int idx = model->getGVarFlightModeIndex(j, i); + if (phaseIdx == 0 and j == 1) + model->setGVarFlightModeIndexToValue(j, i, j); + else if (idx >= phaseIdx) + model->setGVarFlightModeIndexToValue(j, i, idx + 1); } - for (int i=0; isetCurrentIndex((phase.rotaryEncoders[i] > GVAR_MAX_VALUE ? (phase.rotaryEncoders[i] - GVAR_MAX_VALUE) : 0)); - } - lock = false; } - update(); + + for (int i = 0; i < reCount; i++) { + if (model->isREncLinked(j, i)) { + int idx = model->getREncFlightModeIndex(j, i); + if (phaseIdx == 0 and j == 1) + model->setREncFlightModeIndexToValue(j, i, j); + else if (idx >= phaseIdx) + model->setREncFlightModeIndexToValue(j, i, idx + 1); + } + } + } + + model->updateAllReferences(ModelData::REF_UPD_TYPE_FLIGHT_MODE, ModelData::REF_UPD_ACT_SHIFT, phaseIdx, 0, 1); + + emit datachanged(); + emit modified(); +} + +void FlightModePanel::cmMoveDown() +{ + swapData(phaseIdx, phaseIdx + 1); +} + +void FlightModePanel::cmMoveUp() +{ + swapData(phaseIdx, phaseIdx - 1); +} + +void FlightModePanel::cmPaste() +{ + QByteArray data; + if (hasClipboardData(&data)) { + FlightModeData *fm = &model->flightModeData[phaseIdx]; + memcpy(fm, data.constData(), sizeof(FlightModeData)); + + if (phaseIdx == 0) + fm->swtch = RawSwitch(0); + + for (int i = 0; i < trimCount; i++) { + if (phaseIdx == 0) { + fm->trimMode[i] = 0; + fm->trimRef[i] = 0; + } + } + + // TODO fix up linked GVs but need to know source FM index to make adjustments + for (int i = 0; i < gvCount; i++) { + if (model->isGVarLinked(phaseIdx, i)) { + int linkedidx = model->getGVarFlightModeIndex(phaseIdx, i); + if (phaseIdx == 0 || linkedidx == phaseIdx) + model->setGVarFlightModeIndexToValue(phaseIdx, i, phaseIdx); + } + } + + // TODO fix up linked REs but need to know source FM index to make adjustments + for (int i = 0; i < reCount; i++) { + if (model->isREncLinked(phaseIdx, i)) { + int linkedidx = model->getREncFlightModeIndex(phaseIdx, i); + if (phaseIdx == 0 || linkedidx == phaseIdx) + model->setREncFlightModeIndexToValue(phaseIdx, i, phaseIdx); + } + } + + emit datachanged(); emit modified(); - emit nameModified(); } } -void FlightModePanel::gvLabel_customContextMenuRequested(const QPoint & pos) +void FlightModePanel::swapData(int idx1, int idx2) +{ + if (idx1 == idx2) + return; + + const int shift = idx2 - idx1; + + FlightModeData fmdtmp = model->flightModeData[idx2]; + FlightModeData *fmd1 = &model->flightModeData[idx1]; + FlightModeData *fmd2 = &model->flightModeData[idx2]; + memcpy(fmd2, fmd1, sizeof(FlightModeData)); + memcpy(fmd1, &fmdtmp, sizeof(FlightModeData)); + + if (idx1 == 0) + fmd1->swtch = RawSwitch(0); + else if (idx2 == 0) + fmd2->swtch = RawSwitch(0); + + for (int i = 0; i < trimCount; i++) { + if (fmd1->trimRef[i] == idx1) + fmd1->trimRef[i] = idx2; + else if (fmd1->trimRef[i] == idx2) + fmd1->trimRef[i] = idx1; + + if (fmd2->trimRef[i] == idx1) + fmd2->trimRef[i] = idx2; + else if (fmd2->trimRef[i] == idx2) + fmd2->trimRef[i] = idx1; + + if (idx1 == 0) { + fmd1->trimMode[i] = 0; + fmd1->trimRef[i] = 0; + } + else if (idx2 == 0) { + fmd2->trimMode[i] = 0; + fmd2->trimRef[i] = 0; + } + } + + for (int i = 0; i < gvCount; i++) { + if (model->isGVarLinked(idx1, i)) { + int linkedidx = model->getGVarFlightModeIndex(idx1, i); + if (linkedidx == idx1) + model->setGVarFlightModeIndexToValue(idx1, i, idx2 - shift); + else if (linkedidx == idx2) + model->setGVarFlightModeIndexToValue(idx1, i, idx1 + shift); + else + model->setGVarFlightModeIndexToValue(idx1, i, linkedidx); + } + + if (model->isGVarLinked(idx2, i)) { + int linkedidx = model->getGVarFlightModeIndex(idx2, i); + if (linkedidx == idx1) + model->setGVarFlightModeIndexToValue(idx2, i, idx2 - shift); + else if (linkedidx == idx2) + model->setGVarFlightModeIndexToValue(idx2, i, idx1 + shift); + else + model->setGVarFlightModeIndexToValue(idx2, i, linkedidx); + } + } + + for (int i = 0; i < reCount; i++) { + if (model->isREncLinked(idx1, i)) { + int linkedidx = model->getREncFlightModeIndex(idx1, i); + if (linkedidx == idx1) + model->setREncFlightModeIndexToValue(idx1, i, idx2 - shift); + else if (linkedidx == idx2) + model->setREncFlightModeIndexToValue(idx1, i, idx1 + shift); + else + model->setREncFlightModeIndexToValue(idx1, i, linkedidx); + } + + if (model->isREncLinked(idx2, i)) { + int linkedidx = model->getREncFlightModeIndex(idx2, i); + if (linkedidx == idx1) + model->setREncFlightModeIndexToValue(idx2, i, idx2 - shift); + else if (linkedidx == idx2) + model->setREncFlightModeIndexToValue(idx2, i, idx1 + shift); + else + model->setREncFlightModeIndexToValue(idx2, i, linkedidx); + } + } + + model->updateAllReferences(ModelData::REF_UPD_TYPE_FLIGHT_MODE, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + emit datachanged(); + emit modified(); +} + +void FlightModePanel::gvOnCustomContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); gvIdx = label->property("index").toInt(); QPoint globalPos = label->mapToGlobal(pos); + QMenu contextMenu; - contextMenu.addAction(CompanionIcon("clear.png"), tr("&Clear"),this,SLOT(gvClear()),tr("Clear")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"), this, SLOT(gvCmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"), this, SLOT(gvCmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"), this, SLOT(gvCmPaste()))->setEnabled(gvHasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"), this, SLOT(gvCmClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"), this, SLOT(gvCmInsert()))->setEnabled(gvInsertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"), this, SLOT(gvCmDelete()))->setEnabled(gvDeleteAllowed()); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(gvCmMoveUp()))->setEnabled(gvMoveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(gvCmMoveDown()))->setEnabled(gvMoveDownAllowed()); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"), this, SLOT(gvCmClearAll())); + contextMenu.exec(globalPos); } -void FlightModePanel::gvClear() +bool FlightModePanel::gvHasClipboardData() const +{ + if (gvHasDefnClipboardData() || gvHasValueClipboardData()) + return true; + return false; +} + +bool FlightModePanel::gvHasDefnClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (phaseIdx == 0 && mimeData->hasFormat(MIMETYPE_GVAR_PARAMS)) { + if (data) { + data->clear(); + data->append(mimeData->data(MIMETYPE_GVAR_PARAMS)); + } + return true; + } + return false; +} + +bool FlightModePanel::gvHasValueClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_GVAR_VALUE)) { + if (data) { + data->clear(); + data->append(mimeData->data(MIMETYPE_GVAR_VALUE)); + } + return true; + } + return false; +} + +bool FlightModePanel::gvDeleteAllowed() const +{ + return phaseIdx == 0; +} + +bool FlightModePanel::gvInsertAllowed() const +{ + bool ret = true; + if (phaseIdx == 0) { + if (!model->gvarData[gvCount - 1].isEmpty()) + ret = false; + for (int i = 0; i < fmCount; i++) { + if (model->flightModeData[i].gvars[gvCount - 1] != phase.linkedGVarFlightModeZero(i)) + ret = false; + } + } + else + ret = false; + + return ret; +} + +bool FlightModePanel::gvMoveDownAllowed() const +{ + return (phaseIdx == 0 && gvIdx < gvCount - 1); +} + +bool FlightModePanel::gvMoveUpAllowed() const +{ + return (phaseIdx == 0 && gvIdx > 0); +} + +void FlightModePanel::gvCmClear() { if (phaseIdx == 0) { - if (IS_HORUS_OR_TARANIS(getCurrentBoard())) { - model->gvarData[gvIdx].clear(); - phase.gvars[gvIdx] = 0; + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear selected Global Variable across all Flight Modes. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + model->gvarData[gvIdx].clear(); + for (int i = 0; i < fmCount; i++) { + model->flightModeData[i].gvars[gvIdx] = model->flightModeData[i].linkedGVarFlightModeZero(i); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_CLEAR, gvIdx); + } + else { + phase.gvars[gvIdx] = phase.linkedGVarFlightModeZero(phaseIdx); + } + emit datachanged(); + emit modified(); +} + +void FlightModePanel::gvCmClearAll() +{ + if (phaseIdx == 0) { + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Global Variables for all Flight Modes. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + for (int i = 0; i < gvCount; i++) { + model->gvarData[i].clear(); + for (int j = 0; j < fmCount; j++) { + model->flightModeData[j].gvars[i] = model->flightModeData[j].linkedGVarFlightModeZero(j); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_CLEAR, i); } } else { - lock = true; - if (gvCount > 0 && (firmware->getCapability(GvarsFlightModes))) { - phase.gvars[gvIdx] = GVAR_MAX_VALUE + 1; - gvUse[gvIdx]->setCurrentIndex(1); + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Global Variables for this Flight Mode. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + for (int i = 0; i < gvCount; i++) { + phase.gvars[i] = phase.linkedGVarFlightModeZero(phaseIdx); } - lock = false; } - update(); + emit datachanged(); emit modified(); } +void FlightModePanel::gvCmCopy() +{ + QMimeData *mimeData = new QMimeData; + QByteArray data; + if (phaseIdx == 0) { + data.append((char*)&model->gvarData[gvIdx], sizeof(GVarData)); + mimeData->setData(MIMETYPE_GVAR_PARAMS, data); + } + else { + mimeData->removeFormat(MIMETYPE_GVAR_PARAMS); + } + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); + int val = phase.gvars[gvIdx]; + if (model->isGVarLinked(phaseIdx, gvIdx)) + val = GVAR_MAX_VALUE + 1 + model->getGVarFlightModeIndex(phaseIdx, gvIdx); // store index in case paste is to another flight mode + data.setNum(val); + mimeData->setData(MIMETYPE_GVAR_VALUE, data); + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); +} + +void FlightModePanel::gvCmCut() +{ + gvCmCopy(); + if (phaseIdx > 0) { + gvCmClear(); + } + else { + model->gvarData[gvIdx].clear(); + phase.gvars[gvIdx] = 0; + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_CLEAR, gvIdx); + emit datachanged(); + emit modified(); + } +} + +void FlightModePanel::gvCmDelete() +{ + if (phaseIdx > 0) + return; + int maxidx = gvCount - 1; + for (int i = gvIdx; i < maxidx; i++) { + memcpy(&model->gvarData[i], &model->gvarData[i + 1], sizeof(GVarData)); + for (int j = 0; j < fmCount; j++) { + model->flightModeData[j].gvars[i] = model->flightModeData[j].gvars[i + 1]; + } + } + + model->gvarData[maxidx].clear(); + for (int j = 0; j < fmCount; j++) { + model->flightModeData[j].gvars[maxidx] = model->flightModeData[j].linkedGVarFlightModeZero(j); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_SHIFT, gvIdx, 0, -1); + emit datachanged(); + emit modified(); +} + +void FlightModePanel::gvCmInsert() +{ + for (int i = (gvCount - 1); i > gvIdx; i--) { + memcpy(&model->gvarData[i], &model->gvarData[i - 1], sizeof(GVarData)); + for (int j = 0; j < fmCount; j++) { + model->flightModeData[j].gvars[i] = model->flightModeData[j].gvars[i - 1]; + } + } + model->gvarData[gvIdx].clear(); + for (int j = 0; j < fmCount; j++) { + model->flightModeData[j].gvars[gvIdx] = model->flightModeData[j].linkedGVarFlightModeZero(j); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_SHIFT, gvIdx, 0, 1); + emit datachanged(); + emit modified(); +} + +void FlightModePanel::gvCmMoveDown() +{ + if (phaseIdx == 0) + gvSwapData(gvIdx, gvIdx + 1); +} + +void FlightModePanel::gvCmMoveUp() +{ + if (phaseIdx == 0) + gvSwapData(gvIdx, gvIdx - 1); +} + +void FlightModePanel::gvCmPaste() +{ + QByteArray data; + if (phaseIdx == 0 && gvHasDefnClipboardData(&data)) { + GVarData *gvd = &model->gvarData[gvIdx]; + memcpy(gvd, data.constData(), sizeof(GVarData)); + } + if (gvHasValueClipboardData(&data)) { + int val = data.toInt(); + if (val > GVAR_MAX_VALUE) { + if (phaseIdx > 0) + model->setGVarFlightModeIndexToValue(phaseIdx, gvIdx, val - (GVAR_MAX_VALUE + 1)); // index stored in clipboard + else + phase.gvars[gvIdx] = 0; + } + else + phase.gvars[gvIdx] = val; + } + emit datachanged(); + emit modified(); +} + +void FlightModePanel::gvSwapData(int idx1, int idx2) +{ + if (phaseIdx == 0 && idx1 != idx2) { + GVarData datatmp = model->gvarData[idx2]; + GVarData *data1 = &model->gvarData[idx1]; + GVarData *data2 = &model->gvarData[idx2]; + memcpy(data2, data1, sizeof(GVarData)); + memcpy(data1, &datatmp, sizeof(GVarData)); + for (int j = 0; j < fmCount; j++) { + int valtmp = model->flightModeData[j].gvars[idx2]; + model->flightModeData[j].gvars[idx2] = model->flightModeData[j].gvars[idx1]; + model->flightModeData[j].gvars[idx1] = valtmp; + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_GLOBAL_VARIABLE, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + emit datachanged(); + emit modified(); + } +} + /**********************************************************/ FlightModesPanel::FlightModesPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware): @@ -733,16 +1304,16 @@ FlightModesPanel::FlightModesPanel(QWidget * parent, ModelData & model, GeneralS QGridLayout * gridLayout = new QGridLayout(this); tabWidget = new QTabWidget(this); - for (int i=0; isetProperty("index", i); + connect(tab, &FlightModePanel::datachanged, this, &FlightModesPanel::update); connect(tab, &FlightModePanel::modified, this, &FlightModesPanel::modified); connect(tab, &FlightModePanel::nameModified, this, &FlightModesPanel::onPhaseNameChanged); connect(this, &FlightModesPanel::updated, tab, &FlightModePanel::update); tabWidget->addTab(tab, getTabName(i)); } gridLayout->addWidget(tabWidget, 0, 0, 1, 1); - connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(on_tabWidget_currentChanged(int))); } FlightModesPanel::~FlightModesPanel() diff --git a/companion/src/modeledit/flightmodes.h b/companion/src/modeledit/flightmodes.h index c5aa434fb..1986f1e46 100644 --- a/companion/src/modeledit/flightmodes.h +++ b/companion/src/modeledit/flightmodes.h @@ -26,6 +26,10 @@ class RawSwitchFilterItemModel; +constexpr char MIMETYPE_FLIGHTMODE[] = "application/x-companion-flightmode"; +constexpr char MIMETYPE_GVAR_PARAMS[] = "application/x-companion-gvar-params"; +constexpr char MIMETYPE_GVAR_VALUE[] = "application/x-companion-gvar-value"; + namespace Ui { class FlightMode; } @@ -42,6 +46,7 @@ class FlightModePanel : public ModelPanel signals: void nameModified(); + void datachanged(); private slots: void phaseName_editingFinished(); @@ -61,18 +66,36 @@ class FlightModePanel : public ModelPanel void phaseGVMax_editingFinished(); void phaseREValue_editingFinished(); void phaseREUse_currentIndexChanged(int index); - void name_customContextMenuRequested(const QPoint & pos); - void fmClear(); - void gvLabel_customContextMenuRequested(const QPoint & pos); - void gvClear(); + void onCustomContextMenuRequested(QPoint pos); + void cmClear(); + void cmClearAll(); + void cmCopy(); + void cmCut(); + void cmDelete(); + void cmInsert(); + void cmPaste(); + void cmMoveDown(); + void cmMoveUp(); + void gvOnCustomContextMenuRequested(QPoint pos); + void gvCmClear(); + void gvCmClearAll(); + void gvCmCopy(); + void gvCmCut(); + void gvCmDelete(); + void gvCmInsert(); + void gvCmPaste(); + void gvCmMoveDown(); + void gvCmMoveUp(); private: Ui::FlightMode *ui; int phaseIdx; FlightModeData & phase; + int fmCount; int reCount; int gvCount; int gvIdx; + int trimCount; QVector trimsLabel; QLineEdit * gvNames[CPN_MAX_GVARS]; QDoubleSpinBox * gvValues[CPN_MAX_GVARS]; @@ -88,12 +111,27 @@ class FlightModePanel : public ModelPanel QVector trimsValue; QVector trimsSlider; RawSwitchFilterItemModel * rawSwitchItemModel; + Board::Type board; void trimUpdate(unsigned int trim); void updateGVar(int index); + void updateRotaryEncoder(int index); void setGVSB(QDoubleSpinBox * spinBox, int min, int max, int val); void populateGvarUnitCB(QComboBox * cb); void populateGvarPrecCB(QComboBox * cb); + bool hasClipboardData(QByteArray * data = nullptr) const; + bool insertAllowed() const; + bool moveDownAllowed() const; + bool moveUpAllowed() const; + void swapData(int idx1, int idx2); + bool gvHasClipboardData() const; + bool gvHasDefnClipboardData(QByteArray * data = nullptr) const; + bool gvHasValueClipboardData(QByteArray * data = nullptr) const; + bool gvDeleteAllowed() const; + bool gvInsertAllowed() const; + bool gvMoveDownAllowed() const; + bool gvMoveUpAllowed() const; + void gvSwapData(int idx1, int idx2); }; class FlightModesPanel : public ModelPanel diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 27ca4c42f..a5220019e 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -47,18 +47,18 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g qbClear->setText(tr("Clear All Inputs")); qbClear->setIcon(CompanionIcon("clear.png")); - exposLayout->addWidget(ExposlistWidget,1,1,1,3); - exposLayout->addWidget(qbUp,2,1); - exposLayout->addWidget(qbClear,2,2); - exposLayout->addWidget(qbDown,2,3); + exposLayout->addWidget(ExposlistWidget, 1, 1, 1, 3); + exposLayout->addWidget(qbUp, 2, 1); + exposLayout->addWidget(qbClear, 2, 2); + exposLayout->addWidget(qbDown, 2, 3); connect(ExposlistWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(expolistWidget_customContextMenuRequested(QPoint))); connect(ExposlistWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(expolistWidget_doubleClicked(QModelIndex))); - connect(ExposlistWidget, SIGNAL(mimeDropped(int,const QMimeData*,Qt::DropAction)), this, SLOT(mimeExpoDropped(int, const QMimeData*, Qt::DropAction))); + connect(ExposlistWidget, SIGNAL(mimeDropped(int, const QMimeData*,Qt::DropAction)), this, SLOT(mimeExpoDropped(int, const QMimeData*, Qt::DropAction))); - connect(qbUp, SIGNAL(pressed()),SLOT(moveExpoUp())); - connect(qbDown, SIGNAL(pressed()),SLOT(moveExpoDown())); - connect(qbClear, SIGNAL(pressed()),SLOT(clearExpos())); + connect(qbUp, SIGNAL(pressed()), SLOT(moveExpoUp())); + connect(qbDown, SIGNAL(pressed()), SLOT(moveExpoDown())); + connect(qbClear, SIGNAL(pressed()), SLOT(clearExpos())); connect(ExposlistWidget, SIGNAL(keyWasPressed(QKeyEvent*)), this, SLOT(expolistWidget_KeyPress(QKeyEvent*))); } @@ -71,9 +71,9 @@ void InputsPanel::update() { lock = true; ExposlistWidget->clear(); - for (int i=0; i < inputsCount; ++i) { + for (int i = 0; i < inputsCount; ++i) { bool filled = false; - for (uint j=0; j < CPN_MAX_EXPOS; ++j) { + for (uint j = 0; j < CPN_MAX_EXPOS; ++j) { const ExpoData & ed = model->expoData[j]; if ((int)ed.chn == i && ed.mode) { AddInputLine(j); @@ -81,7 +81,7 @@ void InputsPanel::update() } } if (!filled) { - AddInputLine(-i-1); + AddInputLine(-i - 1); } } lock = false; @@ -108,9 +108,8 @@ void InputsPanel::AddInputLine(int dest) const ExpoData &md = model->expoData[dest]; qba.append((const char*)&md, sizeof(ExpoData)); destId = md.chn + 1; - const QVector expos = model->expos(md.chn); - newChan = (expos.constFirst() == &md); - hasSibs = (expos.constLast() != &md); + newChan = model->isExpoParent(dest); + hasSibs = (model->hasExpoChildren(dest) || model->hasExpoSiblings(dest)); } QListWidgetItem *itm = new QListWidgetItem(getInputText(dest, newChan)); itm->setData(Qt::UserRole, qba); @@ -133,10 +132,10 @@ QString InputsPanel::getInputText(int dest, bool newChan) { QString str; if (dest < 0) { - str = modelPrinter.printInputName(-dest-1); + str = modelPrinter.printInputName(-dest - 1); } else { - const ExpoData & input = model->expoData[dest]; + const ExpoData &input = model->expoData[dest]; const int nameChars = (firmware->getCapability(VirtualInputs) ? 10 : 4); if (newChan) str = QString("%1").arg(modelPrinter.printInputName(input.chn), -nameChars, QChar(' ')); @@ -150,14 +149,14 @@ QString InputsPanel::getInputText(int dest, bool newChan) bool InputsPanel::gm_insertExpo(int idx) { - if (idx<0 || idx>=CPN_MAX_EXPOS || model->expoData[CPN_MAX_EXPOS-1].mode > 0) { - QMessageBox::information(this, CPN_STR_APP_NAME, tr("Not enough available inputs!")); + if (idx < 0 || idx >= CPN_MAX_EXPOS || model->expoData[CPN_MAX_EXPOS-1].mode > 0) { + QMessageBox::information(this, CPN_STR_APP_NAME, tr("Not enough available Inputs!")); return false; } int chn = model->expoData[idx].chn; - ExpoData * newExpo = model->insertInput(idx); + ExpoData *newExpo = model->insertInput(idx); newExpo->chn = chn; newExpo->weight = 100; newExpo->mode = INPUT_MODE_BOTH; @@ -172,107 +171,107 @@ void InputsPanel::gm_deleteExpo(int index, bool clearName) void InputsPanel::gm_openExpo(int index) { - if(index<0 || index>=CPN_MAX_EXPOS) return; + if (index < 0 || index >= CPN_MAX_EXPOS) + return; - ExpoData mixd(model->expoData[index]); + ExpoData ed(model->expoData[index]); - QString inputName; + QString inputName; + if (firmware->getCapability(VirtualInputs)) + inputName = model->inputNames[ed.chn]; + + ExpoDialog *g = new ExpoDialog(this, *model, &ed, generalSettings, firmware, inputName); + if (g->exec()) { + model->expoData[index] = ed; if (firmware->getCapability(VirtualInputs)) - inputName = model->inputNames[mixd.chn]; - - ExpoDialog *g = new ExpoDialog(this, *model, &mixd, generalSettings, firmware, inputName); - if (g->exec()) { - model->expoData[index] = mixd; - if (firmware->getCapability(VirtualInputs)) - strncpy(model->inputNames[mixd.chn], inputName.toLatin1().data(), 4); - emit modified(); - update(); - } - else { - if (expoInserted) { - gm_deleteExpo(index); - } - expoInserted=false; - update(); + strncpy(model->inputNames[ed.chn], inputName.toLatin1().data(), INPUT_NAME_LEN); + emit modified(); + update(); + } + else { + if (expoInserted) { + gm_deleteExpo(index); } + expoInserted=false; + update(); + } } int InputsPanel::getExpoIndex(unsigned int dch) { - unsigned int i = 0; - while (model->expoData[i].chn<=dch && model->expoData[i].mode && iexpoData[i].chn <= dch && model->expoData[i].mode && i < CPN_MAX_EXPOS) + i++; + if (i == CPN_MAX_EXPOS) + return -1; + return i; } - QList InputsPanel::createExpoListFromSelected() { - QList list; - foreach(QListWidgetItem *item, ExposlistWidget->selectedItems()) { - int idx= item->data(Qt::UserRole).toByteArray().at(0); - if(idx>=0 && idx list; + foreach (QListWidgetItem *item, ExposlistWidget->selectedItems()) { + int idx = item->data(Qt::UserRole).toByteArray().at(0); + if (idx >= 0 && idx < CPN_MAX_EXPOS) + list << idx; + } + return list; } - void InputsPanel::setSelectedByExpoList(QList list) { - for(int i=0; icount(); i++) { - int t = ExposlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); - if(list.contains(t)) - ExposlistWidget->item(i)->setSelected(true); - } + for (int i = 0; i < ExposlistWidget->count(); i++) { + int t = ExposlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); + if (list.contains(t)) + ExposlistWidget->item(i)->setSelected(true); + } } void InputsPanel::exposDelete(bool ask) { - QList list = createExpoListFromSelected(); - if(list.isEmpty()) return; + QList list = createExpoListFromSelected(); + if (list.isEmpty()) + return; - QMessageBox::StandardButton ret = QMessageBox::No; + QMessageBox::StandardButton ret = QMessageBox::No; - if(ask) - ret = QMessageBox::warning(this, "companion", - tr("Delete Selected Inputs?"), - QMessageBox::Yes | QMessageBox::No); + if (ask) + ret = QMessageBox::warning(this, CPN_STR_APP_NAME, tr("Delete selected Inputs. Are you sure?"), QMessageBox::Yes | QMessageBox::No); - - if ((ret == QMessageBox::Yes) || (!ask)) { - exposDeleteList(list, ask); - emit modified(); - update(); - } + if ((ret == QMessageBox::Yes) || (!ask)) { + exposDeleteList(list, ask); + emit modified(); + update(); + } } void InputsPanel::exposCut() { - exposCopy(); - exposDelete(false); + exposCopy(); + exposDelete(false); } void InputsPanel::exposCopy() { - QList list = createExpoListFromSelected(); + QList list = createExpoListFromSelected(); - QByteArray mxData; - foreach(int idx, list) { - mxData.append((char*)&model->expoData[idx], sizeof(ExpoData)); - } + QByteArray exData; + foreach (int idx, list) { + exData.append((char*)&model->expoData[idx], sizeof(ExpoData)); + } - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion-expo", mxData); - QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); + QMimeData *mimeData = new QMimeData; + mimeData->setData(MIMETYPE_EXPO, exData); + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); } void InputsPanel::mimeExpoDropped(int index, const QMimeData *data, Qt::DropAction action) { int idx = ExposlistWidget->item(index)->data(Qt::UserRole).toByteArray().at(0); - if (action==Qt::CopyAction) { + if (action == Qt::CopyAction) { pasteExpoMimeData(data, idx); } - else if (action==Qt::MoveAction) { + else if (action == Qt::MoveAction) { QList list = createExpoListFromSelected(); exposDeleteList(list, false); foreach (const int del, list) { @@ -285,30 +284,31 @@ void InputsPanel::mimeExpoDropped(int index, const QMimeData *data, Qt::DropActi void InputsPanel::pasteExpoMimeData(const QMimeData * mimeData, int destIdx) { - if (mimeData->hasFormat("application/x-companion-expo")) { - int idx; // mixer index + if (mimeData->hasFormat(MIMETYPE_EXPO)) { + int idx; // expo index int dch; if (destIdx < 0) { dch = -destIdx - 1; idx = getExpoIndex(dch) - 1; //get expo index to insert - } else { + } + else { idx = destIdx; dch = model->expoData[idx].chn; } - QByteArray mxData = mimeData->data("application/x-companion-expo"); + QByteArray exData = mimeData->data(MIMETYPE_EXPO); int i = 0; - while (i < mxData.size()) { + while (i < exData.size()) { idx++; if (!gm_insertExpo(idx)) break; - ExpoData *md = &model->expoData[idx]; - memcpy(md, mxData.mid(i, sizeof(ExpoData)).constData(), sizeof(ExpoData)); - const int oldChan = md->chn; - md->chn = dch; - maybeCopyInputName(oldChan, md->chn); + ExpoData *ed = &model->expoData[idx]; + memcpy(ed, exData.mid(i, sizeof(ExpoData)).constData(), sizeof(ExpoData)); + const int oldChan = ed->chn; + ed->chn = dch; + maybeCopyInputName(oldChan, ed->chn); i += sizeof(ExpoData); } @@ -334,83 +334,104 @@ void InputsPanel::exposDuplicate() exposPaste(); } - void InputsPanel::expoOpen(QListWidgetItem *item) { - if (!item) - item = ExposlistWidget->currentItem(); + if (!item) + item = ExposlistWidget->currentItem(); - int idx = item->data(Qt::UserRole).toByteArray().at(0); - if (idx<0) { - int ch = -idx-1; - idx = getExpoIndex(ch); // get expo index to insert - if (!gm_insertExpo(idx)) - return; - model->expoData[idx].chn = ch; - expoInserted=true; - } else { - expoInserted=false; - } - gm_openExpo(idx); + int idx = item->data(Qt::UserRole).toByteArray().at(0); + if (idx < 0) { + int ch = -idx - 1; + idx = getExpoIndex(ch); // get expo index to insert + if (!gm_insertExpo(idx)) + return; + model->expoData[idx].chn = ch; + expoInserted = true; + } + else { + expoInserted = false; + } + gm_openExpo(idx); } void InputsPanel::expoAdd() { - int index = ExposlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); + int index = ExposlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); - if(index<0) { // if empty then return relevant index - expoOpen(); - } else { - index++; - if (!gm_insertExpo(index)) - return; - model->expoData[index].chn = model->expoData[index-1].chn; - expoInserted=true; - } - gm_openExpo(index); + if (index < 0) { // if empty then return relevant index + expoOpen(); + } + else { + index++; + if (!gm_insertExpo(index)) + return; + model->expoData[index].chn = model->expoData[index-1].chn; + expoInserted = true; + } + gm_openExpo(index); } void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) { - QPoint globalPos = ExposlistWidget->mapToGlobal(pos); + QPoint globalPos = ExposlistWidget->mapToGlobal(pos); - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion-expo"); + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + bool hasData = mimeData->hasFormat(MIMETYPE_EXPO); - QMenu contextMenu; - contextMenu.addAction(CompanionIcon("add.png"), tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); - contextMenu.addAction(CompanionIcon("edit.png"), tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); - contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); - contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); - contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); - contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(CompanionIcon("duplicate.png"), tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); - contextMenu.addSeparator(); - contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); - contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); - contextMenu.addSeparator(); - contextMenu.addActions(ExposlistWidget->actions()); + selectedIdx = getIndexFromSelected(); + inputIdx = getInputIndexFromSelected(); - contextMenu.exec(globalPos); + QMenu contextMenu; + QMenu *contextMenuLines = contextMenu.addMenu(tr("Lines")); + contextMenuLines->addAction(CompanionIcon("add.png"), tr("&Add"), this, SLOT(expoAdd()), tr("Ctrl+A")); + contextMenuLines->addAction(CompanionIcon("edit.png"), tr("&Edit"), this, SLOT(expoOpen()), tr("Enter")); + contextMenuLines->addSeparator(); + contextMenuLines->addAction(CompanionIcon("clear.png"), tr("&Delete"), this, SLOT(exposDelete()), tr("Delete")); + contextMenuLines->addAction(CompanionIcon("copy.png"), tr("&Copy"), this, SLOT(exposCopy()), tr("Ctrl+C")); + contextMenuLines->addAction(CompanionIcon("cut.png"), tr("&Cut"), this, SLOT(exposCut()), tr("Ctrl+X")); + contextMenuLines->addAction(CompanionIcon("paste.png"), tr("&Paste"), this, SLOT(exposPaste()), tr("Ctrl+V"))->setEnabled(hasData); + contextMenuLines->addAction(CompanionIcon("duplicate.png"), tr("Du&plicate"), this, SLOT(exposDuplicate()), tr("Ctrl+U")); + contextMenuLines->addSeparator(); + contextMenuLines->addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(moveExpoUp()), tr("Ctrl+Up")); + contextMenuLines->addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(moveExpoDown()), tr("Ctrl+Down")); + + QMenu *contextMenuInputs = contextMenu.addMenu(tr("Input")); + contextMenuInputs->addAction(CompanionIcon("arrow-right.png"), tr("Insert"), this, SLOT(cmInputInsert()))->setEnabled(cmInputInsertAllowed()); + contextMenuInputs->addAction(CompanionIcon("arrow-left.png"), tr("Delete"), this, SLOT(cmInputDelete())); + contextMenuInputs->addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(cmInputMoveUp()))->setEnabled(cmInputMoveUpAllowed()); + contextMenuInputs->addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(cmInputMoveDown()))->setEnabled(cmInputMoveDownAllowed()); + contextMenuInputs->addSeparator(); + contextMenuInputs->addAction(CompanionIcon("clear.png"), tr("Clear"), this, SLOT(cmInputClear()))->setEnabled(isExpoIndex(selectedIdx)); + + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"), this, SLOT(clearExpos())); + contextMenu.addSeparator(); + contextMenu.addActions(ExposlistWidget->actions()); + contextMenu.exec(globalPos); } - void InputsPanel::expolistWidget_KeyPress(QKeyEvent *event) { - if(event->matches(QKeySequence::SelectAll)) expoAdd(); //Ctrl A - if(event->matches(QKeySequence::Delete)) exposDelete(); - if(event->matches(QKeySequence::Copy)) exposCopy(); - if(event->matches(QKeySequence::Cut)) exposCut(); - if(event->matches(QKeySequence::Paste)) exposPaste(); - if(event->matches(QKeySequence::Underline)) exposDuplicate(); + if (event->matches(QKeySequence::SelectAll)) + expoAdd(); //Ctrl A + if (event->matches(QKeySequence::Delete)) + exposDelete(); + if (event->matches(QKeySequence::Copy)) + exposCopy(); + if (event->matches(QKeySequence::Cut)) + exposCut(); + if (event->matches(QKeySequence::Paste)) + exposPaste(); + if (event->matches(QKeySequence::Underline)) + exposDuplicate(); - if(event->key()==Qt::Key_Return || event->key()==Qt::Key_Enter) expoOpen(); - if(event->matches(QKeySequence::MoveToNextLine)) - ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()+1); - if(event->matches(QKeySequence::MoveToPreviousLine)) - ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()-1); + if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) + expoOpen(); + if (event->matches(QKeySequence::MoveToNextLine)) + ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow() + 1); + if (event->matches(QKeySequence::MoveToPreviousLine)) + ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow() - 1); } int InputsPanel::gm_moveExpo(int idx, bool dir) //true=inc=down false=dec=up @@ -418,7 +439,7 @@ int InputsPanel::gm_moveExpo(int idx, bool dir) //true=inc=down false=dec=up if (idx >= CPN_MAX_EXPOS || idx < 0 || (dir && idx >= CPN_MAX_EXPOS - 1) || (!dir && !idx)) return -1; - const int tdx = dir ? idx+1 : idx-1; + const int tdx = dir ? idx + 1 : idx-1; ExpoData temp; ExpoData &src = model->expoData[idx]; ExpoData &tgt = model->expoData[tdx]; @@ -432,7 +453,7 @@ int InputsPanel::gm_moveExpo(int idx, bool dir) //true=inc=down false=dec=up if (tgt.chn != src.chn || tgtempty) { const int oldChan = src.chn; - if (dir && src.chn < unsigned(inputsCount-1)) + if (dir && src.chn < unsigned(inputsCount - 1)) src.chn++; else if (!dir && src.chn > 0) src.chn--; @@ -452,7 +473,7 @@ void InputsPanel::moveExpoList(bool down) QList list = createExpoListFromSelected(); QList highlightList; bool mod = false; - foreach(int idx, list) { + foreach (int idx, list) { const int newIdx = gm_moveExpo(idx, down); if (newIdx > -1) { highlightList << newIdx; @@ -483,19 +504,22 @@ void InputsPanel::expolistWidget_doubleClicked(QModelIndex index) void InputsPanel::exposDeleteList(QList list, bool clearName) { - std::sort(list.begin(), list.end()); + std::sort(list.begin(), list.end()); - int iDec = 0; - foreach(int idx, list) { - gm_deleteExpo(idx-iDec, clearName); - iDec++; - } + int iDec = 0; + foreach (int idx, list) { + gm_deleteExpo(idx-iDec, clearName); + iDec++; + } } void InputsPanel::clearExpos() { - if (QMessageBox::question(this, tr("Clear Inputs?"), tr("Really clear all the inputs?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Inputs. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { model->clearInputs(); + for (int i = 0; i < inputsCount; i++) { + model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_CLEAR, i); + } emit modified(); update(); } @@ -512,8 +536,172 @@ void InputsPanel::maybeCopyInputName(int srcChan, int destChan) if (srcEmpty) { // if destination input name is empty, copy it from source expo input if (!strlen(model->inputNames[destChan])) - strncpy(model->inputNames[destChan], model->inputNames[srcChan], 5); + strncpy(model->inputNames[destChan], model->inputNames[srcChan], INPUT_NAME_LEN); // clear the emptry source channel name model->inputNames[srcChan][0] = 0; } } + +bool InputsPanel::cmInputInsertAllowed() const +{ + return ((!model->hasExpos(inputsCount - 1)) && (inputIdx < inputsCount - 1)); +} + +bool InputsPanel::cmInputMoveDownAllowed() const +{ + return (inputIdx >= 0 && (inputIdx < inputsCount - 1)); +} + +bool InputsPanel::cmInputMoveUpAllowed() const +{ + return inputIdx > 0; +} + +void InputsPanel::cmInputClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Input. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int i = CPN_MAX_EXPOS - 1; i >= 0; i--) { + ExpoData *ed = &model->expoData[i]; + if ((int)ed->chn == inputIdx) + model->removeInput(i); + } + model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_CLEAR, inputIdx); + update(); + emit modified(); +} + +void InputsPanel::cmInputDelete() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Input. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int i = 0; i < CPN_MAX_EXPOS; i++) { + ExpoData *ed = &model->expoData[i]; + if ((int)ed->chn == inputIdx) + model->removeInput(i); + else if ((int)ed->chn > inputIdx) + ed->chn--; + } + + for (int i = inputIdx; i < inputsCount; i++) { + strncpy(model->inputNames[i], model->inputNames[i + 1], sizeof(model->inputNames[i]) - 1); + } + model->inputNames[inputsCount - 1][0] = 0; + + model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SHIFT, inputIdx, 0, -1); + update(); + emit modified(); +} + +void InputsPanel::cmInputInsert() +{ + for (int i = 0; i < CPN_MAX_EXPOS; i++) { + ExpoData *ed = &model->expoData[i]; + if ((int)ed->chn >= inputIdx) + ed->chn++; + } + + for (int i = inputsCount - 1; i > inputIdx; i--) { + strncpy(model->inputNames[i], model->inputNames[i - 1], sizeof(model->inputNames[i]) - 1); + } + model->inputNames[inputIdx][0] = 0; + + model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SHIFT, inputIdx, 0, 1); + update(); + emit modified(); +} + +void InputsPanel::cmInputMoveDown() +{ + cmInputSwapData(inputIdx, inputIdx + 1); +} + +void InputsPanel::cmInputMoveUp() +{ + cmInputSwapData(inputIdx - 1, inputIdx); +} + +void InputsPanel::cmInputSwapData(int idx1, int idx2) +{ + if (idx1 >= idx2 || (!model->hasExpos(idx1) && !model->hasExpos(idx2))) + return; + // save expos + int expoidx = -1; + QVector edtmp; + int i; + for (i = 0; i < CPN_MAX_EXPOS; i++) { + ExpoData *ed = &model->expoData[i]; + if ((int)ed->chn == idx1) { + edtmp << model->expoData[i]; + if (expoidx < 0) + expoidx = i; + } + else if ((int)ed->chn > idx1) + break; + } + // move expos up + const int offset = i - expoidx; + int expocnt; + for (int j = i; j < CPN_MAX_EXPOS; j++) { + ExpoData *ed = &model->expoData[j]; + if ((int)ed->chn == idx2) { + ExpoData *dest = &model->expoData[j - offset]; + memcpy(dest, &model->expoData[j], sizeof(ExpoData)); + dest->chn = idx1; + expocnt++; + } + else if ((int)ed->chn > idx2) + break; + } + // copy back saved expos + int cnt = 0; + foreach (ExpoData ed, edtmp) { + ExpoData *dest = &model->expoData[expoidx + expocnt + cnt]; + memcpy(dest, &ed, sizeof(ExpoData)); + dest->chn = idx2; + cnt++; + } + + // swap names + QByteArray *tname = new QByteArray(model->inputNames[idx2]); + strncpy(model->inputNames[idx2], model->inputNames[idx1], sizeof(model->inputNames[idx2]) - 1); + strncpy(model->inputNames[idx1], tname->data(), sizeof(model->inputNames[idx1]) - 1); + + model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + update(); + emit modified(); +} + +bool InputsPanel::isInputIndex(const int index) +{ + if (index < 0) + return true; + else + return false; +} + +bool InputsPanel::isExpoIndex(const int index) +{ + return !isInputIndex(index); +} + +int InputsPanel::getIndexFromSelected() +{ + return ExposlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); +} + +int InputsPanel::getInputIndexFromSelected() +{ + const int selidx = getIndexFromSelected(); + int idx; + + if (isInputIndex(selidx)) + idx = -selidx - 1; + else { + const ExpoData *ed = &model->expoData[selidx]; + idx = ed->chn; + } + return idx; +} diff --git a/companion/src/modeledit/inputs.h b/companion/src/modeledit/inputs.h index 939d0a647..884573fef 100644 --- a/companion/src/modeledit/inputs.h +++ b/companion/src/modeledit/inputs.h @@ -25,6 +25,8 @@ #include "mixerslistwidget.h" #include "modelprinter.h" +constexpr char MIMETYPE_EXPO[] = "application/x-companion-expo"; + class InputsPanel : public ModelPanel { Q_OBJECT @@ -52,12 +54,19 @@ class InputsPanel : public ModelPanel void expoOpen(QListWidgetItem *item = NULL); void expoAdd(); void maybeCopyInputName(int srcChan, int destChan); + void cmInputClear(); + void cmInputDelete(); + void cmInputInsert(); + void cmInputMoveDown(); + void cmInputMoveUp(); private: bool expoInserted; MixersListWidget *ExposlistWidget; int inputsCount; ModelPrinter modelPrinter; + int selectedIdx; + int inputIdx; int getExpoIndex(unsigned int dch); bool gm_insertExpo(int idx); @@ -70,7 +79,14 @@ class InputsPanel : public ModelPanel void pasteExpoMimeData(const QMimeData * mimeData, int destIdx); void AddInputLine(int dest); QString getInputText(int dest, bool newChan); - + bool cmInputInsertAllowed() const; + bool cmInputMoveDownAllowed() const; + bool cmInputMoveUpAllowed() const; + void cmInputSwapData(int idx1, int idx2); + bool isInputIndex(const int index); + bool isExpoIndex(const int index); + int getIndexFromSelected(); + int getInputIndexFromSelected(); }; #endif // _INPUTS_H_ diff --git a/companion/src/modeledit/logicalswitches.cpp b/companion/src/modeledit/logicalswitches.cpp index 81f2f52e7..13e20b8f6 100644 --- a/companion/src/modeledit/logicalswitches.cpp +++ b/companion/src/modeledit/logicalswitches.cpp @@ -26,7 +26,7 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware): ModelPanel(parent, model, generalSettings, firmware), - selectedSwitch(0) + selectedIndex(0) { Stopwatch s1("LogicalSwitchesPanel"); @@ -35,19 +35,22 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, const int srcGroups = firmware->getCapability(GvarsInCS) ? 0 : (RawSource::AllSourceGroups & ~RawSource::GVarsGroup); rawSourceItemModel = new RawSourceFilterItemModel(&generalSettings, &model, srcGroups, this); + lsCapability = firmware->getCapability(LogicalSwitches); + lsCapabilityExt = firmware->getCapability(LogicalSwitchesExt); + QStringList headerLabels; headerLabels << "#" << tr("Function") << tr("V1") << tr("V2") << tr("AND Switch"); - if (firmware->getCapability(LogicalSwitchesExt)) { + if (lsCapabilityExt) { headerLabels << tr("Duration") << tr("Delay"); } - TableLayout * tableLayout = new TableLayout(this, firmware->getCapability(LogicalSwitches), headerLabels); + TableLayout * tableLayout = new TableLayout(this, lsCapability, headerLabels); s1.report("header"); const int channelsMax = model.getChannelsMax(true); lock = true; - for (int i=0; igetCapability(LogicalSwitches); i++) { + for (int i=0; isetProperty("index", i); @@ -56,96 +59,96 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, label->setToolTip(tr("Popup menu available")); label->setMouseTracking(true); label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); - connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(csw_customContextMenuRequested(QPoint))); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomContextMenuRequested(QPoint))); tableLayout->addWidget(i, 0, label); // The function - csw[i] = new QComboBox(this); - csw[i]->setProperty("index", i); - populateCSWCB(csw[i]); - connect(csw[i], SIGNAL(currentIndexChanged(int)), this, SLOT(functionChanged())); - tableLayout->addWidget(i, 1, csw[i]); + cbFunction[i] = new QComboBox(this); + cbFunction[i]->setProperty("index", i); + populateFunctionCB(cbFunction[i]); + connect(cbFunction[i], SIGNAL(currentIndexChanged(int)), this, SLOT(onFunctionChanged())); + tableLayout->addWidget(i, 1, cbFunction[i]); // V1 QHBoxLayout *v1Layout = new QHBoxLayout(); - cswitchSource1[i] = new QComboBox(this); - cswitchSource1[i]->setProperty("index",i); - connect(cswitchSource1[i], SIGNAL(currentIndexChanged(int)), this, SLOT(v1Edited(int))); - v1Layout->addWidget(cswitchSource1[i]); - cswitchSource1[i]->setVisible(false); - cswitchValue[i] = new QDoubleSpinBox(this); - cswitchValue[i]->setMaximum(channelsMax); - cswitchValue[i]->setMinimum(-channelsMax); - cswitchValue[i]->setAccelerated(true); - cswitchValue[i]->setDecimals(0); - cswitchValue[i]->setProperty("index", i); - connect(cswitchValue[i], SIGNAL(editingFinished()), this, SLOT(offsetEdited())); - v1Layout->addWidget(cswitchValue[i]); - cswitchValue[i]->setVisible(false); + cbSource1[i] = new QComboBox(this); + cbSource1[i]->setProperty("index",i); + connect(cbSource1[i], SIGNAL(currentIndexChanged(int)), this, SLOT(onV1Changed(int))); + v1Layout->addWidget(cbSource1[i]); + cbSource1[i]->setVisible(false); + dsbValue[i] = new QDoubleSpinBox(this); + dsbValue[i]->setMaximum(channelsMax); + dsbValue[i]->setMinimum(-channelsMax); + dsbValue[i]->setAccelerated(true); + dsbValue[i]->setDecimals(0); + dsbValue[i]->setProperty("index", i); + connect(dsbValue[i], SIGNAL(editingFinished()), this, SLOT(onOffsetChanged())); + v1Layout->addWidget(dsbValue[i]); + dsbValue[i]->setVisible(false); tableLayout->addLayout(i, 2, v1Layout); // V2 QHBoxLayout *v2Layout = new QHBoxLayout(); - cswitchSource2[i] = new QComboBox(this); - cswitchSource2[i]->setProperty("index", i); - connect(cswitchSource2[i], SIGNAL(currentIndexChanged(int)), this, SLOT(v2Edited(int))); - v2Layout->addWidget(cswitchSource2[i]); - cswitchSource2[i]->setVisible(false); - cswitchOffset[i] = new QDoubleSpinBox(this); - cswitchOffset[i]->setProperty("index",i); - cswitchOffset[i]->setMaximum(channelsMax); - cswitchOffset[i]->setMinimum(-channelsMax); - cswitchOffset[i]->setAccelerated(true); - cswitchOffset[i]->setDecimals(0); - connect(cswitchOffset[i], SIGNAL(editingFinished()), this, SLOT(offsetEdited())); - cswitchOffset[i]->setVisible(false); - v2Layout->addWidget(cswitchOffset[i]); - cswitchOffset2[i] = new QDoubleSpinBox(this); - cswitchOffset2[i]->setProperty("index",i); - cswitchOffset2[i]->setMaximum(channelsMax); - cswitchOffset2[i]->setMinimum(-channelsMax); - cswitchOffset2[i]->setAccelerated(true); - cswitchOffset2[i]->setDecimals(0); - cswitchOffset2[i]->setSpecialValueText(" " + tr("(instant)")); - connect(cswitchOffset2[i], SIGNAL(editingFinished()), this, SLOT(offsetEdited())); - cswitchOffset2[i]->setVisible(false); - v2Layout->addWidget(cswitchOffset2[i]); - cswitchTOffset[i] = new TimerEdit(this); - cswitchTOffset[i]->setProperty("index",i); - connect(cswitchTOffset[i],SIGNAL(editingFinished()),this,SLOT(offsetEdited())); - v2Layout->addWidget(cswitchTOffset[i]); - cswitchTOffset[i]->setVisible(false); + cbSource2[i] = new QComboBox(this); + cbSource2[i]->setProperty("index", i); + connect(cbSource2[i], SIGNAL(currentIndexChanged(int)), this, SLOT(onV2Changed(int))); + v2Layout->addWidget(cbSource2[i]); + cbSource2[i]->setVisible(false); + dsbOffset[i] = new QDoubleSpinBox(this); + dsbOffset[i]->setProperty("index",i); + dsbOffset[i]->setMaximum(channelsMax); + dsbOffset[i]->setMinimum(-channelsMax); + dsbOffset[i]->setAccelerated(true); + dsbOffset[i]->setDecimals(0); + connect(dsbOffset[i], SIGNAL(editingFinished()), this, SLOT(onOffsetChanged())); + dsbOffset[i]->setVisible(false); + v2Layout->addWidget(dsbOffset[i]); + dsbOffset2[i] = new QDoubleSpinBox(this); + dsbOffset2[i]->setProperty("index",i); + dsbOffset2[i]->setMaximum(channelsMax); + dsbOffset2[i]->setMinimum(-channelsMax); + dsbOffset2[i]->setAccelerated(true); + dsbOffset2[i]->setDecimals(0); + dsbOffset2[i]->setSpecialValueText(" " + tr("(instant)")); + connect(dsbOffset2[i], SIGNAL(editingFinished()), this, SLOT(onOffsetChanged())); + dsbOffset2[i]->setVisible(false); + v2Layout->addWidget(dsbOffset2[i]); + teOffset[i] = new TimerEdit(this); + teOffset[i]->setProperty("index",i); + connect(teOffset[i],SIGNAL(editingFinished()),this,SLOT(onOffsetChanged())); + v2Layout->addWidget(teOffset[i]); + teOffset[i]->setVisible(false); tableLayout->addLayout(i, 3, v2Layout); // AND - cswitchAnd[i] = new QComboBox(this); - cswitchAnd[i]->setProperty("index", i); - populateAndSwitchCB(cswitchAnd[i]); - connect(cswitchAnd[i], SIGNAL(currentIndexChanged(int)), this, SLOT(andEdited(int))); - tableLayout->addWidget(i, 4, cswitchAnd[i]); + cbAndSwitch[i] = new QComboBox(this); + cbAndSwitch[i]->setProperty("index", i); + populateAndSwitchCB(cbAndSwitch[i]); + connect(cbAndSwitch[i], SIGNAL(currentIndexChanged(int)), this, SLOT(onAndSwitchChanged(int))); + tableLayout->addWidget(i, 4, cbAndSwitch[i]); - if (firmware->getCapability(LogicalSwitchesExt)) { + if (lsCapabilityExt) { // Duration - cswitchDuration[i] = new QDoubleSpinBox(this); - cswitchDuration[i]->setProperty("index", i); - cswitchDuration[i]->setSingleStep(0.1); - cswitchDuration[i]->setMaximum(25); - cswitchDuration[i]->setMinimum(0); - cswitchDuration[i]->setAccelerated(true); - cswitchDuration[i]->setDecimals(1); - connect(cswitchDuration[i], SIGNAL(valueChanged(double)), this, SLOT(durationEdited(double))); - tableLayout->addWidget(i, 5, cswitchDuration[i]); + dsbDuration[i] = new QDoubleSpinBox(this); + dsbDuration[i]->setProperty("index", i); + dsbDuration[i]->setSingleStep(0.1); + dsbDuration[i]->setMaximum(25); + dsbDuration[i]->setMinimum(0); + dsbDuration[i]->setAccelerated(true); + dsbDuration[i]->setDecimals(1); + connect(dsbDuration[i], SIGNAL(valueChanged(double)), this, SLOT(onDurationChanged(double))); + tableLayout->addWidget(i, 5, dsbDuration[i]); // Delay - cswitchDelay[i] = new QDoubleSpinBox(this); - cswitchDelay[i]->setProperty("index", i); - cswitchDelay[i]->setSingleStep(0.1); - cswitchDelay[i]->setMaximum(25); - cswitchDelay[i]->setMinimum(0); - cswitchDelay[i]->setAccelerated(true); - cswitchDelay[i]->setDecimals(1); - connect(cswitchDelay[i], SIGNAL(valueChanged(double)), this, SLOT(delayEdited(double))); - tableLayout->addWidget(i, 6, cswitchDelay[i]); + dsbDelay[i] = new QDoubleSpinBox(this); + dsbDelay[i]->setProperty("index", i); + dsbDelay[i]->setSingleStep(0.1); + dsbDelay[i]->setMaximum(25); + dsbDelay[i]->setMinimum(0); + dsbDelay[i]->setAccelerated(true); + dsbDelay[i]->setDecimals(1); + connect(dsbDelay[i], SIGNAL(valueChanged(double)), this, SLOT(onDelayChanged(double))); + tableLayout->addWidget(i, 6, dsbDelay[i]); } } @@ -155,7 +158,7 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model, lock = false; update(); tableLayout->resizeColumnsToContents(); - tableLayout->pushRowsUp(firmware->getCapability(LogicalSwitches)+1); + tableLayout->pushRowsUp(lsCapability+1); s1.report("end"); } @@ -172,10 +175,10 @@ void LogicalSwitchesPanel::updateDataModels() lock = oldLock; } -void LogicalSwitchesPanel::functionChanged() +void LogicalSwitchesPanel::onFunctionChanged() { int i = sender()->property("index").toInt(); - unsigned newFunc = csw[i]->currentData().toUInt(); + unsigned newFunc = cbFunction[i]->currentData().toUInt(); if (model->logicalSw[i].func == newFunc) return; @@ -204,13 +207,13 @@ void LogicalSwitchesPanel::functionChanged() emit modified(); } -void LogicalSwitchesPanel::v1Edited(int value) +void LogicalSwitchesPanel::onV1Changed(int value) { if (!lock) { int i = sender()->property("index").toInt(); - model->logicalSw[i].val1 = cswitchSource1[i]->itemData(value).toInt(); + model->logicalSw[i].val1 = cbSource1[i]->itemData(value).toInt(); if (model->logicalSw[i].getFunctionFamily() == LS_FAMILY_VOFS) { - if (!offsetEditedAt(i)) + if (!offsetChangedAt(i)) updateLine(i); } else { @@ -219,25 +222,25 @@ void LogicalSwitchesPanel::v1Edited(int value) } } -void LogicalSwitchesPanel::v2Edited(int value) +void LogicalSwitchesPanel::onV2Changed(int value) { if (!lock) { int i = sender()->property("index").toInt(); - model->logicalSw[i].val2 = cswitchSource2[i]->itemData(value).toInt(); + model->logicalSw[i].val2 = cbSource2[i]->itemData(value).toInt(); emit modified(); } } -void LogicalSwitchesPanel::andEdited(int value) +void LogicalSwitchesPanel::onAndSwitchChanged(int value) { if (!lock) { int index = sender()->property("index").toInt(); - model->logicalSw[index].andsw = cswitchAnd[index]->itemData(value).toInt(); + model->logicalSw[index].andsw = cbAndSwitch[index]->itemData(value).toInt(); emit modified(); } } -void LogicalSwitchesPanel::durationEdited(double duration) +void LogicalSwitchesPanel::onDurationChanged(double duration) { if (!lock) { int index = sender()->property("index").toInt(); @@ -246,7 +249,7 @@ void LogicalSwitchesPanel::durationEdited(double duration) } } -void LogicalSwitchesPanel::delayEdited(double delay) +void LogicalSwitchesPanel::onDelayChanged(double delay) { if (!lock) { int index = sender()->property("index").toInt(); @@ -255,12 +258,12 @@ void LogicalSwitchesPanel::delayEdited(double delay) } } -void LogicalSwitchesPanel::offsetEdited() +void LogicalSwitchesPanel::onOffsetChanged() { - offsetEditedAt(sender()->property("index").toInt()); + offsetChangedAt(sender()->property("index").toInt()); } -bool LogicalSwitchesPanel::offsetEditedAt(int index) +bool LogicalSwitchesPanel::offsetChangedAt(int index) { if (lock) return false; @@ -275,7 +278,7 @@ bool LogicalSwitchesPanel::offsetEditedAt(int index) { RawSource source = RawSource(model->logicalSw[index].val1); RawSourceRange range = source.getRange(model, generalSettings, model->logicalSw[index].getRangeFlags()); - double currVal = source.isTimeBased() ? cswitchTOffset[index]->timeInSeconds() : cswitchOffset[index]->value(); + double currVal = source.isTimeBased() ? teOffset[index]->timeInSeconds() : dsbOffset[index]->value(); value = round((currVal - range.offset) / range.step); mod = (mod || value != model->logicalSw[index].val2); model->logicalSw[index].val2 = value; @@ -283,22 +286,22 @@ bool LogicalSwitchesPanel::offsetEditedAt(int index) } case LS_FAMILY_TIMER: - value = TimToVal(cswitchValue[index]->value()); + value = TimToVal(dsbValue[index]->value()); mod = (mod || value != model->logicalSw[index].val1); model->logicalSw[index].val1 = value; - value = TimToVal(cswitchOffset[index]->value()); + value = TimToVal(dsbOffset[index]->value()); mod = (mod || value != model->logicalSw[index].val2); model->logicalSw[index].val2 = value; break; case LS_FAMILY_EDGE: - if (sender() == cswitchOffset[index]) { - value = TimToVal(cswitchOffset[index]->value()); + if (sender() == dsbOffset[index]) { + value = TimToVal(dsbOffset[index]->value()); mod = (mod || value != model->logicalSw[index].val2); model->logicalSw[index].val2 = value; } else { - value = TimToVal(cswitchOffset2[index]->value()) - model->logicalSw[index].val2; + value = TimToVal(dsbOffset2[index]->value()) - model->logicalSw[index].val2; mod = (mod || value != model->logicalSw[index].val3); model->logicalSw[index].val3 = value; } @@ -347,8 +350,8 @@ void LogicalSwitchesPanel::updateLine(int i) lock = true; unsigned int mask; - csw[i]->setCurrentIndex(csw[i]->findData(model->logicalSw[i].func)); - cswitchAnd[i]->setCurrentIndex(cswitchAnd[i]->findData(RawSwitch(model->logicalSw[i].andsw).toValue())); + cbFunction[i]->setCurrentIndex(cbFunction[i]->findData(model->logicalSw[i].func)); + cbAndSwitch[i]->setCurrentIndex(cbAndSwitch[i]->findData(RawSwitch(model->logicalSw[i].andsw).toValue())); if (!model->logicalSw[i].func) { mask = 0; @@ -364,27 +367,27 @@ void LogicalSwitchesPanel::updateLine(int i) RawSource source = RawSource(model->logicalSw[i].val1); RawSourceRange range = source.getRange(model, generalSettings, model->logicalSw[i].getRangeFlags()); double value = range.step * model->logicalSw[i].val2 + range.offset; /* TODO+source.getRawOffset(model)*/ - cswitchSource1[i]->setModel(rawSourceItemModel); - cswitchSource1[i]->setCurrentIndex(cswitchSource1[i]->findData(source.toValue())); + cbSource1[i]->setModel(rawSourceItemModel); + cbSource1[i]->setCurrentIndex(cbSource1[i]->findData(source.toValue())); if (source.isTimeBased()) { mask |= VALUE_TO_VISIBLE; - cswitchTOffset[i]->setTimeRange(range.min, range.max); - cswitchTOffset[i]->setSingleStep(range.step); - cswitchTOffset[i]->setPageStep(range.step * 60); - cswitchTOffset[i]->setShowSeconds(range.step != 60); - cswitchTOffset[i]->setTime((int)value); + teOffset[i]->setTimeRange(range.min, range.max); + teOffset[i]->setSingleStep(range.step); + teOffset[i]->setPageStep(range.step * 60); + teOffset[i]->setShowSeconds(range.step != 60); + teOffset[i]->setTime((int)value); } else { mask |= VALUE2_VISIBLE; if (range.unit.isEmpty()) - cswitchOffset[i]->setSuffix(""); + dsbOffset[i]->setSuffix(""); else - cswitchOffset[i]->setSuffix(" " + range.unit); - cswitchOffset[i]->setDecimals(range.decimals); - cswitchOffset[i]->setMinimum(range.min); - cswitchOffset[i]->setMaximum(range.max); - cswitchOffset[i]->setSingleStep(range.step); - cswitchOffset[i]->setValue(value); + dsbOffset[i]->setSuffix(" " + range.unit); + dsbOffset[i]->setDecimals(range.decimals); + dsbOffset[i]->setMinimum(range.min); + dsbOffset[i]->setMaximum(range.max); + dsbOffset[i]->setSingleStep(range.step); + dsbOffset[i]->setValue(value); } break; @@ -393,58 +396,58 @@ void LogicalSwitchesPanel::updateLine(int i) case LS_FAMILY_STICKY: // no break case LS_FAMILY_VBOOL: mask |= SOURCE1_VISIBLE | SOURCE2_VISIBLE; - cswitchSource1[i]->setModel(rawSwitchItemModel); - cswitchSource1[i]->setCurrentIndex(cswitchSource1[i]->findData(model->logicalSw[i].val1)); - cswitchSource2[i]->setModel(rawSwitchItemModel); - cswitchSource2[i]->setCurrentIndex(cswitchSource2[i]->findData(model->logicalSw[i].val2)); + cbSource1[i]->setModel(rawSwitchItemModel); + cbSource1[i]->setCurrentIndex(cbSource1[i]->findData(model->logicalSw[i].val1)); + cbSource2[i]->setModel(rawSwitchItemModel); + cbSource2[i]->setCurrentIndex(cbSource2[i]->findData(model->logicalSw[i].val2)); break; case LS_FAMILY_EDGE: mask |= SOURCE1_VISIBLE | VALUE2_VISIBLE | VALUE3_VISIBLE; mask &= ~DELAY_ENABLED; - cswitchSource1[i]->setModel(rawSwitchItemModel); - cswitchSource1[i]->setCurrentIndex(cswitchSource1[i]->findData(model->logicalSw[i].val1)); - updateTimerParam(cswitchOffset[i], model->logicalSw[i].val2, 0.0); - updateTimerParam(cswitchOffset2[i], model->logicalSw[i].val2+model->logicalSw[i].val3, ValToTim(TimToVal(cswitchOffset[i]->value())-1)); - cswitchOffset2[i]->setSuffix((model->logicalSw[i].val3) ? "" : tr(" (infinite)")); + cbSource1[i]->setModel(rawSwitchItemModel); + cbSource1[i]->setCurrentIndex(cbSource1[i]->findData(model->logicalSw[i].val1)); + updateTimerParam(dsbOffset[i], model->logicalSw[i].val2, 0.0); + updateTimerParam(dsbOffset2[i], model->logicalSw[i].val2+model->logicalSw[i].val3, ValToTim(TimToVal(dsbOffset[i]->value())-1)); + dsbOffset2[i]->setSuffix((model->logicalSw[i].val3) ? "" : tr(" (infinite)")); break; case LS_FAMILY_VCOMP: mask |= SOURCE1_VISIBLE | SOURCE2_VISIBLE; - cswitchSource1[i]->setModel(rawSourceItemModel); - cswitchSource1[i]->setCurrentIndex(cswitchSource1[i]->findData(model->logicalSw[i].val1)); - cswitchSource2[i]->setModel(rawSourceItemModel); - cswitchSource2[i]->setCurrentIndex(cswitchSource2[i]->findData(model->logicalSw[i].val2)); + cbSource1[i]->setModel(rawSourceItemModel); + cbSource1[i]->setCurrentIndex(cbSource1[i]->findData(model->logicalSw[i].val1)); + cbSource2[i]->setModel(rawSourceItemModel); + cbSource2[i]->setCurrentIndex(cbSource2[i]->findData(model->logicalSw[i].val2)); break; case LS_FAMILY_TIMER: mask |= VALUE1_VISIBLE | VALUE2_VISIBLE; - updateTimerParam(cswitchValue[i], model->logicalSw[i].val1, 0.1); - updateTimerParam(cswitchOffset[i], model->logicalSw[i].val2, 0.1); + updateTimerParam(dsbValue[i], model->logicalSw[i].val1, 0.1); + updateTimerParam(dsbOffset[i], model->logicalSw[i].val2, 0.1); break; } } - cswitchSource1[i]->setVisible(mask & SOURCE1_VISIBLE); - cswitchSource2[i]->setVisible(mask & SOURCE2_VISIBLE); - cswitchValue[i]->setVisible(mask & VALUE1_VISIBLE); - cswitchOffset[i]->setVisible(mask & VALUE2_VISIBLE); - cswitchOffset2[i]->setVisible(mask & VALUE3_VISIBLE); - cswitchTOffset[i]->setVisible(mask & VALUE_TO_VISIBLE); - cswitchAnd[i]->setVisible(mask & LINE_ENABLED); - if (firmware->getCapability(LogicalSwitchesExt)) { - cswitchDuration[i]->setVisible(mask & DURATION_ENABLED); - cswitchDelay[i]->setVisible(mask & DELAY_ENABLED); + cbSource1[i]->setVisible(mask & SOURCE1_VISIBLE); + cbSource2[i]->setVisible(mask & SOURCE2_VISIBLE); + dsbValue[i]->setVisible(mask & VALUE1_VISIBLE); + dsbOffset[i]->setVisible(mask & VALUE2_VISIBLE); + dsbOffset2[i]->setVisible(mask & VALUE3_VISIBLE); + teOffset[i]->setVisible(mask & VALUE_TO_VISIBLE); + cbAndSwitch[i]->setVisible(mask & LINE_ENABLED); + if (lsCapabilityExt) { + dsbDuration[i]->setVisible(mask & DURATION_ENABLED); + dsbDelay[i]->setVisible(mask & DELAY_ENABLED); if (mask & DURATION_ENABLED) - cswitchDuration[i]->setValue(model->logicalSw[i].duration/10.0); + dsbDuration[i]->setValue(model->logicalSw[i].duration/10.0); if (mask & DELAY_ENABLED) - cswitchDelay[i]->setValue(model->logicalSw[i].delay/10.0); + dsbDelay[i]->setValue(model->logicalSw[i].delay/10.0); } lock = false; } -void LogicalSwitchesPanel::populateCSWCB(QComboBox *b) +void LogicalSwitchesPanel::populateFunctionCB(QComboBox *b) { int order[] = { LS_FN_OFF, @@ -514,63 +517,150 @@ void LogicalSwitchesPanel::populateAndSwitchCB(QComboBox *b) void LogicalSwitchesPanel::update() { updateDataModels(); - for (int i=0; igetCapability(LogicalSwitches); i++) { + for (int i=0; imimeData(); - if (mimeData->hasFormat("application/x-companion-csw")) { - QByteArray cswData = mimeData->data("application/x-companion-csw"); - LogicalSwitchData *csw = &model->logicalSw[selectedSwitch]; - memcpy(csw, cswData.constData(), sizeof(LogicalSwitchData)); - update(); + QByteArray data; + if (hasClipboardData(&data)) { + memcpy(&model->logicalSw[selectedIndex], data.constData(), sizeof(LogicalSwitchData)); + updateDataModels(); + updateLine(selectedIndex); emit modified(); } } -void LogicalSwitchesPanel::cswDelete() +void LogicalSwitchesPanel::cmDelete() { - model->logicalSw[selectedSwitch].clear(); + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Logical Switch. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + memmove(&model->logicalSw[selectedIndex], &model->logicalSw[selectedIndex + 1], (CPN_MAX_LOGICAL_SWITCHES - (selectedIndex + 1)) * sizeof(LogicalSwitchData)); + model->logicalSw[lsCapability - 1].clear(); + + model->updateAllReferences(ModelData::REF_UPD_TYPE_LOGICAL_SWITCH, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, -1); + update(); emit modified(); - updateLine(selectedSwitch); } -void LogicalSwitchesPanel::cswCopy() +void LogicalSwitchesPanel::cmCopy() { - QByteArray cswData; - cswData.append((char*)&model->logicalSw[selectedSwitch],sizeof(LogicalSwitchData)); + QByteArray data; + data.append((char*)&model->logicalSw[selectedIndex], sizeof(LogicalSwitchData)); QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion-csw", cswData); + mimeData->setData(MIMETYPE_LOGICAL_SWITCH, data); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } -void LogicalSwitchesPanel::cswCut() +void LogicalSwitchesPanel::cmCut() { - cswCopy(); - cswDelete(); + cmCopy(); + cmClear(); } // TODO make something generic here! -void LogicalSwitchesPanel::csw_customContextMenuRequested(QPoint pos) +void LogicalSwitchesPanel::onCustomContextMenuRequested(QPoint pos) { - QLabel *label = (QLabel *)sender(); - selectedSwitch = label->property("index").toInt(); + QLabel *label = (QLabel *)sender(); + selectedIndex = label->property("index").toInt(); + QPoint globalPos = label->mapToGlobal(pos); - QPoint globalPos = label->mapToGlobal(pos); + QMenu contextMenu; + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"),this,SLOT(cmCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"),this,SLOT(cmCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"),this,SLOT(cmPaste()))->setEnabled(hasClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"),this,SLOT(cmClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"),this,SLOT(cmInsert()))->setEnabled(insertAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"),this,SLOT(cmDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(cmMoveUp()))->setEnabled(moveUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(cmMoveDown()))->setEnabled(moveDownAllowed()); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"),this,SLOT(cmClearAll())); - const QClipboard * clipboard = QApplication::clipboard(); - const QMimeData * mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion-csw"); + contextMenu.exec(globalPos); +} - QMenu contextMenu; - contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(cswCopy())); - contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(cswCut())); - contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(cswPaste()))->setEnabled(hasData); - contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(cswDelete())); +bool LogicalSwitchesPanel::hasClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_LOGICAL_SWITCH)) { + if (data) + data->append(mimeData->data(MIMETYPE_LOGICAL_SWITCH)); + return true; + } + return false; +} - contextMenu.exec(globalPos); +bool LogicalSwitchesPanel::insertAllowed() const +{ + return ((selectedIndex < lsCapability - 1) && (model->logicalSw[lsCapability - 1].isEmpty())); +} + +bool LogicalSwitchesPanel::moveDownAllowed() const +{ + return selectedIndex < lsCapability - 1; +} + +bool LogicalSwitchesPanel::moveUpAllowed() const +{ + return selectedIndex > 0; +} + +void LogicalSwitchesPanel::cmMoveUp() +{ + swapData(selectedIndex, selectedIndex - 1); +} + +void LogicalSwitchesPanel::cmMoveDown() +{ + swapData(selectedIndex, selectedIndex + 1); +} + +void LogicalSwitchesPanel::cmClear() +{ + model->logicalSw[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_LOGICAL_SWITCH, ModelData::REF_UPD_ACT_CLEAR, selectedIndex); + update(); + emit modified(); +} + +void LogicalSwitchesPanel::cmClearAll() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Logical Switches. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int i=0; ilogicalSw[i].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_LOGICAL_SWITCH, ModelData::REF_UPD_ACT_CLEAR, i); + } + update(); + emit modified(); +} + +void LogicalSwitchesPanel::cmInsert() +{ + memmove(&model->logicalSw[selectedIndex + 1], &model->logicalSw[selectedIndex], (CPN_MAX_LOGICAL_SWITCHES - (selectedIndex + 1)) * sizeof(LogicalSwitchData)); + model->logicalSw[selectedIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_LOGICAL_SWITCH, ModelData::REF_UPD_ACT_SHIFT, selectedIndex, 0, 1); + update(); + emit modified(); +} + +void LogicalSwitchesPanel::swapData(int idx1, int idx2) +{ + if ((idx1 != idx2) && (!model->logicalSw[idx1].isEmpty() || !model->logicalSw[idx2].isEmpty())) { + LogicalSwitchData lstmp = model->logicalSw[idx2]; + LogicalSwitchData *lsw1 = &model->logicalSw[idx1]; + LogicalSwitchData *lsw2 = &model->logicalSw[idx2]; + memcpy(lsw2, lsw1, sizeof(LogicalSwitchData)); + memcpy(lsw1, &lstmp, sizeof(LogicalSwitchData)); + model->updateAllReferences(ModelData::REF_UPD_TYPE_LOGICAL_SWITCH, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + update(); + emit modified(); + } } diff --git a/companion/src/modeledit/logicalswitches.h b/companion/src/modeledit/logicalswitches.h index fde3df0f4..2aea300c5 100644 --- a/companion/src/modeledit/logicalswitches.h +++ b/companion/src/modeledit/logicalswitches.h @@ -28,6 +28,8 @@ class RawSwitchFilterItemModel; class RawSourceFilterItemModel; class TimerEdit; +constexpr char MIMETYPE_LOGICAL_SWITCH[] = "application/x-companion-logical-switch"; + class LogicalSwitchesPanel : public ModelPanel { Q_OBJECT @@ -40,40 +42,50 @@ class LogicalSwitchesPanel : public ModelPanel private slots: void updateDataModels(); - void functionChanged(); - void v1Edited(int value); - void v2Edited(int value); - void andEdited(int value); - void durationEdited(double duration); - void delayEdited(double delay); - void offsetEdited(); - bool offsetEditedAt(int index); + void onFunctionChanged(); + void onV1Changed(int value); + void onV2Changed(int value); + void onAndSwitchChanged(int value); + void onDurationChanged(double duration); + void onDelayChanged(double delay); + void onOffsetChanged(); + bool offsetChangedAt(int index); void updateLine(int index); - void csw_customContextMenuRequested(QPoint pos); - void cswDelete(); - void cswCopy(); - void cswPaste(); - void cswCut(); + void onCustomContextMenuRequested(QPoint pos); + void cmDelete(); + void cmCopy(); + void cmPaste(); + void cmCut(); + void cmMoveUp(); + void cmMoveDown(); + void cmInsert(); + void cmClear(); + void cmClearAll(); private: - QComboBox * csw[CPN_MAX_LOGICAL_SWITCHES]; - QDoubleSpinBox * cswitchValue[CPN_MAX_LOGICAL_SWITCHES]; - QDoubleSpinBox * cswitchOffset[CPN_MAX_LOGICAL_SWITCHES]; - QDoubleSpinBox * cswitchOffset2[CPN_MAX_LOGICAL_SWITCHES]; - TimerEdit * cswitchTOffset[CPN_MAX_LOGICAL_SWITCHES]; - QComboBox * cswitchAnd[CPN_MAX_LOGICAL_SWITCHES]; - QDoubleSpinBox * cswitchDuration[CPN_MAX_LOGICAL_SWITCHES]; - QDoubleSpinBox * cswitchDelay[CPN_MAX_LOGICAL_SWITCHES]; - QComboBox * cswitchSource1[CPN_MAX_LOGICAL_SWITCHES]; - QComboBox * cswitchSource2[CPN_MAX_LOGICAL_SWITCHES]; + QComboBox * cbFunction[CPN_MAX_LOGICAL_SWITCHES]; + QDoubleSpinBox * dsbValue[CPN_MAX_LOGICAL_SWITCHES]; + QDoubleSpinBox * dsbOffset[CPN_MAX_LOGICAL_SWITCHES]; + QDoubleSpinBox * dsbOffset2[CPN_MAX_LOGICAL_SWITCHES]; + TimerEdit * teOffset[CPN_MAX_LOGICAL_SWITCHES]; + QComboBox * cbAndSwitch[CPN_MAX_LOGICAL_SWITCHES]; + QDoubleSpinBox * dsbDuration[CPN_MAX_LOGICAL_SWITCHES]; + QDoubleSpinBox * dsbDelay[CPN_MAX_LOGICAL_SWITCHES]; + QComboBox * cbSource1[CPN_MAX_LOGICAL_SWITCHES]; + QComboBox * cbSource2[CPN_MAX_LOGICAL_SWITCHES]; RawSwitchFilterItemModel * rawSwitchItemModel; RawSourceFilterItemModel * rawSourceItemModel; - int selectedSwitch; - - void populateCSWCB(QComboBox *b); + int selectedIndex; + void populateFunctionCB(QComboBox *b); void populateAndSwitchCB(QComboBox *b); void updateTimerParam(QDoubleSpinBox *sb, int timer, double minimum=0); - + int lsCapability; + int lsCapabilityExt; + void swapData(int idx1, int idx2); + bool hasClipboardData(QByteArray * data = nullptr) const; + bool insertAllowed() const; + bool moveDownAllowed() const; + bool moveUpAllowed() const; }; #endif // _LOGICALSWITCHES_H_ diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 5e193faec..c813b0b9c 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -49,7 +49,7 @@ TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, Ge } else { ui->name->setMaxLength(length); - ui->name->setText(timer.name); + //ui->name->setText(timer.name); } // Mode @@ -85,6 +85,7 @@ TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, Ge QWidget::setTabOrder(ui->countdownBeep, ui->minuteBeep); QWidget::setTabOrder(ui->minuteBeep, ui->persistent); + update(); lock = false; } @@ -95,6 +96,9 @@ TimerPanel::~TimerPanel() void TimerPanel::update() { + lock = true; + ui->name->setText(timer.name); + int hour = timer.val / 3600; int min = (timer.val - (hour * 3600)) / 60; int sec = (timer.val - (hour * 3600)) % 60; @@ -116,7 +120,10 @@ void TimerPanel::update() ui->persistentValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours, 2, 10, QLatin1Char('0')).arg(minutes, 2, 10, QLatin1Char('0')).arg(seconds, 2, 10, QLatin1Char('0'))); } + ui->countdownBeep->updateValue(); ui->minuteBeep->setChecked(timer.minuteBeep); + ui->persistent->updateValue(); + lock = false; } QWidget * TimerPanel::getLastFocus() @@ -126,38 +133,43 @@ QWidget * TimerPanel::getLastFocus() void TimerPanel::on_value_editingFinished() { - unsigned val = ui->value->time().hour()*3600 + ui->value->time().minute()*60 + ui->value->time().second(); - if (timer.val != val) { - timer.val = val; - emit modified(); + if (!lock) { + unsigned val = ui->value->time().hour()*3600 + ui->value->time().minute()*60 + ui->value->time().second(); + if (timer.val != val) { + timer.val = val; + emit modified(); + } } } void TimerPanel::onModeChanged(int index) { - if (lock) - return; - - bool ok; - const RawSwitch rs(ui->mode->itemData(index).toInt(&ok)); - if (ok && timer.mode.toValue() != rs.toValue()) { - timer.mode = rs; - emit modified(); + if (!lock) { + bool ok; + const RawSwitch rs(ui->mode->itemData(index).toInt(&ok)); + if (ok && timer.mode.toValue() != rs.toValue()) { + timer.mode = rs; + emit modified(); + } } } void TimerPanel::on_minuteBeep_toggled(bool checked) { - timer.minuteBeep = checked; - emit modified(); + if (!lock) { + timer.minuteBeep = checked; + emit modified(); + } } void TimerPanel::on_name_editingFinished() { - if (QString(timer.name) != ui->name->text()) { - int length = ui->name->maxLength(); - strncpy(timer.name, ui->name->text().toLatin1(), length); - emit modified(); + if (!lock) { + if (QString(timer.name) != ui->name->text()) { + int length = ui->name->maxLength(); + strncpy(timer.name, ui->name->text().toLatin1(), length); + emit modified(); + } } } @@ -273,27 +285,12 @@ ModulePanel::~ModulePanel() delete ui; } -bool ModulePanel::moduleHasFailsafes() -{ - return firmware->getCapability(HasFailsafe) && ( - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_ISRM || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCST_ISRM_D16 || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_XJT_X16 || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M_LITE || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M_LITE_PRO || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_XJT_LITE_X16 || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_MULTIMODULE - ); -} - void ModulePanel::setupFailsafes() { ChannelFailsafeWidgetsGroup grp; const int start = module.channelsStart; const int end = start + module.channelsCount; - const bool hasFailsafe = moduleHasFailsafes(); + const bool hasFailsafe = module.hasFailsafes(firmware); lock = true; @@ -382,48 +379,6 @@ void ModulePanel::setupFailsafes() lock = false; } -int ModulePanel::getMaxChannelCount() -{ - const PulsesProtocol protocol = (PulsesProtocol)module.protocol; - switch (protocol) { - case PULSES_ACCESS_ISRM: - return 24; - case PULSES_PXX_R9M: - case PULSES_ACCESS_R9M: - case PULSES_ACCESS_R9M_LITE: - case PULSES_ACCESS_R9M_LITE_PRO: - case PULSES_ACCST_ISRM_D16: - case PULSES_XJT_LITE_X16: - case PULSES_PXX_XJT_X16: - case PULSES_CROSSFIRE: - case PULSES_SBUS: - case PULSES_PPM: - return 16; - case PULSES_XJT_LITE_LR12: - case PULSES_PXX_XJT_LR12: - return 12; - case PULSES_PXX_DJT: - case PULSES_XJT_LITE_D8: - case PULSES_PXX_XJT_D8: - return 8; - case PULSES_LP45: - case PULSES_DSM2: - case PULSES_DSMX: - return 6; - case PULSES_MULTIMODULE: - if (module.multi.rfProtocol == MODULE_SUBTYPE_MULTI_DSM2) - return 12; - else - return 16; - break; - case PULSES_OFF: - break; - default: - break; - } - return 8; -} - void ModulePanel::update() { const PulsesProtocol protocol = (PulsesProtocol)module.protocol; @@ -510,7 +465,7 @@ void ModulePanel::update() mask |= MASK_PPM_FIELDS | MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT; } - if (moduleHasFailsafes()) { + if (module.hasFailsafes(firmware)) { mask |= MASK_FAILSAFES; } @@ -527,7 +482,7 @@ void ModulePanel::update() ui->label_channelsCount->setVisible(mask & MASK_CHANNELS_RANGE); ui->channelsCount->setVisible(mask & MASK_CHANNELS_RANGE); ui->channelsCount->setEnabled(mask & MASK_CHANNELS_COUNT); - ui->channelsCount->setMaximum(getMaxChannelCount()); + ui->channelsCount->setMaximum(module.getMaxChannelCount()); ui->channelsCount->setValue(module.channelsCount); ui->channelsCount->setSingleStep(firmware->getCapability(HasPPMStart) ? 1 : 2); @@ -695,7 +650,7 @@ void ModulePanel::onProtocolChanged(int index) { if (!lock && module.protocol != ui->protocol->itemData(index).toUInt()) { module.protocol = ui->protocol->itemData(index).toInt(); - module.channelsCount = getMaxChannelCount(); + module.channelsCount = module.getMaxChannelCount(); update(); emit modified(); } @@ -790,7 +745,7 @@ void ModulePanel::onMultiProtocolChanged(int index) if (rfProtocol > MODULE_SUBTYPE_MULTI_LAST) maxSubTypes=8; module.subType = std::min(module.subType, maxSubTypes -1); - module.channelsCount = getMaxChannelCount(); + module.channelsCount = module.getMaxChannelCount(); update(); emit modified(); lock = false; @@ -1064,16 +1019,28 @@ SetupPanel::SetupPanel(QWidget * parent, ModelData & model, GeneralSettings & ge RawSwitchFilterItemModel * swModel = new RawSwitchFilterItemModel(&generalSettings, &model, RawSwitch::TimersContext, this); connect(this, &SetupPanel::updated, swModel, &RawSwitchFilterItemModel::update); - for (int i=0; igetCapability(Timers)) { + timersCount = firmware->getCapability(Timers); + + for (int i = 0; i < CPN_MAX_TIMERS; i++) { + if (i < timersCount) { timers[i] = new TimerPanel(this, model, model.timers[i], generalSettings, firmware, prevFocus, swModel); ui->gridLayout->addWidget(timers[i], 1+i, 1); connect(timers[i], &TimerPanel::modified, this, &SetupPanel::modified); connect(this, &SetupPanel::updated, timers[i], &TimerPanel::update); + connect(this, &SetupPanel::timerUpdated, timers[i], &TimerPanel::update); prevFocus = timers[i]->getLastFocus(); + // TODO more reliable method required + QLabel *label = findChild(QString("label_timer%1").arg(i + 1)); + if (label) { // to stop crashing if not found + label->setProperty("index", i); + label->setContextMenuPolicy(Qt::CustomContextMenu); + label->setToolTip(tr("Popup menu available")); + label->setMouseTracking(true); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onTimerCustomContextMenuRequested(QPoint))); + } } else { - foreach(QLabel *label, findChildren(QRegularExpression(QString("label_timer%1").arg(i+1)))) { + foreach(QLabel *label, findChildren(QRegularExpression(QString("label_timer%1").arg(i + 1 )))) { //TODO more reliable method required label->hide(); } } @@ -1081,9 +1048,9 @@ SetupPanel::SetupPanel(QWidget * parent, ModelData & model, GeneralSettings & ge if (firmware->getCapability(HasTopLcd)) { ui->toplcdTimer->setField(model.toplcdTimer, this); - for (int i=0; igetCapability(Timers)) { - ui->toplcdTimer->addItem(tr("Timer %1").arg(i+1), i); + for (int i = 0; i < CPN_MAX_TIMERS; i++) { + if (itoplcdTimer->addItem(tr("Timer %1").arg(i + 1), i); } } } @@ -1528,3 +1495,155 @@ void SetupPanel::on_editText_clicked() } } +void SetupPanel::onTimerCustomContextMenuRequested(QPoint pos) +{ + QLabel *label = (QLabel *)sender(); + selectedTimerIndex = label->property("index").toInt(); + QPoint globalPos = label->mapToGlobal(pos); + + QMenu contextMenu; + contextMenu.addAction(CompanionIcon("copy.png"), tr("Copy"), this, SLOT(cmTimerCopy())); + contextMenu.addAction(CompanionIcon("cut.png"), tr("Cut"), this, SLOT(cmTimerCut())); + contextMenu.addAction(CompanionIcon("paste.png"), tr("Paste"), this, SLOT(cmTimerPaste()))->setEnabled(hasTimerClipboardData()); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear"), this, SLOT(cmTimerClear())); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("arrow-right.png"), tr("Insert"), this, SLOT(cmTimerInsert()))->setEnabled(insertTimerAllowed()); + contextMenu.addAction(CompanionIcon("arrow-left.png"), tr("Delete"), this, SLOT(cmTimerDelete())); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"), this, SLOT(cmTimerMoveUp()))->setEnabled(moveTimerUpAllowed()); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"), this, SLOT(cmTimerMoveDown()))->setEnabled(moveTimerDownAllowed()); + contextMenu.addSeparator(); + contextMenu.addAction(CompanionIcon("clear.png"), tr("Clear All"), this, SLOT(cmTimerClearAll())); + + contextMenu.exec(globalPos); +} + +bool SetupPanel::hasTimerClipboardData(QByteArray * data) const +{ + const QClipboard * clipboard = QApplication::clipboard(); + const QMimeData * mimeData = clipboard->mimeData(); + if (mimeData->hasFormat(MIMETYPE_TIMER)) { + if (data) + data->append(mimeData->data(MIMETYPE_TIMER)); + return true; + } + return false; +} + +bool SetupPanel::insertTimerAllowed() const +{ + return ((selectedTimerIndex < timersCount - 1) && (model->timers[timersCount - 1].isEmpty())); +} + +bool SetupPanel::moveTimerDownAllowed() const +{ + return selectedTimerIndex < timersCount - 1; +} + +bool SetupPanel::moveTimerUpAllowed() const +{ + return selectedTimerIndex > 0; +} + +void SetupPanel::cmTimerClear() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear Timer. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + model->timers[selectedTimerIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_TIMER, ModelData::REF_UPD_ACT_CLEAR, selectedTimerIndex); + emit timerUpdated(); + emit modified(); +} + +void SetupPanel::cmTimerClearAll() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Clear all Timers. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + for (int i = 0; i < timersCount; i++) { + model->timers[i].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_TIMER, ModelData::REF_UPD_ACT_CLEAR, i); + } + emit timerUpdated(); + emit modified(); +} + +void SetupPanel::cmTimerCopy() +{ + QByteArray data; + data.append((char*)&model->timers[selectedTimerIndex], sizeof(TimerData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData(MIMETYPE_TIMER, data); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void SetupPanel::cmTimerCut() +{ + cmTimerCopy(); + cmTimerClear(); +} + +void SetupPanel::cmTimerDelete() +{ + if (QMessageBox::question(this, CPN_STR_APP_NAME, tr("Delete Timer. Are you sure?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + + int maxidx = timersCount - 1; + for (int i = selectedTimerIndex; i < maxidx; i++) { + if (!model->timers[i].isEmpty() || !model->timers[i + 1].isEmpty()) { + memcpy(&model->timers[i], &model->timers[i+1], sizeof(TimerData)); + } + } + model->timers[maxidx].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_TIMER, ModelData::REF_UPD_ACT_SHIFT, selectedTimerIndex, 0, -1); + emit timerUpdated(); + emit modified(); +} + +void SetupPanel::cmTimerInsert() +{ + for (int i = (timersCount - 1); i > selectedTimerIndex; i--) { + if (!model->timers[i].isEmpty() || !model->timers[i-1].isEmpty()) { + memcpy(&model->timers[i], &model->timers[i-1], sizeof(TimerData)); + } + } + model->timers[selectedTimerIndex].clear(); + model->updateAllReferences(ModelData::REF_UPD_TYPE_TIMER, ModelData::REF_UPD_ACT_SHIFT, selectedTimerIndex, 0, 1); + emit timerUpdated(); + emit modified(); +} + +void SetupPanel::cmTimerMoveDown() +{ + swapTimerData(selectedTimerIndex, selectedTimerIndex + 1); +} + +void SetupPanel::cmTimerMoveUp() +{ + swapTimerData(selectedTimerIndex, selectedTimerIndex - 1); +} + +void SetupPanel::cmTimerPaste() +{ + QByteArray data; + if (hasTimerClipboardData(&data)) { + TimerData *td = &model->timers[selectedTimerIndex]; + memcpy(td, data.constData(), sizeof(TimerData)); + emit timerUpdated(); + emit modified(); + } +} + +void SetupPanel::swapTimerData(int idx1, int idx2) +{ + if ((idx1 != idx2) && (!model->timers[idx1].isEmpty() || !model->timers[idx2].isEmpty())) { + TimerData tdtmp = model->timers[idx2]; + TimerData *td1 = &model->timers[idx1]; + TimerData *td2 = &model->timers[idx2]; + memcpy(td2, td1, sizeof(TimerData)); + memcpy(td1, &tdtmp, sizeof(TimerData)); + model->updateAllReferences(ModelData::REF_UPD_TYPE_TIMER, ModelData::REF_UPD_ACT_SWAP, idx1, idx2); + emit timerUpdated(); + emit modified(); + } +} diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 586cba07d..fa9e4ad5b 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -24,6 +24,8 @@ #include "modeledit.h" #include "eeprominterface.h" +constexpr char MIMETYPE_TIMER[] = "application/x-companion-timer"; + class RawSwitchFilterItemModel; namespace Ui { @@ -62,7 +64,6 @@ class ModulePanel : public ModelPanel ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, Firmware * firmware, int moduleIdx); virtual ~ModulePanel(); virtual void update(); - bool moduleHasFailsafes(); public slots: void onExtendedLimitsToggled(); @@ -71,7 +72,6 @@ class ModulePanel : public ModelPanel void channelsRangeChanged(); private slots: - int getMaxChannelCount(); void setupFailsafes(); void on_trainerMode_currentIndexChanged(int index); void onProtocolChanged(int index); @@ -129,6 +129,7 @@ class SetupPanel : public ModelPanel signals: void extendedLimitsToggled(); void updated(); + void timerUpdated(); private slots: void on_name_editingFinished(); @@ -148,6 +149,16 @@ class SetupPanel : public ModelPanel void potWarningToggled(bool checked); void on_potWarningMode_currentIndexChanged(int index); void on_editText_clicked(); + void onTimerCustomContextMenuRequested(QPoint pos); + void cmTimerClear(); + void cmTimerClearAll(); + void cmTimerCopy(); + void cmTimerCut(); + void cmTimerDelete(); + void cmTimerInsert(); + void cmTimerPaste(); + void cmTimerMoveDown(); + void cmTimerMoveUp(); private: Ui::Setup *ui; @@ -161,6 +172,13 @@ class SetupPanel : public ModelPanel void updatePotWarnings(); void updateBeepCenter(); void populateThrottleSourceCB(); + int timersCount; + int selectedTimerIndex; + bool hasTimerClipboardData(QByteArray * data = nullptr) const; + bool insertTimerAllowed() const; + bool moveTimerDownAllowed() const; + bool moveTimerUpAllowed() const; + void swapTimerData(int idx1, int idx2); }; #endif // _SETUP_H_ diff --git a/companion/src/modeledit/setup.ui b/companion/src/modeledit/setup.ui index 9ad725ce1..fc499ad63 100644 --- a/companion/src/modeledit/setup.ui +++ b/companion/src/modeledit/setup.ui @@ -590,7 +590,7 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - + 50 From 0609cdb2d32ef5aacd26f8733545b8e7dc174ad0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 15 May 2020 15:54:51 +0200 Subject: [PATCH 177/199] Alternative to display INT_MIN correctly (#7557) INT_MIN/INT_MAX --- radio/src/gui/128x64/lcd.cpp | 13 +++++++++++++ radio/src/gui/212x64/lcd.cpp | 13 +++++++++++++ radio/src/gui/480x272/lcd.cpp | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index c2c12fead..f3adae2ca 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include #include "opentx.h" display_t displayBuf[DISPLAY_BUFFER_SIZE] __DMA; @@ -465,7 +466,19 @@ void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t le int idx = 0; int mode = MODE(flags); bool neg = false; + + if (val == INT_MAX) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MAX", flags); + return; + } + if (val < 0) { + if (val == INT_MIN) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MIN", flags); + return; + } val = -val; neg = true; } diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp index c523643bb..a838003b3 100644 --- a/radio/src/gui/212x64/lcd.cpp +++ b/radio/src/gui/212x64/lcd.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include #include "opentx.h" #include "timers.h" @@ -402,7 +403,19 @@ void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t le int idx = 0; int mode = MODE(flags); bool neg = false; + + if (val == INT_MAX) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MAX", flags); + return; + } + if (val < 0) { + if (val == INT_MIN) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MIN", flags); + return; + } val = -val; neg = true; } diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 34e8831d8..e2c660f73 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -20,6 +20,7 @@ #include #include +#include #include "opentx.h" #include "strhelpers.h" @@ -165,7 +166,19 @@ void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t le int idx = 0; int mode = MODE(flags); bool neg = false; + + if (val == INT_MAX) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MAX", flags); + return; + } + if (val < 0) { + if (val == INT_MIN) { + flags &= ~(LEADING0 | PREC1 | PREC2); + lcdDrawText(x, y, "INT_MIN", flags); + return; + } val = -val; neg = true; } From 318e4dd516c569b75646de3eaaea4e03e2f7717b Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 15 May 2020 21:11:05 +0200 Subject: [PATCH 178/199] tx16s aux fixes --- radio/src/lua/api_general.cpp | 2 +- radio/src/lua/lua_api.h | 2 +- .../common/arm/stm32/aux_serial_driver.cpp | 24 ++++++++++++++++++- radio/src/targets/horus/board.cpp | 12 ++++++++++ radio/src/targets/horus/board.h | 10 ++++---- radio/src/targets/horus/hal.h | 4 +++- 6 files changed, 45 insertions(+), 9 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 2121b36b6..fd06629e4 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1634,9 +1634,9 @@ Reads characters from the serial port. The string is allowed to contain any char */ static int luaSerialRead(lua_State * L) { +#if defined(LUA) && !defined(CLI) int num = luaL_optunsigned(L, 1, 0); -#if defined(LUA) && !defined(CLI) if (!luaRxFifo) { luaRxFifo = new Fifo(); if (!luaRxFifo) { diff --git a/radio/src/lua/lua_api.h b/radio/src/lua/lua_api.h index a0dc8e919..53ef9df04 100644 --- a/radio/src/lua/lua_api.h +++ b/radio/src/lua/lua_api.h @@ -41,7 +41,7 @@ extern "C" { #endif #endif -#if !defined(CLI) +#if !defined(CLI) || defined(AUX2_SERIAL) #define LUA_FIFO_SIZE 256 extern Fifo * luaRxFifo; #endif 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 bc0e54504..53dcec950 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -101,6 +101,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol) #if defined(CROSSFIRE) if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { auxSerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false); + AUX_SERIAL_POWER_OFF(); break; } #endif @@ -110,17 +111,20 @@ void auxSerialInit(unsigned int mode, unsigned int protocol) #if defined(DEBUG) || defined(CLI) case UART_MODE_DEBUG: auxSerialSetup(DEBUG_BAUDRATE, false); + AUX_SERIAL_POWER_OFF(); break; #endif case UART_MODE_TELEMETRY: if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) { auxSerialSetup(FRSKY_D_BAUDRATE, true); + AUX_SERIAL_POWER_OFF(); } break; case UART_MODE_LUA: auxSerialSetup(DEBUG_BAUDRATE, false); + AUX_SERIAL_POWER_ON(); } } @@ -192,7 +196,7 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) } } #endif -#if defined(LUA) && !defined(CLI) +#if defined(LUA) & !defined(CLI) if (luaRxFifo && auxSerialMode == UART_MODE_LUA) { // Receive uint32_t status = AUX_SERIAL_USART->SR; @@ -204,6 +208,19 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) status = AUX_SERIAL_USART->SR; } } +#if defined(AUX2_SERIAL) + if (luaRxFifo && aux2SerialMode == UART_MODE_LUA) { + // Receive + uint32_t status = AUX2_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX2_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { + luaRxFifo->push(data); + } + status = AUX2_SERIAL_USART->SR; + } + } +#endif #endif } #endif @@ -288,26 +305,31 @@ void aux2SerialInit(unsigned int mode, unsigned int protocol) #if defined(CROSSFIRE) if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { aux2SerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false); + AUX2_SERIAL_POWER_OFF(); break; } #endif aux2SerialSetup(FRSKY_TELEM_MIRROR_BAUDRATE, false); + AUX2_SERIAL_POWER_OFF(); break; #if defined(DEBUG) || defined(CLI) case UART_MODE_DEBUG: aux2SerialSetup(DEBUG_BAUDRATE, false); + AUX2_SERIAL_POWER_OFF(); break; #endif case UART_MODE_TELEMETRY: if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) { aux2SerialSetup(FRSKY_D_BAUDRATE, true); + AUX2_SERIAL_POWER_OFF(); } break; case UART_MODE_LUA: aux2SerialSetup(DEBUG_BAUDRATE, false); + AUX2_SERIAL_POWER_ON(); } } diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 704a6f27c..25c0cbbdf 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -52,6 +52,18 @@ void auxSerialPowerOff() GPIO_ResetBits(AUX_SERIAL_PWR_GPIO, AUX_SERIAL_PWR_GPIO_PIN); } #endif +#if defined(AUX2_SERIAL_PWR_GPIO) +void aux2SerialPowerOn() +{ + GPIO_SetBits(AUX2_SERIAL_PWR_GPIO, AUX2_SERIAL_PWR_GPIO_PIN); +} + +void aux2SerialPowerOff() +{ + GPIO_ResetBits(AUX2_SERIAL_PWR_GPIO, AUX2_SERIAL_PWR_GPIO_PIN); +} +#endif + #if HAS_SPORT_UPDATE_CONNECTOR() void sportUpdateInit() diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 74ebd7368..7de47b95b 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -627,11 +627,11 @@ void auxSerialStop(); void auxSerialPowerOn(); void auxSerialPowerOff(); #if defined(AUX_SERIAL_PWR_GPIO) -#define AUX_SERIAL_POWER_ON() auxSerialPowerOn() -#define AUX_SERIAL__POWER_OFF() auxSerialPowerOff() +#define AUX_SERIAL_POWER_ON() auxSerialPowerOn() +#define AUX_SERIAL_POWER_OFF() auxSerialPowerOff() #else #define AUX_SERIAL_POWER_ON() -#define AUX_SERIAL__POWER_OFF() +#define AUX_SERIAL_POWER_OFF() #endif #endif @@ -647,10 +647,10 @@ void aux2SerialPowerOn(); void aux2SerialPowerOff(); #if defined(AUX2_SERIAL_PWR_GPIO) #define AUX2_SERIAL_POWER_ON() aux2SerialPowerOn() -#define AUX2_SERIAL__POWER_OFF() aux2SerialPowerOff() +#define AUX2_SERIAL_POWER_OFF() aux2SerialPowerOff() #else #define AUX2_SERIAL_POWER_ON() -#define AUX2_SERIAL__POWER_OFF() +#define AUX2_SERIAL_POWER_OFF() #endif #endif diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index f964e0137..b0d2042ae 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -393,7 +393,7 @@ // Serial Port (DEBUG) #if defined(PCBX12S) || defined(RADIO_TX16S) - #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1) + #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1) #define AUX_SERIAL_RCC_APB1Periph RCC_APB1Periph_USART3 #define AUX_SERIAL_RCC_APB2Periph 0 #define AUX_SERIAL_GPIO GPIOB @@ -407,6 +407,8 @@ #define AUX_SERIAL_USART_IRQn USART3_IRQn #define AUX_SERIAL_DMA_Stream_RX DMA1_Stream1 #define AUX_SERIAL_DMA_Channel_RX DMA_Channel_4 + #define AUX_SERIAL_PWR_GPIO GPIOA + #define AUX_SERIAL_PWR_GPIO_PIN GPIO_Pin_15 // PB.00 #if defined(RADIO_TX16S) #define TRAINER_BATTERY_COMPARTMENT // allows serial port TTL trainer #endif From 77d069785a4e1c2fa792826b2059cced46ebab74 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Sun, 17 May 2020 09:17:52 +0200 Subject: [PATCH 179/199] Compilation fix - someone mixing languages :) (Ref #7325) --- companion/src/modeledit/flightmodes.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index a38b493a9..1634aed3a 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -857,7 +857,7 @@ void FlightModePanel::cmInsert() FlightModeData *fm = &model->flightModeData[j]; for (int i = 0; i < trimCount; i++) { - if (phaseIdx == 0 and j == 1) + if (phaseIdx == 0 && j == 1) fm->trimRef[i] = j; else if (fm->trimRef[i] >= phaseIdx) { if (fm->trimRef[i] < maxidx) @@ -873,7 +873,7 @@ void FlightModePanel::cmInsert() for (int i = 0; i < gvCount; i++) { if (model->isGVarLinked(j, i)) { int idx = model->getGVarFlightModeIndex(j, i); - if (phaseIdx == 0 and j == 1) + if (phaseIdx == 0 && j == 1) model->setGVarFlightModeIndexToValue(j, i, j); else if (idx >= phaseIdx) model->setGVarFlightModeIndexToValue(j, i, idx + 1); @@ -883,7 +883,7 @@ void FlightModePanel::cmInsert() for (int i = 0; i < reCount; i++) { if (model->isREncLinked(j, i)) { int idx = model->getREncFlightModeIndex(j, i); - if (phaseIdx == 0 and j == 1) + if (phaseIdx == 0 && j == 1) model->setREncFlightModeIndexToValue(j, i, j); else if (idx >= phaseIdx) model->setREncFlightModeIndexToValue(j, i, idx + 1); From b79a55d668d510ed5a1fc769cda74ef01864c24d Mon Sep 17 00:00:00 2001 From: Kilrah Date: Sun, 17 May 2020 12:33:22 +0200 Subject: [PATCH 180/199] Multi protocol wasn't being saved in sorted mode --- radio/src/gui/128x64/model_setup.cpp | 1 + radio/src/gui/212x64/model_setup.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index eb7fea4ab..65c1d7a3c 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1023,6 +1023,7 @@ void menuModelSetup(event_t event) g_model.moduleData[moduleIdx].setMultiProtocol(multiRfProto); g_model.moduleData[moduleIdx].subType = 0; resetMultiProtocolsOptions(moduleIdx); + storageDirty(EE_MODEL); } } } diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 0de6b7294..808173efb 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -930,6 +930,7 @@ void menuModelSetup(event_t event) g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); g_model.moduleData[EXTERNAL_MODULE].subType = 0; resetMultiProtocolsOptions(EXTERNAL_MODULE); + storageDirty(EE_MODEL); } } break; From ff04188240b00c47a0bf024a46970b1ea8faa199 Mon Sep 17 00:00:00 2001 From: Kilrah Date: Mon, 18 May 2020 09:08:56 +0200 Subject: [PATCH 181/199] Allow trainer multi on T12 Pro --- radio/src/dataconstants.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 65f12aa48..f67d0cb07 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -208,7 +208,7 @@ enum TrainerMode { }; #endif -#if defined(RADIO_FAMILY_T16) || defined(ALLOW_TRAINER_MULTI) +#if defined(RADIO_FAMILY_T16) || (defined(RADIO_T12) && defined(INTERNAL_MODULE_MULTI)) || defined(ALLOW_TRAINER_MULTI) #define TRAINER_MODE_MAX() TRAINER_MODE_MULTI #elif defined(BLUETOOTH) #define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH From e1be961ff588844704e2d52d11d7763a6b0d462e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 18 May 2020 11:43:11 +0200 Subject: [PATCH 182/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index f70842e4f..c3e8483ea 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1733,3 +1733,4 @@ Josef Schaeffler Mike Frizell MeCodeGoodSomeday Timothy Fry +John Beech From 273b0ae81d29c4d47357c46611b93b2c066717c0 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 10:12:43 +0200 Subject: [PATCH 183/199] Bring BT option back to TX16S --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- radio/util/fwoptions.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 8825a5c42..fa02be60a 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1357,7 +1357,7 @@ void registerOpenTxFirmwares() /* Radiomaster TX16S board */ firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); - // firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); + firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); addOpenTxRfOptions(firmware, FLEX); registerOpenTxFirmware(firmware); diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index 7e5604fd9..811ff17b7 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -233,5 +233,5 @@ options_radiomaster_tx16s = { "faichoice": ("FAI", "CHOICE", None), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), - # "bluetooth": ("BLUETOOTH", "YES", "NO"), + "bluetooth": ("BLUETOOTH", "YES", "NO"), } \ No newline at end of file From a778aea8fb516c44e9f06481f52f880afa553321 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Fri, 22 May 2020 19:36:45 +0200 Subject: [PATCH 184/199] Fixes datacopy target (#7619) - removed GCC includes from parameters (causes duplicated typedef btw. GCC & clang otherwise). - make "frskyInstance" NOBACKUP (only 1 member can be backed up per union). --- radio/src/datastructs.h | 6 +++--- radio/src/targets/horus/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index a0571ac61..213d9cc4d 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -329,10 +329,10 @@ PACK(struct TelemetrySensor { NOBACKUP(uint16_t persistentValue); }; union { - PACK(struct { + NOBACKUP(PACK(struct { uint8_t physID:5; uint8_t rxIndex:3; // 1 bit for module index, 2 bits for receiver index - }) frskyInstance; + }) frskyInstance); uint8_t instance; NOBACKUP(uint8_t formula); }; @@ -941,4 +941,4 @@ static inline void check_struct() #undef CHKSIZE } -#endif /* BACKUP */ \ No newline at end of file +#endif /* BACKUP */ diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index b1a01e2e1..7bed170cf 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -310,7 +310,7 @@ if(PYTHONINTERP_FOUND) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp WORKING_DIRECTORY ${RADIO_DIRECTORY}/src - COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBHORUS -DPCBX10 -DCPUARM -DSTM32F4 -DSTM32F429_439xx -DCOLORLCD -DBACKUP -DSIMU -I. -Itargets/horus -Itargets/common/arm/stm32 -I${THIRDPARTY_DIR} -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include ${arm_gcc_include_path} > ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp + COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBHORUS -DPCBX10 -DCPUARM -DSTM32F4 -DSTM32F429_439xx -DCOLORLCD -DBACKUP -DSIMU -I. -Itargets/horus -Itargets/common/arm/stm32 -I${THIRDPARTY_DIR} -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include > ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp DEPENDS ${RADIO_DIRECTORY}/src/datastructs.h ${RADIO_DIRECTORY}/util/generate_datacopy.py ) add_custom_target(datacopy From 2b7524a7a777deb0d662cbe0801b56bfe0d69bd5 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 19:37:53 +0200 Subject: [PATCH 185/199] EXIT exist in all radios (#7618) --- radio/src/lua/api_general.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index fd06629e4..75bedea99 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1869,9 +1869,7 @@ const luaR_value_entry opentxConstants[] = { { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, #endif -#if defined(KEYS_GPIO_REG_EXIT) { "EVT_EXIT_BREAK", EVT_KEY_BREAK(KEY_EXIT) }, -#endif #if defined(KEYS_GPIO_REG_ENTER) KEY_EVENTS(ENTER, KEY_ENTER), From 174e0b126d25166514774f3e63194b930f157579 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 19:39:28 +0200 Subject: [PATCH 186/199] Fix x9 nav curve edit in mixerone (#7615) --- radio/src/gui/128x64/model_mix_edit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/128x64/model_mix_edit.cpp b/radio/src/gui/128x64/model_mix_edit.cpp index 681b425b4..a2180b6ac 100644 --- a/radio/src/gui/128x64/model_mix_edit.cpp +++ b/radio/src/gui/128x64/model_mix_edit.cpp @@ -150,7 +150,7 @@ void menuModelMixOne(event_t event) case MIX_FIELD_CURVE: lcdDrawTextAlignedLeft(y, STR_CURVE); - editCurveRef(MIXES_2ND_COLUMN, y, md2->curve, event, attr); + editCurveRef(MIXES_2ND_COLUMN, y, md2->curve, s_editMode > 0 ? event : 0, attr); break; #if defined(FLIGHT_MODES) From bb40239f5d66fff2ef79464256d691feea6c1774 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 19:41:37 +0200 Subject: [PATCH 187/199] Always empty aux ports buffers (#7617) * Always read serial aux ports * Cosmetics --- .../common/arm/stm32/aux_serial_driver.cpp | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) 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 53dcec950..8d24c00df 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -196,31 +196,18 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) } } #endif + // Receive + uint32_t status = AUX_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { #if defined(LUA) & !defined(CLI) - if (luaRxFifo && auxSerialMode == UART_MODE_LUA) { - // Receive - uint32_t status = AUX_SERIAL_USART->SR; - while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { - uint8_t data = AUX_SERIAL_USART->DR; - if (!(status & USART_FLAG_ERRORS)) { + if (luaRxFifo && auxSerialMode == UART_MODE_LUA) luaRxFifo->push(data); - } - status = AUX_SERIAL_USART->SR; - } - } -#if defined(AUX2_SERIAL) - if (luaRxFifo && aux2SerialMode == UART_MODE_LUA) { - // Receive - uint32_t status = AUX2_SERIAL_USART->SR; - while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { - uint8_t data = AUX2_SERIAL_USART->DR; - if (!(status & USART_FLAG_ERRORS)) { - luaRxFifo->push(data); - } - status = AUX2_SERIAL_USART->SR; - } - } #endif + } + status = AUX_SERIAL_USART->SR; + } #endif } #endif @@ -401,8 +388,21 @@ extern "C" void AUX2_SERIAL_USART_IRQHandler(void) } } #endif +#if defined(AUX2_SERIAL) + // Receive + uint32_t status = AUX2_SERIAL_USART->SR; + while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { + uint8_t data = AUX2_SERIAL_USART->DR; + if (!(status & USART_FLAG_ERRORS)) { +#if defined(LUA) + if (luaRxFifo && aux2SerialMode == UART_MODE_LUA) + luaRxFifo->push(data); +#endif + } + status = AUX2_SERIAL_USART->SR; + } } #endif #endif -#endif // AUX_SERIAL +#endif // AUX_SERIAL \ No newline at end of file From 61ca2cb64be140193459cb6005debc56b945eeb6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 19:53:22 +0200 Subject: [PATCH 188/199] Review font offset (#7622) Review font offset --- radio/src/fonts/480x272/CMakeLists.txt | 14 +++++++------- radio/src/fonts/480x272/font_dblsize.png | Bin 36974 -> 37236 bytes radio/src/fonts/480x272/font_midsize.png | Bin 26364 -> 26609 bytes radio/src/fonts/480x272/font_smlsize.png | Bin 12765 -> 12785 bytes radio/src/fonts/480x272/font_stdsize.png | Bin 22533 -> 22725 bytes radio/src/fonts/480x272/font_tinsize.png | Bin 8922 -> 8590 bytes radio/src/fonts/480x272/font_xxlsize.png | Bin 82621 -> 82882 bytes radio/src/lua/api_general.cpp | 3 +++ 8 files changed, 10 insertions(+), 7 deletions(-) diff --git a/radio/src/fonts/480x272/CMakeLists.txt b/radio/src/fonts/480x272/CMakeLists.txt index 09a68efdb..61ace50ce 100644 --- a/radio/src/fonts/480x272/CMakeLists.txt +++ b/radio/src/fonts/480x272/CMakeLists.txt @@ -10,12 +10,12 @@ set(FONT_OFFSET 1) #set(FONT_BOLD "Ubuntu/Ubuntu-Bold") #set(FONT_OFFSET 1) -add_truetype_font_target(480x272 tinsize ${FONT} 9 ${FONT_OFFSET}) -add_truetype_font_target(480x272 smlsize ${FONT} 13 ${FONT_OFFSET}) -add_truetype_font_target(480x272 stdsize ${FONT} 16 ${FONT_OFFSET}) -add_truetype_font_target(480x272 stdsizebold ${FONT_BOLD} 16 ${FONT_OFFSET}) -add_truetype_font_target(480x272 midsize ${FONT} 24 ${FONT_OFFSET}) -add_truetype_font_target(480x272 dblsize ${FONT_BOLD} 32 ${FONT_OFFSET}) -add_truetype_font_target(480x272 xxlsize ${FONT_BOLD} 64 ${FONT_OFFSET}) +add_truetype_font_target(480x272 tinsize ${FONT} 9 0) +add_truetype_font_target(480x272 smlsize ${FONT} 13 0) +add_truetype_font_target(480x272 stdsize ${FONT} 16 0) +add_truetype_font_target(480x272 stdsizebold ${FONT_BOLD} 16 1) +add_truetype_font_target(480x272 midsize ${FONT} 24 0) +add_truetype_font_target(480x272 dblsize ${FONT_BOLD} 32 0) +add_truetype_font_target(480x272 xxlsize ${FONT_BOLD} 64 0) add_custom_target(ttf_horus_fonts DEPENDS ${ttf_480x272_fonts_targets}) diff --git a/radio/src/fonts/480x272/font_dblsize.png b/radio/src/fonts/480x272/font_dblsize.png index 65f5a60fefc516349873fb46a1292e1dec345d76..b8d7d47173872ad24545b83e35f201a0a798fab3 100644 GIT binary patch literal 37236 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 diff --git a/radio/src/fonts/480x272/font_midsize.png b/radio/src/fonts/480x272/font_midsize.png index 0dc081f81a65ceee5cbd28d24b692832a1d9f9e9..4bc901499f9a2545775bfce40acf6e219f707c69 100644 GIT binary patch literal 26609 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 z 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

6(c;O{<*|C{{;#>MeCs8*>9f8K>}fpIA9|3E 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 TPAERrhQ)HnF4OB&58D3#W%5;{ diff --git a/radio/src/fonts/480x272/font_smlsize.png b/radio/src/fonts/480x272/font_smlsize.png index e19a1a13f9ac4392ada190d74122e4703bc3fb28..0c9dde7bded30273b8deaab112a010ddd013f678 100644 GIT binary patch literal 12785 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 YZk=u+@>d7&s~jk*N?M8)^5$Xx4+#zSnE(I) literal 12765 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 N8M7m zrLe&8B)t&$xO-H5a^3}*CNn~xEVWW~VUQBSB%?Ybhm;+jZ3Kd%GZc@=0I1L7!oob0 zUCMfXII=14_SrtG^PRUD9EWX&)`u<)xxnzLp|7ukw`ui-ULibQr!yV5nIc8GfkUrf zj^xey&W5x=rmZt%`Ye8uExlt1&sOihi1@9}ehjG>Z0M3tDUI#rTCsrGQC3j_4HqQ~ zvl5kIjCC!7QzEN!T#bdjxqC}vJZqQR$WbVtzK< z*u3pp?fv`b;VXS-m3idmQQY73^uSh`pP)|97-{no*vBXpBwlr5k49?W=;tF6oo&~q z>|hy0e%wmwW(PGZrU8`JjJWC1KlqfX44gUm;Iy6w0&jNtA4LY#TsiO?@9uWXwQj43 zAc}JmTd+TjQjy#rt*<3hL3OMCRMfSMtgsls05IR15&HOkMZTCCxw+rDlYTC7qkYY@ zqxt!po5N8iY8E(KkB*B_DD0AQv$K5_it%1v7UK+Y-9h&elTrpI*4YlpduU98VY4gg zcn`2DRc^OE3n0*685tX^m_B_&tl<9TLI?B&FjDg!vJbqn#EfSK!j{cY%l5V90z; zZouxJFtAityF=tO-FasJ5c(6YfX{tZ_mt7HBu6Lj-=%ZLe?vL!HJmw7-kM@Ct*uY+ z90Xxt(lxS&Hw?qwe0)|Q42?N1DB1)|q=7+4aSITGmD|kn7PX#A?r&b3NWa9PUH80Y zCy8%=Q7om-&Jr>zr)+d^&|sY42d~4WnnqWOTg+x7?tsJktY;ksOV+47?%vj!fVvgs z=g%rxSqv-71BJFow!C51#-R?uK-Not+YtXN9%_E!%V@%6!fA8v$vqXIdQ-fe-68ws zTe#i|mO9K0m6ecdn-=&Upd}0o4c%@%A~mU)((uK_4Hp$SUA9R%-{)G%W?RcGB4!KH za_f>777CpQv*q$9RudFV0+;b@ZgqYA&m<1Gy9d$o-~p#MAgmDreSkCwr=)6=gG3@J zS^9V@v7!L?`g(fo8K$`mrzD0%!wr3$jvYlUhT6+L^rYBkBh;NBZGgw2!qXHp1#`b% z4m1o409X)|=_OYvN^!{nDV_T!c*=*D7Hge=?^hPW^Rdi>2dxaKZ(R?^B zT5<9fL&*GlXCEC;i~8GQi6Me9^bwN+0`dqsRjcJ;VK#}&8-)zJ_3IN@VQexXr*1Ga zBNCw&5qN{o+deY)P}aAh*owd2PtYr|)hS_!PBFSiM?|1k>IBK6w~+h$Tg(Y#WeCnQ zD|8J5mKk&xc>=?78Rd+gcihQAwsTJCulx^S2H{_hrjU8&_ z1?wl5s}XJJi@;^6BLuF1py^(IZ~RZ1tZWl>UtxHuAT#3O6QUI=NDbe1Xn+Ev>Mks2 zFWnJ#zlnw7@^{%rQd$L$F1Ym`M5`^h}@Qy88=nvWVvU~q^sw( zo_^hXva6>D?D5ixVSZ-fZtdG-;ssEtcM{i>013qe0t_+$ci!&k`-lShOF!n zGM<<3@Be?E-|<|>ecX3-b6ua$`}2OE=WCtULoE%Z{p2j<1Oj2d@`ZC32?Vm&_%l5j z5&ruWuh2mPLI11rIXPXIxaoLv1A1k~^gATCn3(KXo?dv$m%_o}!(pmTLl<-;D7w-w zn)*`^2N!YV=@1&>saQpd5TX-b$bBx;@AjdQJ0;fsSE+CM%1^2Gc4Ftg+2((~ffH|X za&l&*9p7ktKTAPT^MH6S?a>R5Iplo)*B`vn-n_BwExBiHZB56e7A@{L8U9|&*f`$D zhlnt^Jk?1~PX6Z28<`nH+Oo%*iPB+g5=F0G-Tc#)UvR5wy*QIouG;H>w`^-i$EQ)d zT?9o%#ftlXw~Fr^O>V4|C^2tIn3$ZbPTNp0-5THbzdt(py8G5fX;RXlN$FD4i!=82 z_KS;)cl*j5$C~4-tE=z-ojJhB==E~TcZwZUzrbLXrEK5QmtXZU&ftgo-HEslM3 zU!x^FPDn_IiRt#1|B-9rHSz5jp%QOKM@!ptf4wu;WUT3hzP9!*LRXpNRH^-#xEAT& z?Xz1Oi<+FAsqdX^y!CXQHmi9$4{K-FS+My%UY8+H)p$le^^S&5&4TZZ@!9& zi7762zJ8ta@We<%#P8p~@AjAP#k=g?JG8i#l5>A+!<90yz@|@Jo0&j(^5h8~i2VIH zVe{rtX5rtT!w$Z8nm&?twZiRtSJ&!9dz$_4ugu~O7OJZI&T87&T;>LU{rZ)Ez3!H|xlYG(BJD6Wx?mDU^4bDA@_2K({k0M6#U-{w zK8cAYHa0UKJpTFJO6vA?cpLt>m6?`~Zggbi+CS&Be`g2u_4O0Q9pA`uP)92LNt>S^ zR^sL5b$0$+Rwkaj^OM`F!&JeR4(C;7`r zg@uLo*Xo?SdmWh0+PzFk`GvJpRaKReluVHE>i3qHy+10m!nt?v-s1uSTgg%XYu^uf zQAsDt-2Qg-*s)_eIy%C_1#xk4UJH{{hop6NbsZcXrw2ZMjEK+~z-=#0T)%z$__1S` zE?rWr4}EmJx~8Vs`sevE+E=e$-Cy|=bNY^+gTqp?LLkfr5f&C^rp3~D zZOkjZw_Mh|c=c+|t5=Rg)q5yv0w~$UZ-0A9N&l_*?f^EDDN~VY4GA4x#EP`PQaJm( zi{vVQ$@}+8=g&JOQPOUO^uBk_y;5vr`#L<%(8wq&H+Ob&a((*endCHVcd4UC&nYU7 z{^>4|7dHCnX{@7T-<4;|&(AL}OixcgK0aP~mQOn}G&q>$wB@sOS|JKvK0cAtrz<@E ziJqO9{GQ3cz(B<=$-&)}D1#drYHDhdZ`{D)h>VQn)`+VgTU0bI&dF)+@89Y)@j4K> zt0oV}C^{zQVQhu#zZL#Jl;;lEP4}F}_J6{ubg|dd#zr8#ZgF|}fScgJM=$-07f%QZ zYHDiY;Lgv@Sy)=8r04PQu*7h6?AHkR)%_%SkuN>j^WruG9*7NoS3uzS@#FHst$*ai zyOl1C3*i~=T&?HkdN@y9%NYJDdE$f$2X)XFg|YUakdT9?Zjkv?7Znz&sj0o>Nfy3n z$mcFCBP3+|BkMBi+q=BH61Qc``>I_i7~^fJxFo8k-8f*AvZp_IZL_noO4{^_1^?Je zF4XrkW70$Au(UKp<#_gNWMV>DXLUQ`tuwYIt_v5~-`}69mu)#aar5R)R4tPa?hnJm zqoSe`g-qq^-n3m^YpL{ndHoDOe|BhSD5U|H#AiHUE{(X7y93gD_V}-^y4=5i-^66V z>-V?+DtB_@$&)8t=YQ=XB)xf~g3Ycg>gc#EX!3zTh>eXEV{Mkvm)WWDt0(8y+_@s~ zleIS+pWie$&wTTSUCfq)pMQF$@4ZEle(qHohFC1z?K^kqRQ|0mPc=kv*Hl-(eED*` z^RT$Mp`oGM^5pmNDqPm}x<~O+_ZbMb*uVI_`8D^Fl(|ap-R{yR9Mpe)7UNm9)Ykg9 zj9s~W+115`KnM;AK{J`R>#w-a$iUz<`sF~Ot)gNrem5gM-QxCb6!tr}Z{I8J{r&q^ zb=fki(2pN_N=i!AJiouj2xsc&dM=G?+uI9=)PDQ%gZ-@C4R`l))Q4E>&KzT2{hX}y z^v4kq`^d;HsH?vk7E8~_$iNw>3E2Ph?ah5&5aGRu$F5= ztp{E+1#GU3CE}SL627H&>(=Yc%*-y;3yecr2B$`_?XVO-cgM-7! z=;-z|i}E2GyG>tNLqmgO(Ydz=EItL%;PO^AFJ1cn?c2qJ2VaCR3ewuGudY@q zy5rH((9l?Xn;)*r&dMSX@DNm=^T|cUv7+6eA%6Mt1(iLyNC{ms^X|Y0^r8y4}VIhq*UxD%|4+ppWHdQe)r?+Yd^Ryk`S~^Of)@~o9$!EW@7b=-TpEzsXT-yo|cQ6?f{V{>y}R9jcKu%Mu^zMf;`Hcn!Z zRm{VO53y}?a%^tgxS_7Tzm)j+@eJ&SmbkNv*c0^nRhKK=PAg7gd(OAtv9!b@bXMGV zW@cu-etkGSou|42myW$mBY-1CPNC-XFJJCp zJl4Cgb9$7qF^LJpq@<}a-Bv5Zb>VGRw{PFJ*gQ#rt*(6G0xAhG!=I&K%YyQ}@4(MQJ2zJ;^k-}HA8rU`OCiLt#P+anRefV)jgZx^ zPY>`Z2Jq`_} zID7W&(u?5t)Q3$3Re@F_JN-QwL&`ReVP+gqE`($Xp_ zD(FV7t*r({R?L#kV~gLve{cNqg)C+l!AL+~PEJlk<5AVMk&zMVvNRwPQc_Y}C!of0 zo!4DIf8r-&qoavQNZ4gOjdV}<^z;CFpm=DA0mg0poBdd`4fGed|KRW0S(#g3nPg-> z;&fsQV$sj?@mT>K0)@qi-8&*M@U^K4{cm-&k&&VXM+Ub^AWTk9VlNDoyDs*;yHodw zP2%Pk`Vx*Ob;DI*=Wy|P?NyiGSsv&&86-W(!UEWm5uzns7jO*`5fR@zI{r*g-&WbG3qLe9K90@T-q13(cu3040eyLV z+ydnVpk#DxES0%(K*>~HUH#OlQ%nKI@14|jbRr%z1D#9pF-)PBk5?Vw)vN#Vg_c+> z!34D*z{hXc)z$U<`SU0TY^{~Y3r#3$M6J3Abwub;SFwo?U&{LIZ)$My;l|#_0cR@i0}!C(5O=8_}FA1+*{Z{v<^< z^8_?clMxf$y?d9$_vH1@p}&5afd|-e`#+4(rcNGs(sgFP{MPIG7L9RkWhH{VpQncd zF~_+M($%#^b97XS8lV7|?JW=a6YrK@KmID_V3;6I70*TcJy(vFmR5|F(slAF7m@ch z98ne)77@la%>>EruV2+HzM)1K@I6oG-;+YjcLQt+Pq;N%!EYD^4tSNuP38La)Z*ge zjEv)Q407o&;(up7Yn?U2j_J@jV|?Vbkjhy>J(cztr=)H@>SQ9nTYJ&W_c8Dd+Lh|O zR-<_r*B?f+}v=>QW4dpt)TP)QgU%V`Pu{n6O%)*?&`ja&cKQPcw3D^aE(Ha{e`A}!FDeo( ztG(M4dm6NBJUt6r^3|(RY!SkPqN1YDpU+PUmPS-cd91det`RDK)rRDne55qz)}Agx z@jG#XJm=!!kc7NEA#`*$2`99EeuF&1hQ}|@Z!eW`{L#0YT3P`7&JqT(OGnlRJ-_ee zI&}GRcTi9eC)qejCAgVzj2cQ3&Smm!Zex_;EQgS&D9O7E-qrp+^QNHBm}S?<8qgi!oux8f4-<0qGw>J z?ig!H9Hx5GbPIi9SmxetQAbVN<;hEg%AuOTHVWIdqpZ_4U$yuYusXX4SUew@pFKS{ zZr+R%FedkEju8%QxUmI5>7s2VD#6D`vE{xzdEiCU`J2}upv1 zO0eq6+a*)m)y3rDl~mIX9283Io|WD+GBZO-NSZJrtI0#nx@>5OJO1`{yXA#Db`L(v z!^5MXpdeA|{`oQbNfi)5`qLxmp9dp7qd$!-cK#yCr;Od2+L+=>#34#b;^=+M5saQ8 z);E_JP|aM68yqUjM3ZvgTz~iWEm)=W(WAt#LB4gN56n92WgDWyK{#MyU?7Ql(D3Dp zM!fjD^77uVUw69O>L_Y%n)-_$Jw20SV>ow?c&0r)hU41VsN87n@{vQpfs{-_4{Ybq z;3e6qa(w~TYp1UV^z=+|km(&+#HK>?s$pNl z<1#fhWu;Wo)_ziJw(HXkS{j;@Xt)NTK?xmP~^hEClP(EurC=1k>Aax&*9Mv@Fe%$UOYSQR`AKWkN z=+NmCY)|m=@&h8T=*-X0H#axSGZs#xw|x7CB0wv1QCr*8+S+4bqyfEn2^-j$MeN;5 zh-oy00S5<>0Mi$u*6645Q6JjcN`xq;x(m4DtkqOh-sa`WDjhRZD#w+ge}bMc1=N1} zBqk=76a%pV@Ni}Nr@fsWB!_cN?fgb1T34^KpPn52njm#WPR_eLI1|vd^1&|fMdDd6 zs6ddo%F4?8GPc2IE?>EF#n2FVKEOS)u&@xNbKkqy9i5#LVq%ZEInTw*&o^hGGB%Fd z^q0rP`I&Y>1;cgtmp!{}ZOsNk|Ki0J7nhP&dvKt;w{JhpIZi{~;Wg7+x|>j0@wU?D zZ+n{N=K6BYX|>6D%6D6#ZA|vsnd4^5m-1NzDVN7MJ4O_wTBn|xYD7i5r;}zooImMc zL+ZAbk(2W%EG!bl_T+VvQs&w(JZekM=lTZG>FC$GpU5c35>eA_F1N)kq;3)LDF6Ka z%|K24fZUwSf9W&NF=0QAMxC+bfpa6C`)_`KbLr8eNAgm#!J|MD0JDC_8OhJZxWCEF zw6?N37gKSZm@mNez<~oO*z)gw4Gs=!r=H&{#VaLM0h}z)NUn88V)OFxL`4)|KMszP^e#Z@%>PNul*r9FugJtL*A3DJydW zQNWq-4;p zAURo1MTNY=nVUQ9!2^Q4hqUKLIvUTfU-Ck0y88ON3C-~m+)Dyz+$BacK700!_u7Gf zYu7fSVZ0l0y?=jrN(6iNS!85#gdRoBz(Il7u|r9(Uz6C#-O4veZ-@zf`t)L*k>R#vZ<*sA)B*VjVj}PN@Baaj z&pDb-OiZB0yScgH44|ZHqtzDN+MnQ6?Y9>-5=0xA0eYYsmyW7x=7$fSP$q2SNdEnG zoce)IR(+2pv4v{iK6^*UTK%y?z^PB4y1Kic6laIBo_$)rE+{JM1RZx(6HH_BcqA5N za$@4Yb^-O*NK1?GH|uA2w{|G|y$GroO}7fVnF18f_~=tQM*mMS+lx9X%T47&wA6Qmyyj#|R`Lg2O1{8yDA` zuATa=y?ve&+Xm>se=(ZK8!`^T&8ONGpb*Cx-1MBy^A)>|)qB7-09~s(9Mn*&soaDE zOG-yYb54Hn&Q|l*M^Y0FiV}<(oH00e@G$px>yg zhoz-)Z#0bBK_nb}CiSVNX17hqE`o@tC<_x47K}QFhnnn^uy7mKtIvIXn;=r?rhda$ zuU>`fP{}sX*w8SvOiX|`<*_v0#(6#zRuk{gCx~#AtYWsH0NB(4FR0RC+GOPBDrx>* zSa@4dpm1k=W(Myeu;c(=$Ey1+#5KUt;0gw|N9K8s z30))n(e3fCsHlLY1No}W7wiJC>a?&h=M7O|VMyB-fJ{P{=pj|8xe7QjHSGHhf3UGQt7T^VX@Dsm@%|ot1w5@?|KS1Q4d7#qx8$%fMYv5)w4n zEX_7n=Yb9ZQ<6V)L%DljRwi(@d=)niaWk!%kNiJH;+mBeA2&CO@4hA%9xTS;!-rv6 z!bm~ATHD%`h=up32Xh6y0eT3;?4i0nL{->Tr$t1-)^HX=_Swhb-_e&NYKE5nbT3x> z@0-KhW`%|ACsZ~zhE!ea=;){%hD{(U%J7_liHYgpLDk1&uuQO;dQfLtTd_Ll@7&={ zAm;u!mk7xOQX1WNmOGs}kg-3q+2#ZCq&aBp@IlI9TP{ zHIDWDmbY(%FY&>zu&5;vplVNl&t!ybC@LDjo7ZYT{Oi}}P-ae0#n-PzL2X2uNfTR4 zN^FzS&7vCF&f1M+T`r)YplG!>2cNZQdH@LR)2B}Z14-F=6^)HO zCOa|+gaZd6A3vsc(Smm0@bs9Aw=ci^WYwK*FFUVRDX_uClckkZaaLAApvg6M!Mzl4BfycO7Y&gm& z?1Jk{=6H7};TGO}A<|@sHTfuu4lGK5Re}-%Ug` zclC2y+dQ~DJQzc)bZF?;+7Lz{$8dJ3FQay;sj1;?5&)Q@W}kw<*3u7YBucZ@2ysP} znzyhYJa~|bifUB=V)N-cKhiTZb1xSJXeDB)b#Lz?{DGc_RfS%^O2ZYgw=qV>>%-cB z_W-4@90kkd;NaX~mG7Q?4CU@?c2hsHS9$r#p&;|H0-=D(G0@Ty6^kTSRN^whox6jbiHxjDc$bbH>YM&KuKeVo>g zA3tV(WWVtC_D)MPS5T-qnZgODsiPknG)xs)u4M3#0!A<39f&5<uz`JZey&qdj7iOIQ#GV&{16vu)TUoLT8@%HicMW@#^<$9BwoBQTXEVMbu zGO)*>$3t4jA8bjzB%J;rr_o0lzImWgNm=z3$`71f8kTIXOq_65;hmnKc*qkUc(AsLd^5-&izux?V zao!c~Yo`)+9Kls_Es7ew9HWN^B_T9RJ5K6~{D68tj9&x*h*5i;9-n;!0$=42Y#j$2 zonv2;2T+Ky(QdUQ@D~;0UZMBj{aKX#>Xo9lHjVSUa9_hWuu}ALuQtJF(~oburE@p& z$j>qvk9A^#?BB;ux1y**YJ)>VU#34urxpL$nD**bEpF-Cx2M#1A85RTJOJAs!X{wd z96y_*qhsqCe{c}fsPM?hORlb^02eQnBL?NF%V?9S%(gbxY%k}hpQyU`51P6Vg|EFk zu&AFrmu5ofUCU2?{N6E;r77n zR;;-ql)IcB?)^Es2-#osh5FUz2Qv%ahk24J=T}x3{w0K%K{vxY!#@V3x}~K>9a1aL zXtm%X$rW)HArG`fe&e!d4L4He9g$#ZG0R7RwzIc~zVzjq(A@Ms^hk3dCNvKGOK@1& z%~LVs0*PqrLQJ70B_)s$;A22bQy_f<-=nqHZlwOn!h&6ShJLnT?KPp4)YO8vZ_Tb> zfA#VuQVne?Z@d3McEqPv9iz0kK~ycuW_M@!y?b-q*_s=t_D*S$r7gNhGBd~c`T70% z^9L3J;Xy{m1Xc%)w**oo_FADWdpM~_FnM+tFxH?tav-t=b!ew;_Lup7fUx5O;i!=k zWbgm<^CMp6L-8LhwOGV0!-j*sW7AW(_wP*@gfDY*z0iW<;#jedLDNdK{vx|$%f10o z0}#|FCi2;{)-O12cvWr>&D?OmqHHUIE3tqQj&9aN4Mu=*eB3jDMTS)T?zw2 zl2=GbOH(r!T^9B@q%P>Q>@v}lYvR&k_pYSd}bJ??Kf5B_fZ z@&&!uI+}TAp{fPq*29pHkcbGnNp1q^z$hI=H_r_hk%z2}b*-&)_%xS*oh=G89Q|xu zN?c5=vIXQ7FA|#z2gry+82HUj#k4l@eE}7RAi(3~4%PmWwzgc3Ou!C%M5IheNN61B z&B>`qmV;yU4}&;)jk3CWt&EqNL#J%~xxSFSeHqGauBIY|CX>A1+Dbls@v@W(ls{L~ zo}2|KOz+~wBb|vUCl#0JJHpP-IPe@5^^arxSu~QSd`~cb!YAWOw0NZ9cGWqD_t7QE z-UgeO|3s^11wZ0cF{!n%C^wTyr2MlmvBSM)7pnaB8{Xq_S_`URo788VDhy4ru?@Z( zyz!?#apa=_A!9aPJhIG;DeQS#M4$$pc4vVwzwF_LguxUD?5PX*flug$c?02+%XymkDorJ zJy1Q(|IlKVDgC`gfh^V>TjJD(dAr!x+7YMv7)I2n8FJN)TVddk2{ws7=_YGv70#aKymus+6a2Dqvm$|7mbn11!H_q9FO>i|ALq z%|QL(dRwo{OaWC|uWpPb`_b0>XliIs@&~#fD9k;U_Dd(nHj%VjMJ|mp{>)k><8}P@ zl3?&_aS4f!9{-*<-1v2PKZH_#PR^a0jC+0CKw2YYVfX&tFv*JZvE2gK1EmMF2XjvK zhKA{7Kx`^3>_B{_akQFo5cWcmlq>Nkf_rk`Rgu?8h_!-j;ZA+~*e;A(Xm0 z*=ecAQNC~&q7XiPx|WRsLBfDqv*h+DTLsN~_wr>q5Qpq7vc3YR4Vd$lYLpN~L0;Yi z)mrUqWQRz64~q~l!RA4)JHpB7D%lUi%D-PjRW$@MBm5B8r?FOkl|oji<&a(ceA64o zP

Nu@u)g93cbmt*vU?)jju=(dH$LY+$Zf^33*7=kI4V}EyKwr9_@qAZ|X z`#lnXXMsny(;T_|{rm=X*onMlm6W)7c*wR!7T4f6xVRubcZ5(0+~}Q%pGLkg*zMe2 zN=mM1cP;$|cs%2;U1GTsu^0F3*`vEaCKX>dJT#<$+j{%?07h$bPF>v^fr`0p zu(}-^##E?*{T2^N1TGR*qL(>bgg}{bkR?7>Sw z&w#ab+!`J2?KPeLm1jtM1OaYx&<4oLi7)3}^9~JFQ&!%4_90R7qduS)Mt;K^78Vw! zrrsoPx#qBW8A23uz9O&*Rejv$wNHCeYaAyvnbz22;-0B4YlOqpxFV8BtLKW?^47n` zo(`!sqtRu9Qws=CPz7rk&^qDh((pkuq?%TJIl#-Q+ni`xrfL+S%ai`?+c-!tnv+>d%hN`M};D+z$ zTP8Ya7C`*G-X^Opjz0Xep>tx_x($is_G6fKf^34>X{>Yga ze)N<|Y!T$=_uu-oh<3iP04W*{eiITXIM)3j*bvUJF_4y0%)W^u1*-A$-5q`8B7qU` zXkhuN=?UkpM7#5pkxX9o1l7%I=t3@fj zA62(JvRCNf{KbyKO3|* zG9CNXQuyT-%@JCvxAU3BkIQb6s!;!v)|!&sQRWJEl(|ar!`rnIPIQV$7dV`H)5yq;Ucp_>*;k6;B%>68LI`IIcf-N-_HW-n83Ohn z3}Em5=;d|({AciFWV>OlpeFA>W4w!iD9&rO7{J`Oi2cfJt#b14jN{JJ8O5}rm|a63 z`M9y5>gu}o=2B*v^X#M7GhO+^3j>EsUg~ITBiO|!AfTb5(gWos?yP-l2jDEEMkE|l zUz}IG2bcm+L(bVY^?aBcQe&Q;(uc#L5g6G%dGX@C-RKwGa!1p(x=NwYxn^pj_$qc? z-4jM`;m=97yP@`fpkeCUqS#tc_dDf0)7#uz9l@=M?F&)rEix>Of>#}q{194%(`4eg zw&(A35pD_!Svtz)!r#+SWRPCD-TstoiYV_}JnjP!T=eOL$%HLApT_AxOrh=#F$gd!+$s#kYEh2yEC z!)bLv$vAx{wo_KdB2I~-gOjc(^9l-4jd2Ue%o@7X+)&N@QQbjFpj~*V`fkx`$XN1L z-KY41N&yG2?VBxQmYA&uT?(k9d7n72=rrgB2_jKC zz#9FPeCWSB!9*b;YR&zS_N=WHZ)ODtlW%Q9Z~oxEM&!7=i^KK;p^8yqkcpX@<`I|? z(#=R4LO#=%WEaHl@9)3*r|GGw5YvuEq7hF-aNk(Xhcx|hA4ACK@82YhZ{uXVJmKgl z1WL(IWiwb`{8m7GUO9OLqorR>*?u{)ZE!u3vP}oi8mi7-9k7JF;dv~ zU?{=XXU6LptFH;6^TZ!Mb;=F`B~CsUYgA;Ul*hUQn31HE)Wm%czgLKx>|g}Hmk{v8 zUm+AI>r6~Ra=prDk5C+YGjeB5U%w`KliPvvqe&p8yTkjqo<4t$T?TRZ18@yGB1H}t zxs;R?9_O7qQ(#9Z=v_TMSD`8siC8>m{GYfnDTi@n zv;LxKKo!D^%zWrk-?^$Ar?hk3#3244q$}pSa03#-yTGexS8ojp-o2|G@S+R^cHT)H zLx+cgQBun-BjW`p2Cx^afPgGwOT2=DXHK5nMOd2Y`v-CaXX!m6$zU{y+wMeVkP&uZ zJ?8&<=KIpwBvg5<7$k(C)1Y?;I~!y_OChe?u9=`aF};5CnFgzcJ}N^rcf|_6s?nwTZyRe-kn7NK*nWG z*3gi}X8mv;${tMV@iJpMxvHKXmXC?E10ONq0GATULPww(AY;H5c$z=+Om~a3f8KF9 zj9rE+OW8Z9a^Jo^wNVb8eNI{S%$Z{B6oi);#Xo`{_{wOT+<%OziC=UBK(r}_6Cf?v zvP$9g_4Ne8pa?H9i^kx+Sh$&COef7Cc>&pSq@mBXH#J$K=U}VAbqFNIF59W=7*tA4 z4(EArvbELXyoC!bb~{R$&y^NDUN}NXqNe7C$#NKAq6L3JqZ|MA>#fWDFU;X|=9Jmzmq(rWms!#!4|$m0q8-5%j0Z1cBO}ydaY%f~ z=2smBtc5ayrx8@a@C9-`P5@cH6WXK^HJOLx;RBsANCEAb_#~{SEj!Sxk*QG>8X$T) z2lExle5dzs)Co>qyn0!Ad3j7{Y*-I(>}4A)7Diqj{sRot-{>@JYimMA-mUq&2oGw_ ztT9Q2=7BRYevgM*D^q9${2WTk^4z219lr*O0Y(deTuo`?l8#$ zn56;8K^Cvo28-Zl@A`JIFCKp~J)Jzm@q(jPVxl4d?9DTAYgNfeK&B+K8H^G z`Cp1ACMGg6GUE@$&YbD2t0U#V0VA+g?ogE?)@%;ddcMhnA2SZa}Fcxcc`Y#kl_ zn`dkp1dI%jQb1D`}^blzcx-zD|l+!6@PKUP=i&~)cky+QuZVug}nLC zSwTTTAZnkpl$}@{zzUcNOPHAd;zT=lx^bMeM^9fLTR;kq!V+3M{7`B%c6e|R5xf6p z4PQ`JmJ4Zy_8z%Sxs=*;<5a^TPi5tY;J@K@z7jD!GeiVjygy5r7Aq@j&ee(?R}>>L z0F70VHsJi2ZP);9Lx;xG$AnhgnKgh9v{FE1Xx8vO#s&v%(ZD)7bdBhQL_~H*5DIxS zGcwRTns8-=%27KA6X4u9Tu`kp^D*>)tjTdlMZu675I!U|JbDkzd7#z9A%*q_6-|P! z*f-@)(#+|e?;*RsH1BI|_dK3+L21}BcVkwFgoFfgJD%qu2`9dsGOaWJLuJk#R)Iyb z<|Ng$@`jFW#%DqydppSAt$g>nsTPqsBeP2m;_D~;Kdai$b$K5oH9q-u!p@J<@b-~O zCqEyjlkv~~>lOWXga2=@0CgEJEbo#OG3i`cxg#?BMEbO-MpoyyEHfik2uQE$g3aUePT zI|5$C>iT-HxSX;w3a2Kd|1+YZTd13$$Ixkvigr&K>gz{EM+Ye>7Ukt(sOtXGIF0Eu z10y4MSS1jf?)DTS5{47!jBP=+f4_eQ1~$AFf2-^2f+r)j-35RK$pGMDFC+icJI4eC z2Rb^=NmHJA{jg8^8$JiM3_`riFr4%NnTF&+FpJ1afreBVCB1GH>xNaHdeJQ%_alqz!eEb{;f3@j<@9ud4JHj$3# z=K+juaYpx>ItSS};G71=#~b4f;1NeP950e{!5)Eu(e4JWT z(B@~+bc@V3!XfIasxW!aesH9PI^hk~?fyesVxlS(5>r3^^N>q40o%;S2MF*WIi z0}Bld!SD|m84ukOh@>S-m`pBTX5NsJ7o&7{J?Gdzx4Rd^1T;jUC0z8A-^z9%!0(X} z*gZ{{7pgPfvxlXnm0wQFiz9a_FzFWiYLppiv{s3c4F(@TX|Tv0X_|)sVuSab?oic3 zXM=~PiFN^~f?Q&<@tfk}zj)M|abokBz;t$Y2Cv5I0-j=kc_GTgQ*IyZ2eycYjk%%S zrhzIbqELenSOC9O=>J7`;J`9UFDxHwz0XFN%|T}BYxGHQ7`SPy!nZ=-zFokg>17!l zo)iExNRAmp2gkbk-{-t$&Q0#3UGg-b;YRhl(+Jn33ycDOzknN3@{9RPN`f zXRp)J0{#40#T|I~_(E&V5ONDiDn@Up60bav!Gm2HsDD(~4m%c%MT_moc!a$7$?F-5 z$eO^Eb8&Nn;vseH*eHB#d=xU8*x2|$r~{a3)7IAy9DW8^hxHynF6YDvOK_o*BYrwp zukOqkZlwA6R3j09`5t6Yo<&9NG&xWp*c*@=y)n^DW_aZaQ0pcl2;+BmtrsH^j~31Z zOb0m;NeHl4+>53v>u-_r)dt#7V zvWMUCdhq1&^n>d3DLY=q-OhHaTybyC6&kH#A;n3mZw8+xce(=o3Gt-t+=~|FYzHO3 zr3u%t<|iJApWoxHL20PiM|nCvN}Jwc^+oks=N^vb3Z0k1*-Y^}zD4ttiU%W`%`S3f z%CRXwX*cY+^#a!i=T$FKDW7v>rB^n4QE|QCB3o*WS#Y!DLxbb|q6%Ys>bGV0nhgX# znvhJQJF;Z{xI#u@FI&{ML10(mZMt4cyUle+1hzy#vkf=f2C$&nH(AMOMDM9OCZeTNF6yMk8JmOn>rx~MUSWl^*N|9d+Z+&Kx=u7nykb~ zV6xH~YIDkw56J9ksi*`GYF*)j34;PJ))N3dXLEQqDM5{tg2{GnP)=Jec>*dhGBrj< zMy+9jJ2dfsh9e4|#IukR6Ym&x+oev^h9th;KZMSlVf1+BM~jOGG)F0DJ2i1`nLd*I zpD!kJmXZnzgeT{VD)QZT2B`>@zQlk=^n^S({Mvh}J?>+?b*f9fDMq-izWxG;Y`BU! zvP~k-sYbwbkae?tLz64xz>*LV;cMGjBKWO$D zAoubLNo-PX&l*Re149yF-x(E9*lo!o*%U*C!*-?Vjry$V z;+3*;@-!@sr2ka)QcVxH8b})x{kb>KO(s>F+|&$nLK|TK2g&D}7(Mgxkw;D~p$yX| zJlx5NdP}c;e0*$8R&`x`V$`j zF30B~B@z*?kHV(Xwr9D6Qq00T9f4Hk0H~s zzw=-e-({jyVmt(9CMHzH;o0-KS1TaJtO zN+=oNG?MJ$)SQfC=tpzCa2KE-hvV<6D?1=^n>Pp+>)q;V)T z$=9dPy!SA2+iaQDl16N%`-)kGw zU|q{i(!kznvuAE%Y&(u|h@oPg#dxNe{OPN)zDlS><5WxHl3!{5U4GakYu*~nDf%2% zf>wE%@sU&>mbmp7DRlB10|y>-{MCq8F+Pdp?jjxa&vRyp*8;CRkber<7TqS;Z3#~u z!OR+JalRcuPR|yYel)p>GVrTKL9w%5FhS0fcAWO4qEd56=QEP}>j5Db7I3{45o^P-Lp*bg&B0G?>8oaec7#5uXCm4hcOZ0#(O zBml2kSX|s&=i%-?*R6R9Xa^)HV7s`e=uJijgoo#G{KCS>`?0Zkpgoj0To^yF2_7J#@WUtm`MD&3Q+F|vN)QaBe0Dir^0>4d=)AT@>nO> zS@zZBA;JRR3J?&AE~dI?H*gg*A65pCT6% zKYo;%Il>_!aq#p09%OD4l1odwo0~P1l*}PT0MUaD7XaQAAm44itm<6oD|FlEamwrr0^nLzzO zy2lZLYS{BA%>XP#@7`$_?}n=xf=nZZQ0(j$@W~)o8A(Y($O-U_au9o5;Gl+<`V-L& zuV1Kxtd!hbT)(ksD1H9ThcTMf5Jh*|04(EqM1;MQlQgnKhPNrdwk#xi&qMa!4> zfnV_H5+$wk=SkkR*GxN%?+Z0GxNso|E;k_899^lAfOLG=5eLEsZdD*^>dzlFmmejs zLmrAEdUeavl7*2maQly41XW^7XItAucflAMJhY=hlDX~z^I>MBN+TNZ)gxtKE|47% zTWY<_jnRo(v+TNqf9j0Vzo~Mbf0R>*h;IW}$g0zP?HsO&YKDA~;mNR(H z1j0d4tIDw{%zu;`*|@o_174bnvHCC&GoHuS6FmKXVBCxL^W!=p3UNloCVi#=sDCjr zF(~hVugFOG7&G*=?QQ2dBn{(T-`Uod;|`g~;b`}nfsZCj&aGn_gJ9Qu3?WGeuX$be z0NGY3prq$YL??tc0_pg&~FPVI@z5u1M7Dw`BfqLD|dCT&~cM5@AR-~k26 z_YJAo&Jh^+jDvwHAH))ZuK}8xm>6nL0u{#U;Bqigdu})m#~oQhFGTJj|I~bpMRrL- z;yt_vGXB!6EH#{C6DLHinL%j0Wwowc`8Ss6^{X4=THUDK-hJVC7CZ58u%Vqj57h{x zNqBra&H+4+6-WdSnJjF)W57osG*I1VaIYy#O&!L!aJb>{p;g?)7zGu1uBP|0)5)z0qJP@AAp2{qTd#u0_S zr}S+573<`l94*{2t8#$UMgM0Gt`@r3ZH+!zajw_tqviiE;6K0Dp`SEZ@Kw!`CGM#I z@c#2{d6I*WGaa3rxDF|KSKYlvml}Ku+Q`ke6vbBklIPF$@Xa4vO%WNHnXq;s03bX) z{;LW=0K4)DbvH*_ci++0wC=no|QW^iUhV_2ht=EzY4mMsGo+WPV?hBzEK4Omt+-s5Iqozz*I|CR#s{0 z8mwuuMH6hrOFB9SK}v8u8^VO33T>nX2Ys%UM5U2558Xw8B9B=_rm=oB==7^(Yc52ArJ`FVK;z@Op`kD~BhJJuE!@FSHI z92C$Wc$v-iA8?oULZJd=8nG1vjK+M;cn-bxF|BAsi7-Jihn|e!y}te-Q7a}JD(Xvv z@VhWghsl|YyW}P#sytPAVMb;9_z%QAm_pn9o1Z|n`czkk)kh`^-)n|DN?ozn9;Hsl zaQ?%GCxwI_KY8MPP?Yp1Ap?_tZz$B1zv}V+9 zUJ|7UMG*XFctAI5Cm#hAWasD@84=Om**O5W0QO~hMa8@>GNhX~8yXw&O=Mr=C8Amr z;3FX$X(jp|?FdFnRro$)AKVJ$T6|Fu)V>pB58dDia z1fY6oXb5m{aPaWdW0pDlhJK7YE&~}0Xd?5X+xK=#KZ?+G8=K}^1?p;QWJTxM!}0Y* z46LkKFf&t9fQuyy?E#ySkcTsf7oOBX$hbTGHxF4&pm6B?cBMu@vxTa^7S~_{L&+;K zeT`WwM3Ug;Vqi>C(j5}yh`->@*9mBFvX1kU4;+B%uy5{f_H*0CV>TiFA@SN0!~v#I zu2)ac1+@+;jIXHVQ>#gj@c7BvHG zah=!K|BHJYpMbG0dG8mo(N!V%>yX9qg){h8zBLT_<6Ar6-&?;zsb*$jX^uYWd#wOv z%;%lftOr6jluy~k=Bl?U*2W=L-`-%KTPp_>4mO|k}?iUJb8uIzCU*iD%mO>!}g^<+m05K`hTi8`(UW^IF7Sf;v79l&LyYVoTH?N zX?mPm>!DOD*XTjc)lIQ=)w0|5aJ4!NX|jr3Wp_`DW*ZWA=Qbf zPHOM9nz_02zuDjH{=V<;=ktC_+~8YrsE1*L6HH@_SiFU(Qv6|c{_P9hpZm^n6csjU zrxsU7hwo^$I(X*XUl@_Rl^=!VB{!?QzkWDfwDYFeUv+7+F($1TSUXAUIHPXFiS+1p zsVpte! z{(zlZ^-Swl!nmMUdb(X)c~VNs&ZwxvcUrgiYa;`L6#n8yxzzQD>{Vu_!?J5lStrL0 zZL)S=oR#Gv>oLD;I#c4+Rk_?~O&ZxNVx?uancX9J-}M3S(+p0EXMPqAVTtu6N9vpK z{b9#`yb3-8y;RC;hh_*qvz_n@zxVL@f>J;gEWI0}x6fJzk z;5z^5Tq$`u$G(YxW_R{IU|sTA?&CGZgvuVB%7eS)+X(xzp0!|XID_mG3!zXxZxZ7R zXPNXtbyby_P-ywELu}|=O|aicB_H5}-zYWBn7Nbxemb(M^!wfM z)1N0&g0S-J+`5K_-Du+c0YaQY{JHirBZJxN=IG?4aa(aJDXQGrPbRyp)w-0|xOe1q zSXA#DY5$BhW*RU_{kq~VC3x%BuV=^}zP{nzD7N@>=&Vd>J@=m=i2-0{2QuRgfvlbd z*h6Jr8sFgIBAw3He?hM+HyKZ`jF|$>=;f&N?vlh4UlswIERpbhcrSRb9zIr=v05CKVO(tuSb-IEOy4&{<0hvCON!8nL`G|>dR6ansi zWR7U-RF%p;l+E6D_|rcf=KLp1KFTK!#241p_$!OniY&X6O@ zfz;rjE`5EL<<_uANn`DcvRW2Z1d%jyK!aJ{#fGAjeqxYdp34h5jpvSa{IN~p{@R)vD;pa&2`?($20{$2*zT3Q%5u4!51y8{ z+^*7KWmq6`HgXi3P%2qvpu))MLFiUq2~7WgeeQn?b>BF*8%$K5r<=~7smrI{m%Q65 K-z&=^e)tD~WSThu diff --git a/radio/src/fonts/480x272/font_tinsize.png b/radio/src/fonts/480x272/font_tinsize.png index 8f2456ce2a5638c5318963201925d6c30163ceb1..1d5c7b32b6572094eb05faaf863d3e4ec3910e18 100644 GIT binary patch literal 8590 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 diff --git a/radio/src/fonts/480x272/font_xxlsize.png b/radio/src/fonts/480x272/font_xxlsize.png index 4de2330ff0f195a6de8822854df4ef3c5b131d80..cd38d5e6d40918886329bf63a8bd1df75a9e01d7 100644 GIT binary patch literal 82882 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 literal 82621 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 E3*vLeXaE2J diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 75bedea99..99dd8aeab 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1728,6 +1728,9 @@ const luaR_value_entry opentxConstants[] = { { "DBLSIZE", DBLSIZE }, { "MIDSIZE", MIDSIZE }, { "SMLSIZE", SMLSIZE }, +#if defined(COLORLCD) + { "TINSIZE", TINSIZE }, +#endif { "INVERS", INVERS }, { "BOLD", BOLD }, { "BLINK", BLINK }, From e68662764fcaecd9d1578297e470d72eaebc5dc1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 May 2020 19:55:04 +0200 Subject: [PATCH 189/199] Battcheck fixes (#7602) Battcheck reviewed --- CMakeLists.txt | 2 +- radio/sdcard/horus/WIDGETS/BattCheck/main.lua | 232 +++++++++++------- 2 files changed, 148 insertions(+), 86 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0011a7aa..e9bca79b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "8") 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 "0027") +set(SDCARD_REVISION "0028") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) diff --git a/radio/sdcard/horus/WIDGETS/BattCheck/main.lua b/radio/sdcard/horus/WIDGETS/BattCheck/main.lua index 215d589ac..58790445a 100755 --- a/radio/sdcard/horus/WIDGETS/BattCheck/main.lua +++ b/radio/sdcard/horus/WIDGETS/BattCheck/main.lua @@ -19,15 +19,50 @@ -- Horus Widget to display the levels of lipo battery with per cell indication -- 3djc & Offer Shmuely -- Date: 2020 --- ver: 0.4 +-- ver: 0.5 +local version = "v0.5" local _options = { - { "Sensor", SOURCE, 0 }, -- default to 'Cels' - { "Color", COLOR, WHITE }, - { "Shadow", BOOL, 0 }, - { "LowestCell", BOOL, 1 } -- 0=main voltage display shows all-cell-voltage, 1=main voltage display shows lowest-cell + { "Sensor", SOURCE, 0 }, -- default to 'Cels' + { "Color", COLOR, WHITE }, + { "Shadow", BOOL, 0 }, + { "LowestCell", BOOL, 1 } -- 0=main voltage display shows all-cell-voltage, 1=main voltage display shows lowest-cell } +-- Data gathered from commercial lipo sensors + +local _lipoPercentListSplit = { + { { 3, 0 }, { 3.093, 1 }, { 3.196, 2 }, { 3.301, 3 }, { 3.401, 4 }, { 3.477, 5 }, { 3.544, 6 }, { 3.601, 7 }, { 3.637, 8 }, { 3.664, 9 }, { 3.679, 10 }, { 3.683, 11 }, { 3.689, 12 }, { 3.692, 13 } }, + { { 3.705, 14 }, { 3.71, 15 }, { 3.713, 16 }, { 3.715, 17 }, { 3.72, 18 }, { 3.731, 19 }, { 3.735, 20 }, { 3.744, 21 }, { 3.753, 22 }, { 3.756, 23 }, { 3.758, 24 }, { 3.762, 25 }, { 3.767, 26 } }, + { { 3.774, 27 }, { 3.78, 28 }, { 3.783, 29 }, { 3.786, 30 }, { 3.789, 31 }, { 3.794, 32 }, { 3.797, 33 }, { 3.8, 34 }, { 3.802, 35 }, { 3.805, 36 }, { 3.808, 37 }, { 3.811, 38 }, { 3.815, 39 } }, + { { 3.818, 40 }, { 3.822, 41 }, { 3.825, 42 }, { 3.829, 43 }, { 3.833, 44 }, { 3.836, 45 }, { 3.84, 46 }, { 3.843, 47 }, { 3.847, 48 }, { 3.85, 49 }, { 3.854, 50 }, { 3.857, 51 }, { 3.86, 52 } }, + { { 3.863, 53 }, { 3.866, 54 }, { 3.87, 55 }, { 3.874, 56 }, { 3.879, 57 }, { 3.888, 58 }, { 3.893, 59 }, { 3.897, 60 }, { 3.902, 61 }, { 3.906, 62 }, { 3.911, 63 }, { 3.918, 64 } }, + { { 3.923, 65 }, { 3.928, 66 }, { 3.939, 67 }, { 3.943, 68 }, { 3.949, 69 }, { 3.955, 70 }, { 3.961, 71 }, { 3.968, 72 }, { 3.974, 73 }, { 3.981, 74 }, { 3.987, 75 }, { 3.994, 76 } }, + { { 4.001, 77 }, { 4.007, 78 }, { 4.014, 79 }, { 4.021, 80 }, { 4.029, 81 }, { 4.036, 82 }, { 4.044, 83 }, { 4.052, 84 }, { 4.062, 85 }, { 4.074, 86 }, { 4.085, 87 }, { 4.095, 88 } }, + { { 4.105, 89 }, { 4.111, 90 }, { 4.116, 91 }, { 4.12, 92 }, { 4.125, 93 }, { 4.129, 94 }, { 4.135, 95 }, { 4.145, 96 }, { 4.176, 97 }, { 4.179, 98 }, { 4.193, 99 }, { 4.2, 100 } }, +} + +local function periodicInit(t, durationMili) + t.startTime = getTime(); + t.durationMili = durationMili; +end +local function periodicReset(t) + t.startTime = getTime(); +end +local function periodicHasPassed(t) + local elapsed = getTime() - t.startTime; + local elapsedMili = elapsed * 10; + if (elapsedMili < t.durationMili) then + return false; + end + return true; +end +local function periodicGetElapsedTime(t) + local elapsed = getTime() - t.startTime; + local elapsedMili = elapsed * 10; + return elapsedMili; +end + -- This function is run once at the creation of the widget local function create(zone, options) local wgt = { @@ -40,8 +75,8 @@ local function create(zone, options) telemResetLowestMinRSSI = 101, no_telem_blink = 0, isDataAvailable = 0, - cellDataLive = {0,0,0,0,0,0}, - cellDataHistoryLowest = {5,5,5,5,5,5}, + cellDataLive = { 0, 0, 0, 0, 0, 0 }, + cellDataHistoryLowest = { 5, 5, 5, 5, 5, 5 }, cellDataHistoryCellLowest = 5, cellMax = 0, cellMin = 0, @@ -50,7 +85,10 @@ local function create(zone, options) cellCount = 0, cellSum = 0, mainValue = 0, - secondaryValue = 0 + secondaryValue = 0, + periodic1 = { startTime = getTime(), durationMili = 1000 }, + periodicProfiler = { startTime = getTime(), durationMili = 5000 }, + profTimes = {}, } -- use default if user did not set, So widget is operational on "select widget" @@ -65,7 +103,9 @@ end -- This function allow updates when you change widgets settings local function update(wgt, options) - if (wgt == nil) then return end + if (wgt == nil) then + return + end wgt.options = options @@ -83,8 +123,8 @@ end local function onTelemetryResetEvent(wgt) wgt.telemResetCount = wgt.telemResetCount + 1 - wgt.cellDataLive = {0,0,0,0,0,0} - wgt.cellDataHistoryLowest = {5,5,5,5,5,5} + wgt.cellDataLive = { 0, 0, 0, 0, 0, 0 } + wgt.cellDataHistoryLowest = { 5, 5, 5, 5, 5, 5 } wgt.cellDataHistoryCellLowest = 5 end @@ -99,9 +139,12 @@ end local function detectResetEvent(wgt) local currMinRSSI = getValue('RSSI-') - if (currMinRSSI == nil) then return + if (currMinRSSI == nil) then + return + end + if (currMinRSSI == wgt.telemResetLowestMinRSSI) then + return end - if (currMinRSSI == wgt.telemResetLowestMinRSSI) then return end if (currMinRSSI < wgt.telemResetLowestMinRSSI) then -- rssi just got lower, record it @@ -118,28 +161,28 @@ local function detectResetEvent(wgt) end - --- This function return the percentage remaining in a single Lipo cel -local function getCellPercent(cellValue) +--- since running on long array found to be very intensive to hrous cpu, we are splitting the list to small lists +local function getCellPercent(wgt, cellValue) if cellValue == nil then return 0 end + local result = 0; - -- in case somehow voltage is higher, don't return nil - if (cellValue > 4.2) then - return 100 - end - - -- Data gathered from commercial lipo sensors - local myArrayPercentList = { {3,0},{3.093,1},{3.196,2},{3.301,3},{3.401,4},{3.477,5},{3.544,6},{3.601,7},{3.637,8},{3.664,9},{3.679,10},{3.683,11},{3.689,12},{3.692,13},{3.705,14},{3.71,15},{3.713,16},{3.715,17},{3.72,18},{3.731,19},{3.735,20},{3.744,21},{3.753,22},{3.756,23},{3.758,24},{3.762,25},{3.767,26},{3.774,27},{3.78,28},{3.783,29},{3.786,30},{3.789,31},{3.794,32},{3.797,33},{3.8,34},{3.802,35},{3.805,36},{3.808,37},{3.811,38},{3.815,39},{3.818,40},{3.822,41},{3.825,42},{3.829,43},{3.833,44},{3.836,45},{3.84,46},{3.843,47},{3.847,48},{3.85,49},{3.854,50},{3.857,51},{3.86,52},{3.863,53},{3.866,54},{3.87,55},{3.874,56},{3.879,57},{3.888,58},{3.893,59},{3.897,60},{3.902,61},{3.906,62},{3.911,63},{3.918,64},{3.923,65},{3.928,66},{3.939,67},{3.943,68},{3.949,69},{3.955,70},{3.961,71},{3.968,72},{3.974,73},{3.981,74},{3.987,75},{3.994,76},{4.001,77},{4.007,78},{4.014,79},{4.021,80},{4.029,81},{4.036,82},{4.044,83},{4.052,84},{4.062,85},{4.074,86},{4.085,87},{4.095,88},{4.105,89},{4.111,90},{4.116,91},{4.12,92},{4.125,93},{4.129,94},{4.135,95},{4.145,96},{4.176,97},{4.179,98},{4.193,99},{4.2,100} } - - for i, v in ipairs(myArrayPercentList) do - if v[1] >= cellValue then - result = v[2] - break + for i1, v1 in ipairs(_lipoPercentListSplit) do + --is the cellVal < last-value-on-sub-list? (first-val:v1[1], last-val:v1[#v1]) + if (cellValue <= v1[#v1][1]) then + -- cellVal is in this sub-list, find the exact value + for i2, v2 in ipairs(v1) do + if v2[1] >= cellValue then + result = v2[2] + return result + end + end end end - return result + -- in case somehow voltage is too high (>4.2), don't return nil + return 100 end --- This function returns a table with cels values @@ -152,20 +195,13 @@ local function calculateBatteryData(wgt) return end - -- this is necessary for simu where cell-count can change - if #wgt.cellDataHistoryLowest ~= #newCellData then - wgt.cellDataHistoryLowest = {} - for k, v in pairs(newCellData) do - wgt.cellDataHistoryLowest[k] = 5 -- invalid reading, set high value so the min() will update it soon - end - end - local cellMax = 0 local cellMin = 5 local cellSum = 0 for k, v in pairs(newCellData) do -- stores the lowest cell values in historical table - if v > 1 and v < wgt.cellDataHistoryLowest[k] then -- min 1v to consider a valid reading + if v > 1 and v < wgt.cellDataHistoryLowest[k] then + -- min 1v to consider a valid reading wgt.cellDataHistoryLowest[k] = v --- calc history lowest of all cells @@ -181,7 +217,8 @@ local function calculateBatteryData(wgt) end --- calc lowest of all cells - if v < cellMin and v > 1 then -- min 1v to consider a valid reading + if v < cellMin and v > 1 then + -- min 1v to consider a valid reading cellMin = v end --- sum of all cells @@ -197,7 +234,6 @@ local function calculateBatteryData(wgt) --- average of all cells wgt.cellAvg = wgt.cellSum / wgt.cellCount - wgt.cellPercent = getCellPercent(wgt.cellMin) wgt.cellDataLive = newCellData @@ -219,13 +255,19 @@ local function calculateBatteryData(wgt) wgt.secondaryValue = "-2" end - wgt.isDataAvailable = true + -- calculate intensive CPU data + if (periodicHasPassed(wgt.periodic1) or wgt.cellPercent == 0) then + + --wgt.cellPercent = getCellPercent(wgt, wgt.cellMin) -- use batt percentage by lowest cell voltage + wgt.cellPercent = getCellPercent(wgt, wgt.cellAvg) -- use batt percentage by average cell voltage + + periodicReset(wgt.periodic1) + end end - -- color for battery -- This function returns green at 100%, red bellow 30% and graduate in between local function getPercentColor(percent) @@ -242,34 +284,46 @@ end -- This function returns green at gvalue, red at rvalue and graduate in between local function getRangeColor(value, green_value, red_value) local range = math.abs(green_value - red_value) - if range==0 then return lcd.RGB(0, 0xdf, 0) end + if range == 0 then + return lcd.RGB(0, 0xdf, 0) + end + if value == nil then + return lcd.RGB(0, 0xdf, 0) + end if green_value > red_value then - if value > green_value then return lcd.RGB(0, 0xdf, 0) end - if value < red_value then return lcd.RGB(0xdf, 0, 0) end + if value > green_value then + return lcd.RGB(0, 0xdf, 0) + end + if value < red_value then + return lcd.RGB(0xdf, 0, 0) + end g = math.floor(0xdf * (value - red_value) / range) r = 0xdf - g return lcd.RGB(r, g, 0) else - if value > green_value then return lcd.RGB(0, 0xdf, 0) end - if value < red_value then return lcd.RGB(0xdf, 0, 0) end + if value > green_value then + return lcd.RGB(0, 0xdf, 0) + end + if value < red_value then + return lcd.RGB(0xdf, 0, 0) + end r = math.floor(0xdf * (value - green_value) / range) g = 0xdf - r return lcd.RGB(r, g, 0) end end - --- Zone size: 70x39 1/8th top bar local function refreshZoneTiny(wgt) local myString = string.format("%2.1fV", wgt.mainValue) - lcd.drawText(wgt.zone.x + wgt.zone.w -25, wgt.zone.y + 5, wgt.cellPercent .. "%", RIGHT + SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) - lcd.drawText(wgt.zone.x + wgt.zone.w -25, wgt.zone.y + 20, myString, RIGHT + SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) + lcd.drawText(wgt.zone.x + wgt.zone.w - 25, wgt.zone.y + 5, wgt.cellPercent .. "%", RIGHT + SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) + lcd.drawText(wgt.zone.x + wgt.zone.w - 25, wgt.zone.y + 20, myString, RIGHT + SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) -- draw batt lcd.drawRectangle(wgt.zone.x + 50, wgt.zone.y + 9, 16, 25, CUSTOM_COLOR, 2) - lcd.drawFilledRectangle(wgt.zone.x +50 + 4, wgt.zone.y + 7, 6, 3, CUSTOM_COLOR) + lcd.drawFilledRectangle(wgt.zone.x + 50 + 4, wgt.zone.y + 7, 6, 3, CUSTOM_COLOR) local rect_h = math.floor(25 * wgt.cellPercent / 100) - lcd.drawFilledRectangle(wgt.zone.x +50, wgt.zone.y + 9 + 25 - rect_h, 16, rect_h, CUSTOM_COLOR + wgt.no_telem_blink) + lcd.drawFilledRectangle(wgt.zone.x + 50, wgt.zone.y + 9 + 25 - rect_h, 16, rect_h, CUSTOM_COLOR + wgt.no_telem_blink) end --- Zone size: 160x32 1/8th @@ -307,13 +361,13 @@ local function refreshZoneMedium(wgt) end -- draw values - lcd.drawText(wgt.zone.x, wgt.zone.y + 35, string.format("%2.1fV", wgt.mainValue), DBLSIZE + CUSTOM_COLOR + wgt.shadowed + wgt.no_telem_blink) + lcd.drawText(wgt.zone.x + wgt.zone.w, wgt.zone.y, string.format("%2.1fV", wgt.mainValue), DBLSIZE + CUSTOM_COLOR + RIGHT + wgt.shadowed + wgt.no_telem_blink) -- more info if 1/4 is high enough (without trim & slider) if wgt.zone.h > 80 then - lcd.drawText(wgt.zone.x , wgt.zone.y + 70, string.format("%2.2fV" , wgt.secondaryValue), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) - lcd.drawText(wgt.zone.x + 50, wgt.zone.y + 70, string.format("dV %2.2fV", wgt.cellMax - wgt.cellMin), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) - lcd.drawText(wgt.zone.x , wgt.zone.y + 84, string.format("Min %2.2fV", wgt.cellDataHistoryCellLowest), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) + --lcd.drawText(wgt.zone.x + 50 , wgt.zone.y + 70, string.format("%2.2fV" , wgt.secondaryValue), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) + lcd.drawText(wgt.zone.x, wgt.zone.y + 70, string.format("dV %2.2fV", wgt.cellMax - wgt.cellMin), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) + lcd.drawText(wgt.zone.x, wgt.zone.y + 84, string.format("Min %2.2fV", wgt.cellDataHistoryCellLowest), SMLSIZE + CUSTOM_COLOR + wgt.no_telem_blink) end -- fill batt @@ -321,28 +375,21 @@ local function refreshZoneMedium(wgt) lcd.drawGauge(wgt.zone.x + myBatt.x, wgt.zone.y + myBatt.y, myBatt.w, myBatt.h, wgt.cellPercent, 100, CUSTOM_COLOR) -- draw cells - local cellH = wgt.zone.h / wgt.cellCount - if cellH > 20 then cellH =20 end + local cellH = 19 local cellX = 118 - local cellW = 58 + local cellW = wgt.zone.w / 3 + + local pos = { { x = 0, y = 38 }, { x = cellW, y = 38 }, { x = 2 * cellW, y = 38 }, { x = 0, y = 57 }, { x = cellW, y = 57 }, { x = 2 * cellW, y = 57 } } for i = 1, wgt.cellCount, 1 do - local cellY = wgt.zone.y + (i-1)* (cellH -1) + local cellY = wgt.zone.y + (i - 1) * (cellH - 1) -- fill current cell - lcd.setColor(CUSTOM_COLOR, getRangeColor(wgt.cellDataLive[i], wgt.cellMax, wgt.cellMax - 0.2)) --lcd.drawFilledRectangle(wgt.zone.x + cellX , cellY, 58, cellH, CUSTOM_COLOR) - local percentCurrent = getCellPercent(wgt.cellDataLive[i]) - local percentMin = getCellPercent(wgt.cellDataHistoryLowest[i]) - - lcd.drawFilledRectangle(wgt.zone.x + cellX , cellY, cellW * percentCurrent / 100, cellH, CUSTOM_COLOR) - - -- fill min - lcd.setColor(CUSTOM_COLOR, getRangeColor(wgt.cellDataHistoryLowest[i], wgt.cellMax, wgt.cellMax - 0.2)) - lcd.drawFilledRectangle(wgt.zone.x + cellX + ((percentCurrent - percentMin) / 100) , cellY, cellW - (cellW * (percentCurrent - percentMin) / 100), cellH, CUSTOM_COLOR) - + lcd.setColor(CUSTOM_COLOR, getRangeColor(wgt.cellDataLive[i], wgt.cellMax, wgt.cellMax - 0.2)) + lcd.drawFilledRectangle(wgt.zone.x + pos[i].x, wgt.zone.y + pos[i].y, cellW - 1, 20, CUSTOM_COLOR) lcd.setColor(CUSTOM_COLOR, WHITE) - lcd.drawText (wgt.zone.x + cellX + 10, cellY, string.format("%.2f", wgt.cellDataLive[i]), SMLSIZE + CUSTOM_COLOR + wgt.shadowed + wgt.no_telem_blink) - lcd.drawRectangle (wgt.zone.x + cellX , cellY, 59, cellH, CUSTOM_COLOR , 1) + lcd.drawText(wgt.zone.x + pos[i].x + 10, wgt.zone.y + pos[i].y, string.format("%.2f", wgt.cellDataLive[i]), CUSTOM_COLOR + wgt.shadowed) + lcd.drawRectangle(wgt.zone.x + pos[i].x, wgt.zone.y + pos[i].y, cellW, 20, CUSTOM_COLOR, 1) end -- draws bat @@ -447,7 +494,9 @@ end -- This function allow recording of lowest cells when widget is in background local function background(wgt) - if (wgt == nil) then return end + if (wgt == nil) then + return + end detectResetEvent(wgt) @@ -456,11 +505,21 @@ local function background(wgt) end local function refresh(wgt) - - if (wgt == nil) then return end - if (wgt.options == nil) then return end - if (wgt.zone == nil) then return end - if (wgt.options.LowestCell == nil) then return end + if (wgt == nil) then + return + end + if type(wgt) ~= "table" then + return + end + if (wgt.options == nil) then + return + end + if (wgt.zone == nil) then + return + end + if (wgt.options.LowestCell == nil) then + return + end if wgt.options.Shadow == 1 then wgt.shadowed = SHADOWED @@ -478,14 +537,17 @@ local function refresh(wgt) wgt.no_telem_blink = INVERS + BLINK end - - if wgt.zone.w > 380 and wgt.zone.h > 165 then refreshZoneXLarge(wgt) - elseif wgt.zone.w > 180 and wgt.zone.h > 145 then refreshZoneLarge(wgt) - elseif wgt.zone.w > 170 and wgt.zone.h > 65 then refreshZoneMedium(wgt) - elseif wgt.zone.w > 150 and wgt.zone.h > 28 then refreshZoneSmall(wgt) - elseif wgt.zone.w > 65 and wgt.zone.h > 35 then refreshZoneTiny(wgt) + if wgt.zone.w > 380 and wgt.zone.h > 165 then + refreshZoneXLarge(wgt) + elseif wgt.zone.w > 180 and wgt.zone.h > 145 then + refreshZoneLarge(wgt) + elseif wgt.zone.w > 170 and wgt.zone.h > 65 then + refreshZoneMedium(wgt) + elseif wgt.zone.w > 150 and wgt.zone.h > 28 then + refreshZoneSmall(wgt) + elseif wgt.zone.w > 65 and wgt.zone.h > 35 then + refreshZoneTiny(wgt) end - end -return { name="BattCheck", options=_options, create=create, update=update, background=background, refresh=refresh } +return { name = "BattCheck", options = _options, create = create, update = update, background = background, refresh = refresh } \ No newline at end of file From 741407174fc82251bed298eb85d71acf928da2a4 Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Fri, 22 May 2020 18:57:07 +0100 Subject: [PATCH 190/199] Fix 7598 - Wrong Flight Mode Index when exiting from Gvar Menu (128x64 display) (#7601) Fix #7598 --- radio/src/curves.cpp | 8 ++---- radio/src/gui/128x64/gui.h | 2 +- radio/src/gui/128x64/menu_model.cpp | 1 + radio/src/gui/128x64/model_curve_edit.cpp | 26 ++++++++--------- radio/src/gui/128x64/model_flightmodes.cpp | 2 +- radio/src/gui/128x64/model_gvars.cpp | 12 ++++---- radio/src/gui/128x64/model_inputs_mixes.cpp | 4 +-- radio/src/gui/212x64/gui.h | 2 +- radio/src/gui/212x64/menu_model.cpp | 1 + radio/src/gui/212x64/model_curve_edit.cpp | 26 ++++++++--------- radio/src/gui/212x64/model_outputs.cpp | 2 +- radio/src/gui/480x272/menu_model.cpp | 1 + radio/src/gui/480x272/menus.h | 3 +- radio/src/gui/480x272/model_curves.cpp | 30 ++++++++++---------- radio/src/gui/480x272/model_outputs.cpp | 2 +- radio/src/gui/common/stdlcd/model_curves.cpp | 6 ++-- 16 files changed, 64 insertions(+), 64 deletions(-) diff --git a/radio/src/curves.cpp b/radio/src/curves.cpp index 3a1bf1f27..2606611c9 100644 --- a/radio/src/curves.cpp +++ b/radio/src/curves.cpp @@ -20,8 +20,6 @@ #include "opentx.h" -uint8_t s_curveChan; - int8_t * curveEnd[MAX_CURVES]; void loadCurves() { @@ -317,8 +315,8 @@ int applyCustomCurve(int x, uint8_t idx) point_t getPoint(uint8_t i) { point_t result = {0, 0}; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); bool custom = (crv.type == CURVE_TYPE_CUSTOM); uint8_t count = 5+crv.points; if (i < count) { @@ -333,5 +331,5 @@ point_t getPoint(uint8_t i) int applyCurrentCurve(int x) { - return applyCustomCurve(x, s_curveChan); + return applyCustomCurve(x, s_currIdxSubMenu); } diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index b5ba20b5d..1e48d6746 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -216,7 +216,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; -extern uint8_t s_curveChan; +extern uint8_t s_currIdxSubMenu; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; extern int8_t s_currCh; diff --git a/radio/src/gui/128x64/menu_model.cpp b/radio/src/gui/128x64/menu_model.cpp index 4a450d143..b6f5b3bb3 100644 --- a/radio/src/gui/128x64/menu_model.cpp +++ b/radio/src/gui/128x64/menu_model.cpp @@ -45,3 +45,4 @@ void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8 } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; diff --git a/radio/src/gui/128x64/model_curve_edit.cpp b/radio/src/gui/128x64/model_curve_edit.cpp index 51294e1b3..8f606072c 100644 --- a/radio/src/gui/128x64/model_curve_edit.cpp +++ b/radio/src/gui/128x64/model_curve_edit.cpp @@ -50,8 +50,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -71,14 +71,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -89,10 +89,10 @@ void onCurveOneMenu(const char * result) void menuModelCurveOne(event_t event) { - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); - drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_curveChan+1); + drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_currIdxSubMenu+1); SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0)); @@ -108,9 +108,9 @@ void menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -131,8 +131,8 @@ void menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4 + count] = points[4 + crv.points]; for (int i = 1; i < 4 + count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index cfe15842b..b1b408b4a 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -148,7 +148,7 @@ void menuModelFlightModeOne(event_t event) drawStringWithIndex(INDENT_WIDTH, y, STR_GV, idx+1, posHorz==0 ? attr : 0); lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, ZCHAR); if (attr && editMode>0 && posHorz==0) { - s_currIdx = sub - ITEM_MODEL_FLIGHT_MODE_GV1; + s_currIdxSubMenu = sub - ITEM_MODEL_FLIGHT_MODE_GV1; editMode = 0; pushMenu(menuModelGVarOne); } diff --git a/radio/src/gui/128x64/model_gvars.cpp b/radio/src/gui/128x64/model_gvars.cpp index 4299469fe..f2e25875a 100644 --- a/radio/src/gui/128x64/model_gvars.cpp +++ b/radio/src/gui/128x64/model_gvars.cpp @@ -64,10 +64,10 @@ enum GVarFields { void menuModelGVarOne(event_t event) { - GVarData * gvar = &g_model.gvars[s_currIdx]; + GVarData * gvar = &g_model.gvars[s_currIdxSubMenu]; - drawStringWithIndex(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdx+1, 0); - drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode())); + drawStringWithIndex(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdxSubMenu+1, 0); + drawGVarValue(32*FW, 0, s_currIdxSubMenu, getGVarValue(s_currIdxSubMenu, getFlightMode())); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID); SIMPLE_SUBMENU(STR_GVARS, GVAR_FIELD_LAST); @@ -92,13 +92,13 @@ void menuModelGVarOne(event_t event) case GVAR_FIELD_MIN: lcdDrawText(0, y, STR_MIN); - drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdx, GVAR_MIN+gvar->min, LEFT|attr); + drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdxSubMenu, GVAR_MIN+gvar->min, LEFT|attr); if (attr) gvar->min = checkIncDec(event, GVAR_MIN+gvar->min, GVAR_MIN, GVAR_MAX-gvar->max, EE_MODEL) - GVAR_MIN; break; case GVAR_FIELD_MAX: lcdDrawText(0, y, STR_MAX); - drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdx, GVAR_MAX-gvar->max, LEFT|attr); + drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdxSubMenu, GVAR_MAX-gvar->max, LEFT|attr); if (attr) gvar->max = GVAR_MAX - checkIncDec(event, GVAR_MAX-gvar->max, GVAR_MIN+gvar->min, GVAR_MAX, EE_MODEL); break; @@ -108,7 +108,7 @@ void menuModelGVarOne(event_t event) default: drawStringWithIndex(0, y, STR_FM, k-GVAR_FIELD_FM0); - editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdx, k-GVAR_FIELD_FM0, LEFT|attr); + editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdxSubMenu, k-GVAR_FIELD_FM0, LEFT|attr); break; } } diff --git a/radio/src/gui/128x64/model_inputs_mixes.cpp b/radio/src/gui/128x64/model_inputs_mixes.cpp index 03bdfb411..953ee64b1 100644 --- a/radio/src/gui/128x64/model_inputs_mixes.cpp +++ b/radio/src/gui/128x64/model_inputs_mixes.cpp @@ -271,7 +271,7 @@ void menuModelExpoOne(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1); if (ed->curveParam) ed->curveMode = MODE_CURVE; if (ed->curveParam>=CURVE_BASE && event==EVT_KEY_LONG(KEY_ENTER)) { - s_curveChan = ed->curveParam - CURVE_BASE; + s_currIdxSubMenu = ed->curveParam - CURVE_BASE; pushMenu(menuModelCurveOne); } } @@ -442,7 +442,7 @@ void menuModelMixOne(event_t event) drawCurveName(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr); if (attr) { if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){ - s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); + s_currIdxSubMenu = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); pushMenu(menuModelCurveOne); } else { diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index 20dc6b09b..5968bd320 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -229,7 +229,6 @@ swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t e void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t event); -extern uint8_t s_curveChan; void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); extern uint8_t editNameCursorPos; @@ -247,6 +246,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; +extern uint8_t s_currIdxSubMenu; extern uint8_t s_maxLines; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index 402189fb5..f8058499b 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -67,3 +67,4 @@ void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_ } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; diff --git a/radio/src/gui/212x64/model_curve_edit.cpp b/radio/src/gui/212x64/model_curve_edit.cpp index 3d3b083a8..681480602 100644 --- a/radio/src/gui/212x64/model_curve_edit.cpp +++ b/radio/src/gui/212x64/model_curve_edit.cpp @@ -52,8 +52,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -73,14 +73,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -92,10 +92,10 @@ void onCurveOneMenu(const char * result) void menuModelCurveOne(event_t event) { static uint8_t pointsOfs = 0; - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); - drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_curveChan+1); + drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_currIdxSubMenu+1); lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y"); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); @@ -114,9 +114,9 @@ void menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -137,8 +137,8 @@ void menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4 + count] = points[4 + crv.points]; for (int i = 1; i < 4 + count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) diff --git a/radio/src/gui/212x64/model_outputs.cpp b/radio/src/gui/212x64/model_outputs.cpp index c1cd1de04..bc5f34d43 100644 --- a/radio/src/gui/212x64/model_outputs.cpp +++ b/radio/src/gui/212x64/model_outputs.cpp @@ -212,7 +212,7 @@ void menuModelLimits(event_t event) case ITEM_LIMITS_CURVE: drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr); if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { - s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); + s_currIdxSubMenu = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); pushMenu(menuModelCurveOne); } if (active) { diff --git a/radio/src/gui/480x272/menu_model.cpp b/radio/src/gui/480x272/menu_model.cpp index 761bc9180..09ce6523f 100644 --- a/radio/src/gui/480x272/menu_model.cpp +++ b/radio/src/gui/480x272/menu_model.cpp @@ -151,6 +151,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; void copySelection(char * dst, const char * src, uint8_t size) { diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index f82baeb14..e9f4e7008 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -437,8 +437,6 @@ void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event, uin uint8_t editDelay(coord_t x, coord_t y, event_t event, uint8_t attr, uint8_t delay); void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); -extern uint8_t s_curveChan; - enum { WARNING_TYPE_WAIT, @@ -461,6 +459,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; +extern uint8_t s_currIdxSubMenu; extern int8_t s_currCh; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; diff --git a/radio/src/gui/480x272/model_curves.cpp b/radio/src/gui/480x272/model_curves.cpp index 3abf03ddb..a7f8adf29 100644 --- a/radio/src/gui/480x272/model_curves.cpp +++ b/radio/src/gui/480x272/model_curves.cpp @@ -52,8 +52,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -73,14 +73,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -105,11 +105,11 @@ enum MenuModelCurveOneItems { bool menuModelCurveOne(event_t event) { static uint8_t pointsOfs = 0; - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); SUBMENU_WITH_OPTIONS(STR_MENUCURVE, ICON_MODEL_CURVES, IS_COORDS1_LINE_NEEDED() ? 6 : 5, OPTION_MENU_NO_FOOTER, { 0, 0, 0, 0, uint8_t(5+crv.points-1), uint8_t(5+crv.points-1) }); - drawStringWithIndex(50, 3+FH, STR_CV, s_curveChan+1, MENU_TITLE_COLOR); + drawStringWithIndex(50, 3+FH, STR_CV, s_currIdxSubMenu+1, MENU_TITLE_COLOR); lcdDrawSolidFilledRect(0, MENU_FOOTER_TOP, 250, MENU_FOOTER_HEIGHT, HEADER_BGCOLOR); if (IS_COORDS1_LINE_NEEDED() && menuVerticalPosition == ITEM_CURVE_COORDS1) { @@ -139,9 +139,9 @@ bool menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i * 200 / (4 + crv.points)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i * 200 / (4 + crv.points)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -161,8 +161,8 @@ bool menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4+count] = points[4+crv.points]; for (int i=1; i<4+count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(-RESX + (i * 2 * RESX) / (4 + count), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM ? 2 :1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(-RESX + (i * 2 * RESX) / (4 + count), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM ? 2 :1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) @@ -298,7 +298,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag drawCurveName(lcdNextPos+10, y, curve.value, (menuHorizontalPosition==1 ? attr : 0)); if (attr && menuHorizontalPosition==1) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { - s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); + s_currIdxSubMenu = (curve.value<0 ? -curve.value-1 : curve.value-1); pushMenu(menuModelCurveOne); } else { @@ -316,7 +316,7 @@ bool menuModelCurvesAll(event_t event) { SIMPLE_MENU(STR_MENUCURVES, MODEL_ICONS, menuTabModel, MENU_MODEL_CURVES, MAX_CURVES); - s_curveChan = menuVerticalPosition; + s_currIdxSubMenu = menuVerticalPosition; switch (event) { case EVT_KEY_BREAK(KEY_ENTER): diff --git a/radio/src/gui/480x272/model_outputs.cpp b/radio/src/gui/480x272/model_outputs.cpp index 3dd2d8f21..300f8909b 100644 --- a/radio/src/gui/480x272/model_outputs.cpp +++ b/radio/src/gui/480x272/model_outputs.cpp @@ -201,7 +201,7 @@ bool menuModelLimits(event_t event) case ITEM_LIMITS_CURVE: drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr); if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { - s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); + s_currIdxSubMenu = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); pushMenu(menuModelCurveOne); } if (active) { diff --git a/radio/src/gui/common/stdlcd/model_curves.cpp b/radio/src/gui/common/stdlcd/model_curves.cpp index b650a96ab..6fd7c1d0b 100644 --- a/radio/src/gui/common/stdlcd/model_curves.cpp +++ b/radio/src/gui/common/stdlcd/model_curves.cpp @@ -60,7 +60,7 @@ void menuModelCurvesAll(event_t event) #endif case EVT_KEY_FIRST(KEY_ENTER): if (CURVE_SELECTED() && !READ_ONLY()) { - s_curveChan = sub; + s_currIdxSubMenu = sub; pushMenu(menuModelCurveOne); } break; @@ -93,7 +93,7 @@ void menuModelCurvesAll(event_t event) } if (CURVE_SELECTED()) { - s_curveChan = sub; + s_currIdxSubMenu = sub; #if LCD_W >= 212 drawCurve(23); #else @@ -142,7 +142,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag drawCurveName(x, y, curve.value, flags); if (active && menuHorizontalPosition==1) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { - s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); + s_currIdxSubMenu = (curve.value<0 ? -curve.value-1 : curve.value-1); pushMenu(menuModelCurveOne); } else { From b8ff09e7e8d9e97aac784e63ff2b3ddaca3f8c8d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 23 May 2020 06:49:12 +0200 Subject: [PATCH 191/199] Revert one of the latest changes because it doesn't compile anymore --- radio/src/targets/horus/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 7bed170cf..b1a01e2e1 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -310,7 +310,7 @@ if(PYTHONINTERP_FOUND) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp WORKING_DIRECTORY ${RADIO_DIRECTORY}/src - COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBHORUS -DPCBX10 -DCPUARM -DSTM32F4 -DSTM32F429_439xx -DCOLORLCD -DBACKUP -DSIMU -I. -Itargets/horus -Itargets/common/arm/stm32 -I${THIRDPARTY_DIR} -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include > ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp + COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBHORUS -DPCBX10 -DCPUARM -DSTM32F4 -DSTM32F429_439xx -DCOLORLCD -DBACKUP -DSIMU -I. -Itargets/horus -Itargets/common/arm/stm32 -I${THIRDPARTY_DIR} -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include ${arm_gcc_include_path} > ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp DEPENDS ${RADIO_DIRECTORY}/src/datastructs.h ${RADIO_DIRECTORY}/util/generate_datacopy.py ) add_custom_target(datacopy From 591d4498df600df736c24d0bcaacbb6c04dc50a4 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 23 May 2020 11:38:00 +0200 Subject: [PATCH 192/199] Add tinsize --- companion/src/firmwares/multiprotocols.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index 7b13a2b19..b122ed027 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -75,6 +75,7 @@ static const QStringList STR_SUBTYPE_FLYZONE {"FZ-410 TX"}; static const QStringList STR_SUBTYPE_FRSKYX_RX {"D16 FCC", "D16 LBT"}; static const QStringList STR_SUBTYPE_FX816 {"P38"}; static const QStringList STR_SUBTYPE_ESKY150 {"4CH", "7CH"}; +static const QStringList STR_SUBTYPE_XK {"X450", "X420"}; static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; @@ -127,6 +128,7 @@ const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_FX816, 0, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_FRSKYX2, 3, true, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_XK, 1, false, STR_SUBTYPE_XK, STR_MULTI_RFTUNE}, {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) @@ -167,10 +169,10 @@ QString Multiprotocols::protocolToString(int protocol, bool custom) static const QStringList strings({ "FlySky", "Hubsan", "FrSky", "Hisky", "V2x2", "DSM", "Devo", "YD717", "KN", "SymaX", "SLT", "CX10", "CG023", "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", + "FlySky AFHDS2A", "Q2x2", "WK2x01", "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", "Scanner", "FrSky RX", "FlySky AFHDS2A RX", "HoTT", "Fx816", - "Bayang RX", "Pelikan", "Tiger", "WK", "XN297 Dump", "FrSky X 2.1", "FrSky R9" + "Bayang RX", "Pelikan", "Tiger", "XK", "XN297 Dump", "FrSky X 2.1", "FrSky R9" }); return strings.value(protocol, CPN_STR_UNKNOWN_ITEM); From bbb76d5cc74fd2edfecf38364e1e4d666b6cafef Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 23 May 2020 14:16:31 +0200 Subject: [PATCH 193/199] Improve fonts tests --- radio/src/tests/fonts_480x272.png | Bin 9643 -> 14756 bytes radio/src/tests/lcd_480x272.cpp | 6 ++++++ radio/src/tests/primitives_480x272.png | Bin 5713 -> 5713 bytes radio/src/tests/transparency_480x272.png | Bin 5773 -> 5773 bytes 4 files changed, 6 insertions(+) diff --git a/radio/src/tests/fonts_480x272.png b/radio/src/tests/fonts_480x272.png index 3ba0dcbafa29a191f465726378c24a143053921f..c47657715dbc91385107bdf63a0efa40b0e99c1a 100644 GIT binary patch literal 14756 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 F{|orobhH2f literal 9643 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

N1iX3eKWbaSUoY# z`4lEl*vHqiki-3rT#}j;7w$$U8Fz1y#nH>?5IZ20Qe7mV$Y5MEF&6 z--DE~r@78}tcT0`d%JFZC3t<4{Wi;ew|!Jq`z(Z(ewMcU)JV&Fhn3yLg=!TthDu7& zOR@gtx)@>o<7^>o%yIrL#noox$K4Iw*ayjwFRepj zI$6lQ50;#TrkGHWicVsQ4}7&+9ki7Ua&{at(ed0A7(8h1DsjcfB5_$=dg8&x16w$P z7u<0TBYI2>I&H1keH8L$E-y*&NpF;HhQ#+FDrnVh;2Yuaj5}(@FnTYHeo5u?m5I(m zN-@s2yl-)T14&Xd!-O)wM%=+Q+uOYMMh+lY;|duV|3I z>+BlUOitST*}N}0*_7UJbu`@|3Ye|>WWzKQde+|f2J}DS-4g@b3$Qz_dtds5x2?`K zQ;9bL+gSL%g(A1&`r;_N-Il|dPFr!O?hBZYsxmF3H$|LXH4y~elv1zp{sca(+u^wq zSVW|tpqrGK!7YCZSoj$o2mAH*)2NnakNrJiuqDuK?*mub5@m;}qQuHUa2p}y&y^IE zI825_M$*w1iF+A0#wLeeD}_byXt>M4vZ#L36~>XM#%3Su0R}Y zKbr3n<@a8)Sa8w$+LcKUkeJRAcd@6UE0mKP9xinSP#oS3HalDOD|@kU9SBOyL*8Z< zvic-Oui2$g|L{c`D41Y%74}pELkpq!3c^x-r8nifl};(F zq!qo&jlH2KKjhCt`Zc@s6BY$Na$)~}dHnQ0Ka~3a{px;5oM;Z&O@PS{e9sBc*3gGy I)a+jT7Y*Kgs{jB1 diff --git a/radio/src/tests/lcd_480x272.cpp b/radio/src/tests/lcd_480x272.cpp index 769fccc5f..0127b4356 100644 --- a/radio/src/tests/lcd_480x272.cpp +++ b/radio/src/tests/lcd_480x272.cpp @@ -168,6 +168,12 @@ TEST(Lcd_480x272, fonts) lcdDrawText(30, 200, "The quick brown fox", TEXT_COLOR|VERTICAL|NO_FONTCACHE); // lcdDrawText(50, 200, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|VERTICAL|NO_FONTCACHE); + lcdDrawText(50, 25, "The quick", TEXT_COLOR|TINSIZE); + lcdDrawText(50, 40, "The quick", TEXT_COLOR|SMLSIZE); + lcdDrawText(50, 55, "The quick", TEXT_COLOR|MIDSIZE); + lcdDrawText(50, 80, "The quick", TEXT_COLOR|DBLSIZE); + lcdDrawText(50, 120, "The quick", TEXT_COLOR|XXLSIZE); + lcdDrawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4)); lcdDrawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12)); diff --git a/radio/src/tests/primitives_480x272.png b/radio/src/tests/primitives_480x272.png index 68bb2f88655e889c9e3530c9de29d6945d1bcbcf..38630592fe2024e967443a5375067a711d97f717 100644 GIT binary patch delta 4628 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 Dh>Dwr delta 4633 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 diff --git a/radio/src/tests/transparency_480x272.png b/radio/src/tests/transparency_480x272.png index 2b0588eb91099c84eb5331edfa06082056dd42b4..05845c138402682c768e71045185ae4b96e02ce0 100644 GIT binary patch delta 4886 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 SJ@+KUpMyQbuIk*4KmG;FFcd@p delta 4865 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 From 895859e4876aa35164e76dd69fd8da2cca28db42 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 24 May 2020 11:17:40 +0200 Subject: [PATCH 194/199] multi 1.3.1.1 support --- companion/src/firmwares/moduledata.h | 4 +++- radio/src/gui/128x64/model_setup.cpp | 4 ++-- radio/src/pulses/modules_constants.h | 4 +++- radio/src/telemetry/telemetry.h | 3 ++- radio/src/translations/untranslated.h | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 0d1d7bb6f..8ac4109e4 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -129,7 +129,9 @@ enum MultiModuleRFProtocols { MODULE_SUBTYPE_MULTI_PROPEL, MODULE_SUBTYPE_MULTI_FRSKYL, MODULE_SUBTYPE_MULTI_SKYARTEC, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_SKYARTEC + MODULE_SUBTYPE_MULTI_ESKY150V2, + MODULE_SUBTYPE_MULTI_DSM_RX, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_DSM_RX }; enum TrainerProtocol { diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 65c1d7a3c..4c7e72e9d 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -374,8 +374,8 @@ void menuModelSetup(event_t event) MODULE_POWER_ROW(EXTERNAL_MODULE), IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, MODULE_OPTION_ROW(EXTERNAL_MODULE)), MULTIMODULE_MODULE_ROWS(EXTERNAL_MODULE) - FAILSAFE_ROWS(EXTERNAL_MODULE), - IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), // Range check and Register buttons + FAILSAFE_ROWS(EXTERNAL_MODULE), //ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), // Range check and Register buttons IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Module options IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 1 IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 2 diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index 82e53421d..52c0d5026 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -167,7 +167,9 @@ enum ModuleSubtypeMulti { MODULE_SUBTYPE_MULTI_PROPEL, MODULE_SUBTYPE_MULTI_FRSKYL, MODULE_SUBTYPE_MULTI_SKYARTEC, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_SKYARTEC + MODULE_SUBTYPE_MULTI_ESKY150V2, + MODULE_SUBTYPE_MULTI_DSM_RX, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_DSM_RX }; #define MODULE_SUBTYPE_MULTI_XN297DP 63-3 diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index c92e722f0..506b949a5 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -111,7 +111,8 @@ extern uint8_t telemetryProtocol; #define IS_D16_MULTI(module) (((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH || g_model.moduleData[module].subType == MM_RF_FRSKY_SUBTYPE_D16_CLONED)) \ || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX2)) #define IS_HOTT_MULTI(module) (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT) - #define IS_RX_MULTI(module) ((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_AFHDS2A_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_BAYANG_RX)) + #define IS_RX_MULTI(module) ((g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_AFHDS2A_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FRSKYX_RX) \ + || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_BAYANG_RX) || (g_model.moduleData[module].getMultiProtocol() == MODULE_SUBTYPE_MULTI_DSM_RX)) #if defined(HARDWARE_INTERNAL_MODULE) #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT || (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (IS_D16_MULTI(INTERNAL_MODULE)||IS_D16_MULTI(EXTERNAL_MODULE)))) #else diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index b558eaa72..ff62c7f1d 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -125,4 +125,4 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\007" -#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""XK\0 ""XN297DU""FrSkyX2""FrSkyR9""Propel\0""FrSkyL\0""Skyartec" +#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""XK\0 ""XN297DU""FrSkyX2""FrSkyR9""Propel\0""FrSkyL\0""Skyarte""ESky-v2""DSM RX\0" From 14cd03a93a1238d703be8966be00b8af81b2b796 Mon Sep 17 00:00:00 2001 From: MRC3742 Date: Tue, 26 May 2020 01:30:57 -0400 Subject: [PATCH 195/199] Additional MPM 1.3.1.1 support updates (#7635) --- companion/src/firmwares/moduledata.h | 3 +- companion/src/firmwares/multiprotocols.cpp | 48 ++++++++++++++-------- radio/src/gui/gui_common.cpp | 38 +++++++++++------ radio/src/pulses/modules_constants.h | 3 +- radio/src/translations/untranslated.h | 2 +- 5 files changed, 63 insertions(+), 31 deletions(-) diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 8ac4109e4..1df7380a1 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -131,7 +131,8 @@ enum MultiModuleRFProtocols { MODULE_SUBTYPE_MULTI_SKYARTEC, MODULE_SUBTYPE_MULTI_ESKY150V2, MODULE_SUBTYPE_MULTI_DSM_RX, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_DSM_RX + MODULE_SUBTYPE_MULTI_JJRC345, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_JJRC345 }; enum TrainerProtocol { diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index b122ed027..4feeb997f 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -39,8 +39,7 @@ static const QStringList STR_SUBTYPE_CUSTOM ({ }); static const QStringList STR_SUBTYPE_FLYSKY {"Standard", "V9x9", "V6x6", "V912", "CX20"}; static const QStringList STR_SUBTYPE_HUBSAN {"H107", "H301", "H501"}; -static const QStringList STR_SUBTYPE_FRSKY {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch"}; -static const QStringList STR_SUBTYPE_FRSKYX2 {"D16", "D16 8ch", "D16 EU-LBT", "D16 EU-LBT 8ch"}; +static const QStringList STR_SUBTYPE_FRSKY {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch", "D8 Cloned", "D16 Cloned"}; 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"}; @@ -52,6 +51,7 @@ static const QStringList STR_SUBTYPE_SLT {"V1 (6 Channel)", "V2 (8 Channel static const QStringList STR_SUBTYPE_CX10 {"Green", "Blue", "DM007", "-", "JC3015a", "JC3015b", "MK33041"}; static const QStringList STR_SUBTYPE_CG023 {"Standard", "YD829"}; static const QStringList STR_SUBTYPE_BAYANG {"Standard", "H8S3D", "X16 AH", "IRDRONE", "DHD D4"}; +static const QStringList STR_SUBTYPE_ESky {"Standard", "ET4"}; static const QStringList STR_SUBTYPE_MT99 {"MT99", "H7", "YZ", "LS", "FY805"}; static const QStringList STR_SUBTYPE_MJXQ {"WLH08", "X600", "X800", "H26D", "E010", "H26WH", "Phoenix"}; static const QStringList STR_SUBTYPE_FY326 {"Standard", "FY319"}; @@ -61,21 +61,29 @@ static const QStringList STR_SUBTYPE_Q2X2 {"Q222", "Q242", "Q282"}; static const QStringList STR_SUBTYPE_WK2x01 {"WK2801", "WK2401", "W6_5_1", "W6_6_1", "W6_HEL", "W6_HEL_I"}; static const QStringList STR_SUBTYPE_Q303 {"Standard", "CX35", "CX10D", "CX10WD"}; static const QStringList STR_SUBTYPE_CABELL {"Cabell V3", "Cab V3 Telem", "-", "-", "-", "-", "Set FailSafe", "Unbind"}; +static const QStringList STR_SUBTYPE_ESKY150 {"4 Channel", "7 Channel"}; 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_WFLY {"WFR0xS"}; static const QStringList STR_SUBTYPE_BUGS_MINI {"Standard", "Bugs 3H"}; +static const QStringList STR_SUBTYPE_TRAXXAS {"6519 RX"}; static const QStringList STR_SUBTYPE_E01X {"E012", "E015", "E016H"}; +static const QStringList STR_SUBTYPE_V911S {"Standard", "E119"}; 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_ZSX {"JJRC ZSX-280"}; static const QStringList STR_SUBTYPE_FLYZONE {"FZ-410 TX"}; -static const QStringList STR_SUBTYPE_FRSKYX_RX {"D16 FCC", "D16 LBT"}; +static const QStringList STR_SUBTYPE_FRSKYX_RX {"RX", "Clone TX"}; static const QStringList STR_SUBTYPE_FX816 {"P38"}; -static const QStringList STR_SUBTYPE_ESKY150 {"4CH", "7CH"}; static const QStringList STR_SUBTYPE_XK {"X450", "X420"}; +static const QStringList STR_SUBTYPE_XN297DUMP {"250K", "1M", "2M", "AUTO"}; +static const QStringList STR_SUBTYPE_FRSKYX2 {"D16", "D16 8ch", "D16 EU-LBT", "D16 EU-LBT 8ch", "D16 Cloned"}; +static const QStringList STR_SUBTYPE_FRSKYR9 {"915 MHz", "868 MHz", "915 MHz 8-Channel", "868 MHz 8-Channel"}; +static const QStringList STR_SUBTYPE_PROPEL {"74-Z"}; +static const QStringList STR_SUBTYPE_FRSKYL {"LR12", "LR12 6-Channel"}; +static const QStringList STR_SUBTYPE_ESKY150V2 {"150 V2"}; static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; @@ -85,7 +93,7 @@ static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, {MODULE_SUBTYPE_MULTI_HUBSAN, 2, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, - {MODULE_SUBTYPE_MULTI_FRSKY, 5, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKY, 7, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, {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}, @@ -93,14 +101,16 @@ const Multiprotocols multiProtocols { {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}, - {MODULE_SUBTYPE_MULTI_SLT, 4, false, STR_SUBTYPE_SLT, nullptr}, + {MODULE_SUBTYPE_MULTI_SLT, 4, false, STR_SUBTYPE_SLT, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_CX10, 6, false, STR_SUBTYPE_CX10, nullptr}, {MODULE_SUBTYPE_MULTI_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, {MODULE_SUBTYPE_MULTI_BAYANG, 4, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MODULE_SUBTYPE_MULTI_ESky, 1, false, STR_SUBTYPE_ESky, nullptr}, {MODULE_SUBTYPE_MULTI_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, {MODULE_SUBTYPE_MULTI_MJXQ, 6, false, STR_SUBTYPE_MJXQ, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, {MODULE_SUBTYPE_MULTI_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_J6PRO, 0, false, NO_SUBTYPE, nullptr}, {MODULE_SUBTYPE_MULTI_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr}, {MODULE_SUBTYPE_MULTI_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, {MODULE_SUBTYPE_MULTI_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, @@ -108,27 +118,32 @@ const Multiprotocols multiProtocols { {MODULE_SUBTYPE_MULTI_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, {MODULE_SUBTYPE_MULTI_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, {MODULE_SUBTYPE_MULTI_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, STR_SUBTYPE_ESKY150, nullptr}, {MODULE_SUBTYPE_MULTI_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, {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_WFLY, 0, false, STR_SUBTYPE_WFLY, nullptr}, {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, STR_MULTI_OPTION}, - {MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr}, + {MODULE_SUBTYPE_MULTI_V911S, 1, false, STR_SUBTYPE_V911S, 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, 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}, {MODULE_SUBTYPE_MULTI_FRSKYX_RX, 1, false, STR_SUBTYPE_FRSKYX_RX, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_ESky, 0, false, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_J6PRO, 0, false, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, STR_SUBTYPE_ESKY150, nullptr}, - {MODULE_SUBTYPE_MULTI_FX816, 0, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_FRSKYX2, 3, true, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FX816, 0, false, STR_SUBTYPE_FX816, nullptr}, {MODULE_SUBTYPE_MULTI_XK, 1, false, STR_SUBTYPE_XK, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_XN297DUMP, 3, false, STR_SUBTYPE_XN297DUMP, nullptr}, + {MODULE_SUBTYPE_MULTI_FRSKYX2, 4, true, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKY_R9, 3, true, STR_SUBTYPE_FRSKYR9, nullptr}, + {MODULE_SUBTYPE_MULTI_PROPEL, 0, false, STR_SUBTYPE_PROPEL, nullptr}, + {MODULE_SUBTYPE_MULTI_FRSKYL, 1, false, STR_SUBTYPE_FRSKYL, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_SKYARTEC, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_ESKY150V2, 0, false, STR_SUBTYPE_ESKY150V2, STR_MULTI_RFTUNE}, {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) @@ -171,8 +186,9 @@ QString Multiprotocols::protocolToString(int protocol, bool custom) "Bayang", "ESky", "MT99XX", "MJXQ", "Shenqi", "FY326", "SFHSS", "J6 PRO","FQ777","Assan","Hontai","Open LRS", "FlySky AFHDS2A", "Q2x2", "WK2x01", "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", "Scanner", "FrSky RX", "FlySky AFHDS2A RX", "HoTT", "Fx816", - "Bayang RX", "Pelikan", "Tiger", "XK", "XN297 Dump", "FrSky X 2.1", "FrSky R9" + "KFPlan KF606", "Redpine", "Potensic", "ZSX", "FlyZone", "Scanner", "FrSky RX", "FlySky AFHDS2A RX", "HoTT", "Fx816", + "Bayang RX", "Pelikan", "Tiger", "XK", "XN297 Dump", "FrSky X 2.1", "FrSky R9", "Propel", "FrSky L", "Skyartec", + "ESky 150v2", "DSM RX", "JJRC345" }); return strings.value(protocol, CPN_STR_UNKNOWN_ITEM); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 69e954b03..1cbf5dcc2 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -853,7 +853,6 @@ int convertMultiToOtx(int type) const char STR_SUBTYPE_FLYSKY[] = "\004""Std\0""V9x9""V6x6""V912""CX20"; const char STR_SUBTYPE_HUBSAN[] = "\004""H107""H301""H501"; const char STR_SUBTYPE_FRSKY[] = "\011""D16\0 ""D8\0 ""D16 8ch\0 ""V8\0 ""LBT(EU)\0 ""LBT 8ch\0 ""D8Cloned\0""D16Cloned"; -const char STR_SUBTYPE_FRSKYX2[] = "\011""D16\0 ""D16 8ch\0 ""LBT(EU)\0 ""LBT 8ch\0 ""D16Cloned"; 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"; @@ -865,6 +864,7 @@ const char STR_SUBTYPE_SLT[] = "\006""V1_6ch""V2_8ch""Q100\0 ""Q200\0 ""M const char STR_SUBTYPE_CX10[] = "\007""Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041"; const char STR_SUBTYPE_CG023[] = "\005""Std\0 ""YD829"; const char STR_SUBTYPE_BAYANG[] = "\007""Std\0 ""H8S3D\0 ""X16 AH\0""IRDrone""DHD D4"; +const char STR_SUBTYPE_ESky[] = "\003""Std""ET4"; const char STR_SUBTYPE_MT99[] = "\006""MT99\0 ""H7\0 ""YZ\0 ""LS\0 ""FY805"; const char STR_SUBTYPE_MJXQ[] = "\007""WLH08\0 ""X600\0 ""X800\0 ""H26D\0 ""E010\0 ""H26WH\0 ""Phoenix"; const char STR_SUBTYPE_FY326[] = "\005""Std\0 ""FY319"; @@ -874,21 +874,29 @@ const char STR_SUBTYPE_Q2X2[] = "\004""Q222""Q242""Q282"; const char STR_SUBTYPE_WK2x01[] = "\006""WK2801""WK2401""W6_5_1""W6_6_1""W6_HeL""W6_HeI"; const char STR_SUBTYPE_Q303[] = "\006""Std\0 ""CX35\0 ""CX10D\0""CX10WD"; const char STR_SUBTYPE_CABELL[] = "\007""V3\0 ""V3 Telm""-\0 ""-\0 ""-\0 ""-\0 ""F-Safe\0""Unbind\0"; +const char STR_SUBTYPE_ESKY150[] = "\003""4ch""7ch"; const char STR_SUBTYPE_H83D[] = "\007""Std\0 ""H20H\0 ""H20Mini""H30Mini"; 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_WFLY[] = "\006""WFR0xS"; 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_V911S[] = "\004""Std\0""E119"; 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_ZSX[] = "\007""280JJRC"; const char STR_SUBTYPE_FLYZONE[] = "\005""FZ410"; +const char STR_SUBTYPE_FRSKYX_RX[] = "\007""RX\0 ""CloneTX"; const char STR_SUBTYPE_FX816[] = "\003""P38"; -const char STR_SUBTYPE_ESKY150[] = "\003""4CH""7CH"; +const char STR_SUBTYPE_XK[] = "\004""X450""X420"; +const char STR_SUBTYPE_XN297DUMP[] = "\004""250K""1M\0 ""2M\0 ""AUTO"; +const char STR_SUBTYPE_FRSKYX2[] = "\011""D16\0 ""D16 8ch\0 ""LBT(EU)\0 ""LBT 8ch\0 ""D16Cloned"; +const char STR_SUBTYPE_FRSKYR9[] = "\007""915MHz\0""868MHz\0""915 8ch""868 8ch"; +const char STR_SUBTYPE_PROPEL[] = "\004""74-Z"; const char STR_SUBTYPE_FRSKYL[] = "\010""LR12\0 ""LR12 6ch"; -const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch"; +const char STR_SUBTYPE_ESKY150V2[] = "\006""150 V2"; const char* mm_options_strings::options[] = { nullptr, @@ -914,14 +922,16 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_YD717, 4, false, false, STR_SUBTYPE_YD717, nullptr}, {MODULE_SUBTYPE_MULTI_KN, 1, false, false, STR_SUBTYPE_KN, nullptr}, {MODULE_SUBTYPE_MULTI_SYMAX, 1, false, false, STR_SUBTYPE_SYMAX, nullptr}, - {MODULE_SUBTYPE_MULTI_SLT, 4, false, true, STR_SUBTYPE_SLT, nullptr}, + {MODULE_SUBTYPE_MULTI_SLT, 4, false, true, STR_SUBTYPE_SLT, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_CX10, 6, false, false, STR_SUBTYPE_CX10, nullptr}, {MODULE_SUBTYPE_MULTI_CG023, 1, false, false, STR_SUBTYPE_CG023, nullptr}, {MODULE_SUBTYPE_MULTI_BAYANG, 4, false, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MODULE_SUBTYPE_MULTI_ESky, 1, false, true, STR_SUBTYPE_ESky, nullptr}, {MODULE_SUBTYPE_MULTI_MT99XX, 4, false, false, STR_SUBTYPE_MT99, nullptr}, {MODULE_SUBTYPE_MULTI_MJXQ, 6, false, false, STR_SUBTYPE_MJXQ, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_FY326, 1, false, false, STR_SUBTYPE_FY326, nullptr}, {MODULE_SUBTYPE_MULTI_SFHSS, 0, true, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_J6PRO, 0, false, true, NO_SUBTYPE, nullptr}, {MODULE_SUBTYPE_MULTI_HONTAI, 3, false, false, STR_SUBTYPE_HONTAI, nullptr}, {MODULE_SUBTYPE_MULTI_OLRS, 0, false, false, NO_SUBTYPE, STR_RFPOWER}, {MODULE_SUBTYPE_MULTI_FS_AFHDS2A, 3, true, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, @@ -929,28 +939,32 @@ const mm_protocol_definition multi_protocols[] = { {MODULE_SUBTYPE_MULTI_WK_2X01, 5, false, true, STR_SUBTYPE_WK2x01, nullptr}, {MODULE_SUBTYPE_MULTI_Q303, 3, false, false, STR_SUBTYPE_Q303, nullptr}, {MODULE_SUBTYPE_MULTI_CABELL, 7, false, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, false, STR_SUBTYPE_ESKY150, nullptr}, {MODULE_SUBTYPE_MULTI_H83D, 3, false, false, STR_SUBTYPE_H83D, nullptr}, {MODULE_SUBTYPE_MULTI_CORONA, 2, false, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HITEC, 2, false, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_WFLY, 0, false, false, STR_SUBTYPE_WFLY, nullptr}, {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, false, STR_SUBTYPE_BUGS_MINI, nullptr}, {MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, false, STR_SUBTYPE_TRAXXAS, nullptr}, {MODULE_SUBTYPE_MULTI_E01X, 2, false, false, STR_SUBTYPE_E01X, STR_MULTI_OPTION}, + {MODULE_SUBTYPE_MULTI_V911S, 1, false, false, STR_SUBTYPE_V911S, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_GD00X, 1, false, false, STR_SUBTYPE_GD00X, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_KF606, 0, false, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_REDPINE, 1, false, false, STR_SUBTYPE_REDPINE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_POTENSIC, 0, false, false, STR_SUBTYPE_POTENSIC, nullptr}, {MODULE_SUBTYPE_MULTI_ZSX, 0, false, false, STR_SUBTYPE_ZSX, nullptr}, {MODULE_SUBTYPE_MULTI_FLYZONE, 0, false, false, STR_SUBTYPE_FLYZONE, nullptr}, - {MODULE_SUBTYPE_MULTI_FRSKYX_RX, 0, false, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_ESky, 0, false, true, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_J6PRO, 0, false, true, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_ESKY150, 1, false, false, STR_SUBTYPE_ESKY150, nullptr}, - {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, + {MODULE_SUBTYPE_MULTI_FRSKYX_RX, 1, false, false, STR_SUBTYPE_FRSKYX_RX, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HOTT, 0, true, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FX816, 0, false, false, STR_SUBTYPE_FX816, nullptr}, + {MODULE_SUBTYPE_MULTI_XK, 1, false, false, STR_SUBTYPE_XK, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_XN297DUMP, 3, false, false, STR_SUBTYPE_XN297DUMP, STR_MULTI_RFCHAN}, {MODULE_SUBTYPE_MULTI_FRSKYX2, 4, true, false, STR_SUBTYPE_FRSKYX2, STR_MULTI_RFTUNE}, - {MODULE_SUBTYPE_MULTI_FRSKY_R9, 4, true, false, STR_SUBTYPE_FRSKYR9, nullptr}, - {MODULE_SUBTYPE_MULTI_PROPEL, 0, false, false, NO_SUBTYPE, nullptr}, - {MODULE_SUBTYPE_MULTI_FRSKYL, 1, false, false, STR_SUBTYPE_FRSKYL, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FRSKY_R9, 3, true, false, STR_SUBTYPE_FRSKYR9, nullptr}, + {MODULE_SUBTYPE_MULTI_PROPEL, 0, false, false, STR_SUBTYPE_PROPEL, nullptr}, + {MODULE_SUBTYPE_MULTI_FRSKYL, 1, false, false, STR_SUBTYPE_FRSKYL, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_SKYARTEC, 0, false, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_ESKY150V2, 0, false, true, STR_SUBTYPE_ESKY150V2, STR_MULTI_RFTUNE}, {MM_RF_CUSTOM_SELECTED, 7, true, true, NO_SUBTYPE, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index 52c0d5026..829d35c32 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -169,7 +169,8 @@ enum ModuleSubtypeMulti { MODULE_SUBTYPE_MULTI_SKYARTEC, MODULE_SUBTYPE_MULTI_ESKY150V2, MODULE_SUBTYPE_MULTI_DSM_RX, - MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_DSM_RX + MODULE_SUBTYPE_MULTI_JJRC345, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_JJRC345 }; #define MODULE_SUBTYPE_MULTI_XN297DP 63-3 diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index ff62c7f1d..d737b7c5e 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -125,4 +125,4 @@ #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" #define LEN_MULTI_PROTOCOLS "\007" -#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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayangR""Pelikan""Tiger\0 ""XK\0 ""XN297DU""FrSkyX2""FrSkyR9""Propel\0""FrSkyL\0""Skyarte""ESky-v2""DSM RX\0" +#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""FlSky2A""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""Scanner""FrSkyRX""FS2A_RX""HoTT\0 ""FX816\0 ""BayanRX""Pelikan""Tiger\0 ""XK\0 ""XN297DU""FrSkyX2""FrSkyR9""Propel\0""FrSkyL\0""Skyarte""ESky-v2""DSM RX\0""JJRC345" From 8de1ff9151901bb4ab2b563658987ce28e24a6b2 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 26 May 2020 17:28:20 +0200 Subject: [PATCH 196/199] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index c3e8483ea..e3aae024e 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1734,3 +1734,4 @@ Mike Frizell MeCodeGoodSomeday Timothy Fry John Beech +Wojciech Winiarski From f0a1c65d952a7d7df32ca075dfba8d0251163a1d Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 27 May 2020 07:24:11 +0200 Subject: [PATCH 197/199] Add some plural audio units. This fixes #7636 --- radio/util/tts_it.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/util/tts_it.py b/radio/util/tts_it.py index ea6223801..2b87dd911 100755 --- a/radio/util/tts_it.py +++ b/radio/util/tts_it.py @@ -14,9 +14,9 @@ systemSounds.append(("mila", filename(101))) systemSounds.append(("mille", filename(102))) for i, s in enumerate(["virgola", "un", "e", "meno", "ora", "ore", "minuto", "minuti", "secondo", "secondi"]): systemSounds.append((s, filename(103 + i))) -for i, (s, f) in enumerate([("volt", "volt0"), - ("ampere", "amp0"), - ("milliampere", "mamp0"), +for i, (s, f) in enumerate([("volt", "volt0"),("volt", "volt1"), + ("ampere", "amp0"),("ampere", "amp1"), + ("milliampere", "mamp0"),("milliampere", "mamp1"), ("nodo", "knot0"), ("nodi", "knot1"), ("metri al secondo", "mps0"), ("metri al secondo", "msp1"), ("piedi al secondo", "fps0"), ("piedi al secondo", "fps1"), From 82b13ebe3f4cc25227c0d99e8ab2fd0f45c0e03a Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 27 May 2020 07:35:25 +0200 Subject: [PATCH 198/199] TX16S internal gps option (#7632) --- .../src/firmwares/opentx/opentxinterface.cpp | 4 +++- radio/src/options.h | 3 +++ radio/src/targets/horus/CMakeLists.txt | 6 +++-- radio/src/targets/horus/board.cpp | 1 + radio/src/targets/horus/gps_driver.cpp | 12 ++++++++-- radio/src/targets/horus/hal.h | 24 +++++++++++++++++-- radio/util/fwoptions.py | 1 + 7 files changed, 44 insertions(+), 7 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index fa02be60a..150352da8 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1357,8 +1357,10 @@ void registerOpenTxFirmwares() /* Radiomaster TX16S board */ firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); - firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); addOpenTxRfOptions(firmware, FLEX); + static const Firmware::Option opt_bt("bluetooth", Firmware::tr("Support for bluetooth module")); + static const Firmware::Option opt_internal_gps("internalgps", Firmware::tr("Support internal GPS")); + firmware->addOptionsGroup({opt_bt, opt_internal_gps}); registerOpenTxFirmware(firmware); /* 9XR-Pro */ diff --git a/radio/src/options.h b/radio/src/options.h index 2afb1596b..e8bf634c1 100644 --- a/radio/src/options.h +++ b/radio/src/options.h @@ -53,6 +53,9 @@ static const char * options[] = { #if defined(HORUS_STICKS) "horussticks", #endif +#if defined(INTERNAL_GPS) + "internalgps", +#endif #if defined(INTERNAL_MODULE_PPM) "internalppm", #endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index b1a01e2e1..dfa235baa 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -61,13 +61,15 @@ if (PCB STREQUAL X10) add_definitions(-DRADIO_FAMILY_T16) option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON) option(BLUETOOTH "Support for bluetooth module" OFF) + option(INTERNAL_GPS "Support for internal ublox GPS" OFF) set(HARDWARE_TOUCH YES) set(USB_CHARGER YES) set(DEFAULT_THEME "DARKBLUE") set(AUX_SERIAL ON) - if (NOT BLUETOOTH) + if (NOT BLUETOOTH AND NOT INTERNAL_GPS) set(AUX2_SERIAL ON) endif() + set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS") else() set(FLAVOUR x10) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON) @@ -94,7 +96,6 @@ elseif (PCB STREQUAL X12S) ${TARGET_SRC} audio_spi_driver.cpp x12s_adc_driver.cpp - gps_driver.cpp ) set(BITMAPS_TARGET x12s_bitmaps) set(FONTS_TARGET x12s_fonts) @@ -199,6 +200,7 @@ endif() if(INTERNAL_GPS) set(SRC ${SRC} gps.cpp) + set(TARGET_SRC ${TARGET_SRC} gps_driver.cpp) add_definitions(-DINTERNAL_GPS) message("Horus: Internal GPS enabled") endif() diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 25c0cbbdf..49a0f13f7 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -150,6 +150,7 @@ void boardInit() BT_RCC_APB2Periph | AUX_SERIAL_RCC_APB2Periph | AUX2_SERIAL_RCC_APB2Periph | + GPS_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph, ENABLE); diff --git a/radio/src/targets/horus/gps_driver.cpp b/radio/src/targets/horus/gps_driver.cpp index 7a5e464c4..0e165b978 100644 --- a/radio/src/targets/horus/gps_driver.cpp +++ b/radio/src/targets/horus/gps_driver.cpp @@ -33,8 +33,8 @@ void gpsInit(uint32_t baudrate) NVIC_InitTypeDef NVIC_InitStructure; // RX and TX pins - GPIO_PinAFConfig(GPIOA, GPS_TX_GPIO_PinSource, GPS_GPIO_AF); - GPIO_PinAFConfig(GPIOA, GPS_RX_GPIO_PinSource, GPS_GPIO_AF); + GPIO_PinAFConfig(GPS_UART_GPIO, GPS_TX_GPIO_PinSource, GPS_GPIO_AF); + GPIO_PinAFConfig(GPS_UART_GPIO, GPS_RX_GPIO_PinSource, GPS_GPIO_AF); GPIO_InitStructure.GPIO_Pin = (GPS_TX_GPIO_PIN | GPS_RX_GPIO_PIN); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; @@ -58,6 +58,14 @@ void gpsInit(uint32_t baudrate) NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); + +#if defined(GPS_PWR_GPIO) + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_InitStructure.GPIO_Pin = GPS_PWR_GPIO_PIN; + GPIO_Init(GPS_PWR_GPIO, &GPIO_InitStructure); + GPIO_SetBits(GPS_PWR_GPIO, GPS_PWR_GPIO_PIN); +#endif } #if defined(DEBUG) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index b0d2042ae..5e7cd04c2 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -418,7 +418,7 @@ #define AUX_SERIAL_RCC_APB2Periph 0 #endif -#if defined(RADIO_TX16S) && !defined(BLUETOOTH) +#if defined(AUX2_SERIAL) #define AUX2_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_DMA2) #define AUX2_SERIAL_RCC_APB1Periph 0 #define AUX2_SERIAL_RCC_APB2Periph RCC_APB2Periph_USART6 @@ -435,6 +435,24 @@ #define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_5 #define AUX2_SERIAL_PWR_GPIO GPIOB #define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 +#elif defined(RADIO_TX16S) && defined(INTERNAL_GPS) + #define GPS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOG) + #define GPS_RCC_APB1Periph 0 + #define GPS_RCC_APB2Periph RCC_APB2Periph_USART6 + #define GPS_USART USART6 + #define GPS_GPIO_AF GPIO_AF_USART6 + #define GPS_USART_IRQn USART6_IRQn + #define GPS_USART_IRQHandler USART6_IRQHandler + #define GPS_UART_GPIO GPIOG + #define GPS_TX_GPIO_PIN GPIO_Pin_14 // PG.14 + #define GPS_RX_GPIO_PIN GPIO_Pin_9 // PG.09 + #define GPS_TX_GPIO_PinSource GPIO_PinSource14 + #define GPS_RX_GPIO_PinSource GPIO_PinSource9 + #define GPS_PWR_GPIO GPIOB + #define GPS_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 + #define AUX2_SERIAL_RCC_AHB1Periph 0 + #define AUX2_SERIAL_RCC_APB1Periph 0 + #define AUX2_SERIAL_RCC_APB2Periph 0 #else #define AUX2_SERIAL_RCC_AHB1Periph 0 #define AUX2_SERIAL_RCC_APB1Periph 0 @@ -900,6 +918,7 @@ #if defined(PCBX12S) #define GPS_RCC_AHB1Periph RCC_AHB1Periph_GPIOA #define GPS_RCC_APB1Periph RCC_APB1Periph_UART4 + #define GPS_RCC_APB2Periph 0 #define GPS_USART UART4 #define GPS_GPIO_AF GPIO_AF_UART4 #define GPS_USART_IRQn UART4_IRQn @@ -909,9 +928,10 @@ #define GPS_RX_GPIO_PIN GPIO_Pin_1 // PA.01 #define GPS_TX_GPIO_PinSource GPIO_PinSource0 #define GPS_RX_GPIO_PinSource GPIO_PinSource1 -#else +#elif !defined(INTERNAL_GPS) #define GPS_RCC_AHB1Periph 0 #define GPS_RCC_APB1Periph 0 + #define GPS_RCC_APB2Periph 0 #endif #endif // _HAL_H_ diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index 811ff17b7..8ee448f11 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -234,4 +234,5 @@ options_radiomaster_tx16s = { "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), "bluetooth": ("BLUETOOTH", "YES", "NO"), + "internalgps": ("INTERNAL_GPS", "YES", "NO"), } \ No newline at end of file From b324145d10c5ea2153390160e93fe3c7e96e6801 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 27 May 2020 12:28:21 +0200 Subject: [PATCH 199/199] Update CREDITS.txt --- CREDITS.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CREDITS.txt b/CREDITS.txt index e3aae024e..b7ce3cb68 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -423,7 +423,6 @@ Pablo Gomez Martinez Alan Thoren Jack Clodfelter William Simon -James Houck Peter Fithern Thomas Svedman TechFixPros @@ -688,7 +687,6 @@ Shaun Currier Danilo Schiara John Hennig RK Custom Homes -James Houck Piet Teekens Tommy Widenflycht Johan Petrus Theophilus